Belle II Software  release-06-02-00
BKLMTrackingModule.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 /* KLM headers. */
12 #include <klm/dataobjects/bklm/BKLMHit2d.h>
13 #include <klm/dataobjects/bklm/BKLMTrack.h>
14 #include <klm/bklm/geometry/GeometryPar.h>
15 
16 /* Belle 2 headers. */
17 #include <framework/core/Module.h>
18 #include <framework/datastore/StoreArray.h>
19 #include <tracking/dataobjects/RecoTrack.h>
20 
21 /* ROOT headers. */
22 #include <TEfficiency.h>
23 #include <TFile.h>
24 #include <TH1F.h>
25 #include <TH2F.h>
26 
27 namespace Belle2 {
34 
37  class BKLMTrackingModule: public Module {
38 
39  public:
40 
43 
46 
48  void initialize() override;
49 
51  void beginRun() override;
52 
54  void event() override;
55 
57  void endRun() override;
58 
60  void terminate() override;
61 
63  bool sameSector(BKLMHit2d* hit1, BKLMHit2d* hit2);
64 
66  bool findClosestRecoTrack(BKLMTrack* bklmTrk, RecoTrack*& closestTrack);
67 
68 
69  protected:
70 
73 
76 
78  double m_maxAngleRequired = 10;
79 
82 
84  std::string m_outPath = "bklmEffi.root";
85 
86  private:
87 
90 
92  TFile* m_file = nullptr;
93 
95  TH1F* m_total[2][8];
96 
98  TH1F* m_pass[2][8];
99 
101  TEfficiency* m_effiVsLayer[2][8];
102 
104  //TEfficiency* m_effiYX;
105  TH2F* m_effiYX;
106 
108  //TEfficiency* m_effiYZ;
109  TH2F* m_effiYZ;
110 
112  TH2F* m_passYX;
113 
115  TH2F* m_totalYX;
116 
118  TH2F* m_passYZ;
119 
121  TH2F* m_totalYZ;
124 
127 
130 
133 
135  void runTracking(int mode, int section, int sector, int layer);
136 
138  void generateEffi(int section, int sector, int layer);
139 
141  static bool sortByLayer(BKLMHit2d* hit1, BKLMHit2d* hit2);
142 
144  bool isLayerUnderStudy(int section, int iSector, int iLayer, BKLMHit2d* hit);
145 
147  bool isSectorUnderStudy(int section, int iSector, BKLMHit2d* hit);
148 
150  double distanceToHit(BKLMTrack* track, BKLMHit2d* hit,
151  double& error,
152  double& sigma);
153 
155  std::vector<int> m_runNumber;
156 
159 
161  std::vector<int> m_totalEvents;
162 
165 
167  std::vector<int> m_totalEventsWithTracks;
168  };
170 } // end namespace Belle2
Store one BKLM strip hit as a ROOT object.
Definition: BKLMHit2d.h:32
Store one BKLM Track as a ROOT object.
Definition: BKLMTrack.h:35
This module perform straight line track finding and fitting for BKLM.
bool m_MatchToRecoTrack
whether match BKLMTrack to RecoTrack
TEfficiency * m_effiVsLayer[2][8]
Efficieny of each layer.
std::vector< int > m_runNumber
run number
bool findClosestRecoTrack(BKLMTrack *bklmTrk, RecoTrack *&closestTrack)
find the closest RecoTrack, match BKLMTrack to RecoTrack, if the matched RecoTrack is found,...
TH2F * m_passYZ
passed event at global position Y vs Z
TH2F * m_effiYX
Efficieny at global position Y vs X.
bool m_studyEffi
option for efficieny study mode, in this mode, the layer under study should not be used in tracking
double m_maxAngleRequired
angle required between RecoTrack and BKLMTrack, if openangle is larger than m_maxAngleRequired,...
void initialize() override
Initialize at start of job.
std::string m_outPath
output file name containing efficiencies plots
void event() override
Unpack one event and create digits.
void endRun() override
end run stuff
StoreArray< RecoTrack > recoTracks
RecoTrack StoreArray.
void runTracking(int mode, int section, int sector, int layer)
run the track finding and fitting
void terminate() override
Terminate at the end of job.
bklm::GeometryPar * m_GeoPar
bklm GeometryPar
TH1F * m_pass[2][8]
Numerator of each layer.
TH2F * m_totalYX
total event at global position Y vs X
StoreArray< RecoHitInformation > recoHitInformation
RecoHitInformation StoreArray.
int m_runTotalEventsWithTracks
total number of processed events in the run with at lease one BKLMTrack
void beginRun() override
begin run stuff
StoreArray< BKLMHit2d > hits2D
BKLMHit2d StoreArray.
TFile * m_file
TFile that store efficieny plots.
std::vector< int > m_totalEvents
total number of processed events
double distanceToHit(BKLMTrack *track, BKLMHit2d *hit, double &error, double &sigma)
calculate distance from track to hit
TH1F * m_total[2][8]
Denominator of each layer.
bool isLayerUnderStudy(int section, int iSector, int iLayer, BKLMHit2d *hit)
judge whether the current layer is understudy
StoreArray< BKLMTrack > m_storeTracks
BKLMTrack StoreArray.
bool m_globalFit
do the BKLMTrack fitting in global system (multi-sectors track) or local system (sector by sector)
bool sameSector(BKLMHit2d *hit1, BKLMHit2d *hit2)
Judge if two hits come from the same sector.
std::vector< int > m_totalEventsWithTracks
total number of processed events with at least one BKLMTrack
TH2F * m_effiYZ
Efficieny at global position Y vs Z.
TH2F * m_totalYZ
total event at global position Y vs Z
bool isSectorUnderStudy(int section, int iSector, BKLMHit2d *hit)
judge whether the hits come from the sctor understudy
static bool sortByLayer(BKLMHit2d *hit1, BKLMHit2d *hit2)
my defined sort function using layer number
int m_runTotalEvents
total number of processed events in the run
TH2F * m_passYX
passed event at global position Y vs X
void generateEffi(int section, int sector, int layer)
calculate efficiency
Base class for Modules.
Definition: Module.h:72
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:76
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Provides BKLM geometry parameters for simulation, reconstruction etc (from Gearbox or DataBase)
Definition: GeometryPar.h:38
Abstract base class for different kinds of events.