Belle II Software development
MCTrackCandClassifierModule Class Reference

The MCTrackCandClassifier Definition Module. More...

#include <MCTrackCandClassifierModule.h>

Inheritance diagram for MCTrackCandClassifierModule:
Module PathElement

Public Types

enum  EModulePropFlags {
  c_Input = 1 ,
  c_Output = 2 ,
  c_ParallelProcessingCertified = 4 ,
  c_HistogramManager = 8 ,
  c_InternalSerializer = 16 ,
  c_TerminateInAllProcesses = 32 ,
  c_DontCollectStatistics = 64
}
 Each module can be tagged with property flags, which indicate certain features of the module. More...
 
typedef ModuleCondition::EAfterConditionPath EAfterConditionPath
 Forward the EAfterConditionPath definition from the ModuleCondition.
 

Public Member Functions

 MCTrackCandClassifierModule ()
 Constructor of the module.
 
void initialize () override
 Initializes the Module.
 
void beginRun () override
 Begin run.
 
void event () override
 Event function.
 
void endRun () override
 End run.
 
void terminate () override
 Termination action.
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules.
 
const std::string & getName () const
 Returns the name of the module.
 
const std::string & getType () const
 Returns the type of the module (i.e.
 
const std::string & getPackage () const
 Returns the package this module is in.
 
const std::string & getDescription () const
 Returns the description of the module.
 
void setName (const std::string &name)
 Set the name of the module.
 
void setPropertyFlags (unsigned int propertyFlags)
 Sets the flags for the module properties.
 
LogConfiggetLogConfig ()
 Returns the log system configuration.
 
void setLogConfig (const LogConfig &logConfig)
 Set the log system configuration.
 
void setLogLevel (int logLevel)
 Configure the log level.
 
void setDebugLevel (int debugLevel)
 Configure the debug messaging level.
 
void setAbortLevel (int abortLevel)
 Configure the abort log level.
 
void setLogInfo (int logLevel, unsigned int logInfo)
 Configure the printed log information for the given level.
 
void if_value (const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 Add a condition to the module.
 
void if_false (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to add a condition to the module.
 
void if_true (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to set the condition of the module.
 
bool hasCondition () const
 Returns true if at least one condition was set for the module.
 
const ModuleConditiongetCondition () const
 Return a pointer to the first condition (or nullptr, if none was set)
 
const std::vector< ModuleCondition > & getAllConditions () const
 Return all set conditions for this module.
 
bool evalCondition () const
 If at least one condition was set, it is evaluated and true returned if at least one condition returns true.
 
std::shared_ptr< PathgetConditionPath () const
 Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).
 
Module::EAfterConditionPath getAfterConditionPath () const
 What to do after the conditional path is finished.
 
std::vector< std::shared_ptr< Path > > getAllConditionPaths () const
 Return all condition paths currently set (no matter if the condition is true or not).
 
bool hasProperties (unsigned int propertyFlags) const
 Returns true if all specified property flags are available in this module.
 
bool hasUnsetForcedParams () const
 Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.
 
const ModuleParamListgetParamList () const
 Return module param list.
 
template<typename T>
ModuleParam< T > & getParam (const std::string &name) const
 Returns a reference to a parameter.
 
bool hasReturnValue () const
 Return true if this module has a valid return value set.
 
int getReturnValue () const
 Return the return value set by this module.
 
std::shared_ptr< PathElementclone () const override
 Create an independent copy of this module.
 
std::shared_ptr< boost::python::list > getParamInfoListPython () const
 Returns a python list of all parameters.
 

Static Public Member Functions

static void exposePythonAPI ()
 Exposes methods of the Module class to Python.
 

Protected Member Functions

virtual void def_initialize ()
 Wrappers to make the methods without "def_" prefix callable from Python.
 
virtual void def_beginRun ()
 Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.
 
virtual void def_event ()
 Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.
 
virtual void def_endRun ()
 This method can receive that the current run ends as a call from the Python side.
 
virtual void def_terminate ()
 Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.
 
void setDescription (const std::string &description)
 Sets the description of the module.
 
void setType (const std::string &type)
 Set the module type.
 
template<typename T>
void addParam (const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
 Adds a new parameter to the module.
 
template<typename T>
void addParam (const std::string &name, T &paramVariable, const std::string &description)
 Adds a new enforced parameter to the module.
 
void setReturnValue (int value)
 Sets the return value for this module as integer.
 
void setReturnValue (bool value)
 Sets the return value for this module as bool.
 
void setParamList (const ModuleParamList &params)
 Replace existing parameter list.
 

Protected Attributes

std::string m_mcTrackCandsColName
 TrackCand list name.
 
std::string m_mcParticlesName
 MCParticle list name.
 
std::string m_rootFileName
 root file name
 
int m_nSigma
 nSigma dR
 
bool m_usePXD
 Whether to use PXD.
 
bool m_applyAnnulus
 Whether to require that the hit is in the expected annulus.
 
bool m_applySemiplane
 Whether to require that the hit is in the expected semiplane.
 
bool m_applyLap
 Whether to require that the hit belongs to the first lap in the transverse plane.
 
bool m_applyWedge
 Whether to require that the hit belong to the barrel part of the SVD.
 
bool m_removeBadHits
 Whether to remove the clusters that do not satisfy the criteria from the idealMCTrackCands.
 
int m_minHit
 Minimum number of 1D Clusters to classify the MCTrackCand as ideal.
 
double m_fraction
 Fraction of lap.
 
int nWedge = 0
 Counter for hits on wedged sensors.
 
int nBarrel = 0
 Counter for hits on barrel sensors.
 
TFile * m_rootFilePtr = nullptr
 Pointer to root file used for storing histograms.
 
TList * m_histoList = nullptr
 List of histograms.
 
TH3F * m_h3_MCParticle = nullptr
 Histogram.
 
TH3F * m_h3_idealMCTrackCand = nullptr
 Histogram.
 
TH3F * m_h3_MCTrackCand = nullptr
 Histogram.
 
TH1F * m_h1_thetaMS_SVD = nullptr
 Histogram.
 
TH1F * m_h1_thetaMS_PXD = nullptr
 Histogram.
 
TH1F * m_h1_dR = nullptr
 Histogram.
 
TH1F * m_h1_dRoverR = nullptr
 Histogram.
 
TH1F * m_h1_distOVERdR = nullptr
 Histogram.
 
TH1F * m_h1_hitRadius_accepted = nullptr
 Histogram.
 
TH1F * m_h1_hitRadius_rejected = nullptr
 Histogram.
 
TH1F * m_h1_hitDistance_accepted = nullptr
 Histogram.
 
TH1F * m_h1_hitDistance_rejected = nullptr
 Histogram.
 
TH1F * m_h1_MCTrackCandNhits = nullptr
 Histogram.
 
TH1F * m_h1_firstRejectedHit = nullptr
 Histogram.
 
TH1F * m_h1_firstRejectedOVERMCHit = nullptr
 Histogram.
 
TH1F * m_h1_lapTime = nullptr
 Histogram.
 
TH1F * m_h1_timeDifference = nullptr
 Histogram.
 
TH1F * m_h1_diffOVERlap = nullptr
 Histogram.
 
TH1F * m_h1_nGoodTrueHits = nullptr
 Histogram.
 
TH1F * m_h1_nBadTrueHits = nullptr
 Histogram.
 
TH1F * m_h1_nGood1dInfo = nullptr
 Histogram.
 
TH1F * m_h1_nBad1dInfo = nullptr
 Histogram.
 

Private Member Functions

double semiPlane (ROOT::Math::XYZVector vertex, ROOT::Math::XYZVector center, ROOT::Math::XYZVector hit)
 Function to get semiplane.
 
bool isInSemiPlane (double semiPlane, double omega)
 Function to check if a omega value is in a given semiPlane.
 
double theDistance (ROOT::Math::XYZVector center, ROOT::Math::XYZVector hit)
 Get distance between two points.
 
bool isInAnnulus (double hitDistance, double R, double dR)
 Function to check if hitDistance is within a given annulus.
 
bool isFirstLap (double FirstHitTime, double HitTime, double LapTime)
 Function to check if a hitTime is within a given lapTime, under consideration of m_fraction and with respect to first hit.
 
TH3F * createHistogram3D (const char *name, const char *title, Int_t nbinsX, Double_t minX, Double_t maxX, const char *titleX, Int_t nbinsY, Double_t minY, Double_t maxY, const char *titleY, Int_t nbinsZ, Double_t minZ, Double_t maxZ, const char *titleZ, TList *histoList=nullptr)
 Create a 3D ROOT Histogram.
 
TH3F * createHistogram3D (const char *name, const char *title, Int_t nbinsX, Double_t *binsX, const char *titleX, Int_t nbinsY, Double_t *binsY, const char *titleY, Int_t nbinsZ, Double_t *binsZ, const char *titleZ, TList *histoList=nullptr)
 Create a 3D ROOT Histogram.
 
TH1 * duplicateHistogram (const char *newname, const char *newtitle, TH1 *h, TList *histoList=nullptr)
 Function to clone a histogram.
 
TH1F * createHistogramsRatio (const char *name, const char *title, TH1 *hNum, TH1 *hDen, bool isEffPlot, int axisRef)
 Function to create a ratio histogram from two histograms.
 
void addEfficiencyPlots (TList *graphList=nullptr)
 Function to create efficiency plots and add them to list.
 
void addInefficiencyPlots (TList *graphList=nullptr)
 Function to create inefficiency plots and add them to list.
 
float compute_dR (double thetaMS, double omega)
 Calculate dR.
 
float compute_thetaMS (MCParticleInfo &mcParticleInfo, VXDTrueHit *aTrueHit)
 Calculate thetaMS.
 
std::list< ModulePtrgetModules () const override
 no submodules, return empty list
 
std::string getPathString () const override
 return the module name.
 
void setParamPython (const std::string &name, const boost::python::object &pyObj)
 Implements a method for setting boost::python objects.
 
void setParamPythonDict (const boost::python::dict &dictionary)
 Implements a method for reading the parameter values from a boost::python dictionary.
 

Private Attributes

StoreArray< PXDClusterm_PXDClusters
 PXDClusters StoreArray.
 
StoreArray< SVDClusterm_SVDClusters
 SVDClusters StoreArray.
 
StoreArray< MCParticlem_MCParticles
 MCParticles StoreArray.
 
StoreArray< genfit::TrackCand > m_GenfitMCTrackCands
 MC Genfit TrackCands StoreArray.
 
StoreArray< genfit::TrackCand > m_GenfitIdealMCTrackCands
 Ideal Genfit TrackCands StoreArray.
 
ROOT::Math::XYZVector m_magField
 magnetic field needed set particle info
 
std::string m_name
 The name of the module, saved as a string (user-modifiable)
 
std::string m_type
 The type of the module, saved as a string.
 
std::string m_package
 Package this module is found in (may be empty).
 
std::string m_description
 The description of the module.
 
unsigned int m_propertyFlags
 The properties of the module as bitwise or (with |) of EModulePropFlags.
 
LogConfig m_logConfig
 The log system configuration of the module.
 
ModuleParamList m_moduleParamList
 List storing and managing all parameter of the module.
 
bool m_hasReturnValue
 True, if the return value is set.
 
int m_returnValue
 The return value.
 
std::vector< ModuleConditionm_conditions
 Module condition, only non-null if set.
 

Detailed Description

The MCTrackCandClassifier Definition Module.

this module classifies the MCTrackCands in

  • idealMCTrackCands: MCTrackCand
  • fineMCTrackCands (not produced yet)
  • nastyMCTrackCands (not produced yet) on the basis of their properties in order to study the inefficiencies of the pattern recognition and the fitter

Definition at line 42 of file MCTrackCandClassifierModule.h.

Member Typedef Documentation

◆ EAfterConditionPath

Forward the EAfterConditionPath definition from the ModuleCondition.

Definition at line 88 of file Module.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

Each module can be tagged with property flags, which indicate certain features of the module.

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)

c_HistogramManager 

This module is used to manage histograms accumulated by other modules.

c_InternalSerializer 

This module is an internal serializer/deserializer for parallel processing.

c_TerminateInAllProcesses 

When using parallel processing, call this module's terminate() function in all processes().

This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

77 {
78 c_Input = 1,
79 c_Output = 2,
80 c_ParallelProcessingCertified = 4,
81 c_HistogramManager = 8,
82 c_InternalSerializer = 16,
83 c_TerminateInAllProcesses = 32,
84 c_DontCollectStatistics = 64,
85 };
@ c_Output
Output Process.
Definition ProcHelper.h:19
@ c_Input
Input Process.
Definition ProcHelper.h:17

Constructor & Destructor Documentation

◆ MCTrackCandClassifierModule()

Constructor of the module.

Implementation.

Definition at line 28 of file MCTrackCandClassifierModule.cc.

28 : Module()
29 , m_rootFilePtr(nullptr)
30{
31 //Set module properties
32 setDescription("This module is meant to classify the MCTrackCands as either ideal, fine and nasty");
34
35 addParam("MCParticlesName", m_mcParticlesName,
36 "Name of MC Particle collection.",
37 std::string(""));
38
39 addParam("MCTrackCandCollName", m_mcTrackCandsColName,
40 "Name of the input collection of MC track candidates",
41 std::string(""));
42
43 addParam("rootFileName", m_rootFileName,
44 "Name of the root file",
45 std::string("MCTrackCandClassifier.root"));
46
47 addParam("isInAnnulusCriterium", m_applyAnnulus,
48 "Require that the hit is in the expected annulus",
49 bool(true));
50 addParam("isInSemiplaneCriterium", m_applySemiplane,
51 "Require that the hit is in the expected semiplane",
52 bool(true));
53 addParam("isInFirstLapCriterium", m_applyLap,
54 "Require that the hit belong to the first lap in the transverse plane",
55 bool(true));
56 addParam("isInWedgePartCriterium", m_applyWedge,
57 "Require that the hit belong to the barrel part of the SVD",
58 bool(true));
59 addParam("removeBadHits", m_removeBadHits,
60 "Remove the clusters that do not satisfy the criteria from the idealMCTrackCands",
61 bool(true));
62
63 addParam("minNhits", m_minHit,
64 "Minimum number of 1D Clusters to classify the MCTrackCand as ideal",
65 int(5));
66
67 addParam("nSigma_dR", m_nSigma, "n sigma dR", int(3));
68
69 addParam("lapFraction", m_fraction, "Fraction of lap", double(1));
70
71 addParam("usePXD", m_usePXD, "Use the PXD or not", bool(true));
72}
bool m_applySemiplane
Whether to require that the hit is in the expected semiplane.
bool m_applyWedge
Whether to require that the hit belong to the barrel part of the SVD.
std::string m_mcParticlesName
MCParticle list name.
bool m_applyLap
Whether to require that the hit belongs to the first lap in the transverse plane.
TFile * m_rootFilePtr
Pointer to root file used for storing histograms.
bool m_applyAnnulus
Whether to require that the hit is in the expected annulus.
std::string m_mcTrackCandsColName
TrackCand list name.
bool m_removeBadHits
Whether to remove the clusters that do not satisfy the criteria from the idealMCTrackCands.
int m_minHit
Minimum number of 1D Clusters to classify the MCTrackCand as ideal.
void setDescription(const std::string &description)
Sets the description of the module.
Definition Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition Module.cc:208
Module()
Constructor.
Definition Module.cc:30
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition Module.h:80
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition Module.h:559

Member Function Documentation

◆ addEfficiencyPlots()

void addEfficiencyPlots ( TList * graphList = nullptr)
private

Function to create efficiency plots and add them to list.

Parameters
graphListpointer to list to add the plots to

Definition at line 657 of file MCTrackCandClassifierModule.cc.

658{
659 //normalized to MCTrackCands
660 TH1F* h_effMCTC_pt = createHistogramsRatio("heffMCTCpt", "fraction of idealMCTrackCand VS pt", m_h3_idealMCTrackCand,
661 m_h3_MCTrackCand, true, 0);
662 histoList->Add(h_effMCTC_pt);
663
664 TH1F* h_effMCTC_theta = createHistogramsRatio("heffMCTCtheta", "fraction of idealMCTrackCandVS #lambda", m_h3_idealMCTrackCand,
665 m_h3_MCTrackCand, true, 1);
666 histoList->Add(h_effMCTC_theta);
667
668 TH1F* h_effMCTC_phi = createHistogramsRatio("heffMCTCphi", "fraction of idealMCTrackCand VS #phi", m_h3_idealMCTrackCand,
669 m_h3_MCTrackCand, true, 2);
670 histoList->Add(h_effMCTC_phi);
671}
TH1F * createHistogramsRatio(const char *name, const char *title, TH1 *hNum, TH1 *hDen, bool isEffPlot, int axisRef)
Function to create a ratio histogram from two histograms.

◆ addInefficiencyPlots()

void addInefficiencyPlots ( TList * graphList = nullptr)
private

Function to create inefficiency plots and add them to list.

Parameters
graphListpointer to list to add the plots to

Definition at line 674 of file MCTrackCandClassifierModule.cc.

675{
676 //normalized to MCTrackCands
677 TH1F* h_ineffMCTC_pt = createHistogramsRatio("hineffMCTCpt", "1 - fraction of idealMCTrackCand VS pt", m_h3_idealMCTrackCand,
678 m_h3_MCTrackCand, false, 0);
679 histoList->Add(h_ineffMCTC_pt);
680
681 TH1F* h_ineffMCTC_theta = createHistogramsRatio("hineffMCTCtheta", "1 - fraction of idealMCTrackCandVS #lambda",
683 histoList->Add(h_ineffMCTC_theta);
684
685 TH1F* h_ineffMCTC_phi = createHistogramsRatio("hineffMCTCphi", "1 - fraction of idealMCTrackCand VS #phi", m_h3_idealMCTrackCand,
686 m_h3_MCTrackCand, false, 2);
687 histoList->Add(h_ineffMCTC_phi);
688}

◆ beginRun()

void beginRun ( void )
overridevirtual

Begin run.

Reimplemented from Module.

Definition at line 194 of file MCTrackCandClassifierModule.cc.

195{
196 nWedge = 0;
197 nBarrel = 0;
198
200}
ROOT::Math::XYZVector m_magField
magnetic field needed set particle info
int nWedge
Counter for hits on wedged sensors.
int nBarrel
Counter for hits on barrel sensors.
static const double T
[tesla]
Definition Unit.h:120
static void getField(const double *pos, double *field)
return the magnetic field at a given position.

◆ clone()

std::shared_ptr< PathElement > clone ( ) const
overridevirtualinherited

Create an independent copy of this module.

Note that parameters are shared, so changing them on a cloned module will also affect the original module.

Implements PathElement.

Definition at line 179 of file Module.cc.

180{
183 newModule->setName(getName());
184 newModule->m_package = m_package;
185 newModule->m_propertyFlags = m_propertyFlags;
186 newModule->m_logConfig = m_logConfig;
187 newModule->m_conditions = m_conditions;
188
189 return newModule;
190}
std::shared_ptr< Module > registerModule(const std::string &moduleName, std::string sharedLibPath="") noexcept(false)
Creates an instance of a module and registers it to the ModuleManager.
static ModuleManager & Instance()
Exception is thrown if the requested module could not be created by the ModuleManager.
void setParameters(const ModuleParamList &params)
Set values for parameters from other parameter list.
const ModuleParamList & getParamList() const
Return module param list.
Definition Module.h:362
const std::string & getName() const
Returns the name of the module.
Definition Module.h:186
const std::string & getType() const
Returns the type of the module (i.e.
Definition Module.cc:41
unsigned int m_propertyFlags
The properties of the module as bitwise or (with |) of EModulePropFlags.
Definition Module.h:511
ModuleParamList m_moduleParamList
List storing and managing all parameter of the module.
Definition Module.h:515
void setName(const std::string &name)
Set the name of the module.
Definition Module.h:213
LogConfig m_logConfig
The log system configuration of the module.
Definition Module.h:513
std::vector< ModuleCondition > m_conditions
Module condition, only non-null if set.
Definition Module.h:520
std::string m_package
Package this module is found in (may be empty).
Definition Module.h:509
std::shared_ptr< Module > ModulePtr
Defines a pointer to a module object as a boost shared pointer.
Definition Module.h:43

◆ compute_dR()

float compute_dR ( double thetaMS,
double omega )
private

Calculate dR.

Parameters
thetaMSthetaMS of a hit
omegaomega value
Returns
dR value

Definition at line 797 of file MCTrackCandClassifierModule.cc.

798{
799 double dL;
800 if (hitDistance < 1.8) //L1
801 dL = 0.4;
802 else if (hitDistance < 3) //L2
803 dL = 0.8;
804 else if (hitDistance < 5) //L3
805 dL = 1.6;
806 else if (hitDistance < 9) //L4
807 dL = 4.2;
808 else if (hitDistance < 12) //L5
809 dL = 2.4;
810 else dL = 3.1;
811
812 if ((hitDistance < 3) && (hitDistance > 1.2))
813 thetaMS = thetaMS / 2;
814
815 double dR = m_nSigma * dL * thetaMS;
816
817 return dR;
818};

◆ compute_thetaMS()

float compute_thetaMS ( MCParticleInfo & mcParticleInfo,
VXDTrueHit * aTrueHit )
private

Calculate thetaMS.

Parameters
mcParticleInfomcParticleInfo object
aTrueHitpointer to vxd true hit
Returns
thetaMS value

Definition at line 821 of file MCTrackCandClassifierModule.cc.

822{
823 // double thetaMS = 0.0136 * 14 * sqrt(0.008); //SVD, PXD is half of it
824 double thetaMS = 0.0136 * 14; //SVD, PXD is half of it
825
826 double p = mcParticleInfo.getP();
827 // double pt = mcParticleInfo.getPt();
828 double E = mcParticleInfo.getEnergy();
829
830 double X = sqrt(pow(aTrueHit->getEntryU() - aTrueHit->getExitU(), 2) +
831 pow(aTrueHit->getEntryV() - aTrueHit->getExitV(), 2) +
832 pow(aTrueHit->getEntryW() - aTrueHit->getExitW(), 2));
833
834 double X0 = 21.82; // g cm-2
835 double rho = 2.329; // g cm-3
836 thetaMS = thetaMS / (p * p / E) * sqrt(X / X0 * rho);
837
838 return thetaMS;
839};
R E
internal precision of FFTW codelets
double getEnergy()
Getter for energy.
double getP()
Getter for magnitut of momentum.
float getEntryU() const
Return local u coordinate of hit when entering silicon.
Definition VXDTrueHit.h:80
float getExitW() const
Return local w coordinate of hit at the endpoint of the track.
Definition VXDTrueHit.h:90
float getEntryW() const
Return local w coordinate of the start point of the track.
Definition VXDTrueHit.h:84
float getExitU() const
Return local u coordinate of hit at the endpoint of the track.
Definition VXDTrueHit.h:86
float getExitV() const
Return local v coordinate of hit at the endpoint of the track.
Definition VXDTrueHit.h:88
float getEntryV() const
Return local v coordinate of the start point of the track.
Definition VXDTrueHit.h:82
double sqrt(double a)
sqrt for double
Definition beamHelpers.h:28

◆ createHistogram3D() [1/2]

TH3F * createHistogram3D ( const char * name,
const char * title,
Int_t nbinsX,
Double_t * binsX,
const char * titleX,
Int_t nbinsY,
Double_t * binsY,
const char * titleY,
Int_t nbinsZ,
Double_t * binsZ,
const char * titleZ,
TList * histoList = nullptr )
private

Create a 3D ROOT Histogram.

Parameters
namename of histogram
titletitle of histogram
nbinsXnumber of bins on x axis
binsXx bins
titleXx axis title
nbinsYnumber of bins on y axis
binsYy bins
titleYy axis title
nbinsZnumber of bins on z axis
binsZz bins
titleZz axis title
histoListlist of histograms to add this histogram to
Returns
the histogram

Definition at line 603 of file MCTrackCandClassifierModule.cc.

611{
612 TH3F* h = new TH3F(name, title, nbinsX, binsX, nbinsY, binsY, nbinsZ, binsZ);
613
614 h->GetXaxis()->SetTitle(titleX);
615 h->GetYaxis()->SetTitle(titleY);
616 h->GetZaxis()->SetTitle(titleZ);
617
618 if (histoList)
619 histoList->Add(h);
620
621 return h;
622}

◆ createHistogram3D() [2/2]

TH3F * createHistogram3D ( const char * name,
const char * title,
Int_t nbinsX,
Double_t minX,
Double_t maxX,
const char * titleX,
Int_t nbinsY,
Double_t minY,
Double_t maxY,
const char * titleY,
Int_t nbinsZ,
Double_t minZ,
Double_t maxZ,
const char * titleZ,
TList * histoList = nullptr )
private

Create a 3D ROOT Histogram.

Parameters
namename of histogram
titletitle of histogram
nbinsXnumber of bins on x axis
minXminimal x value
maxXmaximal x value
titleXx axis title
nbinsYnumber of bins on y axis
minYminimal y value
maxYmaximal y value
titleYy axis title
nbinsZnumber of bins on z axis
minZminimal z value
maxZmaximal z value
titleZz axis title
histoListlist of histograms to add this histogram to
Returns
the histogram

Definition at line 581 of file MCTrackCandClassifierModule.cc.

589{
590 TH3F* h = new TH3F(name, title, nbinsX, minX, maxX, nbinsY, minY, maxY, nbinsZ, minZ, maxZ);
591
592 h->GetXaxis()->SetTitle(titleX);
593 h->GetYaxis()->SetTitle(titleY);
594 h->GetZaxis()->SetTitle(titleZ);
595
596 if (histoList)
597 histoList->Add(h);
598
599 return h;
600}

◆ createHistogramsRatio()

TH1F * createHistogramsRatio ( const char * name,
const char * title,
TH1 * hNum,
TH1 * hDen,
bool isEffPlot,
int axisRef )
private

Function to create a ratio histogram from two histograms.

Parameters
namename of histogram
titletitle of histogram
hNumhistogram for the numerator of the ratio
hDenhistogram for the denominator of the ratio
isEffPlotif the result is a efficiency plot
axisRefreference axis to use. (x=0, y=1, z=2)
Returns
the histogram

Definition at line 691 of file MCTrackCandClassifierModule.cc.

694{
695 TH1F* h1den = dynamic_cast<TH1F*>(hDen);
696 TH1F* h1num = dynamic_cast<TH1F*>(hNum);
697 TH2F* h2den = dynamic_cast<TH2F*>(hDen);
698 TH2F* h2num = dynamic_cast<TH2F*>(hNum);
699 TH3F* h3den = dynamic_cast<TH3F*>(hDen);
700 TH3F* h3num = dynamic_cast<TH3F*>(hNum);
701
702 TH1* hden = nullptr;
703 TH1* hnum = nullptr;
704
705 if (h1den) {
706 hden = new TH1F(*h1den);
707 hnum = new TH1F(*h1num);
708 }
709 if (h2den) {
710 hden = new TH2F(*h2den);
711 hnum = new TH2F(*h2num);
712 }
713 if (h3den) {
714 hden = new TH3F(*h3den);
715 hnum = new TH3F(*h3num);
716 }
717
718 if (hden == nullptr or hnum == nullptr) {
719 B2ERROR("In function createHistogramsRatio: either hden or hnum are a nullptr. This shouldn't happen."\
720 "Don't continue creatio of histogram ratios in this case and return nullptr.");
721 return nullptr;
722 }
723
724 TAxis* the_axis;
725 TAxis* the_other1;
726 TAxis* the_other2;
727
728 if (axisRef == 0) {
729 the_axis = hden->GetXaxis();
730 the_other1 = hden->GetYaxis();
731 the_other2 = hden->GetZaxis();
732 } else if (axisRef == 1) {
733 the_axis = hden->GetYaxis();
734 the_other1 = hden->GetXaxis();
735 the_other2 = hden->GetZaxis();
736 } else if (axisRef == 2) {
737 the_axis = hden->GetZaxis();
738 the_other1 = hden->GetXaxis();
739 the_other2 = hden->GetYaxis();
740 } else
741 return nullptr;
742
743
744 TH1F* h;
745 if (the_axis->GetXbins()->GetSize())
746 h = new TH1F(name, title, the_axis->GetNbins(), (the_axis->GetXbins())->GetArray());
747 else
748 h = new TH1F(name, title, the_axis->GetNbins(), the_axis->GetXmin(), the_axis->GetXmax());
749 h->GetXaxis()->SetTitle(the_axis->GetTitle());
750
751 h->GetYaxis()->SetRangeUser(0.00001, 1);
752
753 Int_t bin = 0;
754
755 for (int the_bin = 1; the_bin < the_axis->GetNbins() + 1; the_bin++) {
756
757 double num = 0;
758 double den = 0 ;
759
760 for (int other1_bin = 1; other1_bin < the_other1->GetNbins() + 1; other1_bin++)
761 for (int other2_bin = 1; other2_bin < the_other2->GetNbins() + 1; other2_bin++) {
762
763 if (axisRef == 0) bin = hden->GetBin(the_bin, other1_bin, other2_bin);
764 else if (axisRef == 1) bin = hden->GetBin(other1_bin, the_bin, other2_bin);
765 else if (axisRef == 2) bin = hden->GetBin(other1_bin, other2_bin, the_bin);
766
767 if (hden->IsBinUnderflow(bin))
768 B2DEBUG(21, " bin = " << bin << "(" << the_bin << "," << other1_bin << "," << other2_bin << "), UNDERFLOW");
769 if (hden->IsBinOverflow(bin))
770 B2DEBUG(21, " bin = " << bin << "(" << the_bin << "," << other1_bin << "," << other2_bin << "), OVERFLOW");
771
772 num += hnum->GetBinContent(bin);
773 den += hden->GetBinContent(bin);
774 }
775 double eff = 0;
776 double err = 0;
777
778 if (den > 0) {
779 eff = (double)num / den;
780 err = sqrt(eff * (1 - eff)) / sqrt(den);
781 }
782
783 if (isEffPlot) {
784 h->SetBinContent(the_bin, eff);
785 h->SetBinError(the_bin, err);
786 } else {
787 h->SetBinContent(the_bin, 1 - eff);
788 h->SetBinError(the_bin, err);
789 }
790
791 }
792
793 return h;
794}

◆ def_beginRun()

virtual void def_beginRun ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 425 of file Module.h.

425{ beginRun(); }

◆ def_endRun()

virtual void def_endRun ( )
inlineprotectedvirtualinherited

This method can receive that the current run ends as a call from the Python side.

For regular C++-Modules that forwards the call to the regular endRun() method.

Reimplemented in PyModule.

Definition at line 438 of file Module.h.

438{ endRun(); }

◆ def_event()

virtual void def_event ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 431 of file Module.h.

431{ event(); }

◆ def_initialize()

virtual void def_initialize ( )
inlineprotectedvirtualinherited

Wrappers to make the methods without "def_" prefix callable from Python.

Overridden in PyModule. Wrapper method for the virtual function initialize() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 419 of file Module.h.

419{ initialize(); }

◆ def_terminate()

virtual void def_terminate ( )
inlineprotectedvirtualinherited

Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 444 of file Module.h.

444{ terminate(); }

◆ duplicateHistogram()

TH1 * duplicateHistogram ( const char * newname,
const char * newtitle,
TH1 * h,
TList * histoList = nullptr )
private

Function to clone a histogram.

Parameters
newnamenew histogram name
newtitlenew title
hhistogram to clone
histoListlist of histograms to add this histogram to
Returns
the duplicated histogram

Definition at line 625 of file MCTrackCandClassifierModule.cc.

627{
628 TH1F* h1 = dynamic_cast<TH1F*>(h);
629 TH2F* h2 = dynamic_cast<TH2F*>(h);
630 TH3F* h3 = dynamic_cast<TH3F*>(h);
631
632 TH1* newh = nullptr;
633
634 if (h1)
635 newh = new TH1F(*h1);
636 if (h2)
637 newh = new TH2F(*h2);
638 if (h3)
639 newh = new TH3F(*h3);
640
641 if (newh == nullptr) {
642 B2ERROR("In function duplicateHistogram: newh is a nullptr. This shouldn't happen."\
643 "Don't continue creation of duplicate histogram in this case and return nullptr.");
644 return nullptr;
645 }
646
647 newh->SetName(newname);
648 newh->SetTitle(newtitle);
649
650 if (histoList)
651 histoList->Add(newh);
652
653 return newh;
654}

◆ endRun()

void endRun ( void )
overridevirtual

End run.

Reimplemented from Module.

Definition at line 446 of file MCTrackCandClassifierModule.cc.

447{
448 B2INFO("** MCTrackCandClassifier parameters **");
449 B2INFO("rootfilename = " << m_rootFileName);
450 B2INFO("use PXD information = " << m_usePXD);
451 B2INFO("--> classification criteria:");
452 if (m_applyAnnulus)
453 B2INFO(" -) |d - R| < " << m_nSigma << " dL thetaMS");
455 B2INFO(" -) hit in the expected semiplane");
456 if (m_applyLap)
457 B2INFO(" -) HitTime < " << m_fraction << " lap time");
458 if (m_applyWedge)
459 B2INFO(" -) hit must be in the barrel part of the VXD");
460 B2INFO("");
461
462 double num = 0;
463 double den = 0;
464
465 num = m_h3_idealMCTrackCand->GetEntries();
466 den = m_h3_MCTrackCand->GetEntries();
467 double efficiency = num / den ;
468 double efficiencyErr = sqrt(efficiency * (1 - efficiency)) / sqrt(den);
469
470 B2INFO("");
471 B2INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
472 B2INFO("~ MCTrackCandClassifier ~ SHORT SUMMARY ~");
473 B2INFO("");
474 B2INFO(" + overall:");
475 B2INFO(" fraction of ideal MCTrackCands = (" << efficiency * 100 << " +/- " << efficiencyErr * 100 << ")% ");
476 B2INFO("");
477 B2INFO(" # idealMCTrackCand = " << num);
478 B2INFO(" # MCTrackCand = " << den);
479 B2INFO("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
480 B2INFO("");
481 B2DEBUG(21, " nWedge = " << nWedge);
482 B2DEBUG(21, " nBarrel = " << nBarrel);
483}

◆ evalCondition()

bool evalCondition ( ) const
inherited

If at least one condition was set, it is evaluated and true returned if at least one condition returns true.

If no condition or result value was defined, the method returns false. Otherwise, the condition is evaluated and true returned, if at least one condition returns true. To speed up the evaluation, the condition strings were already parsed in the method if_value().

Returns
True if at least one condition and return value exists and at least one condition expression was evaluated to true.

Definition at line 96 of file Module.cc.

97{
98 if (m_conditions.empty()) return false;
99
100 //okay, a condition was set for this Module...
101 if (!m_hasReturnValue) {
102 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
103 }
104
105 for (const auto& condition : m_conditions) {
106 if (condition.evaluate(m_returnValue)) {
107 return true;
108 }
109 }
110 return false;
111}
int m_returnValue
The return value.
Definition Module.h:518
bool m_hasReturnValue
True, if the return value is set.
Definition Module.h:517

◆ event()

void event ( void )
overridevirtual

Event function.

Reimplemented from Module.

Definition at line 203 of file MCTrackCandClassifierModule.cc.

204{
205 B2DEBUG(21, "+++++ 1. loop on MCTrackCands");
206
207 const VXD::GeoCache& aGeometry = VXD::GeoCache::getInstance();
208
209 //1.a retrieve the MCTrackCands
210 for (const genfit::TrackCand& mcTrackCand : m_GenfitMCTrackCands) {
211
212 int nGoodTrueHits = 0;
213 int nGood1Dinfo = 0;
214
215 B2DEBUG(21, " a NEW MCTrackCand ");
216
217 //1.b retrieve the MCParticle
218 RelationVector<MCParticle> MCParticles_fromMCTrackCand = DataStore::getRelationsWithObj<MCParticle>(&mcTrackCand);
219
220 B2DEBUG(21, "~~~ " << MCParticles_fromMCTrackCand.size() << " MCParticles related to this MCTrackCand");
221 for (int mcp = 0; mcp < (int)MCParticles_fromMCTrackCand.size(); mcp++) { //should be ONE
222
223 MCParticle mcParticle = *MCParticles_fromMCTrackCand[mcp];
224
225 B2DEBUG(21, " a NEW charged MC Particle, " << mcParticle.getIndex() << ", " << mcParticle.getPDG());
226
227 MCParticleInfo mcParticleInfo(mcParticle, m_magField);
228
229 B2Vector3D decayVertex = mcParticle.getProductionVertex();
230 ROOT::Math::XYZVector mom = mcParticle.getMomentum();
231 double charge = mcParticle.getCharge();
232 double omega = mcParticleInfo.getOmega();
233 double px = mom.x();
234 double py = mom.y();
235 double pt = mom.Rho();
236 double x = decayVertex.X();
237 double y = decayVertex.Y();
238 double R = 1 / std::abs(omega); //cm
239
240 m_h3_MCTrackCand->Fill(mcParticleInfo.getPt(), mcParticleInfo.getLambda(), mcParticleInfo.getPphi());
241
242 double alpha = R / pt * charge; //cm/GeV
243 double Cx = x + alpha * py; //cm
244 double Cy = y - alpha * px; //cm
245
246 ROOT::Math::XYZVector center(Cx, Cy, 0);
247
248 //recover Clusters and loop on them
249 int Nhits = mcTrackCand.getNHits();
250 m_h1_MCTrackCandNhits->Fill(Nhits);
251
252 int cluster = 0;
253 bool hasTrueHit = true;
254 bool isAccepted = true;
255 int firstRejectedHit = Nhits + 1;
256 double prevHitRadius = std::abs(1 / omega);
257
258 double lapTime = 2 * M_PI * mcParticle.getEnergy() / 0.299792 / m_magField.Z();
259 double FirstHitTime = -1;
260 double HitTime = -1;
261
262 bool isFirstSVDhit = true;
263
264 while (cluster < Nhits && isAccepted && hasTrueHit) {
265 int detId, hitId;
266 mcTrackCand.getHit(cluster, detId, hitId);
267
268 bool hasPXDCluster = false;
269 bool hasSVDuCluster = false;
270 bool hasSVDvCluster = false;
271
272 double uCoor = 0;
273 double vCoor = 0;
274 VxdID sensor = 0;
275
276 double thetaMS = 0;
277
278 if (detId == Const::PXD && m_usePXD) {
279
280 PXDCluster* aPXDCluster = m_PXDClusters[hitId];
281 RelationVector<PXDTrueHit> PXDTrueHit_fromPXDCluster = aPXDCluster->getRelationsWith<PXDTrueHit>();
282 if (PXDTrueHit_fromPXDCluster.size() == 0) {
283 B2WARNING("What's happening?!? no True Hit associated to the PXD Cluster");
284 hasTrueHit = false;
285 isAccepted = false;
286 continue;
287 }
288
289 PXDTrueHit* aPXDTrueHit = PXDTrueHit_fromPXDCluster[0];
290 thetaMS = compute_thetaMS(mcParticleInfo, aPXDTrueHit);
291 m_h1_thetaMS_PXD->Fill(thetaMS / 2 * 1000); //PXD
292
293 uCoor = aPXDTrueHit->getU();
294 vCoor = aPXDTrueHit->getV();
295 sensor = aPXDTrueHit->getSensorID();
296 if (cluster == 0) {
297 FirstHitTime = aPXDTrueHit->getGlobalTime();
298 HitTime = FirstHitTime;
299 } else
300 HitTime = aPXDTrueHit->getGlobalTime();
301
302 hasPXDCluster = true;
303 } else if (detId == Const::SVD) {
304 SVDCluster* aSVDCluster = m_SVDClusters[hitId];
305 RelationVector<SVDTrueHit> SVDTrueHit_fromSVDCluster = aSVDCluster->getRelationsWith<SVDTrueHit>();
306 if (SVDTrueHit_fromSVDCluster.size() == 0) {
307 B2WARNING("What's happening?!? no True Hit associated to the SVD Cluster");
308 hasTrueHit = false;
309 isAccepted = false;
310 continue;
311 }
312
313 SVDTrueHit* aSVDTrueHit = SVDTrueHit_fromSVDCluster[0];
314
315 thetaMS = compute_thetaMS(mcParticleInfo, aSVDTrueHit);
316 m_h1_thetaMS_SVD->Fill(thetaMS * 1000); //SVD
317
318 uCoor = aSVDTrueHit->getU();
319 vCoor = aSVDTrueHit->getV();
320 sensor = aSVDTrueHit->getSensorID();
321 if (isFirstSVDhit) {
322 FirstHitTime = aSVDTrueHit->getGlobalTime();
323 HitTime = FirstHitTime;
324 isFirstSVDhit = false;
325
326 } else
327 HitTime = aSVDTrueHit->getGlobalTime();
328 if (aSVDCluster->isUCluster())
329 hasSVDuCluster = true;
330 else
331 hasSVDvCluster = true;
332 } else {
333 cluster++;
334 continue;
335 }
336
337 const VXD::SensorInfoBase& aSensorInfo = aGeometry.getSensorInfo(sensor);
338 bool accepted4 = true;
339 if (m_applyWedge) {
340 if (aSensorInfo.getForwardWidth() != aSensorInfo.getBackwardWidth()) {
341 nWedge++;
342 accepted4 = false;
343 } else
344 nBarrel++;
345 }
346
347 ROOT::Math::XYZVector globalHit = aSensorInfo.pointToGlobal(ROOT::Math::XYZVector(uCoor, vCoor, 0), true);
348 double hitRadius = theDistance(center, globalHit);
349
350 bool accepted1 = true;
352 accepted1 = isInSemiPlane(semiPlane(decayVertex, center, globalHit), omega);
353
354 if (accepted1) {
355 B2DEBUG(21, " semiplane: ACCEPTED");
356 } else {
357 B2DEBUG(21, " semiplane: REJECTED, next track");
358 }
359
360 double dR = compute_dR(thetaMS, theDistance(ROOT::Math::XYZVector(0, 0, 0), globalHit));
361 m_h1_dR->Fill(dR);
362 m_h1_dRoverR->Fill(dR * std::abs(omega));
363 m_h1_distOVERdR->Fill((hitRadius - std::abs(1 / omega)) / dR);
364
365
366 bool accepted2 = true;
367 if (m_applyAnnulus)
368 accepted2 = isInAnnulus(hitRadius, prevHitRadius, dR);
369
370 prevHitRadius = hitRadius;
371
372 if (accepted2) {
373 B2DEBUG(21, " annulus: ACCEPTED");
374 } else {
375 B2DEBUG(21, " annulus: REJECTED, next track");
376 }
377
378 bool accepted3 = true;
379 if (m_applyLap)
380 accepted3 = isFirstLap(FirstHitTime, HitTime, lapTime);
381
382 if (accepted3) {
383 B2DEBUG(21, " lapTime: ACCEPTED");
384 } else {
385 B2DEBUG(21, " lapTime: REJECTED, next track");
386 }
387
388 if (accepted2 && accepted1 && accepted3 && accepted4) {
389 nGoodTrueHits ++;
390 m_h1_hitDistance_accepted->Fill(theDistance(ROOT::Math::XYZVector(0, 0, 0), globalHit));
391 m_h1_hitRadius_accepted->Fill(hitRadius);
392 } else {
393 m_h1_hitDistance_rejected->Fill(theDistance(ROOT::Math::XYZVector(0, 0, 0), globalHit));
394 m_h1_hitRadius_rejected->Fill(hitRadius);
395 if (m_removeBadHits)
396 firstRejectedHit = cluster;
397 isAccepted = false;
398 continue;
399 }
400
401 if (hasPXDCluster)
402 nGood1Dinfo = +2;
403 else {
404 if (hasSVDuCluster)
405 nGood1Dinfo++;
406 if (hasSVDvCluster)
407 nGood1Dinfo++;
408 }
409 if (hasPXDCluster || hasSVDuCluster || hasSVDvCluster)
410 B2DEBUG(21, "cluster: ACCEPTED (" << nGood1Dinfo << ")");
411
412 cluster++;
413 }//close loop on clusters
414
415 if (nGood1Dinfo >= m_minHit) {
416 B2DEBUG(21, " idealMCTrackCand FOUND!! " << nGood1Dinfo << " 1D infos (" << nGoodTrueHits << " good true hits)");
417 m_h3_idealMCTrackCand->Fill(mcParticleInfo.getPt(), mcParticleInfo.getLambda(), mcParticleInfo.getPphi());
418 m_h1_nGoodTrueHits->Fill(nGoodTrueHits);
419 m_h1_nGood1dInfo->Fill(nGood1Dinfo);
420
421 genfit::TrackCand* tmpTrackCand = new genfit::TrackCand(mcTrackCand);
422
423 if ((int)firstRejectedHit <= (int)mcTrackCand.getNHits()) {
424 tmpTrackCand->reset();
425 for (int hit = 0; hit < firstRejectedHit; hit++)
426 if (mcTrackCand.getHit(hit))
427 tmpTrackCand->addHit(mcTrackCand.getHit(hit));
428 tmpTrackCand->sortHits();
429 }
430 m_GenfitIdealMCTrackCands.appendNew(*tmpTrackCand);
431
432 m_h1_firstRejectedHit->Fill(tmpTrackCand->getNHits());
433 m_h1_firstRejectedOVERMCHit->Fill((float)tmpTrackCand->getNHits() / mcTrackCand.getNHits());
434 } else {
435 B2DEBUG(21, " too few good hits (" << nGood1Dinfo << ") to track this one ( vs " << nGoodTrueHits << " true hits)");
436 m_h1_nBadTrueHits->Fill(nGoodTrueHits);
437 m_h1_nBad1dInfo->Fill(nGood1Dinfo);
438 }
439
440 B2DEBUG(21, "");
441 }//close loop on MCParticles
442 }//close loop on MCTrackCands
443}
double R
typedef autogenerated by FFTW
DataType X() const
access variable X (= .at(0) without boundary check)
Definition B2Vector3.h:431
DataType Y() const
access variable Y (= .at(1) without boundary check)
Definition B2Vector3.h:433
static RelationVector< T > getRelationsWithObj(const TObject *object, const std::string &name="", const std::string &namedRelation="")
Get the relations between an object and other objects in a store array.
Definition DataStore.h:412
float getEnergy() const
Return particle energy in GeV.
Definition MCParticle.h:136
int getIndex() const
Get 1-based index of the particle in the corresponding MCParticle list.
Definition MCParticle.h:219
ROOT::Math::XYZVector getProductionVertex() const
Return production vertex position.
Definition MCParticle.h:178
float getCharge() const
Return the particle charge defined in TDatabasePDG.
Definition MCParticle.cc:36
int getPDG() const
Return PDG code of particle.
Definition MCParticle.h:101
ROOT::Math::XYZVector getMomentum() const
Return momentum.
Definition MCParticle.h:187
StoreArray< genfit::TrackCand > m_GenfitMCTrackCands
MC Genfit TrackCands StoreArray.
StoreArray< SVDCluster > m_SVDClusters
SVDClusters StoreArray.
bool isInAnnulus(double hitDistance, double R, double dR)
Function to check if hitDistance is within a given annulus.
float compute_thetaMS(MCParticleInfo &mcParticleInfo, VXDTrueHit *aTrueHit)
Calculate thetaMS.
StoreArray< genfit::TrackCand > m_GenfitIdealMCTrackCands
Ideal Genfit TrackCands StoreArray.
bool isFirstLap(double FirstHitTime, double HitTime, double LapTime)
Function to check if a hitTime is within a given lapTime, under consideration of m_fraction and with ...
StoreArray< PXDCluster > m_PXDClusters
PXDClusters StoreArray.
double semiPlane(ROOT::Math::XYZVector vertex, ROOT::Math::XYZVector center, ROOT::Math::XYZVector hit)
Function to get semiplane.
double theDistance(ROOT::Math::XYZVector center, ROOT::Math::XYZVector hit)
Get distance between two points.
bool isInSemiPlane(double semiPlane, double omega)
Function to check if a omega value is in a given semiPlane.
float compute_dR(double thetaMS, double omega)
Calculate dR.
size_t size() const
Get number of relations.
RelationVector< T > getRelationsWith(const std::string &name="", const std::string &namedRelation="") const
Get the relations between this object and another store array.
bool isUCluster() const
Get the direction of strips.
Definition SVDCluster.h:110
float getV() const
Return local v coordinate of hit.
Definition VXDTrueHit.h:76
float getGlobalTime() const
Return the time when the track reached its midpoint.
Definition VXDTrueHit.h:94
VxdID getSensorID() const
Return the Sensor ID.
Definition VXDTrueHit.h:70
float getU() const
Return local u coordinate of hit.
Definition VXDTrueHit.h:74
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a reference to the SensorInfo of a given SensorID.
Definition GeoCache.cc:67
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition GeoCache.cc:214
ROOT::Math::XYZVector pointToGlobal(const ROOT::Math::XYZVector &local, bool reco=false) const
Convert a point from local to global coordinates.
double getForwardWidth() const
Convenience Wrapper to return width at forward side.
double getBackwardWidth() const
Convenience Wrapper to return width at backward side.
B2Vector3< double > B2Vector3D
typedef for common usage with double
Definition B2Vector3.h:516
double charge(int pdgCode)
Returns electric charge of a particle with given pdg code.
Definition EvtPDLUtil.cc:44

◆ exposePythonAPI()

void exposePythonAPI ( )
staticinherited

Exposes methods of the Module class to Python.

Definition at line 325 of file Module.cc.

326{
327 // to avoid confusion between std::arg and boost::python::arg we want a shorthand namespace as well
328 namespace bp = boost::python;
329
330 docstring_options options(true, true, false); //userdef, py sigs, c++ sigs
331
332 void (Module::*setReturnValueInt)(int) = &Module::setReturnValue;
333
334 enum_<Module::EAfterConditionPath>("AfterConditionPath",
335 R"(Determines execution behaviour after a conditional path has been executed:
336
337.. attribute:: END
338
339 End processing of this path after the conditional path. (this is the default for if_value() etc.)
340
341.. attribute:: CONTINUE
342
343 After the conditional path, resume execution after this module.)")
344 .value("END", Module::EAfterConditionPath::c_End)
345 .value("CONTINUE", Module::EAfterConditionPath::c_Continue)
346 ;
347
348 /* Do not change the names of >, <, ... we use them to serialize conditional paths */
349 enum_<Belle2::ModuleCondition::EConditionOperators>("ConditionOperator")
356 ;
357
358 enum_<Module::EModulePropFlags>("ModulePropFlags",
359 R"(Flags to indicate certain low-level features of modules, see :func:`Module.set_property_flags()`, :func:`Module.has_properties()`. Most useful flags are:
360
361.. attribute:: PARALLELPROCESSINGCERTIFIED
362
363 This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)
364
365.. attribute:: HISTOGRAMMANAGER
366
367 This module is used to manage histograms accumulated by other modules
368
369.. attribute:: TERMINATEINALLPROCESSES
370
371 When using parallel processing, call this module's terminate() function in all processes. This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.
372)")
373 .value("INPUT", Module::EModulePropFlags::c_Input)
374 .value("OUTPUT", Module::EModulePropFlags::c_Output)
375 .value("PARALLELPROCESSINGCERTIFIED", Module::EModulePropFlags::c_ParallelProcessingCertified)
376 .value("HISTOGRAMMANAGER", Module::EModulePropFlags::c_HistogramManager)
377 .value("INTERNALSERIALIZER", Module::EModulePropFlags::c_InternalSerializer)
378 .value("TERMINATEINALLPROCESSES", Module::EModulePropFlags::c_TerminateInAllProcesses)
379 ;
380
381 //Python class definition
382 class_<Module, PyModule> module("Module", R"(
383Base class for Modules.
384
385A module is the smallest building block of the framework.
386A typical event processing chain consists of a Path containing
387modules. By inheriting from this base class, various types of
388modules can be created. To use a module, please refer to
389:func:`Path.add_module()`. A list of modules is available by running
390``basf2 -m`` or ``basf2 -m package``, detailed information on parameters is
391given by e.g. ``basf2 -m RootInput``.
392
393The 'Module Development' section in the manual provides detailed information
394on how to create modules, setting parameters, or using return values/conditions:
395https://xwiki.desy.de/xwiki/rest/p/f4fa4/#HModuleDevelopment
396
397)");
398 module
399 .def("__str__", &Module::getPathString)
400 .def("name", &Module::getName, return_value_policy<copy_const_reference>(),
401 "Returns the name of the module. Can be changed via :func:`set_name() <Module.set_name()>`, use :func:`type() <Module.type()>` for identifying a particular module class.")
402 .def("type", &Module::getType, return_value_policy<copy_const_reference>(),
403 "Returns the type of the module (i.e. class name minus 'Module')")
404 .def("set_name", &Module::setName, args("name"), R"(
405Set custom name, e.g. to distinguish multiple modules of the same type.
406
407>>> path.add_module('EventInfoSetter')
408>>> ro = path.add_module('RootOutput', branchNames=['EventMetaData'])
409>>> ro.set_name('RootOutput_metadata_only')
410>>> print(path)
411[EventInfoSetter -> RootOutput_metadata_only]
412
413)")
414 .def("description", &Module::getDescription, return_value_policy<copy_const_reference>(),
415 "Returns the description of this module.")
416 .def("package", &Module::getPackage, return_value_policy<copy_const_reference>(),
417 "Returns the package this module belongs to.")
418 .def("available_params", &_getParamInfoListPython,
419 "Return list of all module parameters as `ModuleParamInfo` instances")
420 .def("has_properties", &Module::hasProperties, (bp::arg("properties")),
421 R"DOCSTRING(Allows to check if the module has the given properties out of `ModulePropFlags` set.
422
423>>> if module.has_properties(ModulePropFlags.PARALLELPROCESSINGCERTIFIED):
424>>> ...
425
426Parameters:
427 properties (int): bitmask of `ModulePropFlags` to check for.
428)DOCSTRING")
429 .def("set_property_flags", &Module::setPropertyFlags, args("property_mask"),
430 "Set module properties in the form of an OR combination of `ModulePropFlags`.");
431 {
432 // python signature is too crowded, make ourselves
433 docstring_options subOptions(true, false, false); //userdef, py sigs, c++ sigs
434 module
435 .def("if_value", &Module::if_value,
436 (bp::arg("expression"), bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
437 R"DOCSTRING(if_value(expression, condition_path, after_condition_path=AfterConditionPath.END)
438
439Sets a conditional sub path which will be executed after this
440module if the return value set in the module passes the given ``expression``.
441
442Modules can define a return value (int or bool) using ``setReturnValue()``,
443which can be used in the steering file to split the Path based on this value, for example
444
445>>> module_with_condition.if_value("<1", another_path)
446
447In case the return value of the ``module_with_condition`` for a given event is
448less than 1, the execution will be diverted into ``another_path`` for this event.
449
450You could for example set a special return value if an error occurs, and divert
451the execution into a path containing :b2:mod:`RootOutput` if it is found;
452saving only the data producing/produced by the error.
453
454After a conditional path has executed, basf2 will by default stop processing
455the path for this event. This behaviour can be changed by setting the
456``after_condition_path`` argument.
457
458Parameters:
459 expression (str): Expression to determine if the conditional path should be executed.
460 This should be one of the comparison operators ``<``, ``>``, ``<=``,
461 ``>=``, ``==``, or ``!=`` followed by a numerical value for the return value
462 condition_path (Path): path to execute in case the expression is fulfilled
463 after_condition_path (AfterConditionPath): What to do once the ``condition_path`` has been executed.
464)DOCSTRING")
465 .def("if_false", &Module::if_false,
466 (bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
467 R"DOC(if_false(condition_path, after_condition_path=AfterConditionPath.END)
468
469Sets a conditional sub path which will be executed after this module if
470the return value of the module evaluates to False. This is equivalent to
471calling `if_value` with ``expression=\"<1\"``)DOC")
472 .def("if_true", &Module::if_true,
473 (bp::arg("condition_path"), bp::arg("after_condition_path")= Module::EAfterConditionPath::c_End),
474 R"DOC(if_true(condition_path, after_condition_path=AfterConditionPath.END)
475
476Sets a conditional sub path which will be executed after this module if
477the return value of the module evaluates to True. It is equivalent to
478calling `if_value` with ``expression=\">=1\"``)DOC");
479 }
480 module
481 .def("has_condition", &Module::hasCondition,
482 "Return true if a conditional path has been set for this module "
483 "using `if_value`, `if_true` or `if_false`")
484 .def("get_all_condition_paths", &_getAllConditionPathsPython,
485 "Return a list of all conditional paths set for this module using "
486 "`if_value`, `if_true` or `if_false`")
487 .def("get_all_conditions", &_getAllConditionsPython,
488 "Return a list of all conditional path expressions set for this module using "
489 "`if_value`, `if_true` or `if_false`")
490 .add_property("logging", make_function(&Module::getLogConfig, return_value_policy<reference_existing_object>()),
491 &Module::setLogConfig)
@ c_GE
Greater or equal than: ">=".
@ c_SE
Smaller or equal than: "<=".
@ c_GT
Greater than: ">".
@ c_NE
Not equal: "!=".
@ c_EQ
Equal: "=" or "==".
@ c_ST
Smaller than: "<".
void if_value(const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
Add a condition to the module.
Definition Module.cc:79
void if_true(const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
A simplified version to set the condition of the module.
Definition Module.cc:90
void setReturnValue(int value)
Sets the return value for this module as integer.
Definition Module.cc:220
@ c_HistogramManager
This module is used to manage histograms accumulated by other modules.
Definition Module.h:81
@ c_Input
This module is an input module (reads data).
Definition Module.h:78
@ c_InternalSerializer
This module is an internal serializer/deserializer for parallel processing.
Definition Module.h:82
@ c_Output
This module is an output module (writes data).
Definition Module.h:79
@ c_TerminateInAllProcesses
When using parallel processing, call this module's terminate() function in all processes().
Definition Module.h:83
void if_false(const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
A simplified version to add a condition to the module.
Definition Module.cc:85
ModuleCondition::EAfterConditionPath EAfterConditionPath
Forward the EAfterConditionPath definition from the ModuleCondition.
Definition Module.h:88

◆ getAfterConditionPath()

Module::EAfterConditionPath getAfterConditionPath ( ) const
inherited

What to do after the conditional path is finished.

(defaults to c_End if no condition is set)

Definition at line 133 of file Module.cc.

134{
135 if (m_conditions.empty()) return EAfterConditionPath::c_End;
136
137 //okay, a condition was set for this Module...
138 if (!m_hasReturnValue) {
139 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
140 }
141
142 for (const auto& condition : m_conditions) {
143 if (condition.evaluate(m_returnValue)) {
144 return condition.getAfterConditionPath();
145 }
146 }
147
148 return EAfterConditionPath::c_End;
149}

◆ getAllConditionPaths()

std::vector< std::shared_ptr< Path > > getAllConditionPaths ( ) const
inherited

Return all condition paths currently set (no matter if the condition is true or not).

Definition at line 150 of file Module.cc.

151{
152 std::vector<std::shared_ptr<Path>> allConditionPaths;
153 for (const auto& condition : m_conditions) {
154 allConditionPaths.push_back(condition.getPath());
155 }
156
157 return allConditionPaths;
158}

◆ getAllConditions()

const std::vector< ModuleCondition > & getAllConditions ( ) const
inlineinherited

Return all set conditions for this module.

Definition at line 323 of file Module.h.

324 {
325 return m_conditions;
326 }

◆ getCondition()

const ModuleCondition * getCondition ( ) const
inlineinherited

Return a pointer to the first condition (or nullptr, if none was set)

Definition at line 313 of file Module.h.

314 {
315 if (m_conditions.empty()) {
316 return nullptr;
317 } else {
318 return &m_conditions.front();
319 }
320 }

◆ getConditionPath()

std::shared_ptr< Path > getConditionPath ( ) const
inherited

Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).

Definition at line 113 of file Module.cc.

114{
115 PathPtr p;
116 if (m_conditions.empty()) return p;
117
118 //okay, a condition was set for this Module...
119 if (!m_hasReturnValue) {
120 B2FATAL("A condition was set for '" << getName() << "', but the module did not set a return value!");
121 }
122
123 for (const auto& condition : m_conditions) {
124 if (condition.evaluate(m_returnValue)) {
125 return condition.getPath();
126 }
127 }
128
129 // if none of the conditions were true, return a null pointer.
130 return p;
131}
std::shared_ptr< Path > PathPtr
Defines a pointer to a path object as a boost shared pointer.
Definition Path.h:35

◆ getDescription()

const std::string & getDescription ( ) const
inlineinherited

Returns the description of the module.

Definition at line 201 of file Module.h.

201{return m_description;}

◆ getFileNames()

virtual std::vector< std::string > getFileNames ( bool outputFiles)
inlinevirtualinherited

Return a list of output filenames for this modules.

This will be called when basf2 is run with "--dry-run" if the module has set either the c_Input or c_Output properties.

If the parameter outputFiles is false (for modules with c_Input) the list of input filenames should be returned (if any). If outputFiles is true (for modules with c_Output) the list of output files should be returned (if any).

If a module has sat both properties this member is called twice, once for each property.

The module should return the actual list of requested input or produced output filenames (including handling of input/output overrides) so that the grid system can handle input/output files correctly.

This function should return the same value when called multiple times. This is especially important when taking the input/output overrides from Environment as they get consumed when obtained so the finalized list of output files should be stored for subsequent calls.

Reimplemented in RootInputModule, RootOutputModule, and StorageRootOutputModule.

Definition at line 133 of file Module.h.

134 {
135 return std::vector<std::string>();
136 }

◆ getLogConfig()

LogConfig & getLogConfig ( )
inlineinherited

Returns the log system configuration.

Definition at line 224 of file Module.h.

224{return m_logConfig;}

◆ getModules()

std::list< ModulePtr > getModules ( ) const
inlineoverrideprivatevirtualinherited

no submodules, return empty list

Implements PathElement.

Definition at line 505 of file Module.h.

505{ return std::list<ModulePtr>(); }

◆ getName()

const std::string & getName ( ) const
inlineinherited

Returns the name of the module.

This can be changed via e.g. set_name() in the steering file to give more useful names if there is more than one module of the same type.

For identifying the type of a module, using getType() (or type() in Python) is recommended.

Definition at line 186 of file Module.h.

186{return m_name;}

◆ getPackage()

const std::string & getPackage ( ) const
inlineinherited

Returns the package this module is in.

Definition at line 196 of file Module.h.

196{return m_package;}

◆ getParamInfoListPython()

std::shared_ptr< boost::python::list > getParamInfoListPython ( ) const
inherited

Returns a python list of all parameters.

Each item in the list consists of the name of the parameter, a string describing its type, a python list of all default values and the description of the parameter.

Returns
A python list containing the parameters of this parameter list.

Definition at line 279 of file Module.cc.

280{
282}
std::shared_ptr< boost::python::list > getParamInfoListPython() const
Returns a python list of all parameters.

◆ getParamList()

const ModuleParamList & getParamList ( ) const
inlineinherited

Return module param list.

Definition at line 362 of file Module.h.

362{ return m_moduleParamList; }

◆ getPathString()

std::string getPathString ( ) const
overrideprivatevirtualinherited

return the module name.

Implements PathElement.

Definition at line 192 of file Module.cc.

193{
194
195 std::string output = getName();
196
197 for (const auto& condition : m_conditions) {
198 output += condition.getString();
199 }
200
201 return output;
202}

◆ getReturnValue()

int getReturnValue ( ) const
inlineinherited

Return the return value set by this module.

This value is only meaningful if hasReturnValue() is true

Definition at line 380 of file Module.h.

380{ return m_returnValue; }

◆ getType()

const std::string & getType ( ) const
inherited

Returns the type of the module (i.e.

class name minus 'Module')

Definition at line 41 of file Module.cc.

42{
43 if (m_type.empty())
44 B2FATAL("Module type not set for " << getName());
45 return m_type;
46}
std::string m_type
The type of the module, saved as a string.
Definition Module.h:508

◆ hasCondition()

bool hasCondition ( ) const
inlineinherited

Returns true if at least one condition was set for the module.

Definition at line 310 of file Module.h.

310{ return not m_conditions.empty(); };

◆ hasProperties()

bool hasProperties ( unsigned int propertyFlags) const
inherited

Returns true if all specified property flags are available in this module.

Parameters
propertyFlagsOred EModulePropFlags which should be compared with the module flags.

Definition at line 160 of file Module.cc.

161{
162 return (propertyFlags & m_propertyFlags) == propertyFlags;
163}

◆ hasReturnValue()

bool hasReturnValue ( ) const
inlineinherited

Return true if this module has a valid return value set.

Definition at line 377 of file Module.h.

377{ return m_hasReturnValue; }

◆ hasUnsetForcedParams()

bool hasUnsetForcedParams ( ) const
inherited

Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.

Definition at line 166 of file Module.cc.

167{
169 std::string allMissing = "";
170 for (const auto& s : missing)
171 allMissing += s + " ";
172 if (!missing.empty())
173 B2ERROR("The following required parameters of Module '" << getName() << "' were not specified: " << allMissing <<
174 "\nPlease add them to your steering file.");
175 return !missing.empty();
176}
std::vector< std::string > getUnsetForcedParams() const
Returns list of unset parameters (if they are required to have a value.

◆ if_false()

void if_false ( const std::shared_ptr< Path > & path,
EAfterConditionPath afterConditionPath = EAfterConditionPath::c_End )
inherited

A simplified version to add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression "<1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is false.
afterConditionPathWhat to do after executing 'path'.

Definition at line 85 of file Module.cc.

86{
87 if_value("<1", path, afterConditionPath);
88}

◆ if_true()

void if_true ( const std::shared_ptr< Path > & path,
EAfterConditionPath afterConditionPath = EAfterConditionPath::c_End )
inherited

A simplified version to set the condition of the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression ">=1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 90 of file Module.cc.

91{
92 if_value(">=1", path, afterConditionPath);
93}

◆ if_value()

void if_value ( const std::string & expression,
const std::shared_ptr< Path > & path,
EAfterConditionPath afterConditionPath = EAfterConditionPath::c_End )
inherited

Add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

See https://xwiki.desy.de/xwiki/rest/p/a94f2 or ModuleCondition for a description of the syntax.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

Parameters
expressionThe expression of the condition.
pathShared pointer to the Path which will be executed if the condition is evaluated to true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 79 of file Module.cc.

80{
81 m_conditions.emplace_back(expression, path, afterConditionPath);
82}

◆ initialize()

void initialize ( void )
overridevirtual

Initializes the Module.

Reimplemented from Module.

Definition at line 75 of file MCTrackCandClassifierModule.cc.

76{
77 // MCParticles, MCTrackCands, MCTracks needed for this module
78 m_PXDClusters.isRequired();
79 m_SVDClusters.isRequired();
81
83 m_GenfitIdealMCTrackCands.registerInDataStore("idealMCTrackCands", DataStore::c_ErrorIfAlreadyRegistered);
84
85 //create list of histograms to be saved in the rootfile
86 m_histoList = new TList;
87
88 //set the ROOT File
89 m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
90
91 //histograms to produce efficiency plots
92 Double_t bins_pt[9 + 1] = {0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.5, 1, 2, 3.5}; //GeV/c
93 const Double_t bins_theta[10 + 1] = {0, 0.25, 0.5, 0.75, 0.75 + 0.32, 0.75 + 2 * 0.32, 0.75 + 3 * 0.32, 0.75 + 4 * 0.32, 0.75 + 5 * 0.32, 2.65, TMath::Pi()};
94 Double_t bins_lambda[10 + 1];
95 const Double_t width_lambda = TMath::Pi() / 10;
96 Double_t bins_phi[14 + 1];
97 const Double_t width_phi = 2 * TMath::Pi() / 14;
98 for (int bin = 0; bin < 14 + 1; bin++)
99 bins_phi[bin] = - TMath::Pi() + bin * width_phi;
100
101 for (int bin = 0; bin < 10 + 1; bin++) {
102 bins_lambda[bin] = - TMath::Pi() / 2 + bin * width_lambda;
103 B2DEBUG(21, bins_lambda[bin] << " " << bins_theta[bin]);
104 }
105
106 m_h3_MCParticle = createHistogram3D("h3MCParticle", "entry per MCParticle",
107 9, bins_pt, "p_{t} (GeV/c)",
108 10, bins_lambda, "#lambda",
109 14, bins_phi, "#phi" /*, m_histoList*/);
110
111 m_h3_idealMCTrackCand = (TH3F*)duplicateHistogram("h3idealMCTrackCand",
112 "entry per idealMCTrackCand",
113 m_h3_MCParticle /*, m_histoList*/);
114
115 m_h3_MCTrackCand = (TH3F*)duplicateHistogram("h3MCTrackCand",
116 "entry per MCTrackCand",
117 m_h3_MCParticle /*, m_histoList*/);
118
119
120 m_h1_thetaMS_SVD = new TH1F("h1thetaMS_SVD", "Multiple Scattering Angle (SVD)", 500, 0, 500);
122 m_h1_thetaMS_SVD->GetXaxis()->SetTitle("#theta_{MS} (mrad)");
123
124 m_h1_thetaMS_PXD = (TH1F*) duplicateHistogram("h1thetaMS_PXD", "Multiple Scattering Angle (PXD)", m_h1_thetaMS_SVD, m_histoList);
125
126 m_h1_dR = new TH1F("h1dR", "dR, annulus half width", 1000, 0, 5);
127 m_histoList->Add(m_h1_dR);
128 m_h1_dR->GetXaxis()->SetTitle("dR (cm)");
129
130 m_h1_dRoverR = new TH1F("h1dRoverR", "dR over helix radius", 1000, 0, 0.1);
132 m_h1_dRoverR->GetXaxis()->SetTitle("dR/R");
133
134 m_h1_distOVERdR = new TH1F("h1distOVERdR", "(hit radius - helix radius)/dR", 100, -5, 5);
136 m_h1_distOVERdR->GetXaxis()->SetTitle("(hit R - helix R)/dR");
137
138 m_h1_hitRadius_accepted = new TH1F("h1hitRadAccep", "hit radius for accepted hits", 100, 0, 500);
140 m_h1_hitRadius_accepted->GetXaxis()->SetTitle("hit radius (cm)");
141
142 m_h1_hitRadius_rejected = new TH1F("h1hitRadRejec", "hit radius for rejected hits", 100, 0, 500);
144 m_h1_hitRadius_rejected->GetXaxis()->SetTitle("hit radius (cm)");
145
146 m_h1_hitDistance_accepted = new TH1F("h1hitDistCentAccep", "hit distance from 0,0 for accepted hits", 100, 0, 15);
148 m_h1_hitDistance_accepted->GetXaxis()->SetTitle("hit distance (cm)");
149
150 m_h1_hitDistance_rejected = new TH1F("h1hitDistCentRejec", "hit distance from 0,0 for rejected hits", 100, 0, 15);
152 m_h1_hitDistance_rejected->GetXaxis()->SetTitle("hit distance (cm)");
153
154 m_h1_lapTime = new TH1F("h1LapTime", "lap time", 200, 0, 100);
156 m_h1_lapTime->GetXaxis()->SetTitle("time (ns)");
157
158 m_h1_timeDifference = (TH1F*)duplicateHistogram("h1TimeDiff", "Hit Time Difference",
160 m_h1_diffOVERlap = new TH1F("h1HitDiffOVERlap", "Hit Time Difference over Lap Time",
161 100, 0, 1.5);
163 m_h1_diffOVERlap->GetXaxis()->SetTitle("hit difference/lap");
164
165 m_h1_nGoodTrueHits = new TH1F("h1nTrueHitsGoods", "Number of True Hits for Accepted Tracks", 20, 0, 20);
167 m_h1_nGoodTrueHits->GetXaxis()->SetTitle("number of hits");
168
169 m_h1_nBadTrueHits = new TH1F("h1nTrueHitsBads", "Number of True Hits for Rejected Tracks", 10, 0, 10);
171 m_h1_nBadTrueHits->GetXaxis()->SetTitle("number of hits");
172
173 m_h1_nGood1dInfo = new TH1F("h1nGood1Dinfo", "Number of 1D Info for Accepted Tracks", 20, 0, 20);
175 m_h1_nGood1dInfo->GetXaxis()->SetTitle("number of hits");
176
177 m_h1_nBad1dInfo = new TH1F("h1nBad1Dinfo", "Number of 1D Info for Rejected Tracks", 20, 0, 20);
179 m_h1_nBad1dInfo->GetXaxis()->SetTitle("number of hits");
180
181 m_h1_firstRejectedHit = new TH1F("h1idealMCTCnHit", "idealMCTrackCands number of hits", 40, 0, 40);
183 m_h1_firstRejectedHit->GetXaxis()->SetTitle("# idealMCTrackCands hits");
184
185 m_h1_firstRejectedOVERMCHit = new TH1F("h1FirstRejOVERmc", "# idealMCTrackCands hits / # MCTrackCands hits", 100, 0, 1);
187 m_h1_firstRejectedOVERMCHit->GetXaxis()->SetTitle("# idealMCTrackCands hits / # MCTrackCands hits");
188
189 m_h1_MCTrackCandNhits = (TH1F*)duplicateHistogram("h1MCTrackCandNhits", "number of MCTrackCands hits", m_h1_firstRejectedHit,
191}
@ c_ErrorIfAlreadyRegistered
If the object/array was already registered, produce an error (aborting initialisation).
Definition DataStore.h:72
TH1 * duplicateHistogram(const char *newname, const char *newtitle, TH1 *h, TList *histoList=nullptr)
Function to clone a histogram.
TH3F * createHistogram3D(const char *name, const char *title, Int_t nbinsX, Double_t minX, Double_t maxX, const char *titleX, Int_t nbinsY, Double_t minY, Double_t maxY, const char *titleY, Int_t nbinsZ, Double_t minZ, Double_t maxZ, const char *titleZ, TList *histoList=nullptr)
Create a 3D ROOT Histogram.
StoreArray< MCParticle > m_MCParticles
MCParticles StoreArray.

◆ isFirstLap()

bool isFirstLap ( double FirstHitTime,
double HitTime,
double LapTime )
private

Function to check if a hitTime is within a given lapTime, under consideration of m_fraction and with respect to first hit.

Parameters
FirstHitTimetime of first hit
HitTimehit time
LapTimelap time
Returns
true if in first lap

Definition at line 560 of file MCTrackCandClassifierModule.cc.

561{
562 bool accepted = false;
563
564 B2DEBUG(21, "");
565 B2DEBUG(21, " lapTime: " << LapTime);
566 B2DEBUG(21, " FirstHitTime = " << FirstHitTime);
567 B2DEBUG(21, " HitTime = " << HitTime);
568 B2DEBUG(21, " difference = " << HitTime - FirstHitTime);
569
570 m_h1_lapTime->Fill(LapTime);
571 m_h1_timeDifference->Fill(HitTime - FirstHitTime);
572 m_h1_diffOVERlap->Fill((HitTime - FirstHitTime) / LapTime);
573
574 if (HitTime - FirstHitTime < m_fraction * LapTime)
575 accepted = true;
576
577 return accepted;
578}

◆ isInAnnulus()

bool isInAnnulus ( double hitDistance,
double R,
double dR )
private

Function to check if hitDistance is within a given annulus.

Parameters
hitDistancedistance between two hits
Rradius for annulus
dRwidth of annulus
Returns
true if in annulus

Definition at line 543 of file MCTrackCandClassifierModule.cc.

544{
545 bool accepted = false;
546
547 B2DEBUG(21, "");
548 B2DEBUG(21, " ANNULUS defined between radii: " << R - dR << " and " << R + dR);
549 B2DEBUG(21, " hit distance = " << hitDistance);
550 B2DEBUG(21, " helix radius = " << R);
551 B2DEBUG(21, " dR = " << dR);
552
553 if ((hitDistance > R - dR) && (hitDistance < R + dR))
554 accepted = true;
555
556 return accepted;
557}

◆ isInSemiPlane()

bool isInSemiPlane ( double semiPlane,
double omega )
private

Function to check if a omega value is in a given semiPlane.

Parameters
semiPlaneslope of semiplane
omegaSigned curvature
Returns
true if in semiplane

Definition at line 525 of file MCTrackCandClassifierModule.cc.

526{
527 if (semiPlane * omega > 0)
528 return true;
529 else
530 return false;
531}

◆ semiPlane()

double semiPlane ( ROOT::Math::XYZVector vertex,
ROOT::Math::XYZVector center,
ROOT::Math::XYZVector hit )
private

Function to get semiplane.

Parameters
vertexVertex position
centercenter position
hithit position
Returns
difference in y-slope between hit and semiplane

Definition at line 504 of file MCTrackCandClassifierModule.cc.

505{
506 ROOT::Math::XYZVector err = center - vertex;
507
508 double semiPlane = err.Y() / err.X() * hit.X() + err.Y() / err.X() * vertex.x() - vertex.Y();
509
510 B2DEBUG(21, "");
511 B2DEBUG(21, " SEMI-PLANE defined by: y + " << err.Y() / err.X() << " x + " << err.Y() / err.X()*vertex.x() - vertex.Y() << " = 0");
512 B2DEBUG(21, " with: center(" << center.X() << "," << center.Y() << ")");
513 B2DEBUG(21, " decayV(" << vertex.X() << "," << vertex.Y() << ")");
514 B2DEBUG(21, " vector(" << err.X() << "," << err.Y() << ")");
515 B2DEBUG(21, " y SLOPE = " << semiPlane << " VS y HIT = " << hit.Y());
516 B2DEBUG(21, " HIT - SLOPE = " << - semiPlane + hit.Y());
517
518 if (vertex.X() < center.X())
519 return hit.Y() - semiPlane;
520 else
521 return semiPlane - hit.Y();
522}

◆ setAbortLevel()

void setAbortLevel ( int abortLevel)
inherited

Configure the abort log level.

Definition at line 67 of file Module.cc.

68{
69 m_logConfig.setAbortLevel(static_cast<LogConfig::ELogLevel>(abortLevel));
70}
ELogLevel
Definition of the supported log levels.
Definition LogConfig.h:26
void setAbortLevel(ELogLevel abortLevel)
Configure the abort level.
Definition LogConfig.h:112

◆ setDebugLevel()

void setDebugLevel ( int debugLevel)
inherited

Configure the debug messaging level.

Definition at line 61 of file Module.cc.

62{
63 m_logConfig.setDebugLevel(debugLevel);
64}
void setDebugLevel(int debugLevel)
Configure the debug messaging level.
Definition LogConfig.h:98

◆ setDescription()

void setDescription ( const std::string & description)
protectedinherited

Sets the description of the module.

Parameters
descriptionA description of the module.

Definition at line 214 of file Module.cc.

215{
216 m_description = description;
217}
std::string m_description
The description of the module.
Definition Module.h:510

◆ setLogConfig()

void setLogConfig ( const LogConfig & logConfig)
inlineinherited

Set the log system configuration.

Definition at line 229 of file Module.h.

229{m_logConfig = logConfig;}

◆ setLogInfo()

void setLogInfo ( int logLevel,
unsigned int logInfo )
inherited

Configure the printed log information for the given level.

Parameters
logLevelThe log level (one of LogConfig::ELogLevel)
logInfoWhat kind of info should be printed? ORed combination of LogConfig::ELogInfo flags.

Definition at line 73 of file Module.cc.

74{
75 m_logConfig.setLogInfo(static_cast<LogConfig::ELogLevel>(logLevel), logInfo);
76}
void setLogInfo(ELogLevel logLevel, unsigned int logInfo)
Configure the printed log information for the given level.
Definition LogConfig.h:127

◆ setLogLevel()

void setLogLevel ( int logLevel)
inherited

Configure the log level.

Definition at line 55 of file Module.cc.

56{
57 m_logConfig.setLogLevel(static_cast<LogConfig::ELogLevel>(logLevel));
58}
void setLogLevel(ELogLevel logLevel)
Configure the log level.
Definition LogConfig.cc:25

◆ setName()

void setName ( const std::string & name)
inlineinherited

Set the name of the module.

Note
The module name is set when using the REG_MODULE macro, but the module can be renamed before calling process() using the set_name() function in your steering file.
Parameters
nameThe name of the module

Definition at line 213 of file Module.h.

213{ m_name = name; };

◆ setParamList()

void setParamList ( const ModuleParamList & params)
inlineprotectedinherited

Replace existing parameter list.

Definition at line 500 of file Module.h.

500{ m_moduleParamList = params; }

◆ setParamPython()

void setParamPython ( const std::string & name,
const boost::python::object & pyObj )
privateinherited

Implements a method for setting boost::python objects.

The method supports the following types: list, dict, int, double, string, bool The conversion of the python object to the C++ type and the final storage of the parameter value is done in the ModuleParam class.

Parameters
nameThe unique name of the parameter.
pyObjThe object which should be converted and stored as the parameter value.

Definition at line 234 of file Module.cc.

235{
236 LogSystem& logSystem = LogSystem::Instance();
237 logSystem.updateModule(&(getLogConfig()), getName());
238 try {
240 } catch (std::runtime_error& e) {
241 throw std::runtime_error("Cannot set parameter '" + name + "' for module '"
242 + m_name + "': " + e.what());
243 }
244
245 logSystem.updateModule(nullptr);
246}
void updateModule(const LogConfig *moduleLogConfig=nullptr, const std::string &moduleName="")
Sets the log configuration to the given module log configuration and sets the module name This method...
Definition LogSystem.h:200
static LogSystem & Instance()
Static method to get a reference to the LogSystem instance.
Definition LogSystem.cc:28
LogConfig & getLogConfig()
Returns the log system configuration.
Definition Module.h:224
std::string m_name
The name of the module, saved as a string (user-modifiable)
Definition Module.h:507
void setParamPython(const std::string &name, const PythonObject &pyObj)
Implements a method for setting boost::python objects.

◆ setParamPythonDict()

void setParamPythonDict ( const boost::python::dict & dictionary)
privateinherited

Implements a method for reading the parameter values from a boost::python dictionary.

The key of the dictionary has to be the name of the parameter and the value has to be of one of the supported parameter types.

Parameters
dictionaryThe python dictionary from which the parameter values are read.

Definition at line 249 of file Module.cc.

250{
251
252 LogSystem& logSystem = LogSystem::Instance();
253 logSystem.updateModule(&(getLogConfig()), getName());
254
255 boost::python::list dictKeys = dictionary.keys();
256 int nKey = boost::python::len(dictKeys);
257
258 //Loop over all keys in the dictionary
259 for (int iKey = 0; iKey < nKey; ++iKey) {
260 boost::python::object currKey = dictKeys[iKey];
261 boost::python::extract<std::string> keyProxy(currKey);
262
263 if (keyProxy.check()) {
264 const boost::python::object& currValue = dictionary[currKey];
265 setParamPython(keyProxy, currValue);
266 } else {
267 B2ERROR("Setting the module parameters from a python dictionary: invalid key in dictionary!");
268 }
269 }
270
271 logSystem.updateModule(nullptr);
272}
void setParamPython(const std::string &name, const boost::python::object &pyObj)
Implements a method for setting boost::python objects.
Definition Module.cc:234

◆ setPropertyFlags()

void setPropertyFlags ( unsigned int propertyFlags)
inherited

Sets the flags for the module properties.

Parameters
propertyFlagsbitwise OR of EModulePropFlags

Definition at line 208 of file Module.cc.

209{
210 m_propertyFlags = propertyFlags;
211}

◆ setReturnValue() [1/2]

void setReturnValue ( bool value)
protectedinherited

Sets the return value for this module as bool.

The bool value is saved as an integer with the convention 1 meaning true and 0 meaning false. The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 227 of file Module.cc.

228{
229 m_hasReturnValue = true;
230 m_returnValue = value;
231}

◆ setReturnValue() [2/2]

void setReturnValue ( int value)
protectedinherited

Sets the return value for this module as integer.

The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 220 of file Module.cc.

221{
222 m_hasReturnValue = true;
223 m_returnValue = value;
224}

◆ setType()

void setType ( const std::string & type)
protectedinherited

Set the module type.

Only for use by internal modules (which don't use the normal REG_MODULE mechanism).

Definition at line 48 of file Module.cc.

49{
50 if (!m_type.empty())
51 B2FATAL("Trying to change module type from " << m_type << " is not allowed, the value is assumed to be fixed.");
52 m_type = type;
53}

◆ terminate()

void terminate ( void )
overridevirtual

Termination action.

Reimplemented from Module.

Definition at line 486 of file MCTrackCandClassifierModule.cc.

487{
490
491 if (m_rootFilePtr != nullptr) {
492 m_rootFilePtr->cd();
493
494 TIter nextH(m_histoList);
495 TObject* obj;
496 while ((obj = nextH()))
497 obj->Write();
498
499 m_rootFilePtr->Close();
500 }
501}
void addInefficiencyPlots(TList *graphList=nullptr)
Function to create inefficiency plots and add them to list.
void addEfficiencyPlots(TList *graphList=nullptr)
Function to create efficiency plots and add them to list.

◆ theDistance()

double theDistance ( ROOT::Math::XYZVector center,
ROOT::Math::XYZVector hit )
private

Get distance between two points.

Parameters
centercenter position
hithit position
Returns
Distance between the two hits

Definition at line 534 of file MCTrackCandClassifierModule.cc.

535{
536 double xSquared = TMath::Power(center.X() - hit.X(), 2);
537 double ySquared = TMath::Power(center.Y() - hit.Y(), 2);
538
539 return TMath::Sqrt(xSquared + ySquared);
540}

Member Data Documentation

◆ m_applyAnnulus

bool m_applyAnnulus
protected

Whether to require that the hit is in the expected annulus.

Definition at line 76 of file MCTrackCandClassifierModule.h.

◆ m_applyLap

bool m_applyLap
protected

Whether to require that the hit belongs to the first lap in the transverse plane.

Definition at line 80 of file MCTrackCandClassifierModule.h.

◆ m_applySemiplane

bool m_applySemiplane
protected

Whether to require that the hit is in the expected semiplane.

Definition at line 78 of file MCTrackCandClassifierModule.h.

◆ m_applyWedge

bool m_applyWedge
protected

Whether to require that the hit belong to the barrel part of the SVD.

Definition at line 82 of file MCTrackCandClassifierModule.h.

◆ m_conditions

std::vector<ModuleCondition> m_conditions
privateinherited

Module condition, only non-null if set.

Definition at line 520 of file Module.h.

◆ m_description

std::string m_description
privateinherited

The description of the module.

Definition at line 510 of file Module.h.

◆ m_fraction

double m_fraction
protected

Fraction of lap.

Definition at line 88 of file MCTrackCandClassifierModule.h.

◆ m_GenfitIdealMCTrackCands

StoreArray<genfit::TrackCand> m_GenfitIdealMCTrackCands
private

Ideal Genfit TrackCands StoreArray.

Definition at line 132 of file MCTrackCandClassifierModule.h.

◆ m_GenfitMCTrackCands

StoreArray<genfit::TrackCand> m_GenfitMCTrackCands
private

MC Genfit TrackCands StoreArray.

Definition at line 131 of file MCTrackCandClassifierModule.h.

◆ m_h1_diffOVERlap

TH1F* m_h1_diffOVERlap = nullptr
protected

Histogram.

Definition at line 119 of file MCTrackCandClassifierModule.h.

◆ m_h1_distOVERdR

TH1F* m_h1_distOVERdR = nullptr
protected

Histogram.

Definition at line 107 of file MCTrackCandClassifierModule.h.

◆ m_h1_dR

TH1F* m_h1_dR = nullptr
protected

Histogram.

Definition at line 105 of file MCTrackCandClassifierModule.h.

◆ m_h1_dRoverR

TH1F* m_h1_dRoverR = nullptr
protected

Histogram.

Definition at line 106 of file MCTrackCandClassifierModule.h.

◆ m_h1_firstRejectedHit

TH1F* m_h1_firstRejectedHit = nullptr
protected

Histogram.

Definition at line 114 of file MCTrackCandClassifierModule.h.

◆ m_h1_firstRejectedOVERMCHit

TH1F* m_h1_firstRejectedOVERMCHit = nullptr
protected

Histogram.

Definition at line 115 of file MCTrackCandClassifierModule.h.

◆ m_h1_hitDistance_accepted

TH1F* m_h1_hitDistance_accepted = nullptr
protected

Histogram.

Definition at line 110 of file MCTrackCandClassifierModule.h.

◆ m_h1_hitDistance_rejected

TH1F* m_h1_hitDistance_rejected = nullptr
protected

Histogram.

Definition at line 111 of file MCTrackCandClassifierModule.h.

◆ m_h1_hitRadius_accepted

TH1F* m_h1_hitRadius_accepted = nullptr
protected

Histogram.

Definition at line 108 of file MCTrackCandClassifierModule.h.

◆ m_h1_hitRadius_rejected

TH1F* m_h1_hitRadius_rejected = nullptr
protected

Histogram.

Definition at line 109 of file MCTrackCandClassifierModule.h.

◆ m_h1_lapTime

TH1F* m_h1_lapTime = nullptr
protected

Histogram.

Definition at line 117 of file MCTrackCandClassifierModule.h.

◆ m_h1_MCTrackCandNhits

TH1F* m_h1_MCTrackCandNhits = nullptr
protected

Histogram.

Definition at line 113 of file MCTrackCandClassifierModule.h.

◆ m_h1_nBad1dInfo

TH1F* m_h1_nBad1dInfo = nullptr
protected

Histogram.

Definition at line 124 of file MCTrackCandClassifierModule.h.

◆ m_h1_nBadTrueHits

TH1F* m_h1_nBadTrueHits = nullptr
protected

Histogram.

Definition at line 122 of file MCTrackCandClassifierModule.h.

◆ m_h1_nGood1dInfo

TH1F* m_h1_nGood1dInfo = nullptr
protected

Histogram.

Definition at line 123 of file MCTrackCandClassifierModule.h.

◆ m_h1_nGoodTrueHits

TH1F* m_h1_nGoodTrueHits = nullptr
protected

Histogram.

Definition at line 121 of file MCTrackCandClassifierModule.h.

◆ m_h1_thetaMS_PXD

TH1F* m_h1_thetaMS_PXD = nullptr
protected

Histogram.

Definition at line 104 of file MCTrackCandClassifierModule.h.

◆ m_h1_thetaMS_SVD

TH1F* m_h1_thetaMS_SVD = nullptr
protected

Histogram.

Definition at line 103 of file MCTrackCandClassifierModule.h.

◆ m_h1_timeDifference

TH1F* m_h1_timeDifference = nullptr
protected

Histogram.

Definition at line 118 of file MCTrackCandClassifierModule.h.

◆ m_h3_idealMCTrackCand

TH3F* m_h3_idealMCTrackCand = nullptr
protected

Histogram.

Definition at line 100 of file MCTrackCandClassifierModule.h.

◆ m_h3_MCParticle

TH3F* m_h3_MCParticle = nullptr
protected

Histogram.

Definition at line 99 of file MCTrackCandClassifierModule.h.

◆ m_h3_MCTrackCand

TH3F* m_h3_MCTrackCand = nullptr
protected

Histogram.

Definition at line 101 of file MCTrackCandClassifierModule.h.

◆ m_hasReturnValue

bool m_hasReturnValue
privateinherited

True, if the return value is set.

Definition at line 517 of file Module.h.

◆ m_histoList

TList* m_histoList = nullptr
protected

List of histograms.

Definition at line 98 of file MCTrackCandClassifierModule.h.

◆ m_logConfig

LogConfig m_logConfig
privateinherited

The log system configuration of the module.

Definition at line 513 of file Module.h.

◆ m_magField

ROOT::Math::XYZVector m_magField
private

magnetic field needed set particle info

Definition at line 134 of file MCTrackCandClassifierModule.h.

◆ m_MCParticles

StoreArray<MCParticle> m_MCParticles
private

MCParticles StoreArray.

Definition at line 130 of file MCTrackCandClassifierModule.h.

◆ m_mcParticlesName

std::string m_mcParticlesName
protected

MCParticle list name.

Definition at line 68 of file MCTrackCandClassifierModule.h.

◆ m_mcTrackCandsColName

std::string m_mcTrackCandsColName
protected

TrackCand list name.

Definition at line 66 of file MCTrackCandClassifierModule.h.

◆ m_minHit

int m_minHit
protected

Minimum number of 1D Clusters to classify the MCTrackCand as ideal.

Definition at line 86 of file MCTrackCandClassifierModule.h.

◆ m_moduleParamList

ModuleParamList m_moduleParamList
privateinherited

List storing and managing all parameter of the module.

Definition at line 515 of file Module.h.

◆ m_name

std::string m_name
privateinherited

The name of the module, saved as a string (user-modifiable)

Definition at line 507 of file Module.h.

◆ m_nSigma

int m_nSigma
protected

nSigma dR

Definition at line 72 of file MCTrackCandClassifierModule.h.

◆ m_package

std::string m_package
privateinherited

Package this module is found in (may be empty).

Definition at line 509 of file Module.h.

◆ m_propertyFlags

unsigned int m_propertyFlags
privateinherited

The properties of the module as bitwise or (with |) of EModulePropFlags.

Definition at line 511 of file Module.h.

◆ m_PXDClusters

StoreArray<PXDCluster> m_PXDClusters
private

PXDClusters StoreArray.

Definition at line 128 of file MCTrackCandClassifierModule.h.

◆ m_removeBadHits

bool m_removeBadHits
protected

Whether to remove the clusters that do not satisfy the criteria from the idealMCTrackCands.

Definition at line 84 of file MCTrackCandClassifierModule.h.

◆ m_returnValue

int m_returnValue
privateinherited

The return value.

Definition at line 518 of file Module.h.

◆ m_rootFileName

std::string m_rootFileName
protected

root file name

Definition at line 70 of file MCTrackCandClassifierModule.h.

◆ m_rootFilePtr

TFile* m_rootFilePtr = nullptr
protected

Pointer to root file used for storing histograms.

Definition at line 96 of file MCTrackCandClassifierModule.h.

◆ m_SVDClusters

StoreArray<SVDCluster> m_SVDClusters
private

SVDClusters StoreArray.

Definition at line 129 of file MCTrackCandClassifierModule.h.

◆ m_type

std::string m_type
privateinherited

The type of the module, saved as a string.

Definition at line 508 of file Module.h.

◆ m_usePXD

bool m_usePXD
protected

Whether to use PXD.

Definition at line 74 of file MCTrackCandClassifierModule.h.

◆ nBarrel

int nBarrel = 0
protected

Counter for hits on barrel sensors.

Definition at line 93 of file MCTrackCandClassifierModule.h.

◆ nWedge

int nWedge = 0
protected

Counter for hits on wedged sensors.

Definition at line 91 of file MCTrackCandClassifierModule.h.


The documentation for this class was generated from the following files: