9#include <reconstruction/modules/EventT0DQM/EventT0DQM.h>
11#include <mdst/dataobjects/SoftwareTriggerResult.h>
12#include <mdst/dataobjects/TRGSummary.h>
13#include <framework/dataobjects/EventT0.h>
23 setDescription(
"Make data quality monitoring plots for EventT0 for bhabha, mu mu, and hadron samples for different trigger (time) sources.");
34 TDirectory* oldDir = gDirectory;
35 oldDir->mkdir(
"EventT0")->cd();
42 "ECL EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
45 "CDC EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
48 "TOP EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
51 "SVD EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
55 "ECL EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
58 "CDC EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
61 "TOP EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
64 "SVD EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
68 "ECL EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
71 "CDC EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
74 "TOP EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
77 "SVD EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
82 "ECL EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
85 "CDC EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
88 "TOP EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
91 "SVD EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
95 "ECL EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
98 "CDC EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
101 "TOP EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
102 nBins, minT0, maxT0);
104 "SVD EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
105 nBins, minT0, maxT0);
108 "ECL EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
109 nBins, minT0, maxT0);
111 "CDC EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
112 nBins, minT0, maxT0);
114 "TOP EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
115 nBins, minT0, maxT0);
117 "SVD EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
118 nBins, minT0, maxT0);
122 "ECL EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
123 nBins, minT0, maxT0);
125 "CDC EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
126 nBins, minT0, maxT0);
128 "TOP EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
129 nBins, minT0, maxT0);
131 "SVD EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
132 nBins, minT0, maxT0);
135 "ECL EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
136 nBins, minT0, maxT0);
138 "CDC EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
139 nBins, minT0, maxT0);
141 "TOP EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
142 nBins, minT0, maxT0);
144 "SVD EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
145 nBins, minT0, maxT0);
148 "ECL EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
149 nBins, minT0, maxT0);
151 "CDC EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
152 nBins, minT0, maxT0);
154 "TOP EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
155 nBins, minT0, maxT0);
157 "SVD EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
158 nBins, minT0, maxT0);
161 new TH1D(
"AlgorithmSourceFractionsHadronL1ECLTRG",
162 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by ECL;Algorithm;Fraction",
165 new TH1D(
"AlgorithmSourceFractionsHadronL1CDCTRG",
166 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by CDC;Algorithm;Fraction",
169 new TH1D(
"AlgorithmSourceFractionsHadronL1TOPTRG",
170 "Fraction of events with EventT0 from each algorithm for hadronic events triggerd by TOP;Algorithm;Fraction",
173 new TH1D(
"AlgorithmSourceFractionsBhaBhaL1ECLTRG",
174 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by ECL;Algorithm;Fraction",
177 new TH1D(
"AlgorithmSourceFractionsBhaBhaL1CDCTRG",
178 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by CDC;Algorithm;Fraction",
181 new TH1D(
"AlgorithmSourceFractionsBhaBhaL1TOPTRG",
182 "Fraction of events with EventT0 from each algorithm for Bhabha events triggerd by TOP;Algorithm;Fraction",
185 new TH1D(
"AlgorithmSourceFractionsMuMuL1ECLTRG",
186 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by ECL;Algorithm;Fraction",
189 new TH1D(
"AlgorithmSourceFractionsMuMuL1CDCTRG",
190 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by CDC;Algorithm;Fraction",
193 new TH1D(
"AlgorithmSourceFractionsMuMuL1TOPTRG",
194 "Fraction of events with EventT0 from each algorithm for #mu#mu events triggerd by TOP;Algorithm;Fraction",
197 for (uint i = 0; i < 6; i++) {
231 B2WARNING(
"Missing EventT0, EventT0DQM is skipped.");
236 B2WARNING(
"Missing SoftwareTriggerResult, EventT0DQM is skipped.");
302 B2WARNING(
"TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
308 B2WARNING(
"Missing EventT0, EventT0DQM is skipped.");
318 B2WARNING(
"SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
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");
337 B2DEBUG(20,
"IsECLL1TriggerSource = " << IsECLL1TriggerSource);
338 B2DEBUG(20,
"IsTOPL1TriggerSource = " << IsTOPL1TriggerSource);
339 B2DEBUG(20,
"IsCDCL1TriggerSource = " << IsCDCL1TriggerSource);
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") ==
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) ;
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;
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) {
381 const bool hasCDCHitBasedEventT0 = checkForCDCAlgorithm(
"hit based");
382 const bool hasCDCFullGridEventT0 = checkForCDCAlgorithm(
"chi2");
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);
390 if (IsECLL1TriggerSource) {
392 if (IsEvtAcceptedBhabha) {
398 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
401 if (IsEvtAcceptedHadron) {
407 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
410 if (IsEvtAcceptedMumu) {
416 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
420 else if (IsTOPL1TriggerSource) {
422 if (IsEvtAcceptedBhabha) {
428 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
431 if (IsEvtAcceptedHadron) {
437 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
440 if (IsEvtAcceptedMumu) {
446 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
450 else if (IsCDCL1TriggerSource) {
452 if (IsEvtAcceptedBhabha) {
458 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
461 if (IsEvtAcceptedHadron) {
467 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
470 if (IsEvtAcceptedMumu) {
476 hasCDCHitBasedEventT0, hasCDCFullGridEventT0, hasTOPEventT0);
480 B2DEBUG(20,
"eventT0ECL = " << eventT0ECL <<
" ns") ;
481 B2DEBUG(20,
"eventT0CDC = " << eventT0CDC <<
" ns") ;
482 B2DEBUG(20,
"eventT0TOP = " << eventT0TOP <<
" ns") ;
483 B2DEBUG(20,
"eventT0SVD = " << eventT0SVD <<
" ns") ;
487 const bool hasCDCHitT0,
const bool hasCDCGridT0,
const bool hasTOPT0)
TH1F * m_histEventT0_CDC_bhabha_L1_TOPTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by TOP trigger
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1CDCTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by CDC trigger.
TH1F * m_histEventT0_CDC_bhabha_L1_CDCTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by CDC trigger
virtual ~EventT0DQMModule()
Destructor.
TH1F * m_histEventT0_TOP_bhabha_L1_TOPTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by TOP trigger
TH1F * m_histEventT0_ECL_hadron_L1_ECLTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by ECL trigger
TH1F * m_histEventT0_ECL_bhabha_L1_CDCTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by CDC trigger
TH1F * m_histEventT0_SVD_mumu_L1_ECLTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by ECL trigger
StoreObjPtr< EventT0 > m_eventT0
Store array for event t0.
const char * c_eventT0Algorithms[6]
EventT0 algorithms for which to calculate fractions of abundance.
TH1F * m_histEventT0_ECL_hadron_L1_TOPTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by TOP trigger
TH1F * m_histEventT0_CDC_mumu_L1_TOPTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by TOP trigger
TH1F * m_histEventT0_CDC_hadron_L1_ECLTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by ECL trigger
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
TH1F * m_histEventT0_CDC_mumu_L1_CDCTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by CDC trigger
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.
TH1F * m_histEventT0_SVD_bhabha_L1_TOPTRG
event t0 histogram for SVD, HLT bha bha events, L1 time by TOP trigger
TH1F * m_histEventT0_SVD_hadron_L1_ECLTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by ECL trigger
TH1F * m_histEventT0_CDC_mumu_L1_ECLTRG
event t0 histogram for CDC, HLT mu mu events, L1 time by ECL trigger
TH1F * m_histEventT0_SVD_bhabha_L1_ECLTRG
event t0 histogram for SVD, HLT bha bha events, L1 time by ECL trigger
TH1F * m_histEventT0_SVD_mumu_L1_CDCTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by CDC trigger
TH1F * m_histEventT0_TOP_bhabha_L1_ECLTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by ECL trigger
TH1F * m_histEventT0_ECL_mumu_L1_TOPTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by TOP trigger
StoreObjPtr< TRGSummary > m_objTrgSummary
Trigger Summary data object.
TH1D * m_histAlgorithmSourceFractionsHadronL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT hadronic events, L1 time by ECL trigger.
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
TH1F * m_histEventT0_TOP_hadron_L1_CDCTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by CDC trigger
TH1D * m_histAlgorithmSourceFractionsMuMuL1CDCTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by CDC trigger.
TH1F * m_histEventT0_SVD_hadron_L1_CDCTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by CDC trigger
TH1F * m_histEventT0_TOP_hadron_L1_TOPTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by TOP trigger
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by ECL trigger.
TH1D * m_histAlgorithmSourceFractionsBhaBhaL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT bhabha events, L1 time by TOP trigger.
TH1F * m_histEventT0_SVD_mumu_L1_TOPTRG
event t0 histogram for SVD, HLT mu mu events, L1 time by TOP trigger
TH1F * m_histEventT0_SVD_hadron_L1_TOPTRG
event t0 histogram for SVD, HLT hadronic events, L1 time by TOP trigger
TH1F * m_histEventT0_ECL_mumu_L1_CDCTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by CDC trigger
TH1F * m_histEventT0_TOP_mumu_L1_TOPTRG
event t0 histogram for TOP, HLT mu mu events, L1 time by TOP trigger
TH1F * m_histEventT0_ECL_mumu_L1_ECLTRG
event t0 histogram for ECL, HLT mu mu events, L1 time by ECL trigger
EventT0DQMModule()
Default constructor.
TH1F * m_histEventT0_TOP_mumu_L1_CDCTRG
event t0 histogram for TOP, HLT mu mu events, L1 time by CDC trigger
TH1F * m_histEventT0_TOP_bhabha_L1_CDCTRG
event t0 histogram for TOP, HLT bha bha events, L1 time by CDC trigger
TH1F * m_histEventT0_TOP_hadron_L1_ECLTRG
event t0 histogram for TOP, HLT hadronic events, L1 time by ECL trigger
TH1F * m_histEventT0_ECL_bhabha_L1_TOPTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by TOP trigger
TH1D * m_histAlgorithmSourceFractionsMuMuL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by TOP trigger.
TH1F * m_histEventT0_CDC_hadron_L1_TOPTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by TOP trigger
TH1F * m_histEventT0_CDC_hadron_L1_CDCTRG
event t0 histogram for CDC, HLT hadronic events, L1 time by CDC trigger
StoreObjPtr< SoftwareTriggerResult > m_TrgResult
Store array for Trigger selection.
TH1D * m_histAlgorithmSourceFractionsMuMuL1ECLTRG
Fraction of events with EventT0 from a given algorithm, HLT mumu events, L1 time by ECL trigger.
TH1F * m_histEventT0_CDC_bhabha_L1_ECLTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by ECL trigger
TH1F * m_histEventT0_ECL_hadron_L1_CDCTRG
event t0 histogram for ECL, HLT hadronic events, L1 time by CDC trigger
virtual void defineHisto() override
Defination of histograms.
TH1F * m_histEventT0_ECL_bhabha_L1_ECLTRG
event t0 histogram for ECL, HLT bha bha events, L1 time by ECL trigger
TH1D * m_histAlgorithmSourceFractionsHadronL1TOPTRG
Fraction of events with EventT0 from a given algorithm, HLT hadronic events, L1 time by TOP trigger.
HistoModule()
Constructor.
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
@ TTYP_TOP
events triggered by TOP timing
@ TTYP_CDC
events triggered by CDC timing
@ TTYP_ECL
events triggered by ECL timing
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
@ c_accept
Accept this event.
Abstract base class for different kinds of events.