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) {
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 ;