Skip to content

Commit 2db02c2

Browse files
Fix startTime and endTime
1 parent 382b837 commit 2db02c2

8 files changed

Lines changed: 47 additions & 69 deletions

File tree

Detectors/Calibration/include/DetectorsCalibration/Utils.h

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,18 @@ namespace o2
3131
namespace calibration
3232
{
3333

34-
using TFType = uint64_t;
35-
3634
struct Utils {
3735
static constexpr o2::header::DataOrigin gDataOriginCDBPayload{"CLP"}; // generic DataOrigin for calibrations payload
3836
static constexpr o2::header::DataOrigin gDataOriginCDBWrapper{"CLW"}; // generic DataOrigin for calibrations wrapper
37+
static constexpr long INFINITE_TIME = 99999999999999;
3938
template <typename T>
40-
static void prepareCCDBobjectInfo(T& obj, o2::ccdb::CcdbObjectInfo& info, const std::string& path, TFType tf,
41-
const std::map<std::string, std::string>& md);
39+
static void prepareCCDBobjectInfo(T& obj, o2::ccdb::CcdbObjectInfo& info, const std::string& path,
40+
const std::map<std::string, std::string>& md, long start, long end = -1);
4241
};
4342

4443
template <typename T>
45-
void Utils::prepareCCDBobjectInfo(T& obj, o2::ccdb::CcdbObjectInfo& info, const std::string& path, TFType tf,
46-
const std::map<std::string, std::string>& md)
44+
void Utils::prepareCCDBobjectInfo(T& obj, o2::ccdb::CcdbObjectInfo& info, const std::string& path,
45+
const std::map<std::string, std::string>& md, long start, long end)
4746
{
4847

4948
// prepare all info to be sent to CCDB for object obj
@@ -52,8 +51,8 @@ void Utils::prepareCCDBobjectInfo(T& obj, o2::ccdb::CcdbObjectInfo& info, const
5251
info.setPath(path);
5352
info.setObjectType(clName);
5453
info.setFileName(flName);
55-
info.setStartValidityTimestamp(tf);
56-
info.setEndValidityTimestamp(99999999999999);
54+
info.setStartValidityTimestamp(start);
55+
info.setEndValidityTimestamp(end);
5756
info.setMetaData(md);
5857
}
5958

Detectors/GRP/calibration/include/GRPCalibration/GRPDCSDPsProcessor.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,6 @@ struct GRPLHCInfo {
189189
class GRPDCSDPsProcessor
190190
{
191191
public:
192-
using TFType = uint64_t;
193-
// using CcdbObjectInfo = o2::ccdb::CcdbObjectInfo;
194-
195192
GRPDCSDPsProcessor() = default;
196193
~GRPDCSDPsProcessor() = default;
197194

@@ -231,16 +228,16 @@ class GRPDCSDPsProcessor
231228
void updateCollimatorsCCDB();
232229
bool isCollimatorsUpdated() const { return mUpdateCollimators; }
233230

234-
void setTF(TFType tf) { mTF = tf; }
231+
void setStartValidity(long t) { mStartValidity = t; }
235232
void useVerboseMode() { mVerbose = true; }
236233

237234
private:
238235
std::unordered_map<DPID, bool> mPids; // contains all PIDs for the processor, the bool
239236
// will be true if the DP was processed at least once
240237

241-
TFType mStartTF; // TF index for processing of first processed TF, used to store CCDB object
242-
TFType mTF = 0; // TF index for processing, used to store CCDB object
243-
bool mStartTFset = false;
238+
long mFirstTime; // time when a CCDB object was stored first
239+
long mStartValidity = 0; // TF index for processing, used to store CCDB object
240+
bool mFirstTimeSet = false;
244241

245242
bool mVerbose = false;
246243

Detectors/GRP/calibration/src/GRPDCSDPsProcessor.cxx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ int GRPDCSDPsProcessor::process(const gsl::span<const DPCOM> dps)
4242
if (mVerbose) {
4343
LOG(info) << "\n\n\nProcessing new TF\n-----------------";
4444
}
45-
if (!mStartTFset) {
46-
mStartTF = mTF;
47-
mStartTFset = true;
45+
if (!mFirstTimeSet) {
46+
mFirstTime = mStartValidity;
47+
mFirstTimeSet = true;
4848
}
4949
std::unordered_map<DPID, DPVAL> mapin;
5050
for (auto& it : dps) {
@@ -394,11 +394,11 @@ void GRPDCSDPsProcessor::updateMagFieldCCDB()
394394
// we need to update a CCDB for the B field --> let's prepare the CCDBInfo
395395

396396
if (mVerbose) {
397-
LOG(info) << "At least one DP related to B field changed --> we will update CCDB with startTime " << mTF;
397+
LOG(info) << "At least one DP related to B field changed --> we will update CCDB with startTime " << mStartValidity;
398398
}
399399
std::map<std::string, std::string> md;
400400
md["responsible"] = "Chiara Zampolli";
401-
o2::calibration::Utils::prepareCCDBobjectInfo(mMagField, mccdbMagFieldInfo, "GLO/Config/GRPMagField", mTF, md);
401+
o2::calibration::Utils::prepareCCDBobjectInfo(mMagField, mccdbMagFieldInfo, "GLO/Config/GRPMagField", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
402402
return;
403403
}
404404

@@ -410,11 +410,11 @@ void GRPDCSDPsProcessor::updateLHCIFInfoCCDB()
410410
// we need to update a CCDB for the LHCIF DPs --> let's prepare the CCDBInfo
411411

412412
if (mVerbose) {
413-
LOG(info) << "Entry related to LHCIF needs to be updated with startTime " << mTF;
413+
LOG(info) << "Entry related to LHCIF needs to be updated with startTime " << mStartValidity;
414414
}
415415
std::map<std::string, std::string> md;
416416
md["responsible"] = "Chiara Zampolli";
417-
o2::calibration::Utils::prepareCCDBobjectInfo(mLHCInfo, mccdbLHCIFInfo, "GLO/Config/LHCIF", mTF, md);
417+
o2::calibration::Utils::prepareCCDBobjectInfo(mLHCInfo, mccdbLHCIFInfo, "GLO/Config/LHCIF", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
418418
return;
419419
}
420420

@@ -426,11 +426,11 @@ void GRPDCSDPsProcessor::updateEnvVarsCCDB()
426426
// we need to update a CCDB for the Env Variables DPs --> let's prepare the CCDBInfo
427427

428428
if (mVerbose) {
429-
LOG(info) << "Entry related to Env Vars needs to be updated with startTime " << mTF;
429+
LOG(info) << "Entry related to Env Vars needs to be updated with startTime " << mStartValidity;
430430
}
431431
std::map<std::string, std::string> md;
432432
md["responsible"] = "Chiara Zampolli";
433-
o2::calibration::Utils::prepareCCDBobjectInfo(mEnvVars, mccdbEnvVarsInfo, "GLO/Config/EnvVars", mTF, md);
433+
o2::calibration::Utils::prepareCCDBobjectInfo(mEnvVars, mccdbEnvVarsInfo, "GLO/Config/EnvVars", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
434434
return;
435435
}
436436

@@ -442,10 +442,10 @@ void GRPDCSDPsProcessor::updateCollimatorsCCDB()
442442
// we need to update a CCDB for the Env Variables DPs --> let's prepare the CCDBInfo
443443

444444
if (mVerbose) {
445-
LOG(info) << "Entry related to Env Vars needs to be updated with startTime " << mTF;
445+
LOG(info) << "Entry related to Env Vars needs to be updated with startTime " << mStartValidity;
446446
}
447447
std::map<std::string, std::string> md;
448448
md["responsible"] = "Chiara Zampolli";
449-
o2::calibration::Utils::prepareCCDBobjectInfo(mEnvVars, mccdbCollimatorsInfo, "GLO/Config/Collimators", mTF, md);
449+
o2::calibration::Utils::prepareCCDBobjectInfo(mEnvVars, mccdbCollimatorsInfo, "GLO/Config/Collimators", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
450450
return;
451451
}

Detectors/GRP/workflows/src/GRPDCSDPsSpec.cxx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,14 @@ void GRPDCSDPsDataProcessor::init(o2::framework::InitContext& ic)
115115

116116
void GRPDCSDPsDataProcessor::run(o2::framework::ProcessingContext& pc)
117117
{
118-
auto tfid = o2::header::get<o2::framework::DataProcessingHeader*>(pc.inputs().get("input").header)->startTime;
118+
auto startValidity = DataRefUtils::getHeader<DataProcessingHeader*>(pc.inputs().getFirstValid(true))->creation;
119119
auto dps = pc.inputs().get<gsl::span<DPCOM>>("input");
120-
mProcessor->setTF(tfid);
121-
mProcessor->process(dps);
122120
auto timeNow = HighResClock::now();
121+
if (startValidity == 0xffffffffffffffff) { // it means it is not set
122+
startValidity = std::chrono::duration_cast<std::chrono::milliseconds>(timeNow.time_since_epoch()).count(); // in ms
123+
}
124+
mProcessor->setStartValidity(startValidity);
125+
mProcessor->process(dps);
123126
Duration elapsedTime = timeNow - mTimer; // in seconds
124127
if (elapsedTime.count() >= mDPsUpdateInterval || mProcessor->isLHCIFInfoUpdated()) {
125128
sendLHCIFDPsoutput(pc.outputs());

Detectors/GRP/workflows/src/GRPLHCIFfileSpec.cxx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,18 +216,16 @@ void GRPLHCIFfileProcessor::endOfStream(o2::framework::EndOfStreamContext& ec)
216216

217217
//__________________________________________________________________
218218

219-
void GRPLHCIFfileProcessor::sendOutput(DataAllocator& output, long tf, const GRPLHCIFData& lhcifdata)
219+
void GRPLHCIFfileProcessor::sendOutput(DataAllocator& output, long start, const GRPLHCIFData& lhcifdata)
220220
{
221221
// sending output to CCDB
222222

223-
constexpr uint64_t INFINITE_TF = 0xffffffffffffffff;
224-
225223
using clbUtils = o2::calibration::Utils;
226224
auto clName = o2::utils::MemFileHelper::getClassName(lhcifdata);
227225
auto flName = o2::ccdb::CcdbApi::generateFileName(clName);
228226
std::map<std::string, std::string> md;
229227
md.emplace("created by", "dpl");
230-
o2::ccdb::CcdbObjectInfo info("GLO/Config/GRPLHCIFData", clName, flName, md, tf, INFINITE_TF);
228+
o2::ccdb::CcdbObjectInfo info("GLO/Config/GRPLHCIFData", clName, flName, md, start, o2::calibration::Utils::INFINITE_TIME);
231229
auto image = o2::ccdb::CcdbApi::createObjectImage(&lhcifdata, &info);
232230
LOG(info) << "Sending object " << info.getPath() << "/" << info.getFileName() << " of size " << image->size()
233231
<< " bytes, valid for " << info.getStartValidityTimestamp() << " : " << info.getEndValidityTimestamp();

Detectors/TOF/calibration/include/TOFCalibration/TOFDCSProcessor.h

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ class TOFDCSProcessor
7171
{
7272

7373
public:
74-
using TFType = uint64_t;
7574
using CcdbObjectInfo = o2::ccdb::CcdbObjectInfo;
7675
using DQDoubles = std::deque<double>;
7776

@@ -107,11 +106,7 @@ class TOFDCSProcessor
107106
const std::bitset<Geo::NCHANNELS>& getHVStatus() const { return mHV; }
108107
bool isHVUpdated() const { return mUpdateHVStatus; }
109108

110-
/*template <typename T>
111-
void prepareCCDBobjectInfo(T& obj, CcdbObjectInfo& info, const std::string& path, TFType tf,
112-
const std::map<std::string, std::string>& md);
113-
*/
114-
void setTF(TFType tf) { mTF = tf; }
109+
void setStartValidity(long t) { mStartValidity = t; }
115110
void useVerboseMode() { mVerbose = true; }
116111

117112
void clearDPsinfo()
@@ -137,31 +132,14 @@ class TOFDCSProcessor
137132
CcdbObjectInfo mccdbDPsInfo;
138133
CcdbObjectInfo mccdbLVInfo;
139134
CcdbObjectInfo mccdbHVInfo;
140-
TFType mStartTF; // TF index for processing of first processed TF, used to store CCDB object
141-
TFType mTF = 0; // TF index for processing, used to store CCDB object
142-
bool mStartTFset = false;
135+
long mFirstTime; // time when a CCDB object was stored first
136+
long mStartValidity = 0; // TF index for processing, used to store CCDB object
137+
bool mFirstTimeSet = false;
143138

144139
bool mVerbose = false;
145140

146141
ClassDefNV(TOFDCSProcessor, 0);
147142
};
148-
/*
149-
template <typename T>
150-
void TOFDCSProcessor::prepareCCDBobjectInfo(T& obj, CcdbObjectInfo& info, const std::string& path, TFType tf,
151-
const std::map<std::string, std::string>& md)
152-
{
153-
154-
// prepare all info to be sent to CCDB for object obj
155-
auto clName = o2::utils::MemFileHelper::getClassName(obj);
156-
auto flName = o2::ccdb::CcdbApi::generateFileName(clName);
157-
info.setPath(path);
158-
info.setObjectType(clName);
159-
info.setFileName(flName);
160-
info.setStartValidityTimestamp(tf);
161-
info.setEndValidityTimestamp(99999999999999);
162-
info.setMetaData(md);
163-
}
164-
*/
165143
} // namespace tof
166144
} // namespace o2
167145

Detectors/TOF/calibration/src/TOFDCSProcessor.cxx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ int TOFDCSProcessor::process(const gsl::span<const DPCOM> dps)
6363
// first we check which DPs are missing - if some are, it means that
6464
// the delta map was sent
6565
if (mVerbose) {
66-
LOG(info) << "\n\n\nProcessing new TF\n-----------------";
66+
LOG(info) << "\n\n\nProcessing new DCS DP map\n-----------------";
6767
}
68-
if (!mStartTFset) {
69-
mStartTF = mTF;
70-
mStartTFset = true;
68+
if (!mFirstTimeSet) {
69+
mFirstTime = mStartValidity;
70+
mFirstTimeSet = true;
7171
}
7272

7373
std::unordered_map<DPID, DPVAL> mapin;
@@ -393,7 +393,7 @@ void TOFDCSProcessor::updateDPsCCDB()
393393
}
394394
std::map<std::string, std::string> md;
395395
md["responsible"] = "Chiara Zampolli";
396-
o2::calibration::Utils::prepareCCDBobjectInfo(mTOFDCS, mccdbDPsInfo, "TOF/Calib/DCSDPs", mTF, md);
396+
o2::calibration::Utils::prepareCCDBobjectInfo(mTOFDCS, mccdbDPsInfo, "TOF/Calib/DCSDPs", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
397397

398398
return;
399399
}
@@ -410,7 +410,7 @@ void TOFDCSProcessor::updateFEACCCDB()
410410
}
411411
std::map<std::string, std::string> md;
412412
md["responsible"] = "Chiara Zampolli";
413-
o2::calibration::Utils::prepareCCDBobjectInfo(mFeac, mccdbLVInfo, "TOF/Calib/LVStatus", mTF, md);
413+
o2::calibration::Utils::prepareCCDBobjectInfo(mFeac, mccdbLVInfo, "TOF/Calib/LVStatus", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
414414
return;
415415
}
416416

@@ -426,7 +426,7 @@ void TOFDCSProcessor::updateHVCCDB()
426426
}
427427
std::map<std::string, std::string> md;
428428
md["responsible"] = "Chiara Zampolli";
429-
o2::calibration::Utils::prepareCCDBobjectInfo(mHV, mccdbHVInfo, "TOF/Calib/HVStatus", mTF, md);
429+
o2::calibration::Utils::prepareCCDBobjectInfo(mHV, mccdbHVInfo, "TOF/Calib/HVStatus", md, mStartValidity, o2::calibration::Utils::INFINITE_TIME);
430430
return;
431431
}
432432

Detectors/TOF/calibration/testWorkflow/TOFDCSDataProcessorSpec.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,14 @@ class TOFDCSDataProcessor : public o2::framework::Task
106106

107107
void run(o2::framework::ProcessingContext& pc) final
108108
{
109-
auto tfid = o2::header::get<o2::framework::DataProcessingHeader*>(pc.inputs().get("input").header)->startTime;
109+
auto startValidity = DataRefUtils::getHeader<DataProcessingHeader*>(pc.inputs().getFirstValid(true))->creation;
110110
auto dps = pc.inputs().get<gsl::span<DPCOM>>("input");
111-
mProcessor->setTF(tfid);
112-
mProcessor->process(dps);
113111
auto timeNow = HighResClock::now();
112+
if (startValidity == 0xffffffffffffffff) { // it means it is not set
113+
startValidity = std::chrono::duration_cast<std::chrono::milliseconds>(timeNow.time_since_epoch()).count(); // in ms
114+
}
115+
mProcessor->setStartValidity(startValidity);
116+
mProcessor->process(dps);
114117
Duration elapsedTime = timeNow - mTimer; // in seconds
115118
if (elapsedTime.count() >= mDPsUpdateInterval) {
116119
sendDPsoutput(pc.outputs());

0 commit comments

Comments
 (0)