Belle II Software development
DQMHistAnalysisSVDOnMiraBelle.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 <dqm/core/DQMHistAnalysis.h>
12#include <vxd/dataobjects/VxdID.h>
13#include <vxd/geometry/GeoTools.h>
14#include <svd/dbobjects/SVDDQMPlotsConfiguration.h>
15#include <framework/database/DBObjPtr.h>
16
17#include <vector>
18
19#include <TROOT.h>
20#include <TCanvas.h>
21#include <TH1F.h>
22#include <TH2F.h>
23
24namespace Belle2 {
29
32
33 public:
34
40 void initialize() override final;
42 void beginRun() override final;
44 void event() override final;
46 void endRun() override final;
48 void terminate() override final;
49
50 private:
51
53 TCanvas* m_c_avgEfficiency = nullptr;
54 TCanvas* m_c_avgOffOccupancy = nullptr;
55 TCanvas* m_c_MPVChargeClusterOnTrack = nullptr;
56 TCanvas* m_c_MPVSNRClusterOnTrack = nullptr;
57 TCanvas* m_c_MPVTimeClusterOnTrack = nullptr;
59 nullptr;
60 TCanvas* m_c_MeanSVDEventT0 = nullptr;
61
63
66
68 std::vector<VxdID> m_SVDModules;
69
71 const VXD::GeoTools* m_gTools = nullptr;
72
74 std::vector<std::string> m_listOfSensorsToMonitor;
75
85 std::pair<float, float> avgOccupancyUV(TH1F* hU, TH1F* hV, int nEvents, int layer = -1, int ladder = -1, int sensor = -1) const;
86
93 std::pair<float, float> avgOccupancyGrpId0UV(int iLayer, int nEvents) const;
94
102 std::pair<float, float> avgEfficiencyUV(TH2F* hMCU, TH2F* hMCV, TH2F* hFTU, TH2F* hFTV, int layer = -1, int ladder = -1,
103 int sensor = -1) const;
104
110 float xForMaxY(TH1F* h) const;
111
117 float histFWHM(TH1F* h) const;
118
124 void addVariable(std::string name, std::pair<float, float>& varUV);
125
127 Int_t findBinY(Int_t layer, Int_t sensor) const
128 {
129 // should take the method from SVDSummaryPlot (->put as static)
130 if (layer == 3)
131 return sensor; //2
132 if (layer == 4)
133 return 2 + 1 + sensor; //6
134 if (layer == 5)
135 return 6 + 1 + sensor; // 11
136 if (layer == 6)
137 return 11 + 1 + sensor; // 17
138 else
139 return -1;
140 }
141
143 Int_t getNumberOfLadders(Int_t layer) const
144 {
145 if (layer == 3)
146 return 7;
147 if (layer == 4)
148 return 10;
149 if (layer == 5)
150 return 12;
151 if (layer == 6)
152 return 16;
153 else
154 return -1;
155 }
156
158 Int_t getNumberOfSensors(Int_t layer) const
159 {
160 if (layer == 3)
161 return 2;
162 if (layer == 4)
163 return 3;
164 if (layer == 5)
165 return 4;
166 if (layer == 6)
167 return 5;
168 else
169 return -1;
170 }
171
172 };
173
177#define SetVariable(x) addVariable(#x , x)
178
180} // end namespace Belle2
181
182
183
184
185
Class for accessing objects in the database.
Definition DBObjPtr.h:21
DQMHistAnalysisModule()
Constructor / Destructor.
void initialize() override final
Module function initialize.
float histFWHM(TH1F *h) const
Calculate full width at half maximum of histogram.
TCanvas * m_c_MPVTimeClusterOnTrack
time for clusters on track
std::vector< VxdID > m_SVDModules
IDs of all SVD Modules to iterate over.
const VXD::GeoTools * m_gTools
geometrical tool pointer
void addVariable(std::string name, std::pair< float, float > &varUV)
Add variable to object monitoring.
TCanvas * m_c_MPVChargeClusterOnTrack
charge for clusters on track
DBObjPtr< SVDDQMPlotsConfiguration > m_svdPlotsConfig
SVD DQM plots configuration.
MonitoringObject * m_monObj
Monitoring Object to be produced by this module, which contain defined canvases and monitoring variab...
TCanvas * m_c_avgEfficiency
List of canvases to be added to MonitoringObject.
void terminate() override final
Module function terminate.
Int_t findBinY(Int_t layer, Int_t sensor) const
find the Y bin given the layer and sensor number
void event() override final
Module function event.
std::pair< float, float > avgOccupancyGrpId0UV(int iLayer, int nEvents) const
Calculate avg offline occupancy for specified layer for time group id = 0.
std::pair< float, float > avgOccupancyUV(TH1F *hU, TH1F *hV, int nEvents, int layer=-1, int ladder=-1, int sensor=-1) const
Calculate avg offline occupancy for one specific sensor, especially.
std::pair< float, float > avgEfficiencyUV(TH2F *hMCU, TH2F *hMCV, TH2F *hFTU, TH2F *hFTV, int layer=-1, int ladder=-1, int sensor=-1) const
Calculate avg efficiency for specified sensors.
TCanvas * m_c_MPVSNRClusterOnTrack
SNR for clusters on track.
Int_t getNumberOfLadders(Int_t layer) const
get number of ladders per layer
void endRun() override final
Module function endRun.
float xForMaxY(TH1F *h) const
Calculate abscissa of max Y bin.
TCanvas * m_c_avgOffOccupancy
number of ZS5 fired strips
void beginRun() override final
Module function beginRun.
TCanvas * m_c_avgMaxBinClusterOnTrack
average number of the APV sample which corresponds to the maximum amplitude for clusters on track
std::vector< std::string > m_listOfSensorsToMonitor
list of sensor to monitor (Charge, SNR, time; U/V) taken from DB (payload)
Int_t getNumberOfSensors(Int_t layer) const
get number of sensors per layer
MonitoringObject is a basic object to hold data for the run-dependency monitoring Run summary TCanvas...
The class collects utility functions for numbering layers, sensors snd chips based on current VXD geo...
Definition GeoTools.h:25
Abstract base class for different kinds of events.