Skip to content

Commit 71abbec

Browse files
chiarazampollishahor02
authored andcommitted
Improve the object stored in CCDB
1 parent 58b0896 commit 71abbec

2 files changed

Lines changed: 40 additions & 13 deletions

File tree

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,30 @@ struct TOFDCSinfo {
4343
std::pair<uint64_t, double> firstValue; // first value seen by the TOF DCS processor
4444
std::pair<uint64_t, double> lastValue; // last value seen by the TOF DCS processor
4545
std::pair<uint64_t, double> midValue; // mid value seen by the TOF DCS processor
46-
std::pair<uint64_t, double> maxChange; // maximum variation seen by the TOF DCS processor
46+
std::pair<std::array<uint64_t, 2>, double> maxChange; // maximum variation seen by the TOF DCS processor (previous - subsequent value)
47+
std::pair<uint64_t, double> minValue; // smallest measurement seen by the TOF DCS processor
48+
std::pair<uint64_t, double> maxValue; // largest measurement seen by the TOF DCS processor
4749
bool updated = false;
4850
TOFDCSinfo()
4951
{
5052
firstValue = std::make_pair(0, -999999999);
5153
lastValue = std::make_pair(0, -999999999);
5254
midValue = std::make_pair(0, -999999999);
53-
maxChange = std::make_pair(0, -999999999);
55+
std::array<uint64_t, 2> atmp = {0, 0};
56+
maxChange = std::make_pair(atmp, 0);
57+
minValue = std::make_pair(0, 99999999999);
58+
maxValue = std::make_pair(0, -99999999999);
5459
}
5560
void makeEmpty()
5661
{
57-
firstValue.first = lastValue.first = midValue.first = maxChange.first = 0;
58-
firstValue.second = lastValue.second = midValue.second = maxChange.second = -999999999;
62+
firstValue.first = lastValue.first = midValue.first = maxChange.first[0] = maxChange.first[1] = minValue.first = maxValue.first = maxChange.second = 0;
63+
firstValue.second = lastValue.second = midValue.second = -999999999;
64+
minValue.second = 99999999999;
65+
maxValue.second = -99999999999;
5966
}
6067
void print() const;
6168

62-
ClassDefNV(TOFDCSinfo, 1);
69+
ClassDefNV(TOFDCSinfo, 2);
6370
};
6471

