This repository has been migrated to the BOSS Starter Kit repository. The Starter Kit contains the essentials for getting started with BOSS and some useful tools. The details are implemented as submodules, so that users can choose themselves which components they would like to use.
This repository serves as an extra layer to the BESIII Offline Software System (BOSS). For more information on BOSS, see the BOSS GitBook.
The BOSS IniSelect repository contains BOSS packages for initial event selection (hence the name). These packages are to facilitate analysis procedures in BESIII by further modulating the procedure for selecting tracks from a DST file. The main feature is the TrackSelector, which is a base algorithm that takes care of all procedures required by an initial event selection. The specifics of your own analysis are defined in an algorithm that you derive from the TrackSelector
.
Originally, this repository was contained within the BOSS Afterburner. The repository has been split into BOSS IniSelect for the initial event selection and BOSS Afterburner for final event selection. The reason is that IniSelect is integrated with BOSS and therefore has to run on the IHEP server, while the Afterburner is perferably run locally (so you can use the newest versions of gcc
, ROOT, etc).
-
A
bash
script framework for generating and splitting job files. This allows you to quickly generate a collection of job submit files any type of simulation, reconstruction, or analysis job. Just give a directory of DST files and the number of files you want per job and the paths to the DST files will be distributed accordingly. The same goes for random number generation etc required for simulation and reconstruction jobs. -
A base-derived algorithm structure (
TrackSelector
and its derived classes) for initial event selection. Specifics of an analysis are defined in the derived classes so that you don't have to worry about the basics, like creating a collection of tracks. This makes the code for the actual analysis procedure cleaner. -
An
NTupleContainer
faciliates the booking procedure forNTuple
s. -
A framework for unit testing. You can (should!) define boolean test cases for the output of algorithms or objects you are designing. These unit tests (1) serve as a 'playground' in which you can experiment with your code and (2) helps you make sure that your code keeps functioning as you want it to if you decide to modify it. See here for an example of what such a test looks like.
-
A
ParticleDatabase
: just fill in a name or PDG code of the particle you are looking for and you have access to properties like mass, charge, and lifetime through the resultingParticle
object. No need to initialize and the database access methods arestatic
. -
Selections of identified tracks are assembled to
TrackCollection
objects in algorithms you derive ofTrackSelector
. Other objects that are of help at this level too are:-
Kalman kinematic fit and vertex fit procedure is contained within objects
KinematicFitter
andVertexFitter
. -
CutObject
helps recording cut flow. The cut names are defined automatically as corresponding job properties and can be set at run time through the job options file. -
JobSwitch
object: if this object is declared in the header and constructor of theTrackSelector
or a derived algorithm, it allows one to set its corresponding switch (true
/false
) through the job options. -
KKFitResults
, an abstract container for storing fit results from the Kalman kinematic fit procedure. It also allows one to compare different fit results and to write the one which is best.
-
-
Beginnings of exception handling (
try
-throw
-catch
) through the objects innamespace
Error
instead of status codes. -
A handy
bash
script for downloading and installing the latest versions of HEP frameworks like ROOT, CLHEP and Gaudi.
You can clone this repository to the IHEP server (or your local pc) using the following command. It is advised that you clone this repository to BESIII file system folder (i.e., first cd /besfs/users/${USER}
).
git clone ssh://git@github.com/redeboer/BOSS_IniSelect.git
To contribute, please have a look at the contributing page on GitBook.
This GitBook contains basic step-by-step tutorials on BOSS and BESIII analysis procedures in general. In addition, this repository contains a growing inventory of useful BOSS packages. The source code is available on GitHub and is open for contributions by BESIII members.
A repository of BOSS packages used for initial event selection.
Platform | Material | URL |
---|---|---|
GitHub | Source code | github.com/redeboer/BOSS_IniSelect |
GitPages | Class documentation | redeboer.github.io/BOSS_IniSelect |
GitBook | Tutorial pages* | redeboer.gitbook.io/boss_iniselect |
*The tutorial pages are shared with the Afterburner.
A repository of objects and scripts that can be used for final event selection. Here, you process the output of the BOSS IniSelect repository.
Platform | Material | URL |
---|---|---|
GitHub | Source code | github.com/redeboer/BOSS_Afterburner |
GitPages | Class documentation | redeboer.github.io/BOSS_Afterburner |
GitBook | Tutorial pages* | redeboer.gitbook.io/boss_afterburner |
*The tutorial pages are shared with IniSelect.