#ifndef ALIANALYSISTASKEMCAL_H
#define ALIANALYSISTASKEMCAL_H
class TClonesArray;
class TString;
class TList;
class AliEmcalParticle;
class AliMCParticle;
class AliVCluster;
class AliVTrack;
class AliVParticle;
class AliVCaloCells;
class TH1;
class TProfile;
class AliEMCALGeometry;
class AliParticleContainer;
class AliClusterContainer;
class AliGenPythiaEventHeader;
class AliVCaloTrigger;
class AliAnalysisUtils;
class AliEmcalTriggerPatchInfo;
#include "Rtypes.h"
#include "AliAnalysisTaskSE.h"
class AliAnalysisTaskEmcal : public AliAnalysisTaskSE {
public:
enum BeamType {
kNA = -1,
kpp = 0,
kAA = 1,
kpA = 2
};
enum TriggerType {
kND = -1,
kJ1 = 0,
kJ2 = 1,
kG1 = 2,
kG2 = 3,
kL0 = 4
};
enum TriggerCategory {
kTriggerLevel0 = 0,
kTriggerLevel1Jet = 1,
kTriggerLevel1Gamma=2,
kTriggerRecalcJet = 3,
kTriggerRecalcGamma = 4
};
AliAnalysisTaskEmcal();
AliAnalysisTaskEmcal(const char *name, Bool_t histo=kFALSE);
virtual ~AliAnalysisTaskEmcal();
AliParticleContainer *AddParticleContainer(const char *n);
AliClusterContainer *AddClusterContainer(const char *n);
AliParticleContainer *GetParticleContainer(Int_t i=0) const;
AliClusterContainer *GetClusterContainer(Int_t i=0) const;
AliParticleContainer *GetParticleContainer(const char* name) const;
AliClusterContainer *GetClusterContainer(const char* name) const;
void RemoveParticleContainer(Int_t i=0) { fParticleCollArray.RemoveAt(i) ; }
void RemoveClusterContainer(Int_t i=0) { fClusterCollArray.RemoveAt(i) ; }
void SetCaloCellsName(const char *n) { fCaloCellsName = n ; }
void SetCaloTriggerPatchInfoName(const char *n) { fCaloTriggerPatchInfoName = n ; }
void SetCaloTriggersName(const char *n) { fCaloTriggersName = n ; }
void SetCentRange(Double_t min, Double_t max) { fMinCent = min ; fMaxCent = max ; }
void SetCentralityEstimator(const char *c) { fCentEst = c ; }
void SetClusName(const char *n) { AddClusterContainer(n) ; }
void SetClusPtCut(Double_t cut, Int_t c=0);
void SetClusTimeCut(Double_t min, Double_t max, Int_t c=0);
void SetEventPlaneVsEmcal(Double_t ep) { fEventPlaneVsEmcal = ep ; }
void SetForceBeamType(BeamType f) { fForceBeamType = f ; }
void SetHistoBins(Int_t nbins, Double_t min, Double_t max) { fNbins = nbins; fMinBinPt = min; fMaxBinPt = max ; }
void SetIsEmbedded(Bool_t i) { fIsEmbedded = i ; }
void SetIsPythia(Bool_t i) { fIsPythia = i ; }
void SetMCLabelShift(Int_t s) { fMCLabelShift = s ; }
void SetMinMCLabel(Int_t s) { fMinMCLabel = s ; }
void SetMinNTrack(Int_t min) { fMinNTrack = min ; }
void SetMinPtTrackInEmcal(Double_t min) { fMinPtTrackInEmcal = min ; }
void SetNCentBins(Int_t n) { fNcentBins = n ; }
void SetNeedEmcalGeom(Bool_t n) { fNeedEmcalGeom = n ; }
void SetOffTrigger(UInt_t t) { fOffTrigger = t ; }
void SetTrackEtaLimits(Double_t min, Double_t max, Int_t c=0);
void SetTrackPhiLimits(Double_t min, Double_t max, Int_t c=0);
void SetTrackPtCut(Double_t cut, Int_t c=0);
void SetTracksName(const char *n) { AddParticleContainer(n) ; }
void SetTrigClass(const char *n) { fTrigClass = n ; }
void SetTriggerTypeSel(TriggerType t) { fTriggerTypeSel = t ; }
void SetUseAliAnaUtils(Bool_t b, Bool_t bRejPilup = kTRUE) { fUseAliAnaUtils = b ; fRejectPileup = bRejPilup ; }
void SetVzRange(Double_t min, Double_t max) { fMinVz = min ; fMaxVz = max ; }
void SetUseSPDTrackletVsClusterBG(Bool_t b) { fTklVsClusSPDCut = b ; }
protected:
void SetRejectionReasonLabels(TAxis* axis);
Double_t* GenerateFixedBinArray(Int_t n, Double_t min, Double_t max) const;
void GenerateFixedBinArray(Int_t n, Double_t min, Double_t max, Double_t* array) const;
void SetMakeGeneralHistograms(Bool_t g) { fGeneralHistograms = g ; }
Bool_t AcceptCluster(AliVCluster *clus, Int_t c = 0) const;
Bool_t AcceptTrack(AliVParticle *track, Int_t c = 0) const;
void AddObjectToEvent(TObject *obj);
AliVParticle *GetAcceptParticleFromArray(Int_t p, Int_t c=0) const;
AliVCluster *GetAcceptClusterFromArray(Int_t cl, Int_t c=0) const;
TClonesArray *GetArrayFromEvent(const char *name, const char *clname=0);
BeamType GetBeamType();
TClonesArray *GetParticleArray(Int_t i=0) const;
TClonesArray *GetClusterArray(Int_t i=0) const;
Int_t GetNParticles(Int_t i=0) const;
Int_t GetNClusters(Int_t i=0) const;
AliEmcalTriggerPatchInfo *GetMainTriggerPatch(TriggerCategory triggersel = kTriggerLevel1Jet, Bool_t doOfflinSimple = kFALSE);
Bool_t HasTriggerType(TriggerType triggersel);
ULong_t GetTriggerList();
Bool_t PythiaInfoFromFile(const char* currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard);
void UserCreateOutputObjects();
void UserExec(Option_t *option);
Bool_t UserNotify();
virtual void ExecOnce();
virtual Bool_t FillGeneralHistograms();
virtual Bool_t IsEventSelected();
virtual Bool_t RetrieveEventObjects();
virtual Bool_t FillHistograms() { return kTRUE ; }
virtual Bool_t Run() { return kTRUE ; }
BeamType fForceBeamType;
Bool_t fGeneralHistograms;
Bool_t fInitialized;
Bool_t fCreateHisto;
TString fCaloCellsName;
TString fCaloTriggersName;
TString fCaloTriggerPatchInfoName;
Double_t fMinCent;
Double_t fMaxCent;
Double_t fMinVz;
Double_t fMaxVz;
Double_t fTrackPtCut;
Int_t fMinNTrack;
Bool_t fUseAliAnaUtils;
Bool_t fRejectPileup;
Bool_t fTklVsClusSPDCut;
AliAnalysisUtils *fAliAnalysisUtils;
UInt_t fOffTrigger;
TString fTrigClass;
TriggerType fTriggerTypeSel;
Int_t fNbins;
Double_t fMinBinPt;
Double_t fMaxBinPt;
Double_t fMinPtTrackInEmcal;
Double_t fEventPlaneVsEmcal;
Double_t fMinEventPlane;
Double_t fMaxEventPlane;
TString fCentEst;
Bool_t fIsEmbedded;
Bool_t fIsPythia;
Int_t fSelectPtHardBin;
Int_t fMinMCLabel;
Int_t fMCLabelShift;
Int_t fNcentBins;
Bool_t fNeedEmcalGeom;
Bool_t fIsEsd;
AliEMCALGeometry *fGeom;
TClonesArray *fTracks;
TClonesArray *fCaloClusters;
AliVCaloCells *fCaloCells;
AliVCaloTrigger *fCaloTriggers;
TClonesArray *fTriggerPatchInfo;
Double_t fCent;
Int_t fCentBin;
Double_t fEPV0;
Double_t fEPV0A;
Double_t fEPV0C;
Double_t fVertex[3];
Int_t fNVertCont;
BeamType fBeamType;
AliGenPythiaEventHeader *fPythiaHeader;
Double_t fPtHard;
Int_t fPtHardBin;
Int_t fNTrials;
Float_t fXsection;
TObjArray fParticleCollArray;
TObjArray fClusterCollArray;
ULong_t fTriggers;
TList *fOutput;
TH1 *fHistEventCount;
TH1 *fHistTrialsAfterSel;
TH1 *fHistEventsAfterSel;
TProfile *fHistXsectionAfterSel;
TH1 *fHistTrials;
TH1 *fHistEvents;
TProfile *fHistXsection;
TH1 *fHistPtHard;
TH1 *fHistCentrality;
TH1 *fHistZVertex;
TH1 *fHistEventPlane;
TH1 *fHistEventRejection;
private:
AliAnalysisTaskEmcal(const AliAnalysisTaskEmcal&);
AliAnalysisTaskEmcal &operator=(const AliAnalysisTaskEmcal&);
ClassDef(AliAnalysisTaskEmcal, 11)
};
#endif
AliAnalysisTaskEmcal.h:10 AliAnalysisTaskEmcal.h:11 AliAnalysisTaskEmcal.h:12 AliAnalysisTaskEmcal.h:13 AliAnalysisTaskEmcal.h:14 AliAnalysisTaskEmcal.h:15 AliAnalysisTaskEmcal.h:16 AliAnalysisTaskEmcal.h:17 AliAnalysisTaskEmcal.h:18 AliAnalysisTaskEmcal.h:19 AliAnalysisTaskEmcal.h:20 AliAnalysisTaskEmcal.h:21 AliAnalysisTaskEmcal.h:22 AliAnalysisTaskEmcal.h:23 AliAnalysisTaskEmcal.h:24 AliAnalysisTaskEmcal.h:25 AliAnalysisTaskEmcal.h:26 AliAnalysisTaskEmcal.h:27 AliAnalysisTaskEmcal.h:28 AliAnalysisTaskEmcal.h:29 AliAnalysisTaskEmcal.h:30 AliAnalysisTaskEmcal.h:31 AliAnalysisTaskEmcal.h:32 AliAnalysisTaskEmcal.h:33 AliAnalysisTaskEmcal.h:34 AliAnalysisTaskEmcal.h:35 AliAnalysisTaskEmcal.h:36 AliAnalysisTaskEmcal.h:37 AliAnalysisTaskEmcal.h:38 AliAnalysisTaskEmcal.h:39 AliAnalysisTaskEmcal.h:40 AliAnalysisTaskEmcal.h:41 AliAnalysisTaskEmcal.h:42 AliAnalysisTaskEmcal.h:43 AliAnalysisTaskEmcal.h:44 AliAnalysisTaskEmcal.h:45 AliAnalysisTaskEmcal.h:46 AliAnalysisTaskEmcal.h:47 AliAnalysisTaskEmcal.h:48 AliAnalysisTaskEmcal.h:49 AliAnalysisTaskEmcal.h:50 AliAnalysisTaskEmcal.h:51 AliAnalysisTaskEmcal.h:52 AliAnalysisTaskEmcal.h:53 AliAnalysisTaskEmcal.h:54 AliAnalysisTaskEmcal.h:55 AliAnalysisTaskEmcal.h:56 AliAnalysisTaskEmcal.h:57 AliAnalysisTaskEmcal.h:58 AliAnalysisTaskEmcal.h:59 AliAnalysisTaskEmcal.h:60 AliAnalysisTaskEmcal.h:61 AliAnalysisTaskEmcal.h:62 AliAnalysisTaskEmcal.h:63 AliAnalysisTaskEmcal.h:64 AliAnalysisTaskEmcal.h:65 AliAnalysisTaskEmcal.h:66 AliAnalysisTaskEmcal.h:67 AliAnalysisTaskEmcal.h:68 AliAnalysisTaskEmcal.h:69 AliAnalysisTaskEmcal.h:70 AliAnalysisTaskEmcal.h:71 AliAnalysisTaskEmcal.h:72 AliAnalysisTaskEmcal.h:73 AliAnalysisTaskEmcal.h:74 AliAnalysisTaskEmcal.h:75 AliAnalysisTaskEmcal.h:76 AliAnalysisTaskEmcal.h:77 AliAnalysisTaskEmcal.h:78 AliAnalysisTaskEmcal.h:79 AliAnalysisTaskEmcal.h:80 AliAnalysisTaskEmcal.h:81 AliAnalysisTaskEmcal.h:82 AliAnalysisTaskEmcal.h:83 AliAnalysisTaskEmcal.h:84 AliAnalysisTaskEmcal.h:85 AliAnalysisTaskEmcal.h:86 AliAnalysisTaskEmcal.h:87 AliAnalysisTaskEmcal.h:88 AliAnalysisTaskEmcal.h:89 AliAnalysisTaskEmcal.h:90 AliAnalysisTaskEmcal.h:91 AliAnalysisTaskEmcal.h:92 AliAnalysisTaskEmcal.h:93 AliAnalysisTaskEmcal.h:94 AliAnalysisTaskEmcal.h:95 AliAnalysisTaskEmcal.h:96 AliAnalysisTaskEmcal.h:97 AliAnalysisTaskEmcal.h:98 AliAnalysisTaskEmcal.h:99 AliAnalysisTaskEmcal.h:100 AliAnalysisTaskEmcal.h:101 AliAnalysisTaskEmcal.h:102 AliAnalysisTaskEmcal.h:103 AliAnalysisTaskEmcal.h:104 AliAnalysisTaskEmcal.h:105 AliAnalysisTaskEmcal.h:106 AliAnalysisTaskEmcal.h:107 AliAnalysisTaskEmcal.h:108 AliAnalysisTaskEmcal.h:109 AliAnalysisTaskEmcal.h:110 AliAnalysisTaskEmcal.h:111 AliAnalysisTaskEmcal.h:112 AliAnalysisTaskEmcal.h:113 AliAnalysisTaskEmcal.h:114 AliAnalysisTaskEmcal.h:115 AliAnalysisTaskEmcal.h:116 AliAnalysisTaskEmcal.h:117 AliAnalysisTaskEmcal.h:118 AliAnalysisTaskEmcal.h:119 AliAnalysisTaskEmcal.h:120 AliAnalysisTaskEmcal.h:121 AliAnalysisTaskEmcal.h:122 AliAnalysisTaskEmcal.h:123 AliAnalysisTaskEmcal.h:124 AliAnalysisTaskEmcal.h:125 AliAnalysisTaskEmcal.h:126 AliAnalysisTaskEmcal.h:127 AliAnalysisTaskEmcal.h:128 AliAnalysisTaskEmcal.h:129 AliAnalysisTaskEmcal.h:130 AliAnalysisTaskEmcal.h:131 AliAnalysisTaskEmcal.h:132 AliAnalysisTaskEmcal.h:133 AliAnalysisTaskEmcal.h:134 AliAnalysisTaskEmcal.h:135 AliAnalysisTaskEmcal.h:136 AliAnalysisTaskEmcal.h:137 AliAnalysisTaskEmcal.h:138 AliAnalysisTaskEmcal.h:139 AliAnalysisTaskEmcal.h:140 AliAnalysisTaskEmcal.h:141 AliAnalysisTaskEmcal.h:142 AliAnalysisTaskEmcal.h:143 AliAnalysisTaskEmcal.h:144 AliAnalysisTaskEmcal.h:145 AliAnalysisTaskEmcal.h:146 AliAnalysisTaskEmcal.h:147 AliAnalysisTaskEmcal.h:148 AliAnalysisTaskEmcal.h:149 AliAnalysisTaskEmcal.h:150 AliAnalysisTaskEmcal.h:151 AliAnalysisTaskEmcal.h:152 AliAnalysisTaskEmcal.h:153 AliAnalysisTaskEmcal.h:154 AliAnalysisTaskEmcal.h:155 AliAnalysisTaskEmcal.h:156 AliAnalysisTaskEmcal.h:157 AliAnalysisTaskEmcal.h:158 AliAnalysisTaskEmcal.h:159 AliAnalysisTaskEmcal.h:160 AliAnalysisTaskEmcal.h:161 AliAnalysisTaskEmcal.h:162 AliAnalysisTaskEmcal.h:163 AliAnalysisTaskEmcal.h:164 AliAnalysisTaskEmcal.h:165 AliAnalysisTaskEmcal.h:166 AliAnalysisTaskEmcal.h:167 AliAnalysisTaskEmcal.h:168 AliAnalysisTaskEmcal.h:169 AliAnalysisTaskEmcal.h:170 AliAnalysisTaskEmcal.h:171 AliAnalysisTaskEmcal.h:172 AliAnalysisTaskEmcal.h:173 AliAnalysisTaskEmcal.h:174 AliAnalysisTaskEmcal.h:175 AliAnalysisTaskEmcal.h:176 AliAnalysisTaskEmcal.h:177 AliAnalysisTaskEmcal.h:178 AliAnalysisTaskEmcal.h:179 AliAnalysisTaskEmcal.h:180 AliAnalysisTaskEmcal.h:181 AliAnalysisTaskEmcal.h:182 AliAnalysisTaskEmcal.h:183 AliAnalysisTaskEmcal.h:184 AliAnalysisTaskEmcal.h:185 AliAnalysisTaskEmcal.h:186 AliAnalysisTaskEmcal.h:187 AliAnalysisTaskEmcal.h:188 AliAnalysisTaskEmcal.h:189 AliAnalysisTaskEmcal.h:190 AliAnalysisTaskEmcal.h:191 AliAnalysisTaskEmcal.h:192 AliAnalysisTaskEmcal.h:193 AliAnalysisTaskEmcal.h:194 AliAnalysisTaskEmcal.h:195 AliAnalysisTaskEmcal.h:196 AliAnalysisTaskEmcal.h:197 AliAnalysisTaskEmcal.h:198 AliAnalysisTaskEmcal.h:199 AliAnalysisTaskEmcal.h:200 AliAnalysisTaskEmcal.h:201 AliAnalysisTaskEmcal.h:202 AliAnalysisTaskEmcal.h:203 AliAnalysisTaskEmcal.h:204 AliAnalysisTaskEmcal.h:205 AliAnalysisTaskEmcal.h:206 AliAnalysisTaskEmcal.h:207 AliAnalysisTaskEmcal.h:208 AliAnalysisTaskEmcal.h:209