Skip to content

Commit 77c3b98

Browse files
committed
dev: consistency checker
1 parent 9066928 commit 77c3b98

File tree

8 files changed

+51
-30
lines changed

8 files changed

+51
-30
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ class CTPConfiguration
173173
uint64_t getDecrtiptorInputsMask(const std::string& name) const;
174174
std::map<o2::detectors::DetID::ID, std::vector<CTPInput>> getDet2InputMap();
175175
uint64_t getTriggerClassMask() const;
176-
uint64_t getTriggerClassMaskOnlywInputs() const;
176+
uint64_t getTriggerClassMaskWInputs() const;
177+
uint64_t getTriggerClassMaskWInputsNoTrgDets() const;
177178
std::vector<int> getTriggerClassList() const;
178179
uint32_t getRunNumber() { return mRunNumber; };
179180
std::vector<std::string> getDetectorList() const;

DataFormats/Detectors/CTP/src/Configuration.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ uint64_t CTPConfiguration::getTriggerClassMask() const
905905
}
906906
return clsmask;
907907
}
908-
uint64_t CTPConfiguration::getTriggerClassMaskOnlywInputs() const
908+
uint64_t CTPConfiguration::getTriggerClassMaskWInputs() const
909909
{
910910
uint64_t clsmask = 0;
911911
for (auto const& cls : mCTPClasses) {
@@ -916,6 +916,19 @@ uint64_t CTPConfiguration::getTriggerClassMaskOnlywInputs() const
916916
}
917917
return clsmask;
918918
}
919+
uint64_t CTPConfiguration::getTriggerClassMaskWInputsNoTrgDets() const
920+
{
921+
uint64_t clsmask = 0;
922+
for (auto const& cls : mCTPClasses) {
923+
bool exclude = cls.name.find("TRUE") != std::string::npos; // ignoring internal ctp generators
924+
exclude += cls.name.find("EMC") != std::string::npos;
925+
exclude += cls.name.find("TRD") != std::string::npos;
926+
exclude += cls.name.find("HMP") != std::string::npos;
927+
if(!exclude)
928+
clsmask |= cls.classMask;
929+
}
930+
return clsmask;
931+
}
919932
// Hardware positions of classes
920933
std::vector<int> CTPConfiguration::getTriggerClassList() const
921934
{

Detectors/CTP/reconstruction/include/CTPReconstruction/RawDataDecoder.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,12 @@ class RawDataDecoder
5555
int init();
5656
static int shiftNew(const o2::InteractionRecord& irin, uint32_t TFOrbit, std::bitset<48>& inpmask, int64_t shift, int level, std::map<o2::InteractionRecord, CTPDigit>& digmap);
5757
static int shiftInputs(std::map<o2::InteractionRecord, CTPDigit>& digitsMap, o2::pmr::vector<CTPDigit>& digits, uint32_t TFOrbit, uint64_t trgclassmask = 0xffffffffffffffff);
58-
int checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask = 0xffffffffffffffff);
59-
std::map<int,int> getClassErrors() {return mClassErrors; }
60-
std::map<uint64_t,int> getInpError() { return mInpErrors; }
58+
int checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask = 0xffffffffffffffff, uint64_t trigclassmaskNoTrgDets = 0xffffffffffffffff);
59+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> getClassErrorsA() {return mClassErrorsA; }
60+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> getClassErrorsB() { return mClassErrorsB; }
61+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> getClassCountersA() {return mClassCountersA; }
62+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> getClassCountersB() { return mClassCountersB; }
63+
int getLostDueToShift() { return mLostDueToShift; }
6164
private:
6265
static constexpr uint32_t TF_TRIGGERTYPE_MASK = 0x800;
6366
static constexpr uint32_t HB_TRIGGERTYPE_MASK = 0x2;
@@ -86,8 +89,11 @@ class RawDataDecoder
8689
int mErrorTCR = 0;
8790
int mErrorMax = 5;
8891
bool mStickyError = false;
89-
std::map<int,int> mClassErrors;
90-
std::map<uint64_t,int> mInpErrors;
92+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> mClassErrorsA;
93+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> mClassErrorsB; // from inputs
94+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> mClassCountersA;
95+
std::array<uint64_t,o2::ctp::CTP_NCLASSES> mClassCountersB; // from inputs
96+
int mLostDueToShift = 0;
9197
CTPConfiguration mCTPConfig;
9298
};
9399
} // namespace ctp

