1 #ifndef ALIANALYSISTASKSINGLEPARTICLE_H
2 #define ALIANALYSISTASKSINGLEPARTICLE_H
4 //===============================================================
6 // Analysis task for constructing MC or data driven single particle efficiencies
8 // Ionut C. Arsene, EMMI-GSI, 2011/12/07
10 //===============================================================
14 #include "AliAnalysisTaskSE.h"
18 class AliAnalysisCuts;
21 class AliDielectronHistos;
23 class AliESDv0KineCuts;
25 class AliAnalysisTaskSingleParticle : public AliAnalysisTaskSE {
28 enum { kNMaxDimensions = 20 };
30 AliAnalysisTaskSingleParticle();
31 AliAnalysisTaskSingleParticle(const char *name);
32 virtual ~AliAnalysisTaskSingleParticle();
34 virtual void UserExec(Option_t *option);
35 virtual void UserCreateOutputObjects();
36 virtual void FinishTaskOutput();
38 void SetFillTRDfriendPH(Bool_t fill=kTRUE) {fFillTRDfriendPH = fill;}
39 void UsePhysicsSelection(Bool_t phy=kTRUE) {fSelectPhysics=phy;}
40 void SetTriggerMask(UInt_t mask) {fTriggerMask=mask;}
41 UInt_t GetTriggerMask() const { return fTriggerMask; }
42 void SetRejectPileup(Bool_t pileup=kTRUE) { fRejectPileup=pileup; }
44 void SetEventFilter(AliAnalysisCuts * const filter) {fEventFilter=filter;}
45 void SetTrackFilter(AliAnalysisCuts * const filter) {fTrackFilter=filter;}
46 void SetPairFilter(AliAnalysisCuts* const filter) {fPairFilter=filter;}
47 void SetV0Cuts(AliESDv0Cuts* const cuts) {fV0Cuts = cuts;}
48 void SetLambdaFilter(AliAnalysisCuts* const filter) {fLambdaFilter = filter;}
49 void SetK0sFilter(AliAnalysisCuts* const filter) {fK0sFilter = filter;}
50 void SetHistogramManager(AliDielectronHistos * const histos) { fHistos=histos; }
51 void SetV0KineCuts(AliESDv0KineCuts* const v0cuts) {fV0KineCuts = v0cuts;}
53 void AddCFVar(Int_t var, Int_t nbins, Double_t lowLim, Double_t highLim);
54 void AddCFVar(Int_t var, const Char_t* bins);
57 // enum {kAllEvents=0, kPhysicsSelectionEvents, kFilteredEvents, kEventStatBins};
58 // enum {kEventVtxZ=0, kNTracklets, kCentrality, kPt, kPin, kPhi, kEta, kDeltaPt, kDeltaPhi, kDeltaEta, kTPCnCls, kTPCnSigEle, kTPCnSigPio, kTPCnSigPro, kNVariables};
60 AliCFContainer* fCfContainer; // CF container
61 AliDielectronHistos *fHistos; // Histogram manager
62 TList fHistogramList; // histogram list from the manager
64 Bool_t fSelectPhysics; // Whether to use physics selection
65 UInt_t fTriggerMask; // Event trigger mask
66 Bool_t fRejectPileup; // pileup rejection wanted
67 Bool_t fFillTRDfriendPH; // use the task to fill a TRD tracklet PH container
69 AliAnalysisCuts* fEventFilter; // event filter
70 AliAnalysisCuts* fTrackFilter; // tracking filter
71 AliAnalysisCuts* fPairFilter; // pair filter
72 AliESDv0Cuts* fV0Cuts; // v0 standard filter
73 AliAnalysisCuts* fLambdaFilter; // additional cuts for lambda v0 exclusion
74 AliAnalysisCuts* fK0sFilter; // additional cuts for K0s v0 exclusion
75 AliESDv0KineCuts* fV0KineCuts; // V0 kine cuts
77 Int_t fCFNVars; // number of CF variables
78 Int_t fCFVarsEnabled[kNMaxDimensions]; // id for every dimension
79 Int_t fCFVarsNbins[kNMaxDimensions]; // number of bins for every CF dimension
80 Double_t fCFVarRanges[kNMaxDimensions][2]; // range for CF dimensions
81 TString fCFVarBins[kNMaxDimensions]; // bin limits for CF dimensions
83 TH1D *fEventStat; //! Histogram with event statistics
85 void FillContainer(Int_t step, const Double_t* values, Int_t trackId, Int_t pdg);
87 AliAnalysisTaskSingleParticle(const AliAnalysisTaskSingleParticle &c);
88 AliAnalysisTaskSingleParticle& operator= (const AliAnalysisTaskSingleParticle &c);
90 ClassDef(AliAnalysisTaskSingleParticle, 2); //Analysis Task handling single particle cuts