What is BOSS?#

BOSS is the BESIII Offline Software System with which all data from the BESIII detector is processed and analyzed. As a data analyzer, you will use BOSS to make an initial event selection and collision info that is relevant for your analysis to an output ROOT file. In the final event selection, you use that ROOT file to produce the relevant plots for your analysis.

In this section, we will discuss the three most important components that form BOSS:

  • The Gaudi Framework, which streamlines algorithms used in analyzes.

  • CMT, which is used to manage packages designed by different groups.

  • CVS, which is the version control system used to maintain BOSS.

BOSS has been built on several other external libraries. The source files and binaries can be found here on the lxslc server:

/cvmfs/bes3.ihep.ac.cn/bes3sw/ExternalLib/SLC6/ExternalLib

You can also have a look at the BOSS External Libraries repository and the documentation there.

The Gaudi Framework#

An event selection program usually consists of three steps:

  1. Initialize. Here, you for instance load raw data and set some variables.

  2. Execute. For each collision event, you for instance extract parameters from the tracks.

  3. Finalize. You write the data you collected to an output file.

Gaudi utilizes that idea in the form of an Algorithm class. Your analysis is defined by deriving from this class and specifying what you want to be performed in the initialize, execute, and finalize steps.

Note

For up to date tutorials about Gaudi, see this GitBook by the LHCb collaboration. A small warning: LHCb runs analysis through Python, while BESIII jobs are run through boss.exe. In addition, LHCb uses an extended version of the Algorithm class, called GaudiAlgorithm, so the instructions cannot be replicated for BOSS.

Configuration Management Tool (CMT)#

The BOSS analysis framework is organized according to the so-called ā€œpackage-oriented principleā€. The underlying idea is that in a software framework that is developed by several people is best split up into several packages that are each developed independently or in subgroups.

The task of the CMT is to streamline and checkout different versions of these packages, that is, to name them automatically based on content and modifications and to connect the packages to each other (to manage dependencies). This is done in conjunction with CVS (see below). CMT additionally allows users to ascribe properties to the packages and their constituents.

See for more information:

Concurrent Versions System (CVS)#

Packages and source code of BOSS are monitored and maintained by CVS. This is a revision control system comparable to Subversion and Git.

More information: