]>
Commit | Line | Data |
---|---|---|
1059f583 | 1 | #ifndef ALIDNDPTTRACKDUMPTASK_H |
2 | #define ALIDNDPTTRACKDUMPTASK_H | |
3 | ||
4 | //------------------------------------------------------------------------------ | |
5 | // Task to dump track information | |
6 | // TPC constrained and TPC+ITS combined | |
7 | // for outliers analysis. | |
8 | // | |
9 | // Author: J.Otwinowski 19/06/2011 | |
10 | //------------------------------------------------------------------------------ | |
11 | ||
12 | class AliESDEvent; | |
13 | class AliMCEvent; | |
14 | class AliFilteredTreeEventCuts; | |
15 | class AliFilteredTreeAcceptanceCuts; | |
16 | class AliESDtrackCuts; | |
17 | class AliMagFMaps; | |
18 | class AliESDEvent; | |
19 | class AliMCEvent; | |
20 | class AliKFParticle; | |
21 | class AliESDv0; | |
08c5e656 | 22 | class AliExternalTrackParam; |
23 | class AliESDtrack; | |
2e16763c | 24 | class AliESDfriendTrack; |
08c5e656 | 25 | class AliESDVertex; |
26 | class AliStack; | |
1059f583 | 27 | class TList; |
28 | class TObjArray; | |
29 | class TTree; | |
30 | class TTreeSRedirector; | |
08c5e656 | 31 | class TParticle; |
73442c55 | 32 | class TH3D; |
1059f583 | 33 | |
34 | #include "AliTriggerAnalysis.h" | |
35 | #include "AliAnalysisTaskSE.h" | |
36 | ||
37 | class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE { | |
38 | public: | |
39 | ||
40 | enum EAnalysisMode { kInvalidAnalysisMode=-1, | |
41 | kTPCITSAnalysisMode=0, | |
42 | kTPCAnalysisMode=1 }; | |
43 | ||
44 | AliAnalysisTaskFilteredTree(const char *name = "AliAnalysisTaskFilteredTree"); | |
45 | virtual ~AliAnalysisTaskFilteredTree(); | |
46 | ||
47 | virtual void UserCreateOutputObjects(); | |
48 | virtual void UserExec(Option_t *option); | |
49 | virtual void Terminate(Option_t *); | |
50 | virtual Bool_t Notify(); | |
51 | virtual void FinishTaskOutput(); | |
52 | void SetUseMCInfo(Bool_t info) { fUseMCInfo = info; } | |
b4c82bc9 | 53 | Bool_t IsUseMCInfo() const { return (fMC)?kTRUE:kFALSE; } |
1059f583 | 54 | void SetUseESDfriends(Bool_t friends) { fUseESDfriends = friends; } |
55 | Bool_t IsUseESDfriends() const { return fUseESDfriends; } | |
56 | ||
57 | // Process events | |
58 | void ProcessAll(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
59 | void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
60 | void ProcessV0(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
61 | void ProcessdEdx(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
62 | void ProcessLaser(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
63 | void ProcessMCEff(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
234cae2f | 64 | void ProcessCosmics(AliESDEvent *const esdEvent=0, AliESDfriend* esdFriend=0); |
1059f583 | 65 | |
caef4d04 | 66 | void ProcessITSTPCmatchOut(AliESDEvent *const esdEvent=0, AliESDfriend *const esdFriend=0); |
67 | ||
1059f583 | 68 | void SetEventCuts(AliFilteredTreeEventCuts* const cuts) { fFilteredTreeEventCuts = cuts; } |
69 | void SetAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts) { fFilteredTreeAcceptanceCuts = cuts; } | |
70 | void SetRecAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts) { fFilteredTreeRecAcceptanceCuts = cuts; } | |
71 | void SetTrackCuts(AliESDtrackCuts* const cuts) { fEsdTrackCuts = cuts; } | |
72 | void SetTrigger(const AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; } | |
34e8fe1d | 73 | void SetAnalysisMode(EAnalysisMode mode) { fAnalysisMode = mode; } |
1059f583 | 74 | |
75 | AliFilteredTreeEventCuts* GetEventCuts() const { return fFilteredTreeEventCuts; } | |
76 | AliFilteredTreeAcceptanceCuts* GetAcceptanceCuts() const { return fFilteredTreeAcceptanceCuts; } | |
77 | AliFilteredTreeAcceptanceCuts* GetRecAcceptanceCuts() const { return fFilteredTreeRecAcceptanceCuts; } | |
78 | AliESDtrackCuts* GetTrackCuts() const { return fEsdTrackCuts; } | |
79 | AliTriggerAnalysis::Trigger GetTrigger() const { return fTrigger; } | |
80 | EAnalysisMode GetAnalysisMode() const { return fAnalysisMode; } | |
81 | ||
82 | TString GetCentralityEstimator() const {return fCentralityEstimator; } | |
83 | void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; } | |
84 | ||
34e8fe1d | 85 | Bool_t IsFromConversion(Int_t label, AliStack *const stack); |
86 | Bool_t IsFromMaterial(Int_t label, AliStack *const stack); | |
87 | Bool_t IsFromStrangeness(Int_t label, AliStack *const stack); | |
1059f583 | 88 | TParticle *GetMother(TParticle *const particle, AliStack *const stack); |
89 | ||
90 | Bool_t ConstrainTPCInner(AliExternalTrackParam *const tpcInnerC, const AliESDVertex* vtx, Double_t b[3]); | |
91 | Bool_t ConstrainTrackInner(AliExternalTrackParam *const trackInnerC, const AliESDVertex* vtx, Double_t mass, Double_t b[3]); | |
92 | ||
93 | // v0s selection | |
94 | Int_t GetKFParticle(AliESDv0 *const v0, AliESDEvent * const event, AliKFParticle & kfparticle); | |
95 | Bool_t IsV0Downscaled(AliESDv0 *const v0); | |
96 | Bool_t IsHighDeDxParticle(AliESDtrack * const track); | |
97 | ||
98 | void SetLowPtTrackDownscaligF(Double_t fact) { fLowPtTrackDownscaligF = fact; } | |
99 | void SetLowPtV0DownscaligF(Double_t fact) { fLowPtV0DownscaligF = fact; } | |
100 | ||
101 | void SetProcessCosmics(Bool_t flag) { fProcessCosmics = flag; } | |
102 | Bool_t GetProcessCosmics() { return fProcessCosmics; } | |
caef4d04 | 103 | // |
104 | void SetProcessProcessITSTPCmatchOut(Bool_t flag) { fProcessITSTPCmatchOut = flag; } | |
105 | Bool_t GetProcessProcessITSTPCmatchOut() { return fProcessITSTPCmatchOut; } | |
1059f583 | 106 | |
caef4d04 | 107 | |
1059f583 | 108 | void SetProcessAll(Bool_t proc) { fProcessAll = proc; } |
109 | static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AliFilteredTreeEventCuts *const evtCuts, AliFilteredTreeAcceptanceCuts *const accCuts); | |
110 | ||
30530964 | 111 | void SetFillTrees(Bool_t filltree) { fFillTree = filltree ;} |
112 | Bool_t GetFillTrees() { return fFillTree ;} | |
113 | ||
34e8fe1d | 114 | void FillHistograms(AliESDtrack* const ptrack, AliExternalTrackParam* const ptpcInnerC, Double_t centralityF, Double_t chi2TPCInnerC); |
30530964 | 115 | |
1059f583 | 116 | private: |
117 | ||
118 | AliESDEvent *fESD; //! ESD event | |
119 | AliMCEvent *fMC; //! MC event | |
120 | AliESDfriend *fESDfriend; //! ESDfriend event | |
121 | TList* fOutput; //! list send on output slot 0 | |
122 | TIterator *fPitList; //! iterator over the output objetcs | |
123 | ||
124 | Bool_t fUseMCInfo; // use MC information | |
30530964 | 125 | Bool_t fUseESDfriends; // use esd friends |
126 | Bool_t fReducePileUp; // downscale the information for the pile-up TPC tracks | |
127 | Bool_t fFillTree; // do not fill trees | |
1059f583 | 128 | |
129 | AliFilteredTreeEventCuts *fFilteredTreeEventCuts; // event cuts | |
130 | AliFilteredTreeAcceptanceCuts *fFilteredTreeAcceptanceCuts; // acceptance cuts | |
131 | AliFilteredTreeAcceptanceCuts *fFilteredTreeRecAcceptanceCuts; // additional recontruction acceptance cuts (not used for MC truth) | |
132 | AliESDtrackCuts *fEsdTrackCuts; // esd track cuts | |
133 | AliTriggerAnalysis::Trigger fTrigger; // trigger settings | |
134 | EAnalysisMode fAnalysisMode; // analysis mode TPC only, TPC + ITS | |
135 | ||
136 | TTreeSRedirector* fTreeSRedirector; //! temp tree to dump output | |
137 | ||
138 | TString fCentralityEstimator; // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC" | |
139 | ||
140 | Double_t fLowPtTrackDownscaligF; // low pT track downscaling factor | |
141 | Double_t fLowPtV0DownscaligF; // low pT V0 downscaling factor | |
142 | Double_t fProcessAll; // Calculate all track properties including MC | |
143 | ||
144 | Bool_t fProcessCosmics; // look for cosmic pairs from random trigger | |
caef4d04 | 145 | Bool_t fProcessITSTPCmatchOut; // swittch to process ITS/TPC standalone tracks |
146 | ||
1059f583 | 147 | TTree* fHighPtTree; //! list send on output slot 0 |
148 | TTree* fV0Tree; //! list send on output slot 0 | |
149 | TTree* fdEdxTree; //! list send on output slot 0 | |
150 | TTree* fLaserTree; //! list send on output slot 0 | |
151 | TTree* fMCEffTree; //! list send on output slot 0 | |
152 | TTree* fCosmicPairsTree; //! list send on output slot 0 | |
153 | ||
30530964 | 154 | TH3D* fPtResPhiPtTPC; //! sigma(pt)/pt vs Phi vs Pt for prim. TPC tracks |
155 | TH3D* fPtResPhiPtTPCc; //! sigma(pt)/pt vs Phi vs Pt for prim. TPC contrained to vertex tracks | |
156 | TH3D* fPtResPhiPtTPCITS; //! sigma(pt)/pt vs Phi vs Pt for prim. TPC+ITS tracks | |
157 | ||
158 | TH3D* fPtResEtaPtTPC; //! sigma(pt)/pt vs Eta vs Pt for prim. TPC tracks | |
159 | TH3D* fPtResEtaPtTPCc; //! sigma(pt)/pt vs Eta vs Pt for prim. TPC contrained to vertex tracks | |
160 | TH3D* fPtResEtaPtTPCITS; //! sigma(pt)/pt vs Eta vs Pt for prim. TPC+ITS tracks | |
161 | ||
162 | TH3D* fPtResCentPtTPC; //! sigma(pt)/pt vs Cent vs Pt for prim. TPC tracks | |
163 | TH3D* fPtResCentPtTPCc; //! sigma(pt)/pt vs Cent vs Pt for prim. TPC contrained to vertex tracks | |
164 | TH3D* fPtResCentPtTPCITS; //! sigma(pt)/pt vs Cent vs Pt for prim. TPC+ITS tracks | |
165 | ||
1059f583 | 166 | AliAnalysisTaskFilteredTree(const AliAnalysisTaskFilteredTree&); // not implemented |
167 | AliAnalysisTaskFilteredTree& operator=(const AliAnalysisTaskFilteredTree&); // not implemented | |
168 | ||
2e16763c | 169 | AliESDfriendTrack* fDummyFriendTrack; //! needed for proper init of the output tree |
170 | AliESDtrack* fDummyTrack; //! dummy track for tree init | |
171 | ||
1059f583 | 172 | ClassDef(AliAnalysisTaskFilteredTree, 1); // example of analysis |
173 | }; | |
174 | ||
175 | #endif |