6572
struct TOFFEACinfo {

Detectors/TOF/calibration/src/TOFDCSProcessor.cxx

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ void TOFDCSinfo::print() const
3333
LOG(info) << "First Value: timestamp = " << firstValue.first << ", value = " << firstValue.second;
3434
LOG(info) << "Last Value: timestamp = " << lastValue.first << ", value = " << lastValue.second;
3535
LOG(info) << "Mid Value: timestamp = " << midValue.first << ", value = " << midValue.second;
36-
LOG(info) << "Max Change: timestamp = " << maxChange.first << ", value = " << maxChange.second;
36+
LOG(info) << "Min Value: timestamp = " << minValue.first << ", value = " << minValue.second;
37+
LOG(info) << "Max Value: timestamp = " << maxValue.first << ", value = " << maxValue.second;
38+
LOG(info) << "Max Change: timestamp[0] = " << maxChange.first[0] << ", timestamp[1] = " << maxChange.first[1] << ", value = " << maxChange.second;
3739
std::string updatedStr = updated ? "UPDATED" : "NOT UPDATED";
3840
LOG(info) << "Status = " << updatedStr;
3941
}
@@ -341,6 +343,9 @@ void TOFDCSProcessor::updateDPsCCDB()
341343
if (type == o2::dcs::DPVAL_DOUBLE) {
342344
auto& tofdcs = mTOFDCS[it.first];
343345
if (it.second) { // we processed the DP at least 1x
346+
if (mVerboseDP) {
347+
LOG(info) << "Processing DP " << it.first.get_alias();
348+
}
344349
it.second = false; // reset for the next period
345350
tofdcs.updated = true;
346351
auto& dpvect = mDpsdoublesmap[it.first];
@@ -350,6 +355,17 @@ void TOFDCSProcessor::updateDPsCCDB()
350355
tofdcs.lastValue.first = dpvect.back().get_epoch_time();
351356
converter0.raw_data = dpvect.back().payload_pt1;
352357
tofdcs.lastValue.second = converter0.double_value;
358+
for (const auto& el : dpvect) {
359+
converter0.raw_data = el.payload_pt1;
360+
if (converter0.double_value < tofdcs.minValue.second) {
361+
tofdcs.minValue.first = el.get_epoch_time();
362+
tofdcs.minValue.second = converter0.double_value;
363+
}
364+
if (converter0.double_value > tofdcs.maxValue.second) {
365+
tofdcs.maxValue.first = el.get_epoch_time();
366+
tofdcs.maxValue.second = converter0.double_value;
367+
}
368+
}
353369
// now I will look for the max change
354370
if (dpvect.size() > 1) {
355371
auto deltatime = dpvect.back().get_epoch_time() - dpvect[0].get_epoch_time();
@@ -358,19 +374,22 @@ void TOFDCSProcessor::updateDPsCCDB()
358374
// max variation is defined as the difference between first and last value
359375
converter0.raw_data = dpvect[0].payload_pt1;
360376
converter1.raw_data = dpvect.back().payload_pt1;
361-
double delta = std::abs(converter0.double_value - converter1.double_value);
362-
tofdcs.maxChange.first = deltatime; // is it ok to do like this, as in Run 2?
377+
double delta = converter0.double_value - converter1.double_value;
378+
tofdcs.maxChange.first[0] = dpvect[0].get_epoch_time();
379+
tofdcs.maxChange.first[1] = dpvect.back().get_epoch_time();
363380
tofdcs.maxChange.second = delta;
364381
} else {
365382
for (auto i = 0; i < dpvect.size() - 1; ++i) {
366383
for (auto j = i + 1; j < dpvect.size(); ++j) {
367384
auto deltatime = dpvect[j].get_epoch_time() - dpvect[i].get_epoch_time();
368-
if (deltatime >= 60000) { // we check every min; epoch_time in ms
385+
if (deltatime >= 60000) { // we compare to values coming from at least 1 minute later; epoch_time in ms
369386
converter0.raw_data = dpvect[i].payload_pt1;
370387
converter1.raw_data = dpvect[j].payload_pt1;
371-
double delta = std::abs(converter0.double_value - converter1.double_value);
372-
if (delta > tofdcs.maxChange.second) {
373-
tofdcs.maxChange.first = deltatime; // is it ok to do like this, as in Run 2?
388+
double delta = converter0.double_value - converter1.double_value;
389+
LOG(info) << "converter0.double_value = " << converter0.double_value << ", converter1.double_value = " << converter1.double_value << ", delta = " << delta << " tofdcs.maxChange.second = " << tofdcs.maxChange.second;
390+
if (std::abs(delta) > std::abs(tofdcs.maxChange.second)) {
391+
tofdcs.maxChange.first[0] = dpvect[i].get_epoch_time();
392+
tofdcs.maxChange.first[1] = dpvect[j].get_epoch_time();
374393
tofdcs.maxChange.second = delta;
375394
}
376395
}
@@ -383,7 +402,8 @@ void TOFDCSProcessor::updateDPsCCDB()
383402
converter0.raw_data = dpvect[midIdx].payload_pt1;
384403
tofdcs.midValue.second = converter0.double_value;
385404
} else {
386-
tofdcs.maxChange.first = dpvect[0].get_epoch_time();
405+
tofdcs.maxChange.first[0] = dpvect[0].get_epoch_time();
406+
tofdcs.maxChange.first[1] = dpvect[0].get_epoch_time();
387407
converter0.raw_data = dpvect[0].payload_pt1;
388408
tofdcs.maxChange.second = converter0.double_value;
389409
tofdcs.midValue.first = dpvect[0].get_epoch_time();

0 commit comments

Comments
 (0)