Belle II Software  release-05-02-19
ECLLocalMaximumFinderModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Belle II Local Maximum Finder (LMF). Two stage procedure: First it *
6  * searches a local maximum (energy higher than all neighbours and above *
7  * threshold) and second it uses a method for different *
8  * particle types to decide if the local maximum is a candidate. Each *
9  * candidate will result in one shower/cluster in the end. *
10  * *
11  * Author: The Belle II Collaboration *
12  * Contributors: Torben Ferber (ferber@physics.ubc.ca) *
13  * *
14  * This software is provided "as is" without any warranty. *
15  **************************************************************************/
16 
17 #pragma once
18 
19 // FRAMEWORK
20 #include <framework/core/Module.h>
21 #include <framework/datastore/StoreArray.h>
22 #include <framework/gearbox/Unit.h>
23 #include <framework/geometry/B2Vector3.h> // faster than TVector3
24 
25 class TTree;
26 class TFile;
27 
28 namespace Belle2 {
34  class MCParticle;
35  class ECLHit;
36  class ECLDigit;
37  class ECLCalDigit;
38  class ECLLocalMaximum;
39  class ECLConnectedRegion;
40 
41  namespace ECL {
42  class ECLNeighbours;
43  class ECLGeometryPar;
44  }
45 
51 
52  public:
55 
58 
60  virtual void initialize() override;
61 
63  virtual void beginRun() override;
64 
66  virtual void event() override;
67 
69  virtual void endRun() override;
70 
72  virtual void terminate() override;
73 
76 
79 
82 
85 
88 
91 
93  virtual const char* mcParticleArrayName() const
94  { return "MCParticles" ; }
95 
97  virtual const char* eclHitArrayName() const
98  { return "ECLHits" ; }
99 
101  virtual const char* eclDigitArrayName() const
102  { return "ECLDigits" ; }
103 
105  virtual const char* eclCalDigitArrayName() const
106  { return "ECLCalDigits" ; }
107 
109  virtual const char* eclConnectedRegionArrayName() const
110  { return "ECLConnectedRegions" ; }
111 
113  virtual const char* eclLocalMaximumArrayName() const
114  { return "ECLLocalMaximums" ; }
115 
118 
120  void resetTrainingVariables();
121 
123  void makeLocalMaximum(const ECLConnectedRegion& aCR, const int cellId, const int lmId);
124 
126  void addToSignalEnergy(int& motherpdg, int& motherindex, int& pi0index, const double& weight);
127 
129  bool isEnteringECL(const B2Vector3D& vec);
130 
132  void getEnteringMother(const MCParticle& particle, int& pdg, int& arrayindex, int& pi0arrayindex);
133 
135  int getIdPosition(const int type, const int id);
136 
138  void getMax(int& maxtype, int& maxpos);
139 
140  private:
141 
142  // Module parameters
143  double m_energyCut;
145  std::string m_outfileName;
146  std::string m_method;
148  double m_cutOffset;
149  double m_cutSlope;
152  // Constants
153  const double c_minEnergyCut = 5.0 * Belle2::Unit::MeV;
156  std::vector< int > m_StoreArrPosition;
157 
160 
163 
165  TFile* m_outfile{nullptr};
166  TTree* m_tree{nullptr};
169  const static unsigned c_nMaxNeighbours = 12;
171  float m_time = 0.0;
174  float m_energy = 0.0;
175  float m_thetaId = 0.0;
176  float m_phiId = 0.0;
177  float m_cellId = 0.0;
178  float m_maxNeighbourEnergy = 0.0;
179  float m_timeResolution = 0.0;
180  float m_timeFitFailed = 0.0;
181  float m_CRId = 0.0;
182  float m_LMId = 0.0;
185  float m_target = 0.0;
186  float m_targetindex = 0.0;
187  float m_targetpi0index = 0.0;
190  float m_nNeighbours10 = 0.0;
191  float m_maxEnergyRatio = 0.0;
193  double m_totalSignalEnergy = 0.0;
194  double m_signalEnergy[10][5] {};
195  int m_signalId[10][5] {};
196  };
197 
200  public:
202  //virtual const char* eclHitArrayName() const override
203  //{ return "ECLHitsPureCsI" ; }
204 
206  virtual const char* eclDigitArrayName() const override
207  { return "ECLDigitsPureCsI" ; }
208 
210  virtual const char* eclCalDigitArrayName() const override
211  { return "ECLCalDigitsPureCsI" ; }
212 
214  virtual const char* eclConnectedRegionArrayName() const override
215  { return "ECLConnectedRegionsPureCsI" ; }
216 
218  virtual const char* eclLocalMaximumArrayName() const override
219  { return "ECLLocalMaximumsPureCsI" ; }
220 
221  }; // end of ECLLocalMaximumFinderPureCsIModule
222 
224 } // end of Belle2 namespace
Belle2::ECLLocalMaximumFinderModule::m_timeResolution
float m_timeResolution
time resolution
Definition: ECLLocalMaximumFinderModule.h:179
Belle2::ECLLocalMaximumFinderModule::getIdPosition
int getIdPosition(const int type, const int id)
Get Id position in the vector.
Definition: ECLLocalMaximumFinderModule.cc:480
Belle2::ECLLocalMaximumFinderPureCsIModule
Class to find connected regions, pureCsI version.
Definition: ECLLocalMaximumFinderModule.h:199
Belle2::ECLLocalMaximumFinderModule::m_energyCut
double m_energyCut
energy cut for seed
Definition: ECLLocalMaximumFinderModule.h:143
Belle2::ECLLocalMaximumFinderModule::c_minEnergyCut
const double c_minEnergyCut
Minimum LM energy.
Definition: ECLLocalMaximumFinderModule.h:153
Belle2::ECLLocalMaximumFinderModule::m_tree
TTree * m_tree
tree that contain information for MVA training
Definition: ECLLocalMaximumFinderModule.h:166
Belle2::ECLLocalMaximumFinderModule::m_timeFitFailed
float m_timeFitFailed
failed fit
Definition: ECLLocalMaximumFinderModule.h:180
Belle2::ECLLocalMaximumFinderModule::m_geom
ECL::ECLGeometryPar * m_geom
Geometry.
Definition: ECLLocalMaximumFinderModule.h:162
Belle2::ECLLocalMaximumFinderModule::m_truthFraction
double m_truthFraction
MC truth fraction.
Definition: ECLLocalMaximumFinderModule.h:147
Belle2::ECLLocalMaximumFinderModule::beginRun
virtual void beginRun() override
Begin.
Definition: ECLLocalMaximumFinderModule.cc:169
Belle2::ECLLocalMaximumFinderModule::m_eclDigits
StoreArray< ECLDigit > m_eclDigits
Store array: ECLDigit.
Definition: ECLLocalMaximumFinderModule.h:81
Belle2::ECLLocalMaximumFinderModule::m_CRId
float m_CRId
CR ID.
Definition: ECLLocalMaximumFinderModule.h:181
Belle2::ECLLocalMaximumFinderModule::c_nMaxNeighbours
const static unsigned c_nMaxNeighbours
Variables (possibly) used for MVA classification.
Definition: ECLLocalMaximumFinderModule.h:169
Belle2::ECLLocalMaximumFinderPureCsIModule::eclDigitArrayName
virtual const char * eclDigitArrayName() const override
Name to be used for PureCsI option: ECLHitsPureCsI.
Definition: ECLLocalMaximumFinderModule.h:206
Belle2::ECLLocalMaximumFinderModule::m_cutOffset
double m_cutOffset
cut offset
Definition: ECLLocalMaximumFinderModule.h:148
Belle2::ECLLocalMaximumFinderModule::m_cellId
float m_cellId
local maximum center cell Id
Definition: ECLLocalMaximumFinderModule.h:177
Belle2::ECLLocalMaximumFinderModule::addToSignalEnergy
void addToSignalEnergy(int &motherpdg, int &motherindex, int &pi0index, const double &weight)
Add energy to vector.
Definition: ECLLocalMaximumFinderModule.cc:516
Belle2::ECLLocalMaximumFinderModule::m_LMId
float m_LMId
LM ID.
Definition: ECLLocalMaximumFinderModule.h:182
Belle2::ECLLocalMaximumFinderModule::m_neighbourMap
ECL::ECLNeighbours * m_neighbourMap
Neighbour maps.
Definition: ECLLocalMaximumFinderModule.h:159
Belle2::ECLLocalMaximumFinderModule::m_mcParticles
StoreArray< MCParticle > m_mcParticles
Store array: MCParticle.
Definition: ECLLocalMaximumFinderModule.h:75
Belle2::ECLLocalMaximumFinderModule::ECLLocalMaximumFinderModule
ECLLocalMaximumFinderModule()
Constructor.
Definition: ECLLocalMaximumFinderModule.cc:53
Belle2::ECLLocalMaximumFinderModule::terminate
virtual void terminate() override
Terminate (close ROOT files here if you have opened any).
Definition: ECLLocalMaximumFinderModule.cc:358
Belle2::ECLLocalMaximumFinderModule::m_maxEnergyRatio
float m_maxEnergyRatio
Highest energetic neighbour energy divided by LM energy.
Definition: ECLLocalMaximumFinderModule.h:191
Belle2::ECLLocalMaximumFinderPureCsIModule::eclCalDigitArrayName
virtual const char * eclCalDigitArrayName() const override
Name to be used for PureCsI option: ECLCalDigitsPureCsI.
Definition: ECLLocalMaximumFinderModule.h:210
Belle2::ECLLocalMaximumFinderModule::m_eclHits
StoreArray< ECLHit > m_eclHits
Store array: ECLHit.
Definition: ECLLocalMaximumFinderModule.h:78
Belle2::ECLLocalMaximumFinderModule::resetTrainingVariables
void resetTrainingVariables()
Reset Debug Variables.
Definition: ECLLocalMaximumFinderModule.cc:393
Belle2::ECLLocalMaximumFinderModule::event
virtual void event() override
Event.
Definition: ECLLocalMaximumFinderModule.cc:174
Belle2::B2Vector3< double >
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::ECLLocalMaximumFinderModule::getEnteringMother
void getEnteringMother(const MCParticle &particle, int &pdg, int &arrayindex, int &pi0arrayindex)
Get enterging mother of this particle.
Definition: ECLLocalMaximumFinderModule.cc:432
Belle2::ECLLocalMaximumFinderModule::m_target
float m_target
MC truth variables.
Definition: ECLLocalMaximumFinderModule.h:185
Belle2::ECLLocalMaximumFinderModule::eclDigitArrayName
virtual const char * eclDigitArrayName() const
Name to be used for default or PureCsI option: ECLDigits.
Definition: ECLLocalMaximumFinderModule.h:101
Belle2::ECLLocalMaximumFinderModule::m_energy
float m_energy
Variables to monitor the MVA training.
Definition: ECLLocalMaximumFinderModule.h:174
Belle2::Unit::MeV
static const double MeV
[megaelectronvolt]
Definition: Unit.h:124
Belle2::ECLLocalMaximumFinderModule::m_eclLocalMaximums
StoreArray< ECLLocalMaximum > m_eclLocalMaximums
Store array: ECLLocalMaximum.
Definition: ECLLocalMaximumFinderModule.h:90
Belle2::ECLLocalMaximumFinderModule::eclConnectedRegionArrayName
virtual const char * eclConnectedRegionArrayName() const
Name to be used for default option: ECLConnectedRegions.
Definition: ECLLocalMaximumFinderModule.h:109
Belle2::ECL::ECLNeighbours
Class to get the neighbours for a given cell id.
Definition: ECLNeighbours.h:38
Belle2::ECLLocalMaximumFinderModule::isEnteringECL
bool isEnteringECL(const B2Vector3D &vec)
Check if particle is produced outside of the ECL.
Definition: ECLLocalMaximumFinderModule.cc:463
Belle2::ECLLocalMaximumFinderModule::~ECLLocalMaximumFinderModule
virtual ~ECLLocalMaximumFinderModule()
Destructor.
Definition: ECLLocalMaximumFinderModule.cc:80
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ECLLocalMaximumFinderModule::resetClassifierVariables
void resetClassifierVariables()
Reset Classifier Variables.
Definition: ECLLocalMaximumFinderModule.cc:410
Belle2::ECLLocalMaximumFinderModule::mcParticleArrayName
virtual const char * mcParticleArrayName() const
MCParticles.
Definition: ECLLocalMaximumFinderModule.h:93
Belle2::ECLLocalMaximumFinderPureCsIModule::eclLocalMaximumArrayName
virtual const char * eclLocalMaximumArrayName() const override
Name to be used for PureCsI option: ECLLocalMaximumsPureCsI.
Definition: ECLLocalMaximumFinderModule.h:218
Belle2::ECLLocalMaximumFinderModule::m_maxNeighbourEnergy
float m_maxNeighbourEnergy
highest energy of all neighbours
Definition: ECLLocalMaximumFinderModule.h:178
Belle2::ECLLocalMaximumFinderModule::m_cutRatioCorrection
double m_cutRatioCorrection
correction for nominator and denominator of the ratio.
Definition: ECLLocalMaximumFinderModule.h:150
Belle2::ECLLocalMaximumFinderModule::initialize
virtual void initialize() override
Initialize.
Definition: ECLLocalMaximumFinderModule.cc:85
Belle2::ECLLocalMaximumFinderModule::m_outfile
TFile * m_outfile
Output training files and trees.
Definition: ECLLocalMaximumFinderModule.h:165
Belle2::ECLLocalMaximumFinderModule::m_time
float m_time
time
Definition: ECLLocalMaximumFinderModule.h:171
Belle2::ECLLocalMaximumFinderModule::m_isTrainingMode
int m_isTrainingMode
training mode for MVA methods (i.e.
Definition: ECLLocalMaximumFinderModule.h:144
Belle2::ECLLocalMaximumFinderModule::eclCalDigitArrayName
virtual const char * eclCalDigitArrayName() const
Name to be used for default or PureCsI option: ECLCalDigits.
Definition: ECLLocalMaximumFinderModule.h:105
Belle2::ECLLocalMaximumFinderModule
Class to find connected regions.
Definition: ECLLocalMaximumFinderModule.h:50
Belle2::ECLLocalMaximumFinderModule::m_targetpi0index
float m_targetpi0index
target array index
Definition: ECLLocalMaximumFinderModule.h:187
Belle2::ECLLocalMaximumFinderPureCsIModule::eclConnectedRegionArrayName
virtual const char * eclConnectedRegionArrayName() const override
Name to be used for PureCsI option: ECLConnectedRegionsPureCsI.
Definition: ECLLocalMaximumFinderModule.h:214
Belle2::ECLLocalMaximumFinderModule::m_nNeighbours10
float m_nNeighbours10
Variables (possibly) used for cut classification.
Definition: ECLLocalMaximumFinderModule.h:190
Belle2::ECLLocalMaximumFinderModule::getMax
void getMax(int &maxtype, int &maxpos)
Get the highest energy deposition particle type.
Definition: ECLLocalMaximumFinderModule.cc:495
Belle2::ECLLocalMaximumFinderModule::makeLocalMaximum
void makeLocalMaximum(const ECLConnectedRegion &aCR, const int cellId, const int lmId)
Make local maximum for a given connected region.
Definition: ECLLocalMaximumFinderModule.cc:375
Belle2::ECLLocalMaximumFinderModule::eclLocalMaximumArrayName
virtual const char * eclLocalMaximumArrayName() const
Name to be used for default option: ECLLocalMaximums.
Definition: ECLLocalMaximumFinderModule.h:113
Belle2::ECLLocalMaximumFinderModule::m_eclConnectedRegions
StoreArray< ECLConnectedRegion > m_eclConnectedRegions
Store array: ECLConnectedRegion.
Definition: ECLLocalMaximumFinderModule.h:87
Belle2::ECLLocalMaximumFinderModule::m_StoreArrPosition
std::vector< int > m_StoreArrPosition
vector (8736+1 entries) with cell id to store array positions
Definition: ECLLocalMaximumFinderModule.h:156
Belle2::ECLLocalMaximumFinderModule::m_targetindex
float m_targetindex
target array index
Definition: ECLLocalMaximumFinderModule.h:186
Belle2::ECLLocalMaximumFinderModule::m_signalId
int m_signalId[10][5]
total energy per MC matching type of this digit
Definition: ECLLocalMaximumFinderModule.h:195
Belle2::ECL::ECLGeometryPar
The Class for ECL Geometry Parameters.
Definition: ECLGeometryPar.h:45
Belle2::MCParticle
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:43
Belle2::StoreArray< MCParticle >
Belle2::ECLConnectedRegion
Class to store connected regions (CRs)
Definition: ECLConnectedRegion.h:31
Belle2::ECLLocalMaximumFinderModule::eclHitArrayName
virtual const char * eclHitArrayName() const
Name to be used for default or PureCsI option: ECLHits.
Definition: ECLLocalMaximumFinderModule.h:97
Belle2::ECLLocalMaximumFinderModule::m_phiId
float m_phiId
local maximum center theta Id
Definition: ECLLocalMaximumFinderModule.h:176
Belle2::ECLLocalMaximumFinderModule::m_totalSignalEnergy
double m_totalSignalEnergy
total energy of this digit
Definition: ECLLocalMaximumFinderModule.h:193
Belle2::ECLLocalMaximumFinderModule::m_signalEnergy
double m_signalEnergy[10][5]
total energy per MC matching type of this digit
Definition: ECLLocalMaximumFinderModule.h:194
Belle2::ECLLocalMaximumFinderModule::m_eclCalDigits
StoreArray< ECLCalDigit > m_eclCalDigits
Store array: ECLCalDigit.
Definition: ECLLocalMaximumFinderModule.h:84
Belle2::ECLLocalMaximumFinderModule::m_method
std::string m_method
Method to find the local maximum.
Definition: ECLLocalMaximumFinderModule.h:146
Belle2::ECLLocalMaximumFinderModule::m_cutSlope
double m_cutSlope
cut slope.
Definition: ECLLocalMaximumFinderModule.h:149
Belle2::ECLLocalMaximumFinderModule::endRun
virtual void endRun() override
End run.
Definition: ECLLocalMaximumFinderModule.cc:352
Belle2::ECLLocalMaximumFinderModule::m_energyRatioNeighbour
float m_energyRatioNeighbour[c_nMaxNeighbours]
energy ratio of neighbour 0..9 to center
Definition: ECLLocalMaximumFinderModule.h:170
Belle2::ECLLocalMaximumFinderModule::m_thetaId
float m_thetaId
local maximum center theta Id
Definition: ECLLocalMaximumFinderModule.h:175
Belle2::ECLLocalMaximumFinderModule::m_outfileName
std::string m_outfileName
file name prefix of the training output file
Definition: ECLLocalMaximumFinderModule.h:145