]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/AliAnalysisTaskSingleParticle.h
o update dielectron package
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskSingleParticle.h
1 #ifndef ALIANALYSISTASKSINGLEPARTICLE_H
2 #define ALIANALYSISTASKSINGLEPARTICLE_H
3
4 //===============================================================
5 //
6 // Analysis task for constructing MC or data driven single particle efficiencies
7 //
8 // Ionut C. Arsene, EMMI-GSI, 2011/12/07 
9 //
10 //===============================================================
11
12 #include "TList.h"
13
14 #include "AliAnalysisTaskSE.h"
15
16 class TH1D;
17 class TList;
18 class AliAnalysisCuts;
19 class AliCFContainer;
20 class AliVEvent;
21 class AliDielectronHistos;
22 class AliESDv0Cuts;
23 class AliESDv0KineCuts;
24
25 class AliAnalysisTaskSingleParticle : public AliAnalysisTaskSE {
26   
27 public:
28   enum { kNMaxDimensions = 20 };
29     
30   AliAnalysisTaskSingleParticle();
31   AliAnalysisTaskSingleParticle(const char *name);
32   virtual ~AliAnalysisTaskSingleParticle();
33
34   virtual void UserExec(Option_t *option);
35   virtual void UserCreateOutputObjects();
36   virtual void FinishTaskOutput();
37     
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;     }
43   
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;}
52
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);
55
56 protected:
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}; 
59
60   AliCFContainer*  fCfContainer;      //  CF container
61   AliDielectronHistos *fHistos;       // Histogram manager
62   TList            fHistogramList;    // histogram list from the manager
63
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
68
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
76   
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
82
83   TH1D *fEventStat;                  //! Histogram with event statistics
84   
85   void FillContainer(Int_t step, const Double_t* values, Int_t trackId, Int_t pdg);
86   
87   AliAnalysisTaskSingleParticle(const AliAnalysisTaskSingleParticle &c);
88   AliAnalysisTaskSingleParticle& operator= (const AliAnalysisTaskSingleParticle &c);
89   
90   ClassDef(AliAnalysisTaskSingleParticle, 2); //Analysis Task handling single particle cuts
91 };
92 #endif