Skip to content

Commit 716a32b

Browse files
authored
ctpdev: ctp scalers error cleaning (#12497)
* dev: scalers error cleaning * clang
1 parent d97dac7 commit 716a32b

File tree

3 files changed

+55
-27
lines changed

3 files changed

+55
-27
lines changed

DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ struct errorCounters {
3333
void printStream(std::ostream& stream) const;
3434
uint32_t lmB = 0, l0B = 0, l1B = 0, lmA = 0, l0A = 0, l1A = 0; // decreasing counters
3535
uint32_t lmBlmA = 0, lmAl0B = 0, l0Bl0A = 0, l0Al1B = 0, l1Bl1A = 0; // between levels countres
36+
uint32_t lmBlmAd1 = 0, lmAl0Bd1 = 0, l0Bl0Ad1 = 0, l0Al1Bd1 = 0, l1Bl1Ad1 = 0; // between levels countres - diff =1 - just warning
3637
uint32_t MAXPRINT = 3;
3738
};
3839
struct CTPScalerRaw {

DataFormats/Detectors/CTP/src/Scalers.cxx

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
using namespace o2::ctp;
2222
void errorCounters::printStream(std::ostream& stream) const
2323
{
24+
stream << "Counter warnings diff 1 lmBlmA:" << lmBlmAd1 << " lmAl0B:" << lmAl0Bd1 << " l0Bl0A:" << l0Bl0Ad1 << " l0Al1B: " << l0Al1Bd1 << " l1Bl1A:" << l1Bl1Ad1;
25+
stream << std::endl;
2426
stream << "Counter errorrs: lmB:" << lmB << " l0B:" << l0B << " l1B:" << l1B << " lmA:" << lmA << " l0A:" << l0A << " l1A:" << l1A;
2527
stream << " lmBlmA:" << lmBlmA << " lmAl0B:" << lmAl0B << " l0Bl0A:" << l0Bl0A << " l0Al1B: " << l0Al1B << " l1Bl1A:" << l1Bl1A;
2628
stream << std::endl;
@@ -392,35 +394,48 @@ int CTPRunScalers::checkConsistency(const CTPScalerO2& scal0, const CTPScalerO2&
392394
// LMB >= LMA >= L0B >= L0A >= L1B >= L1A: 5 relations
393395
// broken for classes started at L0
394396
//
395-
if ((scal1.lmAfter - scal0.lmAfter) > (scal1.lmBefore - scal0.lmBefore)) {
397+
int64_t difThres = 2;
398+
int64_t dif = (scal1.lmAfter - scal0.lmAfter) - (scal1.lmBefore - scal0.lmBefore);
399+
if (dif <= difThres) {
400+
eCnts.lmBlmAd1++;
401+
} else if (dif > difThres) {
396402
eCnts.lmBlmA++;
397403
if (eCnts.lmBlmA < eCnts.MAXPRINT) {
398-
LOG(error) << "LMA > LMB error:" << ((scal1.lmAfter - scal0.lmAfter) - (scal1.lmBefore - scal0.lmBefore));
404+
LOG(error) << "LMA > LMB error:" << dif;
399405
}
400406
ret++;
401407
}
402-
if ((scal1.l0After - scal0.l0After) > (scal1.l0Before - scal0.l0Before)) {
408+
dif = (scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before);
409+
if (dif <= difThres) {
410+
eCnts.l0Bl0Ad1++;
411+
} else if (dif > difThres) {
403412
eCnts.l0Bl0A++;
404413
if (eCnts.l0Bl0A < eCnts.MAXPRINT) {
405-
LOG(error) << "L0A > L0B error:" << ((scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before));
414+
LOG(error) << "L0A > L0B error:" << dif;
406415
}
407416
ret++;
408417
}
409-
if ((scal1.l1After - scal0.l1After) > (scal1.l1Before - scal0.l1Before)) {
418+
dif = (scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before);
419+
if (dif <= difThres) {
420+
eCnts.l1Bl1Ad1++;
421+
} else if (dif > difThres) {
410422
eCnts.l1Bl1A++;
411423
if (eCnts.l1Bl1A < eCnts.MAXPRINT) {
412-
LOG(error) << "L1A > L1B error:" << ((scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before));
424+
LOG(error) << "L1A > L1B error:" << dif;
413425
}
414426
ret++;
415427
}
416428
if ((scal1.l0Before - scal0.l0Before) > (scal1.lmAfter - scal0.lmAfter)) {
417429
// LOG(warning) << "L0B > LMA ok if L0 class.";
418430
// ret++;
419431
}
420-
if ((scal1.l1Before - scal0.l1Before) > (scal1.l0After - scal0.l0After)) {
432+
dif = (scal1.l1Before - scal0.l1Before) - (scal1.l0After - scal0.l0After);
433+
if (dif <= difThres) {
434+
eCnts.l0Al1Bd1++;
435+
} else if (dif > difThres) {
421436
eCnts.l0Al1B++;
422437
if (eCnts.l0Al1B < eCnts.MAXPRINT) {
423-
LOG(error) << "L1B > L0A Before error:" << ((scal1.l1Before - scal0.l1Before) - (scal1.l0After - scal0.l0After));
438+
LOG(error) << "L1B > L0A Before error:" << dif;
424439
}
425440
ret++;
426441
}
@@ -482,6 +497,14 @@ int CTPRunScalers::updateOverflows(const CTPScalerRaw& scal0, const CTPScalerRaw
482497
//
483498
int CTPRunScalers::updateOverflowsInps(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, std::array<uint32_t, 48>& overflow) const
484499
{
500+
static int iPrint = 0;
501+
if (mRunNumber < 545367) {
502+
if (iPrint < 1) {
503+
LOG(info) << "CTP Input scalers not available for run:" << mRunNumber;
504+
iPrint++;
505+
}
506+
return 0;
507+
}
485508
uint32_t NINPS = 48;
486509
if (rec0.scalersInps.size() < NINPS) {
487510
LOG(error) << "updateOverflowsInps.size < 48:" << rec0.scalersInps.size();

Detectors/CTP/macro/GetScalersForRun.C

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -87,25 +87,29 @@ void GetScalersForRun(int runNumber = 0, int fillN = 0, bool test = 1)
8787
std::cout << cls.name << ":" << iznc << std::endl;
8888
}
8989
}
90-
std::cout << "ZNC:";
91-
int inp = 26;
92-
double_t nbc = bcs.size();
93-
double_t frev = 11245;
94-
double_t sigmaratio = 28.;
9590
std::vector<CTPScalerRecordO2> recs = ctpscalers->getScalerRecordO2();
96-
double_t time0 = recs[0].epochTime;
97-
double_t timeL = recs[recs.size() - 1].epochTime;
98-
double_t Trun = timeL - time0;
99-
double_t integral = recs[recs.size() - 1].scalersInps[inp - 1] - recs[0].scalersInps[inp - 1];
100-
double_t rate = integral / Trun;
101-
double_t rat = integral / Trun / nbc / frev;
102-
double_t mu = -TMath::Log(1 - rat);
103-
double_t pp = 1 - mu / (TMath::Exp(mu) - 1);
104-
double_t ratepp = mu * nbc * frev;
105-
double_t integralpp = ratepp * Trun;
106-
std::cout << "Rate:" << rate / sigmaratio << " Integral:" << integral << " mu:" << mu << " Pileup prob:" << pp;
107-
std::cout << " Integralpp:" << integralpp << " Ratepp:" << ratepp / sigmaratio << std::endl;
108-
// ctpscalers->printInputRateAndIntegral(26);
91+
if (recs[0].scalersInps.size() == 48) {
92+
std::cout << "ZNC:";
93+
int inp = 26;
94+
double_t nbc = bcs.size();
95+
double_t frev = 11245;
96+
double_t sigmaratio = 28.;
97+
double_t time0 = recs[0].epochTime;
98+
double_t timeL = recs[recs.size() - 1].epochTime;
99+
double_t Trun = timeL - time0;
100+
double_t integral = recs[recs.size() - 1].scalersInps[inp - 1] - recs[0].scalersInps[inp - 1];
101+
double_t rate = integral / Trun;
102+
double_t rat = integral / Trun / nbc / frev;
103+
double_t mu = -TMath::Log(1 - rat);
104+
double_t pp = 1 - mu / (TMath::Exp(mu) - 1);
105+
double_t ratepp = mu * nbc * frev;
106+
double_t integralpp = ratepp * Trun;
107+
std::cout << "Rate:" << rate / sigmaratio << " Integral:" << integral << " mu:" << mu << " Pileup prob:" << pp;
108+
std::cout << " Integralpp:" << integralpp << " Ratepp:" << ratepp / sigmaratio << std::endl;
109+
// ctpscalers->printInputRateAndIntegral(26);
110+
} else {
111+
std::cout << "Inputs not available" << std::endl;
112+
}
109113
//
110114
if (tsc != 255) {
111115
std::cout << "TSC:";
@@ -122,7 +126,7 @@ void GetScalersForRun(int runNumber = 0, int fillN = 0, bool test = 1)
122126
}
123127
if (iznc != 255) {
124128
std::cout << "ZNC class:";
125-
int integral = recs[recs.size() - 1].scalers[iznc].l1After - recs[0].scalers[iznc].l1After;
129+
int64_t integral = recs[recs.size() - 1].scalers[iznc].l1After - recs[0].scalers[iznc].l1After;
126130
std::cout << integral << std::endl;
127131
}
128132
}

0 commit comments

Comments
 (0)