11 #include <beast/csi/modules/CsiStudy_v2Module.h>
12 #include <framework/logging/Logger.h>
13 #include <framework/gearbox/GearDir.h>
40 setDescription(
"Study_v2 module for Csis (BEAST)");
42 addParam(
"Ethres", m_Ethres,
"Energy threshold in MeV", 0.0);
45 CsiStudy_v2Module::~CsiStudy_v2Module()
50 void CsiStudy_v2Module::defineHisto()
52 for (
int i = 0; i < 153; i++) {
53 h_csi_drate[i] =
new TH1F(TString::Format(
"csi_rate_%d", i),
"count", 18, 0., 18.);
54 h_csi_drate[i]->Sumw2();
56 h_csi_rs_drate[i] =
new TH2F(TString::Format(
"csi_rs_drate_%d", i),
"count v. ring section", 18, 0., 18., 12, 0., 12.);
57 h_csi_rs_drate[i]->Sumw2();
59 for (
int j = 0; j < 18; j++) {
61 h_csi_dedep[j][i] =
new TH1F(TString::Format(
"csi_dedep_%d_%d", j, i),
"Energy deposited [MeV]", 5000, 0., 400.);
62 h_csi_rs_dedep[j][i] =
new TH2F(TString::Format(
"csi_rs_dedep_%d_%d", j, i),
"Energy deposited [MeV]", 5000, 0., 400., 12, 0., 12.);
64 h_csi_denergy[j][i] =
new TH1F(TString::Format(
"csi_denergy_%d_%d", j, i),
"Energy deposited [MeV]", 200, 0.1, 3.);
65 h_csi_rs_denergy[j][i] =
new TH2F(TString::Format(
"csi_rs_denergy_%d_%d", j, i),
"Energy deposited [MeV] per section", 200, 0.1, 3.,
69 h_csi_dedep[j][i]->Sumw2();
70 h_csi_rs_dedep[j][i]->Sumw2();
71 h_csi_denergy[j][i]->Sumw2();
72 h_csi_rs_denergy[j][i]->Sumw2();
157 void CsiStudy_v2Module::initialize()
159 B2INFO(
"CsiStudy_v2Module: Initialize");
162 MetaHits.isRequired();
163 SimHits.isOptional();
173 void CsiStudy_v2Module::beginRun()
177 void CsiStudy_v2Module::event()
180 if (SimHits.getEntries() == 0) {
186 int ring_section = -1;
187 int section_ordering[12] = {1, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
188 for (
const auto& MetaHit : MetaHits) {
190 double sad_ssraw = MetaHit.getssraw();
192 if (sad_ssraw >= 0) ssraw = sad_ssraw / 100.;
193 else if (sad_ssraw < 0) ssraw = 3000. + sad_ssraw / 100.;
194 ring_section = section_ordering[(int)((ssraw) / 250.)] - 1;
216 for (
const auto&
Hit : Hits) {
217 int detNB =
Hit.getCellId();
218 double Edep =
Hit.getEnergyDep() * 1e3;
219 double RecEdep = Edep;
244 for (
int i = 0; i < 153; i ++) {
248 if (RecEdep >= m_Thres_hitRate[detNB][i] && m_Thres_hitRate[detNB][i] > 0) {
249 h_csi_drate[i]->Fill(detNB);
250 h_csi_rs_drate[i]->Fill(detNB, ring_section);
252 if (RecEdep >= m_Thres_sumE[detNB][i] && m_Thres_sumE[detNB][i] > 0) {
253 h_csi_dedep[detNB][i]->Fill(RecEdep);
254 h_csi_rs_dedep[detNB][i]->Fill(RecEdep, ring_section);
256 h_csi_denergy[detNB][i]->Fill(log10(RecEdep));
257 h_csi_rs_denergy[detNB][i]->Fill(log10(RecEdep), ring_section);
263 void CsiStudy_v2Module::getXMLData()
265 GearDir content =
GearDir(
"/Detector/DetectorComponent[@name=\"CSI\"]/Content/");
266 m_Ethres = content.getDouble(
"Ethres");
269 for (
int i = 0; i < 18; i ++) {
270 int iThres_hitRate = 0;
271 for (
double Thres : content.getArray(TString::Format(
"thres_hitRate_det%d", i).Data(), {0})) {
272 m_Thres_hitRate[i][iThres_hitRate] = Thres;
276 for (
double Thres : content.getArray(TString::Format(
"thres_sumE_det%d", i).Data(), {0})) {
277 m_Thres_sumE[i][iThres_sumE] = Thres;
282 B2INFO(
"CsiStudy_v2");
285 void CsiStudy_v2Module::endRun()
291 void CsiStudy_v2Module::terminate()