]>
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 | ||
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 | ||
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 | ||
40 | //______________________________________________________________________ | |
41 | //Library | |
42 | #include "AliAnalysisTaskSE.h" | |
43 | #include "AliHFEpid.h" | |
44 | #include "AliLog.h" | |
45 | //______________________________________________________________________ | |
46 | ||
47 | //______________________________________________________________________ | |
48 | class 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 | |
311 | class AliEHCParticle : public TObject { | |
312 | public: | |
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 | ||
321 | protected: | |
322 | private: | |
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 |