12 #include <klm/bklm/modules/bklmDigitAnalyzer/BKLMDigitAnalyzerModule.h>
15 #include <framework/datastore/StoreObjPtr.h>
16 #include <framework/dataobjects/EventMetaData.h>
29 m_outputRootFile(
nullptr),
32 for (
int i = 0; i < 2; ++i) {
33 m_histoLayerVsSector[i] =
nullptr;
34 m_histoLayerVsSectorPerPlane[i][0] =
nullptr;
35 m_histoLayerVsSectorPerPlane[i][1] =
nullptr;
36 for (
int s = 0; s < 8; ++s) {
37 m_histoLayer[i][s] =
nullptr;
38 for (
int p = 0; p < 2; ++p) {
39 m_histoChannel[i][s][p] =
nullptr;
40 m_histoStrip[i][s][p] =
nullptr;
41 m_histoTdc[i][s][p] =
nullptr;
42 m_histoCTimeDiff[i][s][p] =
nullptr;
48 setDescription(
"Module useful to quickly analyze BKLM unpacked data.");
51 addParam(
"outputRootName", m_outputRootName,
"Name of output .root file (without .root!)", std::string(
"bklmHitmap"));
71 struct tm* tm = gmtime(&rawTime);
79 outputRootNameTString +=
"_run" + runNumberTString +
".root";
81 TString label[2] = {
"BF",
"BB"};
84 B2INFO(
"BKLMDigitAnalyzer:: the output file '" << outputRootNameTString.Data() <<
"' will be created for run " <<
m_runNumber);
94 m_extraInfo =
new TTree(
"extraInfo",
"Extra informations");
103 exp = eventMetaData->getExperiment();
105 year = tm->tm_year + 1900;
106 month = tm->tm_mon + 1;
115 for (
int fb = 0; fb < 2; fb++) {
118 "Layer (0-based)", 17, -0.5, 8.,
"BF Sector", 0,
m_histoList);
120 for (
int isRPCorPhi = 0; isRPCorPhi < 2; isRPCorPhi++) {
124 label[fb] +
" Hitmap of plane z -- run" + runNumberTString, 31, -0.5, 15.,
"Layer (0-based)", 17, -0.5, 8.,
"BF Sector", 0,
128 label[fb] +
" Hitmap of plane phi -- run" + runNumberTString, 31, -0.5, 15.,
"Layer (0-based)", 17, -0.5, 8.,
"BF Sector", 0,
131 for (
int iSector = 0; iSector < 8; iSector++) {
133 TString iSectorTString(
toString(iSector).c_str());
134 TString nameSector = label[fb] + iSectorTString;
136 if (isRPCorPhi == 0) {
139 m_histoLayer[fb][iSector] =
createTH1(
"Layer" + nameSector, nameSector +
" Layer -- run" + runNumberTString, 31, -0.5, 15.,
143 nameSector +
" Plane z, electronic channels -- run" + runNumberTString, 31,
144 -0.5, 15.,
"Layer (0-based)", 130, -0.5, 64.5,
"Channel", 1,
m_histoList);
147 nameSector +
" Plane z, strips -- run" + runNumberTString,
148 31, -0.5, 15.,
"Layer (0-based)", 130, -0.5, 64.5,
"Strip", 1,
m_histoList);
151 nameSector +
" TDC (Scintillators) -- run" + runNumberTString, 60, 0, 30,
"TDC",
"Counts", 1,
m_histoList);
154 nameSector +
" CTime diff. (Scintillators) -- run" + runNumberTString, 200, -200, -100,
"Sci_CTime - Trg_CTime [ns]",
"Counts", 1,
160 nameSector +
" Plane phi, electronic channels -- run" + runNumberTString,
161 31, -0.5, 15.,
"Layer (0-based)", 130, -0.5, 64.5,
"Channel", 1,
m_histoList);
164 nameSector +
" Plane phi, strips -- run" + runNumberTString,
165 31, -0.5, 15.,
"Layer (0-based)", 130, -0.5, 64.5,
"Strip", 1,
m_histoList);
167 m_histoTdc[fb][iSector][isRPCorPhi] =
createTH1(
"RPCTdc" + nameSector, nameSector +
" TDC (RPCs) -- run" + runNumberTString, 230,
171 nameSector +
" CTime diff. (RPCs) -- run" + runNumberTString, 350, -3000, 500,
"RPC_CTime - Trg_CTime [ns]",
"Counts", 1,
187 B2WARNING(
"BKLMDigitAnalyzer:: the total number of BKLMDigit differs from the sum of RPC and scintillator hits stored in BKLMEventDigitDebug!");
189 B2WARNING(
"BKLMDigitAnalyzer:: the total number of BKLMDigit differs from the number of outOfRange-flagged hits stored in BKLMEventDigitDebug!");
197 m_histoLayerVsSector[1 - digit.getSection()]->Fill(digit.getLayer() - 1, digit.getSector() - 1);
201 m_histoLayer[1 - digit.getSection()][digit.getSector() - 1]->Fill(digit.getLayer() - 1);
203 m_histoChannel[1 - digit.getSection()][digit.getSector() - 1][digit.isPhiReadout()]->Fill(digit.getLayer() - 1,
206 m_histoStrip[1 - digit.getSection()][digit.getSector() - 1][digit.isPhiReadout()]->Fill(digit.getLayer() - 1,
207 digit.getStrip() - 1);
210 m_histoTdc[1 - digit.getSection()][digit.getSector() - 1][digit.inRPC()]->Fill(digit.getTime());
212 m_histoCTimeDiff[1 - digit.getSection()][digit.getSector() - 1][digit.inRPC()]->Fill(digit.getCTime() -
231 while ((obj = nextHisto()))
232 obj->Write(
"", TObject::kWriteDelete);
242 const char* titleX,
const char* titleY,
bool drawStat, TList* histoList)
244 TH1F* hist =
new TH1F(name, title, nbinsX, minX, maxX);
245 hist->GetXaxis()->SetTitle(titleX);
246 hist->GetYaxis()->SetTitle(titleY);
247 TGaxis::SetMaxDigits(3);
248 hist->SetLineWidth(1);
249 hist->SetLineColor(kRed);
253 histoList->Add(hist);
258 const char* titleX, Int_t nbinsY, Double_t minY, Double_t maxY,
const char* titleY,
bool drawStat, TList* histoList)
260 TH2F* hist =
new TH2F(name, title, nbinsX, minX, maxX, nbinsY, minY, maxY);
261 hist->GetXaxis()->SetTitle(titleX);
262 hist->GetYaxis()->SetTitle(titleY);
263 TGaxis::SetMaxDigits(3);
267 histoList->Add(hist);