Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ struct errorCounters {
void printStream(std::ostream& stream) const;
uint32_t lmB = 0, l0B = 0, l1B = 0, lmA = 0, l0A = 0, l1A = 0; // decreasing counters
uint32_t lmBlmA = 0, lmAl0B = 0, l0Bl0A = 0, l0Al1B = 0, l1Bl1A = 0; // between levels countres
uint32_t lmBlmAd1 = 0, lmAl0Bd1 = 0, l0Bl0Ad1 = 0, l0Al1Bd1 = 0, l1Bl1Ad1 = 0; // between levels countres - diff =1 - just warning
uint32_t MAXPRINT = 3;
};
struct CTPScalerRaw {
Expand Down
39 changes: 31 additions & 8 deletions DataFormats/Detectors/CTP/src/Scalers.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
using namespace o2::ctp;
void errorCounters::printStream(std::ostream& stream) const
{
stream << "Counter warnings diff 1 lmBlmA:" << lmBlmAd1 << " lmAl0B:" << lmAl0Bd1 << " l0Bl0A:" << l0Bl0Ad1 << " l0Al1B: " << l0Al1Bd1 << " l1Bl1A:" << l1Bl1Ad1;
stream << std::endl;
stream << "Counter errorrs: lmB:" << lmB << " l0B:" << l0B << " l1B:" << l1B << " lmA:" << lmA << " l0A:" << l0A << " l1A:" << l1A;
stream << " lmBlmA:" << lmBlmA << " lmAl0B:" << lmAl0B << " l0Bl0A:" << l0Bl0A << " l0Al1B: " << l0Al1B << " l1Bl1A:" << l1Bl1A;
stream << std::endl;
Expand Down Expand Up @@ -392,35 +394,48 @@ int CTPRunScalers::checkConsistency(const CTPScalerO2& scal0, const CTPScalerO2&
// LMB >= LMA >= L0B >= L0A >= L1B >= L1A: 5 relations
// broken for classes started at L0
//
if ((scal1.lmAfter - scal0.lmAfter) > (scal1.lmBefore - scal0.lmBefore)) {
int64_t difThres = 2;
int64_t dif = (scal1.lmAfter - scal0.lmAfter) - (scal1.lmBefore - scal0.lmBefore);
if (dif <= difThres) {
eCnts.lmBlmAd1++;
} else if (dif > difThres) {
eCnts.lmBlmA++;
if (eCnts.lmBlmA < eCnts.MAXPRINT) {
LOG(error) << "LMA > LMB error:" << ((scal1.lmAfter - scal0.lmAfter) - (scal1.lmBefore - scal0.lmBefore));
LOG(error) << "LMA > LMB error:" << dif;
}
ret++;
}
if ((scal1.l0After - scal0.l0After) > (scal1.l0Before - scal0.l0Before)) {
dif = (scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before);
if (dif <= difThres) {
eCnts.l0Bl0Ad1++;
} else if (dif > difThres) {
eCnts.l0Bl0A++;
if (eCnts.l0Bl0A < eCnts.MAXPRINT) {
LOG(error) << "L0A > L0B error:" << ((scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before));
LOG(error) << "L0A > L0B error:" << dif;
}
ret++;
}
if ((scal1.l1After - scal0.l1After) > (scal1.l1Before - scal0.l1Before)) {
dif = (scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before);
if (dif <= difThres) {
eCnts.l1Bl1Ad1++;
} else if (dif > difThres) {
eCnts.l1Bl1A++;
if (eCnts.l1Bl1A < eCnts.MAXPRINT) {
LOG(error) << "L1A > L1B error:" << ((scal1.l0After - scal0.l0After) - (scal1.l0Before - scal0.l0Before));
LOG(error) << "L1A > L1B error:" << dif;
}
ret++;
}
if ((scal1.l0Before - scal0.l0Before) > (scal1.lmAfter - scal0.lmAfter)) {
// LOG(warning) << "L0B > LMA ok if L0 class.";
// ret++;
}
if ((scal1.l1Before - scal0.l1Before) > (scal1.l0After - scal0.l0After)) {
dif = (scal1.l1Before - scal0.l1Before) - (scal1.l0After - scal0.l0After);
if (dif <= difThres) {
eCnts.l0Al1Bd1++;
} else if (dif > difThres) {
eCnts.l0Al1B++;
if (eCnts.l0Al1B < eCnts.MAXPRINT) {
LOG(error) << "L1B > L0A Before error:" << ((scal1.l1Before - scal0.l1Before) - (scal1.l0After - scal0.l0After));
LOG(error) << "L1B > L0A Before error:" << dif;
}
ret++;
}
Expand Down Expand Up @@ -482,6 +497,14 @@ int CTPRunScalers::updateOverflows(const CTPScalerRaw& scal0, const CTPScalerRaw
//
int CTPRunScalers::updateOverflowsInps(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, std::array<uint32_t, 48>& overflow) const
{
static int iPrint = 0;
if (mRunNumber < 545367) {
if (iPrint < 1) {
LOG(info) << "CTP Input scalers not available for run:" << mRunNumber;
iPrint++;
}
return 0;
}
uint32_t NINPS = 48;
if (rec0.scalersInps.size() < NINPS) {
LOG(error) << "updateOverflowsInps.size < 48:" << rec0.scalersInps.size();
Expand Down
42 changes: 23 additions & 19 deletions Detectors/CTP/macro/GetScalersForRun.C
Original file line number Diff line number Diff line change
Expand Up @@ -87,25 +87,29 @@ void GetScalersForRun(int runNumber = 0, int fillN = 0, bool test = 1)
std::cout << cls.name << ":" << iznc << std::endl;
}
}
std::cout << "ZNC:";
int inp = 26;
double_t nbc = bcs.size();
double_t frev = 11245;
double_t sigmaratio = 28.;
std::vector<CTPScalerRecordO2> recs = ctpscalers->getScalerRecordO2();
double_t time0 = recs[0].epochTime;
double_t timeL = recs[recs.size() - 1].epochTime;
double_t Trun = timeL - time0;
double_t integral = recs[recs.size() - 1].scalersInps[inp - 1] - recs[0].scalersInps[inp - 1];
double_t rate = integral / Trun;
double_t rat = integral / Trun / nbc / frev;
double_t mu = -TMath::Log(1 - rat);
double_t pp = 1 - mu / (TMath::Exp(mu) - 1);
double_t ratepp = mu * nbc * frev;
double_t integralpp = ratepp * Trun;
std::cout << "Rate:" << rate / sigmaratio << " Integral:" << integral << " mu:" << mu << " Pileup prob:" << pp;
std::cout << " Integralpp:" << integralpp << " Ratepp:" << ratepp / sigmaratio << std::endl;
// ctpscalers->printInputRateAndIntegral(26);
if (recs[0].scalersInps.size() == 48) {
std::cout << "ZNC:";
int inp = 26;
double_t nbc = bcs.size();
double_t frev = 11245;
double_t sigmaratio = 28.;
double_t time0 = recs[0].epochTime;
double_t timeL = recs[recs.size() - 1].epochTime;
double_t Trun = timeL - time0;
double_t integral = recs[recs.size() - 1].scalersInps[inp - 1] - recs[0].scalersInps[inp - 1];
double_t rate = integral / Trun;
double_t rat = integral / Trun / nbc / frev;
double_t mu = -TMath::Log(1 - rat);
double_t pp = 1 - mu / (TMath::Exp(mu) - 1);
double_t ratepp = mu * nbc * frev;
double_t integralpp = ratepp * Trun;
std::cout << "Rate:" << rate / sigmaratio << " Integral:" << integral << " mu:" << mu << " Pileup prob:" << pp;
std::cout << " Integralpp:" << integralpp << " Ratepp:" << ratepp / sigmaratio << std::endl;
// ctpscalers->printInputRateAndIntegral(26);
} else {
std::cout << "Inputs not available" << std::endl;
}
//
if (tsc != 255) {
std::cout << "TSC:";
Expand All @@ -122,7 +126,7 @@ void GetScalersForRun(int runNumber = 0, int fillN = 0, bool test = 1)
}
if (iznc != 255) {
std::cout << "ZNC class:";
int integral = recs[recs.size() - 1].scalers[iznc].l1After - recs[0].scalers[iznc].l1After;
int64_t integral = recs[recs.size() - 1].scalers[iznc].l1After - recs[0].scalers[iznc].l1After;
std::cout << integral << std::endl;
}
}