6. Analysis¶
The analysis package collects modules and tools for high-level analysis of Belle II data. With analysis modules you are able to open mdst format files, create final state particles, and build more complicated decays. With these particle decay candidates, you can use high level tools such as Tree Fitter, Flavor Tagger, and the Full event interpretation (FEI).
Tip
For a series of hands-on introductory lessons, take a look at Section 25.4.
The core data objects of the basf2
analysis package, are the Particle class, and the ParticleList class.
Almost all analysis modules are concerned with the manipulation of ParticleList s.
Examples of analysis steering files can be found in tutorial directory of analysis package:
ls $BELLE2_RELEASE_DIR/analysis/examples/tutorials
6.1. Particles¶
Particles in basf2 are created from reconstructed dataobjects: Tracks, tracking vertices (V0s), ECLClusters, and KLMClusters. The Particle class, provides a unified way to treat different objects at a high level interpreting them as phsical particles. All of the Particle s in an event that fall within certain criteria are collected into ParticleList s.
The Belle II physics performance group already has several predefined ParticleList s. To use them you need to use functions described in the standard particle lists.
Creation of new particle lists by combination of particles is essential part of almost any analysis job. The syntax used during this procedure is the DecayString and is described below:
It is often desirable to apply selections to ParticleList s, and events. This is done with cut strings.
6.2. Modular analysis convenience functions¶
The general idea of basf2
modules is described in the section on Modules and Paths.
The analysis package provides pre-defined python wrapper functions designed to simplify users python code.
For vertex-fitter functions see the later section on Vertex (and kinematic) fitting.
There are also some more specialised python wrapper functions for dealing with photons.
6.3. Variables¶
While basf2
operates on ParticleList s, it is also important to calculate physics quantities associated with a given candidate or event.
In basf2
analysis, variables are handled by the VariableManager
.
There are many variables available for use in analysis.
Probably the most obvious, and useful are: p
, E
, Mbc
, and deltaE
.
You can search the variables in an alphabetical basf2 Variable Index, or browse Variables by group.
- 6.3.1. VariableManager
- 6.3.2. Variables by group
- Kinematics
- Helicity
- Tracking
- V0 Tracking
- PID
- Basic particle information
- ECL Cluster
- Acceptance
- Trigger
- Event
- Parameter Functions
- Meta Functions
- MC matching and MC truth
- Daughter info
- KLM Cluster and \(K_{L}^0\) Identification
- Time Dependent CPV Analysis Variables
- Flavor Tagger
- Rest of Event
- Continuum Suppression
- Event Shape
- Event Kinematics
- Flight Information
- Vertex Information
- Orca Kinematic Fitter
- For fully-inclusive particles
- Specific kinematic variables
- Belle and
b2bii
variables - Miscellaneous
- Calibration
- 6.3.3. Collections and Lists
- 6.3.4. Operations with variable lists
- 6.3.5. Miscellaneous helpers for using variables
- 6.3.6. Writing your own variable
6.4. Output for offline analysis¶
You can save information from analysis jobs directly from the VariableManager
(e.g. for offline analysis using python tools such as pandas)
6.4.2. (Advanced) user mDST files¶
You can also save events to your own mDST or user-defined dst (uDST) output files. These files are also created by the Skims but the functional code is part of Analysis.
6.5. Vertex (and kinematic) fitting¶
There are a number of vertex-fitting and kinematic fitter libraries interfaced and available for use in basf2.
By default, Tree Fitter is recommended even for simple single-vertex use-cases, however there are use cases where a better-performing or specialist tool is needed.
These fitters can be added to your basf2 path using a set of the convenient pre-defined python wrapper functions.
6.6. Event-based analysis¶
6.7. Truth-matching¶
6.8. Advanced Topics¶
- 6.8.5. Full event interpretation
- Algorithm overview
- Applying the FEI
- FEI and the conditions database
- Sphinx documentation
- Code structure
- Training the FEI
- FEI Training on the Grid
- Troubleshooting
- Resources, Publications etc.
6.9. Full list of analysis modules¶
The Belle II physics analysis software follows the logic of the general Belle II Analysis Software Framework (basf2) where independent modules solve relatively small problems, where practically all communication between modules happens in the form of data objects. Modules are executed in a linear fashion inside a module path, and can make objects available “downstream” by saving them in the DataStore.
Typical physics analysis performed at B factories can be separated into well defined analysis actions. For example, in a measurement of time-dependent CP violation in B0 → φKS0 decays we need to execute the following actions:
create list of charged kaon candidates,
create list of φ candidates by making combinations of two oppositely charged kaons,
create list of KS0 candidates,
create list of B0 candidates by making combinations of φ and KS0 candidates,
calculate continuum suppression variables,
determine the flavor of B0 candidates,
determine the decay vertex of B0 candidates,
determine the decay vertex of the other B meson in the event,
write out all relevant info to ntuple for offline analysis.
A measurement of time-dependent CP violation in B0 decays to a different final state, e.g. \(J/\psi K_S^0,\ D^+D^−\) or \(K^{*0}\gamma\), would consist of conceptually identical analysis actions. Even within the same analysis sequence the same analysis action can appear several times. In the example above, the actions 2 and 4 are conceptually the same. In both cases new particle is created by combining others. The only difference is in the input. The only difference between different decay modes mentioned above is in the intermediate and final state particles. All other steps, like 5, 6, 7, 8, and 9 are in principle the same. The input is of course different, but the result is the same. Therefore, commonly used analysis tools need to be prepared in order to enable efficient and accurate data analysis. Each analysis action can then be performed by a separate analysis module, combined into an analysis sequence steered by a python script.
- AllParticleCombiner¶
“This module combines all particles of the provided list to one mother particle.
- Package
analysis
- Library
libAllParticleCombiner.so
- Parameters
- cut (str, default=’’)
Selection criteria for the output ParticleList
- inputListNames (list(str), default=[])
List of ParticleLists which are supposed to be combined
- outputListName (str, default=’’)
Name of the output list created by the combination of all particles in the input lists.
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- AnalysisConfiguration¶
This is a supplementary module designed to configure other modules
- Package
analysis
- Library
libAnalysisConfiguration.so
- Parameters
- mcMatchingVersion (str, default=’BelleII’)
Specifies what version of mc matching algorithm is going to be used. Possibilities are: BelleII (default) and Belle. The latter should be used when analysing Belle MC. The difference between the algorithms is only in the treatment (identification) of FSR photons. In Belle II MC it is possible to identify FSR photons via special flag set by the generator, while in case of Belle MC such information is not available.
- tupleStyle (str, default=’default’)
- This parameter defines style of variables written by all other ntuples tools. n
Possible styles on example of PX variable of pi0 from D in decay B->(D->pi0 pi) pi0:n ‘default’: B_D_pi0_PXn ‘semilaconic’: D_pi0_PXn ‘laconic’: pi01_PXn
- BelleBremRecovery¶
Takes the charged particle from the given charged particle list (
inputListName
) and copies it to the output list (outputListName
). The 4-vector of the nearest (all) photon(s) fromgammaListName
(considered as radiative) is added to the charged particle, if it is found inside the cone around the charged particle with the given maximum angle (angleThreshold
).- Package
analysis
- Library
libBremsCorrection.so
- Required Parameters
- gammaListName (str)
The gammas list containing possibly radiative gammas, should already exist.
- inputListName (str)
The initial charged particle list containing the charged particles to correct, should already exist.
- outputListName (str)
The output charged particle list containing the corrected charged particles.
- Parameters
- angleThreshold (float, default=0.05)
The maximum angle in radians between the charged particle and the (radiative) gamma to be accepted.
- multiplePhotons (bool, default=True)
If only the nearest photon to add then make it False otherwise true
- writeOut (bool, default=False)
Set to true if you want to write out the output list to a root file
- BestCandidateSelection¶
Sort particles by the value of a given
variable
in the input list and optionally remove particles after the nth position.Per default particles are sorted in descending order but it can be switched to an ascending order by setting
selectLowest=True
. The convenience functionsmodularAnalysis.rankByHighest
andmodularAnalysis.rankByLowest
set this parameter automatically based on their names.Particles will receive an extra-info field containing their rank as an integer starting at 1 (best). The name of this extra-info field defaults to
${variable}_rank
but can be chosen freely using theoutputVariable
parameter.The ranking also takes antiparticles into account, so there will only be one B+- candidate with
rank=1
. The remaining list is sorted from best to worst candidate (each charge, e.g. B+/B-, separately). The sorting is guaranteed to be stable between particle and anti particle list: particles with the same value forvariable
will keep their relative order. That is, a particle “A” which was before another particle “B” in the same list and has the same value forvariable
will also stay before “B” after sorting.If
allowMultiRank=False
(the default) candidates with same value ofvariable
will have different ranks. IfallowMultiRank=True
they will share the same rank.IF
numBest>0
only candidates with this rank or better will remain in the output list. IfallowMultiRank=True
that means that there can be more thannumBest
candidates in the output list if they share ranks.- Package
analysis
- Library
libBestCandidateSelection.so
- Required Parameters
- outputVariable (str)
Name for created variable, which contains the rank for the particle. If not provided, the standard name
${variable}_rank
is used.
- particleList (str)
Name of the ParticleList to rank for best candidate
- variable (str)
Variable which defines the candidate ranking (see
selectLowest
for ordering)
- Parameters
- allowMultiRank (bool, default=False)
If true, candidates with identical values get identical rank
- cut (str, default=’’)
Only candidates passing the cut will be ranked. The others will have rank -1.
- numBest (int, default=0)
Keep only particles with this rank or better. If
allowMultiRank=False
this is identical to the maximum amount of candidates left in the list. Otherwise there may be more candidates if some share the same rank (0: keep all)
- selectLowest (bool, default=False)
If true, candidate with lower values of
variable
are better, otherwise higher is better
- BremsFinder¶
This module copies each particle in the
inputList
to theoutputList
and uses the results of the eclTrackBremFinder module to look for possible bremsstrahlung photons; if these photons exist, it adds their four momentum to the particle in theoutputList
. It also adds the original particle and these photons as daughters of the new, corrected particle. Track and PID information of the original particle are copied onto the new one to facilitate their access in the analysis scripts.The eclTrackBremFinder module uses the lepton track PXD and SVD hits and extrapolates them to the ECL; then looks for ECL clusters with energies between 0.02 and 1 times the track energy and without associated tracks, and checks if the normalized distance between each of these clusters and the extrapolated hit is smaller than 0.05. If it is, a Bremsstrahlung weighted relation between said cluster and the track is established. The weight is determined as
\[\text{max}\left(\frac{\left|\phi_{\text{cluster}}-\phi_{\text{hit}}\right|}{\Delta\phi_{\text{cluster}}+\Delta\phi_{\text{hit}}}, \, \frac{\left|\theta_{\text{cluster}}-\theta_{\text{hit}}\right|}{\Delta\theta_{\text{cluster}}+\Delta\theta_{\text{hit}}}\right)\]where \(\phi_i\) and \(\theta_i\) are the azimuthal and polar angles of the ECL cluster and the extrapolated hit, and \(\Delta x\) represents the uncertainty of the value \(x\). The details of the calculation of these quantities are here. By default, only relations with a weight smaller than 3.0 are stored. The user can further reduce the maximally allowed value of this weight to remove unwanted photons from the bremsstrahlung correction.
This module looks for photons in the
gammaList
whose clusters have a Bremsstrahlung relation with the track of one of the particles in theinputList
, and adds their 4-momentum to the particle’s one. It also stores the value of each relation weight asextraInfo
of the corrected particle, under the name"bremsWeightWithPhotonN"
, where N is the index of the photon as daughter of the corrected particle; thus"bremsWeightWithPhoton0"
gives the weight of the Bremsstrahlung relation between the new, corrected particle, and the first photon daughter.- Warning:
Even in the event of no bremsstrahlung photons found, a new particle is still created, and the original one is still added as its daughter.
- Warning:
Studies have shown that the requirements that the energy of the photon must be between 0.2 and 1 times the track energy and that only track-photon relations with a weight below three are considered, are too tight. Until these are relaxed and a new processing is done (MC15 and proc 13) it might be better to use the alternative
BelleBremRecovery
module.- See also:
- Package
analysis
- Library
libBremsCorrection.so
- Required Parameters
- gammaList (str)
The photon list containing the preselected bremsstrahlung candidates. It should already exist and the particles in the list must be photons
- inputList (str)
The initial particle list name containing the particles to correct. It should already exist and the particles must have an associated track.
- outputList (str)
The output particle list name.
- Parameters
- maximumAcceptance (float, default=3.0)
The maximum value of the relation weight between a bremsstrahlung cluster and a particle track
- multiplePhotons (bool, default=False)
If true, use all possible photons to correct the particle’s 4-momentum
- usePhotonOnlyOnce (bool, default=False)
If true, each brems candidate is used to correct maximum 1 particle (the one with the lowest relation weight among all in the
inputList
).
- writeOut (bool, default=False)
If true, the output
ParticleList
will be saved byRootOutput
. If false, it will be ignored when writing the file.
- BtubeCreator¶
BtubeCreator : This module creates Btube object, an object geometrically similar to a very long ellipsoid along a particular direction and can be used as a constraint in vertexing B particles. Upsilon4S decays to two Bs. the user selects one B with a ^ in decaystring. The order of daughters in reconstructdecay of Upsilon4S and this decaystring should be same. Using selected B as reference, the module calculates the direction in which the other B should fly and constructs a Btube object along that direction. In semi-leptonic analyses, the selected B is usually the fully reconstructed one, while for time dependent studies, the selected B is usually signal B which can be partially reconstructed
- Package
analysis
- Library
libBtubeCreator.so
- Parameters
- associateBtubeToBselected (bool, default=False)
whether to associate the Btube with the selected B
- confidenceLevel (float, default=0.001)
Confidence level to accept the fit.
- decayString (str, default=’’)
decay string of the mother particle, the selected daughter specifies which daughter will be used as reference to create Btube
- listName (str, default=’’)
name of mother particle list
- verbosity (bool, default=True)
print statements
- ChargedPidMVA¶
This module evaluates the response of an MVA trained for binary charged particle identification between two hypotheses, S and B. For a given input set of (S,B) mass hypotheses, it takes the Particle objects in the appropriate charged stable particle’s ParticleLists, calculates the MVA score using the appropriate xml weight file, and adds it as ExtraInfo to the Particle objects.
- Package
analysis
- Library
libChargedParticleIdentificator.so
- Parameters
- bkgHypoPDGCode (int, default=0)
The input background mass hypothesis’ pdgId.
- chargeIndependent (bool, default=False)
Specify whether to use a charge-independent training of the MVA.
- particleLists (list(str), default=[])
The input list of ParticleList names.
- payloadName (str, default=’ChargedPidMVAWeights’)
The name of the database payload object with the MVA weights.
- sigHypoPDGCode (int, default=0)
The input signal mass hypothesis’ pdgId.
- useECLOnlyTraining (bool, default=False)
Specify whether to use an ECL-only training of the MVA.
- ChargedPidMVAMulticlass¶
This module evaluates the response of a multi-class MVA trained for global charged particle identification.. It takes the Particle objects in the input charged stable particles’ ParticleLists, calculates the MVA per-class score using the appropriate xml weight file, and adds it as ExtraInfo to the Particle objects.
- Package
analysis
- Library
libChargedParticleIdentificator.so
- Parameters
- chargeIndependent (bool, default=False)
Specify whether to use a charge-independent training of the MVA.
- particleLists (list(str), default=[])
The input list of ParticleList names.
- payloadName (str, default=’ChargedPidMVAWeights’)
The name of the database payload object with the MVA weights.
- useECLOnlyTraining (bool, default=False)
Specify whether to use an ECL-only training of the MVA.
- ContinuumSuppressionBuilder¶
Creates for each Particle in the given ParticleLists a ContinuumSuppression dataobject and makes basf2 relation between them.
- Package
analysis
- Library
libContinuumSuppressionBuilder.so
- Parameters
- ROEMask (str, default=’’)
ROE mask
- particleList (str, default=’’)
Name of the ParticleList
- CurlTagger¶
“Curl Tagger is a tool designed to identify and tag extra tracks caused by low pt particles curling around the detector. For further documentation please see ‘tagCurlTracks’ in modularAnalysis.”
- Package
analysis
- Library
libCurlTagger.so
- Required Parameters
- particleLists (list(str))
input particle lists to check for curls or use for training
- Parameters
- belle (bool, default=False)
flag to distinuguish Belle (true) from Belle II (false) data
- mcTruth (bool, default=False)
additionally bundles the particles using their genParticleIndex and tags them with extraInfo(isTruthCurl) and extraInfo(truthBundleSize).
- ptCut (float, default=0.6)
preselection pt Cut
- responseCut (float, default=0.324)
minimum allowed selector response for a match.
- selectorType (str, default=’cut’)
the name of the selector to use when deciding if two reconstructed particles are the same true particle, available : ‘cut’, ‘mva’
- train (bool, default=False)
flag for training the MVA or other methods if needed
- DistanceCalculator¶
Calculates distance between two vertices, distance of closest approach between a vertex and a track, distance of closest approach between two tracks, distance of closest approach between a vertex/track and Btube
- Package
analysis
- Library
libDistanceCalculator.so
- Parameters
decayString (str, default=’’)
listName (str, default=’’)
- mode (str, default=’vertextrack’)
Specifies how the distance is calculated: vertextrack: calculate the distance of closest approach between a track and a vertex, taking the first candidate as vertex, default trackvertex: calculate the distance of closest approach between a track and a vertex, taking the first candidate as track, 2tracks: calculates the distance of closest approach between two tracks, 2vertices: calculates the distance between two vertices, vertexbtube: calculates the distance of closest approach between a vertex and a Btube, trackbtube: calculates the distance of closest approach between a track and a Btube
- DuplicateVertexMarker¶
Identify duplicate vertices (distinct particles, but built from the same daughters) and mark the one with best chi2. Only works if the particle has exactly two daughters. Mainly used to deal when merging V0 vertices with hand-built ones.
- Package
analysis
- Library
libDuplicateVertexMarker.so
- Required Parameters
- particleList (str)
Input ParticleList name
- Parameters
- extraInfoName (str, default=’highQualityVertex’)
Extra-info field added to all particles in the input list. 1 for the best vertex, 0 for lower ranked ones.
- prioritiseV0 (bool, default=True)
If a vertex is a V0, select it over its duplicate even if chi2 is worse.
- EnergyBiasCorrection¶
Module to modify energy from the lists. Include in your code as
mypath.add_module("EnergyBiasCorrection", particleLists=['gamma:cut'], scale=tableName_Weight)
The module modifies the input particleLists by scaling energy as given by the scale in the LookUpTable
- Package
analysis
- Library
libBiasCorrection.so
- Required Parameters
- particleLists (list(str))
input particle lists
- tableName (str)
ID of table used for reweighing
- EventKinematics¶
Module to compute global event kinematic attributes like missing momentum and energy.
- Package
analysis
- Library
libEventKinematics.so
- Parameters
- particleLists (list(str), default=[])
List of the ParticleLists
- usingMC (bool, default=False)
is built using generated particles
- EventShapeCalculator¶
Module to compute event shape attributes starting from particlelists. The core algorithms are not implemented in this module, but in dedicated basf2 classes.
- Package
analysis
- Library
libEventShapeCalculator.so
- Parameters
- checkForDuplicates (bool, default=False)
Enables the check for duplicates in the input list. If a duplicate entry is found, the first one is kept.
- enableAllMoments (bool, default=False)
Enables the calculation of FW and harmonic moments from 5 to 8
- enableCleoCones (bool, default=True)
Enables the calculation of the CLEO cones.
- enableCollisionAxis (bool, default=True)
Enables the calculation of the quantities related to the collision axis.
- enableFoxWolfram (bool, default=True)
Enables the calculation of the Fox-Wolfram moments.
- enableHarmonicMoments (bool, default=True)
Enables the calculation of the Harmonic moments.
- enableJets (bool, default=True)
Enables the calculation of jet-related quantities.
- enableSphericity (bool, default=True)
Enables the calculation of the sphericity-related quantities.
- enableThrust (bool, default=True)
Enables the calculation of thust-related quantities.
- particleListNames (list(str), default=[])
List of the ParticleLists to be used for the calculation of the EventShapes.
- ExtraInfoPrinter¶
Prints the names of all ExtraInfo set for each particle in the event. Useful for debugging and development.
- Package
analysis
- Library
libExtraInfoPrinter.so
- Required Parameters
- particleList (str)
Name of the particle list (an empty string prints the EventExtraInfo)
- Parameters
- printOnce (bool, default=True)
Print for the first event, or for all events (default true)
- ExtraInfoRemover¶
Deletes the ExtraInfo from each particle in the given ParticleLists.
- Package
analysis
- Library
libExtraInfoRemover.so
- Parameters
- particleLists (list(str), default=[])
List of ParticleLists
- removeEventExtraInfo (bool, default=False)
If True, also eventExtraInfo will be removed
- FixECLClusters¶
Sets ConnectedRegionID and ClusterID to ECLClusters on MC samples with old ECLCluster design.
- Package
analysis
- Library
libFixECLClusters.so
- FlavorTaggerInfoBuilder¶
Initializes the FlavorTaggerInfo DataObject that will be used during the Flavor Tagging. Filling is done in the FlavorTagger.py script
- Package
analysis
- Library
libFlavorTaggerInfoBuilder.so
- FlavorTaggerInfoFiller¶
Creates a new flavorTaggerInfoMap DataObject for the specific methods. Saves there all the relevant information of the flavorTagger.
- Package
analysis
- Library
libFlavorTaggerInfoFiller.so
- Parameters
- DNNmlp (bool, default=False)
Sets if DNN Tagger output will be saved or not
- FANNmlp (bool, default=False)
Sets if FANN Combiner output will be saved or not
- TMVAfbdt (bool, default=False)
Sets if FANN Combiner output will be saved or not
- eventLevelParticleLists (list(tuple(str, str, str)), default=[])
Used Flavor Tagger eventLevel Categories of the lists
- istrueCategories (bool, default=False)
Sets if individual MC truth for each category is saved or not
- qpCategories (bool, default=False)
Sets if individual categories output will be saved or not
- targetProb (bool, default=False)
Sets if individual Categories output will be saved or not
- trackLevelParticleLists (list(tuple(str, str)), default=[])
Used Flavor Tagger trackLevel Categories of the lists
- trackPointers (bool, default=False)
Sets if track pointers to target tracks are saved or not
- HelixErrorScaler¶
“scale the error of helix parameters
Creates a new charged particle list whose helix errors are scaled by constant factors. Parameters (a, b) can be set to define impact parameter resolution, which limits d0 and z0 errors so that they do not shrink below the resolution.
- Package
analysis
- Library
libHelixErrorScaler.so
- Parameters
- d0ResolutionParameters (list(float), default=[0.0, 0.0])
d0 resolution parameters
- inputListName (str, default=’’)
The name of input charged particle list
- outputListName (str, default=’’)
The name of output charged particle list
- scaleFactors (list(float), default=[1.0, 1.0, 1.0, 1.0, 1.0])
vector of five scale factors for helix parameter errors
- z0ResolutionParameters (list(float), default=[0.0, 0.0])
z0 resolution parameters
- InclusiveBtagReconstruction¶
Inclusive Btag reconstruction
- Package
analysis
- Library
libInclusiveBtagReconstruction.so
- Required Parameters
- inputListsNames (list(str))
List of names of the ParticleLists which are used to reconstruct Btag from
- Parameters
- bsigListName (str, default=’’)
Name of the Bsig ParticleList
- btagListName (str, default=’’)
Name of the Btag ParticleList
- upsilonListName (str, default=’Upsilon(4S)’)
Name of the ParticleList to be filled with Upsilon(4S) -> B:sig anti-B:tag
- InclusiveDstarReconstruction¶
Inclusive Dstar reconstruction by estimating the four vector using slow pions
- Package
analysis
- Library
libInclusiveDstarReconstruction.so
- Parameters
- DstarCut (str, default=’’)
Cut for Dstar
- decayString (str, default=’’)
Input DecayDescriptor string
- slowPionCut (str, default=’useCMSFrame(p) < 0.2’)
Cut for slow pions
- KlongDecayReconstructorExpert¶
This module is used to employ kinematic constraints to determine the momentum of Klongs for two body B decays containing a K_L0 and something else. The module creates a list of K_L0 candidates whose K_L0 momentum is reconstructed by combining the reconstructed direction (from either the ECL or KLM) of the K_L0 and kinematic constraints of the initial state.
- Package
analysis
- Library
libKlongDecayReconstructor.so
- Required Parameters
- decayString (str)
Input DecayDescriptor string.
- Parameters
- cut (str, default=’’)
Selection criteria to be applied
- decayMode (int, default=0)
User-specified decay mode identifier (saved in ‘decayModeID’ extra-info for each Particle)
- maximumNumberOfCandidates (int, default=-1)
Don’t reconstruct channel if more candidates than given are produced.
- recoList (str, default=’_reco’)
Suffix attached to the original K_L input list to identify the output list of the FindKlongMomentum module; this is the input for this module, if not defined it is set to ‘_reco’
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- KlongMomentumCalculatorExpert¶
This module is used to employ kinematic constraints to determine the momentum of Klongs for two body B decays containing a K_L0 and something else. The module creates a list of K_L0 candidates whose K_L0 momentum is reconstructed by combining the reconstructed direction (from either the ECL or KLM) of the K_L0 and kinematic constraints of the intial state.
- Package
analysis
- Library
libKlongDecayReconstructor.so
- Required Parameters
- decayString (str)
Input DecayDescriptor string.
- Parameters
- cut (str, default=’’)
Selection criteria to be applied
- decayMode (int, default=0)
User-specified decay mode identifier (saved in ‘decayModeID’ extra-info for each Particle)
- maximumNumberOfCandidates (int, default=-1)
Don’t reconstruct channel if more candidates than given are produced.
- recoList (str, default=’_reco’)
Suffix attached to the output K_L list, if not defined it is set to ‘_reco’
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- MCDecayFinder¶
Find decays in MCParticle list matching a given DecayString and create Particles from them.
- Package
analysis
- Library
libMCDecayFinder.so
- Required Parameters
- decayString (str)
DecayDescriptor string.
- listName (str)
Name of the output particle list
- Parameters
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- MCMatcherParticles¶
Performs MC matching (sets relation Particle->MCParticle) for all particles (and its (grand)^N-daughter particles) in the ParticleList. The relation can be used in conjunction with MCMatching::MCErrorFlags flags, e.g. using the isSignal or mcPDG & mcErrors variables.
In addition to the usual mc matching algorithm the module can run also loose mc matching. The difference between loose and normal mc matching algorithm is that the loose algorithm will find the common mother of the majority of daughter particles while the normal algorithm finds the common mother of all daughters. The results of loose mc matching algorithm are stored to the following extraInfo items:
looseMCMotherPDG: PDG code of most common mother
looseMCMotherIndex: 1-based StoreArray<MCParticle> index of most common mother
- looseMCWrongDaughterN: number of daughters that don’t originate from the most
common mother
- looseMCWrongDaughterPDG: PDG code of the daughter that doesn’t originate from
the most common mother (only if looseMCWrongDaughterN = 1)
- looseMCWrongDaughterBiB: 1 if the wrong daughter is Beam Induced Background
Particle
- Package
analysis
- Library
libMCMatcherParticles.so
- Required Parameters
- listName (str)
Name of the input ParticleList.
- Parameters
- looseMCMatching (bool, default=False)
Perform loose mc matching
- OnlyWriteOutParticleLists¶
Marks all objects in DataStore except those of type ParticleList as WrtieOut=False. Intedend to run before outputting an index file to remove unnecessary arrays.
- Package
analysis
- Library
libOnlyWriteOutParticleLists.so
- ParticleCombiner¶
Makes particle combinations
- Package
analysis
- Library
libParticleCombiner.so
- Required Parameters
- decayString (str)
Input DecayDescriptor string (see DecayString).
- Parameters
- allowChargeViolation (bool, default=False)
If true the decay string does not have to conserve electric charge
- chargeConjugation (bool, default=True)
If true, the charge-conjugated mode will be reconstructed as well
- cut (str, default=’’)
Selection criteria to be applied
- decayMode (int, default=0)
User-specified decay mode identifier (saved in ‘decayModeID’ extra-info for each Particle)
- ignoreIfTooManyCandidates (bool, default=True)
Don’t reconstruct channel if more candidates than given by ‘maximumNumberOfCandidates’ are produced.
- maximumNumberOfCandidates (int, default=10000)
Max. number of candidates reconstructed. By default, if the limit is reached no candidates will be produced. This behaviour can be changed by ‘ignoreIfTooManyCandidates’ flag.
- recoilParticleType (int, default=0)
If not equal 0, the mother Particle is reconstructed in the recoil against the daughter particles. In the case of the following decay chain M -> D1 D2 … Dn and
recoilParticleType = 1:
the mother momentum is given by: p(M) = p(e+e-) - p(D1) - p(D2) - … - p(DN)
D1, D2, …, DN are attached as daughters of M
recoilParticleType = 2:
the mother momentum is given by: p(M) = p(D1) - p(D2) - … - p(DN)
D1, D2, …, DN are attached as daughters of M
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- ParticleCombinerFromMC¶
Makes particle combinations
- Package
analysis
- Library
libParticleCombinerFromMC.so
- Required Parameters
- decayString (str)
Input DecayDescriptor string (see DecayString).
- Parameters
- chargeConjugation (bool, default=True)
If true, the charge-conjugated mode will be reconstructed as well
- cut (str, default=’’)
Selection criteria to be applied
- decayMode (int, default=0)
User-specified decay mode identifier (saved in ‘decayModeID’ extra-info for each Particle)
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- ParticleCopier¶
Replaces each Particle in the ParticleList with its copy. Particle’s (grand)^n-daughter Particles are copied as well. The existing relations of the original Particle (or it’s (grand-)^n-daughters) are copied as well.
- Package
analysis
- Library
libParticleCopier.so
- Parameters
- inputListNames (list(str), default=[])
list of input ParticleList names
- ParticleKinematicFitter¶
Kinematic fitter for modular analysis
- Package
analysis
- Library
libParticleKinematicFitter.so
- Parameters
- add3CPhoton (bool, default=False)
Add one photon with unmeasured energy (-1C).
- addUnmeasuredPhoton (bool, default=False)
Add one unmeasured photon (-3C).
- debugFitter (bool, default=False)
Switch on/off internal debugging output if available.
- debugFitterLevel (int, default=10)
Internal debugging output level if available.
- decayString (str, default=’’)
Specifies which daughter particles are included in the kinematic fit.
- invMass (float, default=0.0)
Invariant mass in GeV. Mass constraint only.
- kinematicFitter (str, default=’OrcaKinFit’)
Available: OrcaKinFit.
- listName (str, default=’’)
Name of particle list.
- orcaConstraint (str, default=’HardBeam’)
OrcaKinFit constraint: HardBeam, RecoilMass.
- orcaFitterEngine (str, default=’OPALFitterGSL’)
OrcaKinFit engine: NewFitterGSL, NewtonFitterGSL, OPALFitterGSL.
- orcaTracer (str, default=’None’)
OrcaKinFit tracer: None, Text.
- recoilMass (float, default=0.0)
Recoil mass in GeV. RecoilMass constraint only.
- updateDaughters (bool, default=False)
Update the daughter kinematics.
- updateMother (bool, default=True)
Update the mother kinematics.
- ParticleListManipulator¶
Manipulates ParticleLists: copies/merges/performs particle selection
- Package
analysis
- Library
libParticleListManipulator.so
- Required Parameters
- outputListName (str)
Output ParticleList name
- Parameters
- cut (str, default=’’)
Selection criteria to be applied
- inputListNames (list(str), default=[])
list of input ParticleList names
- preferLowest (bool, default=True)
If true, duplicate with lowest value of
variable
is accepted, otherwise higher one.
- variable (str, default=’mdstIndex’)
Variable which defines the best duplicate (see
selectLowest
for ordering)
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- ParticleLoader¶
Loads MDST dataobjects as Particle objects to the StoreArray<Particle> and collects them in specified ParticleList.
- Package
analysis
- Library
libParticleLoader.so
- Parameters
- addDaughters (bool, default=False)
If true, the particles from the bottom part of the selected particle’s decay chain will also be created in the datastore and mother-daughter relations are recursively set
- decayStrings (list(str), default=[])
List of decay strings (see DecayString for syntax) that specify all output ParticleLists to be created by the module.
- enforceFitHypothesis (bool, default=False)
If true, a Particle is only created if a track fit with the particle hypothesis passed to the ParticleLoader is available.
- roeMaskName (str, default=’’)
ROE mask name to load
- skipNonPrimaryDaughters (bool, default=False)
If true, the secondary MC daughters will be skipped, default is false
- sourceParticleListName (str, default=’’)
Particle list name from which we need to get ROEs
- trackHypothesis (int, default=0)
Track hypothesis to use when loading the particle. By default, use the particle’s own hypothesis.
- useMCParticles (bool, default=False)
Use MCParticles instead of reconstructed MDST dataobjects (tracks, ECL, KLM, clusters, V0s, …)
- useMissing (bool, default=False)
If true, the Particle List will be filled with missing momentum from the ROE and signal particle.
- useROEs (bool, default=False)
Use ROE instead of reconstructed MDST dataobjects (tracks, ECL, KLM, clusters, V0s, …)
- writeOut (bool, default=False)
If true, the output ParticleList will be saved by RootOutput. If false, it will be ignored when writing the file.
- ParticleMCDecayString¶
Creates the Monte Carlo decay string of a Particle and its daughters. The MC decay string of the particle is hashed and saved as a 32bit pattern in the extra info field decayHash of the particle. The MC decay string of the particle + its daughters is hashed as well and saved as another 32bit pattern in the extra info field decayHashExtended of the particle. The mapping hash <-> MC decay string in saved in a TTree by this module. The 32bit pattern must be saved as a float (because our extra info field, variable manager and ntuple output only supports float) but they just represent 32 bits of a hash! The MC decay string can also be stored in an analysis ROOT file using the MCDecayString NtupleTool. Details on the MC decay string format can be found here: MC decay string
- Package
analysis
- Library
libParticleMCDecayString.so
- Required Parameters
- listName (str)
Particles from these ParticleList are used as input.
- Parameters
- conciseString (bool, default=False)
If set to true, the code will use a more concise format for the string.
- fileName (str, default=’’)
Filename in which the hash strings are saved, if empty the strings are not saved
- identifiers (str, default=’abcdefghijklmnopqrstuvwxyz’)
Identifiers used to identify particles in the concise format.
- treeName (str, default=’hashtable’)
Tree name in which the hash strings are saved
- ParticleMassUpdater¶
This module replaces the mass of the particles inside the given particleLists with the invariant mass of the particle corresponding to the given pdgCode.
- Package
analysis
- Library
libParticleMassUpdater.so
- Parameters
- particleLists (list(str), default=[])
List of ParticleLists
- pdgCode (int, default=22)
PDG code for mass reference
- ParticlePrinter¶
Prints specified variables for all particles in the specified particle list to screen (useful for debugging). Event-based variables can be printed by not specifying the particle list (empty string).
- Package
analysis
- Library
libParticlePrinter.so
- Parameters
- fullPrint (bool, default=True)
execute Particle’s internal print() function
- listName (str, default=’’)
name of ParticleList
- variables (list(str), default=[])
names of variables to be printed (see Variable::Manager)
- ParticleSelector¶
Removes Particles from given ParticleList that do not pass specified selection criteria.
- Package
analysis
- Library
libParticleSelector.so
- Required Parameters
- decayString (str)
Input ParticleList name (see DecayString).
- Parameters
- cut (str, default=’’)
Selection criteria to be applied, see Cut strings and selections
- ParticleStats¶
Make a summary of specific ParticleLists.
- Package
analysis
- Library
libParticleStats.so
- Parameters
- outputFile (str, default=’’)
Name of output file
- particleLists (list(str), default=[])
List of ParticleLists
- printPassMatrix (bool, default=True)
Should we also calculate and print the pass matrix?
- ParticleVertexFitter¶
Vertex fitter for modular analysis
- Package
analysis
- Library
libParticleVertexFitter.so
- Parameters
- confidenceLevel (float, default=0.001)
Confidence level to accept the fit. Particle candidates with p-value less than confidenceLevel are removed from the particle list. If set to -1, all candidates are kept; if set to 0, the candidates failing the fit are removed.
- decayString (str, default=’’)
specifies which daughter particles are included in the kinematic fit
- fitType (str, default=’vertex’)
type of the kinematic fit (vertex, massvertex, mass)
- listName (str, default=’’)
name of particle list
- massConstraintList (list(int), default=[])
Type::[int]. List of daughter particles to mass constrain with int = pdg code. (only for MassFourCKFit)
- massConstraintListParticlename (list(str), default=[])
Type::[string]. List of daughter particles to mass constrain with string = particle name. (only for MassFourCKFit)
- smearing (float, default=0.002)
smear IP tube width by given length
- updateDaughters (bool, default=False)
true: update the daughters after the vertex fit
- vertexFitter (str, default=’KFit’)
KFit or Rave
- withConstraint (str, default=’’)
additional constraint on vertex: ipprofile, iptube, mother, iptubecut, pointing, btube
- ParticleWeighting¶
Weights particles according to LookUp table
- Package
analysis
- Library
libParticleWeighting.so
- Required Parameters
- particleList (str)
Name of the ParticleList to reduce to the best candidates
- tableName (str)
ID of table used for reweighing
- ParticleWeightingLookUpCreator¶
Creates test LookUp table
- Package
analysis
- Library
libParticleWeightingLookUpCreator.so
- Required Parameters
- experimentHigh (int)
Interval of validity, ex.high
- experimentLow (int)
Interval of validity, ex.low
- outOfRangeWeight (dict(str -> float))
Weight info for out-of-range partiles
- runHigh (int)
Interval of validity, run high
- runLow (int)
Interval of validity, run low
- tableName (str)
Name of the LookUp table
- Parameters
- tableIDNotSpec (list(tuple(dict(str -> float), dict(str -> tuple(float, float)))), default=[])
Bin:weight info map without specific bin-numbering scheme
- tableIDSpec (list(tuple(tuple(dict(str -> float), dict(str -> tuple(float, float))), float)), default=[])
Bin:weight info map with specific bin-numbering scheme
- PhotonEfficiencySystematics¶
Module to include data/MC weights for photon detection efficiency. Include in your code as
mypath.add_module("PhotonEfficiencySystematics", particleLists=['gamma:cut'], tableName=tableName_Weight)
- Package
analysis
- Library
libPhotonEfficiencySystematics.so
- Required Parameters
- particleLists (list(str))
input particle lists
- tableName (str)
ID of table used for reweighing
- PrintMCParticles¶
Print an MCParticle List
- Package
analysis
- Library
libPrintMCParticles.so
- Parameters
- maxLevel (int, default=-1)
Show only up to specified depth level, -1 means no limit
- onlyPrimaries (bool, default=True)
Show only primary particles
- showMomenta (bool, default=False)
Show also the particle momenta
- showProperties (bool, default=False)
Show the basic particle properties
- showStatus (bool, default=False)
Show extendend status information of the particle
- showVertices (bool, default=False)
Show also the particle production vertices and times
- storeName (str, default=’’)
Name of the StoreArray to print
- PseudoVertexFitter¶
Pseudo fitter adds a covariance matrix which is sum of the daughter covariance matrices.
- Package
analysis
- Library
libPseudoVertexFitter.so
- Parameters
- listName (str, default=’’)
name of particle list
- RemoveParticlesNotInLists¶
Removes all Particles that are not in one of the given ParticleLists (or daughters of Particles in the lists). All relations from/to Particles, daughter indices, and other ParticleLists are fixed. Note that this does not currently touch any data used to create final state particles, which might make up a large fraction of the total file size.
- Package
analysis
- Library
libRemoveParticlesNotInLists.so
- Required Parameters
- particleLists (list(str))
Keep the Particles and their daughters in these ParticleLists.
- RestOfEventBuilder¶
Creates for each Particle in the given ParticleList a RestOfEvent dataobject and makes basf2 relation between them.
- Package
analysis
- Library
libRestOfEventBuilder.so
- Required Parameters
- particleList (str)
Name of the ParticleList
- Parameters
- createNestedROE (bool, default=False)
A switch to create nested ROE
- fromMC (bool, default=False)
A switch to create MC ROE
- mostLikely (bool, default=True)
whether input particle lists contain most-likely lists
- nestedROEMask (str, default=’’)
A switch to create nested ROE
- particleListsInput (list(str), default=[])
List of the particle lists, which serve as a source of particles
- useKLMEnergy (bool, default=False)
A switch to create ROE with KLM energy included
- RestOfEventInterpreter¶
Creates a mask (vector of boolean values) for tracks and clusters in RestOfEvent.
- Package
analysis
- Library
libRestOfEventInterpreter.so
- Required Parameters
- particleList (str)
Name of the ParticleList
- Parameters
- ROEMasks (list(tuple(str, str, str, str)), default=[])
List of (maskName, trackSelectionCut, eclClusterSelectionCut) tuples that specify all ROE masks of a specific particle to be created.
- update (bool, default=False)
Set true for updating a-priori charged stable fractions used in calculation of ROE 4-momentum
- RestOfEventPrinter¶
Prints basic or detailed RestOfEvent info to screen. It is possible to print out ROEMasks for specific mask names as well.
- Package
analysis
- Library
libRestOfEventPrinter.so
- Parameters
- fullPrint (bool, default=False)
If true, print whole masks content.
- maskNames (list(str), default=[])
List of all mask names for which the info will be printed.
- unpackComposites (bool, default=True)
If true, replace composites by their daughters
- RestOfEventUpdater¶
Updates an existing mask (map of boolean values) for tracks or eclClusters in RestOfEvent with an available property (e.g. after performing training).
- Package
analysis
- Library
libRestOfEventUpdater.so
- Required Parameters
- particleList (str)
Name of the ParticleList which contains information that will be used for updating
- Parameters
- cutString (str, default=’’)
Cut string which will be used for updating masks
- discard (bool, default=False)
Update the ROE mask by passing or discarding particles in the provided particle list, default is to pass
- updateMasks (list(str), default=[])
List of all mask names which will be updated
- SelectDaughters¶
SelectDaughters
- Package
analysis
- Library
libSelectDaughters.so
- Parameters
- decayString (str, default=’’)
specifies which daughter particles will remain
- listName (str, default=’’)
name of particle list
- SignalSideParticleFilter¶
The module returns true if the current RestOfEvent object is related to any of the Particles from the input ParticleList and passes selection criteria. The module should be executed only in the for_each ROE path.
- Package
analysis
- Library
libSignalSideParticleFilter.so
- Parameters
- particleLists (list(str), default=[])
Input ParticleList name
- selection (str, default=’’)
Additional selection criteria
- SignalSideParticleListCreator¶
The module creates a ParticleList and fills it with one of the daughter Particles.
- Package
analysis
- Library
libSignalSideParticleListCreator.so
- Parameters
- decayString (str, default=’’)
DecayString specifying the daughter Particle to be included in the ParticleList
- particleListName (str, default=’’)
Name of the ParticleList to be created and filled with signal side daughter Particle
- SignalSideVariablesToDaughterExtraInfo¶
The module writes properties (values of specified variables) of the particle related to the current ROE as an ExtraInfo to the single particle in the input ParticleList. This module is intended to be executed only in for_each ROE path.
- Package
analysis
- Library
libSignalSideVariablesToDaughterExtraInfo.so
- Parameters
- overwrite (int, default=0)
-1/0/1/2: Overwrite if lower / don’t overwrite / overwrite if higher / always overwrite, in case if extra info with given name already exists
- particleListName (str, default=’’)
The input particleList name. This list should contain at most 1 particle
- variablesToExtraInfo (dict(str -> str), default={})
Dictionary of variables and extraInfo names to save in the extra-info field.
- SignalSideVariablesToExtraInfo¶
The module writes property (value of specified variable) of single particle found in the input ParticleList as an ExtraInfo to the Particle related to the current ROE. This module is intended to be executed only in for_each ROE path.
- Package
analysis
- Library
libSignalSideVariablesToExtraInfo.so
- Parameters
- particleListName (str, default=’’)
The input particleList name. This list should contain at most 1 particle
- variableToExtraInfo (dict(str -> str), default={})
Dictionary of variables and extraInfo names to save in the extra-info field.
- SkimFilter¶
Filter based on ParticleLists, by setting return value to true if at least one of the given lists is not empty.
- Package
analysis
- Library
libSkimFilter.so
- Parameters
- particleLists (list(str), default=[])
List of ParticleLists
- TagUniqueSignal¶
Mark true (target=1) candidates from input list via extra-info field. Only the first true candidate associated with an MCParticle is marked.
- Package
analysis
- Library
libTagUniqueSignal.so
- Required Parameters
- particleList (str)
Input ParticleList name
- Parameters
- extraInfoName (str, default=’uniqueSignal’)
Extra-info field added to all particles in the input list. 1 for unique signal, 0 for background or duplicates.
- target (str, default=’isSignal’)
Variable which defines signal and background.
- TagVertex¶
Tag side Vertex Fitter for modular analysis
- Package
analysis
- Library
libTagVertex.so
- Parameters
- MCAssociation (str, default=’breco’)
‘’: no MC association. breco: use standard Breco MC association. internal: use internal MC association
- askMCInformation (bool, default=False)
TRUE when requesting MC Information from the tracks performing the vertex fit
- confidenceLevel (float, default=0.001)
required confidence level of fit to keep particles in the list. Note that even with confidenceLevel == 0.0, errors during the fit might discard Particles in the list. confidenceLevel = -1 if an error occurs during the fit
- constraintType (str, default=’IP’)
Choose the type of the constraint: noConstraint, IP (tag tracks constrained to be within the beam spot), tube (long tube along the BTag line of flight, only for fully reconstruced B rec), boost (long tube along the Upsilon(4S) boost direction), (breco)
- fitAlgorithm (str, default=’Rave’)
Fitter used for the tag vertex fit: Rave or KFit
- listName (str, default=’’)
name of particle list
- maskName (str, default=’’)
Choose ROE mask to get particles from
- reqPXDHits (int, default=0)
Minimum number of PXD hits for a track to be used in the vertex fit
- trackFindingType (str, default=’standard_PXD’)
Choose how to reconstruct the tracks on the tag side: standard, standard_PXD
- useRollBack (bool, default=False)
Use rolled back non-primary tracks
- useTruthInFit (bool, default=False)
Use the true track parameters in the vertex fit
- TauDecayMarker¶
Module to identify generated tau pair decays, using MCParticle information. Each tau lepton decay channel is numbered following the order in the default KKMC decay table. Using this module, the channel number will be stored in the variables
tauPlusMCMode
, andtauMinusMCMode
. Further details and usage can be found at Tau decay MC modes.- Package
analysis
- Library
libTauDecayMarker.so
- Parameters
- printDecayInfo (bool, default=False)
Print information of the tau pair decay from MC.
- TauDecayMode¶
Module to identify generated tau pair decays, using MCParticle information.By default, each tau decay is numbered as TauolaBelle2DecayMode [Ref: BELLE2-NOTE-PH-2020-055]
- Package
analysis
- Library
libTauDecayMode.so
- Parameters
- file_minus (str, default=’’)
Path for an alternative mapping for tau- decays
- file_plus (str, default=’’)
Path for an alternative mapping for tau+ decays
- printmode (str, default=’default’)
Printout more information from each event
- TrackIsoCalculator¶
Calculate track isolation variables on the input ParticleList.
- Package
analysis
- Library
libTrackIsoCalculator.so
- Required Parameters
- detectorInnerSurface (str)
The name of the detector at whose innermost layer we extrapolate each helix’s polar and azimuthal angle. Allowed values: {CDC, PID(=TOP/ARICH), ECL, KLM}.
- particleList (str)
The name of the input ParticleList. Must be a charged stable particle as defined in Const::chargedStableSet.
- Parameters
- use2DRhoPhiDist (bool, default=False)
If true, will calculate the pair-wise track distance as the cord length on the (rho, phi) projection.
- TrackingEfficiency¶
Module to remove tracks from the lists at random. Include in your code as
mypath.add_module("TrackingEfficiency", particleLists=['pi+:cut'], frac=0.01)
The module modifies the input particleLists by randomly removing tracks with the probability frac.
- Package
analysis
- Library
libTrackingSystematics.so
- Required Parameters
- particleLists (list(str))
input particle lists
- Parameters
- frac (float, default=0.0)
probability to remove the particle
- TrackingMomentum¶
Module to modify momentum of tracks from the lists. Include in your code as
mypath.add_module("TrackingMomentum", particleLists=['pi+:cut'], scale=0.999)
The module modifies the input particleLists by scaling track momenta as given by the parameter scale
- Package
analysis
- Library
libTrackingSystematics.so
- Required Parameters
- particleLists (list(str))
input particle lists
- Parameters
- scale (float, default=0.999)
scale factor to be applied to 3-momentum
- TreeFitter¶
Tree Fitter module. Performs simultaneous fit of all vertices in a decay chain. Can also be used to just fit a single vertex.
- Package
analysis
- Library
libTreeFitter.so
- Required Parameters
- particleList (str)
Type::[string]. Input mother of the decay tree to fit. For example ‘B0:myB0particleList’.
- Parameters
- autoSetGeoConstraintAndMergeVertices (bool, default=True)
Type::bool, shall vertices of strong resonance be merged with their mothers? Can the particles vertex be constraint geometrically?
- confidenceLevel (float, default=0.0)
Type::[double]. Confidence level to accept fitted decay tree. Candidates with < confidenceLevel will be removed from the particle list! Typical Values: -1: keep all particle candidates, 0: remove all that fail the fit, 0.001: standard cut, 0.1: (too) tight cut. Optimise using a figure of merit (for example S/(sqrt{S+B}) ) for your analysis.
- convergencePrecision (float, default=0.01)
Type::[double]. Fractional upper limit for chi2 fluctuations to accept result. Larger value = less signal rejection but also less background rejection. Optimized for FOM on different topologies - don’t touch unless you REALLY want this.
- customOriginConstraint (bool, default=False)
Type::[bool]. Use a custom vertex as the production point of the highest hierarchy particle (register this as the mother of the list you specify). Like the beam constraint but you can specify the position its covariance yourself.
- customOriginCovariance (list(float), default=[0.0048, 0.0, 0.0, 0.0, 0.003567, 0.0, 0.0, 0.0, 0.04])
Type::[double]. List vertex covariance elements used in the custom origin constraint (as a vector). Default is meant for B0 decays and is taken from 100k generated B0 to mumu events.
- customOriginVertex (list(float), default=[0.001, 0.0, 0.0116])
Type::[double]. List of vertex coordinates to be used in the custom origin constraint.
- expertMassConstraintType (int, default=0)
Type::[int]. False(0): use particles parameters in mass constraint; True: use sum of daughter parameters for mass constraint. WAARNING not even guaranteed that it works.
- expertRemoveConstraintList (list(str), default=[])
Type::[string]. List of constraints that you do not want to be used in the fit. WARNING don’t use if you don’t know exactly what it does.
- expertUseReferencing (bool, default=True)
Type::[bool]. Use the Extended Kalman Filter. This implementation linearises around the previous state vector which gives smoother convergence.
- geoConstraintList (list(int), default=[])
Type::[int], if ‘autoSetGeoConstraintAndMergeVertices==False’ you can manually set the particles that will be geometrically constrained here.
- inflationFactorCovZ (int, default=1)
Inflate the covariance of the beamspot by this number so that the 3d beam constraint becomes weaker in Z.And: thisnumber->infinity : dim(beamspot constr) 3d->2d.
- ipConstraint (bool, default=False)
Type::[bool]. Use the IP as the origin of the tree. This registers an internal IP particle as the mother of the list you give. Or in other words forces the PRODUCTION vertex of your particle to be the IP and its covariance as specified in the database.
- massConstraintList (list(int), default=[])
Type::[int]. List of particles to mass constrain with int = pdg code. Note that the variables ‘M’: fit result for the particle and ‘InvM’: calculated from the daughter momenta, will look different (especially if you don’t update the daughters!).
- massConstraintListParticlename (list(str), default=[])
Type::[string]. List of particles to mass constrain with string = particle name.
- originDimension (int, default=3)
Type int, default 3. If origin or ip constraint used, specify the dimension of the constraint 3->x,y,z; 2->x,y. This also changes the dimension of the geometric constraints! So you might want to turn them off for some particles. (That means turn auto off and manually on for the ones you want to constrain)
- sharedVertexList (list(int), default=[])
Type::[int], if ‘autoSetGeoConstraintAndMergeVertices==False’ you can manually set the particles that share the vertex with their mother here.
- updateAllDaughters (bool, default=False)
Type::[bool]. Update all daughters (vertex position and momenta) in the tree. If not set only the 4-momenta for the head of the tree will be updated. We also update the vertex position of the daughters regardless of what you put here, because otherwise the default when the particle list is created is {0,0,0}.
- V0DaughterMassUpdater¶
This module replaces the mass of two daughters of the selected V0 particles inside the given particleLists with masses of given pdgCode. The particle in selected particleList has to have 2 daughters.
- Package
analysis
- Library
libV0DaughterMassUpdater.so
- Parameters
- particleLists (list(str), default=[])
List of ParticleLists
- pdgCodeOfV0negDaughter (int, default=11)
PDG code of daughter with negative charge
- pdgCodeOfV0posDaughter (int, default=11)
PDG code of daughter with positive charge
- VariableToReturnValue¶
Calculate event-based variable specified by the user and sets return value of the module accordingly.
- Package
analysis
- Library
libVariableToReturnValue.so
- Parameters
- variable (str, default=’’)
Variable taken from Variable::Manager, see output of ‘basf2 variables.py’.
- VariablesToEventBasedTree¶
Calculate variables specified by the user for a given ParticleList and save them into a TTree. The Tree is event-based, meaning that the variables of each candidate for each event are saved in an array of a branch of the Tree.
- Package
analysis
- Library
libVariablesToEventBasedTree.so
- Parameters
- event_variables (list(str), default=[])
List of variables (or collections) to save for each event. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector. Only event-based variables are allowed here.
- fileName (str, default=’VariablesToEventBasedTree.root’)
Name of ROOT file for output.
- maxCandidates (unsigned int, default=100)
The maximum number of candidates in the ParticleList per entry of the Tree.
- particleList (str, default=’’)
Name of particle list with reconstructed particles. An empty ParticleList is not supported. Use the VariablesToNtupleModule for this use-case
- sampling (tuple(str, dict(int -> unsigned int)), default=(‘’, {}))
Tuple of variable name and a map of integer values and inverse sampling rate. E.g. (signal, {1: 0, 0:10}) selects all signal events and every 10th background event. Variable must be event-based.
- treeName (str, default=’tree’)
Name of the NTuple in the saved file.
- variables (list(str), default=[])
List of variables (or collections) to save for each candidate. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.
- VariablesToEventExtraInfo¶
For each particle in the input list the selected variables are saved in an event-extra-info field with the given name. Can be used to save MC truth information, for example, in a ntuple of reconstructed particles.
- Package
analysis
- Library
libVariablesToEventExtraInfo.so
- Required Parameters
- particleList (str)
Name of particle list with reconstructed particles.
- Parameters
- overwrite (int, default=0)
-1/0/1/2: Overwrite if lower / don’t overwrite / overwrite if higher / always overwrite, in case if extra info with given name already exists
- variables (dict(str -> str), default={})
Dictionary of variables and extraInfo names to save in the event-extra-info field. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.
- VariablesToExtraInfo¶
For each particle in the input list the selected variables are saved in an extra-info field with the given name. Can be used when wanting to save variables before modifying them, e.g. when performing vertex fits.
- Package
analysis
- Library
libVariablesToExtraInfo.so
- Required Parameters
- particleList (str)
Name of particle list with reconstructed particles.
- Parameters
- decayString (str, default=’’)
DecayString specifying the daughter Particle to be included in the ParticleList
- overwrite (int, default=0)
-1/0/1/2: Overwrite if lower / don’t overwrite / overwrite if higher / always overwrite, in case if extra info with given name already exists
- variables (dict(str -> str), default={})
Dictionary of variables and extraInfo names to save in the extra-info field. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.
- VariablesToHistogram¶
Calculate variables specified by the user for a given ParticleList and save them into one or two dimensional histograms.
- Package
analysis
- Library
libVariablesToHistogram.so
- Parameters
- directory (str, default=’’)
Directory for all histograms inside the file to allow for histograms from multiple particlelists in the same file without conflicts
- fileName (str, default=’VariablesToHistogram.root’)
Name of ROOT file for output.
- particleList (str, default=’’)
Name of particle list with reconstructed particles. If no list is provided the variables are saved once per event (only possible for event-type variables)
- variables (list(tuple(str, int, float, float)), default=[])
List of variables to save. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.
- variables_2d (list(tuple(str, int, float, float, str, int, float, float)), default=[])
List of variable pairs to save. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.
- VariablesToNtuple¶
Calculate variables specified by the user for a given ParticleList and save them into a TNtuple. The TNtuple is candidate-based, meaning that the variables of each candidate are saved separate rows.
- Package
analysis
- Library
libVariablesToNtuple.so
- Parameters
- fileName (str, default=’VariablesToNtuple.root’)
Name of ROOT file for output.
- particleList (str, default=’’)
Name of particle list with reconstructed particles. If no list is provided the variables are saved once per event (only possible for event-type variables)
- sampling (tuple(str, dict(int -> unsigned int)), default=(‘’, {}))
Tuple of variable name and a map of integer values and inverse sampling rate. E.g. (signal, {1: 0, 0:10}) selects all signal candidates and every 10th background candidate.
- treeName (str, default=’ntuple’)
Name of the NTuple in the saved file.
- variables (list(str), default=[])
List of variables (or collections) to save. Variables are taken from Variable::Manager, and are identical to those available to e.g. ParticleSelector.