Belle II Software  release-05-01-25
KLMStripEfficiencyCollectorModule.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Vitaliy Popov, Dmytro Minchenko *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 /* KLM headers. */
14 #include <klm/bklm/geometry/GeometryPar.h>
15 #include <klm/dataobjects/eklm/EKLMElementNumbers.h>
16 #include <klm/dataobjects/KLMDigit.h>
17 #include <klm/dataobjects/KLMElementNumbers.h>
18 #include <klm/dataobjects/KLMPlaneArrayIndex.h>
19 #include <klm/dbobjects/KLMChannelStatus.h>
20 
21 /* Belle 2 headers. */
22 #include <analysis/dataobjects/ParticleList.h>
23 #include <calibration/CalibrationCollectorModule.h>
24 #include <framework/database/DBObjPtr.h>
25 #include <framework/datastore/StoreArray.h>
26 #include <framework/datastore/StoreObjPtr.h>
27 #include <mdst/dataobjects/Track.h>
28 #include <tracking/dataobjects/ExtHit.h>
29 
30 /* ROOT headers. */
31 #include <TFile.h>
32 #include <TH1F.h>
33 #include <TTree.h>
34 
35 /* C++ headers. */
36 #include <map>
37 #include <string>
38 
39 namespace Belle2 {
51  class KLMStripEfficiencyCollectorModule : public CalibrationCollectorModule {
52 
53  private:
54 
58  struct HitData {
59 
61  int subdetector;
62 
64  int section;
65 
67  int layer;
68 
70  int sector;
71 
73  int plane;
74 
76  int strip;
77 
79  double localPosition;
80 
82  const ExtHit* hit;
83 
85  const KLMDigit* digit;
86 
87  };
88 
89  public:
90 
95 
100 
104  void prepare() override;
105 
109  void finish() override;
110 
114  void collect() override;
115 
119  void startRun() override;
120 
124  void closeRun() override;
125 
126  private:
127 
134  void addHit(std::map<uint16_t, struct HitData>& hitMap,
135  uint16_t planeGlobal, struct HitData* hitData);
136 
141  void findMatchingDigit(struct HitData* hitData);
142 
150  bool collectDataTrack(const Particle* muon, TH1F* matchedDigitsInPlane,
151  TH1F* allExtHitsInPlane);
152 
154  std::string m_MuonListName;
155 
160  double m_AllowedDistance1D;
161 
164 
167 
170 
172  bool m_RemoveUnusedMuons;
173 
176 
179 
182 
185 
188 
191 
194 
197 
200 
203 
205  bool m_Debug;
206 
208  std::string m_MatchingFileName;
209 
211  TFile* m_MatchingFile;
212 
214  TTree* m_MatchingTree;
215 
217  struct HitData m_MatchingHitData;
218 
220  int m_MatchedStrip;
221 
222  };
223 
225 }
Belle2::KLMStripEfficiencyCollectorModule::m_MuonList
StoreObjPtr< ParticleList > m_MuonList
Muons.
Definition: KLMStripEfficiencyCollectorModule.h:198
Belle2::KLMStripEfficiencyCollectorModule::HitData::layer
int layer
Layer.
Definition: KLMStripEfficiencyCollectorModule.h:75
Belle2::KLMStripEfficiencyCollectorModule::HitData::hit
const ExtHit * hit
Extrapolation hit.
Definition: KLMStripEfficiencyCollectorModule.h:90
Belle2::KLMStripEfficiencyCollectorModule::HitData::digit
const KLMDigit * digit
Digit.
Definition: KLMStripEfficiencyCollectorModule.h:93
Belle2::EKLMElementNumbers
EKLM element numbers.
Definition: EKLMElementNumbers.h:34
Belle2::KLMStripEfficiencyCollectorModule::m_ChannelStatus
DBObjPtr< KLMChannelStatus > m_ChannelStatus
Channel status.
Definition: KLMStripEfficiencyCollectorModule.h:186
Belle2::KLMStripEfficiencyCollectorModule::collect
void collect() override
This method is called for each event.
Definition: KLMStripEfficiencyCollectorModule.cc:157
Belle2::KLMStripEfficiencyCollectorModule::m_MatchingFile
TFile * m_MatchingFile
Matching data file.
Definition: KLMStripEfficiencyCollectorModule.h:219
Belle2::KLMStripEfficiencyCollectorModule::HitData
Hit data.
Definition: KLMStripEfficiencyCollectorModule.h:66
Belle2::KLMStripEfficiencyCollectorModule::HitData::subdetector
int subdetector
Subdetector.
Definition: KLMStripEfficiencyCollectorModule.h:69
Belle2::KLMStripEfficiencyCollectorModule::finish
void finish() override
Finish data processing.
Definition: KLMStripEfficiencyCollectorModule.cc:89
Belle2::KLMStripEfficiencyCollectorModule::m_MatchingFileName
std::string m_MatchingFileName
Matching data file name.
Definition: KLMStripEfficiencyCollectorModule.h:216
Belle2::KLMStripEfficiencyCollectorModule::m_MinimalMatchingDigits
int m_MinimalMatchingDigits
Minimal number of matching digits.
Definition: KLMStripEfficiencyCollectorModule.h:171
Belle2::KLMStripEfficiencyCollectorModule::m_MatchingTree
TTree * m_MatchingTree
Matching data tree.
Definition: KLMStripEfficiencyCollectorModule.h:222
Belle2::KLMPlaneArrayIndex
KLM plane array index.
Definition: KLMPlaneArrayIndex.h:33
Belle2::KLMStripEfficiencyCollectorModule::~KLMStripEfficiencyCollectorModule
virtual ~KLMStripEfficiencyCollectorModule()
Destructor.
Definition: KLMStripEfficiencyCollectorModule.cc:55
Belle2::KLMStripEfficiencyCollectorModule::m_MatchedStrip
int m_MatchedStrip
Matched strip.
Definition: KLMStripEfficiencyCollectorModule.h:228
Belle2::KLMStripEfficiencyCollectorModule::m_MinimalMomentumNoOuterLayers
double m_MinimalMomentumNoOuterLayers
Minimal momentum in case there are no hits in outer layers.
Definition: KLMStripEfficiencyCollectorModule.h:177
Belle2::KLMStripEfficiencyCollectorModule::m_GeometryBKLM
const bklm::GeometryPar * m_GeometryBKLM
BKLM geometry.
Definition: KLMStripEfficiencyCollectorModule.h:207
Belle2::KLMDigit
KLM digit (class representing a digitized hit in RPCs or scintillators).
Definition: KLMDigit.h:40
Belle2::bklm::GeometryPar
Provides BKLM geometry parameters for simulation, reconstruction etc (from Gearbox or DataBase)
Definition: GeometryPar.h:48
Belle2::KLMStripEfficiencyCollectorModule::m_MatchingHitData
struct HitData m_MatchingHitData
Matching hit data.
Definition: KLMStripEfficiencyCollectorModule.h:225
Belle2::KLMStripEfficiencyCollectorModule::HitData::localPosition
double localPosition
Local coordinate.
Definition: KLMStripEfficiencyCollectorModule.h:87
Belle2::KLMStripEfficiencyCollectorModule::HitData::section
int section
Section.
Definition: KLMStripEfficiencyCollectorModule.h:72
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::KLMStripEfficiencyCollectorModule::m_IgnoreBackwardPropagation
bool m_IgnoreBackwardPropagation
Whether to ignore ExtHits with backward propagation.
Definition: KLMStripEfficiencyCollectorModule.h:183
Belle2::KLMStripEfficiencyCollectorModule::m_Digits
StoreArray< KLMDigit > m_Digits
KLM digits.
Definition: KLMStripEfficiencyCollectorModule.h:189
Belle2::KLMStripEfficiencyCollectorModule::m_RemoveUnusedMuons
bool m_RemoveUnusedMuons
Whether to remove unused muons.
Definition: KLMStripEfficiencyCollectorModule.h:180
Belle2::KLMStripEfficiencyCollectorModule::HitData::sector
int sector
Sector.
Definition: KLMStripEfficiencyCollectorModule.h:78
Belle2::KLMStripEfficiencyCollectorModule::m_PlaneArrayIndex
const KLMPlaneArrayIndex * m_PlaneArrayIndex
Plane array index.
Definition: KLMStripEfficiencyCollectorModule.h:210
Belle2::ExtHit
Store one Ext hit as a ROOT object.
Definition: ExtHit.h:40
Belle2::KLMStripEfficiencyCollectorModule::m_AllowedDistance1D
double m_AllowedDistance1D
Maximal distance in the units of strip number from ExtHit to matching KLMDigit.
Definition: KLMStripEfficiencyCollectorModule.h:168
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::KLMStripEfficiencyCollectorModule::closeRun
void closeRun() override
This method is called at the end of run.
Definition: KLMStripEfficiencyCollectorModule.cc:153
Belle2::KLMStripEfficiencyCollectorModule::addHit
void addHit(std::map< uint16_t, struct HitData > &hitMap, uint16_t planeGlobal, struct HitData *hitData)
Add hit to map.
Definition: KLMStripEfficiencyCollectorModule.cc:180
Belle2::KLMStripEfficiencyCollectorModule::m_MinimalMatchingDigitsOuterLayers
int m_MinimalMatchingDigitsOuterLayers
Minimal number of matching digits in outer layers.
Definition: KLMStripEfficiencyCollectorModule.h:174
Belle2::KLMStripEfficiencyCollectorModule::m_MuonListName
std::string m_MuonListName
Muon list name.
Definition: KLMStripEfficiencyCollectorModule.h:162
Belle2::KLMStripEfficiencyCollectorModule::startRun
void startRun() override
This method is called at the beginning of the run.
Definition: KLMStripEfficiencyCollectorModule.cc:99
Belle2::KLMStripEfficiencyCollectorModule::prepare
void prepare() override
Initializer.
Definition: KLMStripEfficiencyCollectorModule.cc:59
Belle2::KLMStripEfficiencyCollectorModule::m_ElementNumbers
const KLMElementNumbers * m_ElementNumbers
Element numbers.
Definition: KLMStripEfficiencyCollectorModule.h:201
Belle2::KLMStripEfficiencyCollectorModule::m_eklmElementNumbers
const EKLMElementNumbers * m_eklmElementNumbers
EKLM element numbers.
Definition: KLMStripEfficiencyCollectorModule.h:204
Belle2::KLMStripEfficiencyCollectorModule::HitData::strip
int strip
Strip.
Definition: KLMStripEfficiencyCollectorModule.h:84
Belle2::Particle
Class to store reconstructed particles.
Definition: Particle.h:77
Belle2::KLMStripEfficiencyCollectorModule::findMatchingDigit
void findMatchingDigit(struct HitData *hitData)
Find matching digit.
Definition: KLMStripEfficiencyCollectorModule.cc:196
Belle2::KLMElementNumbers
KLM element numbers.
Definition: KLMElementNumbers.h:37
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::KLMStripEfficiencyCollectorModule::collectDataTrack
bool collectDataTrack(const Particle *muon, TH1F *matchedDigitsInPlane, TH1F *allExtHitsInPlane)
Collect the data for one muon.
Definition: KLMStripEfficiencyCollectorModule.cc:219
Belle2::KLMStripEfficiencyCollectorModule::m_Debug
bool m_Debug
Debug mode.
Definition: KLMStripEfficiencyCollectorModule.h:213
Belle2::KLMStripEfficiencyCollectorModule::HitData::plane
int plane
Plane.
Definition: KLMStripEfficiencyCollectorModule.h:81
Belle2::KLMStripEfficiencyCollectorModule::m_extHits
StoreArray< ExtHit > m_extHits
ExtHits.
Definition: KLMStripEfficiencyCollectorModule.h:195
Belle2::KLMStripEfficiencyCollectorModule::m_tracks
StoreArray< Track > m_tracks
Tracks.
Definition: KLMStripEfficiencyCollectorModule.h:192
Belle2::KLMStripEfficiencyCollectorModule::KLMStripEfficiencyCollectorModule
KLMStripEfficiencyCollectorModule()
Constructor.
Definition: KLMStripEfficiencyCollectorModule.cc:22