11 #include <pxd/modules/pxdDQM/PXDROIDQMModule.h>
12 #include "TDirectory.h"
31 setDescription(
"Monitor ROIs");
32 setPropertyFlags(c_ParallelProcessingCertified);
33 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms will be placed",
34 std::string(
"pxdrawroi"));
35 addParam(
"PXDRawROIsName", m_PXDRawROIsName,
"The name of the StoreArray of PXDRawROIs to be processed", std::string(
""));
36 addParam(
"eachModule", m_eachModule,
"create for each module",
false);
37 addParam(
"offlineDQM", m_offlineDQM,
"offline DQM, use 2D plots",
false);
40 void PXDROIDQMModule::defineHisto()
42 TDirectory* oldDir = gDirectory;
43 if (m_histogramDirectoryName !=
"") {
44 oldDir->mkdir(m_histogramDirectoryName.c_str());
45 oldDir->cd(m_histogramDirectoryName.c_str());
48 hrawROIcount =
new TH1F(
"hrawROIcount",
"ROI count;Nr per Event", 250, 0, 250);
49 hrawROItype =
new TH1F(
"hrawROItype",
"ROI type;Nr per Event", 2, 0, 2);
51 hrawROIHLT_DHHID =
new TH1F(
"hrawROIHLT_DHHID",
"HLT ROI per Module;DHH ID;ROIs per Module", 64, 0, 64);
52 hrawROIDC_DHHID =
new TH1F(
"hrawROIDC_DHHID",
"DATCON ROI per Module;DHH ID;ROIs per Module", 64, 0, 64);
55 hrawROIHLTmap =
new TH2F(
"hrawROIHLTmap",
"HLT ROI Middle Map;Ucell;Vcell", 250 / 5, 0, 250, 768 / 4, 0, 768);
56 hrawROIHLTsize =
new TH2F(
"hrawROIHLTsize",
"HLT ROI Size Map;;Ucell;Vcell", 50, 0, 200, 50, 0, 200);
57 hrawROIHLTminV =
new TH1F(
"hrawROIHLTminV",
"HLT ROI minV;V", 768, 0, 768);
58 hrawROIHLTmaxV =
new TH1F(
"hrawROIHLTmaxV",
"HLT ROI maxV;V", 768, 0, 768);
59 hrawROIHLTminU =
new TH1F(
"hrawROIHLTminU",
"HLT ROI minU;U", 250, 0, 250);
60 hrawROIHLTmaxU =
new TH1F(
"hrawROIHLTmaxU",
"HLT ROI maxU;U", 250, 0, 250);
61 hrawROIHLTsizeV =
new TH1F(
"hrawROIHLTsizeV",
"HLT ROI size;V", 768, 0, 768);
62 hrawROIHLTsizeU =
new TH1F(
"hrawROIHLTsizeU",
"HLT ROI size;U", 250, 0, 250);
64 hrawROIDCmap =
new TH2F(
"hrawROIDCmap",
"DATCON ROI Middle Map ;U;V", 250 / 5, 0, 250, 768 / 4, 0, 768);
65 hrawROIDCsize =
new TH2F(
"hrawROIDCsize",
"DATCON ROI Size Map ;U;V", 50, 0, 200, 50, 0, 200);
66 hrawROIDCminV =
new TH1F(
"hrawROIDCminV",
"DATCON ROI minV;V", 768, 0, 768);
67 hrawROIDCmaxV =
new TH1F(
"hrawROIDCmaxV",
"DATCON ROI maxV;V", 768, 0, 768);
68 hrawROIDCminU =
new TH1F(
"hrawROIDCminU",
"DATCON ROI minU;U", 250, 0, 250);
69 hrawROIDCmaxU =
new TH1F(
"hrawROIDCmaxU",
"DATCON ROI maxU;U", 250, 0, 250);
70 hrawROIDCsizeV =
new TH1F(
"hrawROIDCsizeV",
"DATCON ROI size;V", 768, 0, 768);
71 hrawROIDCsizeU =
new TH1F(
"hrawROIDCsizeU",
"DATCON ROI size;U", 250, 0, 250);
73 hrawROINrDCvsNrHLT =
new TH2F(
"hrawROINrDCvsNrHLT",
"Nr DATCON ROI vs Nr HLT ROI; Nr HLT ROI;Nr DATCON ROI",
74 100, 0, 100, 100, 0, 100);
76 if (m_eachModule && m_offlineDQM) {
77 std::vector<VxdID> sensors = m_vxdGeometry.getListOfSensors();
78 for (
VxdID& avxdid : sensors) {
80 if (info.getType() != VXD::SensorInfoBase::PXD)
continue;
83 TString buff = (std::string)avxdid;
84 TString bufful = buff;
85 bufful.ReplaceAll(
".",
"_");
87 int dhh_id = ((avxdid.getLayerNumber() - 1) << 5) | ((avxdid.getLadderNumber()) << 1) | (avxdid.getSensorNumber() - 1);
89 hrawROIHLTmapModule[dhh_id] =
new TH2F(
"hrawROIHLTmap_" + bufful,
90 "HLT ROI Middle Map " + buff +
";Ucell;Vcell", 250, 0, 250, 768, 0, 768);
91 hrawROIHLTsizeModule[dhh_id] =
new TH2F(
"hrawROIHLTsize" + bufful,
92 "HLT ROI Size Map " + buff +
";Ucell;Vcell", 50, 0, 200, 50, 0, 200);
93 hrawROIDCmapModule[dhh_id] =
new TH2F(
"hrawROIDCmap_" + bufful,
94 "DC ROI Middle Map " + buff +
";Ucell;Vcell", 250, 0, 250, 768, 0, 768);
95 hrawROIDCsizeModule[dhh_id] =
new TH2F(
"hrawROIDCsize" + bufful,
96 "DC ROI Size Map " + buff +
";Ucell;Vcell", 50, 0, 200, 50, 0, 200);
104 void PXDROIDQMModule::initialize()
107 m_storeROIs.isRequired(m_PXDRawROIsName);
110 void PXDROIDQMModule::beginRun()
113 if (hrawROIcount) hrawROIcount->Reset();
114 if (hrawROItype) hrawROItype->Reset();
115 if (hrawROIHLT_DHHID) hrawROIHLT_DHHID->Reset();
116 if (hrawROIDC_DHHID) hrawROIDC_DHHID->Reset();
118 for (
auto& a : hrawROIHLTmapModule)
if (a.second) a.second->Reset();
119 for (
auto& a : hrawROIHLTsizeModule)
if (a.second) a.second->Reset();
120 if (hrawROIHLTmap) hrawROIHLTmap->Reset();
121 if (hrawROIHLTsize) hrawROIHLTsize->Reset();
122 if (hrawROIHLTminV) hrawROIHLTminV->Reset();
123 if (hrawROIHLTmaxV) hrawROIHLTmaxV->Reset();
124 if (hrawROIHLTminU) hrawROIHLTminU->Reset();
125 if (hrawROIHLTmaxU) hrawROIHLTmaxU->Reset();
126 if (hrawROIHLTsizeV) hrawROIHLTsizeV->Reset();
127 if (hrawROIHLTsizeU) hrawROIHLTsizeU->Reset();
129 for (
auto& a : hrawROIDCmapModule)
if (a.second) a.second->Reset();
130 for (
auto& a : hrawROIDCsizeModule)
if (a.second) a.second->Reset();
131 if (hrawROIDCmap) hrawROIDCmap->Reset();
132 if (hrawROIDCsize) hrawROIDCsize->Reset();
133 if (hrawROIDCminV) hrawROIDCminV->Reset();
134 if (hrawROIDCmaxV) hrawROIDCmaxV->Reset();
135 if (hrawROIDCminU) hrawROIDCminU->Reset();
136 if (hrawROIDCmaxU) hrawROIDCmaxU->Reset();
137 if (hrawROIDCsizeV) hrawROIDCsizeV->Reset();
138 if (hrawROIDCsizeU) hrawROIDCsizeU->Reset();
140 if (hrawROINrDCvsNrHLT) hrawROINrDCvsNrHLT->Reset();
143 void PXDROIDQMModule::event()
147 if (hrawROIcount) hrawROIcount->Fill(-1);
148 for (
auto& it : m_storeROIs) {
151 if (hrawROIcount) hrawROIcount->Fill(nr);
152 if (hrawROIDC_DHHID) hrawROIDC_DHHID->Fill(-1);
153 if (hrawROIHLT_DHHID) hrawROIHLT_DHHID->Fill(-1);
154 for (
auto j = 0; j < nr; j++) {
155 if (hrawROItype) hrawROItype->Fill(it.getType(j));
156 int Vmin, Vmax, Umin, Umax, Vmean, Umean, Vsize, Usize;
157 Vmin = it.getMinVid(j);
158 Vmax = it.getMaxVid(j);
160 Vmean = (Vmin + Vmax) / 2;
161 Umin = it.getMinUid(j);
162 Umax = it.getMaxUid(j);
164 Umean = (Umin + Umax) / 2;
165 auto id = it.getDHHID(j);
168 if (hrawROIDC_DHHID) hrawROIDC_DHHID->Fill(
id);
169 if (hrawROIDCmapModule[
id]) hrawROIDCmapModule[id]->Fill(Umean, Vmean);
170 if (hrawROIDCsizeModule[
id]) hrawROIDCsizeModule[id]->Fill(Usize, Vsize);
171 if (hrawROIDCmap) hrawROIDCmap->Fill(Umean, Vmean);
172 if (hrawROIDCsize) hrawROIDCsize->Fill(Usize, Vsize);
173 if (hrawROIDCminV) hrawROIDCminV->Fill(Vmin);
174 if (hrawROIDCmaxV) hrawROIDCmaxV->Fill(Vmax);
175 if (hrawROIDCminU) hrawROIDCminU->Fill(Umin);
176 if (hrawROIDCmaxU) hrawROIDCmaxU->Fill(Umax);
177 if (hrawROIDCsizeV) hrawROIDCsizeV->Fill(Vsize);
178 if (hrawROIDCsizeU) hrawROIDCsizeU->Fill(Usize);
181 if (hrawROIHLT_DHHID) hrawROIHLT_DHHID->Fill(
id);
182 if (hrawROIHLTmapModule[
id]) hrawROIHLTmapModule[id]->Fill(Umean, Vmean);
183 if (hrawROIHLTsizeModule[
id]) hrawROIHLTsizeModule[id]->Fill(Usize, Vsize);
184 if (hrawROIHLTmap) hrawROIHLTmap->Fill(Umean, Vmean);
185 if (hrawROIHLTsize) hrawROIHLTsize->Fill(Usize, Vsize);
186 if (hrawROIHLTminV) hrawROIHLTminV->Fill(Vmin);
187 if (hrawROIHLTmaxV) hrawROIHLTmaxV->Fill(Vmax);
188 if (hrawROIHLTminU) hrawROIHLTminU->Fill(Umin);
189 if (hrawROIHLTmaxU) hrawROIHLTmaxU->Fill(Umax);
190 if (hrawROIHLTsizeV) hrawROIHLTsizeV->Fill(Vsize);
191 if (hrawROIHLTsizeU) hrawROIHLTsizeU->Fill(Usize);
195 if (hrawROINrDCvsNrHLT) hrawROINrDCvsNrHLT->Fill(nr_HLT, nr_DC);