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:
Initialize. Here, you for instance load raw data and set some variables.
Execute. For each collision event, you for instance extract parameters from the tracks.
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:
Official website of CMT (partially French)
LHCb on CMT (historical page)
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: