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 addParam("samples3", m_3Samples, "if True 3 samples histograms analysis is performed", bool(false));
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 if (m_3Samples) {
108 m_SVDEventT03Sample = new TH1F("SVD3EventT0", "SVD EventT0 for 3 samples", nBins, minT0, maxT0);
109 m_SVDEventT03Sample->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
110 m_SVDEventT03Sample->GetYaxis()->SetTitle("count");
111
112 m_SVDEventT06Sample = new TH1F("SVDEventT06Sample", "SVD EventT0 for 6 samples", nBins, minT0, maxT0);
113 m_SVDEventT06Sample->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
114 m_SVDEventT06Sample->GetYaxis()->SetTitle("count");
115
116 m_SVDEventT03Sample_bhabha_L1_ECLTRG = new TH1F("SVD3EventT0_bhabha_L1_ECLTRG",
117 "SVD EventT0 3 samples : bhabhas, ECLTRG time",
118 nBins, minT0, maxT0);
119 m_SVDEventT03Sample_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
120
121 m_SVDEventT03Sample_hadron_L1_ECLTRG = new TH1F("SVD3EventT0_hadron_L1_ECLTRG",
122 "SVD EventT0 3 samples : hadrons, ECLTRG time",
123 nBins, minT0, maxT0);
124 m_SVDEventT03Sample_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
125
126 m_SVDEventT03Sample_mumu_L1_ECLTRG = new TH1F("SVD3EventT0_mumu_L1_ECLTRG",
127 "SVD EventT0 3 samples : mumus, ECLTRG time",
128 nBins, minT0, maxT0);
129 m_SVDEventT03Sample_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
130
131 m_SVDEventT03Sample_bhabha_L1_CDCTRG = new TH1F("SVD3EventT0_bhabha_L1_CDCTRG",
132 "SVD EventT0 3 samples : bhabhas, CDCTRG time",
133 nBins, minT0, maxT0);
134 m_SVDEventT03Sample_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
135
136 m_SVDEventT03Sample_hadron_L1_CDCTRG = new TH1F("SVD3EventT0_hadron_L1_CDCTRG",
137 "SVD EventT0 3 samples : hadrons, CDCTRG time",
138 nBins, minT0, maxT0);
139 m_SVDEventT03Sample_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
140
141 m_SVDEventT03Sample_mumu_L1_CDCTRG = new TH1F("SVD3EventT0_mumu_L1_CDCTRG",
142 "SVD EventT0 3 samples : mumus, CDCTRG time",
143 nBins, minT0, maxT0);
144 m_SVDEventT03Sample_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
145
146
147
148 m_SVDEventT06Sample_bhabha_L1_ECLTRG = new TH1F("SVDEventT06Sample_bhabha_L1_ECLTRG",
149 "SVD EventT0 6 samples : bhabhas, ECLTRG time",
150 nBins, minT0, maxT0);
151 m_SVDEventT06Sample_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
152
153 m_SVDEventT06Sample_hadron_L1_ECLTRG = new TH1F("SVDEventT06Sample_hadron_L1_ECLTRG",
154 "SVD EventT0 6 samples : hadrons, ECLTRG time",
155 nBins, minT0, maxT0);
156 m_SVDEventT06Sample_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
157
158 m_SVDEventT06Sample_mumu_L1_ECLTRG = new TH1F("SVDEventT06Sample_mumu_L1_ECLTRG",
159 "SVD EventT0 6 samples : mumus, ECLTRG time",
160 nBins, minT0, maxT0);
161 m_SVDEventT06Sample_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
162
163 m_SVDEventT06Sample_bhabha_L1_CDCTRG = new TH1F("SVDEventT06Sample_bhabha_L1_CDCTRG",
164 "SVD EventT0 6 samples : bhabhas, CDCTRG time",
165 nBins, minT0, maxT0);
166 m_SVDEventT06Sample_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
167
168 m_SVDEventT06Sample_hadron_L1_CDCTRG = new TH1F("SVDEventT06Sample_hadron_L1_CDCTRG",
169 "SVD EventT0 6 samples : hadrons, CDCTRG time",
170 nBins, minT0, maxT0);
171 m_SVDEventT06Sample_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
172
173 m_SVDEventT06Sample_mumu_L1_CDCTRG = new TH1F("SVDEventT06Sample_mumu_L1_CDCTRG",
174 "SVD EventT0 6 samples : mumus, CDCTRG time",
175 nBins, minT0, maxT0);
176 m_SVDEventT06Sample_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
177 }
178 oldDir->cd();
179
180}
181
182
183//---------------------------------
185{
186
187 m_TrgResult.isOptional();
188 m_eventT0.isOptional();
191
192 REG_HISTOGRAM
193
194}
195
196
197
198//---------------------------------
200{
201
202 m_l3v_bhabha_L1_ECLTRG->Reset();
204 m_l3v_hadron_L1_ECLTRG->Reset();
206 m_l3v_mumu_L1_ECLTRG->Reset();
208
209 m_l3v_bhabha_L1_CDCTRG->Reset();
211 m_l3v_hadron_L1_CDCTRG->Reset();
213 m_l3v_mumu_L1_CDCTRG->Reset();
215
216 if (m_3Samples) {
217 m_SVDEventT03Sample->Reset();
218 m_SVDEventT06Sample->Reset();
219
226
233 }
234}
235
236
237//---------------------------------
239{
240
241 if (!m_TrgResult.isValid()) {
242 B2WARNING("Missing TRGSummary, SVDDQMHitTime is skipped.");
243 return;
244 }
245 if (!m_svdEventInfo.isValid()) {
246 B2WARNING("Missing SVDEventInfo, SVDDQMHitTime is skipped.");
247 return;
248 }
249
250
251
252 if (!m_clusters.isValid()) {
253 B2WARNING("Missing SVDClusters, SVDDQMHitTime is skipped.");
254 return;
255 }
256
257
258 if (!m_objTrgSummary.isValid()) {
259 B2WARNING("TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
260 return;
261 } else {
262 m_L1TimingSrc = m_objTrgSummary->getTimType();
263 }
264
265 bool Is_ECL_L1TriggerSource = false ;
266 bool Is_CDC_L1TriggerSource = false ;
267 if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_ECL) { // for L1 timing source is "ecl trigger"
268 Is_ECL_L1TriggerSource = true ;
269 } else if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_CDC) { // for L1 timing source is "cdc trigger"
270 Is_CDC_L1TriggerSource = true ;
271 }
272 // else if(m_L1TimingSrc==ETimingType::TTYP_DPHY){ // for L1 timing source is "delayed Bhabha" }
273 B2DEBUG(20, "Is_ECL_L1TriggerSource = " << Is_ECL_L1TriggerSource) ;
274 B2DEBUG(20, "Is_CDC_L1TriggerSource= " << Is_CDC_L1TriggerSource) ;
275
276
277 if (!m_TrgResult.isValid()) {
278 B2WARNING("SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
279 return;
280 }
281
282 const std::map<std::string, int>& fresults = m_TrgResult->getResults();
283 if ((fresults.find("software_trigger_cut&skim&accept_bhabha") == fresults.end()) ||
284 (fresults.find("software_trigger_cut&skim&accept_mumu_2trk") == fresults.end()) ||
285 (fresults.find("software_trigger_cut&skim&accept_hadron") == fresults.end())) {
286 B2WARNING("SVDDQMHitTimeModule: Can't find required bhabha or mumu or hadron trigger identifier");
287 return;
288 }
289
290
291
292 // determine if the event was part of the hadron skim or bhabha skim or mumu skim
293 const bool IsEvtAcceptedBhabha = (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha") ==
295 const bool IsEvtAcceptedHadron = (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron") ==
297 const bool IsEvtAcceptedMumu = (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk") ==
299
300
301 B2DEBUG(20, "bhabha trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
302 (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha"))) ;
303 B2DEBUG(20, "hadron trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
304 (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron"))) ;
305 B2DEBUG(20, "mu mu trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
306 (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk"))) ;
307 B2DEBUG(20, "bhabha trigger comparison bool = " << IsEvtAcceptedBhabha) ;
308 B2DEBUG(20, "hadron trigger comparison bool = " << IsEvtAcceptedHadron) ;
309 B2DEBUG(20, "mumu trigger comparison bool = " << IsEvtAcceptedMumu) ;
310
311
312 // get EventT0 if present and valid
313 double eventT0 = -1000;
314 if (m_eventT0.isValid())
315 if (m_eventT0->hasEventT0())
316 eventT0 = m_eventT0->getEventT0();
317
318 // if svd time in SVD time reference is shown, eventT0 is also synchronized with SVD reference frame, firstFrame = 0
319 if (m_desynchSVDTime && m_svdEventInfo.isValid())
320 eventT0 = eventT0 - m_svdEventInfo->getSVD2FTSWTimeShift(0);
321
322 int nSamples = m_svdEventInfo->getNSamples();
323
324 if (m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD)) {
325 const auto bestSVDEvtT0 = m_eventT0->getBestSVDTemporaryEventT0() ;
326 // There is only one estimate of SVD EVentT0 for the moment
327 float svdEventT0 = bestSVDEvtT0->eventT0 ;
328
329 if (m_3Samples) {
330 if (nSamples == 3) {
331 m_SVDEventT03Sample->Fill(svdEventT0);
332 } else {
333 m_SVDEventT06Sample->Fill(svdEventT0);
334 }
335
336 if (Is_ECL_L1TriggerSource) {
337 if (IsEvtAcceptedBhabha) {
338 if (nSamples == 3) {
339 m_SVDEventT03Sample_bhabha_L1_ECLTRG->Fill(svdEventT0);
340 } else {
341 m_SVDEventT06Sample_bhabha_L1_ECLTRG->Fill(svdEventT0);
342 }
343 }
344 if (IsEvtAcceptedHadron) {
345 if (nSamples == 3) {
346 m_SVDEventT03Sample_hadron_L1_ECLTRG->Fill(svdEventT0);
347 } else {
348 m_SVDEventT06Sample_hadron_L1_ECLTRG->Fill(svdEventT0);
349 }
350 }
351 if (IsEvtAcceptedMumu) {
352 if (nSamples == 3) {
353 m_SVDEventT03Sample_mumu_L1_ECLTRG->Fill(svdEventT0);
354 } else {
355 m_SVDEventT06Sample_mumu_L1_ECLTRG->Fill(svdEventT0);
356 }
357 }
358 }
359
360 // Fill the plots that used the CDC trigger as the L1 timing source
361 else if (Is_CDC_L1TriggerSource) {
362 if (IsEvtAcceptedBhabha) {
363 if (nSamples == 3) {
364 m_SVDEventT03Sample_bhabha_L1_CDCTRG->Fill(svdEventT0);
365 } else {
366 m_SVDEventT06Sample_bhabha_L1_CDCTRG->Fill(svdEventT0);
367 }
368 }
369 if (IsEvtAcceptedHadron) {
370 if (nSamples == 3) {
371 m_SVDEventT03Sample_hadron_L1_CDCTRG->Fill(svdEventT0);
372 } else {
373 m_SVDEventT06Sample_hadron_L1_CDCTRG->Fill(svdEventT0);
374 }
375 }
376 if (IsEvtAcceptedMumu) {
377 if (nSamples == 3) {
378 m_SVDEventT03Sample_mumu_L1_CDCTRG->Fill(svdEventT0);
379 } else {
380 m_SVDEventT06Sample_mumu_L1_CDCTRG->Fill(svdEventT0);
381 }
382 }
383 }
384 }
385 }
386
387 //loop on clusters
388 for (const SVDCluster& cluster : m_clusters) {
389
390 //skip all non-L3 clusters
391 if (cluster.getSensorID().getLayerNumber() != 3) continue;
392 //skip all U-side clusters
393 if (cluster.isUCluster()) continue;
394
395 double time = cluster.getClsTime();
396
397 //if svd time is shown in SVD time reference we need to desynchronize (eventT0 is, instead, synchronized, see a few lines above
398 if (m_desynchSVDTime && m_svdEventInfo.isValid())
399 time = time - m_svdEventInfo->getSVD2FTSWTimeShift(cluster.getFirstFrame());
400
401 // Fill the plots that used the ECL trigger as the L1 timing source
402 if (Is_ECL_L1TriggerSource) {
403 if (IsEvtAcceptedBhabha) {
404 m_l3v_bhabha_L1_ECLTRG->Fill(time);
405 m_l3vEvtT0_bhabha_L1_ECLTRG->Fill(time - eventT0);
406 }
407 if (IsEvtAcceptedHadron) {
408 m_l3v_hadron_L1_ECLTRG->Fill(time);
409 m_l3vEvtT0_hadron_L1_ECLTRG->Fill(time - eventT0);
410 }
411 if (IsEvtAcceptedMumu) {
412 m_l3v_mumu_L1_ECLTRG->Fill(time);
413 m_l3vEvtT0_mumu_L1_ECLTRG->Fill(time - eventT0);
414 }
415 }
416
417 // Fill the plots that used the CDC trigger as the L1 timing source
418 else if (Is_CDC_L1TriggerSource) {
419 if (IsEvtAcceptedBhabha) {
420 m_l3v_bhabha_L1_CDCTRG->Fill(time);
421 m_l3vEvtT0_bhabha_L1_CDCTRG->Fill(time - eventT0);
422 }
423 if (IsEvtAcceptedHadron) {
424 m_l3v_hadron_L1_CDCTRG->Fill(time);
425 m_l3vEvtT0_hadron_L1_CDCTRG->Fill(time - eventT0);
426 }
427 if (IsEvtAcceptedMumu) {
428 m_l3v_mumu_L1_CDCTRG->Fill(time);
429 m_l3vEvtT0_mumu_L1_CDCTRG->Fill(time - eventT0);
430 }
431 }
432
433 B2DEBUG(20, "eventT0 = " << eventT0 << " ns" << ", SVD HitTime = " << time << " ns") ;
434
435 } //close loop on clusters
436}
437
438
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.
TH1F * m_SVDEventT03Sample_mumu_L1_CDCTRG
svd eventT0 histogram for mu mu events wrt the CDC trigger time for 3 samples
StoreObjPtr< EventT0 > m_eventT0
EventT0 data object.
TH1F * m_l3v_mumu_L1_ECLTRG
svd time histogram for mu mu events wrt the ECL trigger time
virtual void initialize() override
Initialize the module.
StoreObjPtr< SVDEventInfo > m_svdEventInfo
SVDEventInfo data object.
TH1F * m_SVDEventT03Sample_hadron_L1_CDCTRG
svd eventT0 histogram for hadronic events wrt the CDC trigger time for 3 samples
TH1F * m_SVDEventT03Sample_mumu_L1_ECLTRG
svd eventT0 histogram for mu mu events wrt the ECL trigger time for 3 samples
virtual void event() override
This method is called for each event.
TH1F * m_SVDEventT06Sample_hadron_L1_CDCTRG
svd EventT0 histogram for hadronic events wrt the CDC trigger time for 6 samples
TH1F * m_l3vEvtT0_mumu_L1_ECLTRG
svd time histogram for mu mu events wrt the ECL trigger time
TH1F * m_SVDEventT06Sample
SVD event T0 for 6 sampels.
TH1F * m_SVDEventT06Sample_bhabha_L1_CDCTRG
svd eventT0 histogram for bhabha events wrt the CDC trigger time for 6 samples
TH1F * m_SVDEventT06Sample_bhabha_L1_ECLTRG
svd eventT0 histogram for bhabha events wrt the ECL trigger time for 6 samples
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_l3vEvtT0_hadron_L1_CDCTRG
svd time histogram for hadronic events wrt the CDC trigger time
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
StoreObjPtr< TRGSummary > m_objTrgSummary
Trigger Summary data object.
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_l3v_bhabha_L1_ECLTRG
svd time histogram for bhabha events wrt the ECL trigger time
bool m_3Samples
if true enable 3 samples histograms analysis
TH1F * m_l3vEvtT0_bhabha_L1_CDCTRG
svd time histogram for bhabha events wrt the CDC trigger time
TH1F * m_SVDEventT06Sample_mumu_L1_CDCTRG
svd eventT0 histogram for mu mu events wrt the CDC trigger time for 6 samples
TH1F * m_SVDEventT03Sample_bhabha_L1_ECLTRG
svd eventT0 histogram for bhabha events wrt the ECL trigger time for 3 samples
TH1F * m_l3v_mumu_L1_CDCTRG
svd time histogram for mu mu events wrt the CDC trigger time
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_SVDEventT06Sample_hadron_L1_ECLTRG
svd eventT0 histogram for hadronic events wrt the ECL trigger time for 6 samples
TH1F * m_SVDEventT03Sample_hadron_L1_ECLTRG
svd eventT0 histogram for hadronic events wrt the ECL trigger time for 3 samples
TH1F * m_SVDEventT06Sample_mumu_L1_ECLTRG
svd eventT0 histogram for mu mu events wrt the ECL trigger time for 6 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.
TH1F * m_SVDEventT03Sample
SVD event T0 for 3 sampels.
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_SVDEventT03Sample_bhabha_L1_CDCTRG
svd eventT0 histogram for bhabha 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.