1 #ifndef AliCFSINGLETRACKEFFICIENCYTASK_H
2 #define AliCFSINGLETRACKEFFICIENCYTASK_H
4 #include "AliAnalysisTaskSE.h"
5 #include "AliSingleTrackEffCuts.h"
13 class AliESDtrackCuts;
19 class AliCFSingleTrackEfficiencyTask : public AliAnalysisTaskSE {
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
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();
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 *);
45 virtual void LocalInit() { Init(); }
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)
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; }
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; }
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();
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
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
97 Bool_t fSetFilterBit; // flag to decide if applying filter-bit selection to tracks
98 Int_t fbit; // filter-bit selection to tracks
100 Bool_t fEvalCentrality; // flag to enable centrality determination
101 TString fCentralityEstimator; // centrality estimator
103 TH1I *fHistEventsProcessed; //! histo for monitoring the number of events processed slot 1
105 ClassDef(AliCFSingleTrackEfficiencyTask,2)