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,
67 hTrigBunchInjLERproj =
new TH1I(
"hTTDTrigBunchInjLERproj",
68 "Offset between triggered bunch and injected bunch in LER;Injected Bunch(rel)-Triggered Bunch(rel);Counts per 4 Bunches", 1280, 0,
70 hTrigBunchInjHERproj =
new TH1I(
"hTTDTrigBunchInjHERproj",
71 "Offset between triggered bunch and injected bunch in HER;Injected Bunch(rel)-Triggered Bunch(rel);Counts per 4 Bunches", 1280, 0,
77 void TTDDQMModule::initialize()
80 m_EventLevelTriggerTimeInfo.isRequired();
83 void TTDDQMModule::beginRun()
86 hTrigAfterInjLER->Reset();
87 hTrigAfterInjHER->Reset();
88 hTriggersDeltaT->Reset();
89 hTriggersPerBunch->Reset();
90 hBunchInjHER->Reset();
91 hBunchInjLER->Reset();
92 hTrigBunchInjLER->Reset();
93 hTrigBunchInjHER->Reset();
94 hTrigBunchInjLERproj->Reset();
95 hTrigBunchInjHERproj->Reset();
98 void TTDDQMModule::event()
101 if (m_EventLevelTriggerTimeInfo.isValid() and m_EventLevelTriggerTimeInfo->isValid()) {
109 hTriggersDeltaT->Fill(m_EventLevelTriggerTimeInfo->getTimeSincePrevTrigger() / 127.);
110 int triggered_bunch_in_ticks = m_EventLevelTriggerTimeInfo->getBunchNumber();
111 hTriggersPerBunch->Fill(triggered_bunch_in_ticks * 4);
114 if (m_EventLevelTriggerTimeInfo->hasInjection()) {
115 auto time_since_inj_in_ticks = m_EventLevelTriggerTimeInfo->getTimeSinceLastInjection();
117 float time_since_inj_in_us = time_since_inj_in_ticks / 127.;
119 int injected_bunch_in_ticks = ((time_since_inj_in_ticks - triggered_bunch_in_ticks + 1280) % 1280);
121 if (m_EventLevelTriggerTimeInfo->isHER()) {
122 hTrigAfterInjHER->Fill(time_since_inj_in_us, time_since_inj_in_us -
int(time_since_inj_in_us / (5120 / 508.)) * (5120 / 508.));
123 hBunchInjHER->Fill(injected_bunch_in_ticks * 4);
124 hTrigBunchInjHER->Fill(injected_bunch_in_ticks * 4, triggered_bunch_in_ticks * 4);
125 hTrigBunchInjHERproj->Fill(((injected_bunch_in_ticks - triggered_bunch_in_ticks + 1280) % 1280) * 4);
127 hTrigAfterInjLER->Fill(time_since_inj_in_us, time_since_inj_in_us -
int(time_since_inj_in_us / (5120 / 508.)) * (5120 / 508.));
128 hBunchInjLER->Fill(injected_bunch_in_ticks * 4);
129 hTrigBunchInjLER->Fill(injected_bunch_in_ticks * 4, triggered_bunch_in_ticks * 4);
130 hTrigBunchInjLERproj->Fill(((injected_bunch_in_ticks - triggered_bunch_in_ticks + 1280) % 1280) * 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.