Detectors/CTP/reconstruction/src/RawDataDecoder.cxx

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -294,13 +294,15 @@ int RawDataDecoder::decodeRaw(o2::framework::InputRecord& inputs, std::vector<o2
294294
}
295295
if (mDoDigits & mDecodeInps) {
296296
uint64_t trgclassmask = 0xffffffffffffffff;
297+
uint64_t trgclassmaskNOTRGDet = 0xffffffffffffffff;
297298
if (mCTPConfig.getRunNumber() != 0) {
298-
trgclassmask = mCTPConfig.getTriggerClassMaskOnlywInputs();
299+
trgclassmask = mCTPConfig.getTriggerClassMaskWInputs();
300+
trgclassmaskNOTRGDet = mCTPConfig.getTriggerClassMaskWInputsNoTrgDets();
299301
}
300302
// std::cout << "trgclassmask:" << std::hex << trgclassmask << std::dec << std::endl;
301-
ret = shiftInputs(digitsMap, digits, mTFOrbit, trgclassmask);
303+
ret = shiftInputs(digitsMap, digits, mTFOrbit);
302304
if (mCheckConsistency) {
303-
ret = checkReadoutConsistentncy(digits, trgclassmask);
305+
ret = checkReadoutConsistentncy(digits, trgclassmask, trgclassmaskNOTRGDet);
304306
}
305307
}
306308
if (mDoDigits && !mDecodeInps) {
@@ -592,10 +594,9 @@ int RawDataDecoder::shiftInputs(std::map<o2::InteractionRecord, CTPDigit>& digit
592594
return 0;
593595
}
594596
//
595-
int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask)
597+
int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask, uint64_t trgclassmaskNoTrgDet)
596598
{
597599
int ret = 0;
598-
int lost = 0;
599600
static int nerror = 0;
600601
for (auto const& digit : digits) {
601602
// if class mask => inps
@@ -608,21 +609,20 @@ int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits,
608609
ret = 128;
609610
continue;
610611
}
612+
mClassCountersA[i]++;
611613
uint64_t clsinpmask = cls->descriptor->getInputsMask();
612614
uint64_t diginpmask = digit.CTPInputMask.to_ullong();
613615
if (!((clsinpmask & diginpmask) == clsinpmask)) {
614616
if(nerror < mErrorMax)
615617
LOG(error) << "CTP class:" << cls->name << " inpmask:" << clsinpmask << " not compatible with inputs mask:" << diginpmask;
616-
auto result = mClassErrors.insert({cls->getIndex(),1});
617-
if(!result.second)
618-
mClassErrors[cls->getIndex()]++;
618+
mClassErrorsA[i]++;
619619
ret = 128;
620620
}
621621
}
622622
}
623623
// if inps => class mask
624624
for (auto const& cls : mCTPConfig.getCTPClasses()) {
625-
uint64_t clsinpmask = cls.descriptor->getInputsMask();
625+
uint64_t clsinpmask = cls.descriptor->getInputsMask(); // class definition
626626
uint64_t diginpmask = digit.CTPInputMask.to_ullong();
627627
uint64_t digclsmask = digit.CTPClassMask.to_ullong();
628628
if ((clsinpmask & diginpmask) == clsinpmask) {
@@ -631,21 +631,19 @@ int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits,
631631
int32_t offset = BCShiftCorrection + o2::ctp::TriggerOffsetsParam::Instance().LM_L0 + o2::ctp::TriggerOffsetsParam::Instance().L0_L1_classes - 1;
632632
offset = o2::constants::lhc::LHCMaxBunches - offset;
633633
if (digit.intRecord.bc < offset) {
634-
if(nerror < mErrorMax)
634+
if((nerror < mErrorMax) && (cls.classMask & ~trgclassmaskNoTrgDet))
635635
LOG(error) << "CTP class:" << cls.name << " inpmask:" << clsinpmask << " cls mask:" << cls.classMask << " not found in digit:" << digit;
636-
auto result = mInpErrors.insert({diginpmask,1});
637-
if(!result.second)
638-
mInpErrors[diginpmask]++;
636+
mClassErrorsB[cls.getIndex()]++;
639637
ret = 256;
640638
} else {
641-
lost++;
639+
mLostDueToShift++;
642640
}
643641
}
644642
}
645643
}
646644
}
647-
if (lost) {
648-
LOG(info) << "LOST classes because of shift:" << lost;
645+
if (mLostDueToShift) {
646+
LOG(debug) << "LOST classes because of shift:" << mLostDueToShift;
649647
}
650648
return ret;
651649
}

