Belle II Software development
SVDDQMHitTimeModule.cc
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#include <svd/modules/svdDQM/SVDDQMHitTimeModule.h>
10#include <framework/core/HistoModule.h>
11#include <mdst/dataobjects/TRGSummary.h>
12#include <TDirectory.h>
13
14using namespace Belle2;
15
16REG_MODULE(SVDDQMHitTime);
17
18//---------------------------------
20{
21 setPropertyFlags(c_ParallelProcessingCertified); // parallel processing
22 setDescription("Make data quality monitoring plots for SVD Hit Time for bhabha, mu mu, and hadron samples seeded by different trigger times (ECL, CDC).");
23 addParam("histogramDirectoryName", m_histogramDirectoryName, "Name of the directory where histograms will be placed.",
24 std::string("SVDHitTime"));
25 addParam("Clusters", m_storeSVDClustersName, "SVDCluster StoreArray name.",
26 std::string(""));
27 addParam("EventInfo", m_storeSVDEventInfoName, "SVDEventInfo StoreObjPtr name.",
28 std::string(""));
29 addParam("desynchronizeSVDTime", m_desynchSVDTime,
30 "if True, svd time back in SVD time reference", bool(false));
31
32}
33
34//---------------------------------
36
37
38//---------------------------------
40{
41
42 TDirectory* oldDir = gDirectory;
43 oldDir->mkdir(m_histogramDirectoryName.c_str())->cd();
44
45 int nBins = 300 ;
46 double minT0 = -150 ;
47 double maxT0 = 150 ;
48
49 TString refFrame = "in FTSW reference";
51 refFrame = "in SVD reference";
52
53 m_l3v_bhabha_L1_ECLTRG = new TH1F("SVDTime_L3V_bhabha_ECLTRG",
54 Form("SVD L3 V-Side Cluster Time %s: bhabhas, ECLTRG time", refFrame.Data()),
55 nBins, minT0, maxT0);
56 m_l3v_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
57 m_l3vEvtT0_bhabha_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_bhabha_ECLTRG",
58 "SVD L3 V-Side Cluster Time - EventT0 : bhabhas, ECLTRG time",
59 nBins, minT0, maxT0);
60 m_l3vEvtT0_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
61
62 m_l3v_hadron_L1_ECLTRG = new TH1F("SVDTime_L3V_hadron_ECLTRG",
63 Form("SVD L3 V-Side Cluster Time %s: hadrons, ECLTRG time", refFrame.Data()),
64 nBins, minT0, maxT0);
65 m_l3v_hadron_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
66 m_l3vEvtT0_hadron_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_hadron_ECLTRG",
67 "SVD L3 V-Side Cluster Time - EventT0 : hadrons, ECLTRG time",
68 nBins, minT0, maxT0);
69 m_l3vEvtT0_hadron_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
70
71 m_l3v_mumu_L1_ECLTRG = new TH1F("SVDTime_L3V_mumu_ECLTRG",
72 Form("SVD L3 V-Side Cluster Time %s: mumus, ECLTRG time", refFrame.Data()),
73 nBins, minT0, maxT0);
74 m_l3v_mumu_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
75 m_l3vEvtT0_mumu_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_mumu_ECLTRG",
76 "SVD L3 V-Side Cluster Time - EventT0 : mumus, ECLTRG time",
77 nBins, minT0, maxT0);
78 m_l3vEvtT0_mumu_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
79
80 m_l3v_bhabha_L1_CDCTRG = new TH1F("SVDTime_L3V_bhabha_CDCTRG",
81 Form("SVD L3 V-Side Cluster Time %s: bhabhas, CDCTRG time", refFrame.Data()),
82 nBins, minT0, maxT0);
83 m_l3v_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
84 m_l3vEvtT0_bhabha_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_bhabha_CDCTRG",
85 "SVD L3 V-Side Cluster Time - EventT0 : bhabhas, CDCTRG time",
86 nBins, minT0, maxT0);
87 m_l3vEvtT0_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
88
89 m_l3v_hadron_L1_CDCTRG = new TH1F("SVDTime_L3V_hadron_CDCTRG",
90 Form("SVD L3 V-Side Cluster Time %s: hadrons, CDCTRG time", refFrame.Data()),
91 nBins, minT0, maxT0);
92 m_l3v_hadron_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
93 m_l3vEvtT0_hadron_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_hadron_CDCTRG",
94 "SVD L3 V-Side Cluster Time - EventT0 : hadrons, CDCTRG time",
95 nBins, minT0, maxT0);
96 m_l3vEvtT0_hadron_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
97
98 m_l3v_mumu_L1_CDCTRG = new TH1F("SVDTime_L3V_mumu_CDCTRG",
99 Form("SVD L3 V-Side Cluster Time %s: mumus, CDCTRG time", refFrame.Data()),
100 nBins, minT0, maxT0);
101 m_l3v_mumu_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
102 m_l3vEvtT0_mumu_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_mumu_CDCTRG",
103 "SVD L3 V-Side Cluster Time - EventT0 : mumus, CDCTRG time",
104 nBins, minT0, maxT0);
105 m_l3vEvtT0_mumu_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
106
107 m_SVD3EventT0 = new TH1F("SVD3EventT0", "SVD EventT0 for 3 samples", nBins, minT0, maxT0);
108 m_SVD3EventT0->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
109 m_SVD3EventT0->GetYaxis()->SetTitle("count");
110
111 m_SVD6EventT0 = new TH1F("SVD6EventT0", "SVD EventT0 for 6 samples", nBins, minT0, maxT0);
112 m_SVD6EventT0->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
113 m_SVD6EventT0->GetYaxis()->SetTitle("count");
114
115 m_SVD3EventT0_bhabha_L1_ECLTRG = new TH1F("SVD3EventT0_bhabha_L1_ECLTRG",
116 "SVD EventT0 3 samples : bhabhas, ECLTRG time",
117 nBins, minT0, maxT0);
118 m_SVD3EventT0_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
119
120 m_SVD3EventT0_hadron_L1_ECLTRG = new TH1F("SVD3EventT0_hadron_L1_ECLTRG",
121 "SVD EventT0 3 samples : hadrons, ECLTRG time",
122 nBins, minT0, maxT0);
123 m_SVD3EventT0_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
124
125 m_SVD3EventT0_mumu_L1_ECLTRG = new TH1F("SVD3EventT0_mumu_L1_ECLTRG",
126 "SVD EventT0 3 samples : mumus, ECLTRG time",
127 nBins, minT0, maxT0);
128 m_SVD3EventT0_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
129
130 m_SVD3EventT0_bhabha_L1_CDCTRG = new TH1F("SVD3EventT0_bhabha_L1_CDCTRG",
131 "SVD EventT0 3 samples : bhabhas, CDCTRG time",
132 nBins, minT0, maxT0);
133 m_SVD3EventT0_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
134
135 m_SVD3EventT0_hadron_L1_CDCTRG = new TH1F("SVD3EventT0_hadron_L1_CDCTRG",
136 "SVD EventT0 3 samples : hadrons, CDCTRG time",
137 nBins, minT0, maxT0);
138 m_SVD3EventT0_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
139
140 m_SVD3EventT0_mumu_L1_CDCTRG = new TH1F("SVD3EventT0_mumu_L1_CDCTRG",
141 "SVD EventT0 3 samples : mumus, CDCTRG time",
142 nBins, minT0, maxT0);
143 m_SVD3EventT0_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
144
145
146
147 m_SVD6EventT0_bhabha_L1_ECLTRG = new TH1F("SVD6EventT0_bhabha_L1_ECLTRG",
148 "SVD EventT0 6 samples : bhabhas, ECLTRG time",
149 nBins, minT0, maxT0);
150 m_SVD6EventT0_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
151
152 m_SVD6EventT0_hadron_L1_ECLTRG = new TH1F("SVD6EventT0_hadron_L1_ECLTRG",
153 "SVD EventT0 6 samples : hadrons, ECLTRG time",
154 nBins, minT0, maxT0);
155 m_SVD6EventT0_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
156
157 m_SVD6EventT0_mumu_L1_ECLTRG = new TH1F("SVD6EventT0_mumu_L1_ECLTRG",
158 "SVD EventT0 6 samples : mumus, ECLTRG time",
159 nBins, minT0, maxT0);
160 m_SVD6EventT0_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
161
162 m_SVD6EventT0_bhabha_L1_CDCTRG = new TH1F("SVD6EventT0_bhabha_L1_CDCTRG",
163 "SVD EventT0 6 samples : bhabhas, CDCTRG time",
164 nBins, minT0, maxT0);
165 m_SVD6EventT0_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
166
167 m_SVD6EventT0_hadron_L1_CDCTRG = new TH1F("SVD6EventT0_hadron_L1_CDCTRG",
168 "SVD EventT0 6 samples : hadrons, CDCTRG time",
169 nBins, minT0, maxT0);
170 m_SVD6EventT0_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
171
172 m_SVD6EventT0_mumu_L1_CDCTRG = new TH1F("SVD6EventT0_mumu_L1_CDCTRG",
173 "SVD EventT0 6 samples : mumus, CDCTRG time",
174 nBins, minT0, maxT0);
175 m_SVD6EventT0_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
176
177 oldDir->cd();
178
179}
180
181
182//---------------------------------
184{
185
186 m_TrgResult.isOptional();
187 m_eventT0.isOptional();
190
191 REG_HISTOGRAM
192
193}
194
195
196
197//---------------------------------
199{
200
201 m_l3v_bhabha_L1_ECLTRG->Reset();
203 m_l3v_hadron_L1_ECLTRG->Reset();
205 m_l3v_mumu_L1_ECLTRG->Reset();
207
208 m_l3v_bhabha_L1_CDCTRG->Reset();
210 m_l3v_hadron_L1_CDCTRG->Reset();
212 m_l3v_mumu_L1_CDCTRG->Reset();
214
215 m_SVD3EventT0->Reset();
216 m_SVD6EventT0->Reset();
217
224
231}
232
233
234//---------------------------------
236{
237
238 if (!m_TrgResult.isValid()) {
239 B2WARNING("Missing TRGSummary, SVDDQMHitTime is skipped.");
240 return;
241 }
242 if (!m_svdEventInfo.isValid()) {
243 B2WARNING("Missing SVDEventInfo, SVDDQMHitTime is skipped.");
244 return;
245 }
246
247
248
249 if (!m_clusters.isValid()) {
250 B2WARNING("Missing SVDClusters, SVDDQMHitTime is skipped.");
251 return;
252 }
253
254
255 if (!m_objTrgSummary.isValid()) {
256 B2WARNING("TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
257 return;
258 } else {
259 m_L1TimingSrc = m_objTrgSummary->getTimType();
260 }
261
262 bool Is_ECL_L1TriggerSource = false ;
263 bool Is_CDC_L1TriggerSource = false ;
264 if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_ECL) { // for L1 timing source is "ecl trigger"
265 Is_ECL_L1TriggerSource = true ;
266 } else if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_CDC) { // for L1 timing source is "cdc trigger"
267 Is_CDC_L1TriggerSource = true ;
268 }
269 // else if(m_L1TimingSrc==ETimingType::TTYP_DPHY){ // for L1 timing source is "delayed Bhabha" }
270 B2DEBUG(20, "Is_ECL_L1TriggerSource = " << Is_ECL_L1TriggerSource) ;
271 B2DEBUG(20, "Is_CDC_L1TriggerSource= " << Is_CDC_L1TriggerSource) ;
272
273
274 if (!m_TrgResult.isValid()) {
275 B2WARNING("SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
276 return;
277 }
278
279 const std::map<std::string, int>& fresults = m_TrgResult->getResults();
280 if ((fresults.find("software_trigger_cut&skim&accept_bhabha") == fresults.end()) ||
281 (fresults.find("software_trigger_cut&skim&accept_mumu_2trk") == fresults.end()) ||
282 (fresults.find("software_trigger_cut&skim&accept_hadron") == fresults.end())) {
283 B2WARNING("SVDDQMHitTimeModule: Can't find required bhabha or mumu or hadron trigger identifier");
284 return;
285 }
286
287
288
289 // determine if the event was part of the hadron skim or bhabha skim or mumu skim
290 const bool IsEvtAcceptedBhabha = (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha") ==
292 const bool IsEvtAcceptedHadron = (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron") ==
294 const bool IsEvtAcceptedMumu = (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk") ==
296
297
298 B2DEBUG(20, "bhabha trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
299 (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha"))) ;
300 B2DEBUG(20, "hadron trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
301 (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron"))) ;
302 B2DEBUG(20, "mu mu trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
303 (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk"))) ;
304 B2DEBUG(20, "bhabha trigger comparison bool = " << IsEvtAcceptedBhabha) ;
305 B2DEBUG(20, "hadron trigger comparison bool = " << IsEvtAcceptedHadron) ;
306 B2DEBUG(20, "mumu trigger comparison bool = " << IsEvtAcceptedMumu) ;
307
308
309 // get EventT0 if present and valid
310 double eventT0 = -1000;
311 if (m_eventT0.isValid())
312 if (m_eventT0->hasEventT0())
313 eventT0 = m_eventT0->getEventT0();
314
315 // if svd time in SVD time reference is shown, eventT0 is also synchronized with SVD reference frame, firstFrame = 0
316 if (m_desynchSVDTime && m_svdEventInfo.isValid())
317 eventT0 = eventT0 - m_svdEventInfo->getSVD2FTSWTimeShift(0);
318
319 int nSamples = m_svdEventInfo->getNSamples();
320
321 if (m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD)) {
322 const auto bestSVDEvtT0 = m_eventT0->getBestSVDTemporaryEventT0() ;
323 // There is only one estimate of SVD EVentT0 for the moment
324 float svdEventT0 = bestSVDEvtT0->eventT0 ;
325
326 if (nSamples == 3) {
327 m_SVD3EventT0->Fill(svdEventT0);
328 } else {
329 m_SVD6EventT0->Fill(svdEventT0);
330 }
331
332 if (Is_ECL_L1TriggerSource) {
333 if (IsEvtAcceptedBhabha) {
334 if (nSamples == 3) {
335 m_SVD3EventT0_bhabha_L1_ECLTRG->Fill(svdEventT0);
336 } else {
337 m_SVD6EventT0_bhabha_L1_ECLTRG->Fill(svdEventT0);
338 }
339 }
340 if (IsEvtAcceptedHadron) {
341 if (nSamples == 3) {
342 m_SVD3EventT0_hadron_L1_ECLTRG->Fill(svdEventT0);
343 } else {
344 m_SVD6EventT0_hadron_L1_ECLTRG->Fill(svdEventT0);
345 }
346 }
347 if (IsEvtAcceptedMumu) {
348 if (nSamples == 3) {
349 m_SVD3EventT0_mumu_L1_ECLTRG->Fill(svdEventT0);
350 } else {
351 m_SVD6EventT0_mumu_L1_ECLTRG->Fill(svdEventT0);
352 }
353 }
354 }
355
356 // Fill the plots that used the CDC trigger as the L1 timing source
357 else if (Is_CDC_L1TriggerSource) {
358 if (IsEvtAcceptedBhabha) {
359 if (nSamples == 3) {
360 m_SVD3EventT0_bhabha_L1_CDCTRG->Fill(svdEventT0);
361 } else {
362 m_SVD6EventT0_bhabha_L1_CDCTRG->Fill(svdEventT0);
363 }
364 }
365 if (IsEvtAcceptedHadron) {
366 if (nSamples == 3) {
367 m_SVD3EventT0_hadron_L1_CDCTRG->Fill(svdEventT0);
368 } else {
369 m_SVD6EventT0_hadron_L1_CDCTRG->Fill(svdEventT0);
370 }
371 }
372 if (IsEvtAcceptedMumu) {
373 if (nSamples == 3) {
374 m_SVD3EventT0_mumu_L1_CDCTRG->Fill(svdEventT0);
375 } else {
376 m_SVD6EventT0_mumu_L1_CDCTRG->Fill(svdEventT0);
377 }
378 }
379 }
380 }
381
382 //loop on clusters
383 for (const SVDCluster& cluster : m_clusters) {
384
385 //skip all non-L3 clusters
386 if (cluster.getSensorID().getLayerNumber() != 3) continue;
387 //skip all U-side clusters
388 if (cluster.isUCluster()) continue;
389
390 double time = cluster.getClsTime();
391
392 //if svd time is shown in SVD time reference we need to desynchronize (eventT0 is, instead, synchronized, see a few lines above
393 if (m_desynchSVDTime && m_svdEventInfo.isValid())
394 time = time - m_svdEventInfo->getSVD2FTSWTimeShift(cluster.getFirstFrame());
395
396 // Fill the plots that used the ECL trigger as the L1 timing source
397 if (Is_ECL_L1TriggerSource) {
398 if (IsEvtAcceptedBhabha) {
399 m_l3v_bhabha_L1_ECLTRG->Fill(time);
400 m_l3vEvtT0_bhabha_L1_ECLTRG->Fill(time - eventT0);
401 }
402 if (IsEvtAcceptedHadron) {
403 m_l3v_hadron_L1_ECLTRG->Fill(time);
404 m_l3vEvtT0_hadron_L1_ECLTRG->Fill(time - eventT0);
405 }
406 if (IsEvtAcceptedMumu) {
407 m_l3v_mumu_L1_ECLTRG->Fill(time);
408 m_l3vEvtT0_mumu_L1_ECLTRG->Fill(time - eventT0);
409 }
410 }
411
412 // Fill the plots that used the CDC trigger as the L1 timing source
413 else if (Is_CDC_L1TriggerSource) {
414 if (IsEvtAcceptedBhabha) {
415 m_l3v_bhabha_L1_CDCTRG->Fill(time);
416 m_l3vEvtT0_bhabha_L1_CDCTRG->Fill(time - eventT0);
417 }
418 if (IsEvtAcceptedHadron) {
419 m_l3v_hadron_L1_CDCTRG->Fill(time);
420 m_l3vEvtT0_hadron_L1_CDCTRG->Fill(time - eventT0);
421 }
422 if (IsEvtAcceptedMumu) {
423 m_l3v_mumu_L1_CDCTRG->Fill(time);
424 m_l3vEvtT0_mumu_L1_CDCTRG->Fill(time - eventT0);
425 }
426 }
427
428 B2DEBUG(20, "eventT0 = " << eventT0 << " ns" << ", SVD HitTime = " << time << " ns") ;
429
430 } //close loop on clusters
431}
432
433
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
Definition: HistoModule.h:29
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
The SVD Cluster class This class stores all information about reconstructed SVD clusters.
Definition: SVDCluster.h:29
virtual ~SVDDQMHitTimeModule()
Destructor.
StoreObjPtr< EventT0 > m_eventT0
EventT0 data object.
TH1F * m_SVD3EventT0_hadron_L1_ECLTRG
svd eventT0 histogram for hadronic events wrt the ECL trigger time for 3 samples
TH1F * m_l3v_mumu_L1_ECLTRG
svd time histogram for mu mu events wrt the ECL trigger time
TH1F * m_SVD3EventT0
SVD event T0 for 3 sampels.
virtual void initialize() override
Initialize the module.
StoreObjPtr< SVDEventInfo > m_svdEventInfo
SVDEventInfo data object.
TH1F * m_SVD3EventT0_bhabha_L1_CDCTRG
svd eventT0 histogram for bhabha events wrt the CDC trigger time for 3 samples
TH1F * m_SVD3EventT0_bhabha_L1_ECLTRG
svd eventT0 histogram for bhabha events wrt the ECL trigger time for 3 samples
virtual void event() override
This method is called for each event.
TH1F * m_l3vEvtT0_mumu_L1_ECLTRG
svd time histogram for mu mu events wrt the ECL trigger time
StoreArray< SVDCluster > m_clusters
Store array for clusters.
TH1F * m_l3v_hadron_L1_CDCTRG
svd time histogram for hadronic events wrt the CDC trigger time
TH1F * m_l3vEvtT0_mumu_L1_CDCTRG
svd time histogram for mu mu events wrt the CDC trigger time
TH1F * m_SVD6EventT0_mumu_L1_ECLTRG
svd eventT0 histogram for mu mu events wrt the ECL trigger time for 6 samples
TH1F * m_l3vEvtT0_hadron_L1_CDCTRG
svd time histogram for hadronic events wrt the CDC trigger time
TH1F * m_SVD3EventT0_mumu_L1_ECLTRG
svd eventT0 histogram for mu mu events wrt the ECL trigger time for 3 samples
TH1F * m_l3v_hadron_L1_ECLTRG
svd time histogram for hadronic events wrt the ECL trigger time
TH1F * m_l3vEvtT0_hadron_L1_ECLTRG
svd time histogram for hadronic events wrt the ECL trigger time
TH1F * m_SVD6EventT0_hadron_L1_CDCTRG
svd EventT0 histogram for hadronic events wrt the CDC trigger time for 6 samples
StoreObjPtr< TRGSummary > m_objTrgSummary
Trigger Summary data object.
TH1F * m_SVD6EventT0_mumu_L1_CDCTRG
svd eventT0 histogram for mu mu events wrt the CDC trigger time for 6 samples
TH1F * m_SVD6EventT0_bhabha_L1_ECLTRG
svd eventT0 histogram for bhabha events wrt the ECL trigger time for 6 samples
virtual void beginRun() override
This method is called for each run.
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
TH1F * m_SVD6EventT0
SVD event T0 for 6 sampels.
TH1F * m_l3v_bhabha_L1_ECLTRG
svd time histogram for bhabha events wrt the ECL trigger time
TH1F * m_l3vEvtT0_bhabha_L1_CDCTRG
svd time histogram for bhabha events wrt the CDC trigger time
TH1F * m_l3v_mumu_L1_CDCTRG
svd time histogram for mu mu events wrt the CDC trigger time
TH1F * m_SVD6EventT0_bhabha_L1_CDCTRG
svd eventT0 histogram for bhabha events wrt the CDC trigger time for 6 samples
TH1F * m_SVD6EventT0_hadron_L1_ECLTRG
svd eventT0 histogram for hadronic events wrt the ECL trigger time for 6 samples
bool m_desynchSVDTime
if TRUE: svdTime back in SVD time reference
TH1F * m_l3v_bhabha_L1_CDCTRG
svd time histogram for bhabha events wrt the CDC trigger time
TH1F * m_SVD3EventT0_hadron_L1_CDCTRG
svd eventT0 histogram for hadronic events wrt the CDC trigger time for 3 samples
int m_L1TimingSrc
L1 timing source from getTimeType() in TRGSummary See ETimingTYpe in mdst/dataobjects/include/TRGSumm...
std::string m_storeSVDClustersName
SVDClusters StoreArray name.
SVDDQMHitTimeModule()
Default constructor.
std::string m_storeSVDEventInfoName
SVDEventInfo StoreObjPtry name.
StoreObjPtr< SoftwareTriggerResult > m_TrgResult
Trigger selection data object.
TH1F * m_l3vEvtT0_bhabha_L1_ECLTRG
svd time histogram for bhabha events wrt the ECL trigger time
TH1F * m_SVD3EventT0_mumu_L1_CDCTRG
svd eventT0 histogram for mu mu events wrt the CDC trigger time for 3 samples
virtual void defineHisto() override
Definition of histograms.
bool isOptional(const std::string &name="")
Tell the DataStore about an optional input.
bool isValid() const
Check wether the array was registered.
Definition: StoreArray.h:288
@ TTYP_CDC
events triggered by CDC timing
Definition: TRGSummary.h:63
@ TTYP_ECL
events triggered by ECL timing
Definition: TRGSummary.h:45
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:560
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:650
@ c_accept
Accept this event.
Abstract base class for different kinds of events.