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 <hlt/softwaretrigger/core/FinalTriggerDecisionCalculator.h>
11#include <framework/dataobjects/EventMetaData.h>
12#include <framework/core/HistoModule.h>
13#include <mdst/dataobjects/TRGSummary.h>
14#include <TDirectory.h>
15
16using namespace Belle2;
17using namespace SoftwareTrigger;
18
19REG_MODULE(SVDDQMHitTime);
20
21//---------------------------------
23{
24 setPropertyFlags(c_ParallelProcessingCertified); // parallel processing
25 setDescription("Make data quality monitoring plots for SVD Hit Time for bhabha, mu mu, and hadron samples seeded by different trigger times (ECL, CDC).");
26 addParam("histogramDirectoryName", m_histogramDirectoryName, "Name of the directory where histograms will be placed.",
27 std::string("SVDHitTime"));
28 addParam("Clusters", m_storeSVDClustersName, "SVDCluster StoreArray name.",
29 std::string(""));
30 addParam("EventInfo", m_storeSVDEventInfoName, "SVDEventInfo StoreObjPtr name.",
31 std::string(""));
32 addParam("desynchronizeSVDTime", m_desynchSVDTime,
33 "if True, svd time back in SVD time reference", bool(false));
34 addParam("useParamFromDB", m_useParamFromDB, "use SVDDQMPlotsConfiguration from DB", bool(true));
35 addParam("skipHLTRejectedEvents", m_skipRejectedEvents, "If True, skip events rejected by HLT.", bool(false));
36 addParam("samples3", m_3Samples, "if True 3 samples histograms analysis is performed", bool(false));
37}
38
39//---------------------------------
41
42
43//---------------------------------
45{
46 if (m_useParamFromDB) {
47 if (!m_svdPlotsConfig.isValid())
48 B2FATAL("no valid configuration found for SVD reconstruction");
49 else {
50 B2DEBUG(20, "SVDRecoConfiguration: from now on we are using " << m_svdPlotsConfig->get_uniqueID());
51 m_3Samples = m_svdPlotsConfig->isPlotsFor3SampleMonitoring();
52 m_skipRejectedEvents = m_svdPlotsConfig->isSkipHLTRejectedEvents();
53 }
54 }
55
56 TDirectory* oldDir = gDirectory;
57 oldDir->mkdir(m_histogramDirectoryName.c_str())->cd();
58
59 int nBins = 300 ;
60 double minT0 = -150 ;
61 double maxT0 = 150 ;
62
63 TString refFrame = "in FTSW reference";
65 refFrame = "in SVD reference";
66
67 m_l3v_bhabha_L1_ECLTRG = new TH1F("SVDTime_L3V_bhabha_ECLTRG",
68 Form("SVD L3 V-Side Cluster Time %s: bhabhas, ECLTRG time", refFrame.Data()),
69 nBins, minT0, maxT0);
70 m_l3v_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
71 m_l3vEvtT0_bhabha_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_bhabha_ECLTRG",
72 "SVD L3 V-Side Cluster Time - EventT0 : bhabhas, ECLTRG time",
73 nBins, minT0, maxT0);
74 m_l3vEvtT0_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
75
76 m_l3v_hadron_L1_ECLTRG = new TH1F("SVDTime_L3V_hadron_ECLTRG",
77 Form("SVD L3 V-Side Cluster Time %s: hadrons, ECLTRG time", refFrame.Data()),
78 nBins, minT0, maxT0);
79 m_l3v_hadron_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
80 m_l3vEvtT0_hadron_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_hadron_ECLTRG",
81 "SVD L3 V-Side Cluster Time - EventT0 : hadrons, ECLTRG time",
82 nBins, minT0, maxT0);
83 m_l3vEvtT0_hadron_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
84
85 m_l3v_mumu_L1_ECLTRG = new TH1F("SVDTime_L3V_mumu_ECLTRG",
86 Form("SVD L3 V-Side Cluster Time %s: mumus, ECLTRG time", refFrame.Data()),
87 nBins, minT0, maxT0);
88 m_l3v_mumu_L1_ECLTRG->GetXaxis()->SetTitle("cluster time (ns)");
89 m_l3vEvtT0_mumu_L1_ECLTRG = new TH1F("SVDTimeEvtT0_L3V_mumu_ECLTRG",
90 "SVD L3 V-Side Cluster Time - EventT0 : mumus, ECLTRG time",
91 nBins, minT0, maxT0);
92 m_l3vEvtT0_mumu_L1_ECLTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
93
94 m_l3v_bhabha_L1_CDCTRG = new TH1F("SVDTime_L3V_bhabha_CDCTRG",
95 Form("SVD L3 V-Side Cluster Time %s: bhabhas, CDCTRG time", refFrame.Data()),
96 nBins, minT0, maxT0);
97 m_l3v_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
98 m_l3vEvtT0_bhabha_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_bhabha_CDCTRG",
99 "SVD L3 V-Side Cluster Time - EventT0 : bhabhas, CDCTRG time",
100 nBins, minT0, maxT0);
101 m_l3vEvtT0_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
102
103 m_l3v_hadron_L1_CDCTRG = new TH1F("SVDTime_L3V_hadron_CDCTRG",
104 Form("SVD L3 V-Side Cluster Time %s: hadrons, CDCTRG time", refFrame.Data()),
105 nBins, minT0, maxT0);
106 m_l3v_hadron_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
107 m_l3vEvtT0_hadron_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_hadron_CDCTRG",
108 "SVD L3 V-Side Cluster Time - EventT0 : hadrons, CDCTRG time",
109 nBins, minT0, maxT0);
110 m_l3vEvtT0_hadron_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
111
112 m_l3v_mumu_L1_CDCTRG = new TH1F("SVDTime_L3V_mumu_CDCTRG",
113 Form("SVD L3 V-Side Cluster Time %s: mumus, CDCTRG time", refFrame.Data()),
114 nBins, minT0, maxT0);
115 m_l3v_mumu_L1_CDCTRG->GetXaxis()->SetTitle("cluster time (ns)");
116 m_l3vEvtT0_mumu_L1_CDCTRG = new TH1F("SVDTimeEvtT0_L3V_mumu_CDCTRG",
117 "SVD L3 V-Side Cluster Time - EventT0 : mumus, CDCTRG time",
118 nBins, minT0, maxT0);
119 m_l3vEvtT0_mumu_L1_CDCTRG->GetXaxis()->SetTitle("cluster time - EventT0 (ns)");
120
121 if (m_3Samples) {
122 m_SVDEventT03Sample = new TH1F("SVD3EventT0", "SVD EventT0 for 3 samples", nBins, minT0, maxT0);
123 m_SVDEventT03Sample->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
124 m_SVDEventT03Sample->GetYaxis()->SetTitle("count");
125
126 m_SVDEventT06Sample = new TH1F("SVDEventT06Sample", "SVD EventT0 for 6 samples", nBins, minT0, maxT0);
127 m_SVDEventT06Sample->GetXaxis()->SetTitle("SVD EventT0 time (ns)");
128 m_SVDEventT06Sample->GetYaxis()->SetTitle("count");
129
130 m_SVDEventT03Sample_bhabha_L1_ECLTRG = new TH1F("SVD3EventT0_bhabha_L1_ECLTRG",
131 "SVD EventT0 3 samples : bhabhas, ECLTRG time",
132 nBins, minT0, maxT0);
133 m_SVDEventT03Sample_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
134
135 m_SVDEventT03Sample_hadron_L1_ECLTRG = new TH1F("SVD3EventT0_hadron_L1_ECLTRG",
136 "SVD EventT0 3 samples : hadrons, ECLTRG time",
137 nBins, minT0, maxT0);
138 m_SVDEventT03Sample_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
139
140 m_SVDEventT03Sample_mumu_L1_ECLTRG = new TH1F("SVD3EventT0_mumu_L1_ECLTRG",
141 "SVD EventT0 3 samples : mumus, ECLTRG time",
142 nBins, minT0, maxT0);
143 m_SVDEventT03Sample_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
144
145 m_SVDEventT03Sample_bhabha_L1_CDCTRG = new TH1F("SVD3EventT0_bhabha_L1_CDCTRG",
146 "SVD EventT0 3 samples : bhabhas, CDCTRG time",
147 nBins, minT0, maxT0);
148 m_SVDEventT03Sample_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
149
150 m_SVDEventT03Sample_hadron_L1_CDCTRG = new TH1F("SVD3EventT0_hadron_L1_CDCTRG",
151 "SVD EventT0 3 samples : hadrons, CDCTRG time",
152 nBins, minT0, maxT0);
153 m_SVDEventT03Sample_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
154
155 m_SVDEventT03Sample_mumu_L1_CDCTRG = new TH1F("SVD3EventT0_mumu_L1_CDCTRG",
156 "SVD EventT0 3 samples : mumus, CDCTRG time",
157 nBins, minT0, maxT0);
158 m_SVDEventT03Sample_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
159
160
161
162 m_SVDEventT06Sample_bhabha_L1_ECLTRG = new TH1F("SVDEventT06Sample_bhabha_L1_ECLTRG",
163 "SVD EventT0 6 samples : bhabhas, ECLTRG time",
164 nBins, minT0, maxT0);
165 m_SVDEventT06Sample_bhabha_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
166
167 m_SVDEventT06Sample_hadron_L1_ECLTRG = new TH1F("SVDEventT06Sample_hadron_L1_ECLTRG",
168 "SVD EventT0 6 samples : hadrons, ECLTRG time",
169 nBins, minT0, maxT0);
170 m_SVDEventT06Sample_hadron_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
171
172 m_SVDEventT06Sample_mumu_L1_ECLTRG = new TH1F("SVDEventT06Sample_mumu_L1_ECLTRG",
173 "SVD EventT0 6 samples : mumus, ECLTRG time",
174 nBins, minT0, maxT0);
175 m_SVDEventT06Sample_mumu_L1_ECLTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
176
177 m_SVDEventT06Sample_bhabha_L1_CDCTRG = new TH1F("SVDEventT06Sample_bhabha_L1_CDCTRG",
178 "SVD EventT0 6 samples : bhabhas, CDCTRG time",
179 nBins, minT0, maxT0);
180 m_SVDEventT06Sample_bhabha_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
181
182 m_SVDEventT06Sample_hadron_L1_CDCTRG = new TH1F("SVDEventT06Sample_hadron_L1_CDCTRG",
183 "SVD EventT0 6 samples : hadrons, CDCTRG time",
184 nBins, minT0, maxT0);
185 m_SVDEventT06Sample_hadron_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
186
187 m_SVDEventT06Sample_mumu_L1_CDCTRG = new TH1F("SVDEventT06Sample_mumu_L1_CDCTRG",
188 "SVD EventT0 6 samples : mumus, CDCTRG time",
189 nBins, minT0, maxT0);
190 m_SVDEventT06Sample_mumu_L1_CDCTRG->GetXaxis()->SetTitle("SVD EventT0 (ns)");
191 }
192 oldDir->cd();
193
194}
195
196
197//---------------------------------
199{
200
201 m_TrgResult.isOptional();
202 m_eventT0.isOptional();
205
206 REG_HISTOGRAM
207
208}
209
210
211
212//---------------------------------
249
250
251//---------------------------------
253{
254 //check HLT decision and increase number of events only if the event has been accepted
257 if (!eventAccepted) return;
258 }
259
260 if (!m_TrgResult.isValid()) {
261 B2WARNING("Missing TRGSummary, SVDDQMHitTime is skipped.");
262 return;
263 }
264 if (!m_svdEventInfo.isValid()) {
265 B2WARNING("Missing SVDEventInfo, SVDDQMHitTime is skipped.");
266 return;
267 }
268
269
270
271 if (!m_clusters.isValid()) {
272 B2WARNING("Missing SVDClusters, SVDDQMHitTime is skipped.");
273 return;
274 }
275
276
277 if (!m_objTrgSummary.isValid()) {
278 B2WARNING("TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
279 return;
280 } else {
281 m_L1TimingSrc = m_objTrgSummary->getTimType();
282 }
283
284 bool Is_ECL_L1TriggerSource = false ;
285 bool Is_CDC_L1TriggerSource = false ;
286 if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_ECL) { // for L1 timing source is "ecl trigger"
287 Is_ECL_L1TriggerSource = true ;
288 } else if (m_L1TimingSrc == TRGSummary::ETimingType::TTYP_CDC) { // for L1 timing source is "cdc trigger"
289 Is_CDC_L1TriggerSource = true ;
290 }
291 // else if(m_L1TimingSrc==ETimingType::TTYP_DPHY){ // for L1 timing source is "delayed Bhabha" }
292 B2DEBUG(20, "Is_ECL_L1TriggerSource = " << Is_ECL_L1TriggerSource) ;
293 B2DEBUG(20, "Is_CDC_L1TriggerSource= " << Is_CDC_L1TriggerSource) ;
294
295
296 if (!m_TrgResult.isValid()) {
297 B2WARNING("SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
298 return;
299 }
300
301 const std::map<std::string, int>& fresults = m_TrgResult->getResults();
302 if ((fresults.find("software_trigger_cut&skim&accept_bhabha") == fresults.end()) ||
303 (fresults.find("software_trigger_cut&skim&accept_mumu_2trk") == fresults.end()) ||
304 (fresults.find("software_trigger_cut&skim&accept_hadron") == fresults.end())) {
305 B2WARNING("SVDDQMHitTimeModule: Can't find required bhabha or mumu or hadron trigger identifier");
306 return;
307 }
308
309
310
311 // determine if the event was part of the hadron skim or bhabha skim or mumu skim
312 const bool IsEvtAcceptedBhabha = (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha") ==
314 const bool IsEvtAcceptedHadron = (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron") ==
316 const bool IsEvtAcceptedMumu = (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk") ==
318
319
320 B2DEBUG(20, "bhabha trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
321 (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha"))) ;
322 B2DEBUG(20, "hadron trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
323 (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron"))) ;
324 B2DEBUG(20, "mu mu trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
325 (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk"))) ;
326 B2DEBUG(20, "bhabha trigger comparison bool = " << IsEvtAcceptedBhabha) ;
327 B2DEBUG(20, "hadron trigger comparison bool = " << IsEvtAcceptedHadron) ;
328 B2DEBUG(20, "mumu trigger comparison bool = " << IsEvtAcceptedMumu) ;
329
330
331 // get EventT0 if present and valid
332 double eventT0 = -1000;
333 if (m_eventT0.isValid())
334 if (m_eventT0->hasEventT0())
335 eventT0 = m_eventT0->getEventT0();
336
337 // if svd time in SVD time reference is shown, eventT0 is also synchronized with SVD reference frame, firstFrame = 0
338 if (m_desynchSVDTime && m_svdEventInfo.isValid())
339 eventT0 = eventT0 - m_svdEventInfo->getSVD2FTSWTimeShift(0);
340
341 int nSamples = m_svdEventInfo->getNSamples();
342
343 if (m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD)) {
344 const auto bestSVDEvtT0 = m_eventT0->getBestSVDTemporaryEventT0() ;
345 // There is only one estimate of SVD EVentT0 for the moment
346 float svdEventT0 = bestSVDEvtT0->eventT0 ;
347
348 if (m_3Samples) {
349 if (nSamples == 3) {
350 m_SVDEventT03Sample->Fill(svdEventT0);
351 } else {
352 m_SVDEventT06Sample->Fill(svdEventT0);
353 }
354
355 if (Is_ECL_L1TriggerSource) {
356 if (IsEvtAcceptedBhabha) {
357 if (nSamples == 3) {
358 m_SVDEventT03Sample_bhabha_L1_ECLTRG->Fill(svdEventT0);
359 } else {
360 m_SVDEventT06Sample_bhabha_L1_ECLTRG->Fill(svdEventT0);
361 }
362 }
363 if (IsEvtAcceptedHadron) {
364 if (nSamples == 3) {
365 m_SVDEventT03Sample_hadron_L1_ECLTRG->Fill(svdEventT0);
366 } else {
367 m_SVDEventT06Sample_hadron_L1_ECLTRG->Fill(svdEventT0);
368 }
369 }
370 if (IsEvtAcceptedMumu) {
371 if (nSamples == 3) {
372 m_SVDEventT03Sample_mumu_L1_ECLTRG->Fill(svdEventT0);
373 } else {
374 m_SVDEventT06Sample_mumu_L1_ECLTRG->Fill(svdEventT0);
375 }
376 }
377 }
378
379 // Fill the plots that used the CDC trigger as the L1 timing source
380 else if (Is_CDC_L1TriggerSource) {
381 if (IsEvtAcceptedBhabha) {
382 if (nSamples == 3) {
383 m_SVDEventT03Sample_bhabha_L1_CDCTRG->Fill(svdEventT0);
384 } else {
385 m_SVDEventT06Sample_bhabha_L1_CDCTRG->Fill(svdEventT0);
386 }
387 }
388 if (IsEvtAcceptedHadron) {
389 if (nSamples == 3) {
390 m_SVDEventT03Sample_hadron_L1_CDCTRG->Fill(svdEventT0);
391 } else {
392 m_SVDEventT06Sample_hadron_L1_CDCTRG->Fill(svdEventT0);
393 }
394 }
395 if (IsEvtAcceptedMumu) {
396 if (nSamples == 3) {
397 m_SVDEventT03Sample_mumu_L1_CDCTRG->Fill(svdEventT0);
398 } else {
399 m_SVDEventT06Sample_mumu_L1_CDCTRG->Fill(svdEventT0);
400 }
401 }
402 }
403 }
404 }
405
406 //loop on clusters
407 for (const SVDCluster& cluster : m_clusters) {
408
409 //skip all non-L3 clusters
410 if (cluster.getSensorID().getLayerNumber() != 3) continue;
411 //skip all U-side clusters
412 if (cluster.isUCluster()) continue;
413
414 double time = cluster.getClsTime();
415
416 //if svd time is shown in SVD time reference we need to desynchronize (eventT0 is, instead, synchronized, see a few lines above
417 if (m_desynchSVDTime && m_svdEventInfo.isValid())
418 time = time - m_svdEventInfo->getSVD2FTSWTimeShift(cluster.getFirstFrame());
419
420 // Fill the plots that used the ECL trigger as the L1 timing source
421 if (Is_ECL_L1TriggerSource) {
422 if (IsEvtAcceptedBhabha) {
423 m_l3v_bhabha_L1_ECLTRG->Fill(time);
424 m_l3vEvtT0_bhabha_L1_ECLTRG->Fill(time - eventT0);
425 }
426 if (IsEvtAcceptedHadron) {
427 m_l3v_hadron_L1_ECLTRG->Fill(time);
428 m_l3vEvtT0_hadron_L1_ECLTRG->Fill(time - eventT0);
429 }
430 if (IsEvtAcceptedMumu) {
431 m_l3v_mumu_L1_ECLTRG->Fill(time);
432 m_l3vEvtT0_mumu_L1_ECLTRG->Fill(time - eventT0);
433 }
434 }
435
436 // Fill the plots that used the CDC trigger as the L1 timing source
437 else if (Is_CDC_L1TriggerSource) {
438 if (IsEvtAcceptedBhabha) {
439 m_l3v_bhabha_L1_CDCTRG->Fill(time);
440 m_l3vEvtT0_bhabha_L1_CDCTRG->Fill(time - eventT0);
441 }
442 if (IsEvtAcceptedHadron) {
443 m_l3v_hadron_L1_CDCTRG->Fill(time);
444 m_l3vEvtT0_hadron_L1_CDCTRG->Fill(time - eventT0);
445 }
446 if (IsEvtAcceptedMumu) {
447 m_l3v_mumu_L1_CDCTRG->Fill(time);
448 m_l3vEvtT0_mumu_L1_CDCTRG->Fill(time - eventT0);
449 }
450 }
451
452 B2DEBUG(20, "eventT0 = " << eventT0 << " ns" << ", SVD HitTime = " << time << " ns") ;
453
454 } //close loop on clusters
455}
456
457
HistoModule()
Constructor.
Definition HistoModule.h:32
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
bool m_useParamFromDB
if true read back from DB configuration parameters
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.
bool m_skipRejectedEvents
if true skip events rejected by HLT
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 samples.
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
DBObjPtr< SVDDQMPlotsConfiguration > m_svdPlotsConfig
SVD DQM plots configuration.
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
StoreObjPtr< SoftwareTriggerResult > m_resultStoreObjectPointer
Store Object for reading the trigger decision.
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 samples.
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.
static bool getFinalTriggerDecision(const SoftwareTriggerResult &result, bool forgetTotalResult=false)
Calculate the final cut decision using all "total_results" of all sub triggers in the software trigge...
@ 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:559
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition Module.h:649
Abstract base class for different kinds of events.