]>
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; | |
24 | class AliESDVertex; | |
25 | class AliStack; | |
1059f583 | 26 | class TList; |
27 | class TObjArray; | |
28 | class TTree; | |
29 | class TTreeSRedirector; | |
08c5e656 | 30 | class TParticle; |
1059f583 | 31 | |
32 | #include "AliTriggerAnalysis.h" | |
33 | #include "AliAnalysisTaskSE.h" | |
34 | ||
35 | class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE { | |
36 | public: | |
37 | ||
38 | enum EAnalysisMode { kInvalidAnalysisMode=-1, | |
39 | kTPCITSAnalysisMode=0, | |
40 | kTPCAnalysisMode=1 }; | |
41 | ||
42 | AliAnalysisTaskFilteredTree(const char *name = "AliAnalysisTaskFilteredTree"); | |
43 | virtual ~AliAnalysisTaskFilteredTree(); | |
44 | ||
45 | virtual void UserCreateOutputObjects(); | |
46 | virtual void UserExec(Option_t *option); | |
47 | virtual void Terminate(Option_t *); | |
48 | virtual Bool_t Notify(); | |
49 | virtual void FinishTaskOutput(); | |
50 | void SetUseMCInfo(Bool_t info) { fUseMCInfo = info; } | |
51 | Bool_t IsUseMCInfo() const { return fUseMCInfo; } | |
52 | void SetUseESDfriends(Bool_t friends) { fUseESDfriends = friends; } | |
53 | Bool_t IsUseESDfriends() const { return fUseESDfriends; } | |
54 | ||
55 | // Process events | |
56 | void ProcessAll(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
57 | void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
58 | void ProcessV0(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
59 | void ProcessdEdx(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
60 | void ProcessLaser(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
61 | void ProcessMCEff(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0, AliESDfriend *const esdFriend=0); | |
62 | void ProcessCosmics(AliESDEvent *const esdEvent=0); | |
63 | ||
64 | void SetEventCuts(AliFilteredTreeEventCuts* const cuts) { fFilteredTreeEventCuts = cuts; } | |
65 | void SetAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts) { fFilteredTreeAcceptanceCuts = cuts; } | |
66 | void SetRecAcceptanceCuts(AliFilteredTreeAcceptanceCuts* const cuts) { fFilteredTreeRecAcceptanceCuts = cuts; } | |
67 | void SetTrackCuts(AliESDtrackCuts* const cuts) { fEsdTrackCuts = cuts; } | |
68 | void SetTrigger(const AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; } | |
69 | void SetAnalysisMode(const EAnalysisMode mode) { fAnalysisMode = mode; } | |
70 | ||
71 | AliFilteredTreeEventCuts* GetEventCuts() const { return fFilteredTreeEventCuts; } | |
72 | AliFilteredTreeAcceptanceCuts* GetAcceptanceCuts() const { return fFilteredTreeAcceptanceCuts; } | |
73 | AliFilteredTreeAcceptanceCuts* GetRecAcceptanceCuts() const { return fFilteredTreeRecAcceptanceCuts; } | |
74 | AliESDtrackCuts* GetTrackCuts() const { return fEsdTrackCuts; } | |
75 | AliTriggerAnalysis::Trigger GetTrigger() const { return fTrigger; } | |
76 | EAnalysisMode GetAnalysisMode() const { return fAnalysisMode; } | |
77 | ||
78 | TString GetCentralityEstimator() const {return fCentralityEstimator; } | |
79 | void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; } | |
80 | ||
81 | Bool_t IsFromConversion(const Int_t label, AliStack *const stack); | |
82 | Bool_t IsFromMaterial(const Int_t label, AliStack *const stack); | |
83 | Bool_t IsFromStrangeness(const Int_t label, AliStack *const stack); | |
84 | TParticle *GetMother(TParticle *const particle, AliStack *const stack); | |
85 | ||
86 | Bool_t ConstrainTPCInner(AliExternalTrackParam *const tpcInnerC, const AliESDVertex* vtx, Double_t b[3]); | |
87 | Bool_t ConstrainTrackInner(AliExternalTrackParam *const trackInnerC, const AliESDVertex* vtx, Double_t mass, Double_t b[3]); | |
88 | ||
89 | // v0s selection | |
90 | Int_t GetKFParticle(AliESDv0 *const v0, AliESDEvent * const event, AliKFParticle & kfparticle); | |
91 | Bool_t IsV0Downscaled(AliESDv0 *const v0); | |
92 | Bool_t IsHighDeDxParticle(AliESDtrack * const track); | |
93 | ||
94 | void SetLowPtTrackDownscaligF(Double_t fact) { fLowPtTrackDownscaligF = fact; } | |
95 | void SetLowPtV0DownscaligF(Double_t fact) { fLowPtV0DownscaligF = fact; } | |
96 | ||
97 | void SetProcessCosmics(Bool_t flag) { fProcessCosmics = flag; } | |
98 | Bool_t GetProcessCosmics() { return fProcessCosmics; } | |
99 | ||
100 | void SetProcessAll(Bool_t proc) { fProcessAll = proc; } | |
101 | static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AliFilteredTreeEventCuts *const evtCuts, AliFilteredTreeAcceptanceCuts *const accCuts); | |
102 | ||
103 | private: | |
104 | ||
105 | AliESDEvent *fESD; //! ESD event | |
106 | AliMCEvent *fMC; //! MC event | |
107 | AliESDfriend *fESDfriend; //! ESDfriend event | |
108 | TList* fOutput; //! list send on output slot 0 | |
109 | TIterator *fPitList; //! iterator over the output objetcs | |
110 | ||
111 | Bool_t fUseMCInfo; // use MC information | |
112 | Bool_t fUseESDfriends; // use esd friends | |
2fcfa418 | 113 | Bool_t fReducePileUp; // downscale the information for the pile-up TPC tracks |
1059f583 | 114 | |
115 | AliFilteredTreeEventCuts *fFilteredTreeEventCuts; // event cuts | |
116 | AliFilteredTreeAcceptanceCuts *fFilteredTreeAcceptanceCuts; // acceptance cuts | |
117 | AliFilteredTreeAcceptanceCuts *fFilteredTreeRecAcceptanceCuts; // additional recontruction acceptance cuts (not used for MC truth) | |
118 | AliESDtrackCuts *fEsdTrackCuts; // esd track cuts | |
119 | AliTriggerAnalysis::Trigger fTrigger; // trigger settings | |
120 | EAnalysisMode fAnalysisMode; // analysis mode TPC only, TPC + ITS | |
121 | ||
122 | TTreeSRedirector* fTreeSRedirector; //! temp tree to dump output | |
123 | ||
124 | TString fCentralityEstimator; // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC" | |
125 | ||
126 | Double_t fLowPtTrackDownscaligF; // low pT track downscaling factor | |
127 | Double_t fLowPtV0DownscaligF; // low pT V0 downscaling factor | |
128 | Double_t fProcessAll; // Calculate all track properties including MC | |
129 | ||
130 | Bool_t fProcessCosmics; // look for cosmic pairs from random trigger | |
131 | ||
132 | TTree* fHighPtTree; //! list send on output slot 0 | |
133 | TTree* fV0Tree; //! list send on output slot 0 | |
134 | TTree* fdEdxTree; //! list send on output slot 0 | |
135 | TTree* fLaserTree; //! list send on output slot 0 | |
136 | TTree* fMCEffTree; //! list send on output slot 0 | |
137 | TTree* fCosmicPairsTree; //! list send on output slot 0 | |
138 | ||
139 | AliAnalysisTaskFilteredTree(const AliAnalysisTaskFilteredTree&); // not implemented | |
140 | AliAnalysisTaskFilteredTree& operator=(const AliAnalysisTaskFilteredTree&); // not implemented | |
141 | ||
142 | ClassDef(AliAnalysisTaskFilteredTree, 1); // example of analysis | |
143 | }; | |
144 | ||
145 | #endif |