]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/EvTrkSelection/AliCFSingleTrackEfficiencyTask.h
Merge branch 'TPCdev'
[u/mrichter/AliRoot.git] / PWGPP / EvTrkSelection / AliCFSingleTrackEfficiencyTask.h
1 #ifndef AliCFSINGLETRACKEFFICIENCYTASK_H
2 #define AliCFSINGLETRACKEFFICIENCYTASK_H
3
4 #include "AliAnalysisTaskSE.h"
5 #include "AliSingleTrackEffCuts.h"
6
7 class TH1I;
8 class TParticle;
9 class AliStack;
10 class AliCFManager;
11 class AliAODTrack;
12 class AliESDtrack;
13 class AliESDtrackCuts;
14 class AliESDVertex;
15 class AliVVertex;
16 class AliVParticle;
17
18
19 class AliCFSingleTrackEfficiencyTask : public AliAnalysisTaskSE {
20
21  public:
22
23   enum {
24     kStepMCGenCut         = 0, // selected generated particles, event selection
25     kStepMCKineCut        = 1, // generated particles after acceptance cuts
26     kStepMCAccpCut        = 2, // particles with a minimum number of clusters in detector (ESD only)
27     kStepReconstructed    = 3, // reconstructed tracks
28     kStepRecoKineCuts     = 4, // reconstructed tracks after acceptance
29     kStepReconstructedMC  = 5, // tracks passing ESD+MC trackCuts (kine properties)
30     kStepRecoQualityCuts  = 6, // tracks passing ESD+MC trackCuts (reco properties)
31     kStepRecoPID          = 7  // tracks after PID criteria
32   };
33
34   AliCFSingleTrackEfficiencyTask();
35   AliCFSingleTrackEfficiencyTask(const Char_t* name, AliESDtrackCuts *trackcuts, AliSingleTrackEffCuts * mccuts);
36   AliCFSingleTrackEfficiencyTask(const AliCFSingleTrackEfficiencyTask& c);
37   AliCFSingleTrackEfficiencyTask& operator= (const AliCFSingleTrackEfficiencyTask& c);
38   virtual ~AliCFSingleTrackEfficiencyTask();
39
40   // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
41   virtual void UserCreateOutputObjects();
42   virtual void UserExec(Option_t *option);
43   virtual void Terminate(Option_t *);
44   virtual void Init();
45   virtual void LocalInit() { Init(); }
46
47   // CORRECTION FRAMEWORK RELATED FUNCTIONS
48   void           SetCFManager(AliCFManager* io) { fCFManager = io; }   // global correction manager
49   AliCFManager * GetCFManager() const { return fCFManager; }           // get corr manager
50   void           SetQAList(TList* list) { fQAHistList = list; }        // set CF QA list (empty, not used, but needed)
51
52   // Setters
53   // analyze AOD:1 or ESD:0 data
54   void SetReadAODData (Bool_t flag=kTRUE) { fReadAODData=flag; }
55   // select track filter bit:1 or not:0 and set the bit
56   void SetFilterBit (Bool_t flag=kTRUE) { fSetFilterBit=flag; }
57   void SetFilterType (Int_t fbittype) { fbit=fbittype; }
58   // select trigger event mask
59   void SetTriggerMask(ULong64_t mask=0) { fTriggerMask=mask; }
60   // set whether to evaluate centrality
61   void SetUseCentrality(Bool_t flag, TString estimator=""){ fEvalCentrality=flag; fCentralityEstimator=estimator; }
62
63   // Getters
64   // analyze AOD:1 or ESD:0 data
65   Bool_t IsReadAODData()   const { return fReadAODData; }
66   // select trigger event mask
67   ULong64_t GetTriggerMask() { return fTriggerMask; }
68   // reconstructed track cuts
69   AliESDtrackCuts *GetTrackCuts(){ return (AliESDtrackCuts*)fTrackCuts; } 
70   // particle and event cuts 
71   AliSingleTrackEffCuts *GetSingleTrackEffCuts() { return (AliSingleTrackEffCuts*)fMCCuts; }
72
73
74  protected:
75
76   // Check ESD generated particles
77   void CheckESDMCParticles();
78   // Check AOD generated particles
79   void CheckAODMCParticles();
80   // Check reconstructed particles
81   void CheckReconstructedParticles();
82   // Convert AOD track to an ESD track
83   AliESDtrack* ConvertTrack(AliAODTrack *track);
84   // Count the number of tracklets in given eta range
85   Int_t GetNumberOfTrackletsInEtaRange(Double_t mineta, Double_t maxeta);
86   // Evaluate the event centrality
87   Double_t GetCentrality();
88
89   Bool_t fReadAODData;       // flag for AOD/ESD input files
90   AliCFManager *fCFManager;  // pointer to the CF manager slot 2
91   TList *fQAHistList;        // list of QA histograms slot 3
92
93   AliESDtrackCuts *fTrackCuts;    // track cuts (reconstructed level) slot 4
94   AliSingleTrackEffCuts *fMCCuts; // particle cuts used slot 5
95   ULong64_t fTriggerMask;         // event selection trigger mask
96
97   Bool_t fSetFilterBit; // flag to decide if applying filter-bit selection to tracks
98   Int_t  fbit;          // filter-bit selection to tracks
99
100   Bool_t fEvalCentrality;        // flag to enable centrality determination
101   TString fCentralityEstimator;  // centrality estimator
102
103   TH1I  *fHistEventsProcessed;   //! histo for monitoring the number of events processed slot 1
104
105   ClassDef(AliCFSingleTrackEfficiencyTask,2)
106 };
107
108 #endif