14 #include <dqm/analysis/modules/DQMHistAnalysisPXDInjection.h>
33 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms were placed",
34 std::string(
"PXDINJ"));
35 B2DEBUG(1,
"DQMHistAnalysisPXDInjection: Constructor done.");
38 void DQMHistAnalysisPXDInjectionModule::initialize()
43 m_cInjectionLERPXD =
new TCanvas(m_histogramDirectoryName +
44 TString(
"/c_PXDInjectionLER"));
45 m_cInjectionHERPXD =
new TCanvas(m_histogramDirectoryName +
46 TString(
"/c_PXDInjectionHER"));
47 m_hInjectionLERPXD =
new TH1F(
"HitInjectionLERPXD",
"PXD Hits after LER Injection;Time in #mus;Mean Hits/event", 4000, 0 , 20000);
48 m_hInjectionHERPXD =
new TH1F(
"HitInjectionHERPXD",
"PXD Hits after HER Injection;Time in #mus;Mean Hits/event", 4000, 0 , 20000);
49 const VXD::GeoCache& vxdGeometry = VXD::GeoCache::getInstance();
51 for (
VxdID& avxdid : vxdsensors) {
53 if (info.getType() != VXD::SensorInfoBase::PXD)
continue;
54 m_sensors.push_back(avxdid);
57 for (
VxdID& avxdid : m_sensors) {
58 TString buff = (std::string)avxdid;
59 TString bufful = buff;
60 bufful.ReplaceAll(
".",
"_");
62 m_cInjectionLERPXDMod[avxdid] =
new TCanvas(m_histogramDirectoryName +
"/c_PXDInjectionLER_" + bufful);
63 m_cInjectionHERPXDMod[avxdid] =
new TCanvas(m_histogramDirectoryName +
"/c_PXDInjectionHER_" + bufful);
64 m_hInjectionLERPXDMod[avxdid] =
new TH1F(
"HitInjectionLERPXD_" + bufful,
65 "PXD Hits after LER Injection " + buff +
"/Time;Time in #mus;Count/Time (5 #mus bins)", 4000, 0, 20000);
66 m_hInjectionHERPXDMod[avxdid] =
new TH1F(
"HitInjectionHERPXD_" + bufful,
67 "PXD Hits after HER Injection " + buff +
"/Time;Time in #mus;Count/Time (5 #mus bins)", 4000, 0, 20000);
68 m_cInjectionLERPXDModNorm[avxdid] =
new TCanvas(m_histogramDirectoryName +
"/c_PXDInjectionLERNorm_" + bufful);
69 m_cInjectionHERPXDModNorm[avxdid] =
new TCanvas(m_histogramDirectoryName +
"/c_PXDInjectionHERNorm_" + bufful);
70 m_hInjectionLERPXDModNorm[avxdid] =
new TH1F(
"HitInjectionLERPXDNorm_" + bufful,
71 "PXD Hits after LER Injection " + buff +
" normalized to 1.1.x/Time;Time in #mus;factor", 4000, 0, 20000);
72 m_hInjectionHERPXDModNorm[avxdid] =
new TH1F(
"HitInjectionHERPXDNorm_" + bufful,
73 "PXD Hits after HER Injection " + buff +
" normalized to 1.1.x/Time;Time in #mus;factor", 4000, 0, 20000);
76 B2DEBUG(1,
"DQMHistAnalysisPXDInjection: initialized.");
80 void DQMHistAnalysisPXDInjectionModule::beginRun()
82 B2DEBUG(1,
"DQMHistAnalysisPXDInjection: beginRun called.");
93 void DQMHistAnalysisPXDInjectionModule::event()
95 TH1* Triggers =
nullptr;
97 TString locationHits =
"";
98 TString locationTriggers =
"PXDEOccInjLER";
99 if (m_histogramDirectoryName !=
"") {
100 locationTriggers = m_histogramDirectoryName +
"/" + locationTriggers;
102 Triggers = (TH1*)findHist(locationTriggers.Data());
107 TH1* Hits =
nullptr, *RefMod_fw =
nullptr, *RefMod_bw =
nullptr;
108 locationHits =
"PXDOccInjLER";
109 if (m_histogramDirectoryName !=
"") {
110 locationHits = m_histogramDirectoryName +
"/" + locationHits;
112 Hits = (TH1*)findHist(locationHits.Data());
114 m_hInjectionLERPXD->Divide(Hits, Triggers);
116 locationHits =
"PXDOccInjLER_1_1_1";
117 if (m_histogramDirectoryName !=
"") {
118 locationHits = m_histogramDirectoryName +
"/" + locationHits;
120 RefMod_fw = (TH1*)findHist(locationHits.Data());
121 locationHits =
"PXDOccInjLER_1_1_2";
122 if (m_histogramDirectoryName !=
"") {
123 locationHits = m_histogramDirectoryName +
"/" + locationHits;
125 RefMod_bw = (TH1*)findHist(locationHits.Data());
128 for (
VxdID& avxdid : m_sensors) {
129 TString buff = (std::string)avxdid;
130 TString bufful = buff;
131 bufful.ReplaceAll(
".",
"_");
133 locationHits =
"PXDOccInjLER_" + bufful;
134 if (m_histogramDirectoryName !=
"") {
135 locationHits = m_histogramDirectoryName +
"/" + locationHits;
137 Hits = (TH1*)findHist(locationHits.Data());
139 m_hInjectionLERPXDMod[avxdid]->Divide(Hits, Triggers);
140 if (avxdid.getSensorNumber() == 1 && RefMod_fw) {
141 m_hInjectionLERPXDModNorm[avxdid]->Divide(Hits, RefMod_fw);
142 }
else if (avxdid.getSensorNumber() == 2 && RefMod_bw) {
143 m_hInjectionLERPXDModNorm[avxdid]->Divide(Hits, RefMod_bw);
151 locationTriggers =
"PXDEOccInjHER";
152 if (m_histogramDirectoryName !=
"") {
153 locationTriggers = m_histogramDirectoryName +
"/" + locationTriggers;
155 Triggers = (TH1*)findHist(locationTriggers.Data());
160 TH1* Hits =
nullptr, *RefMod_fw =
nullptr, *RefMod_bw =
nullptr;
161 locationHits =
"PXDOccInjHER";
162 if (m_histogramDirectoryName !=
"") {
163 locationHits = m_histogramDirectoryName +
"/" + locationHits;
165 Hits = (TH1*)findHist(locationHits.Data());
167 m_hInjectionHERPXD->Divide(Hits, Triggers);
169 locationHits =
"PXDOccInjHER_1_1_1";
170 if (m_histogramDirectoryName !=
"") {
171 locationHits = m_histogramDirectoryName +
"/" + locationHits;
173 RefMod_fw = (TH1*)findHist(locationHits.Data());
174 locationHits =
"PXDOccInjHER_1_1_2";
175 if (m_histogramDirectoryName !=
"") {
176 locationHits = m_histogramDirectoryName +
"/" + locationHits;
178 RefMod_bw = (TH1*)findHist(locationHits.Data());
180 for (
VxdID& avxdid : m_sensors) {
181 TString buff = (std::string)avxdid;
182 TString bufful = buff;
183 bufful.ReplaceAll(
".",
"_");
184 locationHits =
"PXDOccInjHER_" + bufful;
185 if (m_histogramDirectoryName !=
"") {
186 locationHits = m_histogramDirectoryName +
"/" + locationHits;
188 Hits = (TH1*)findHist(locationHits.Data());
190 m_hInjectionHERPXDMod[avxdid]->Divide(Hits, Triggers);
191 if (avxdid.getSensorNumber() == 1 && RefMod_fw) {
192 m_hInjectionHERPXDModNorm[avxdid]->Divide(Hits, RefMod_fw);
193 }
else if (avxdid.getSensorNumber() == 2 && RefMod_bw) {
194 m_hInjectionHERPXDModNorm[avxdid]->Divide(Hits, RefMod_bw);
202 m_cInjectionLERPXD->Clear();
203 m_cInjectionLERPXD->cd(0);
204 m_cInjectionLERPXD->Pad()->SetLogy();
205 m_hInjectionLERPXD->Draw(
"hist");
207 m_cInjectionHERPXD->Clear();
208 m_cInjectionHERPXD->cd(0);
209 m_cInjectionHERPXD->Pad()->SetLogy();
210 m_hInjectionHERPXD->Draw(
"hist");
212 for (
VxdID& avxdid : m_sensors) {
213 m_cInjectionHERPXDMod[avxdid]->Clear();
214 m_cInjectionHERPXDMod[avxdid]->cd(0);
215 m_cInjectionHERPXDMod[avxdid]->Pad()->SetLogy();
216 m_hInjectionHERPXDMod[avxdid]->Draw(
"hist");
217 m_cInjectionHERPXDModNorm[avxdid]->Clear();
218 m_cInjectionHERPXDModNorm[avxdid]->cd(0);
219 m_hInjectionHERPXDModNorm[avxdid]->Draw(
"hist");
220 m_cInjectionLERPXDMod[avxdid]->Clear();
221 m_cInjectionLERPXDMod[avxdid]->cd(0);
222 m_cInjectionLERPXDMod[avxdid]->Pad()->SetLogy();
223 m_hInjectionLERPXDMod[avxdid]->Draw(
"hist");
224 m_cInjectionLERPXDModNorm[avxdid]->Clear();
225 m_cInjectionLERPXDModNorm[avxdid]->cd(0);
226 m_hInjectionLERPXDModNorm[avxdid]->Draw(
"hist");
The base class for the histogram analysis module.
DQM Histogram Analysis for PXD occupancy after Injection.
Class to faciliate easy access to sensor information of the VXD like coordinate transformations or pi...
const std::vector< VxdID > getListOfSensors() const
Get list of all sensors.
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a referecne to the SensorInfo of a given SensorID.
Base class to provide Sensor Information for PXD and SVD.
Class to uniquely identify a any structure of the PXD and SVD.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.