don't lie in the log!
[u/mrichter/AliRoot.git] / PWGPP / EvTrkSelection / AliAnalysisTrackingUncertainties.h
1 #ifndef ALIANALYSISTRACKINGUNCERTAINTIES_H
2 #define ALIANALYSISTRACKINGUNCERTAINTIES_H
3
4 //////////////////////////////////////////////////////////////////////////////
5 //                                                                          //
6 // Analysis task for the systematic study of the uncertainties related to   //
7 // the tracking and ITS-TPC matching efficiency for different particle      //
8 // species.                                                                 //
9 //                                                                          //
10 //////////////////////////////////////////////////////////////////////////////
11
12 class TList;
13 class AliESDEvent;
14 class AliMCEvent;
15 class AliESDtrack;
16 class AliESDtrackCuts;
17 class AliESDpid;
18
19
20 #include "AliAnalysisTaskSE.h"
21 #include "AliAnalysisUtils.h"
22 #include "THn.h"
23
24 // ITS->TPC matching constants
25 const int kMaxMatch=5;
26 const double kMaxChi2 = 200;
27
28
29 class AliAnalysisTrackingUncertainties : public AliAnalysisTaskSE {
30  public:
31   AliAnalysisTrackingUncertainties(const char *name);
32   AliAnalysisTrackingUncertainties();
33   virtual ~AliAnalysisTrackingUncertainties() {}
34   //
35   virtual void   UserCreateOutputObjects();
36   virtual void   UserExec(Option_t *option);
37   virtual void   Terminate(Option_t *);
38   //
39   void           ProcessTrackCutVariation();
40   void           ProcessItsTpcMatching();
41   void           Match(const AliESDtrack* tr0, const AliESDtrack* tr1, Int_t& nmatch, Bool_t excludeMom = kFALSE, Double_t rotate=0);
42
43   //
44   void           SetESDtrackCuts(AliESDtrackCuts * trackCuts){fESDtrackCuts = trackCuts;};
45   void           InitializeTrackCutHistograms();
46   //
47   void           ExcludeMomFromChi2ITSTPC(Bool_t ex = kTRUE) { fExcludeMomFromChi2ITSTPC = ex; }
48
49
50  private:
51   enum ESpecies_t{
52       kSpecElectron = 0,
53       kSpecPion = 1,
54       kSpecKaon = 2,
55       kSpecProton = 3,
56       kUndef = 4,
57       kAll = 5
58   };
59   //
60   void   BinLogAxis(const THn *h, Int_t axisNumber);
61   Bool_t IsVertexAccepted(AliESDEvent * esd, Float_t &vertexZ);
62   ESpecies_t GetPid(const AliESDtrack * const tr, Bool_t useTPCTOF = kFALSE) const;
63   Bool_t IsElectron(const AliESDtrack * const tr, Bool_t useTPCTOF = kFALSE) const;
64   Bool_t IsPion(const AliESDtrack * const tr, Bool_t useTPCTOF = kFALSE) const;
65   Bool_t IsKaon(const AliESDtrack * const tr, Bool_t useTPCTOF = kFALSE) const;
66   Bool_t IsProton(const AliESDtrack * const tr, Bool_t useTPCTOF = kFALSE) const;
67   //
68   Bool_t IsConsistentWithPid(Int_t type, const AliESDtrack * const tr);
69   //
70   //
71   //
72   AliESDEvent * fESD;               //! ESD object
73   AliESDpid   * fESDpid;            //! basic pid object
74   AliAnalysisUtils * fUtils;        //! vertex and event selection classes
75   Bool_t        fMCtrue;            // flag if real data or MC is processed
76   //
77   //
78   TList           * fListHist;      //! output list for histograms
79   AliESDtrackCuts * fESDtrackCuts;  // cut set which is under study
80   //
81   // helper variables for ITS->TPC matching
82   //
83   const AliESDtrack * fMatchTr[kMaxMatch];
84   Double_t fMatchChi[kMaxMatch];
85   Bool_t fExcludeMomFromChi2ITSTPC; // ITS->TPC : exclude momentum from matching chi2 calculation  
86
87   //
88   //
89   AliAnalysisTrackingUncertainties(const AliAnalysisTrackingUncertainties&); 
90   AliAnalysisTrackingUncertainties& operator=(const AliAnalysisTrackingUncertainties&); 
91
92   ClassDef(AliAnalysisTrackingUncertainties, 1); 
93 };
94
95 #endif