// Delegated methods for fHeader
void SetTriggerMask(ULong64_t n) {if(fHeader) fHeader->SetTriggerMask(n);}
+ void SetTriggerMaskNext50(ULong64_t n) {if(fHeader) fHeader->SetTriggerMaskNext50(n);}
void SetOrbitNumber(UInt_t n) {if(fHeader) fHeader->SetOrbitNumber(n);}
void SetTimeStamp(UInt_t timeStamp){if(fHeader) fHeader->SetTimeStamp(timeStamp);}
void SetEventType(UInt_t eventType){if(fHeader) fHeader->SetEventType(eventType);}
void SetTriggerCluster(UChar_t n) {if(fHeader) fHeader->SetTriggerCluster(n);}
ULong64_t GetTriggerMask() const {return fHeader?fHeader->GetTriggerMask():0;}
- TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
- Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
+ ULong64_t GetTriggerMaskNext50() const {return fHeader?fHeader->GetTriggerMaskNext50():0;}
+ //TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask()):"";}
+ TString GetFiredTriggerClasses() const {return (fESDRun&&fHeader)?fESDRun->GetFiredTriggerClasses(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50()):"";}
+ //Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),name):kFALSE;}
+ Bool_t IsTriggerClassFired(const char *name) const {return (fESDRun&&fHeader)?fESDRun->IsTriggerClassFired(fHeader->GetTriggerMask(),fHeader->GetTriggerMaskNext50(),name):kFALSE;}
Bool_t IsEventSelected(const char *trigExpr) const;
TObject* GetHLTTriggerDecision() const;
TString GetHLTTriggerDescription() const;
// list of trigger classes that
// have been fired. Uses the trigger
// class mask as an argument.
+ // Works both for first50 and next50 classes
TString trclasses;
for(Int_t i = 0; i < kNTriggerClasses; i++) {
if (mask & (1ull << i)) {
return trclasses;
}
+//______________________________________________________________________________
+TString AliESDRun::GetFiredTriggerClasses(ULong64_t masklow,ULong64_t maskhigh) const
+{
+ // Contruct and returns list of trigger classes for 100 classes
+ TString trclasseslow;
+ trclasseslow = GetFiredTriggerClasses(masklow);
+ TString trclasseshigh;
+ trclasseshigh = GetFiredTriggerClasses(maskhigh);
+ TString trclasses;
+ trclasses = trclasseslow+trclasseshigh;
+ return trclasses;
+}
//______________________________________________________________________________
Bool_t AliESDRun::IsTriggerClassFired(ULong64_t mask, const char *name) const
{
else
return kFALSE;
}
-
+//______________________________________________________________________________
+Bool_t AliESDRun::IsTriggerClassFired(ULong64_t masklow, ULong64_t maskhigh,const char *name) const
+{
+ return (IsTriggerClassFired(masklow,name) || IsTriggerClassFired(maskhigh,name));
+}
//_____________________________________________________________________________
Bool_t AliESDRun::InitMagneticField() const
{
const char* GetTriggerClass(Int_t index) const;
TString GetActiveTriggerClasses() const;
TString GetFiredTriggerClasses(ULong64_t mask) const;
+ TString GetFiredTriggerClasses(ULong64_t mask,ULong64_t mask2) const;
Bool_t IsTriggerClassFired(ULong64_t mask, const char *name) const;
+ Bool_t IsTriggerClassFired(ULong64_t mask, ULong64_t mask2,const char *name) const;
Float_t GetCurrentL3() const {return fCurrentL3;}
Float_t GetCurrentDip() const {return fCurrentDip;}
Float_t GetBeamEnergy() const {return IsBeamEnergyIsSqrtSHalfGeV() ? fBeamEnergy : fBeamEnergy/2;}
return ((i >= 0) && (i < kNEMCALMatrix)) ? fEMCALMatrix[i] : NULL;
}
- enum {kNTriggerClasses = 50};
+ enum {kNTriggerClasses = 100};
enum {kNPHOSMatrix = 5};
enum {kNEMCALMatrix = 22};
enum {kT0spreadSize = 4};
enum {kNMaxInputs = 60}; // CTP handles up to 60 trigger detector inputs
enum {kNMaxInteractions = 2}; // CTP handles up to two different interactions
enum {kNMaxFunctions = 4}; // CTP handles up to 4 different logical functions
- enum {kNMaxClasses = 50}; // Maximum number of trigger classes = 50
- enum {kNMaxClusters = 6}; // Maximum number of different detector clusters that can be handled by CTP
+ enum {kNMaxClasses = 100}; // Maximum number of trigger classes = 50
+ enum {kNMaxClusters = 8}; // Maximum number of different detector clusters that can be handled by CTP
enum {kNMaxPFProtections = 4}; // Maximum number of different past-future protections that can be handled by CTP
enum {kNMaxMasks = 13}; // CTP handles up to 12 different BC masks + NONE
if(!runloader->GetTrigger()) runloader->LoadTrigger();
if (AliCentralTrigger *aCTP = runloader->GetTrigger()) {
ULong64_t mask = aCTP->GetClassMask();
+ ULong64_t masknext = aCTP->GetClassMaskNext50();
SetTriggerClass(mask);
+ SetTriggerClassNext50(masknext);
}
else
Warning("SetTriggerClass","No trigger can be loaded! Putting empty trigger class into the raw data header !");