66 if (gTools->getNumberOfLayers() == 0) {
67 B2FATAL(
"Missing geometry for VXD, check steering file.");
69 if (gTools->getNumberOfPXDLayers() == 0) {
70 B2WARNING(
"Missing geometry for PXD, PXD-DQM is skipped.");
75 TDirectory* oldDir = gDirectory;
83 int nPXDChips = gTools->getTotalPXDChips();
86 m_hitMapCounts =
new TH1D(
"DQMER_PXD_PixelHitmapCounts",
"PXD Integrated number of fired pixels per sensor",
87 nPXDSensors, 0, nPXDSensors);
91 m_hitMapFilterCounts =
new TH1D(
"DQMER_PXD_PixelHitmapFilterCounts",
"PXD Integrated number of filtered pixels per sensor",
92 nPXDSensors, 0, nPXDSensors);
96 m_hitMapClCounts =
new TH1D(
"DQMER_PXD_ClusterHitmapCounts",
"PXD Integrated number of clusters per sensor",
97 nPXDSensors, 0, nPXDSensors);
101 m_hitMapClFilterCounts =
new TH1D(
"DQMER_PXD_ClusterHitmapFilterCounts",
"PXD Integrated number of filtered clusters per sensor",
102 nPXDSensors, 0, nPXDSensors);
107 m_hitMapCountsChip =
new TH1D(
"DQMER_PXD_PixelHitmapCountsChip",
"PXD Integrated number of fired pixels per chip",
108 nPXDChips, 0, nPXDChips);
111 m_hitMapClCountsChip =
new TH1D(
"DQMER_PXD_ClusterHitmapCountsChip",
"PXD Integrated number of clusters per chip",
112 nPXDChips, 0, nPXDChips);
115 for (
int i = 0; i < nPXDChips; i++) {
116 VxdID id = gTools->getChipIDFromPXDIndex(i);
118 int iLadder =
id.getLadderNumber();
119 int iSensor =
id.getSensorNumber();
120 int iChip = gTools->getPXDChipNumber(
id);
121 int IsU = gTools->isPXDSideU(
id);
122 TString AxisTicks = Form(
"%i_%i_%i_u%iDCD", iLayer, iLadder, iSensor, iChip);
124 AxisTicks = Form(
"%i_%i_%i_v%iSWB", iLayer, iLadder, iSensor, iChip);
129 for (
int i = 0; i < nPXDSensors; i++) {
130 VxdID id = gTools->getSensorIDFromPXDIndex(i);
132 int iLadder =
id.getLadderNumber();
133 int iSensor =
id.getSensorNumber();
134 TString AxisTicks = Form(
"%i_%i_%i", iLayer, iLadder, iSensor);
152 for (
int i = 0; i < nPXDSensors; i++) {
153 VxdID id = gTools->getSensorIDFromPXDIndex(i);
155 int iLadder =
id.getLadderNumber();
156 int iSensor =
id.getSensorNumber();
157 VxdID sensorID(iLayer, iLadder, iSensor);
159 string sensorDescr = str(format(
"%1%_%2%_%3%") % iLayer % iLadder % iSensor);
163 string name = str(format(
"DQMER_PXD_%1%_Fired") % sensorDescr);
164 string title = str(format(
"PXD Sensor %1% Fired pixels") % sensorDescr);
165 m_fired[i] =
new TH1D(name.c_str(), title.c_str(), 200, 0, 200);
166 m_fired[i]->SetCanExtend(TH1::kAllAxes);
167 m_fired[i]->GetXaxis()->SetTitle(
"# of fired pixels");
168 m_fired[i]->GetYaxis()->SetTitle(
"counts");
172 name = str(format(
"DQMER_PXD_%1%_GoodFired") % sensorDescr);
173 title = str(format(
"PXD Sensor %1% Good pixels") % sensorDescr);
174 m_goodfired[i] =
new TH1D(name.c_str(), title.c_str(), 200, 0, 200);
176 m_goodfired[i]->GetXaxis()->SetTitle(
"# of fired pixels");
181 name = str(format(
"DQMER_PXD_%1%_Clusters") % sensorDescr);
182 title = str(format(
"PXD Sensor %1% Clusters") % sensorDescr);
183 m_clusters[i] =
new TH1D(name.c_str(), title.c_str(), 200, 0, 200);
185 m_clusters[i]->GetXaxis()->SetTitle(
"# of clusters");
186 m_clusters[i]->GetYaxis()->SetTitle(
"counts");
190 name = str(format(
"DQMER_PXD_%1%_GoodClusters") % sensorDescr);
191 title = str(format(
"PXD Sensor %1% Good clusters") % sensorDescr);
192 m_goodclusters[i] =
new TH1D(name.c_str(), title.c_str(), 200, 0, 200);
224 name = str(format(
"DQMER_PXD_%1%_ClusterCharge") % sensorDescr);
225 title = str(format(
"PXD Sensor %1% Cluster Charge") % sensorDescr);
226 m_clusterCharge[i] =
new TH1D(name.c_str(), title.c_str(), 256, 0, 256);
232 name = str(format(
"DQMER_PXD_%1%_PixelSignal") % sensorDescr);
233 title = str(format(
"PXD Sensor %1% Pixel Signal") % sensorDescr);
234 m_pixelSignal[i] =
new TH1D(name.c_str(), title.c_str(), 256, 0, 256);
235 m_pixelSignal[i]->GetXaxis()->SetTitle(
"signal of pixels [ADU]");
240 name = str(format(
"DQMER_PXD_%1%_ClusterSizeU") % sensorDescr);
241 title = str(format(
"PXD Sensor %1% Cluster Size U") % sensorDescr);
242 m_clusterSizeU[i] =
new TH1D(name.c_str(), title.c_str(), 10, 0, 10);
248 name = str(format(
"DQMER_PXD_%1%_ClusterSizeV") % sensorDescr);
249 title = str(format(
"PXD Sensor %1% Cluster Size V") % sensorDescr);
250 m_clusterSizeV[i] =
new TH1D(name.c_str(), title.c_str(), 10, 0, 10);
256 name = str(format(
"DQMER_PXD_%1%_ClusterSizeUV") % sensorDescr);
257 title = str(format(
"PXD Sensor %1% Cluster Size U+V") % sensorDescr);
314 if (gTools->getNumberOfPXDLayers() == 0)
return;
323 vector< int > Pixels(nPXDSensors);
324 vector< int > GoodPixels(nPXDSensors);
326 int iLayer = digit.getSensorID().getLayerNumber();
327 int iLadder = digit.getSensorID().getLadderNumber();
328 int iSensor = digit.getSensorID().getSensorNumber();
329 VxdID sensorID(iLayer, iLadder, iSensor);
330 int index = gTools->getPXDSensorIndex(sensorID);
334 int indexChip = gTools->getPXDChipIndex(sensorID, kTRUE, iChip);
337 indexChip = gTools->getPXDChipIndex(sensorID, kFALSE, iChip);
342 if (digit.getCharge() >=
m_CutMinCharge && digit.getCharge() < 255) {
347 for (
int i = 0; i < nPXDSensors; i++) {
348 if (
m_fired[i] !=
nullptr && Pixels[i] > 0)
m_fired[i]->Fill(Pixels[i]);
353 vector< int > Clusters(nPXDSensors);
354 vector< int > GoodClusters(nPXDSensors);
356 int iLayer = cluster.getSensorID().getLayerNumber();
357 int iLadder = cluster.getSensorID().getLadderNumber();
358 int iSensor = cluster.getSensorID().getSensorNumber();
359 VxdID sensorID(iLayer, iLadder, iSensor);
360 int index = gTools->getPXDSensorIndex(sensorID);
364 int indexChip = gTools->getPXDChipIndex(sensorID, kTRUE, iChip);
367 indexChip = gTools->getPXDChipIndex(sensorID, kFALSE, iChip);
377 GoodClusters[index]++;
381 for (
int i = 0; i < nPXDSensors; i++) {