Transition PWG0 -> PWGUD
[u/mrichter/AliRoot.git] / PWGUD / dNdPt / AlidNdPtEventCuts.h
1 #ifndef ALIDNDPTEVENTCUTS_H\r
2 #define ALIDNDPTEVENTCUTS_H\r
3 \r
4 //------------------------------------------------------------------------------\r
5 // Class to keep event selection cuts for dNdPt analysis. \r
6 // \r
7 // Author: J.Otwinowski 01/11/2008 \r
8 //------------------------------------------------------------------------------\r
9 \r
10 #include "AliAnalysisCuts.h"\r
11 \r
12 class AliESDEvent;\r
13 class AliESDVertex;\r
14 class AliMCEvent;\r
15 class AliHeader;\r
16 class AliGenEventHeader;\r
17 \r
18 #include "AliPWG0Helper.h"\r
19 #include "AlidNdPtHelper.h"\r
20 \r
21 class AlidNdPtEventCuts : public AliAnalysisCuts\r
22 {\r
23 public:\r
24   AlidNdPtEventCuts(const Char_t* name ="AlidNdPtEventCuts", const Char_t *title ="");\r
25   virtual ~AlidNdPtEventCuts(); \r
26  \r
27   // setters \r
28   void SetTriggerRequired(const Bool_t bFlag=kTRUE)  {fTriggerRequired=bFlag;}\r
29   void SetRecVertexRequired(const Bool_t bFlag=kTRUE)  {fRecVertexRequired=bFlag;}\r
30   void SetEventProcessType(AliPWG0Helper::MCProcessType type=AliPWG0Helper::kInvalidProcess)  {fEventProcessType=type;}\r
31   void SetNContributorsRange(const Float_t min=0.,const Float_t max=1e99) {fMinNContributors=min; fMaxNContributors=max;}\r
32   void SetMaxR(const Float_t max=1e99) {fMaxR=max;}\r
33   void SetZvRange(const Float_t min=-1e99, const Float_t max=1e99) {fMinZv=min; fMaxZv=max;}\r
34 \r
35   void SetMeanXYZv(const Float_t xv=0.0, const Float_t yv=0.0, const Float_t zv=0.0) {\r
36     fMeanXv = xv; fMeanYv = yv; fMeanZv = zv;\r
37   }\r
38 \r
39   void SetSigmaMeanXYZv(const Float_t sxv=1.0, const Float_t syv=1.0, const Float_t szv=10.0) {\r
40     fSigmaMeanXv = sxv; fSigmaMeanYv = syv; fSigmaMeanZv = szv;\r
41   }\r
42 \r
43 \r
44   void SetRedoTPCVertex(const Bool_t redo = kTRUE) {fRedoTPCVertex = redo;}\r
45   void SetUseBeamSpotConstraint(const Bool_t useConstr = kTRUE) {fUseBeamSpotConstraint = useConstr;}\r
46   void SetEventSelectedRequired(const Bool_t evtSel = kTRUE) {fEventSelectedRequired = evtSel;} \r
47 \r
48 \r
49   // getters \r
50   Bool_t  IsEventSelectedRequired() const {return fEventSelectedRequired;}\r
51   Bool_t  IsTriggerRequired() const {return fTriggerRequired;}\r
52   Bool_t  IsRecVertexRequired() const {return fRecVertexRequired;}\r
53   Int_t   GetEventProcessType() const {return fEventProcessType;}  \r
54   Float_t GetMinNContributors() const {return fMinNContributors;}\r
55   Float_t GetMaxNContributors() const {return fMaxNContributors;}\r
56   Float_t GetMaxR() const {return fMaxR;}\r
57   Float_t GetMinZv() const {return fMinZv;}\r
58   Float_t GetMaxZv() const {return fMaxZv;}\r
59 \r
60   Float_t GetMeanXv() const {return fMeanXv;}\r
61   Float_t GetMeanYv() const {return fMeanYv;}\r
62   Float_t GetMeanZv() const {return fMeanZv;}\r
63 \r
64   Float_t GetSigmaMeanXv() const {return fSigmaMeanXv;}\r
65   Float_t GetSigmaMeanYv() const {return fSigmaMeanYv;}\r
66   Float_t GetSigmaMeanZv() const {return fSigmaMeanZv;}\r
67  \r
68   Bool_t IsRedoTPCVertex() const {return fRedoTPCVertex;}\r
69   Bool_t IsUseBeamSpotConstraint() const {return fUseBeamSpotConstraint;}\r
70 \r
71 \r
72   // cuts init function\r
73   void Init();\r
74 \r
75   // check MC tracks\r
76   Bool_t IsSelected(TObject *) {return kTRUE;}\r
77   Bool_t IsSelected(TList *) {return kTRUE;}\r
78 \r
79   // accept event\r
80   Bool_t AcceptEvent(AliESDEvent *event=0, AliMCEvent *mcEvent=0, const AliESDVertex *vtx=0);\r
81   Bool_t AcceptMCEvent(AliMCEvent *mcEvent=0);\r
82 \r
83   // Merge output objects (needed by PROOF) \r
84   virtual Long64_t Merge(TCollection* list);\r
85 \r
86 private:\r
87   Bool_t fTriggerRequired; // trigger required  \r
88   Bool_t fRecVertexRequired; // reconstructed event vertex required  \r
89   Int_t fEventProcessType;   // select MC event process type (ND, SD, DD)\r
90   Float_t fMinNContributors; // min. number of contributing vertex tracks\r
91   Float_t fMaxNContributors; // max. number of contributing vertex tracks\r
92   Float_t fMaxR;             // max. vertex radii (R = sqrt(Xv^2+Yv^2) \r
93   Float_t fMinZv;            // min. Zv vertex\r
94   Float_t fMaxZv;            // max. Zv vertex\r
95 \r
96   // interaction spot constraint\r
97   Float_t fMeanXv; // mean Xv position\r
98   Float_t fMeanYv; // mean Yv position\r
99   Float_t fMeanZv; // mean Zv position\r
100 \r
101   Float_t fSigmaMeanXv; // sigma mean Xv position \r
102   Float_t fSigmaMeanYv; // sigma mean Yv position\r
103   Float_t fSigmaMeanZv; // sigma mean Zv position\r
104  \r
105   Bool_t fRedoTPCVertex;         // redo vertex\r
106   Bool_t fUseBeamSpotConstraint; // use beam spot contraints  \r
107 \r
108   Bool_t fEventSelectedRequired; // event with at least one track (pT>0.5 GeV, |eta|<0.8) required\r
109 \r
110   AlidNdPtEventCuts(const AlidNdPtEventCuts&); // not implemented\r
111   AlidNdPtEventCuts& operator=(const AlidNdPtEventCuts&); // not implemented\r
112 \r
113   ClassDef(AlidNdPtEventCuts, 2)\r
114 };\r
115 \r
116 #endif // ALIDNDPTEVENTCUTS_H\r