9 #include <reconstruction/modules/EventT0DQM/EventT0DQM.h>
10 #include <framework/core/HistoModule.h>
20 setDescription(
"Make data quality monitoring plots for EventT0 for bhabha, mu mu, and hadron samples for different trigger (time) sources.");
31 TDirectory* oldDir = gDirectory;
32 oldDir->mkdir(
"EventT0DQMdir")->cd();
39 "ECL EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
42 "CDC EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
45 "TOP EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
48 "SVD EventT0, L1TRG from ECL, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
52 "ECL EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
55 "CDC EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
58 "TOP EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
61 "SVD EventT0, L1TRG from ECL, HLT Hadron;EventT0 [ns];events / 0.5 ns",
65 "ECL EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
68 "CDC EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
71 "TOP EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
74 "SVD EventT0, L1TRG from ECL, HLT mumu;EventT0 [ns];events / 0.5 ns",
79 "ECL EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
82 "CDC EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
85 "TOP EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
88 "SVD EventT0, L1TRG from CDC, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
92 "ECL EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
95 "CDC EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
98 "TOP EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
101 "SVD EventT0, L1TRG from CDC, HLT Hadron;EventT0 [ns];events / 0.5 ns",
102 nBins, minT0, maxT0);
105 "ECL EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
106 nBins, minT0, maxT0);
108 "CDC EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
109 nBins, minT0, maxT0);
111 "TOP EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
112 nBins, minT0, maxT0);
114 "SVD EventT0, L1TRG from CDC, HLT mumu;EventT0 [ns];events / 0.5 ns",
115 nBins, minT0, maxT0);
119 "ECL EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
120 nBins, minT0, maxT0);
122 "CDC EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
123 nBins, minT0, maxT0);
125 "TOP EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
126 nBins, minT0, maxT0);
128 "SVD EventT0, L1TRG from TOP, HLT Bhabha;EventT0 [ns];events / 0.5 ns",
129 nBins, minT0, maxT0);
132 "ECL EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
133 nBins, minT0, maxT0);
135 "CDC EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
136 nBins, minT0, maxT0);
138 "TOP EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
139 nBins, minT0, maxT0);
141 "SVD EventT0, L1TRG from TOP, HLT Hadron;EventT0 [ns];events / 0.5 ns",
142 nBins, minT0, maxT0);
145 "ECL EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
146 nBins, minT0, maxT0);
148 "CDC EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
149 nBins, minT0, maxT0);
151 "TOP EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
152 nBins, minT0, maxT0);
154 "SVD EventT0, L1TRG from TOP, HLT mumu;EventT0 [ns];events / 0.5 ns",
155 nBins, minT0, maxT0);
180 B2WARNING(
"Missing EventT0, EventT0DQM is skipped.");
185 B2WARNING(
"Missing SoftwareTriggerResult, EventT0DQM is skipped.");
241 B2WARNING(
"TRGSummary object not available but required to indicate which detector provided the L1 trigger time");
247 B2WARNING(
"Missing EventT0, EventT0DQM is skipped.");
257 B2WARNING(
"SoftwareTriggerResult object not available but require to select bhabha/mumu/hadron events for this module");
261 const std::map<std::string, int>& fresults =
m_TrgResult->getResults();
262 if ((fresults.find(
"software_trigger_cut&skim&accept_bhabha") == fresults.end()) ||
263 (fresults.find(
"software_trigger_cut&skim&accept_mumu_2trk") == fresults.end()) ||
264 (fresults.find(
"software_trigger_cut&skim&accept_hadron") == fresults.end())) {
265 B2WARNING(
"EventT0DQMModule: Can't find required bhabha or mumu or hadron trigger identifier");
270 const bool IsECLL1TriggerSource = (
m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_ECL);
272 const bool IsTOPL1TriggerSource = (
m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_TOP);
274 const bool IsCDCL1TriggerSource = (
m_objTrgSummary->getTimType() == TRGSummary::ETimingType::TTYP_CDC);
276 B2DEBUG(20,
"IsECLL1TriggerSource = " << IsECLL1TriggerSource);
277 B2DEBUG(20,
"IsTOPL1TriggerSource = " << IsTOPL1TriggerSource);
278 B2DEBUG(20,
"IsCDCL1TriggerSource = " << IsCDCL1TriggerSource);
281 const bool IsEvtAcceptedBhabha = (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_bhabha") ==
283 const bool IsEvtAcceptedHadron = (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_hadron") ==
285 const bool IsEvtAcceptedMumu = (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_mumu_2trk") ==
289 B2DEBUG(20,
"bhabha trigger result = " <<
static_cast<std::underlying_type<SoftwareTriggerCutResult>::type
>
290 (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_bhabha"))) ;
291 B2DEBUG(20,
"hadron trigger result = " <<
static_cast<std::underlying_type<SoftwareTriggerCutResult>::type
>
292 (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_hadron"))) ;
293 B2DEBUG(20,
"mu mu trigger result = " <<
static_cast<std::underlying_type<SoftwareTriggerCutResult>::type
>
294 (
m_TrgResult->getResult(
"software_trigger_cut&skim&accept_mumu_2trk"))) ;
295 B2DEBUG(20,
"bhabha trigger comparison bool = " << IsEvtAcceptedBhabha) ;
296 B2DEBUG(20,
"hadron trigger comparison bool = " << IsEvtAcceptedHadron) ;
297 B2DEBUG(20,
"mumu trigger comparison bool = " << IsEvtAcceptedMumu) ;
301 double eventT0_ECL = -1000 ;
302 double eventT0_CDC = -1000 ;
303 double eventT0_TOP = -1000 ;
304 double eventT0_SVD = -1000 ;
307 if (
m_eventT0->hasTemporaryEventT0(Const::EDetector::CDC)) {
308 auto evtT0List_CDC =
m_eventT0->getTemporaryEventT0s(Const::EDetector::CDC) ;
312 eventT0_CDC = evtT0List_CDC.back().eventT0 ;
316 if (
m_eventT0->hasTemporaryEventT0(Const::EDetector::ECL)) {
318 auto evtT0List_ECL =
m_eventT0->getTemporaryEventT0s(Const::EDetector::ECL) ;
325 eventT0_ECL = eclBestT0->eventT0 ;
329 if (
m_eventT0->hasTemporaryEventT0(Const::EDetector::TOP)) {
330 auto evtT0List_TOP =
m_eventT0->getTemporaryEventT0s(Const::EDetector::TOP) ;
334 eventT0_TOP = evtT0List_TOP.back().eventT0 ;
337 if (
m_eventT0->hasTemporaryEventT0(Const::EDetector::SVD)) {
338 auto evtT0List_SVD =
m_eventT0->getTemporaryEventT0s(Const::EDetector::SVD) ;
340 eventT0_SVD = evtT0List_SVD.back().eventT0 ;
344 if (IsECLL1TriggerSource) {
346 if (IsEvtAcceptedBhabha) {
353 if (IsEvtAcceptedHadron) {
360 if (IsEvtAcceptedMumu) {
368 else if (IsTOPL1TriggerSource) {
370 if (IsEvtAcceptedBhabha) {
377 if (IsEvtAcceptedHadron) {
384 if (IsEvtAcceptedMumu) {
392 else if (IsCDCL1TriggerSource) {
394 if (IsEvtAcceptedBhabha) {
401 if (IsEvtAcceptedHadron) {
408 if (IsEvtAcceptedMumu) {
416 B2DEBUG(20,
"eventT0_ECL = " << eventT0_ECL <<
" ns") ;
417 B2DEBUG(20,
"eventT0_CDC = " << eventT0_CDC <<
" ns") ;
418 B2DEBUG(20,
"eventT0_TOP = " << eventT0_TOP <<
" ns") ;
419 B2DEBUG(20,
"eventT0_SVD = " << eventT0_SVD <<
" ns") ;
TH1F * m_histEventT0_CDC_bhabha_L1_TOPTRG
event t0 histogram for CDC, HLT bha bha events, L1 time by TOP 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.
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.
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.
virtual void beginRun() override
This method is called for each run.
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
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
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
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.
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
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
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...
REG_MODULE(arichBtest)
Register the Module.
@ c_accept
Accept this event.
Abstract base class for different kinds of events.
Structure for storing the extracted event t0s together with its detector and its uncertainty.