10 #include <ecl/modules/eclTimeShiftsPlottingCollector/eclTimeShiftsPlottingCollectorModule.h>
11 #include <framework/gearbox/Const.h>
12 #include <ecl/dbobjects/ECLCrystalCalib.h>
13 #include <ecl/dbobjects/ECLReferenceCrystalPerCrateCalib.h>
14 #include <ecl/digitization/EclConfiguration.h>
15 #include <ecl/geometry/ECLGeometryPar.h>
35 m_CrystalTimeDB("ECLCrystalTimeOffset"),
36 m_CrateTimeDB("ECLCrateTimeOffset"),
39 setDescription(
"This module reads the crystal and crate time offset information from the database");
42 setPropertyFlags(c_ParallelProcessingCertified);
56 B2INFO(
"eclTimeShiftsPlottingCollector: Experiment = " << m_evtMetaData->getExperiment() <<
57 " run = " << m_evtMetaData->getRun());
62 string objectName =
"tree_perCrystal";
63 TTree* tree_crys =
new TTree(objectName.c_str(),
"");
64 tree_crys->Branch<
int>(
"run", &m_run);
65 tree_crys->Branch<
int>(
"exp", &m_exp);
66 tree_crys->Branch<
double>(
"crateTimeConst", &m_crateTimeConst);
67 tree_crys->Branch<
double>(
"crystalTimeConst", &m_crystalTimeConst);
68 tree_crys->Branch<
double>(
"crateTimeUnc", &m_crateTimeConstUnc);
69 tree_crys->Branch<
double>(
"crystalTimeUnc", &m_crystalTimeConstUnc);
70 tree_crys->Branch<
int>(
"crystalID", &m_crystalID);
71 tree_crys->Branch<
int>(
"crateID", &m_crateID);
72 tree_crys->Branch<
int>(
"refCrystalID", &m_refCrystalID);
77 registerObject<TTree>(objectName, tree_crys);
83 m_run = m_evtMetaData->getRun();
84 m_exp = m_evtMetaData->getExperiment();
90 if (m_run != m_previousRun or m_exp != m_previousExp or m_exp < 0 or m_run < 0) {
96 crystalMapper->initFromDB();
100 if (m_CrystalTimeDB.hasChanged()) {
101 m_CrystalTime = m_CrystalTimeDB->getCalibVector();
102 m_CrystalTimeUnc = m_CrystalTimeDB->getCalibUncVector();
104 if (m_CrateTimeDB.hasChanged()) {
105 m_CrateTime = m_CrateTimeDB->getCalibVector();
106 m_CrateTimeUnc = m_CrateTimeDB->getCalibUncVector();
108 B2DEBUG(29,
"Finished checking if previous crate time payload has changed");
109 B2DEBUG(29,
"m_CrateTime size = " << m_CrateTime.size());
110 B2DEBUG(25,
"Crate time +- uncertainty [0]= " << m_CrateTime[0] <<
" +- " << m_CrateTimeUnc[0]);
111 B2DEBUG(25,
"Crate time +- uncertainty [8735]= " << m_CrateTime[8735] <<
" +- " << m_CrateTimeUnc[8735]);
113 B2DEBUG(29,
"Finished checking if previous crate time payload has changed");
114 if (m_RefCrystalsCalibDB.hasChanged()) {
115 m_RefCrystalsCalib = m_RefCrystalsCalibDB->getReferenceCrystals();
117 B2DEBUG(29,
"Finished checking if reference crystal ids payload has changed");
120 B2DEBUG(25,
"eclTimeShiftsPlottingCollector:: loaded ECLCrystalTimeOffset from the database"
121 <<
LogVar(
"IoV", m_CrystalTimeDB.getIoV())
122 <<
LogVar(
"Checksum", m_CrystalTimeDB.getChecksum()));
123 B2DEBUG(25,
"eclTimeShiftsPlottingCollector:: loaded ECLCrateTimeOffset from the database"
124 <<
LogVar(
"IoV", m_CrateTimeDB.getIoV())
125 <<
LogVar(
"Checksum", m_CrateTimeDB.getChecksum()));
126 B2DEBUG(25,
"eclTimeShiftsPlottingCollector:: loaded ECLReferenceCrystalPerCrateCalib from the database"
127 <<
LogVar(
"IoV", m_RefCrystalsCalibDB.getIoV())
128 <<
LogVar(
"Checksum", m_RefCrystalsCalibDB.getChecksum()));
130 string objectName =
"tree_perCrystal";
131 auto tree_perCrystal = getObjectPtr<TTree>(objectName);
135 for (
int crysID = 1; crysID <= NUM_CRYSTALS; crysID++) {
136 m_crystalTimeConst = m_CrystalTime[crysID - 1];
137 m_crystalTimeConstUnc = m_CrystalTimeUnc[crysID - 1];
138 m_crateTimeConst = m_CrateTime[crysID - 1];
139 m_crateTimeConstUnc = m_CrateTimeUnc[crysID - 1];
140 m_crystalID = crysID;
141 int crateID_temp = crystalMapper->getCrateID(crysID);
142 m_crateID = crateID_temp;
143 m_refCrystalID = m_RefCrystalsCalib[crateID_temp - 1];
144 tree_perCrystal->Fill();
147 m_previousExp = m_exp ;
148 m_previousRun = m_run ;
Calibration collector module base class.
General DB object to store one reference crystal per per ECL crate for calibration purposes.
This class provides access to ECL channel map that is either a) Loaded from the database (see ecl/dbo...
This modules looks up crystal and crate time offset constants from the database and saves them to a t...
void collect() override
Select events and crystals and accumulate histograms.
void prepare() override
Define histograms and read payloads from DB.
void inDefineHisto() override
Replacement for defineHisto() in CalibrationCollector modules.
virtual ~eclTimeShiftsPlottingCollectorModule()
Module destructor.
Class to store variables with their name which were sent to the logging service.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.