]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/IdentifiedHighPt/train/AliAnalysisTaskHighPtDeDx.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / IdentifiedHighPt / train / AliAnalysisTaskHighPtDeDx.h
CommitLineData
d803655a 1#ifndef ALIANALYSISTASKHIGHPTDEDX_H
2#define ALIANALYSISTASKHIGHPTDEDX_H
3
4// ROOT includes
5#include <TList.h>
6#include <TH1.h>
7#include <TTreeStream.h>
8#include <TRandom.h>
9#include <TObject.h>
10
11// AliRoot includes
12#include <AliAnalysisTaskSE.h>
13#include <AliESDEvent.h>
14#include <AliAODEvent.h>
15#include <AliMCEvent.h>
16#include <AliAnalysisFilter.h>
17#include <AliStack.h>
18#include <AliGenEventHeader.h>
19#include <AliVHeader.h>
20#include <AliAODMCParticle.h>
21#include <AliESDtrackCuts.h>
22#include "DebugClassesMultESA2013.h"
23
24
25
26class AliAnalysisTaskHighPtDeDx : public AliAnalysisTaskSE {
27 public:
28 enum AnalysisMode { kInvalid = -1, kGlobalTrk = 0x1, kTPCTrk = 0x2 };
29 AliAnalysisTaskHighPtDeDx();
30 AliAnalysisTaskHighPtDeDx(const char *name);
31
32 virtual ~AliAnalysisTaskHighPtDeDx();
33
34 virtual void UserCreateOutputObjects();
35 virtual void UserExec(Option_t *option);
36
37 Bool_t GetAnalysisMC() { return fAnalysisMC; }
38 Double_t GetVtxCut() { return fVtxCut; }
39 Double_t GetEtaCut() { return fEtaCut; }
e069b94c 40 Double_t GetEtaCutStack() { return fEtaCutStack; }
d803655a 41 Double_t GetMinPt() { return fMinPt; }
42 Double_t GetMinPtV0() { return fMinPtV0; }
43 Int_t GetTreeOption() { return fTreeOption; }
44
45 virtual void SetTrigger1(UInt_t ktriggerInt1) {ftrigBit1 = ktriggerInt1;}
46 virtual void SetTrigger2(UInt_t ktriggerInt2) {ftrigBit2 = ktriggerInt2;}
47 virtual void SetTrackFilter(AliAnalysisFilter* trackF) {fTrackFilter = trackF;}
48 virtual void SetTrackFilterGolden(AliAnalysisFilter* trackF) {fTrackFilterGolden = trackF;}
49 virtual void SetTrackFilterTPC(AliAnalysisFilter* trackF) {fTrackFilterTPC = trackF;}
50 virtual void SetProduceVZEROBranch(Bool_t prodvzerob) {fVZEROBranch = prodvzerob;}
51 virtual void SetProduceTPCBranch(Bool_t prodtpcb) {fTPCBranch = prodtpcb;}
52 virtual void SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
53 virtual void SetAnalysisMC(Bool_t isMC) {fAnalysisMC = isMC;}
54 virtual void SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
55 virtual void SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
e069b94c 56 virtual void SetEtaCutStack(Double_t etaCutStack){fEtaCutStack = etaCutStack;}
d803655a 57 virtual void SetMinPt(Double_t value) {fMinPt = value;}
58 virtual void SetMinPtV0(Double_t value) {fMinPtV0 = value;}
59 virtual void SetMinCent(Float_t minvalc) {fMinCent = minvalc;}
60 virtual void SetMaxCent(Float_t maxvalc) {fMaxCent = maxvalc;}
61 virtual void SetLowPtFraction(Double_t value) {fLowPtFraction = value;}
62 virtual void SetMassCut(Double_t massCut){fMassCut = massCut;}
63 virtual void SetTreeOption(Int_t value) {fTreeOption = value;}
64 virtual void SetRequireRecV0(Bool_t value) {fRequireRecV0 = value;}
65 virtual void SetStoreMcIn(Bool_t value) {fStoreMcIn = value;}
66 virtual void SetAnalysisPbPb(Bool_t isanaPbPb) {fAnalysisPbPb = isanaPbPb;}
67
68 private:
69 virtual Float_t GetVertex(const AliVEvent* event) const;
70 virtual void AnalyzeESD(AliESDEvent* esd);
71 virtual void AnalyzeAOD(AliAODEvent* aod);
72 virtual void ProduceArrayTrksESD(AliESDEvent* event, AnalysisMode anamode );
73 virtual void ProduceArrayV0ESD(AliESDEvent* event, AnalysisMode anamode );
74 virtual void ProduceArrayTrksAOD(AliAODEvent* event, AnalysisMode anamode );
75 virtual void ProduceArrayV0AOD(AliAODEvent* event, AnalysisMode anamode );
76 Short_t GetPidCode(Int_t pdgCode) const;
77 Float_t GetSpherocity(AliESDEvent* event, AliAnalysisFilter* cuts, Float_t etacut, Float_t ptcut, Bool_t useTPCtrack);
78 Float_t GetSphericity(AliESDEvent* event, AliAnalysisFilter* cuts, Float_t etacut, Float_t ptcut, Bool_t useTPCtrack);
79 Float_t GetSpherocityTrue(AliStack *Stack, Float_t etacut, Float_t ptcut);
80 Float_t GetSphericityTrue(AliStack *Stack, Float_t etacut, Float_t ptcut);
81
82 void ProcessMCTruthESD();
83 void ProcessMCTruthAOD();
84 void Sort(TClonesArray* array, Bool_t isMC);
85 Short_t GetPythiaEventProcessType(Int_t pythiaType);
86 Short_t GetDPMjetEventProcessType(Int_t dpmJetType);
87 ULong64_t GetEventIdAsLong(AliVHeader* header) const;
88
89 TParticle* FindPrimaryMother(AliStack* stack, Int_t label);
90 Int_t FindPrimaryMotherLabel(AliStack* stack, Int_t label);
91
92 AliAODMCParticle* FindPrimaryMotherAOD(AliAODMCParticle* startParticle);
93
94 TParticle* FindPrimaryMotherV0(AliStack* stack, Int_t label);
95 Int_t FindPrimaryMotherLabelV0(AliStack* stack, Int_t label, Int_t& nSteps);
96
97 AliAODMCParticle* FindPrimaryMotherAODV0(AliAODMCParticle* startParticle, Int_t& nSteps);
98
99
100
101 static const Double_t fgkClight; // Speed of light (cm/ps)
102
103 AliESDEvent* fESD; //! ESD object
104 AliAODEvent* fAOD; //! AOD object
105 AliMCEvent* fMC; //! MC object
106 AliStack* fMCStack; //! MC ESD stack
107 TClonesArray* fMCArray; //! MC array for AOD
108 AliAnalysisFilter* fTrackFilter; // Track Filter, old cuts 2010
109 AliAnalysisFilter* fTrackFilterGolden; // Track Filter, set 2010 with golden cuts
110 AliAnalysisFilter* fTrackFilterTPC; // track filter for TPC only tracks
111 TString fAnalysisType; // "ESD" or "AOD"
112 Bool_t fAnalysisMC; // Real(kFALSE) or MC(kTRUE) flag
113 Bool_t fAnalysisPbPb; // true you want to analyze PbPb data, false for pp
114 Bool_t fVZEROBranch; //true if you want to store VZERO cells information
115 Bool_t fTPCBranch; //tru if you want to produce the TPC branch
116 TRandom* fRandom; //! random number generator
117 DeDxEvent* fEvent; //! event pointer
118 TClonesArray* fTrackArrayGlobalPar; //! track array pointer, global tracks
119 TClonesArray* fTrackArrayTPCPar; //! track array pointer, tpc track parameters
120 TClonesArray* fV0ArrayGlobalPar; //! V0 array pointer, global tracks
121 TClonesArray* fV0ArrayTPCPar; //! V0 array pointer, tpc tracks
122 TClonesArray* fTrackArrayMC; //! MC track array pointer
123 TClonesArray* fVZEROArray; //! array of the v0 cells.
124
125
126 //
127 // Cuts and options
128 //
129 UInt_t ftrigBit1;
130 UInt_t ftrigBit2;
131 Double_t fVtxCut; // Vtx cut on z position in cm
132 Double_t fEtaCut; // Eta cut used to select particles
e069b94c 133 Double_t fEtaCutStack; // Eta cut used to select particles - reduce saved stack size
d803655a 134 Double_t fMinPt; // Min pt - for histogram limits
e069b94c 135 Double_t fMinPtV0; // Min pt - for histogram limits - V0s / strangeness part
d803655a 136 Double_t fLowPtFraction; // Fraction of tracks below min pt to keep
137 Double_t fMassCut; // Reject all v0 with all dmass > masscut!
138 Int_t fTreeOption; // 0: no tree, >0: enable debug tree
139 Float_t fMinCent; //minimum centrality
140 Float_t fMaxCent; //maximum centrality
141 Bool_t fRequireRecV0; // Require a v0 before updating tree
142 // For a spectra analysis we will need to
143 // keep track also of the empty events
144 Bool_t fStoreMcIn; // Store MC input tracks
145 //
146 // Help variables
147 //
148 Short_t fMcProcessType; // -1=invalid, 0=data, 1=ND, 2=SD, 3=DD
149 Short_t fTriggeredEventMB; // 1 = triggered, 0 = not trigged (MC only)
150 Short_t fVtxStatus; // -1 = no vtx, 0 = outside cut, 1 = inside cut
151 Float_t fZvtx; // z vertex
152 Float_t fZvtxMC; // z vertex MC (truth)
153 Int_t fRun; // run no
154 ULong64_t fEventId; // unique event id
155
156 //
157 // Output objects
158 //
159 TList* fListOfObjects; //! Output list of objects
160 TH1I* fEvents; //! No of accepted events
161 TH1I* fVtx; //! Event vertex info
162 TH1I* fVtxMC; //! Event vertex info for ALL MC events
163 TH1F* fVtxBeforeCuts; //! Vertex z dist before cuts
164 TH1F* fVtxAfterCuts; //! Vertex z dist after cuts
165 TH1F* fn1;
166 TH1F* fn2;
167 TH1F* fcent;
168 TTree* fTree; //! Debug tree
169
170 ClassDef(AliAnalysisTaskHighPtDeDx, 1); //Analysis task for high pt analysis
171};
172
173#endif