#ifndef ALIEMCALTRIGGERMAKER_H
#define ALIEMCALTRIGGERMAKER_H
class TClonesArray;
class AliEmcalTriggerSetupInfo;
class AliAODCaloTrigger;
class AliVVZERO;
class THistManager;
#include "AliLog.h"
#include "AliEmcalTriggerBitConfig.h"
#include "AliAnalysisTaskEmcal.h"
class AliEmcalTriggerMaker : public AliAnalysisTaskEmcal {
public:
enum TriggerMakerTriggerType_t {
kTMEMCalJet = 0,
kTMEMCalGamma = 1,
kTMEMCalLevel0 = 2,
kTMEMCalRecalcJet = 3,
kTMEMCalRecalcGamma = 4
};
enum TriggerMakerBitConfig_t {
kOldConfig = 0,
kNewConfig = 1
};
AliEmcalTriggerMaker();
AliEmcalTriggerMaker(const char *name, Bool_t doQA = kFALSE);
virtual ~AliEmcalTriggerMaker();
void SetRunQA(Bool_t doQA = kTRUE) { fDoQA = doQA; }
void SetCaloTriggersOutName(const char *name) { fCaloTriggersOutName = name; }
void SetCaloTriggerSetupOutName(const char *name) { fCaloTriggerSetupOutName = name; }
void SetTriggerThresholdJetLow ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[2][0] = a; fThresholdConstants[2][1] = b; fThresholdConstants[2][2] = c; }
void SetTriggerThresholdJetHigh ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[0][0] = a; fThresholdConstants[0][1] = b; fThresholdConstants[0][2] = c; }
void SetTriggerThresholdGammaLow ( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[3][0] = a; fThresholdConstants[3][1] = b; fThresholdConstants[3][2] = c; }
void SetTriggerThresholdGammaHigh( Int_t a, Int_t b, Int_t c ) { fThresholdConstants[3][0] = a; fThresholdConstants[1][1] = b; fThresholdConstants[1][2] = c; }
void SetV0InName(const char *name) { fV0InName = name; }
void SetRunTriggerType(TriggerMakerTriggerType_t type, Bool_t doTrigger = kTRUE) { fRunTriggerType[type] = doTrigger; }
void SetUseTriggerBitConfig(TriggerMakerBitConfig_t bitConfig) { fUseTriggerBitConfig = bitConfig; }
void SetTriggerBitConfig(const AliEmcalTriggerBitConfig *conf) { fTriggerBitConfig = conf; }
Bool_t IsEJE(Int_t tBits) const { if( tBits & ( 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetJetHighBit()) | 1 << (fTriggerBitConfig->GetJetLowBit()) | 1 << (fTriggerBitConfig->GetJetHighBit()) )) return kTRUE; else return kFALSE; }
Bool_t IsEGA(Int_t tBits) const { if( tBits & ( 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaLowBit()) | 1 << (fTriggerBitConfig->GetTriggerTypesEnd() + fTriggerBitConfig->GetGammaHighBit()) | 1 << (fTriggerBitConfig->GetGammaLowBit()) | 1 << (fTriggerBitConfig->GetGammaHighBit()) )) return kTRUE; else return kFALSE; }
Bool_t IsLevel0(Int_t tBits) const { if( tBits & (1 << (fTriggerBitConfig->GetLevel0Bit() + fTriggerBitConfig->GetLevel0Bit()) | (1 << fTriggerBitConfig->GetLevel0Bit()))) return kTRUE; return kFALSE; }
protected:
enum{
kPatchCols = 48,
kPatchRows = 64
};
void UserCreateOutputObjects();
void ExecOnce();
Bool_t Run();
void RunSimpleOfflineTrigger();
Bool_t NextTrigger( Bool_t &isOfflineSimple );
AliEmcalTriggerPatchInfo* ProcessPatch(TriggerMakerTriggerType_t type, Bool_t isOfflineSimple);
Bool_t CheckForL0(const AliVCaloTrigger &trg) const;
TString fCaloTriggersOutName;
TString fCaloTriggerSetupOutName;
TString fV0InName;
TriggerMakerBitConfig_t fUseTriggerBitConfig;
Int_t fThresholdConstants[4][3];
const AliEmcalTriggerBitConfig *fTriggerBitConfig;
TClonesArray *fCaloTriggersOut;
AliEmcalTriggerSetupInfo *fCaloTriggerSetupOut;
AliAODCaloTrigger *fSimpleOfflineTriggers;
AliVVZERO *fV0;
Double_t fPatchADCSimple[kPatchCols][kPatchRows];
Int_t fPatchADC[kPatchCols][kPatchRows];
Int_t fITrigger;
Bool_t fRunTriggerType[5];
Bool_t fDoQA;
THistManager *fQAHistos;
static const TString fgkTriggerTypeNames[5];
private:
AliEmcalTriggerMaker(const AliEmcalTriggerMaker&);
AliEmcalTriggerMaker &operator=(const AliEmcalTriggerMaker&);
ClassDef(AliEmcalTriggerMaker, 5)
};
#endif
AliEmcalTriggerMaker.h:10 AliEmcalTriggerMaker.h:11 AliEmcalTriggerMaker.h:12 AliEmcalTriggerMaker.h:13 AliEmcalTriggerMaker.h:14 AliEmcalTriggerMaker.h:15 AliEmcalTriggerMaker.h:16 AliEmcalTriggerMaker.h:17 AliEmcalTriggerMaker.h:18 AliEmcalTriggerMaker.h:19 AliEmcalTriggerMaker.h:20 AliEmcalTriggerMaker.h:21 AliEmcalTriggerMaker.h:22 AliEmcalTriggerMaker.h:23 AliEmcalTriggerMaker.h:24 AliEmcalTriggerMaker.h:25 AliEmcalTriggerMaker.h:26 AliEmcalTriggerMaker.h:27 AliEmcalTriggerMaker.h:28 AliEmcalTriggerMaker.h:29 AliEmcalTriggerMaker.h:30 AliEmcalTriggerMaker.h:31 AliEmcalTriggerMaker.h:32 AliEmcalTriggerMaker.h:33 AliEmcalTriggerMaker.h:34 AliEmcalTriggerMaker.h:35 AliEmcalTriggerMaker.h:36 AliEmcalTriggerMaker.h:37 AliEmcalTriggerMaker.h:38 AliEmcalTriggerMaker.h:39 AliEmcalTriggerMaker.h:40 AliEmcalTriggerMaker.h:41 AliEmcalTriggerMaker.h:42 AliEmcalTriggerMaker.h:43 AliEmcalTriggerMaker.h:44 AliEmcalTriggerMaker.h:45 AliEmcalTriggerMaker.h:46 AliEmcalTriggerMaker.h:47 AliEmcalTriggerMaker.h:48 AliEmcalTriggerMaker.h:49 AliEmcalTriggerMaker.h:50 AliEmcalTriggerMaker.h:51 AliEmcalTriggerMaker.h:52 AliEmcalTriggerMaker.h:53 AliEmcalTriggerMaker.h:54 AliEmcalTriggerMaker.h:55 AliEmcalTriggerMaker.h:56 AliEmcalTriggerMaker.h:57 AliEmcalTriggerMaker.h:58 AliEmcalTriggerMaker.h:59 AliEmcalTriggerMaker.h:60 AliEmcalTriggerMaker.h:61 AliEmcalTriggerMaker.h:62 AliEmcalTriggerMaker.h:63 AliEmcalTriggerMaker.h:64 AliEmcalTriggerMaker.h:65 AliEmcalTriggerMaker.h:66 AliEmcalTriggerMaker.h:67 AliEmcalTriggerMaker.h:68 AliEmcalTriggerMaker.h:69 AliEmcalTriggerMaker.h:70 AliEmcalTriggerMaker.h:71 AliEmcalTriggerMaker.h:72 AliEmcalTriggerMaker.h:73 AliEmcalTriggerMaker.h:74 AliEmcalTriggerMaker.h:75 AliEmcalTriggerMaker.h:76 AliEmcalTriggerMaker.h:77 AliEmcalTriggerMaker.h:78 AliEmcalTriggerMaker.h:79 AliEmcalTriggerMaker.h:80 AliEmcalTriggerMaker.h:81 AliEmcalTriggerMaker.h:82 AliEmcalTriggerMaker.h:83 AliEmcalTriggerMaker.h:84 AliEmcalTriggerMaker.h:85 AliEmcalTriggerMaker.h:86 AliEmcalTriggerMaker.h:87 AliEmcalTriggerMaker.h:88