Change Mult binning scheme
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskSingleParticle.h
CommitLineData
5720c765 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
16class TH1D;
17class TList;
18class AliAnalysisCuts;
19class AliCFContainer;
20class AliVEvent;
21class AliDielectronHistos;
22class AliESDv0Cuts;
23class AliESDv0KineCuts;
24
25class AliAnalysisTaskSingleParticle : public AliAnalysisTaskSE {
26
27public:
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
56protected:
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