1 #ifndef ALIANALYSISTASKHIGHPTDEDX_H
2 #define ALIANALYSISTASKHIGHPTDEDX_H
7 #include <TTreeStream.h>
12 #include <AliAnalysisTaskSE.h>
13 #include <AliESDEvent.h>
14 #include <AliAODEvent.h>
15 #include <AliMCEvent.h>
16 #include <AliAnalysisFilter.h>
18 #include <AliGenEventHeader.h>
19 #include <AliVHeader.h>
20 #include <AliAODMCParticle.h>
22 #include "DebugClasses.C"
26 class AliAnalysisTaskHighPtDeDx : public AliAnalysisTaskSE {
28 enum AnalysisMode { kInvalid = -1, kGlobalTrk = 0x1, kTPCTrk = 0x2 };
29 AliAnalysisTaskHighPtDeDx();
30 AliAnalysisTaskHighPtDeDx(const char *name);
32 virtual ~AliAnalysisTaskHighPtDeDx();
34 virtual void UserCreateOutputObjects();
35 virtual void UserExec(Option_t *option);
37 Bool_t GetAnalysisMC() { return fAnalysisMC; }
38 Double_t GetVtxCut() { return fVtxCut; }
39 Double_t GetEtaCut() { return fEtaCut; }
40 Double_t GetMinPt() { return fMinPt; }
41 Int_t GetTreeOption() { return fTreeOption; }
43 virtual void SetTrigger1(UInt_t ktriggerInt1) {ftrigBit1 = ktriggerInt1;}
44 virtual void SetTrigger2(UInt_t ktriggerInt2) {ftrigBit2 = ktriggerInt2;}
45 virtual void SetTrackFilter(AliAnalysisFilter* trackF) {fTrackFilter = trackF;}
46 virtual void SetTrackFilterGolden(AliAnalysisFilter* trackF) {fTrackFilterGolden = trackF;}
47 virtual void SetTrackFilterTPC(AliAnalysisFilter* trackF) {fTrackFilterTPC = trackF;}
48 virtual void SetProduceTPCBranch(Bool_t prodtpcb) {fTPCBranch = prodtpcb;}
49 virtual void SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
50 virtual void SetAnalysisMC(Bool_t isMC) {fAnalysisMC = isMC;}
51 virtual void SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
52 virtual void SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
53 virtual void SetMinPt(Double_t value) {fMinPt = value;}
54 virtual void SetMinCent(Float_t minvalc) {fMinCent = minvalc;}
55 virtual void SetMaxCent(Float_t maxvalc) {fMaxCent = maxvalc;}
56 virtual void SetLowPtFraction(Double_t value) {fLowPtFraction = value;}
57 virtual void SetTreeOption(Int_t value) {fTreeOption = value;}
58 virtual void SetAnalysisPbPb(Bool_t isanaPbPb) {fAnalysisPbPb = isanaPbPb;}
61 virtual Float_t GetVertex(const AliVEvent* event) const;
62 virtual void AnalyzeESD(AliESDEvent* esd);
63 virtual void AnalyzeAOD(AliAODEvent* aod);
64 virtual void ProduceArrayTrksESD(AliESDEvent* event, AnalysisMode anamode );
65 virtual void ProduceArrayTrksAOD(AliAODEvent* event, AnalysisMode anamode );
66 Short_t GetPidCode(Int_t pdgCode) const;
67 void ProcessMCTruthESD();
68 void ProcessMCTruthAOD();
69 void Sort(TClonesArray* array, Bool_t isMC);
70 Short_t GetPythiaEventProcessType(Int_t pythiaType);
71 Short_t GetDPMjetEventProcessType(Int_t dpmJetType);
72 ULong64_t GetEventIdAsLong(AliVHeader* header) const;
74 TParticle* FindPrimaryMother(AliStack* stack, Int_t label);
75 Int_t FindPrimaryMotherLabel(AliStack* stack, Int_t label);
77 AliAODMCParticle* FindPrimaryMotherAOD(AliAODMCParticle* startParticle);
79 static const Double_t fgkClight; // Speed of light (cm/ps)
81 AliESDEvent* fESD; //! ESD object
82 AliAODEvent* fAOD; //! AOD object
83 AliMCEvent* fMC; //! MC object
84 AliStack* fMCStack; //! MC ESD stack
85 TClonesArray* fMCArray; //! MC array for AOD
86 AliAnalysisFilter* fTrackFilter; // Track Filter, old cuts 2010
87 AliAnalysisFilter* fTrackFilterGolden; // Track Filter, set 2010 with golden cuts
88 AliAnalysisFilter* fTrackFilterTPC; // track filter for TPC only tracks
89 TString fAnalysisType; // "ESD" or "AOD"
90 Bool_t fAnalysisMC; // Real(kFALSE) or MC(kTRUE) flag
91 Bool_t fAnalysisPbPb; // true you want to analyze PbPb data, false for pp
92 Bool_t fTPCBranch; //tru if you want to produce the TPC branch
93 TRandom* fRandom; //! random number generator
94 DeDxEvent* fEvent; //! event pointer
95 TClonesArray* fTrackArrayGlobalPar; //! track array pointer, global tracks
96 TClonesArray* fTrackArrayTPCPar; //! track array pointer, tpc track parameters
97 TClonesArray* fTrackArrayMC; //! MC track array pointer
98 TClonesArray* fVZEROArray; //! array of the v0 cells.
106 Double_t fVtxCut; // Vtx cut on z position in cm
107 Double_t fEtaCut; // Eta cut used to select particles
108 Double_t fMinPt; // Min pt - for histogram limits
109 Double_t fLowPtFraction; // Fraction of tracks below min pt to keep
110 Int_t fTreeOption; // 0: no tree, >0: enable debug tree
111 Float_t fMinCent; //minimum centrality
112 Float_t fMaxCent; //maximum centrality
116 Short_t fMcProcessType; // -1=invalid, 0=data, 1=ND, 2=SD, 3=DD
117 Short_t fTriggeredEventMB; // 1 = triggered, 0 = not trigged (MC only)
118 Short_t fVtxStatus; // -1 = no vtx, 0 = outside cut, 1 = inside cut
119 Float_t fZvtx; // z vertex
120 Float_t fZvtxMC; // z vertex MC (truth)
121 Int_t fRun; // run no
122 ULong64_t fEventId; // unique event id
127 TList* fListOfObjects; //! Output list of objects
128 TH1I* fEvents; //! No of accepted events
129 TH1I* fVtx; //! Event vertex info
130 TH1I* fVtxMC; //! Event vertex info for ALL MC events
131 TH1F* fVtxBeforeCuts; //! Vertex z dist before cuts
132 TH1F* fVtxAfterCuts; //! Vertex z dist after cuts
136 TTree* fTree; //! Debug tree
138 ClassDef(AliAnalysisTaskHighPtDeDx, 1); //Analysis task for high pt analysis