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