Belle II Software  release-06-02-00
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 
31 namespace Belle2 {
44  class SVDPerformanceModule : public Module {
45 
46  public:
47 
49 
50  virtual ~SVDPerformanceModule();
51  virtual void initialize() override;
52  virtual void beginRun() override;
53  virtual void event() override;
54  virtual void endRun() override;
55  virtual void terminate() override;
56 
57  std::string m_ShaperDigitName = "SVDShaperDigits";
58  std::string m_RecoDigitName = "SVDRecoDigits";
59  std::string m_ClusterName = "SVDClusters";
60  std::string m_TrackFitResultName = "TrackFitResults";
61  std::string m_TrackName = "Tracks";
62  bool m_is2017TBanalysis = false;
63  bool m_isSimulation = false;
65  float m_debugLowTime = - 100;
68  /* user-defined parameters */
69  std::string m_rootFileName = "";
71  /* ROOT file related parameters */
72  TFile* m_rootFilePtr = nullptr;
74  private:
75 
76  int m_nEvents = 0;
90 
92  std::string m_svdEventInfoName;
93 
94  int m_ntracks = 0;
96  static const int m_nLayers = 4;
97  static const int m_nSensors = 5;
98  static const int m_nSides = 2;
100  unsigned int sensorsOnLayer[4] = {0};
102  TList* m_histoList_track = nullptr;
103  TList* m_histoList_corr = nullptr;
104  TList* m_histoList_clTRK[m_nLayers] = {nullptr};
105  TList* m_histoList_cluster[m_nLayers] = {nullptr};
106  TList* m_histoList_shaper[m_nLayers] = {nullptr};
107  TList* m_histoList_reco[m_nLayers] = {nullptr};
109  //TRACKS
110  TH1F* m_nTracks = nullptr;
111  TH1F* m_Pvalue = nullptr;
112  TH1F* m_mom = nullptr;
113  TH1F* m_nSVDhits = nullptr;
115  //SHAPER
116  TH1F* h_nShaper[m_nLayers][m_nSensors][m_nSides] = {nullptr};
118  //RECO
119  TH1F* h_nReco[m_nLayers][m_nSensors][m_nSides] = {nullptr};
120  TH1F* h_recoCharge[m_nLayers][m_nSensors][m_nSides] = {nullptr};
121  TH1F* h_recoEnergy[m_nLayers][m_nSensors][m_nSides] = {nullptr};
122  TH1F* h_stripNoise[m_nLayers][m_nSensors][m_nSides] = {nullptr};
123  TH1F* h_recoTime[m_nLayers][m_nSensors][m_nSides] = {nullptr};
125  //CLUSTERS NOT RELATED TO TRACKS
126  TH1F* h_nCl[m_nLayers][m_nSensors][m_nSides] = {nullptr};
127  TH1F* h_clSize[m_nLayers][m_nSensors][m_nSides] = {nullptr};
128  TH1F* h_clCharge[m_nLayers][m_nSensors][m_nSides] = {nullptr};
129  TH1F* h_clEnergy[m_nLayers][m_nSensors][m_nSides] = {nullptr};
134  TH2F* h_clNuVSNv[m_nLayers][m_nSensors] = {nullptr};
135  TH2F* h_clCoorUVSCoorV[m_nLayers][m_nSensors] = {nullptr};
140  TH1F* h_clSN[m_nLayers][m_nSensors][m_nSides] = {nullptr};
141  TH1F* h_clTime[m_nLayers][m_nSensors][m_nSides] = {nullptr};
146  TH2F* h_clSNVSSize[m_nLayers][m_nSensors][m_nSides] = {nullptr};
150  //CLUSTERS RELATED TO TRACKS
151  TH1F* h_nCltrk[m_nLayers][m_nSensors][m_nSides] = {nullptr};
152  TH1F* h_cltrkSize[m_nLayers][m_nSensors][m_nSides] = {nullptr};
155  TH1F* h_cltrkSN[m_nLayers][m_nSensors][m_nSides] = {nullptr};
156  TH1F* h_cltrkTime[m_nLayers][m_nSensors][m_nSides] = {nullptr};
166  //1-STRIP CLUSTERS
168  TH1F* h_1cltrkSN[m_nLayers][m_nSensors][m_nSides] = {nullptr};
170  //2-STRIP CLUSTERS
172  TH1F* h_2cltrkSN[m_nLayers][m_nSensors][m_nSides] = {nullptr};
174  //CORRELATIONS
175  TH1F* h_cltrk_UU = nullptr;
176  TH1F* h_cltrk_VV = nullptr;
177  TH1F* h_cltrk_UV = nullptr;
179  TH2F* h_cltrkTime_L4uL5u = nullptr;
180  TH2F* h_cltrkTime_L4vL5v = nullptr;
181  TH2F* h_cltrkTime_L5uL5v = nullptr;
184  int getSensor(int layer, int sensor, bool isTB)
185  {
186  int result = 0;
187  if (isTB) {
188  if (layer == 0)
189  result = sensor - 1;
190  else if (layer == 1 || layer == 2)
191  result = sensor - 2;
192  else if (layer == 3)
193  result = sensor - 3;
194  } else result = sensor - 1;
195 
196  return result;
197  }
198 
200  TH1F* createHistogram1D(const char* name, const char* title,
201  Int_t nbins, Double_t min, Double_t max,
202  const char* xtitle, TList* histoList = nullptr);
204  TH2F* createHistogram2D(const char* name, const char* title,
205  Int_t nbinsX, Double_t minX, Double_t maxX, const char* titleX,
206  Int_t nbinsY, Double_t minY, Double_t maxY, const char* titleY,
207  TList* histoList = nullptr);
208 
209  };
211 }
212 
213 
Base class for Modules.
Definition: Module.h:72
This class defines the dbobject and the method to access SVD calibrations from the noise local runs.
The (TB) SVD Performance Module.
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
Initialize the Module.
TH2F * h_clEnergyVSCoorV[m_nLayers][m_nSensors][m_nSides]
energy VS position V
StoreArray< SVDCluster > m_svdClusters
SVDCluster store array.
virtual void event() override
This method is the core of the module.
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
This method is called if the current run ends.
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.
virtual void terminate() override
This method is called at the end of the event processing.
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
Called when entering a new run.
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
TH1F * m_nTracks
number of tracks
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.
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:95
Abstract base class for different kinds of events.