From 54eb75a2a982e1f5e0403c08d8764b0fd26d2d77 Mon Sep 17 00:00:00 2001 From: lietava Date: Wed, 27 Sep 2023 13:17:10 +0200 Subject: [PATCH 1/2] dev: scaler inputs dinished and tools --- .../CTP/include/DataFormatsCTP/Scalers.h | 6 +- DataFormats/Detectors/CTP/src/Scalers.cxx | 72 +++++++++++++++++-- Detectors/CTP/macro/GetScalers.C | 23 +++--- 3 files changed, 87 insertions(+), 14 deletions(-) diff --git a/DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h b/DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h index 85c9d30fef2f7..526e79f00f65d 100644 --- a/DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h +++ b/DataFormats/Detectors/CTP/include/DataFormatsCTP/Scalers.h @@ -105,6 +105,8 @@ class CTPRunScalers uint32_t getRunNUmber() { return mRunNumber; }; int printRates(); int printIntegrals(); + int printInputRateAndIntegral(int inp); + int printClassBRateAndIntegral(int icls); // // static constexpr uint32_t NCOUNTERS = 1052; // v1 @@ -146,10 +148,10 @@ class CTPRunScalers std::vector mScalerRecordRaw; std::vector mScalerRecordO2; int processScalerLine(const std::string& line, int& level, int& nclasses); - int copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTPScalerRecordO2& o2rec, overflows_t& classesoverflows); + int copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTPScalerRecordO2& o2rec, overflows_t& classesoverflows, std::array& overflows); int updateOverflows(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, overflows_t& classesoverflows) const; int updateOverflows(const CTPScalerRaw& scal0, const CTPScalerRaw& scal1, std::array& overflow) const; - + int updateOverflowsInps(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, std::array& overflow) const; ClassDefNV(CTPRunScalers, 2); }; } // namespace ctp diff --git a/DataFormats/Detectors/CTP/src/Scalers.cxx b/DataFormats/Detectors/CTP/src/Scalers.cxx index 900645416fe52..ca45e3225344c 100644 --- a/DataFormats/Detectors/CTP/src/Scalers.cxx +++ b/DataFormats/Detectors/CTP/src/Scalers.cxx @@ -65,6 +65,7 @@ void CTPScalerRecordRaw::printStream(std::ostream& stream) const for (auto const& cnts : scalers) { cnts.printStream(stream); } + std::cout << "Inputs:" << scalersInps.size() << std::endl; for (auto const& dets : scalersInps) { stream << dets << " "; } @@ -77,6 +78,7 @@ void CTPScalerRecordO2::printStream(std::ostream& stream) const for (auto const& cnts : scalers) { cnts.printStream(stream); } + std::cout << "Inputs:" << scalersInps.size() << std::endl; for (auto const& dets : scalersInps) { stream << dets << " "; } @@ -273,10 +275,12 @@ int CTPRunScalers::convertRawToO2() overflows[i] = {0, 0, 0, 0, 0, 0}; } } + // Input overflows + std::array overflowsInputs = {48*0}; errorCounters eCnts; // 1st o2 rec is just copy CTPScalerRecordO2 o2rec; - copyRawToO2ScalerRecord(mScalerRecordRaw[0], o2rec, overflows); + copyRawToO2ScalerRecord(mScalerRecordRaw[0], o2rec, overflows, overflowsInputs); mScalerRecordO2.push_back(o2rec); int j = 1; for (uint32_t i = 1; i < mScalerRecordRaw.size(); i++) { @@ -285,7 +289,8 @@ int CTPRunScalers::convertRawToO2() // if (ret == 0) { CTPScalerRecordO2 o2rec; - copyRawToO2ScalerRecord(mScalerRecordRaw[i], o2rec, overflows); + ret = updateOverflowsInps(mScalerRecordRaw[i - 1], mScalerRecordRaw[i], overflowsInputs); + copyRawToO2ScalerRecord(mScalerRecordRaw[i], o2rec, overflows, overflowsInputs); mScalerRecordO2.push_back(o2rec); // Check consistency checkConsistency(mScalerRecordO2[j - 1], mScalerRecordO2[j], eCnts); @@ -295,7 +300,7 @@ int CTPRunScalers::convertRawToO2() eCnts.printStream(std::cout); return 0; } -int CTPRunScalers::copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTPScalerRecordO2& o2rec, overflows_t& classesoverflows) +int CTPRunScalers::copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTPScalerRecordO2& o2rec, overflows_t& classesoverflows, std::array& overflows) { if (rawrec.scalers.size() != (mClassMask.count())) { LOG(error) << "Inconsistent scaler record size:" << rawrec.scalers.size() << " Expected:" << mClassMask.count(); @@ -313,6 +318,10 @@ int CTPRunScalers::copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTP o2scal.createCTPScalerO2FromRaw(rawscal, classesoverflows[k]); o2rec.scalers.push_back(o2scal); } + for(int i = 0; i < rawrec.scalersInps.size(); i ++) { + uint64_t inpo2 = (uint64_t)(rawrec.scalersInps[i]) + 0xffffffffull * (uint64_t)(overflows[i]); + o2rec.scalersInps.push_back(inpo2); + } return 0; } int CTPRunScalers::checkConsistency(const CTPScalerO2& scal0, const CTPScalerO2& scal1, errorCounters& eCnts) const @@ -452,6 +461,26 @@ int CTPRunScalers::updateOverflows(const CTPScalerRaw& scal0, const CTPScalerRaw //std::cout << std::endl; return 0; } +// +int CTPRunScalers::updateOverflowsInps(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, std::array& overflow) const +{ + int NINPS = 48; + if(rec0.scalersInps.size() < NINPS) { + LOG(error) << "updateOverflowsInps.size < 48:" << rec0.scalersInps.size(); + return 1; + } + if(rec1.scalersInps.size() < NINPS) { + LOG(error) << "updateOverflowsInps.size < 48:" << rec1.scalersInps.size(); + return 2; + } + for(int i = 0; i < NINPS; i ++) { + if(rec0.scalersInps[i] > rec1.scalersInps[i]) { + overflow[i] += 1; + } + } + return 0; +} +// int CTPRunScalers::printRates() { if (mScalerRecordO2.size() == 0) { @@ -507,7 +536,42 @@ int CTPRunScalers::printIntegrals() } return 0; } - +// +// Input counting 1..48 +int CTPRunScalers::printInputRateAndIntegral(int inp) +{ + if (mScalerRecordO2.size() == 0) { + LOG(info) << "ScalerRecord is empty, doing nothing"; + return 1; + } + double_t time0 = mScalerRecordO2[0].epochTime; + double_t timeL = mScalerRecordO2[mScalerRecordO2.size() - 1].epochTime; + int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalersInps[inp-1] - mScalerRecordO2[0].scalersInps[inp-1]; + std::cout << "Scaler Integrals for run:" << mRunNumber << " duration:" << timeL - time0; + std::cout << " Input " << inp << " integral:" << integral << " rate:" << integral/(timeL-time0) << std::endl; + return 0; +} +// Prints class before counters for lumi +// Class counting 1..64 +int CTPRunScalers::printClassBRateAndIntegral(int icls) +{ + if (mScalerRecordO2.size() == 0) { + LOG(info) << "ScalerRecord is empty, doing nothing"; + return 1; + } + double_t time0 = mScalerRecordO2[0].epochTime; + double_t timeL = mScalerRecordO2[mScalerRecordO2.size() - 1].epochTime; + if(mScalerRecordO2[0].scalers.size() < icls) { + LOG(error) << "class number bigger than expected for this run:" << icls << "expexted smaller than:" << mScalerRecordO2[0].scalers.size(); + return 1; + } else { + int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalers[icls-1].lmBefore - mScalerRecordO2[0].scalers[icls-1].lmBefore; + std::cout << "Scaler Integrals for run:" << mRunNumber << " duration:" << timeL - time0; + std::cout << " Class " << icls << " integral:" << integral << " rate:" << integral/(timeL-time0) << std::endl; + } + return 0; +} +// void CTPRunScalers::printLMBRateVsT() const { for (int i = 1; i < mScalerRecordO2.size(); i++) { // loop over time diff --git a/Detectors/CTP/macro/GetScalers.C b/Detectors/CTP/macro/GetScalers.C index 7cc13c03356eb..62fb627d1a06f 100644 --- a/Detectors/CTP/macro/GetScalers.C +++ b/Detectors/CTP/macro/GetScalers.C @@ -42,15 +42,22 @@ void GetScalers(std::string srun, long time, std::string ccdbHost = "http://ccdb // return; scl = mng.getScalersFromCCDB(time, srun, ok); if (ok == 1) { + scl.printStream(std::cout); scl.convertRawToO2(); - scl.printO2(std::cout); - scl.printFromZero(std::cout); - scl.printIntegrals(); - scl.printRates(); - // std::vector clsses; - // clsses = ctpcfg.getTriggerClassList(); - // std::cout << clsses.size() << std::endl; - // for(auto const& i : clsses) std::cout << i << std::endl; + //scl.printO2(std::cout); + //scl.printFromZero(std::cout); + //scl.printIntegrals(); + //scl.printRates(); + std::cout << "TVX,TSC,TCE,ZNC:" << std::endl; + scl.printInputRateAndIntegral(3); + scl.printInputRateAndIntegral(4); + scl.printInputRateAndIntegral(5); + scl.printInputRateAndIntegral(26); + std::cout << " TVX,TVX&TCE,TVX&TSC,TVX&VCH:" << std::endl; + scl.printClassBRateAndIntegral(3); + scl.printClassBRateAndIntegral(4); + scl.printClassBRateAndIntegral(5); + scl.printClassBRateAndIntegral(6); } else { std::cout << "Can not find run, please, check parameters" << std::endl; } From 19c6c98db9cc32f069df8e2200f8170b6c033b04 Mon Sep 17 00:00:00 2001 From: lietava Date: Wed, 27 Sep 2023 13:18:38 +0200 Subject: [PATCH 2/2] clang --- DataFormats/Detectors/CTP/src/Scalers.cxx | 22 +++++++++++----------- Detectors/CTP/macro/GetScalers.C | 8 ++++---- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/DataFormats/Detectors/CTP/src/Scalers.cxx b/DataFormats/Detectors/CTP/src/Scalers.cxx index ca45e3225344c..ca313bccf6fdb 100644 --- a/DataFormats/Detectors/CTP/src/Scalers.cxx +++ b/DataFormats/Detectors/CTP/src/Scalers.cxx @@ -276,7 +276,7 @@ int CTPRunScalers::convertRawToO2() } } // Input overflows - std::array overflowsInputs = {48*0}; + std::array overflowsInputs = {48 * 0}; errorCounters eCnts; // 1st o2 rec is just copy CTPScalerRecordO2 o2rec; @@ -318,7 +318,7 @@ int CTPRunScalers::copyRawToO2ScalerRecord(const CTPScalerRecordRaw& rawrec, CTP o2scal.createCTPScalerO2FromRaw(rawscal, classesoverflows[k]); o2rec.scalers.push_back(o2scal); } - for(int i = 0; i < rawrec.scalersInps.size(); i ++) { + for (int i = 0; i < rawrec.scalersInps.size(); i++) { uint64_t inpo2 = (uint64_t)(rawrec.scalersInps[i]) + 0xffffffffull * (uint64_t)(overflows[i]); o2rec.scalersInps.push_back(inpo2); } @@ -465,16 +465,16 @@ int CTPRunScalers::updateOverflows(const CTPScalerRaw& scal0, const CTPScalerRaw int CTPRunScalers::updateOverflowsInps(const CTPScalerRecordRaw& rec0, const CTPScalerRecordRaw& rec1, std::array& overflow) const { int NINPS = 48; - if(rec0.scalersInps.size() < NINPS) { + if (rec0.scalersInps.size() < NINPS) { LOG(error) << "updateOverflowsInps.size < 48:" << rec0.scalersInps.size(); return 1; } - if(rec1.scalersInps.size() < NINPS) { + if (rec1.scalersInps.size() < NINPS) { LOG(error) << "updateOverflowsInps.size < 48:" << rec1.scalersInps.size(); return 2; } - for(int i = 0; i < NINPS; i ++) { - if(rec0.scalersInps[i] > rec1.scalersInps[i]) { + for (int i = 0; i < NINPS; i++) { + if (rec0.scalersInps[i] > rec1.scalersInps[i]) { overflow[i] += 1; } } @@ -546,9 +546,9 @@ int CTPRunScalers::printInputRateAndIntegral(int inp) } double_t time0 = mScalerRecordO2[0].epochTime; double_t timeL = mScalerRecordO2[mScalerRecordO2.size() - 1].epochTime; - int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalersInps[inp-1] - mScalerRecordO2[0].scalersInps[inp-1]; + int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalersInps[inp - 1] - mScalerRecordO2[0].scalersInps[inp - 1]; std::cout << "Scaler Integrals for run:" << mRunNumber << " duration:" << timeL - time0; - std::cout << " Input " << inp << " integral:" << integral << " rate:" << integral/(timeL-time0) << std::endl; + std::cout << " Input " << inp << " integral:" << integral << " rate:" << integral / (timeL - time0) << std::endl; return 0; } // Prints class before counters for lumi @@ -561,13 +561,13 @@ int CTPRunScalers::printClassBRateAndIntegral(int icls) } double_t time0 = mScalerRecordO2[0].epochTime; double_t timeL = mScalerRecordO2[mScalerRecordO2.size() - 1].epochTime; - if(mScalerRecordO2[0].scalers.size() < icls) { + if (mScalerRecordO2[0].scalers.size() < icls) { LOG(error) << "class number bigger than expected for this run:" << icls << "expexted smaller than:" << mScalerRecordO2[0].scalers.size(); return 1; } else { - int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalers[icls-1].lmBefore - mScalerRecordO2[0].scalers[icls-1].lmBefore; + int integral = mScalerRecordO2[mScalerRecordO2.size() - 1].scalers[icls - 1].lmBefore - mScalerRecordO2[0].scalers[icls - 1].lmBefore; std::cout << "Scaler Integrals for run:" << mRunNumber << " duration:" << timeL - time0; - std::cout << " Class " << icls << " integral:" << integral << " rate:" << integral/(timeL-time0) << std::endl; + std::cout << " Class " << icls << " integral:" << integral << " rate:" << integral / (timeL - time0) << std::endl; } return 0; } diff --git a/Detectors/CTP/macro/GetScalers.C b/Detectors/CTP/macro/GetScalers.C index 62fb627d1a06f..05fce0b657f5a 100644 --- a/Detectors/CTP/macro/GetScalers.C +++ b/Detectors/CTP/macro/GetScalers.C @@ -44,10 +44,10 @@ void GetScalers(std::string srun, long time, std::string ccdbHost = "http://ccdb if (ok == 1) { scl.printStream(std::cout); scl.convertRawToO2(); - //scl.printO2(std::cout); - //scl.printFromZero(std::cout); - //scl.printIntegrals(); - //scl.printRates(); + // scl.printO2(std::cout); + // scl.printFromZero(std::cout); + // scl.printIntegrals(); + // scl.printRates(); std::cout << "TVX,TSC,TCE,ZNC:" << std::endl; scl.printInputRateAndIntegral(3); scl.printInputRateAndIntegral(4);