1 #ifndef AliAnalysisTaskEMCalHFEpA_cxx
2 #define AliAnalysisTaskEMCalHFEpA_cxx
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////////////////////////////
9 // Task for Heavy-flavour electron analysis in pPb collisions //
10 // (+ Electron-Hadron Jetlike Azimuthal Correlation) //
12 // version: September 12th, 2013. //
15 // Elienos Pereira de Oliveira Filho (epereira@cern.ch) //
16 // Cristiane Jahnke (cristiane.jahnke@cern.ch) //
18 ////////////////////////////////////////////////////////////////////////
23 class AliESDtrackCuts;
25 class AliHFEcontainer;
28 class AliHFEpidQAmanager;
35 class AliSelectNonHFE;
36 class AliEventPoolManager;
40 //______________________________________________________________________
42 #include "AliAnalysisTaskSE.h"
43 #include "AliHFEpid.h"
45 //______________________________________________________________________
47 //______________________________________________________________________
48 class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE
50 //______________________________________________________________________
52 AliAnalysisTaskEMCalHFEpA();
53 AliAnalysisTaskEMCalHFEpA(const char *name);
54 virtual ~AliAnalysisTaskEMCalHFEpA();
56 virtual void UserCreateOutputObjects();
57 virtual void UserExec(Option_t *option);
58 virtual void Terminate(Option_t *);
61 void SetHFECuts(AliHFEcuts * const cuts) {fCuts = cuts;};
62 void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) {fRejectKinkMother = rejectKinkMother;};
63 void SetCorrelationAnalysis(Bool_t CorrelationFlag=kTRUE) {fCorrelationFlag = CorrelationFlag;};
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; };
71 void SetdPhidEtaCut(Double_t dPhiCut, Double_t dEtaCut ) { fdPhiCut = dPhiCut;fdEtaCut = dEtaCut ;};
73 void SetEoverPCut(Double_t EoverPCutMin,Double_t EoverPCutMax ) { fEoverPCutMin = EoverPCutMin; fEoverPCutMax = EoverPCutMax; };
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; };
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;};
83 void SetUseShowerShapeCut(Bool_t UseShowerShapeCut=kFALSE) { fUseShowerShapeCut=UseShowerShapeCut;};
84 void SetBackground(Bool_t FillBackground=kFALSE) { fFillBackground=FillBackground;};
85 void SetEMCalTriggerEG1() { fEMCEG1=kTRUE; };
86 void SetEMCalTriggerEG2() { fEMCEG2=kTRUE; };
87 void SetCentralityEstimator(Int_t Estimator) { fEstimator=Estimator; }; //0 = V0A, 1 = Other
88 void SetAdditionalCuts(Double_t PtMinAsso, Int_t TpcNclsAsso) {fPtMinAsso = PtMinAsso; fTpcNclsAsso = TpcNclsAsso;};
91 AliHFEpid *GetPID() const {return fPID;};
92 //______________________________________________________________________
94 //______________________________________________________________________
97 //Function to process track cuts
98 Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
99 //Function to process eh analysis
100 void ElectronHadronCorrelation(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack);
101 //Function to find non-HFE and fill histos
102 void Background(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack, Bool_t IsTPConly);
103 //Selected Hadrons, for mixed event analysis
104 TObjArray* SelectedHadrons();
105 //DiHadron Correlation Background
106 void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex);
107 //Find Mothers (Finde HFE and NonHFE from MC information)
108 Bool_t FindMother(Int_t mcIndex);
110 //Flags for specifics analysis
111 Bool_t fCorrelationFlag;
114 Bool_t fUseShowerShapeCut;
115 Bool_t fFillBackground;
121 //Used in the function FindMother
133 AliAODEvent *fAOD; /// new
134 AliVEvent *fVevent; /// new
135 AliESDtrackCuts *fPartnerCuts;
137 AliPIDResponse *fPidResponse;
138 AliSelectNonHFE *fNonHFE;
140 //For the case of AOD analysis
141 Bool_t fIsAOD; //flag for AOD analysis
143 //For Centrality Selection
144 AliCentrality *fCentrality;
145 Double_t fCentralityMin;
146 Double_t fCentralityMax;
147 Bool_t fHasCentralitySelection;
148 TH1F *fCentralityHist;
149 TH1F *fCentralityHistPass;
156 //AliESDCaloCluster *fClusESD;
185 TH1F **fTPCnsigma_pt;
187 TH2F *fTPCnsigma_pt_2D;
188 TH2F *fShowerShapeCut;
189 TH2F *fShowerShapeM02_EoverP;
190 TH2F *fShowerShapeM20_EoverP;
191 TH2F *fShowerShape_ha;
192 TH2F *fShowerShape_ele;
194 TH2F *fTPCnsigma_eta;
195 TH2F *fTPCnsigma_phi;
203 TH2F **fTPCNcls_EoverP;
210 TH2F **fNcells_EoverP;
211 TH1F **fNcells_electrons;
212 TH1F **fNcells_hadrons;
213 TH1F **fECluster_ptbins;
214 TH1F **fEoverP_ptbins;
215 TH1F **fEoverP_wSSCut;
218 TH2F **fTPCnsigma_eta_electrons;
219 TH2F **fTPCnsigma_eta_hadrons;
221 TH2F *fEoverP_pt_pions;
223 TH2F *ftpc_p_EoverPcut;
224 TH2F *fnsigma_p_EoverPcut;
226 TH2F *fEoverP_pt_pions2;
228 TH2F *fEoverP_pt_hadrons;
230 //Electron-Hadron Correlation Histograms
235 TH2F **fCEtaPhi_ULS_NoP;
236 TH2F **fCEtaPhi_LS_NoP;
238 TH2F **fCEtaPhi_ULS_Weight;
239 TH2F **fCEtaPhi_LS_Weight;
240 TH2F **fCEtaPhi_ULS_NoP_Weight;
241 TH2F **fCEtaPhi_LS_NoP_Weight;
264 Double_t fEoverPCutMin;
265 Double_t fEoverPCutMax;
275 Bool_t fAngleCutFlag;
279 //Non-HFE reconstruction efficiency
280 TH1F *fPtBackgroundBeforeReco;
281 TH1F *fPtBackgroundBeforeReco2;
282 TH1F *fPtBackgroundAfterReco;
287 //Tracking Efficiency
288 TH1F *fPtMCparticleAll;
289 TH1F *fPtMCparticleAll_nonPrimary;
290 TH1F *fPtMCparticleAlle_nonPrimary;
292 TH1F *fPtMCparticleReco;
293 TH1F *fPtMCparticleReco_nonPrimary;
294 TH1F *fPtMCparticleAllHfe1;
295 TH1F *fPtMCparticleRecoHfe1;
296 TH1F *fPtMCparticleAllHfe2;
297 TH1F *fPtMCparticleRecoHfe2;
298 TH1F *fPtMCelectronAfterAll;
299 TH1F *fPtMCelectronAfterAll_nonPrimary;
304 TH1F *fPtMC_EMCal_All;
305 TH1F *fPtMC_EMCal_Selected;
307 TH1F *fPtMC_TPC_Selected;
309 TH1F *fPtMCWithLabel;
310 TH1F *fPtMCWithoutLabel;
311 TH1F *fPtIsPhysicaPrimary;
313 //For the HFE package
314 AliHFEcuts *fCuts; // Cut Collection for HFE
315 AliCFManager *fCFM; // Correction Framework Manager
316 AliHFEpid *fPID; // PID
317 AliHFEpidQAmanager *fPIDqa; // PID QA manager
320 AliStack *fMCstack; //
321 Bool_t fRejectKinkMother; //
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;
337 //______________________________________________________________________
338 //Mixed event analysis
339 AliEventPoolManager *fPoolMgr;
341 TObjArray *fTracksClone;
344 TH2F **fCEtaPhi_Inc_EM;
346 TH2F **fCEtaPhi_ULS_EM;
347 TH2F **fCEtaPhi_LS_EM;
349 TH2F **fCEtaPhi_ULS_Weight_EM;
350 TH2F **fCEtaPhi_LS_Weight_EM;
354 Bool_t fEventMixingFlag;
355 //______________________________________________________________________
357 //______________________________________________________________________
358 //Di-hadron correlation
359 TH2F **fCEtaPhi_Inc_DiHadron;
360 TH1F *fPtTrigger_Inc;
361 //______________________________________________________________________
363 AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&); // not implemented
364 AliAnalysisTaskEMCalHFEpA& operator=(const AliAnalysisTaskEMCalHFEpA&); // not implemented
366 ClassDef(AliAnalysisTaskEMCalHFEpA, 1); // example of analysis
367 //______________________________________________________________________
370 ///_________________________________________________________________________________________________
371 ///Class copied from : $ALICE_ROOT/PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.h
372 ///Author: Christoph Mayer
373 class AliEHCParticle : public TObject {
375 AliEHCParticle(Double_t eta=0, Double_t phi=0, Double_t pt=0)
376 : fEta(eta), fPhi(phi), fPt(pt) {}
377 virtual ~AliEHCParticle() {}
379 Double_t Eta() const { return fEta; }
380 Double_t Phi() const { return fPhi; }
381 Double_t Pt() const { return fPt; }
385 AliEHCParticle(const AliEHCParticle&);
386 AliEHCParticle& operator=(const AliEHCParticle&);
392 ClassDef(AliEHCParticle, 1);
394 ///_________________________________________________________________________________________________