]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.h
new EMCal tasks for PA analysis
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskEMCalHFEpA.h
CommitLineData
c852fdae 1#ifndef AliAnalysisTaskEMCalHFEpA_cxx
2#define AliAnalysisTaskEMCalHFEpA_cxx
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7////////////////////////////////////////////////////////////////////////
8// //
9// Task for Heavy-flavour electron analysis in pPb collisions //
10// (+ Electron-Hadron Jetlike Azimuthal Correlation) //
11// //
12// v1.0 //
13// //
14// Authors //
15// Elienos Pereira de Oliveira Filho (epereira@cern.ch) //
16// Cristiane Jahnke (cristiane.jahnke@cern.ch) //
17// //
18////////////////////////////////////////////////////////////////////////
19
20class TH1F;
21class TH2F;
22class AliESDEvent;
23class AliESDtrackCuts;
24class AliESDtrack;
25class AliHFEcontainer;
26class AliHFEcuts;
27class AliHFEpid;
28class AliHFEpidQAmanager;
29class AliCFManager;
30class AliPIDResponse;
31class AliCentrality;
32class AliAODEvent;
33class AliVEvent;
34class AliAODMCHeader;
35class AliSelectNonHFE;
36class AliEventPoolManager;
37class AliEventPool;
38class TObjArray;
39
40//______________________________________________________________________
41//Library
42#include "AliAnalysisTaskSE.h"
43#include "AliHFEpid.h"
44#include "AliLog.h"
45//______________________________________________________________________
46
47//______________________________________________________________________
48class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE
49{
50//______________________________________________________________________
51 public:
52 AliAnalysisTaskEMCalHFEpA();
53 AliAnalysisTaskEMCalHFEpA(const char *name);
54 virtual ~AliAnalysisTaskEMCalHFEpA();
55
56 virtual void UserCreateOutputObjects();
57 virtual void UserExec(Option_t *option);
58 virtual void Terminate(Option_t *);
59
60 //Setters
61 void SetHFECuts(AliHFEcuts * const cuts) {fCuts = cuts;};
62 void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) {fRejectKinkMother = rejectKinkMother;};
63 void SetCorrelationAnalysis() {fCorrelationFlag = kTRUE;};
64 void SetMCanalysis() {fIsMC = kTRUE;};
65 void SetCentrality(Double_t CentralityMin, Double_t CentralityMax) { fCentralityMin = CentralityMin; fCentralityMax = CentralityMax; fHasCentralitySelection = kTRUE; };
66 void SetAODanalysis(Bool_t IsAOD) {fIsAOD = IsAOD;};
67 void SetEventMixing(Bool_t EventMixingFlag) { fEventMixingFlag = EventMixingFlag;};
68 void SetNonHFEmassCut(Double_t MassCut) { fMassCut = MassCut; fMassCutFlag = kTRUE;};
69 void SetEtaCut(Double_t EtaCutMin,Double_t EtaCutMax ) { fEtaCutMin = EtaCutMin; fEtaCutMax = EtaCutMax; };
70 void SetEoverPCut(Double_t EoverPCutMin,Double_t EoverPCutMax ) { fEoverPCutMin = EoverPCutMin; fEoverPCutMax = EoverPCutMax; };
71 void SetNonHFEangleCut(Double_t AngleCut) { fAngleCut = AngleCut; fAngleCutFlag = kTRUE;};
72 void SetNonHFEchi2Cut(Double_t Chi2Cut) { fChi2Cut = Chi2Cut; fChi2CutFlag = kTRUE;};
73 void SetNonHFEdcaCut(Double_t DCAcut) { fDCAcut = DCAcut; fDCAcutFlag = kTRUE;};
74 void SetUseEMCal() { fUseEMCal=kTRUE;};
75 void SetEMCalTriggerEG1() { fEMCEG1=kTRUE; };
76 void SetEMCalTriggerEG2() { fEMCEG2=kTRUE; };
77 void SetCentralityEstimator(Int_t Estimator) { fEstimator=Estimator; }; //0 = V0A, 1 = Other
78
79 //Getters
80 AliHFEpid *GetPID() const {return fPID;};
81//______________________________________________________________________
82
83//______________________________________________________________________
84 private:
85
86//Function to process track cuts
87 Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
88//Function to process eh analysis
89 void ElectronHadronCorrelation(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack);
90//Selected Hadrons, for mixed event analysis
91 TObjArray* SelectedHadrons();
92//DiHadron Correlation Background
93 void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex);
94//Find Mothers (Finde HFE and NonHFE from MC information)
95 Bool_t FindMother(Int_t mcIndex);
96
97//Flags for specifics analysis
98 Bool_t fCorrelationFlag;
99 Bool_t fIsMC;
100 Bool_t fUseEMCal;
101 Bool_t fEMCEG1;
102 Bool_t fEMCEG2;
103
104//Used in the function FindMother
105 Bool_t fIsHFE1;
106 Bool_t fIsHFE2;
107 Bool_t fIsNonHFE;
108 Bool_t fIsFromD;
109 Bool_t fIsFromB;
110 Bool_t fIsFromPi0;
111 Bool_t fIsFromEta;
112 Bool_t fIsFromGamma;
113
114//General variables
115 AliESDEvent *fESD;
116 AliAODEvent *fAOD; /// new
117 AliVEvent *fVevent; /// new
118 AliESDtrackCuts *fPartnerCuts;
119 TList *fOutputList;
120 AliPIDResponse *fPidResponse;
121 AliSelectNonHFE *fNonHFE;
122
123//For the case of AOD analysis
124 Bool_t fIsAOD; //flag for AOD analysis
125
126//For Centrality Selection
127 AliCentrality *fCentrality;
128 Double_t fCentralityMin;
129 Double_t fCentralityMax;
130 Bool_t fHasCentralitySelection;
131 TH1F *fCentralityHist;
132 TH1F *fCentralityHistPass;
133 Float_t fZvtx;
134 Int_t fEstimator;
135
136//EMCal
137 //AliESDCaloCluster *fClus;
138 AliVCluster *fClus;
139
140//Histograms
141 TH1F *fNevent;
142 TH1F *fPtElec_Inc;
143 TH1F *fPtElec_ULS;
144 TH1F *fPtElec_LS;
145
146 //PID Histograms
147 TH1F *fpid;
148
149 TH2F **fEoverP_pt;
150 TH2F **fEoverP_tpc;
151
152 TH1F **fTPC_pt;
153 TH2F **fTPC_p;
154
155 TH1F **fTPCnsigma_pt;
156 TH2F **fTPCnsigma_p;
157 TH2F *fTPCnsigma_pt_2D;
158
159 TH2F *fTPCnsigma_eta;
160 TH2F *fTPCnsigma_phi;
161
162
163 TH1F **fECluster;
164 TH2F **fEtaPhi;
165 TH1F **fVtxZ;
166 TH1F **fNTracks;
167 TH1F **fNClusters;
168 TH2F **fTPCNcls_EoverP;
169
170 TH1F **fEta;
171 TH1F **fPhi;
172 TH1F **fR;
173 TH2F **fR_EoverP;
174 TH1F **fNcells;
175 TH2F **fNcells_EoverP;
176 TH1F **fNcells_electrons;
177 TH1F **fNcells_hadrons;
178 TH1F **fECluster_ptbins;
179 TH1F **fEoverP_ptbins;
180 TH1F **fEoverP_wSSCut;
181 TH2F **fM02_EoverP;
182 TH2F **fM20_EoverP;
183 TH2F **fTPCnsigma_eta_electrons;
184 TH2F **fTPCnsigma_eta_hadrons;
185
186 TH2F *fEoverP_pt_pions;
187
188 TH2F *ftpc_p_EoverPcut;
189 TH2F *fnsigma_p_EoverPcut;
190
191 TH2F *fEoverP_pt_pions2;
192 TH2F *fNcells_pt;
193 TH2F *fEoverP_pt_hadrons;
194
195 //Electron-Hadron Correlation Histograms
196 TH2F **fCEtaPhi_Inc;
197
198 TH2F **fCEtaPhi_ULS;
199 TH2F **fCEtaPhi_LS;
200 TH2F **fCEtaPhi_ULS_NoP;
201 TH2F **fCEtaPhi_LS_NoP;
202
203 TH2F **fCEtaPhi_ULS_Weight;
204 TH2F **fCEtaPhi_LS_Weight;
205 TH2F **fCEtaPhi_ULS_NoP_Weight;
206 TH2F **fCEtaPhi_LS_NoP_Weight;
207
208 TH1F *fInvMass;
209 TH1F *fInvMassBack;
210 TH1F *fDCA;
211 TH1F *fDCABack;
212 TH1F *fOpAngle;
213 TH1F *fOpAngleBack;
214
215 Double_t fMassCut;
216 Double_t fEtaCutMin;
217 Double_t fEtaCutMax;
218 Double_t fEoverPCutMin;
219 Double_t fEoverPCutMax;
220 Double_t fAngleCut;
221 Double_t fChi2Cut;
222 Double_t fDCAcut;
223 Bool_t fMassCutFlag;
224 Bool_t fAngleCutFlag;
225 Bool_t fChi2CutFlag;
226 Bool_t fDCAcutFlag;
227
228 //Non-HFE reconstruction efficiency
229 TH1F *fPtBackgroundBeforeReco;
230 TH1F *fPtBackgroundAfterReco;
231 //Tracking Efficiency
232 TH1F *fPtMCparticleAll;
233 TH1F *fPtMCparticleReco;
234 TH1F *fPtMCparticleAllHfe1;
235 TH1F *fPtMCparticleRecoHfe1;
236 TH1F *fPtMCparticleAllHfe2;
237 TH1F *fPtMCparticleRecoHfe2;
238 TH1F *fPtMCelectronAfterAll;
239
240 TH1F *fPtMCpi0;
241
242 TH1F *fPtMC_EMCal_All;
243 TH1F *fPtMC_EMCal_Selected;
244 TH1F *fPtMC_TPC_All;
245 TH1F *fPtMC_TPC_Selected;
246
247 TH1F *fPtMCWithLabel;
248 TH1F *fPtMCWithoutLabel;
249 TH1F *fPtIsPhysicaPrimary;
250
251//For the HFE package
252 AliHFEcuts *fCuts; // Cut Collection for HFE
253 AliCFManager *fCFM; // Correction Framework Manager
254 AliHFEpid *fPID; // PID
255 AliHFEpidQAmanager *fPIDqa; // PID QA manager
256
257//Others
258 AliStack *fMCstack; //
259 Bool_t fRejectKinkMother; //
260 TParticle *fMCtrack;
261 TParticle *fMCtrackMother;
262 TParticle *fMCtrackGMother;
263 TParticle *fMCtrackGGMother;
264 TParticle *fMCtrackGGGMother;
265 TClonesArray *fMCarray;
266 AliAODMCHeader *fMCheader;
267 AliAODMCParticle *fMCparticle;
268 AliAODMCParticle *fMCparticleMother;
269 AliAODMCParticle *fMCparticleGMother;
270 AliAODMCParticle *fMCparticleGGMother;
271 AliAODMCParticle *fMCparticleGGGMother;
272 AliMCEventHandler *fEventHandler;
273 AliMCEvent *fMCevent;
274
275//______________________________________________________________________
276//Mixed event analysis
277 AliEventPoolManager *fPoolMgr;
278 AliEventPool *fPool;
279 TObjArray *fTracksClone;
280 TObjArray *fTracks;
281
282 TH2F **fCEtaPhi_Inc_EM;
283
284 TH2F **fCEtaPhi_ULS_EM;
285 TH2F **fCEtaPhi_LS_EM;
286
287 TH2F **fCEtaPhi_ULS_Weight_EM;
288 TH2F **fCEtaPhi_LS_Weight_EM;
289
290 TH1F *fPoolNevents;
291
292 Bool_t fEventMixingFlag;
293//______________________________________________________________________
294
295//______________________________________________________________________
296//Di-hadron correlation
297 TH2F **fCEtaPhi_Inc_DiHadron;
298 TH1F *fPtTrigger_Inc;
299//______________________________________________________________________
300
301 AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&); // not implemented
302 AliAnalysisTaskEMCalHFEpA& operator=(const AliAnalysisTaskEMCalHFEpA&); // not implemented
303
304 ClassDef(AliAnalysisTaskEMCalHFEpA, 1); // example of analysis
305//______________________________________________________________________
306};
307
308///_________________________________________________________________________________________________
309///Class copied from : $ALICE_ROOT/PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.h
310///Author: Christoph Mayer
311class AliEHCParticle : public TObject {
312public:
313 AliEHCParticle(Double_t eta=0, Double_t phi=0, Double_t pt=0)
314 : fEta(eta), fPhi(phi), fPt(pt) {}
315 virtual ~AliEHCParticle() {}
316
317 Double_t Eta() const { return fEta; }
318 Double_t Phi() const { return fPhi; }
319 Double_t Pt() const { return fPt; }
320
321protected:
322private:
323 AliEHCParticle(const AliEHCParticle&);
324 AliEHCParticle& operator=(const AliEHCParticle&);
325
326 Double_t fEta;
327 Double_t fPhi;
328 Double_t fPt;
329
330 ClassDef(AliEHCParticle, 1);
331} ;
332///_________________________________________________________________________________________________
333
334#endif