Belle II Software prerelease-10-00-00a
SVDPerformanceModule.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#include <framework/core/Module.h>
11
12#include <framework/datastore/StoreArray.h>
13
14#include <svd/dataobjects/SVDCluster.h>
15#include <svd/dataobjects/SVDShaperDigit.h>
16#include <svd/dataobjects/SVDRecoDigit.h>
17#include <mdst/dataobjects/TrackFitResult.h>
18#include <mdst/dataobjects/Track.h>
19#include <tracking/dataobjects/RecoTrack.h>
20#include <svd/calibration/SVDPulseShapeCalibrations.h>
21#include <svd/calibration/SVDNoiseCalibrations.h>
22#include <svd/dataobjects/SVDEventInfo.h>
23
24#include <string>
25#include <TTree.h>
26#include <TFile.h>
27#include <TH1F.h>
28#include <TH2F.h>
29#include <TList.h>
30
31namespace Belle2 {
36
40
45
46 public:
47
50
53
54 virtual void initialize() override;
55 virtual void beginRun() override;
56 virtual void event() override;
57 virtual void endRun() override;
58
59 std::string m_ShaperDigitName = "SVDShaperDigits";
60 std::string m_RecoDigitName = "SVDRecoDigits";
61 std::string m_ClusterName = "SVDClusters";
62 std::string m_TrackFitResultName = "TrackFitResults";
63 std::string m_TrackName = "Tracks";
64 bool m_is2017TBanalysis = false;
65 bool m_isSimulation = false;
66
67 float m_debugLowTime = - 100;
68
69
70 /* user-defined parameters */
71 std::string m_rootFileName = "";
72
73 /* ROOT file related parameters */
74 TFile* m_rootFilePtr = nullptr;
75
76 private:
77
78 int m_nEvents = 0;
79
82
89
92
94 std::string m_svdEventInfoName;
95
96 int m_ntracks = 0;
97
98 static const int m_nLayers = 4;
99 static const int m_nSensors = 5;
100 static const int m_nSides = 2;
101
102 unsigned int sensorsOnLayer[4] = {0};
103
104 TList* m_histoList_track = nullptr;
105 TList* m_histoList_corr = nullptr;
106 TList* m_histoList_clTRK[m_nLayers] = {nullptr};
107 TList* m_histoList_cluster[m_nLayers] = {nullptr};
108 TList* m_histoList_shaper[m_nLayers] = {nullptr};
109 TList* m_histoList_reco[m_nLayers] = {nullptr};
110
111 //TRACKS
112 TH1F* m_nTracks = nullptr;
113 TH1F* m_Pvalue = nullptr;
114 TH1F* m_mom = nullptr;
115 TH1F* m_nSVDhits = nullptr;
116
117 //SHAPER
118 TH1F* h_nShaper[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
119
120 //RECO
121 TH1F* h_nReco[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
122 TH1F* h_recoCharge[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
123 TH1F* h_recoEnergy[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
124 TH1F* h_stripNoise[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
125 TH1F* h_recoTime[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
126
127 //CLUSTERS NOT RELATED TO TRACKS
128 TH1F* h_nCl[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
129 TH1F* h_clSize[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
130 TH1F* h_clCharge[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
131 TH1F* h_clEnergy[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
132 TH1F* h_clSeedMaxbin[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
136 TH2F* h_clNuVSNv[m_nLayers][m_nSensors] = {{nullptr}};
137 TH2F* h_clCoorUVSCoorV[m_nLayers][m_nSensors] = {{nullptr}};
142 TH1F* h_clSN[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
143 TH1F* h_clTime[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
148 TH2F* h_clSNVSSize[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
149 TH2F* h_clTimeVSSize[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
151
152 //CLUSTERS RELATED TO TRACKS
153 TH1F* h_nCltrk[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
154 TH1F* h_cltrkSize[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
155 TH1F* h_cltrkCharge[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
156 TH1F* h_cltrkEnergy[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
157 TH1F* h_cltrkSN[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
158 TH1F* h_cltrkTime[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
159 TH1F* h_cltrkTime_TB1[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
160 TH1F* h_cltrkTime_TB2[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
161 TH1F* h_cltrkTime_TB3[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
162 TH1F* h_cltrkTime_TB4[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
164 TH2F* h_cltrkSNVSSize[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
167
168 //1-STRIP CLUSTERS
169 TH1F* h_1cltrkCharge[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
170 TH1F* h_1cltrkSN[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
171
172 //2-STRIP CLUSTERS
173 TH1F* h_2cltrkCharge[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
174 TH1F* h_2cltrkSN[m_nLayers][m_nSensors][m_nSides] = {{{nullptr}}};
175
176 //CORRELATIONS
177 TH1F* h_cltrk_UU = nullptr;
178 TH1F* h_cltrk_VV = nullptr;
179 TH1F* h_cltrk_UV = nullptr;
180
181 TH2F* h_cltrkTime_L4uL5u = nullptr;
182 TH2F* h_cltrkTime_L4vL5v = nullptr;
183 TH2F* h_cltrkTime_L5uL5v = nullptr;
184
186 int getSensor(int layer, int sensor, bool isTB)
187 {
188 int result = 0;
189 if (isTB) {
190 if (layer == 0)
191 result = sensor - 1;
192 else if (layer == 1 || layer == 2)
193 result = sensor - 2;
194 else if (layer == 3)
195 result = sensor - 3;
196 } else result = sensor - 1;
197
198 return result;
199 }
200
202 TH1F* createHistogram1D(const char* name, const char* title,
203 Int_t nbins, Double_t min, Double_t max,
204 const char* xtitle, TList* histoList = nullptr);
206 TH2F* createHistogram2D(const char* name, const char* title,
207 Int_t nbinsX, Double_t minX, Double_t maxX, const char* titleX,
208 Int_t nbinsY, Double_t minY, Double_t maxY, const char* titleY,
209 TList* histoList = nullptr);
210
211 };
212
213}
214
215
Module()
Constructor.
Definition Module.cc:30
This class defines the dbobject and the method to access SVD calibrations from the noise local runs.
std::string m_rootFileName
root file name
TH2F * h_cltrkTimeVSTrueTime[m_nLayers][m_nSensors][m_nSides]
time VS true time
float m_debugLowTime
cluster Time below this number will produce a printout
TH1F * h_cltrk_UU
U time vs U time.
TH1F * h_recoTime[m_nLayers][m_nSensors][m_nSides]
time
TH2F * h_cltrkChargeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
TH1F * createHistogram1D(const char *name, const char *title, Int_t nbins, Double_t min, Double_t max, const char *xtitle, TList *histoList=nullptr)
Function returning a TH1F.
TH2F * h_cltrkSNVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
TH1F * h_clTime[m_nLayers][m_nSensors][m_nSides]
time
TList * m_histoList_reco[m_nLayers]
histo list reco digits
TList * m_histoList_corr
histo list correlations
TH2F * h_clEnergyVSSize_mb6[m_nLayers][m_nSensors][m_nSides]
energy VS size, max bin == 6
TH1F * h_clCoor1VSCoor2[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
TH2F * h_clEnergyUVSEnergyV[m_nLayers][m_nSensors]
energy VS position
TH1F * h_cltrkEnergy[m_nLayers][m_nSensors][m_nSides]
energy
TH2F * h_clNuVSNv[m_nLayers][m_nSensors]
N U culsters VS N V clusters.
std::string m_ShaperDigitName
ShaperDigits Store Array name.
virtual void initialize() override
check StoreArrays & create rootfile
TH2F * h_clEnergyVSCoorV[m_nLayers][m_nSensors][m_nSides]
energy VS position V
StoreArray< SVDCluster > m_svdClusters
SVDCluster store array.
virtual void event() override
fill histograms
TH1F * h_clCharge[m_nLayers][m_nSensors][m_nSides]
charge
StoreArray< TrackFitResult > m_tfr
TrackFitResult store array.
unsigned int sensorsOnLayer[4]
sensors on layer i
TH2F * h_clEnergyVSMaxbin[m_nLayers][m_nSensors][m_nSides]
energy VS maxbin seed
TH1F * h_nCltrk[m_nLayers][m_nSensors][m_nSides]
number per event
TH1F * h_cltrk_VV
V time vs V time.
SVDNoiseCalibrations m_NoiseCal
SVDNoise calibration db object.
virtual void endRun() override
write histogrmas
TH1F * h_cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
TH1F * h_recoCharge[m_nLayers][m_nSensors][m_nSides]
charge
static const int m_nLayers
max number of layers
TH2F * h_cltrkTime_L4uL5u
L4U time VS L5U time.
TH1F * h_cltrkTime_TB3[m_nLayers][m_nSensors][m_nSides]
time
TH2F * h_cltrkTimeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
TH2F * h_clEnergyVSSize_mb12[m_nLayers][m_nSensors][m_nSides]
energy VS size, maxbin == 1,2
TH1F * h_2cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
TH1F * h_nShaper[m_nLayers][m_nSensors][m_nSides]
number per event
static const int m_nSides
max number of sides
TH2F * h_cltrkTime_L5uL5v
L5U time VS L5V time.
TH1F * h_cltrkTime_TB4[m_nLayers][m_nSensors][m_nSides]
time
SVDPulseShapeCalibrations m_PulseShapeCal
SVDPulseShape calibration db object.
TH2F * h_clTimeVSTrueTime[m_nLayers][m_nSensors][m_nSides]
time VS true time
TH1F * h_1cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
std::string m_TrackName
Track StoreArray name.
std::string m_RecoDigitName
SVDRecoDigits Store Array name.
TH2F * h_clEnergyVSSize_mb345[m_nLayers][m_nSensors][m_nSides]
energy VS size, maxbin == 3,4,5
virtual void beginRun() override
create histograms
TH1F * h_nCl[m_nLayers][m_nSensors][m_nSides]
number per event
TH2F * h_clEnergyVSCoorU[m_nLayers][m_nSensors][m_nSides]
energy VS position U
TH1F * h_1cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
TH1F * h_clCellID1VSCellID2[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
TH1F * h_2cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
TH1F * h_cltrkTime_TB2[m_nLayers][m_nSensors][m_nSides]
time
std::string m_svdEventInfoName
Name of the SVDEventInfo object.
TList * m_histoList_track
histo list tracks
bool m_isSimulation
true if we analyze Simulated data
TH1F * h_cltrk_UV
U time vs V time.
std::string m_TrackFitResultName
TrackFitResult StoreArray name.
TList * m_histoList_clTRK[m_nLayers]
histo list clusters related to tracks
TH2F * h_clEnergy12VSdelta[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
TH2F * h_clCoorUVSCoorV[m_nLayers][m_nSensors]
energy VS position
TH1F * h_clEnergy[m_nLayers][m_nSensors][m_nSides]
energy
TH1F * h_clSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
static const int m_nSensors
max number of sensors
TList * m_histoList_shaper[m_nLayers]
histo list shaper digits
StoreArray< RecoTrack > m_recoTracks
RecoTracks store array.
TH2F * h_clChargeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
std::string m_ClusterName
SVDCluster StoreArray name.
TH1F * h_cltrkSize[m_nLayers][m_nSensors][m_nSides]
size
TH1F * h_stripNoise[m_nLayers][m_nSensors][m_nSides]
strip noise
TH1F * h_clSeedMaxbin[m_nLayers][m_nSensors][m_nSides]
maxbin seed
TH1F * h_nReco[m_nLayers][m_nSensors][m_nSides]
number per event
StoreArray< SVDRecoDigit > m_svdRecos
SVDRecoDigits store array.
TH2F * createHistogram2D(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, TList *histoList=nullptr)
Function returning TH2F.
virtual ~SVDPerformanceModule()
destructor
TH2F * h_clSNVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
TH2F * h_clTimeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
StoreArray< Track > m_Tracks
Tracks store array.
TH1F * h_recoEnergy[m_nLayers][m_nSensors][m_nSides]
energy
StoreObjPtr< SVDEventInfo > m_storeSVDEvtInfo
Storage for SVDEventInfo object.
TFile * m_rootFilePtr
pointer at root file used for storing histograms
TH2F * h_cltrkTime_L4vL5v
L4V time VS L5V time.
int getSensor(int layer, int sensor, bool isTB)
get sensor number
bool m_is2017TBanalysis
true if we analyze 2017 TB data
TH1F * h_cltrkTime[m_nLayers][m_nSensors][m_nSides]
time
TList * m_histoList_cluster[m_nLayers]
histo list clusters
TH1F * h_clSize[m_nLayers][m_nSensors][m_nSides]
size
StoreArray< SVDShaperDigit > m_svdShapers
SVDShaperDigit store array.
TH1F * h_cltrkTime_TB1[m_nLayers][m_nSensors][m_nSides]
time
TH1F * h_cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
This class defines the dbobject and the methods to access the SVD calibrations from the local runs pr...
Accessor to arrays stored in the data store.
Definition StoreArray.h:113
Type-safe access to single objects in the data store.
Definition StoreObjPtr.h:96
Abstract base class for different kinds of events.