Detectors/CTP/workflow/src/RawDecoderSpec.cxx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,15 @@ void RawDecoderSpec::endOfStream(framework::EndOfStreamContext& ec)
7171
std::cout << std::endl;
7272
LOG(info) << "Number of missing TF:" << nmiss << std::endl;
7373
LOG(info) << "# of IR errors:" << mDecoder.getErrorIR() << " TCR errors:" << mDecoder.getErrorTCR() << std::endl;
74+
std::array<uint64_t, o2::ctp::CTP_NCLASSES> clsA = mDecoder.getClassCountersA();
75+
std::array<uint64_t, o2::ctp::CTP_NCLASSES> clsB = mDecoder.getClassCountersB();
76+
std::array<uint64_t, o2::ctp::CTP_NCLASSES> clsEA = mDecoder.getClassErrorsA();
77+
std::array<uint64_t, o2::ctp::CTP_NCLASSES> clsEB = mDecoder.getClassErrorsB();
78+
79+
for(int i = 0; i < o2::ctp::CTP_NCLASSES; i ++){
80+
bool print = clsA[i] > 0 || clsB[i] > 0 || clsEA[i] > 0 || clsEB[i] > 0;
81+
LOG(important) << "CLASS:" << i << " A:" << clsA[i] << " B:" << clsB[i] << " EA:" << clsEA[i] << " EB:" << clsEB[i];
82+
}
7483
}
7584
void RawDecoderSpec::run(framework::ProcessingContext& ctx)
7685
{

Detectors/CTP/workflowScalers/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ o2_add_library(CTPWorkflowScalers
1313
SOURCES src/RunManager.cxx
1414
PUBLIC_LINK_LIBRARIES O2::Framework
1515
O2::DataFormatsCTP
16-
AliceO2::BookkeepingApi
17-
AliceO2::InfoLogger)
16+
AliceO2::BookkeepingApi)
1817
o2_target_root_dictionary(CTPWorkflowScalers HEADERS
1918
include/CTPWorkflowScalers/ctpCCDBManager.h)
2019
o2_add_executable(

Detectors/CTP/workflowScalers/include/CTPWorkflowScalers/RunManager.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include "DataFormatsCTP/Configuration.h"
1919
#include "BookkeepingApi/BkpClientFactory.h"
2020
#include "BookkeepingApi/BkpClient.h"
21-
#include <InfoLogger/InfoLogger.hxx>
2221

2322
using namespace o2::bkp::api;
2423
namespace o2
@@ -73,7 +72,6 @@ class CTPRunManager : public ctpCCDBManager
7372
int mEOX = 0; // redundancy check
7473
int mNew = 1; // 1 - no CCDB: used for QC
7574
int mQCWritePeriod = 3; // Time in 10secs between two writes to QCCD
76-
AliceO2::InfoLogger::InfoLogger mInfoLogger;
7775
ClassDefNV(CTPRunManager, 7);
7876
};
7977
} // namespace ctp

Detectors/CTP/workflowScalers/src/RunManager.cxx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,6 @@ int CTPRunManager::addScalers(uint32_t irun, std::time_t time, bool start)
221221
int CTPRunManager::processMessage(std::string& topic, const std::string& message)
222222
{
223223
LOG(info) << "Processing message with topic:" << topic;
224-
std::string ahoj = "ahoj kniznica";
225-
mInfoLogger.logInfo(ahoj);
226-
LOG(important) << " ahoj important";
227224
std::string firstcounters;
228225
if (topic.find("clear") != std::string::npos) {
229226
mRunsLoaded.clear();

0 commit comments

Comments
 (0)