1 #ifndef ALIDNDPTTRACKDUMPTASK_H
2 #define ALIDNDPTTRACKDUMPTASK_H
4 //------------------------------------------------------------------------------
5 // Task to dump track information
6 // TPC constrained and TPC+ITS combined
7 // for outliers analysis.
9 // Author: J.Otwinowski 19/06/2011
10 //------------------------------------------------------------------------------
14 class AliFilteredTreeEventCuts;
15 class AliFilteredTreeAcceptanceCuts;
16 class AliESDtrackCuts;
25 class TTreeSRedirector;
27 #include "AliTriggerAnalysis.h"
28 #include "AliAnalysisTaskSE.h"
30 class AliAnalysisTaskFilteredTree : public AliAnalysisTaskSE {
33 enum EAnalysisMode { kInvalidAnalysisMode=-1,
34 kTPCITSAnalysisMode=0,
37 AliAnalysisTaskFilteredTree(const char *name = "AliAnalysisTaskFilteredTree");
38 virtual ~AliAnalysisTaskFilteredTree();
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; }
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);
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; }
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; }
73 TString GetCentralityEstimator() const {return fCentralityEstimator; }
74 void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; }
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);
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]);
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);
89 void SetLowPtTrackDownscaligF(Double_t fact) { fLowPtTrackDownscaligF = fact; }
90 void SetLowPtV0DownscaligF(Double_t fact) { fLowPtV0DownscaligF = fact; }
92 void SetProcessCosmics(Bool_t flag) { fProcessCosmics = flag; }
93 Bool_t GetProcessCosmics() { return fProcessCosmics; }
95 void SetProcessAll(Bool_t proc) { fProcessAll = proc; }
96 static Int_t GetMCTrueTrackMult(AliMCEvent *const mcEvent, AliFilteredTreeEventCuts *const evtCuts, AliFilteredTreeAcceptanceCuts *const accCuts);
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
106 Bool_t fUseMCInfo; // use MC information
107 Bool_t fUseESDfriends; // use esd friends
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
116 TTreeSRedirector* fTreeSRedirector; //! temp tree to dump output
118 TString fCentralityEstimator; // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"
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
124 Bool_t fProcessCosmics; // look for cosmic pairs from random trigger
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
133 AliAnalysisTaskFilteredTree(const AliAnalysisTaskFilteredTree&); // not implemented
134 AliAnalysisTaskFilteredTree& operator=(const AliAnalysisTaskFilteredTree&); // not implemented
136 ClassDef(AliAnalysisTaskFilteredTree, 1); // example of analysis