Author: Gloria.Corti@cern.ch
You can find here how to introduce new decays in the AXSEL package
The AXSEL package is an analysis package that can be run with SICBDST.
It allows a unique and consistent selection of physics analysis events for different studies.
A user will decide at run time via a control card the specific decay channel selection, the selection conditions and parameters values he/she wants to be satisfied. The selection cuts are read from a CDF file at run time (with default parameters as recommended by the experts for the different decay channels).
The channel selections are identical when running on complete events or considering only the real decay channel tracks, allowing it to run on background events as well as signal events.
The package for the moment allows for 3 different levels of selection to be chosen:
Further explanations can be found below.
Experts for the different decay channels provide(d) the code for the actual selection of events through cuts (loose and tight selection). The code must comply to a few rules to be compatible with the package. They also provide(d) the cuts to be included in the cdf file.
The main routine of the package (AXSELECT) needs to be called once per event and will return flags specifying if the selection criteria for the particular decay channel chosen are satisfied and if the exclusive MC decay is present in the event.
When running with loose or tight selections it is also possible to check if the events would be flavour tagged. This is done internally using the routine axftag.F as optimized by C.Shepherd-Themistocleous for the TP.
During the initialization of the package, the list of the implemented decays and the available level of selection is printed on standard output if so chosen in the card (see: How to configure the package via the control card).
A complete list of the decay channels available in the package, with their implemented level of selection can be found in appendix A. You will also find the name of the person who provided the code for a specific decay and the version of the package in which it was implemented.
Other channels can be added if experts on the specific decays provide routines for the higher level selections that conform to the AXSEL package. The minimal selection for any new channel can be easily implemented if found necessary. Please contact me about implementing new decays, both for minimal selections and if you intend to implement higher levels of selection to be included in the AXSEL package.
The package is released under the name axsellib in CMT.
The source code is available in CVS, and the library for v5 (v5p1) exists in the release area on Linux both in debug and no debug mode.
In order to use the package you have to explicitly use it in your SICBDST requirements file by adding the following line:
use axsellib SICB v5
Version v5 can be used with SICBDST v250 and higher, a version v5p1 has been made to be used with SICBDST v235r3(r4).
Version v5 can in fact be used with any version of SICBDST using axreclib v4, while v5p1 with versions of SICDST using axreclib v3r2, providing to use the correct seldecay.cdf file.
The seldecay.cdf file containing the recommended cut parameters for all decays implemented in axsellib v5 is available in dbase v233r3, v235 and v236.
For details on the bug fixes, improvements for the various versions please refer to the release.notes distributed with the code.
The package is steered at run time via a control card.
An example card file (sicbaxsel.card) is available in the job area of the SICBDST package.
When you are reading DST files and do not want to redo any digitization/reconstruction do NOT use the SKIP card while using the AXSEL package, use DIGI 'ALL ' -1, RECO 'ALL ' -1 instead.
2.1.1 What to include in the card file
You will need to include the following lines in your card file using SICBDST:
C .... DecayName ... SelMode ... SelLevel ... SelTag ... Debug ... Histo
AXSE ... 'B0PP' .............. 0 .............. 1 ............... 0 ............ 1 ............. 1
C Histogram file
......'B0PP' 'HO' 'b02pipi.hbook!
NOTE that the key word for the histogram file must be identical to the DecayName picked.
If you use a version of SICBDST with a corresponding dbase package that contains a seldecay.cdf file corresponding to an older version of axsel or you want to use a modified version you should also have the following line:
C Decay Selection cdf file
IOPA
.......'SELD' 'C' 'seldecay.cdf!'
'SELD' is the cdf file containing the cut parameters for the various decay channels.
You can find the seldecay.cdf file containing the cuts for all implemented decays of axsel v5 from dbase v235 (also in v233r3), for all decays implemented in axsel v3 from dbase v229 and those in axsel v2 from dbase v227. Note that between these versions new decays have been implemented but the cuts relative to decays previously available have not been modified.
The steering of the AXSEL package is done via the AXSE card:
C .... DecayName ... SelMode ... SelLevel ... SelTag ... Debug ... Histo
AXSE ... 'B0JM' .............. 0 .............. 1 ............... 0 ............ 1 ............. 1
Variables in the AXSE card:
DecayName ... (4-character string)
Code word for B-decay of interest , The same string is used in the CDF file to identify the cuts for the decay, to define the histogram file in the IOPA card and throughout the code to call the appropriate routines for the chosen decay.
The list of the available decays and their implemented SelLevel can be found in this document (appendix A), in the routine axmakelist.F, and can be printed out during the initialization of the package at run time by selecting a value >0 for the Debug variable in the card
SelMode ....... (integer, default=0)
Selection mode.
The package allows two selection mode: fast or full.
Fast selection (SelMode=0). In this case all cuts/check are applied only to the tracks corresponding to the particles of the true specified decay. This mode works only for signal events, because the presence of the true decay is required.
Full selection (SelMode=1). In this case all tracks are considered and the full combinatorics is performed. It is possible that more than one combination will satisfy the required selection. This mode applies to any type of events.The code will then return a flag informing if at least one of the reconstructed "signal" is the Monte Carlo generated one, when it is present in the event.
SelLevel...... (integer, default=0)
Selection Level.
As mentioned in the overview three different levels of cuts for selecting the events are possible: minimal, loose and full.
Minimal (SelLevel=0) This level is equivalent to a fancy spectrometer acceptance. To satisfy this Selection Level a primary vertex has to be reconstructed as well as the "stable" particles of the specified decay. Since it requires for the specified decay to be present in the event it is meaningful only for signal events and SelMode=fast is enforced.
Loose (SelLevel=1) This level requires that loose cuts as defined in the seldecay.cdf file are satisfied.
Tight (SelLevel=2) This level requires that the complete cuts for the offline signal selection, as defined in the seldecay.cdf file, are satisfied
For Loose and Full selection level the cuts values are taken at run time from the seldecay.cdf, that contains the experts recommended cuts for the various decays. Depending on the specified SelMode all tracks or only those belonging to the decay are considered
If you want to use a seldecay.cdf file not in the dbase version used by the SICBDST version you are working with you will need to include in your card file the following line
C Decay Selection cdf file
IOPA
.......'SELD' 'C' 'seldecay.cdf!'
It is possible to print out the list of the cuts applied during the running of a job via a call to axsellast.F
SelTag ....... (integer, default=0)
Flavour tagging check.
0 = do not check the flavour tag
1 = check if the events would be flavour tagged when at least one "signal" combination in the event has been found satisfying the selection criterias. AXSELECT returns a true flag if at least one of the selected combinations would have a flavour tag (the tracks from the decay are excluded from the flavour tag search). It is not verified if the tag is a good tag or a mistag.
In order to check if the event is flavour tagged it is necessary to run with loose or tight selection level.
Debug ......... (integer, default=0)
Monitor/Print Control
It is possible to print out messages from the AXSEL package depending on the level of information required (serious warning/errors will always be printed regardless of the value set in this variable).
0 ... = ... Do not write anything
1 ... = ... Write monitoring information on standard ouput
2 ... = ... Write debugging information on standard output
Histo .......... (integer, default=0)
Histograms filling control
It is possible to fill some control/monitor histograms during selection. Some global histograms are common to all decay. Specific histograms for SelLevel=1,2 are provided by the decay analysis experts.
0 ... = Do not book nor fill histograms
1 ... = Book and fill control histograms
A user needs to call explicitly the AXSEL package for each event via the main routine AXSELECT that will return arguments specifying the success/failure of the selection. Below you will find more details.
More detailed information on the results of selection can also be retrieved via include files.
The package is automatically initialized the first time it is executed.
The definition of the AXSE card is not included in the SICB standard cards, and it is necessary for the user to do it.
In the user routine sudata include the following line:
call axseldata
A user can print a summary of the selection running conditions, cuts parameters applied, and events counters , on the standard output by calling axsellast from the sulast routine.
In the user routine sulast include the following line:
call axsellast
As mentioned earlier a user need to call the main routine of the AXSEL package once per event from the user analysis routine suanal by including the line:
call axselect ( MCFlag, SELFlag, AGRFlag, TAGFlag)
The routine returns four logical arguments whose meaning is the following:
Argument | Type | Explanation |
MCFlag | logical | TRUE if the decay tree specified in the data card has been found in ATMC |
SELFlag | logical | TRUE if the selection would have reconstructed the specified decay according to the criteria specified in the control card |
AGRFlag | logical | TRUE if at least one of the combinations reconstructed by the specified decay correspond to the real MC decay |
TAGFlag | logical | TRUE if at least one of the combinations reconstructed is flavour tagged |
Decay |
Code Word |
Implemented Level and version in which implemented |
Expert |
B0d g p+ p- |
'B0PP' |
All/v1 |
G.Wilkinson |
B0d g J/y (m+ m-) K0s (p+ p-) |
'B0JM' |
All/v1 |
P.Colrain |
B0sg D-s ( j (K+ K-) p- ) p+ |
'BSDP' |
Minimal/v1 All/v3 |
F.Ronga |
B0d g D0 (K+ p-) K* (K+ p-) |
'BDKP' |
Minimal/v1 |
|
B0d g J/y (e+ e-) K0s (p+ p-) |
'B0JE' |
Minimal/v1 |
|
B0s g m+ m- |
'BSMM' |
Minimal/v1 All/v2 |
E.R.Polycarpo |
B0d g p+ p-pi0(gamma gamma) |
'B03P' |
Minimal/v1 Loose/v5 |
A.Jacholkowska, G.Corti |
B0d g K+ p- |
'B0KP' |
Minimal/v1 |
|
B0d g K* (K+ p-) g |
'B0KG' |
Minimal/v2 |
|
B0d g D0 (K+ p-p0( g g )) K* (K+ p-) |
'BDP0' |
Minimal/v2 |
|
B0d g m+ m- K* (K+ p-) |
'BMMK' |
All/v3 |
P.Koppenburg |
MinimumBias |
'MBIA' |
Dummy flag that will return true always and does nothing. Just for convenience./v3 |
G.Corti |
B- gD0 (K+ p-) K- | 'BDK1' | Minimal/v5 | C.Jones |
B- gD0 (K+ K-) K- | 'BDK2' | Minimal/v5 | C.Jones |
B- gD0 (K+ p-) p- | 'BDP1' | Minimal/v5 | C.Jones |
B- gD0 (K+ K-) p- | 'BDP2' | Minimal/v5 | C.Jones |
B0s g D+s (p+ K+ K-)D-s (p- K+ K-) | 'BSDD' | Minimal/v5 | K.George |
B0d g D+ (p+ p+ K-)D- (p- p- K+) | 'B0DD' | Minimal/v5 | K.George |
B+c g D+s (p+ K+ K-)D0 (p- K+) | 'BCDD' | Minimal/v5 | K.George |
B0s g D-s ( K+ K- p-) K+ |
'BSDK' |
All/v5 |
J.vanTilburg |
O.Schneider provided some monitoring code.
The minimal selection levels for most decays have been implemented by G.Corti, those for BDK1, BDK2, BDP1, BDP2 by C.Jones, those for BSDD, B0DD, BCDD by K.George.
If you are implementing or foresee to implement a decay at some level in the axsel package please let me know and I will update this list
Decay |
Code Word |
Work in progress |
Working on it |
B0 g j (K+ K-) K0s (p+ p- ) | 'B0FK' | Minimal / TESTING
Loose/Tight end of June |
G.Corti
B.Viaud |
B0s g J/y (m+ m-) j (K+ K-) | 'BSJF' | Minimal / TESTING
Loose/Tight end of July |
G.Corti
N.van Bakel |
B+ gK+ p0 ( g g ) | 'BKP0' | Minimal / TESTING
Loose/Tight end of August |
G.Corti
C.Shepherd |
B+ gK0s ( p+ p- )p+ | 'BKSP' | Minimal / TESTING
Loose/Tight end of August |
G.Corti
C.Shepherd |
B0 gD*- (D0 (K+ p-)p-)p+ | 'BDST' | All / TESTING |
M.Adinolfi |
B- gD0 (K+ p-) K- | 'BDK1' | All / TESTING | C.Jones |
B- gD0 (K+ K-) K- | 'BDK2' | All / TESTING | C.Jones |
B- gD0 (p+ p-) K- | 'BDK3' | All / TESTING | C.Jones |
B- gD0 (K+ p-) p- | 'BDP1' | All / TESTING | C.Jones |
B- gD0 (K+ K-) p- | 'BDP2' | All / TESTING | C.Jones |
B- gD0 (p+ p-) p- | 'BDP3' | All / TESTING | C.Jones |
B0s g D+s (p+ K+ K-)D-s (p- K+ K-) | 'BSDD' | Loose&Tight/ IMPLEMENTING
end of June |
K.George |
B0d g D+ (p+ p+ K-)D- (p- p- K+) | 'B0DD' | All / IMPLEMENTING
end of June |
K.George |
B0d g J/y (e+ e-) K0s (p+ p-) |
'B0JE' |
All end of August |
P.Colrain |
B0d g D0 (K+ p-) K* (K+ p-) |
'BDKP' |
All end of August |
G.Passaleva |
B0d g p+ p-pi0(gamma gamma) |
'B03P' |
Tight end of August |
J.Libby |
B0d g K* (K+ p-) g |
'B0KG' |
Loose/Tight end of August |
I.Korolko |
An up-to-date list of changes for the various versions is also available with the code itself in the release area of the axsellib package (doc/release.notes).
Introduced full selection for decay Bs è Ds(KKp)K, and loose selection for B è p+p-po (only valid when running on signal files).
Introduced minimal selection for B- è D-(Kp)K, B- è D-(KK)K, B- è D-(Kp)p, B- è D-(KK)p and for Bs è Ds+(KKp)Ds-(KKp), Bd è D+(Kpp)D-(Kpp), Bc+ è Ds+(KKp)Do(Kp).
Introduce option of checking if events would be Flavour Tagged.
Modified Bs è Ds(f(KK)p)p to run on miniDST files.
Fixed bug in Bs è mm.
Add some additional protections and printing statements.
"Technical" version to use axreclib v4 compatible with SICBDST v236 (modification in axswim)
Introduced full selection for decays B
è mmK*(Kp) and Bs è Ds(f(KK)p)p .Introduced dummy control MBIA for "minimum bias" events, returning always true to all flags. This was introduced upon request for convenience reasons when processing background events.
Stop execution when initialisation failures of the axsel package occur, instead of only issuing warnings. Consistency between chosen and implemented decay level is checked, as well as for the requested decay to be implemented. In addition the presence of the decays cuts in the cdf file is checked if selevel>0. Failure of opening histogram file if histograms are requested is also considered an initialisation failure.
This page was last modified on 17 May 2001