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