11 #include <beast/bgo/modules/BgoDigitizerModule.h>
12 #include <beast/bgo/dataobjects/BgoSimHit.h>
14 #include <framework/logging/Logger.h>
15 #include <framework/gearbox/GearDir.h>
16 #include <framework/core/RandomNumbers.h>
40 setDescription(
"Bgo digitizer module");
49 BgoDigitizerModule::~BgoDigitizerModule()
53 void BgoDigitizerModule::initialize()
55 B2INFO(
"BgoDigitizer: Initializing");
56 m_bgoHit.registerInDataStore();
63 void BgoDigitizerModule::beginRun()
67 void BgoDigitizerModule::event()
72 for (
int i = 0; i < nentries; i++) {
81 double erecdep = m_energyDeposit;
82 erecdep += gRandom->Gaus(0, GetEnergyResolutionGeV(m_energyDeposit, m_cellID));
84 BgoHits.
appendNew(
BgoHit(m_cellID, m_trackID, pdgCode, m_Time * m_energyDeposit / erecdep, m_energyDeposit, m_Mom,
85 m_Pos * (m_energyDeposit / erecdep), erecdep));
91 void BgoDigitizerModule::getXMLData()
93 GearDir content =
GearDir(
"/Detector/DetectorComponent[@name=\"BGO\"]/Content/");
98 for (
double EnResConst : content.getArray(
"EnergyResolutionConst", {0})) {
99 m_EnergyResolutionConst[iEnResConst] = EnResConst;
103 for (
double EnResFac : content.getArray(
"EnergyResolutionFactor", {0})) {
104 m_EnergyResolutionFactor[iEnResFac] = EnResFac / 100.;
108 for (
double Threshold : content.getArray(
"Threshold", {0})) {
110 m_Threshold[iThres] = Threshold;
114 for (
double Range : content.getArray(
"Range", {0})) {
116 m_Range[iRange] =
Range;
120 B2INFO(
"BgoDigitizer: Aquired bgo locations and gas parameters");
121 B2INFO(
" from BGO.xml. There are " << nBGO <<
" BGOs implemented");
126 Double_t BgoDigitizerModule::GetEnergyResolutionGeV(Double_t pEnergy,
int CellId)
129 return (m_EnergyResolutionFactor[CellId] * TMath::Sqrt(pEnergy) + m_EnergyResolutionConst[CellId] * pEnergy);
134 void BgoDigitizerModule::endRun()
138 void BgoDigitizerModule::terminate()