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
38 void initialize() override final;
40 void beginRun() override final;
42 void event() override final;
44 void endRun() override final;
46 void terminate() override final;
47
48 private:
49
51 TCanvas* m_c_avgEfficiency = nullptr;
52 TCanvas* m_c_avgOffOccupancy = nullptr;
53 TCanvas* m_c_MPVChargeClusterOnTrack = nullptr;
54 TCanvas* m_c_MPVSNRClusterOnTrack = nullptr;
55 TCanvas* m_c_MPVTimeClusterOnTrack = nullptr;
57 nullptr;
58 TCanvas* m_c_MeanSVDEventT0 = nullptr;
59
61
64
66 std::vector<VxdID> m_SVDModules;
67
69 const VXD::GeoTools* m_gTools = nullptr;
70
72 std::vector<std::string> m_listOfSensorsToMonitor;
73
83 std::pair<float, float> avgOccupancyUV(TH1F* hU, TH1F* hV, int nEvents, int layer = -1, int ladder = -1, int sensor = -1) const;
84
91 std::pair<float, float> avgOccupancyGrpId0UV(int iLayer, int nEvents) const;
92
100 std::pair<float, float> avgEfficiencyUV(TH2F* hMCU, TH2F* hMCV, TH2F* hFTU, TH2F* hFTV, int layer = -1, int ladder = -1,
101 int sensor = -1) const;
102
108 float xForMaxY(TH1F* h) const;
109
115 float histFWHM(TH1F* h) const;
116
122 void addVariable(std::string name, std::pair<float, float>& varUV);
123
125 Int_t findBinY(Int_t layer, Int_t sensor) const
126 {
127 // should take the method from SVDSummaryPlot (->put as static)
128 if (layer == 3)
129 return sensor; //2
130 if (layer == 4)
131 return 2 + 1 + sensor; //6
132 if (layer == 5)
133 return 6 + 1 + sensor; // 11
134 if (layer == 6)
135 return 11 + 1 + sensor; // 17
136 else
137 return -1;
138 }
139
141 Int_t getNumberOfLadders(Int_t layer) const
142 {
143 if (layer == 3)
144 return 7;
145 if (layer == 4)
146 return 10;
147 if (layer == 5)
148 return 12;
149 if (layer == 6)
150 return 16;
151 else
152 return -1;
153 }
154
156 Int_t getNumberOfSensors(Int_t layer) const
157 {
158 if (layer == 3)
159 return 2;
160 if (layer == 4)
161 return 3;
162 if (layer == 5)
163 return 4;
164 if (layer == 6)
165 return 5;
166 else
167 return -1;
168 }
169
170 };
171
175#define SetVariable(x) addVariable(#x , x)
176
178} // end namespace Belle2
179
180
181
182
183
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.