]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.h
VZERO-A default selection for LHC10h
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AliSpectraAODEventCuts.h
1 #ifndef ALISPECTRAAODEVENTCUTS_H
2 #define ALISPECTRAAODEVENTCUTS_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //-------------------------------------------------------------------------
7 //                      AliSpectraAODEventCuts
8 //
9 //
10 //
11 //
12 // Authors: Michele Floris, CERN, Philip Versteeg, UU, Redmer Bertens, UU
13 //-------------------------------------------------------------------------
14
15 class AliAODEvent;
16 class AliSpectraAODTrackCuts;
17 class TProfile;
18
19 #include "TNamed.h"
20 #include "TFile.h"
21 #include "TKey.h"
22 #include "AliOADBContainer.h"
23
24 class AliSpectraAODEventCuts : public TNamed
25 {
26  public:
27   enum {  kProcessedEvents = 0,kPhysSelEvents,kAcceptedEvents, kVtxRange, kVtxCentral, kVtxNoEvent, kQVector, kNVtxCuts};
28
29   // Constructors
30  AliSpectraAODEventCuts() : 
31   TNamed(),
32     fAOD(0),
33     fSelectBit(AliVEvent::kMB),
34     fCentralityMethod(),
35     fTrackBits(1),
36     fIsMC(0),
37     fIsLHC10h(0),
38     fTrackCuts(0),
39     fIsSelected(0),
40     fCentralityCutMin(0.),
41     fCentralityCutMax(999),
42     fQVectorCutMin(-999.),
43     fQVectorCutMax(999.),
44     fVertexCutMin(-10.),
45     fVertexCutMax(10.),
46     fMultiplicityCutMin(-999.),
47     fMultiplicityCutMax(99999.),
48     fqV0C(-999.),
49     fqV0A(-999.),
50     fPsiV0C(-999.),
51     fPsiV0A(-999.),
52     fCent(-999.),
53     fOutput(0),
54     fCalib(0),
55     fRun(-1),
56     fMultV0(0),
57     fV0Cpol1(-1),
58     fV0Cpol2(-1),
59     fV0Cpol3(-1),
60     fV0Cpol4(-1),
61     fV0Apol1(-1),
62     fV0Apol2(-1),
63     fV0Apol3(-1),
64     fV0Apol4(-1)
65       {
66         for (Int_t i = 0; i<10; i++){
67           fMeanQxa2[i] = -1;
68           fMeanQya2[i] = -1;
69           fMeanQxc2[i] = -1;
70           fMeanQyc2[i] = -1;   
71         }
72       }
73   AliSpectraAODEventCuts(const char *name);
74   virtual  ~AliSpectraAODEventCuts() {}
75   
76   void  SetEventSelectionBit( UInt_t val )        { fSelectBit = val;  }
77   void  SetCentralityMethod(const char* method) { fCentralityMethod = method; }
78   void  SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
79   void  SetIsMC(Bool_t isMC = kFALSE)    {fIsMC = isMC; };
80   void  SetIsLHC10h(Bool_t isLHC10h = kFALSE)    {fIsLHC10h = isLHC10h; };
81   void  SetCentralityCutMin(Float_t cut)  { fCentralityCutMin = cut; }
82   void  SetCentralityCutMax(Float_t cut)  { fCentralityCutMax = cut; }
83   void  SetQVectorCut(Float_t min,Float_t max)  { fQVectorCutMin = min; fQVectorCutMax = max; }
84   void  SetVertexCut(Float_t min,Float_t max)  { fVertexCutMin = min; fVertexCutMax = max; }
85   void  SetMultiplicityCut(Float_t min,Float_t max)  { fMultiplicityCutMin = min; fMultiplicityCutMax = max; }
86   
87   UInt_t GetEventSelectionBit()   const           { return fSelectBit;}
88   TString GetCentralityMethod()   const           { return fCentralityMethod;}
89   UInt_t GetTrackType()          const    { return fTrackBits;}
90   Bool_t GetIsMC()                const           { return fIsMC;}
91   Bool_t GetIsLHC10h()                const           { return fIsLHC10h;}
92   Float_t  GetCentralityMin()      const {  return fCentralityCutMin; }
93   Float_t  GetCentralityMax()     const {  return fCentralityCutMax; }
94   Float_t  GetQVectorCutMin()    const {  return fQVectorCutMin; }
95   Float_t  GetQVectorCutMax()   const {  return fQVectorCutMax; }
96   Float_t  GetVertexCutMin()     const {  return fVertexCutMin; }
97   Float_t  GetVertexCutMax()    const {  return fVertexCutMax; }
98   Float_t  GetMultiplicityCutMin()  const {  return fMultiplicityCutMin; }
99   Float_t  GetMultiplicityCutMax()  const {  return fMultiplicityCutMax; }
100   Double_t  GetqV0C()  const {  return fqV0C; }
101   Double_t  GetqV0A()  const {  return fqV0A; }
102   Double_t  GetCent()  const {  return fCent; }
103   TList *GetOutputList()       {return fOutput;};
104   TList *GetCalibList()       {return fCalib;};
105   void SetCalibFile(TFile *f)    {
106     TIter next(f->GetListOfKeys());
107     TKey *key;
108     while ((key = (TKey*)next())) {
109       AliOADBContainer * obj=(AliOADBContainer*)key->ReadObj();
110       fCalib->Add(obj);
111     }
112   };
113   
114   // Methods
115   Bool_t IsSelected(AliAODEvent * aod,AliSpectraAODTrackCuts     *trackcuts);
116   Bool_t CheckVtxRange();
117   Bool_t CheckCentralityCut();
118   Bool_t CheckMultiplicityCut();
119   Bool_t CheckQVectorCut();
120   Double_t CalculateQVectorLHC10h();
121   void   PrintCuts();
122   Bool_t OpenInfoCalbration(Int_t run);
123   Short_t  GetCentrCode(AliVEvent* ev);
124   
125   Float_t  NumberOfEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kAcceptedEvents+1); }
126   Float_t  NumberOfProcessedEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kProcessedEvents+1); }
127   Float_t  NumberOfPhysSelEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kPhysSelEvents+1); }
128
129   Long64_t Merge(TCollection* list);
130   
131
132  private:
133   
134   AliAODEvent     *fAOD;              //! AOD event
135   UInt_t           fSelectBit;            // Select events according to AliAnalysisTaskJetServices bit maps 
136   TString          fCentralityMethod;     // Method to determine centrality
137   UInt_t           fTrackBits;       // Type of track to be used in the Qvector calculation
138   Bool_t          fIsMC; // true if processing MC
139   Bool_t          fIsLHC10h; // for LHC10h
140   AliSpectraAODTrackCuts     *fTrackCuts;              //! track cuts
141   Bool_t          fIsSelected;        // True if cuts are selected
142   Float_t         fCentralityCutMin;     // minimum centrality percentile
143   Float_t         fCentralityCutMax;     // maximum centrality percentile
144   Float_t         fQVectorCutMin;     // minimum qvecPos
145   Float_t         fQVectorCutMax;     // maximum qvecPos
146   Float_t         fVertexCutMin;     // minimum vertex position
147   Float_t         fVertexCutMax;     // maximum vertex position
148   Float_t         fMultiplicityCutMin;     // minimum multiplicity position
149   Float_t         fMultiplicityCutMax;     // maximum multiplicity position
150   Double_t       fqV0C;            //q vector in the VZERO-C
151   Double_t       fqV0A;            //q vector in the VZERO-A
152   Double_t       fPsiV0C;            //q vector in the VZERO-C
153   Double_t       fPsiV0A;            //q vector in the VZERO-A
154   Double_t       fCent;            //centrality according to fCentralityMethod
155   TList            *fOutput;        // output list 
156   TList            *fCalib;        // output list 
157   Int_t fRun;                       // run number - for calibration
158   TProfile* fMultV0;                //! profile from V0 multiplicity
159   Float_t fV0Cpol1;                 // mean V0C multiplicity - from fit profile - ring 1
160   Float_t fV0Cpol2;                 // mean V0C multiplicity - from fit profile - ring 2
161   Float_t fV0Cpol3;                 // mean V0C multiplicity - from fit profile - ring 3
162   Float_t fV0Cpol4;                 // mean V0C multiplicity - from fit profile - ring 4
163   Float_t fV0Apol1;                 // mean V0A multiplicity - from fit profile - ring 1
164   Float_t fV0Apol2;                 // mean V0A multiplicity - from fit profile - ring 2
165   Float_t fV0Apol3;                 // mean V0A multiplicity - from fit profile - ring 3
166   Float_t fV0Apol4;                 // mean V0A multiplicity - from fit profile - ring 4
167   Float_t fMeanQxa2[10];             // mean Qxa values for centr - recentering
168   Float_t fMeanQya2[10];             // mean Qya values for centr - recentering
169   Float_t fMeanQxc2[10];             // mean Qxc values for centr - recentering
170   Float_t fMeanQyc2[10];             // mean Qyc values for centr - recentering
171
172   AliSpectraAODEventCuts(const AliSpectraAODEventCuts&);
173   AliSpectraAODEventCuts& operator=(const AliSpectraAODEventCuts&);
174   
175   ClassDef(AliSpectraAODEventCuts, 4);
176   
177 };
178 #endif
179