Belle II Software development
EventT0DQM.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 <reconstruction/modules/EventT0DQM/EventT0DQM.h>
10
11#include <mdst/dataobjects/SoftwareTriggerResult.h>
12#include <mdst/dataobjects/TRGSummary.h>
13#include <framework/dataobjects/EventT0.h>
14
15using namespace Belle2;
16
17REG_MODULE(EventT0DQM);
18
19//---------------------------------
21{
22 setPropertyFlags(c_ParallelProcessingCertified); // parallel processing
23 setDescription("Make data quality monitoring plots for EventT0 for bhabha, mu mu, and hadron samples for different trigger (time) sources.");
24}
25
26//---------------------------------
28
29
30//---------------------------------
32{
33
34 TDirectory* oldDir = gDirectory;
35 oldDir->mkdir("EventT0")->cd();
36
37 int nBins = 400 ;
38 double minT0 = -100 ;
39 double maxT0 = 100 ;
40
41 m_histEventT0_ECL_bhabha_L1_ECLTRG = new TH1F("m_histEventT0_ECL_bhabha_L1_ECLTRG",
42 "ECL EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
43 nBins, minT0, maxT0);
44 m_histEventT0_CDC_bhabha_L1_ECLTRG = new TH1F("m_histEventT0_CDC_bhabha_L1_ECLTRG",
45 "CDC EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
46 nBins, minT0, maxT0);
47 m_histEventT0_TOP_bhabha_L1_ECLTRG = new TH1F("m_histEventT0_TOP_bhabha_L1_ECLTRG",
48 "TOP EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
49 nBins, minT0, maxT0);
50 m_histEventT0_SVD_bhabha_L1_ECLTRG = new TH1F("m_histEventT0_SVD_bhabha_L1_ECLTRG",
51 "SVD EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
52 nBins, minT0, maxT0);
53
54 m_histEventT0_ECL_hadron_L1_ECLTRG = new TH1F("m_histEventT0_ECL_hadron_L1_ECLTRG",
55 "ECL EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
56 nBins, minT0, maxT0);
57 m_histEventT0_CDC_hadron_L1_ECLTRG = new TH1F("m_histEventT0_CDC_hadron_L1_ECLTRG",
58 "CDC EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
59 nBins, minT0, maxT0);
60 m_histEventT0_TOP_hadron_L1_ECLTRG = new TH1F("m_histEventT0_TOP_hadron_L1_ECLTRG",
61 "TOP EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
62 nBins, minT0, maxT0);
63 m_histEventT0_SVD_hadron_L1_ECLTRG = new TH1F("m_histEventT0_SVD_hadron_L1_ECLTRG",
64 "SVD EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
65 nBins, minT0, maxT0);
66
67 m_histEventT0_ECL_mumu_L1_ECLTRG = new TH1F("m_histEventT0_ECL_mumu_L1_ECLTRG",
68 "ECL EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
69 nBins, minT0, maxT0);
70 m_histEventT0_CDC_mumu_L1_ECLTRG = new TH1F("m_histEventT0_CDC_mumu_L1_ECLTRG",
71 "CDC EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
72 nBins, minT0, maxT0);
73 m_histEventT0_TOP_mumu_L1_ECLTRG = new TH1F("m_histEventT0_TOP_mumu_L1_ECLTRG",
74 "TOP EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
75 nBins, minT0, maxT0);
76 m_histEventT0_SVD_mumu_L1_ECLTRG = new TH1F("m_histEventT0_SVD_mumu_L1_ECLTRG",
77 "SVD EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
78 nBins, minT0, maxT0);
79
80
81 m_histEventT0_ECL_bhabha_L1_CDCTRG = new TH1F("m_histEventT0_ECL_bhabha_L1_CDCTRG",
82 "ECL EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
83 nBins, minT0, maxT0);
84 m_histEventT0_CDC_bhabha_L1_CDCTRG = new TH1F("m_histEventT0_CDC_bhabha_L1_CDCTRG",
85 "CDC EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
86 nBins, minT0, maxT0);
87 m_histEventT0_TOP_bhabha_L1_CDCTRG = new TH1F("m_histEventT0_TOP_bhabha_L1_CDCTRG",
88 "TOP EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
89 nBins, minT0, maxT0);
90 m_histEventT0_SVD_bhabha_L1_CDCTRG = new TH1F("m_histEventT0_SVD_bhabha_L1_CDCTRG",
91 "SVD EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
92 nBins, minT0, maxT0);
93
94 m_histEventT0_ECL_hadron_L1_CDCTRG = new TH1F("m_histEventT0_ECL_hadron_L1_CDCTRG",
95 "ECL EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
96 nBins, minT0, maxT0);
97 m_histEventT0_CDC_hadron_L1_CDCTRG = new TH1F("m_histEventT0_CDC_hadron_L1_CDCTRG",
98 "CDC EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
99 nBins, minT0, maxT0);
100 m_histEventT0_TOP_hadron_L1_CDCTRG = new TH1F("m_histEventT0_TOP_hadron_L1_CDCTRG",
101 "TOP EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
102 nBins, minT0, maxT0);
103 m_histEventT0_SVD_hadron_L1_CDCTRG = new TH1F("m_histEventT0_SVD_hadron_L1_CDCTRG",
104 "SVD EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
105 nBins, minT0, maxT0);
106
107 m_histEventT0_ECL_mumu_L1_CDCTRG = new TH1F("m_histEventT0_ECL_mumu_L1_CDCTRG",
108 "ECL EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
109 nBins, minT0, maxT0);
110 m_histEventT0_CDC_mumu_L1_CDCTRG = new TH1F("m_histEventT0_CDC_mumu_L1_CDCTRG",
111 "CDC EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
112 nBins, minT0, maxT0);
113 m_histEventT0_TOP_mumu_L1_CDCTRG = new TH1F("m_histEventT0_TOP_mumu_L1_CDCTRG",
114 "TOP EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
115 nBins, minT0, maxT0);
116 m_histEventT0_SVD_mumu_L1_CDCTRG = new TH1F("m_histEventT0_SVD_mumu_L1_CDCTRG",
117 "SVD EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
118 nBins, minT0, maxT0);
119
120
121 m_histEventT0_ECL_bhabha_L1_TOPTRG = new TH1F("m_histEventT0_ECL_bhabha_L1_TOPTRG",
122 "ECL EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
123 nBins, minT0, maxT0);
124 m_histEventT0_CDC_bhabha_L1_TOPTRG = new TH1F("m_histEventT0_CDC_bhabha_L1_TOPTRG",
125 "CDC EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
126 nBins, minT0, maxT0);
127 m_histEventT0_TOP_bhabha_L1_TOPTRG = new TH1F("m_histEventT0_TOP_bhabha_L1_TOPTRG",
128 "TOP EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
129 nBins, minT0, maxT0);
130 m_histEventT0_SVD_bhabha_L1_TOPTRG = new TH1F("m_histEventT0_SVD_bhabha_L1_TOPTRG",
131 "SVD EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
132 nBins, minT0, maxT0);
133
134 m_histEventT0_ECL_hadron_L1_TOPTRG = new TH1F("m_histEventT0_ECL_hadron_L1_TOPTRG",
135 "ECL EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
136 nBins, minT0, maxT0);
137 m_histEventT0_CDC_hadron_L1_TOPTRG = new TH1F("m_histEventT0_CDC_hadron_L1_TOPTRG",
138 "CDC EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
139 nBins, minT0, maxT0);
140 m_histEventT0_TOP_hadron_L1_TOPTRG = new TH1F("m_histEventT0_TOP_hadron_L1_TOPTRG",
141 "TOP EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
142 nBins, minT0, maxT0);
143 m_histEventT0_SVD_hadron_L1_TOPTRG = new TH1F("m_histEventT0_SVD_hadron_L1_TOPTRG",
144 "SVD EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
145 nBins, minT0, maxT0);
146
147 m_histEventT0_ECL_mumu_L1_TOPTRG = new TH1F("m_histEventT0_ECL_mumu_L1_TOPTRG",
148 "ECL EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
149 nBins, minT0, maxT0);
150 m_histEventT0_CDC_mumu_L1_TOPTRG = new TH1F("m_histEventT0_CDC_mumu_L1_TOPTRG",
151 "CDC EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
152 nBins, minT0, maxT0);
153 m_histEventT0_TOP_mumu_L1_TOPTRG = new TH1F("m_histEventT0_TOP_mumu_L1_TOPTRG",
154 "TOP EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
155 nBins, minT0, maxT0);
156 m_histEventT0_SVD_mumu_L1_TOPTRG = new TH1F("m_histEventT0_SVD_mumu_L1_TOPTRG",
157 "SVD EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
158 nBins, minT0, maxT0);
159
161 new TH1D("AlgorithmSourceFractionsHadronL1ECLTRG",
162 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by ECL;Algorithm;Fraction",
163 6, 0, 6);
165 new TH1D("AlgorithmSourceFractionsHadronL1CDCTRG",
166 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by CDC;Algorithm;Fraction",
167 6, 0, 6);
169 new TH1D("AlgorithmSourceFractionsHadronL1TOPTRG",
170 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by TOP;Algorithm;Fraction",
171 6, 0, 6);
173 new TH1D("AlgorithmSourceFractionsBhaBhaL1ECLTRG",
174 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by ECL;Algorithm;Fraction",
175 6, 0, 6);
177 new TH1D("AlgorithmSourceFractionsBhaBhaL1CDCTRG",
178 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by CDC;Algorithm;Fraction",
179 6, 0, 6);
181 new TH1D("AlgorithmSourceFractionsBhaBhaL1TOPTRG",
182 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by TOP;Algorithm;Fraction",
183 6, 0, 6);
185 new TH1D("AlgorithmSourceFractionsMuMuL1ECLTRG",
186 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by ECL;Algorithm;Fraction",
187 6, 0, 6);
189 new TH1D("AlgorithmSourceFractionsMuMuL1CDCTRG",
190 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by CDC;Algorithm;Fraction",
191 6, 0, 6);
193 new TH1D("AlgorithmSourceFractionsMuMuL1TOPTRG",
194 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by TOP;Algorithm;Fraction",
195 6, 0, 6);
196
197 for (uint i = 0; i < 6; i++) {
198 m_histAlgorithmSourceFractionsHadronL1ECLTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
199 m_histAlgorithmSourceFractionsHadronL1CDCTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
200 m_histAlgorithmSourceFractionsHadronL1TOPTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
201 m_histAlgorithmSourceFractionsBhaBhaL1ECLTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
202 m_histAlgorithmSourceFractionsBhaBhaL1CDCTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
203 m_histAlgorithmSourceFractionsBhaBhaL1TOPTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
204 m_histAlgorithmSourceFractionsMuMuL1ECLTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
205 m_histAlgorithmSourceFractionsMuMuL1CDCTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
206 m_histAlgorithmSourceFractionsMuMuL1TOPTRG->GetXaxis()->SetBinLabel(i + 1, c_eventT0Algorithms[i]);
207 }
208
209 oldDir->cd();
210
211}
212
213
214//---------------------------------
216{
217
218 m_TrgResult.isOptional();
219 m_eventT0.isOptional();
220
221 REG_HISTOGRAM
222
223}
224
225
226
227//---------------------------------
229{
230 if (!m_eventT0.isValid()) {
231 B2WARNING("Missing EventT0, EventT0DQM is skipped.");
232 return;
233 }
234
235 if (!m_TrgResult.isValid()) {
236 B2WARNING("Missing SoftwareTriggerResult, EventT0DQM is skipped.");
237 return;
238 }
239
244
249
254
259
264
269
274
279
284
294
295}
296
297
298//---------------------------------
300{
301 if (!m_objTrgSummary.isValid()) {
302 B2WARNING("TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
303 return;
304 }
305
306 // Skip this event if there is no event t0, to avoid crashing other DQM
307 if (!m_eventT0.isOptional()) {
308 B2WARNING("Missing EventT0, EventT0DQM is skipped.");
309 return;
310 }
311
312 // Determine if there is a valid event t0 to use and then extract the information about it
313 if (!m_eventT0.isValid()) {
314 return ;
315 }
316
317 if (!m_TrgResult.isValid()) {
318 B2WARNING("SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
319 return;
320 }
321
322 const std::map<std::string, int>& fresults = m_TrgResult->getResults();
323 if ((fresults.find("software_trigger_cut&skim&accept_bhabha") == fresults.end()) ||
324 (fresults.find("software_trigger_cut&skim&accept_mumu_2trk") == fresults.end()) ||
325 (fresults.find("software_trigger_cut&skim&accept_hadron") == fresults.end())) {
326 B2WARNING("EventT0DQMModule: Can't find required bhabha or mumu or hadron trigger identifier");
327 return;
328 }
329
330 // for L1 timing source is "ecl trigger" -> TRGSummary::ETimingType is 0
331 const bool IsECLL1TriggerSource = (m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_ECL);
332 // for L1 timing source is "top trigger" -> TRGSummary::ETimingType is 1
333 const bool IsTOPL1TriggerSource = (m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_TOP);
334 // for L1 timing source is "cdc trigger" -> TRGSummary::ETimingType is 3
335 const bool IsCDCL1TriggerSource = (m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_CDC);
336
337 B2DEBUG(20, "IsECLL1TriggerSource = " << IsECLL1TriggerSource);
338 B2DEBUG(20, "IsTOPL1TriggerSource = " << IsTOPL1TriggerSource);
339 B2DEBUG(20, "IsCDCL1TriggerSource = " << IsCDCL1TriggerSource);
340
341 // determine if the event was part of the hadron skim or bhabha skim or mumu skim
342 const bool IsEvtAcceptedBhabha = (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha") ==
344 const bool IsEvtAcceptedHadron = (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron") ==
346 const bool IsEvtAcceptedMumu = (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk") ==
348
349
350 B2DEBUG(20, "bhabha trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
351 (m_TrgResult->getResult("software_trigger_cut&skim&accept_bhabha"))) ;
352 B2DEBUG(20, "hadron trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
353 (m_TrgResult->getResult("software_trigger_cut&skim&accept_hadron"))) ;
354 B2DEBUG(20, "mu mu trigger result = " << static_cast<std::underlying_type<SoftwareTriggerCutResult>::type>
355 (m_TrgResult->getResult("software_trigger_cut&skim&accept_mumu_2trk"))) ;
356 B2DEBUG(20, "bhabha trigger comparison bool = " << IsEvtAcceptedBhabha) ;
357 B2DEBUG(20, "hadron trigger comparison bool = " << IsEvtAcceptedHadron) ;
358 B2DEBUG(20, "mumu trigger comparison bool = " << IsEvtAcceptedMumu) ;
359
360
361 // Set the different EventT0 values, default is -1000 in case there are no information based on a given detector
362 const double eventT0ECL =
363 m_eventT0->hasTemporaryEventT0(Const::EDetector::ECL) ? m_eventT0->getBestECLTemporaryEventT0()->eventT0 : -1000;
364 const double eventT0CDC =
365 m_eventT0->hasTemporaryEventT0(Const::EDetector::CDC) ? m_eventT0->getBestCDCTemporaryEventT0()->eventT0 : -1000;
366 const double eventT0TOP =
367 m_eventT0->hasTemporaryEventT0(Const::EDetector::TOP) ? m_eventT0->getBestTOPTemporaryEventT0()->eventT0 : -1000;
368 const double eventT0SVD =
369 m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD) ? m_eventT0->getBestSVDTemporaryEventT0()->eventT0 : -1000;
370
371 const auto checkForCDCAlgorithm = [cdcEventT0s = m_eventT0->getTemporaryEventT0s(Const::EDetector::CDC)](
372 const std::string & algorithm) {
373 for (const auto& evtt0 : cdcEventT0s) {
374 if (evtt0.algorithm == algorithm) {
375 return true;
376 }
377 }
378 return false;
379 };
380
381 const bool hasCDCHitBasedEventT0 = checkForCDCAlgorithm("hit based");
382 const bool hasCDCFullGridEventT0 = checkForCDCAlgorithm("chi2");
383 // We are interested if an EventT0 is set, not whether temporary EventT0s exist that might not be used
384 const bool hasAnyEventT0 = m_eventT0->hasEventT0();
385 const bool hasECLEventT0 = m_eventT0->hasTemporaryEventT0(Const::EDetector::ECL);
386 const bool hasSVDEventT0 = m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD);
387 const bool hasTOPEventT0 = m_eventT0->hasTemporaryEventT0(Const::EDetector::TOP);
388
389 // Fill the plots that used the ECL trigger as the L1 timing source
390 if (IsECLL1TriggerSource) {
391 // Fill the histograms with the event t0 values
392 if (IsEvtAcceptedBhabha) { // fill the bha bha skim event t0s
393 m_histEventT0_ECL_bhabha_L1_ECLTRG->Fill(eventT0ECL);
394 m_histEventT0_CDC_bhabha_L1_ECLTRG->Fill(eventT0CDC);
395 m_histEventT0_TOP_bhabha_L1_ECLTRG->Fill(eventT0TOP);
396 m_histEventT0_SVD_bhabha_L1_ECLTRG->Fill(eventT0SVD);
397 fillHistogram(m_histAlgorithmSourceFractionsBhaBhaL1ECLTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
398 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
399 }
400
401 if (IsEvtAcceptedHadron) { // fill the hadron skim event t0s
402 m_histEventT0_ECL_hadron_L1_ECLTRG->Fill(eventT0ECL);
403 m_histEventT0_CDC_hadron_L1_ECLTRG->Fill(eventT0CDC);
404 m_histEventT0_TOP_hadron_L1_ECLTRG->Fill(eventT0TOP);
405 m_histEventT0_SVD_hadron_L1_ECLTRG->Fill(eventT0SVD);
406 fillHistogram(m_histAlgorithmSourceFractionsHadronL1ECLTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
407 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
408 }
409
410 if (IsEvtAcceptedMumu) { // fill the mumu skim event t0s
411 m_histEventT0_ECL_mumu_L1_ECLTRG->Fill(eventT0ECL);
412 m_histEventT0_CDC_mumu_L1_ECLTRG->Fill(eventT0CDC);
413 m_histEventT0_TOP_mumu_L1_ECLTRG->Fill(eventT0TOP);
414 m_histEventT0_SVD_mumu_L1_ECLTRG->Fill(eventT0SVD);
415 fillHistogram(m_histAlgorithmSourceFractionsMuMuL1ECLTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
416 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
417 }
418 }
419 // Fill the plots that used the TOP trigger as the L1 timing source
420 else if (IsTOPL1TriggerSource) {
421 // Fill the histograms with the event t0 values
422 if (IsEvtAcceptedBhabha) { // fill the bha bha skim event t0s
423 m_histEventT0_ECL_bhabha_L1_TOPTRG->Fill(eventT0ECL);
424 m_histEventT0_CDC_bhabha_L1_TOPTRG->Fill(eventT0CDC);
425 m_histEventT0_TOP_bhabha_L1_TOPTRG->Fill(eventT0TOP);
426 m_histEventT0_SVD_bhabha_L1_TOPTRG->Fill(eventT0SVD);
427 fillHistogram(m_histAlgorithmSourceFractionsBhaBhaL1TOPTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
428 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
429 }
430
431 if (IsEvtAcceptedHadron) { // fill the hadron skim event t0s
432 m_histEventT0_ECL_hadron_L1_TOPTRG->Fill(eventT0ECL);
433 m_histEventT0_CDC_hadron_L1_TOPTRG->Fill(eventT0CDC);
434 m_histEventT0_TOP_hadron_L1_TOPTRG->Fill(eventT0TOP);
435 m_histEventT0_SVD_hadron_L1_TOPTRG->Fill(eventT0SVD);
436 fillHistogram(m_histAlgorithmSourceFractionsHadronL1TOPTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
437 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
438 }
439
440 if (IsEvtAcceptedMumu) { // fill the mumu skim event t0s
441 m_histEventT0_ECL_mumu_L1_TOPTRG->Fill(eventT0ECL);
442 m_histEventT0_CDC_mumu_L1_TOPTRG->Fill(eventT0CDC);
443 m_histEventT0_TOP_mumu_L1_TOPTRG->Fill(eventT0TOP);
444 m_histEventT0_SVD_mumu_L1_TOPTRG->Fill(eventT0SVD);
445 fillHistogram(m_histAlgorithmSourceFractionsMuMuL1TOPTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
446 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
447 }
448 }
449 // Fill the plots that used the CDC trigger as the L1 timing source
450 else if (IsCDCL1TriggerSource) {
451 // Fill the histograms with the event t0 values
452 if (IsEvtAcceptedBhabha) { // fill the bha bha skim event t0s
453 m_histEventT0_ECL_bhabha_L1_CDCTRG->Fill(eventT0ECL);
454 m_histEventT0_CDC_bhabha_L1_CDCTRG->Fill(eventT0CDC);
455 m_histEventT0_TOP_bhabha_L1_CDCTRG->Fill(eventT0TOP);
456 m_histEventT0_SVD_bhabha_L1_CDCTRG->Fill(eventT0SVD);
457 fillHistogram(m_histAlgorithmSourceFractionsBhaBhaL1CDCTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
458 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
459 }
460
461 if (IsEvtAcceptedHadron) { // fill the hadron skim event t0s
462 m_histEventT0_ECL_hadron_L1_CDCTRG->Fill(eventT0ECL);
463 m_histEventT0_CDC_hadron_L1_CDCTRG->Fill(eventT0CDC);
464 m_histEventT0_TOP_hadron_L1_CDCTRG->Fill(eventT0TOP);
465 m_histEventT0_SVD_hadron_L1_CDCTRG->Fill(eventT0SVD);
466 fillHistogram(m_histAlgorithmSourceFractionsHadronL1CDCTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
467 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
468 }
469
470 if (IsEvtAcceptedMumu) { // fill the mumu skim event t0s
471 m_histEventT0_ECL_mumu_L1_CDCTRG->Fill(eventT0ECL);
472 m_histEventT0_CDC_mumu_L1_CDCTRG->Fill(eventT0CDC);
473 m_histEventT0_TOP_mumu_L1_CDCTRG->Fill(eventT0TOP);
474 m_histEventT0_SVD_mumu_L1_CDCTRG->Fill(eventT0SVD);
475 fillHistogram(m_histAlgorithmSourceFractionsMuMuL1CDCTRG, hasAnyEventT0, hasECLEventT0, hasSVDEventT0,
476 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
477 }
478 }
479
480 B2DEBUG(20, "eventT0ECL = " << eventT0ECL << " ns") ;
481 B2DEBUG(20, "eventT0CDC = " << eventT0CDC << " ns") ;
482 B2DEBUG(20, "eventT0TOP = " << eventT0TOP << " ns") ;
483 B2DEBUG(20, "eventT0SVD = " << eventT0SVD << " ns") ;
484}
485
486void EventT0DQMModule::fillHistogram(TH1D* hist, const bool hasAnyT0, const bool hasECLT0, const bool hasSVDT0,
487 const bool hasCDCHitT0, const bool hasCDCGridT0, const bool hasTOPT0)
488{
489 hist->Fill(-1); // counting events for normalisation
490 hist->Fill(c_eventT0Algorithms[0], hasECLT0);
491 hist->Fill(c_eventT0Algorithms[1], hasSVDT0);
492 hist->Fill(c_eventT0Algorithms[2], hasCDCHitT0);
493 hist->Fill(c_eventT0Algorithms[3], hasCDCGridT0);
494 hist->Fill(c_eventT0Algorithms[4], hasTOPT0);
495 hist->Fill(c_eventT0Algorithms[5], hasAnyT0);
496}
TH1F * m_histEventT0_CDC_bhabha_L1_TOPTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by TOP trigger
Definition EventT0DQM.h:97
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1CDCTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by CDC trigger.
Definition EventT0DQM.h:122
TH1F * m_histEventT0_CDC_bhabha_L1_CDCTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by CDC trigger
Definition EventT0DQM.h:81
virtual ~EventT0DQMModule()
Destructor.
Definition EventT0DQM.cc:27
TH1F * m_histEventT0_TOP_bhabha_L1_TOPTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by TOP trigger
Definition EventT0DQM.h:98
TH1F * m_histEventT0_ECL_hadron_L1_ECLTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by ECL trigger
Definition EventT0DQM.h:69
TH1F * m_histEventT0_ECL_bhabha_L1_CDCTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by CDC trigger
Definition EventT0DQM.h:80
TH1F * m_histEventT0_SVD_mumu_L1_ECLTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by ECL trigger
Definition EventT0DQM.h:77
StoreObjPtr< EventT0 > m_eventT0
Store array for event t0.
Definition EventT0DQM.h:61
const char * c_eventT0Algorithms[6]
EventT0 algorithms for which to calculate fractions of abundance.
Definition EventT0DQM.h:112
TH1F * m_histEventT0_ECL_hadron_L1_TOPTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by TOP trigger
Definition EventT0DQM.h:101
TH1F * m_histEventT0_CDC_mumu_L1_TOPTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by TOP trigger
Definition EventT0DQM.h:107
TH1F * m_histEventT0_CDC_hadron_L1_ECLTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by ECL trigger
Definition EventT0DQM.h:70
virtual void initialize() override
Initialize the module.
TH1F * m_histEventT0_SVD_bhabha_L1_CDCTRG
event t0 histogram for SVD, HLT bha bha events, L1 time by CDC trigger
Definition EventT0DQM.h:83
TH1F * m_histEventT0_CDC_mumu_L1_CDCTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by CDC trigger
Definition EventT0DQM.h:91
virtual void event() override
This method is called for each event.
TH1D * m_histAlgorithmSourceFractionsHadronL1CDCTRG
Fraction of events with EventT0 from a given algorithm, HLT hadronic events, L1 time by CDC trigger.
Definition EventT0DQM.h:116
TH1F * m_histEventT0_SVD_bhabha_L1_TOPTRG
event t0 histogram for SVD, HLT bha bha events, L1 time by TOP trigger
Definition EventT0DQM.h:99
TH1F * m_histEventT0_SVD_hadron_L1_ECLTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by ECL trigger
Definition EventT0DQM.h:72
TH1F * m_histEventT0_CDC_mumu_L1_ECLTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by ECL trigger
Definition EventT0DQM.h:75
TH1F * m_histEventT0_SVD_bhabha_L1_ECLTRG
event t0 histogram for SVD, HLT bha bha events, L1 time by ECL trigger
Definition EventT0DQM.h:67
TH1F * m_histEventT0_SVD_mumu_L1_CDCTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by CDC trigger
Definition EventT0DQM.h:93
TH1F * m_histEventT0_TOP_bhabha_L1_ECLTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by ECL trigger
Definition EventT0DQM.h:66
TH1F * m_histEventT0_ECL_mumu_L1_TOPTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by TOP trigger
Definition EventT0DQM.h:106
StoreObjPtr< TRGSummary > m_objTrgSummary
Trigger Summary data object.
Definition EventT0DQM.h:58
TH1D * m_histAlgorithmSourceFractionsHadronL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT hadronic events, L1 time by ECL trigger.
Definition EventT0DQM.h:114
virtual void beginRun() override
This method is called for each run.
void fillHistogram(TH1D *hist, const bool hasAnyT0, const bool hasECLT0, const bool hasSVDT0, const bool hasCDCHitT0, const bool hasCDCGridT0, const bool hasTOPT0)
Fill fraction histogram with values.
TH1F * m_histEventT0_TOP_mumu_L1_ECLTRG
event t0 histogram for TOP, HLT mu mu events, L1 time by ECL trigger
Definition EventT0DQM.h:76
TH1F * m_histEventT0_TOP_hadron_L1_CDCTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by CDC trigger
Definition EventT0DQM.h:87
TH1D * m_histAlgorithmSourceFractionsMuMuL1CDCTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by CDC trigger.
Definition EventT0DQM.h:128
TH1F * m_histEventT0_SVD_hadron_L1_CDCTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by CDC trigger
Definition EventT0DQM.h:88
TH1F * m_histEventT0_TOP_hadron_L1_TOPTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by TOP trigger
Definition EventT0DQM.h:103
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by ECL trigger.
Definition EventT0DQM.h:120
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by TOP trigger.
Definition EventT0DQM.h:124
TH1F * m_histEventT0_SVD_mumu_L1_TOPTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by TOP trigger
Definition EventT0DQM.h:109
TH1F * m_histEventT0_SVD_hadron_L1_TOPTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by TOP trigger
Definition EventT0DQM.h:104
TH1F * m_histEventT0_ECL_mumu_L1_CDCTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by CDC trigger
Definition EventT0DQM.h:90
TH1F * m_histEventT0_TOP_mumu_L1_TOPTRG
event t0 histogram for TOP, HLT mu mu events, L1 time by TOP trigger
Definition EventT0DQM.h:108
TH1F * m_histEventT0_ECL_mumu_L1_ECLTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by ECL trigger
Definition EventT0DQM.h:74
EventT0DQMModule()
Default constructor.
Definition EventT0DQM.cc:20
TH1F * m_histEventT0_TOP_mumu_L1_CDCTRG
event t0 histogram for TOP, HLT mu mu events, L1 time by CDC trigger
Definition EventT0DQM.h:92
TH1F * m_histEventT0_TOP_bhabha_L1_CDCTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by CDC trigger
Definition EventT0DQM.h:82
TH1F * m_histEventT0_TOP_hadron_L1_ECLTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by ECL trigger
Definition EventT0DQM.h:71
TH1F * m_histEventT0_ECL_bhabha_L1_TOPTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by TOP trigger
Definition EventT0DQM.h:96
TH1D * m_histAlgorithmSourceFractionsMuMuL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by TOP trigger.
Definition EventT0DQM.h:130
TH1F * m_histEventT0_CDC_hadron_L1_TOPTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by TOP trigger
Definition EventT0DQM.h:102
TH1F * m_histEventT0_CDC_hadron_L1_CDCTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by CDC trigger
Definition EventT0DQM.h:86
StoreObjPtr< SoftwareTriggerResult > m_TrgResult
Store array for Trigger selection.
Definition EventT0DQM.h:60
TH1D * m_histAlgorithmSourceFractionsMuMuL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by ECL trigger.
Definition EventT0DQM.h:126
TH1F * m_histEventT0_CDC_bhabha_L1_ECLTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by ECL trigger
Definition EventT0DQM.h:65
TH1F * m_histEventT0_ECL_hadron_L1_CDCTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by CDC trigger
Definition EventT0DQM.h:85
virtual void defineHisto() override
Defination of histograms.
Definition EventT0DQM.cc:31
TH1F * m_histEventT0_ECL_bhabha_L1_ECLTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by ECL trigger
Definition EventT0DQM.h:64
TH1D * m_histAlgorithmSourceFractionsHadronL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT hadronic events, L1 time by TOP trigger.
Definition EventT0DQM.h:118
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
@ TTYP_TOP
events triggered by TOP timing
Definition TRGSummary.h:61
@ TTYP_CDC
events triggered by CDC timing
Definition TRGSummary.h:63
@ TTYP_ECL
events triggered by ECL timing
Definition TRGSummary.h:45
#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.