]>
Commit | Line | Data |
---|---|---|
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 | ||
9a1f999b | 7 | //////////////////////////////////////////////////////////////////////// |
8 | // // | |
9 | // Task for Heavy-flavour electron analysis in pPb collisions // | |
10 | // (+ Electron-Hadron Jetlike Azimuthal Correlation) // | |
11 | // // | |
12 | // version: September 12th, 2013. // | |
13 | // // | |
14 | // Authors // | |
15 | // Elienos Pereira de Oliveira Filho (epereira@cern.ch) // | |
16 | // Cristiane Jahnke (cristiane.jahnke@cern.ch) // | |
17 | // // | |
18 | //////////////////////////////////////////////////////////////////////// | |
c852fdae | 19 | |
20 | class TH1F; | |
21 | class TH2F; | |
22 | class AliESDEvent; | |
23 | class AliESDtrackCuts; | |
24 | class AliESDtrack; | |
25 | class AliHFEcontainer; | |
26 | class AliHFEcuts; | |
27 | class AliHFEpid; | |
28 | class AliHFEpidQAmanager; | |
29 | class AliCFManager; | |
30 | class AliPIDResponse; | |
31 | class AliCentrality; | |
32 | class AliAODEvent; | |
33 | class AliVEvent; | |
34 | class AliAODMCHeader; | |
35 | class AliSelectNonHFE; | |
36 | class AliEventPoolManager; | |
37 | class AliEventPool; | |
38 | class TObjArray; | |
39 | ||
9a1f999b | 40 | //______________________________________________________________________ |
41 | //Library | |
c852fdae | 42 | #include "AliAnalysisTaskSE.h" |
43 | #include "AliHFEpid.h" | |
44 | #include "AliLog.h" | |
9a1f999b | 45 | //______________________________________________________________________ |
c852fdae | 46 | |
9a1f999b | 47 | //______________________________________________________________________ |
c852fdae | 48 | class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE |
49 | { | |
9a1f999b | 50 | //______________________________________________________________________ |
51 | public: | |
c852fdae | 52 | AliAnalysisTaskEMCalHFEpA(); |
53 | AliAnalysisTaskEMCalHFEpA(const char *name); | |
54 | virtual ~AliAnalysisTaskEMCalHFEpA(); | |
9a1f999b | 55 | |
c852fdae | 56 | virtual void UserCreateOutputObjects(); |
57 | virtual void UserExec(Option_t *option); | |
58 | virtual void Terminate(Option_t *); | |
9a1f999b | 59 | |
60 | //Setters | |
c852fdae | 61 | void SetHFECuts(AliHFEcuts * const cuts) {fCuts = cuts;}; |
62 | void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) {fRejectKinkMother = rejectKinkMother;}; | |
a89620c8 | 63 | void SetCorrelationAnalysis(Bool_t CorrelationFlag=kTRUE) {fCorrelationFlag = CorrelationFlag;}; |
c852fdae | 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; }; | |
a6f21076 | 70 | |
71 | void SetdPhidEtaCut(Double_t dPhiCut, Double_t dEtaCut ) { fdPhiCut = dPhiCut;fdEtaCut = dEtaCut ;}; | |
72 | ||
c852fdae | 73 | void SetEoverPCut(Double_t EoverPCutMin,Double_t EoverPCutMax ) { fEoverPCutMin = EoverPCutMin; fEoverPCutMax = EoverPCutMax; }; |
a6f21076 | 74 | |
75 | void SetM02Cut(Double_t M02CutMin,Double_t M02CutMax ) { fM02CutMin = M02CutMin; fM02CutMax = M02CutMax; }; | |
76 | void SetM20Cut(Double_t M20CutMin,Double_t M20CutMax ) { fM20CutMin = M20CutMin; fM20CutMax = M20CutMax; }; | |
77 | ||
78 | ||
c852fdae | 79 | void SetNonHFEangleCut(Double_t AngleCut) { fAngleCut = AngleCut; fAngleCutFlag = kTRUE;}; |
80 | void SetNonHFEchi2Cut(Double_t Chi2Cut) { fChi2Cut = Chi2Cut; fChi2CutFlag = kTRUE;}; | |
81 | void SetNonHFEdcaCut(Double_t DCAcut) { fDCAcut = DCAcut; fDCAcutFlag = kTRUE;}; | |
82 | void SetUseEMCal() { fUseEMCal=kTRUE;}; | |
a89620c8 | 83 | void SetUseShowerShapeCut(Bool_t UseShowerShapeCut=kFALSE) { fUseShowerShapeCut=UseShowerShapeCut;}; |
84 | void SetBackground(Bool_t FillBackground=kFALSE) { fFillBackground=FillBackground;}; | |
c852fdae | 85 | void SetEMCalTriggerEG1() { fEMCEG1=kTRUE; }; |
86 | void SetEMCalTriggerEG2() { fEMCEG2=kTRUE; }; | |
87 | void SetCentralityEstimator(Int_t Estimator) { fEstimator=Estimator; }; //0 = V0A, 1 = Other | |
9a1f999b | 88 | void SetAdditionalCuts(Double_t PtMinAsso, Int_t TpcNclsAsso) {fPtMinAsso = PtMinAsso; fTpcNclsAsso = TpcNclsAsso;}; |
c852fdae | 89 | |
9a1f999b | 90 | //Getters |
c852fdae | 91 | AliHFEpid *GetPID() const {return fPID;}; |
9a1f999b | 92 | //______________________________________________________________________ |
c852fdae | 93 | |
9a1f999b | 94 | //______________________________________________________________________ |
95 | private: | |
96 | ||
97 | //Function to process track cuts | |
c852fdae | 98 | Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track); |
9a1f999b | 99 | //Function to process eh analysis |
c852fdae | 100 | void ElectronHadronCorrelation(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack); |
9a1f999b | 101 | //Function to find non-HFE and fill histos |
9a4682da | 102 | void Background(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack, Bool_t IsTPConly); |
9a1f999b | 103 | //Selected Hadrons, for mixed event analysis |
c852fdae | 104 | TObjArray* SelectedHadrons(); |
9a1f999b | 105 | //DiHadron Correlation Background |
c852fdae | 106 | void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex); |
9a1f999b | 107 | //Find Mothers (Finde HFE and NonHFE from MC information) |
c852fdae | 108 | Bool_t FindMother(Int_t mcIndex); |
9a1f999b | 109 | |
110 | //Flags for specifics analysis | |
c852fdae | 111 | Bool_t fCorrelationFlag; |
112 | Bool_t fIsMC; | |
113 | Bool_t fUseEMCal; | |
a89620c8 | 114 | Bool_t fUseShowerShapeCut; |
115 | Bool_t fFillBackground; | |
9a4682da | 116 | |
9a1f999b | 117 | |
c852fdae | 118 | Bool_t fEMCEG1; |
119 | Bool_t fEMCEG2; | |
9a1f999b | 120 | |
121 | //Used in the function FindMother | |
c852fdae | 122 | Bool_t fIsHFE1; |
123 | Bool_t fIsHFE2; | |
124 | Bool_t fIsNonHFE; | |
125 | Bool_t fIsFromD; | |
126 | Bool_t fIsFromB; | |
127 | Bool_t fIsFromPi0; | |
128 | Bool_t fIsFromEta; | |
129 | Bool_t fIsFromGamma; | |
130 | ||
9a1f999b | 131 | //General variables |
c852fdae | 132 | AliESDEvent *fESD; |
133 | AliAODEvent *fAOD; /// new | |
134 | AliVEvent *fVevent; /// new | |
135 | AliESDtrackCuts *fPartnerCuts; | |
136 | TList *fOutputList; | |
137 | AliPIDResponse *fPidResponse; | |
138 | AliSelectNonHFE *fNonHFE; | |
139 | ||
9a1f999b | 140 | //For the case of AOD analysis |
c852fdae | 141 | Bool_t fIsAOD; //flag for AOD analysis |
142 | ||
9a1f999b | 143 | //For Centrality Selection |
c852fdae | 144 | AliCentrality *fCentrality; |
145 | Double_t fCentralityMin; | |
146 | Double_t fCentralityMax; | |
147 | Bool_t fHasCentralitySelection; | |
148 | TH1F *fCentralityHist; | |
149 | TH1F *fCentralityHistPass; | |
150 | Float_t fZvtx; | |
151 | Int_t fEstimator; | |
152 | ||
9a1f999b | 153 | //EMCal |
a89620c8 | 154 | |
c852fdae | 155 | AliVCluster *fClus; |
9a1f999b | 156 | //AliESDCaloCluster *fClusESD; |
c852fdae | 157 | |
9a1f999b | 158 | //Histograms |
c852fdae | 159 | TH1F *fNevent; |
160 | TH1F *fPtElec_Inc; | |
9a1f999b | 161 | |
a6f21076 | 162 | |
163 | TH1F *fCharge_n; | |
164 | TH1F *fCharge_p; | |
165 | ||
a89620c8 | 166 | TH2D *fTime; |
167 | TH2D *fTime2; | |
168 | TH2D *ftimingEle; | |
169 | TH2D *ftimingEle2; | |
170 | ||
c852fdae | 171 | TH1F *fPtElec_ULS; |
172 | TH1F *fPtElec_LS; | |
9a4682da | 173 | TH1F *fPtElec_ULS2; |
174 | TH1F *fPtElec_LS2; | |
c852fdae | 175 | |
9a1f999b | 176 | //PID Histograms |
c852fdae | 177 | TH1F *fpid; |
178 | ||
179 | TH2F **fEoverP_pt; | |
180 | TH2F **fEoverP_tpc; | |
181 | ||
182 | TH1F **fTPC_pt; | |
183 | TH2F **fTPC_p; | |
184 | ||
185 | TH1F **fTPCnsigma_pt; | |
186 | TH2F **fTPCnsigma_p; | |
187 | TH2F *fTPCnsigma_pt_2D; | |
a89620c8 | 188 | TH2F *fShowerShapeCut; |
9a4682da | 189 | TH2F *fShowerShapeM02_EoverP; |
190 | TH2F *fShowerShapeM20_EoverP; | |
191 | TH2F *fShowerShape_ha; | |
192 | TH2F *fShowerShape_ele; | |
c852fdae | 193 | |
194 | TH2F *fTPCnsigma_eta; | |
195 | TH2F *fTPCnsigma_phi; | |
196 | ||
9a1f999b | 197 | |
c852fdae | 198 | TH1F **fECluster; |
199 | TH2F **fEtaPhi; | |
200 | TH1F **fVtxZ; | |
201 | TH1F **fNTracks; | |
202 | TH1F **fNClusters; | |
203 | TH2F **fTPCNcls_EoverP; | |
204 | ||
205 | TH1F **fEta; | |
206 | TH1F **fPhi; | |
207 | TH1F **fR; | |
208 | TH2F **fR_EoverP; | |
209 | TH1F **fNcells; | |
210 | TH2F **fNcells_EoverP; | |
211 | TH1F **fNcells_electrons; | |
212 | TH1F **fNcells_hadrons; | |
213 | TH1F **fECluster_ptbins; | |
214 | TH1F **fEoverP_ptbins; | |
215 | TH1F **fEoverP_wSSCut; | |
216 | TH2F **fM02_EoverP; | |
217 | TH2F **fM20_EoverP; | |
218 | TH2F **fTPCnsigma_eta_electrons; | |
219 | TH2F **fTPCnsigma_eta_hadrons; | |
220 | ||
221 | TH2F *fEoverP_pt_pions; | |
222 | ||
223 | TH2F *ftpc_p_EoverPcut; | |
224 | TH2F *fnsigma_p_EoverPcut; | |
225 | ||
226 | TH2F *fEoverP_pt_pions2; | |
227 | TH2F *fNcells_pt; | |
228 | TH2F *fEoverP_pt_hadrons; | |
229 | ||
9a1f999b | 230 | //Electron-Hadron Correlation Histograms |
c852fdae | 231 | TH2F **fCEtaPhi_Inc; |
232 | ||
233 | TH2F **fCEtaPhi_ULS; | |
234 | TH2F **fCEtaPhi_LS; | |
235 | TH2F **fCEtaPhi_ULS_NoP; | |
236 | TH2F **fCEtaPhi_LS_NoP; | |
237 | ||
238 | TH2F **fCEtaPhi_ULS_Weight; | |
239 | TH2F **fCEtaPhi_LS_Weight; | |
240 | TH2F **fCEtaPhi_ULS_NoP_Weight; | |
241 | TH2F **fCEtaPhi_LS_NoP_Weight; | |
242 | ||
243 | TH1F *fInvMass; | |
244 | TH1F *fInvMassBack; | |
245 | TH1F *fDCA; | |
246 | TH1F *fDCABack; | |
247 | TH1F *fOpAngle; | |
248 | TH1F *fOpAngleBack; | |
249 | ||
9a4682da | 250 | TH1F *fInvMass2; |
251 | TH1F *fInvMassBack2; | |
252 | TH1F *fDCA2; | |
253 | TH1F *fDCABack2; | |
254 | TH1F *fOpAngle2; | |
255 | TH1F *fOpAngleBack2; | |
256 | ||
c852fdae | 257 | Double_t fMassCut; |
258 | Double_t fEtaCutMin; | |
259 | Double_t fEtaCutMax; | |
a6f21076 | 260 | |
261 | Double_t fdPhiCut; | |
262 | Double_t fdEtaCut; | |
263 | ||
c852fdae | 264 | Double_t fEoverPCutMin; |
265 | Double_t fEoverPCutMax; | |
a6f21076 | 266 | Double_t fM20CutMin; |
267 | Double_t fM20CutMax; | |
268 | Double_t fM02CutMin; | |
269 | Double_t fM02CutMax; | |
270 | ||
c852fdae | 271 | Double_t fAngleCut; |
272 | Double_t fChi2Cut; | |
273 | Double_t fDCAcut; | |
274 | Bool_t fMassCutFlag; | |
275 | Bool_t fAngleCutFlag; | |
276 | Bool_t fChi2CutFlag; | |
277 | Bool_t fDCAcutFlag; | |
278 | ||
9a1f999b | 279 | //Non-HFE reconstruction efficiency |
c852fdae | 280 | TH1F *fPtBackgroundBeforeReco; |
9a4682da | 281 | TH1F *fPtBackgroundBeforeReco2; |
282 | TH1F *fPtBackgroundAfterReco; | |
283 | ||
9a1f999b | 284 | Double_t fPtMinAsso; |
285 | Int_t fTpcNclsAsso; | |
9a4682da | 286 | |
9a1f999b | 287 | //Tracking Efficiency |
c852fdae | 288 | TH1F *fPtMCparticleAll; |
9a1f999b | 289 | TH1F *fPtMCparticleAll_nonPrimary; |
290 | TH1F *fPtMCparticleAlle_nonPrimary; | |
291 | ||
c852fdae | 292 | TH1F *fPtMCparticleReco; |
9a1f999b | 293 | TH1F *fPtMCparticleReco_nonPrimary; |
c852fdae | 294 | TH1F *fPtMCparticleAllHfe1; |
295 | TH1F *fPtMCparticleRecoHfe1; | |
296 | TH1F *fPtMCparticleAllHfe2; | |
297 | TH1F *fPtMCparticleRecoHfe2; | |
298 | TH1F *fPtMCelectronAfterAll; | |
9a1f999b | 299 | TH1F *fPtMCelectronAfterAll_nonPrimary; |
c852fdae | 300 | |
301 | TH1F *fPtMCpi0; | |
9a1f999b | 302 | TH1F *fPtMCeta; |
c852fdae | 303 | |
304 | TH1F *fPtMC_EMCal_All; | |
305 | TH1F *fPtMC_EMCal_Selected; | |
306 | TH1F *fPtMC_TPC_All; | |
307 | TH1F *fPtMC_TPC_Selected; | |
308 | ||
309 | TH1F *fPtMCWithLabel; | |
310 | TH1F *fPtMCWithoutLabel; | |
311 | TH1F *fPtIsPhysicaPrimary; | |
312 | ||
9a1f999b | 313 | //For the HFE package |
c852fdae | 314 | AliHFEcuts *fCuts; // Cut Collection for HFE |
315 | AliCFManager *fCFM; // Correction Framework Manager | |
316 | AliHFEpid *fPID; // PID | |
317 | AliHFEpidQAmanager *fPIDqa; // PID QA manager | |
318 | ||
9a1f999b | 319 | //Others |
c852fdae | 320 | AliStack *fMCstack; // |
321 | Bool_t fRejectKinkMother; // | |
322 | TParticle *fMCtrack; | |
323 | TParticle *fMCtrackMother; | |
324 | TParticle *fMCtrackGMother; | |
325 | TParticle *fMCtrackGGMother; | |
326 | TParticle *fMCtrackGGGMother; | |
327 | TClonesArray *fMCarray; | |
328 | AliAODMCHeader *fMCheader; | |
329 | AliAODMCParticle *fMCparticle; | |
330 | AliAODMCParticle *fMCparticleMother; | |
331 | AliAODMCParticle *fMCparticleGMother; | |
332 | AliAODMCParticle *fMCparticleGGMother; | |
333 | AliAODMCParticle *fMCparticleGGGMother; | |
334 | AliMCEventHandler *fEventHandler; | |
335 | AliMCEvent *fMCevent; | |
9a1f999b | 336 | |
337 | //______________________________________________________________________ | |
338 | //Mixed event analysis | |
c852fdae | 339 | AliEventPoolManager *fPoolMgr; |
340 | AliEventPool *fPool; | |
341 | TObjArray *fTracksClone; | |
342 | TObjArray *fTracks; | |
343 | ||
344 | TH2F **fCEtaPhi_Inc_EM; | |
345 | ||
346 | TH2F **fCEtaPhi_ULS_EM; | |
347 | TH2F **fCEtaPhi_LS_EM; | |
348 | ||
349 | TH2F **fCEtaPhi_ULS_Weight_EM; | |
350 | TH2F **fCEtaPhi_LS_Weight_EM; | |
351 | ||
352 | TH1F *fPoolNevents; | |
353 | ||
354 | Bool_t fEventMixingFlag; | |
9a1f999b | 355 | //______________________________________________________________________ |
356 | ||
357 | //______________________________________________________________________ | |
358 | //Di-hadron correlation | |
c852fdae | 359 | TH2F **fCEtaPhi_Inc_DiHadron; |
360 | TH1F *fPtTrigger_Inc; | |
9a1f999b | 361 | //______________________________________________________________________ |
362 | ||
c852fdae | 363 | AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&); // not implemented |
364 | AliAnalysisTaskEMCalHFEpA& operator=(const AliAnalysisTaskEMCalHFEpA&); // not implemented | |
9a1f999b | 365 | |
c852fdae | 366 | ClassDef(AliAnalysisTaskEMCalHFEpA, 1); // example of analysis |
9a1f999b | 367 | //______________________________________________________________________ |
c852fdae | 368 | }; |
369 | ||
9a1f999b | 370 | ///_________________________________________________________________________________________________ |
371 | ///Class copied from : $ALICE_ROOT/PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.h | |
372 | ///Author: Christoph Mayer | |
c852fdae | 373 | class AliEHCParticle : public TObject { |
374 | public: | |
9a1f999b | 375 | AliEHCParticle(Double_t eta=0, Double_t phi=0, Double_t pt=0) |
c852fdae | 376 | : fEta(eta), fPhi(phi), fPt(pt) {} |
9a1f999b | 377 | virtual ~AliEHCParticle() {} |
378 | ||
379 | Double_t Eta() const { return fEta; } | |
380 | Double_t Phi() const { return fPhi; } | |
381 | Double_t Pt() const { return fPt; } | |
382 | ||
c852fdae | 383 | protected: |
384 | private: | |
9a1f999b | 385 | AliEHCParticle(const AliEHCParticle&); |
386 | AliEHCParticle& operator=(const AliEHCParticle&); | |
387 | ||
388 | Double_t fEta; | |
389 | Double_t fPhi; | |
390 | Double_t fPt; | |
391 | ||
392 | ClassDef(AliEHCParticle, 1); | |
c852fdae | 393 | } ; |
9a1f999b | 394 | ///_________________________________________________________________________________________________ |
c852fdae | 395 | |
396 | #endif |