Belle II Software development
DQMHistoModuleBase.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#include <framework/core/HistoModule.h>
12#include <framework/geometry/B2Vector3.h>
13#include <mdst/dataobjects/Track.h>
14#include <tracking/dataobjects/RecoTrack.h>
15#include <framework/core/ModuleParam.templateDetails.h>
16
17#include <TH1F.h>
18#include <TH2F.h>
19
20namespace Belle2 {
30
31 public:
32
37
42
46 virtual void initialize() override;
47
51 virtual void beginRun() override;
52
56 virtual void event() override;
57
60 virtual void defineHisto() override;
61
63 void runningOnHLT() {m_hltDQM = true;};
64
67 virtual TH1F* Create(std::string name, std::string title, int nbinsx, double xlow, double xup, std::string xTitle,
68 std::string yTitle);
70 virtual TH2F* Create(std::string name, std::string title, int nbinsx, double xlow, double xup, int nbinsy, double ylow, double yup,
71 std::string xTitle, std::string yTitle, std::string zTitle);
72
82 virtual TH1F** CreateLayers(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup,
83 std::string xTitle, std::string yTitle);
85 virtual TH2F** CreateLayers(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup,
86 int nbinsy, double ylow, double yup, std::string xTitle, std::string yTitle, std::string zTitle);
87
97 virtual TH1F** CreateSensors(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup,
98 std::string xTitle, std::string yTitle);
100 virtual TH2F** CreateSensors(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup,
101 int nbinsy, double ylow, double yup, std::string xTitle, std::string yTitle, std::string zTitle);
102
108 virtual void FillTrackIndexes(int iTrack, int iTrackVXD, int iTrackCDC, int iTrackVXDCDC);
110 virtual void FillHitNumbers(int nPXD, int nSVD, int nCDC);
112 virtual void FillMomentumAngles(const TrackFitResult* tfr);
114 virtual void FillMomentumCoordinates(const TrackFitResult* tfr);
116 virtual void FillHelixParametersAndCorrelations(const TrackFitResult* tfr);
118 virtual void FillTrackFitStatus(const genfit::FitStatus* tfs);
120 virtual void FillTRClusterCorrelations(float phi_deg, float phiPrev_deg, float theta_deg, float thetaPrev_deg,
121 int correlationIndex);
123 virtual void FillTRClusterHitmap(float phi_deg, float theta_deg, int layerIndex);
125 virtual void FillUBResidualsPXD(const B2Vector3D& residual_um);
127 virtual void FillUBResidualsSVD(const B2Vector3D& residual_um);
129 virtual void FillHalfShellsPXD(const B2Vector3D& globalResidual_um, bool isNotYang);
131 virtual void FillHalfShellsSVD(const B2Vector3D& globalResidual_um, bool isNotMat);
133 virtual void FillUB1DResidualsSensor(const B2Vector3D& residual_um, int sensorIndex);
135 virtual void FillUB2DResidualsSensor(const B2Vector3D& residual_um, int sensorIndex);
137
138 protected:
140 static std::string SensorNameDescription(VxdID sensorID);
142 static std::string SensorTitleDescription(VxdID sensorID);
143
148 static void ComputeMean(TH1F* output, TH2F* input, bool onX = true);
149
155 void ProcessHistogramParameterChange(const std::string& name, const std::string& parameter, const std::string& value);
157 void EditHistogramParameter(TH1* histogram, const std::string& parameter, std::string value);
158
164 virtual void DefineTracks();
166 virtual void DefineHits();
168 virtual void DefineMomentumAngles();
170 virtual void DefineMomentumCoordinates();
174 virtual void DefineTrackFitStatus();
176 virtual void DefineTRClusters();
178 virtual void DefineUBResidualsVXD();
180 virtual void DefineHalfShellsVXD();
182 virtual void Define1DSensors();
184 virtual void Define2DSensors();
186
189 std::vector<TH1*> m_histograms;
191 bool histogramsDefined = false;
193 bool m_hltDQM = false;
194
196 std::vector<std::tuple<std::string, std::string, std::string>> m_histogramParameterChanges;
201
203 TH1F* m_PValue = nullptr;
205 TH1F* m_Chi2 = nullptr;
207 TH1F* m_NDF = nullptr;
209 TH1F* m_Chi2NDF = nullptr;
211 TH2F* m_UBResidualsPXD = nullptr;
213 TH2F* m_UBResidualsSVD = nullptr;
215 TH2F** m_UBResidualsSensor = nullptr;
217 TH1F* m_UBResidualsPXDU = nullptr;
219 TH1F* m_UBResidualsSVDU = nullptr;
221 TH1F** m_UBResidualsSensorU = nullptr;
223 TH1F* m_UBResidualsPXDV = nullptr;
225 TH1F* m_UBResidualsSVDV = nullptr;
226
229 TH1F* m_UBResidualsPXDX_Yin = nullptr;
231 TH1F* m_UBResidualsPXDX_Yang = nullptr;
233 TH1F* m_UBResidualsSVDX_Pat = nullptr;
235 TH1F* m_UBResidualsSVDX_Mat = nullptr;
236
238 TH1F* m_UBResidualsPXDY_Yin = nullptr;
240 TH1F* m_UBResidualsPXDY_Yang = nullptr;
242 TH1F* m_UBResidualsSVDY_Pat = nullptr;
244 TH1F* m_UBResidualsSVDY_Mat = nullptr;
245
247 TH1F* m_UBResidualsPXDZ_Yin = nullptr;
249 TH1F* m_UBResidualsPXDZ_Yang = nullptr;
251 TH1F* m_UBResidualsSVDZ_Pat = nullptr;
253 TH1F* m_UBResidualsSVDZ_Mat = nullptr;
254
256 TH1F** m_UBResidualsSensorV = nullptr;
258 TH2F** m_TRClusterHitmap = nullptr;
263
265 TH1F* m_MomPhi = nullptr;
267 TH1F* m_MomTheta = nullptr;
269 TH1F* m_MomCosTheta = nullptr;
271 TH1F* m_MomX = nullptr;
273 TH1F* m_MomY = nullptr;
275 TH1F* m_MomZ = nullptr;
277 TH1F* m_MomPt = nullptr;
279 TH1F* m_Mom = nullptr;
281 TH1F* m_D0 = nullptr;
283 TH2F* m_PhiD0 = nullptr;
285 TH1F* m_Z0 = nullptr;
287 TH2F* m_D0Z0 = nullptr;
289 TH1F* m_Phi = nullptr;
291 TH1F* m_TanLambda = nullptr;
293 TH1F* m_Omega = nullptr;
294
296 TH1F* m_HitsPXD = nullptr;
298 TH1F* m_HitsSVD = nullptr;
300 TH1F* m_HitsCDC = nullptr;
302 TH1F* m_Hits = nullptr;
304 TH1F* m_TracksVXD = nullptr;
306 TH1F* m_TracksCDC = nullptr;
308 TH1F* m_TracksVXDCDC = nullptr;
310 TH1F* m_Tracks = nullptr;
311
312 private:
314 inline bool checkVariableForNANOrINF(const double var)
315 {
316 return std::isnan(var) or std::isinf(var);
317 }
318 };
319
320}
TH1F * m_Hits
Number of all hits in tracks.
virtual void Define1DSensors()
Define 1D histograms with unbiased residuals for individual sensors.
TH1F * m_UBResidualsSVDV
Unbiased residuals for SVD v.
bool histogramsDefined
True if the defineHisto() was called.
TH1F * m_MomTheta
Track momentum Pt.Theta.
TH1F * m_Tracks
Number of all finding tracks.
bool checkVariableForNANOrINF(const double var)
Check a variable for whether or not it is NAN or INF.
TH1F * m_UBResidualsPXDY_Yang
Unbiased residuals in Y for PXD for Yang.
TH1F * m_MomPt
Track momentum Pt.
TH1F * m_TanLambda
TanLambda - the slope of the track in the r-z plane.
TH1F ** m_UBResidualsSensorU
Unbiased residuals for PXD and SVD u per sensor.
virtual void FillHitNumbers(int nPXD, int nSVD, int nCDC)
Fill histograms with numbers of hits.
TH1F * m_UBResidualsPXDZ_Yang
Unbiased residuals in Z for PXD for Yang.
static std::string SensorTitleDescription(VxdID sensorID)
Creates string description of the sensor from given sensor ID to be used in a histogram title.
TH1F * m_UBResidualsPXDU
Unbiased residuals for PXD u.
std::vector< std::tuple< std::string, std::string, std::string > > m_histogramParameterChanges
Used for changing parameters of histograms via the ProcessHistogramParameterChange function.
virtual void DefineHalfShellsVXD()
Define histograms with unbiased residuals for half-shells for PXD and SVD sensors.
TH1F * m_TracksCDC
Number of tracks only with CDC.
TH1F * m_UBResidualsSVDY_Pat
Unbiased residuals in Y for PXD for Pat.
TH1F * m_HitsSVD
Number of hits on SVD.
virtual void initialize() override
Initializer.
virtual void DefineUBResidualsVXD()
Define histograms with unbiased residuals in PXD and SVD sensors.
std::vector< TH1 * > m_histograms
All histograms created via the Create- functions are automatically added to this set.
virtual void DefineTRClusters()
Define histograms with correlations between neighbor layers and cluster hitmap in IP angle range.
TH2F ** m_TRClusterHitmap
Track related clusters - hitmap in IP angle range.
void ProcessHistogramParameterChange(const std::string &name, const std::string &parameter, const std::string &value)
Process one change in histogram parameters.
TH1F * m_UBResidualsSVDZ_Mat
Unbiased residuals in Z for PXD for Mat.
TH1F * m_Omega
Omega - the curvature of the track.
virtual void event() override
This method is called for each event.
TH2F * m_UBResidualsPXD
Unbiased residuals for PXD u vs v.
static std::string SensorNameDescription(VxdID sensorID)
Creates string description of the sensor from given sensor ID to be used in a histogram name.
TH1F * m_TracksVXD
Number of tracks only with VXD.
TH1F * m_UBResidualsSVDX_Mat
Unbiased residuals in X for PXD for Mat.
virtual TH1F ** CreateSensors(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create array of TH1F histograms, one for each sensor.
TH1F * m_UBResidualsPXDX_Yang
Unbiased residuals in X for PXD for Yang.
virtual void DefineTrackFitStatus()
Define histograms which require FitStatus.
virtual void FillHalfShellsSVD(const B2Vector3D &globalResidual_um, bool isNotMat)
Fill histograms with unbiased residuals for half-shells for SVD sensors.
std::string m_tracksStoreArrayName
StoreArray name where Tracks are written.
TH1F * m_Mom
Track momentum Magnitude.
TH1F * m_UBResidualsPXDX_Yin
half-shells
TH1F * m_UBResidualsSVDU
Unbiased residuals for SVD u.
TH2F * m_PhiD0
d0 vs Phi - the signed distance to the IP in the r-phi plane
virtual void FillUB2DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 2D histograms with unbiased residuals for individual sensors.
virtual void FillUBResidualsPXD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in PXD sensors.
virtual TH1F * Create(std::string name, std::string title, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create TH1F and add it to the vector of histograms (m_histograms).
TH1F * m_MomX
Track momentum Pt.X.
virtual void FillTrackFitStatus(const genfit::FitStatus *tfs)
Fill histograms which require FitStatus.
virtual void FillTRClusterHitmap(float phi_deg, float theta_deg, int layerIndex)
Fill cluster hitmap in IP angle range.
TH1F * m_UBResidualsSVDX_Pat
Unbiased residuals in X for PXD for Pat.
TH2F ** m_TRClusterCorrelationsPhi
Track related clusters - neighbor correlations in Phi.
TH1F * m_UBResidualsSVDZ_Pat
Unbiased residuals in Z for PXD for Pat.
TH2F * m_UBResidualsSVD
Unbiased residuals for SVD u vs v.
TH1F * m_MomPhi
Track momentum Pt.Phi.
TH1F * m_Phi
Phi - the angle of the transverse momentum in the r-phi plane, with CDF naming convention.
virtual void beginRun() override
Called when entering a new run.
TH1F * m_MomCosTheta
Track momentum Pt.CosTheta.
virtual void DefineHits()
Define histograms with numbers of hits.
virtual void FillHelixParametersAndCorrelations(const TrackFitResult *tfr)
Fill histograms with helix parameters and their correlations.
TH2F ** m_UBResidualsSensor
Unbiased residuals for PXD and SVD u vs v per sensor.
TH1F * m_HitsCDC
Number of hits on CDC.
virtual void DefineMomentumCoordinates()
Define histograms with track momentum Pt.
virtual void FillMomentumCoordinates(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.
TH1F ** m_UBResidualsSensorV
Unbiased residuals for PXD and SVD v per sensor.
static void ComputeMean(TH1F *output, TH2F *input, bool onX=true)
Creates a graph of means by given axis from given TH2F histogram.
virtual void DefineTracks()
All the following Define- functions should be used in the defineHisto() function to define histograms...
bool m_hltDQM
True if the DQM module is run on HLT.
TH2F * m_D0Z0
z0 vs d0 - signed distance to the IP in r-phi vs.
virtual void FillHalfShellsPXD(const B2Vector3D &globalResidual_um, bool isNotYang)
Fill histograms with unbiased residuals for half-shells for PXD sensors.
virtual void Define2DSensors()
Define 2D histograms with unbiased residuals for individual sensors.
TH1F * m_UBResidualsPXDY_Yin
Unbiased residuals in Y for PXD for Yin.
TH1F * m_MomY
Track momentum Pt.Y.
TH1F * m_UBResidualsSVDY_Mat
Unbiased residuals in Y for PXD for Mat.
virtual void DefineMomentumAngles()
Define histograms with track momentum Pt.
virtual TH1F ** CreateLayers(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create array of TH1F histograms, one for each layer.
virtual void FillTrackIndexes(int iTrack, int iTrackVXD, int iTrackCDC, int iTrackVXDCDC)
Fill histograms with track indexes.
TH1F * m_HitsPXD
Number of hits on PXD.
void runningOnHLT()
function called when the module is run on HLT
TH1F * m_UBResidualsPXDZ_Yin
Unbiased residuals in Z for PXD for Yin.
std::string m_recoTracksStoreArrayName
StoreArray name where RecoTracks are written.
TH1F * m_TracksVXDCDC
Number of full tracks with VXD+CDC.
TH1F * m_MomZ
Track momentum Pt.Z.
TH1F * m_D0
d0 - the signed distance to the IP in the r-phi plane
TH1F * m_UBResidualsPXDV
Unbiased residuals for PXD v.
TH2F ** m_TRClusterCorrelationsTheta
Track related clusters - neighbor correlations in Theta.
virtual void FillTRClusterCorrelations(float phi_deg, float phiPrev_deg, float theta_deg, float thetaPrev_deg, int correlationIndex)
Fill histograms with correlations between neighbor layers.
virtual void FillMomentumAngles(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.
virtual void FillUBResidualsSVD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in SVD sensors.
virtual void DefineHelixParametersAndCorrelations()
Define histograms with helix parameters and their correlations.
TH1F * m_Z0
z0 - the z0 coordinate of the perigee (beam spot position)
virtual void FillUB1DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 1D histograms with unbiased residuals for individual sensors.
void EditHistogramParameter(TH1 *histogram, const std::string &parameter, std::string value)
On given histogram sets given parameter to given value.
virtual void defineHisto() override
Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
HistoModule()
Constructor.
Definition HistoModule.h:32
Values of the result of a track fit with a given particle hypothesis.
Class to uniquely identify a any structure of the PXD and SVD.
Definition VxdID.h:33
B2Vector3< double > B2Vector3D
typedef for common usage with double
Definition B2Vector3.h:516
Abstract base class for different kinds of events.