X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=HLT%2FBASE%2FAliHLTCTPData.cxx;h=4d5b7ea05f414fb4ce0ac6a219eaa6ed6476a13e;hp=2d45479ae3d3851bc48644d7f5f9cf9a6060a160;hb=edd723471464a5b6be14a781822a21c6236f2972;hpb=59be62540ce57a4a780c2fdb32d345ecf2bf3460;ds=sidebyside diff --git a/HLT/BASE/AliHLTCTPData.cxx b/HLT/BASE/AliHLTCTPData.cxx index 2d45479ae3d..4d5b7ea05f4 100644 --- a/HLT/BASE/AliHLTCTPData.cxx +++ b/HLT/BASE/AliHLTCTPData.cxx @@ -35,6 +35,7 @@ AliHLTCTPData::AliHLTCTPData() : TNamed("AliHLTCTPData", "HLT counters for the CTP") , AliHLTLogging() , fMask(0) + , fTriggers(0) , fClassIds(AliHLTReadoutList::Class(), gkNCTPTriggerClasses) , fCounters(gkNCTPTriggerClasses) { @@ -49,6 +50,7 @@ AliHLTCTPData::AliHLTCTPData(const char* parameter) : TNamed("AliHLTCTPData", "HLT counters for the CTP") , AliHLTLogging() , fMask(0) + , fTriggers(0) , fClassIds(AliHLTReadoutList::Class(), gkNCTPTriggerClasses) , fCounters(gkNCTPTriggerClasses) { @@ -66,6 +68,7 @@ AliHLTCTPData::AliHLTCTPData(const AliHLTCTPData& src) : TNamed(src.GetName(), src.GetTitle()) , AliHLTLogging() , fMask(src.Mask()) + , fTriggers(src.fTriggers) , fClassIds(src.fClassIds) , fCounters(src.Counters()) { @@ -215,7 +218,21 @@ int AliHLTCTPData::InitCTPTriggerClasses(const char* ctpString) return 0; } -bool AliHLTCTPData::EvaluateCTPTriggerClass(const char* expression, AliHLTComponentTriggerData& trigData) const +AliHLTUInt64_t AliHLTCTPData::ActiveTriggers(const AliHLTComponentTriggerData& trigData) +{ + // extract active triggers from the trigger data + + if (trigData.fDataSize != sizeof(AliHLTEventTriggerData)) return (AliHLTUInt64_t)0; + + // trigger mask is 50 bit wide and is stored in word 5 and 6 of the CDH + AliHLTEventTriggerData* evtData=reinterpret_cast(trigData.fData); + AliHLTUInt64_t triggerMask=evtData->fCommonHeader[6]&0x3ffff; + triggerMask<<=32; + triggerMask|=evtData->fCommonHeader[5]; + return triggerMask; +} + +bool AliHLTCTPData::EvaluateCTPTriggerClass(const char* expression, const AliHLTComponentTriggerData& trigData) const { // see header file for function documentation if (trigData.fDataSize != sizeof(AliHLTEventTriggerData)) { @@ -235,6 +252,13 @@ bool AliHLTCTPData::EvaluateCTPTriggerClass(const char* expression, AliHLTCompon return false; } + return EvaluateCTPTriggerClass(expression, triggerMask); +} + +bool AliHLTCTPData::EvaluateCTPTriggerClass(const char* expression, AliHLTUInt64_t triggerMask) const +{ + // see header file for function documentation + // use a TFormula to interprete the expression // all classname are replaced by '[n]' which means the n'th parameter in the formula // the parameters are set to 0 or 1 depending on the bit in the trigger mask @@ -384,14 +408,7 @@ AliHLTEventDDL AliHLTCTPData::ReadoutList(const AliHLTComponentTriggerData& trig if (i>fClassIds.GetLast()) break; if ((triggerMask&((AliHLTUInt64_t)0x1<=Counters().GetSize()) break;