]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.h
Adding some more QA plots + trying to fix the delta phi analysis
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskBFPsi.h
1 #ifndef ALIANALYSISTASKBFPSI_CXX\r
2 #define ALIANALYSISTASKBFPSI_CXX\r
3 \r
4 // Analysis task for the BF vs Psi code\r
5 // Authors: Panos Cristakoglou@cern.ch\r
6 \r
7 class TList;\r
8 class TH1F;\r
9 class TH2F;\r
10 class TF1;\r
11 \r
12 class AliBalancePsi;\r
13 class AliESDtrackCuts;\r
14 \r
15 #include "AliAnalysisTaskSE.h"\r
16 #include "AliBalancePsi.h"\r
17 \r
18 #include "AliPID.h"  \r
19 #include "AliPIDResponse.h"\r
20 #include "AliPIDCombined.h"\r
21  \r
22 \r
23 class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {\r
24  public:\r
25   AliAnalysisTaskBFPsi(const char *name = "AliAnalysisTaskBFPsi");\r
26   virtual ~AliAnalysisTaskBFPsi(); \r
27   \r
28   \r
29   virtual void   UserCreateOutputObjects();\r
30   virtual void   UserExec(Option_t *option);\r
31   virtual void   FinishTaskOutput();\r
32   virtual void   Terminate(Option_t *);\r
33 \r
34   void SetAnalysisObject(AliBalancePsi *const analysis) {\r
35     fBalance         = analysis;\r
36     }\r
37   void SetShufflingObject(AliBalancePsi *const analysisShuffled) {\r
38     fRunShuffling = kTRUE;\r
39     fShuffledBalance = analysisShuffled;\r
40   }\r
41   void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {\r
42     fESDtrackCuts = trackCuts;}\r
43   void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {\r
44     fVxMax = vx;\r
45     fVyMax = vy;\r
46     fVzMax = vz;\r
47   }\r
48 \r
49   //==============AOD analysis==============//\r
50   void SetAODtrackCutBit(Int_t bit){\r
51     nAODtrackCutBit = bit;\r
52   }\r
53 \r
54   void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){\r
55     fPtMin  = ptmin;\r
56     fPtMax  = ptmax;\r
57     fEtaMin = etamin;\r
58     fEtaMax = etamax;\r
59 \r
60   }\r
61 \r
62   void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){\r
63     fDCAxyCut  = DCAxy;\r
64     fDCAzCut = DCAz;\r
65   }\r
66 \r
67    void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){\r
68     fTPCchi2Cut      = maxTPCchi2;\r
69     fNClustersTPCCut = minNClustersTPC;\r
70   }\r
71 \r
72   //==============MC analysis==============//\r
73   void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,\r
74                            Double_t etamin, Double_t etamax){\r
75     fPtMin  = ptmin; fPtMax  = ptmax;\r
76     fEtaMin = etamin; fEtaMax = etamax;\r
77   }\r
78   void UseFlowAfterBurner(TF1 *gDifferentialV2) {\r
79     fDifferentialV2 = gDifferentialV2;\r
80     fUseFlowAfterBurner = kTRUE;\r
81   }\r
82   void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}\r
83 \r
84   void SetPDGCode(Int_t gPdgCode) {\r
85     fUseMCPdgCode = kTRUE;\r
86     fPDGCodeToBeAnalyzed = gPdgCode;\r
87   }\r
88 \r
89   //Centrality\r
90   void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}\r
91   const char* GetCentralityEstimator(void)                     {return fCentralityEstimator;}\r
92   void SetCentralityPercentileRange(Double_t min, Double_t max) { \r
93     fUseCentrality = kTRUE;\r
94     fCentralityPercentileMin=min;\r
95     fCentralityPercentileMax=max;\r
96   }\r
97   void SetImpactParameterRange(Double_t min, Double_t max) { \r
98     fUseCentrality = kTRUE;\r
99     fImpactParameterMin=min;\r
100     fImpactParameterMax=max;\r
101   }\r
102 \r
103   //multiplicity\r
104   void SetMultiplicityRange(Int_t min, Int_t max) {\r
105     fUseMultiplicity = kTRUE;\r
106     fNumberOfAcceptedTracksMin = min;\r
107     fNumberOfAcceptedTracksMax = max;}\r
108   \r
109   void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}\r
110   \r
111   //Acceptance filter\r
112   void SetAcceptanceParameterization(TF1 *parameterization) {\r
113     fAcceptanceParameterization = parameterization;}\r
114 \r
115   //pid\r
116   enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)  \r
117   enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };  \r
118 \r
119   void SetUseBayesianPID(Double_t gMinProbabilityValue) {\r
120     fUsePID = kTRUE; fUsePIDnSigma = kFALSE; fUsePIDPropabilities = kTRUE;\r
121     fMinAcceptedPIDProbability = gMinProbabilityValue; }\r
122 \r
123   void SetUseNSigmaPID(Double_t gMaxNSigma) {\r
124     fUsePID = kTRUE; fUsePIDPropabilities = kFALSE; fUsePIDnSigma = kTRUE;\r
125     fPIDNSigma = gMaxNSigma; }\r
126 \r
127   void SetParticleOfInterest(kParticleOfInterest poi) {\r
128     fParticleOfInterest = poi;}\r
129   void SetDetectorUsedForPID(kDetectorUsedForPID detConfig) {\r
130     fPidDetectorConfig = detConfig;}\r
131 \r
132  private:\r
133   AliBalancePsi *fBalance; //BF object\r
134   Bool_t fRunShuffling;//run shuffling or not\r
135   AliBalancePsi *fShuffledBalance; //BF object (shuffled)\r
136   TList *fList; //fList object\r
137   TList *fListBF; //fList object\r
138   TList *fListBFS; //fList object\r
139   TList *fHistListPIDQA;  //! list of histograms\r
140 \r
141   TH2F *fHistEventStats; //event stats\r
142   TH2F *fHistCentStats; //centrality stats\r
143   TH1F *fHistTriggerStats; //trigger stats\r
144   TH1F *fHistTrackStats; //Track filter bit stats\r
145   TH1F *fHistVx; //x coordinate of the primary vertex\r
146   TH1F *fHistVy; //y coordinate of the primary vertex\r
147   TH2F *fHistVz; //z coordinate of the primary vertex\r
148 \r
149   TH2F *fHistEventPlane; //event plane distribution\r
150 \r
151   TH2F *fHistClus;//\r
152   TH2F *fHistDCA;//\r
153   TH2F *fHistChi2;//\r
154   TH2F *fHistPt;//\r
155   TH2F *fHistEta;//\r
156   TH2F *fHistRapidity;//\r
157   TH2F *fHistPhi;//\r
158   TH2F *fHistPhiBefore;//\r
159   TH2F *fHistPhiAfter;//\r
160   TH2F *fHistPhiPos;//\r
161   TH2F *fHistPhiNeg;//\r
162   TH2F *fHistV0M;//\r
163   TH2F *fHistRefTracks;//\r
164 \r
165   //============PID============//\r
166   TH2D *fHistdEdxVsPTPCbeforePID;//\r
167   TH2D *fHistBetavsPTOFbeforePID;//\r
168   TH2D *fHistProbTPCvsPtbeforePID; //\r
169   TH2D *fHistProbTOFvsPtbeforePID;//\r
170   TH2D *fHistProbTPCTOFvsPtbeforePID;//\r
171   TH2D *fHistNSigmaTPCvsPtbeforePID;//\r
172   TH2D *fHistNSigmaTOFvsPtbeforePID;//\r
173   TH2D *fHistdEdxVsPTPCafterPID;//\r
174   TH2D *fHistBetavsPTOFafterPID;//\r
175   TH2D *fHistProbTPCvsPtafterPID;//\r
176   TH2D *fHistProbTOFvsPtafterPID;//\r
177   TH2D *fHistProbTPCTOFvsPtafterPID;//\r
178   TH2D *fHistNSigmaTPCvsPtafterPID;//\r
179   TH2D *fHistNSigmaTOFvsPtafterPID; //\r
180 \r
181   AliPIDResponse *fPIDResponse;     //! PID response object\r
182   AliPIDCombined       *fPIDCombined;     //! combined PID object\r
183   \r
184   kParticleOfInterest  fParticleOfInterest;\r
185   kDetectorUsedForPID   fPidDetectorConfig;\r
186 \r
187   Bool_t fUsePID; //\r
188   Bool_t fUsePIDnSigma;//\r
189   Bool_t fUsePIDPropabilities;//\r
190   Double_t fPIDNSigma;//\r
191   Double_t fMinAcceptedPIDProbability;//\r
192   //============PID============//\r
193 \r
194   AliESDtrackCuts *fESDtrackCuts; //ESD track cuts\r
195 \r
196   TString fCentralityEstimator;      //"V0M","TRK","TKL","ZDC","FMD"\r
197   Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)\r
198   Double_t fCentralityPercentileMin;//centrality percentile min\r
199   Double_t fCentralityPercentileMax;//centrality percentile max\r
200   Double_t fImpactParameterMin;//impact parameter min (used for MC)\r
201   Double_t fImpactParameterMax;//impact parameter max (used for MC)\r
202 \r
203   Bool_t fUseMultiplicity;//use the multiplicity cuts\r
204   Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
205   Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
206   TH2F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks\r
207 \r
208   Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection\r
209 \r
210   Double_t fVxMax;//vxmax\r
211   Double_t fVyMax;//vymax\r
212   Double_t fVzMax;//vzmax\r
213 \r
214   Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)\r
215 \r
216   Double_t fPtMin;//only used for AODs\r
217   Double_t fPtMax;//only used for AODs\r
218   Double_t fEtaMin;//only used for AODs\r
219   Double_t fEtaMax;//only used for AODs\r
220 \r
221   Double_t fDCAxyCut;//only used for AODs\r
222   Double_t fDCAzCut;//only used for AODs\r
223 \r
224   Double_t fTPCchi2Cut;//only used for AODs\r
225   Int_t fNClustersTPCCut;//only used for AODs\r
226 \r
227   TF1 *fAcceptanceParameterization;//acceptance filter used for MC\r
228 \r
229   TF1 *fDifferentialV2;//pt-differential v2 (from real data)\r
230   Bool_t fUseFlowAfterBurner;//Usage of a flow after burner\r
231 \r
232   Bool_t fExcludeResonancesInMC;//flag to exclude the resonances' decay products from the MC analysis\r
233   Bool_t fUseMCPdgCode; //Boolean to analyze a set of particles in MC\r
234   Int_t fPDGCodeToBeAnalyzed; //Analyze a set of particles in MC\r
235 \r
236   \r
237 \r
238   AliAnalysisTaskBFPsi(const AliAnalysisTaskBFPsi&); // not implemented\r
239   AliAnalysisTaskBFPsi& operator=(const AliAnalysisTaskBFPsi&); // not implemented\r
240   \r
241   ClassDef(AliAnalysisTaskBFPsi, 5); // example of analysis\r
242 };\r
243 \r
244 #endif\r