11 #include "pxd/modules/pxdDQM/PXDRawDQMCorrModule.h"
13 #include <framework/core/HistoModule.h>
15 #include <framework/datastore/StoreArray.h>
18 #include <boost/format.hpp>
22 #include "TDirectory.h"
41 setDescription(
"PXD DQM Correlation module");
42 setPropertyFlags(c_ParallelProcessingCertified);
43 addParam(
"PXDRawHitsName", m_storeRawHitsName,
"The name of the StoreArray of PXDRawHits to be processed",
string(
""));
44 addParam(
"histogramDirectoryName", m_histogramDirectoryName,
"Name of the directory where histograms will be placed",
45 std::string(
"pxdrawcorr"));
53 void PXDRawDQMCorrModule::defineHisto()
56 TDirectory* oldDir = gDirectory;
57 if (m_histogramDirectoryName !=
"") {
58 oldDir->mkdir(m_histogramDirectoryName.c_str());
59 oldDir->cd(m_histogramDirectoryName.c_str());
67 m_CorrelationU =
new TH2F(
"RawCorrelationU",
"Raw Correlation of U;U1/cells;U2/cells", nPixelsU1 + nPixelsU2, nPixelsU1, nPixelsU2,
68 nPixelsU1 + nPixelsU2, nPixelsU1, nPixelsU2);
69 m_CorrelationV =
new TH2F(
"RawCorrelationV",
"Raw Correlation of V;V1/cells;V2/cells", nPixelsV1 + nPixelsV2, nPixelsV1, nPixelsV2,
70 nPixelsV1 + nPixelsV2, nPixelsV1, nPixelsV2);
71 m_DeltaU =
new TH1F(
"RawDeltaU",
"Raw Correlation of U2-U1;Udiff/cells", 2 * nPixelsU1 + 2 * nPixelsU2, -nPixelsU2 + nPixelsU1,
72 nPixelsU2 - nPixelsU1);
73 m_DeltaV =
new TH1F(
"RawDeltaV",
"Raw Correlation of V2-V1;Vdiff/cells", 2 * nPixelsV1 + 2 * nPixelsV2, -nPixelsV2 + nPixelsV1,
74 nPixelsV2 - nPixelsV1);
76 m_In1CorrelationU =
new TH2F(
"RawIn1CorrelationU",
"Raw In1 Correlation of U;U1/cells;U2/cells", nPixelsU1 + nPixelsU2, nPixelsU1,
77 nPixelsU2, nPixelsU1 + nPixelsU2, nPixelsU1, nPixelsU2);
78 m_In1CorrelationV =
new TH2F(
"RawIn1CorrelationV",
"Raw In1 Correlation of V;V1/cells;V2/cells", nPixelsV1 + nPixelsV2, nPixelsV1,
79 nPixelsV2, nPixelsV1 + nPixelsV2, nPixelsV1, nPixelsV2);
80 m_In1DeltaU =
new TH1F(
"RawIn1DeltaU",
"Raw In1 Correlation of U2-U1;Udiff/cells", 2 * nPixelsU1 + 2 * nPixelsU2,
81 -nPixelsU2 + nPixelsU1, nPixelsU2 - nPixelsU1);
82 m_In1DeltaV =
new TH1F(
"RawIn1DeltaV",
"Raw In1 Correlation of V2-V1;Vdiff/cells", 2 * nPixelsV1 + 2 * nPixelsV2,
83 -nPixelsV2 + nPixelsV1, nPixelsV2 - nPixelsV1);
85 m_In2CorrelationU =
new TH2F(
"RawIn2CorrelationU",
"Raw In2 Correlation of U;U1/cells;U2/cells", nPixelsU1 + nPixelsU2, nPixelsU1,
86 nPixelsU2, nPixelsU1 + nPixelsU2, nPixelsU1, nPixelsU2);
87 m_In2CorrelationV =
new TH2F(
"RawIn2CorrelationV",
"Raw In2 Correlation of V;V1/cells;V2/cells", nPixelsV1 + nPixelsV2, nPixelsV1,
88 nPixelsV2, nPixelsV1 + nPixelsV2, nPixelsV1, nPixelsV2);
89 m_In2DeltaU =
new TH1F(
"RawIn2DeltaU",
"Raw In2 Correlation of U2-U1;Udiff/cells", 2 * nPixelsU1 + 2 * nPixelsU2,
90 -nPixelsU2 + nPixelsU1, nPixelsU2 - nPixelsU1);
91 m_In2DeltaV =
new TH1F(
"RawIn2DeltaV",
"Raw In2 Correlation of V2-V1;Vdiff/cells", 2 * nPixelsV1 + 2 * nPixelsV2,
92 -nPixelsV2 + nPixelsV1, nPixelsV2 - nPixelsV1);
99 void PXDRawDQMCorrModule::initialize()
104 m_storeRawHits.isRequired(m_storeRawHitsName);
107 void PXDRawDQMCorrModule::beginRun()
110 m_CorrelationU->Reset();
111 m_CorrelationV->Reset();
115 m_In1CorrelationU->Reset();
116 m_In1CorrelationV->Reset();
117 m_In1DeltaU->Reset();
118 m_In1DeltaV->Reset();
120 m_In2CorrelationU->Reset();
121 m_In2CorrelationV->Reset();
122 m_In2DeltaU->Reset();
123 m_In2DeltaV->Reset();
128 void PXDRawDQMCorrModule::event()
130 for (
auto& hit1 : m_storeRawHits) {
131 int iPlane1 = hit1.getSensorID().getLayerNumber();
133 for (
auto& hit2 : m_storeRawHits) {
134 int iPlane2 = hit2.getSensorID().getLayerNumber();
136 m_CorrelationU->Fill(hit1.getColumn(), hit2.getColumn());
137 m_CorrelationV->Fill(hit1.getRow(), hit2.getRow());
138 m_DeltaU->Fill(hit2.getColumn() - hit1.getColumn());
139 m_DeltaV->Fill(hit2.getRow() - hit1.getRow());
141 if (hit1.getColumn() != hit2.getColumn()) {
142 m_In1CorrelationU->Fill(hit1.getColumn(), hit2.getColumn());
143 m_In1DeltaU->Fill(hit2.getColumn() - hit1.getColumn());
145 if (hit1.getRow() != hit2.getRow()) {
146 m_In1CorrelationV->Fill(hit1.getRow(), hit2.getRow());
147 m_In1DeltaV->Fill(hit2.getRow() - hit1.getRow());
152 for (
auto& hit2 : m_storeRawHits) {
153 int iPlane2 = hit2.getSensorID().getLayerNumber();
155 if (hit1.getColumn() != hit2.getColumn()) {
156 m_In2CorrelationU->Fill(hit1.getColumn(), hit2.getColumn());
157 m_In2DeltaU->Fill(hit2.getColumn() - hit1.getColumn());
159 if (hit1.getRow() != hit2.getRow()) {
160 m_In2CorrelationV->Fill(hit1.getRow(), hit2.getRow());
161 m_In2DeltaV->Fill(hit2.getRow() - hit1.getRow());