9 #include <rawdata/modules/TTDDQM/TTDDQMModule.h>
10 #include <TDirectory.h>
27 setDescription(
"Monitor TTD Trigger and Injection");
32 setPropertyFlags(c_ParallelProcessingCertified);
33 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms will be placed",
38 void TTDDQMModule::defineHisto()
40 TDirectory* oldDir = gDirectory;
41 if (m_histogramDirectoryName !=
"") {
42 oldDir->mkdir(m_histogramDirectoryName.c_str());
43 oldDir->cd(m_histogramDirectoryName.c_str());
46 hTrigAfterInjLER =
new TH2I(
"hTTDTrigAfterInjLER",
47 "Triggers for LER veto tuning;Time since last injection in #mus;Time within beam cycle in #mus", 500, 0, 30000, 100, 0,
49 hTrigAfterInjHER =
new TH2I(
"hTTDTrigAfterInjHER",
50 "Triggers for HER veto tuning;Time since last injection in #mus;Time within beam cycle in #mus", 500, 0, 30000, 100, 0,
53 hTriggersDeltaT =
new TH1I(
"hTTDTriggersDeltaT",
54 "#delta Trigger Time since previous trigger;#delta t in #mus;Triggers/Time (0.5 #mus bins)", 100000, 0, 50000);
55 hTriggersPerBunch =
new TH1I(
"hTTDTriggerBunch",
"Triggers per Bunch;Bunch(rel);Triggers per 4 Bunches)", 1280, 0, 1280 * 4);
57 hBunchInjHER =
new TH1I(
"hTTDBunchInjHER",
"Last Injected Bunch HER;Bunch(rel);Counts per 4 Bunches", 1280, 0, 1280 * 4);
58 hBunchInjLER =
new TH1I(
"hTTDBunchInjLER",
"Last Injected Bunch LER;Bunch(rel);Counts per 4 Bunches", 1280, 0, 1280 * 4);
60 hTrigBunchInjLER =
new TH2I(
"hTTDTrigBunchInjLER",
61 "Correlation between triggered bunch and injected bunch in LER;Injected Bunch(rel);Triggered Bunch(rel)", 256, 0, 1280 * 4, 256, 0,
63 hTrigBunchInjHER =
new TH2I(
"hTTDTrigBunchInjHer",
64 "Correlation between triggered bunch and injected bunch in HER;Injected Bunch(rel);Triggered Bunch(rel)", 256, 0, 1280 * 4, 256, 0,
71 void TTDDQMModule::initialize()
74 m_EventLevelTriggerTimeInfo.isRequired();
77 void TTDDQMModule::beginRun()
80 hTrigAfterInjLER->Reset();
81 hTrigAfterInjHER->Reset();
82 hTriggersDeltaT->Reset();
83 hTriggersPerBunch->Reset();
84 hBunchInjHER->Reset();
85 hBunchInjLER->Reset();
86 hTrigBunchInjLER->Reset();
87 hTrigBunchInjHER->Reset();
90 void TTDDQMModule::event()
93 if (m_EventLevelTriggerTimeInfo->isValid()) {
101 hTriggersDeltaT->Fill(m_EventLevelTriggerTimeInfo->getTimeSincePrevTrigger() / 127.);
102 int triggered_bunch_in_ticks = m_EventLevelTriggerTimeInfo->getBunchNumber();
103 hTriggersPerBunch->Fill(triggered_bunch_in_ticks * 4);
106 if (m_EventLevelTriggerTimeInfo->hasInjection()) {
107 auto time_since_inj_in_ticks = m_EventLevelTriggerTimeInfo->getTimeSinceLastInjection();
109 float time_since_inj_in_us = time_since_inj_in_ticks / 127.;
111 int injected_bunch_in_ticks = ((time_since_inj_in_ticks - triggered_bunch_in_ticks + 1280) % 1280);
113 if (m_EventLevelTriggerTimeInfo->isHER()) {
114 hTrigAfterInjHER->Fill(time_since_inj_in_us, time_since_inj_in_us -
int(time_since_inj_in_us / (5120 / 508.)) * (5120 / 508.));
115 hBunchInjHER->Fill(injected_bunch_in_ticks * 4);
116 hTrigBunchInjHER->Fill(injected_bunch_in_ticks * 4, triggered_bunch_in_ticks * 4);
118 hTrigAfterInjLER->Fill(time_since_inj_in_us, time_since_inj_in_us -
int(time_since_inj_in_us / (5120 / 508.)) * (5120 / 508.));
119 hBunchInjLER->Fill(injected_bunch_in_ticks * 4);
120 hTrigBunchInjLER->Fill(injected_bunch_in_ticks * 4, triggered_bunch_in_ticks * 4);
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
TTD Injection DQM module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.