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