3 #include "AliAnalysisTaskEMCALIsoPhoton.h"
10 #include <TLorentzVector.h>
13 #include "AliAnalysisManager.h"
14 #include "AliAnalysisTask.h"
15 #include "AliEMCALGeometry.h"
16 #include "AliEMCALRecoUtils.h"
17 #include "AliESDCaloCells.h"
18 #include "AliESDCaloCluster.h"
19 #include "AliESDEvent.h"
20 #include "AliESDHeader.h"
21 #include "AliESDInputHandler.h"
22 #include "AliESDUtils.h"
23 #include "AliESDpid.h"
24 #include "AliESDtrack.h"
25 #include "AliESDtrackCuts.h"
27 #include "AliKFParticle.h"
28 #include "AliMCEvent.h"
29 #include "AliMCEventHandler.h"
31 #include "AliV0vertexer.h"
32 #include "AliVCluster.h"
34 ClassImp(AliAnalysisTaskEMCALIsoPhoton)
36 //________________________________________________________________________
37 AliAnalysisTaskEMCALIsoPhoton::AliAnalysisTaskEMCALIsoPhoton() :
44 fGeoName("EMCAL_COMPLETEV1"),
89 // Default constructor.
92 //________________________________________________________________________
93 AliAnalysisTaskEMCALIsoPhoton::AliAnalysisTaskEMCALIsoPhoton(const char *name) :
94 AliAnalysisTaskSE(name),
100 fGeoName("EMCAL_COMPLETEV1"),
147 // Define input and output slots here
148 // Input slot #0 works with a TChain
149 DefineInput(0, TChain::Class());
150 // Output slot #0 id reserved by the base class for AOD
151 // Output slot #1 writes into a TH1 container
152 DefineOutput(1, TList::Class());
155 //________________________________________________________________________
156 void AliAnalysisTaskEMCALIsoPhoton::UserCreateOutputObjects()
158 // Create histograms, called once.
160 fCaloClusters = new TRefArray();
161 fSelPrimTracks = new TObjArray();
164 fOutputList = new TList();
165 fOutputList->SetOwner(kTRUE);// Container cleans up all histos (avoids leaks in merging)
167 fGeom = AliEMCALGeometry::GetInstance(fGeoName);
169 fEvtSel = new TH1F("hEvtSel","Event selection counter (0=all trg, 1=pvz cut) ;evt cut ;dN/dcut}",2,0,2);
170 fOutputList->Add(fEvtSel);
173 fPVtxZ = new TH1F("hPVtxZ","primary vertex Z before cut;prim-vz(cm) ;",200,-100,100);
174 fOutputList->Add(fPVtxZ);
176 fCellAbsIdVsAmpl = new TH2F("hCellAbsIdVsAmpl","cell abs id vs cell amplitude (energy);E (GeV);ID",200,0,100,24*48*10,-0.5,24*48*10-0.5);
177 fOutputList->Add(fPVtxZ);
179 fNClusHighClusE = new TH2F("hNClusHighClusE","total number of clusters vs. highest clus energy in the event;E (GeV);NClus",200,0,100,301,-0.5,300.5);
180 fOutputList->Add(fNClusHighClusE);
182 fM02Et = new TH2F("fM02Et","M02 vs Et for all clusters;E_{T} (GeV);M02",1000,0,100,400,0,4);
184 fOutputList->Add(fM02Et);
186 fM02EtTM = new TH2F("fM02EtTM","M02 vs Et for all track-matched clusters;E_{T} (GeV);M02",1000,0,100,400,0,4);
188 fOutputList->Add(fM02EtTM);
190 fM02EtCeIso1 = new TH2F("fM02EtCeIso1","M02 vs Et for all clusters (ISO_{EMC}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
191 fM02EtCeIso1->Sumw2();
192 fOutputList->Add(fM02EtCeIso1);
194 fM02EtCeIso2 = new TH2F("fM02EtCeIso2","M02 vs Et for all clusters (ISO_{EMC}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
195 fM02EtCeIso2->Sumw2();
196 fOutputList->Add(fM02EtCeIso2);
198 fM02EtCeIso5 = new TH2F("fM02EtCeIso5","M02 vs Et for all clusters (ISO_{EMC}<5GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
199 fM02EtCeIso5->Sumw2();
200 fOutputList->Add(fM02EtCeIso5);
202 fM02EtTrIso1 = new TH2F("fM02EtTrIso1","M02 vs Et for all clusters (ISO_{TRK}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
203 fM02EtTrIso1->Sumw2();
204 fOutputList->Add(fM02EtTrIso1);
206 fM02EtTrIso2 = new TH2F("fM02EtTrIso2","M02 vs Et for all clusters (ISO_{TRK}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
207 fM02EtTrIso2->Sumw2();
208 fOutputList->Add(fM02EtTrIso2);
210 fM02EtTrIso5 = new TH2F("fM02EtTrIso5","M02 vs Et for all clusters (ISO_{TRK}<5GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
211 fM02EtTrIso5->Sumw2();
212 fOutputList->Add(fM02EtTrIso5);
214 fM02EtAllIso1 = new TH2F("fM02EtAllIso1","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
215 fM02EtAllIso1->Sumw2();
216 fOutputList->Add(fM02EtAllIso1);
218 fM02EtAllIso2 = new TH2F("fM02EtAllIso2","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
219 fM02EtAllIso2->Sumw2();
220 fOutputList->Add(fM02EtAllIso2);
222 fM02EtAllIso5 = new TH2F("fM02EtAllIso5","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
223 fM02EtAllIso5->Sumw2();
224 fOutputList->Add(fM02EtAllIso5);
226 fCeIsoVsEtPho = new TH2F("fCeIsoVsEtPho","ISO_{EMC} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{EMC}",1000,0,100,1000,-10,190);
227 fCeIsoVsEtPho->Sumw2();
228 fOutputList->Add(fCeIsoVsEtPho);
230 fTrIsoVsEtPho = new TH2F("fTrIsoVsEtPho","ISO_{TRK} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{TRK}",1000,0,100,1000,-10,190);
231 fTrIsoVsEtPho->Sumw2();
232 fOutputList->Add(fTrIsoVsEtPho);
234 fAllIsoVsEtPho = new TH2F("fAllIsoVsEtPho","ISO_{EMC+TRK} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{EMC+TRK}",1000,0,100,1000,-10,190);
235 fAllIsoVsEtPho->Sumw2();
236 fOutputList->Add(fAllIsoVsEtPho);
238 fCeIsoVsEtPi0 = new TH2F("fCeIsoVsEtPi0","ISO_{EMC} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{EMC}",1000,0,100,1000,-10,190);
239 fCeIsoVsEtPi0->Sumw2();
240 fOutputList->Add(fCeIsoVsEtPi0);
242 fTrIsoVsEtPi0 = new TH2F("fTrIsoVsEtPi0","ISO_{TRK} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{TRK}",1000,0,100,1000,-10,190);
243 fTrIsoVsEtPi0->Sumw2();
244 fOutputList->Add(fTrIsoVsEtPi0);
246 fAllIsoVsEtPi0 = new TH2F("fAllIsoVsEtPi0","ISO_{EMC+TRK} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{EMC+TRK}",1000,0,100,1000,-10,190);
247 fAllIsoVsEtPi0->Sumw2();
248 fOutputList->Add(fAllIsoVsEtPi0);
250 fM02EtCeIso1TM = new TH2F("fM02EtCeIso1TM","M02 vs Et for all clusters (ISO_{EMC}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
251 fM02EtCeIso1TM->Sumw2();
252 fOutputList->Add(fM02EtCeIso1TM);
254 fM02EtCeIso2TM = new TH2F("fM02EtCeIso2TM","M02 vs Et for all clusters (ISO_{EMC}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
255 fM02EtCeIso2TM->Sumw2();
256 fOutputList->Add(fM02EtCeIso2TM);
258 fM02EtCeIso5TM = new TH2F("fM02EtCeIso5TM","M02 vs Et for all clusters (ISO_{EMC}<5GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
259 fM02EtCeIso5TM->Sumw2();
260 fOutputList->Add(fM02EtCeIso5TM);
262 fM02EtTrIso1TM = new TH2F("fM02EtTrIso1TM","M02 vs Et for all clusters (ISO_{TRK}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
263 fM02EtTrIso1TM->Sumw2();
264 fOutputList->Add(fM02EtTrIso1TM);
266 fM02EtTrIso2TM = new TH2F("fM02EtTrIso2TM","M02 vs Et for all clusters (ISO_{TRK}<1GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
267 fM02EtTrIso2TM->Sumw2();
268 fOutputList->Add(fM02EtTrIso2TM);
270 fM02EtTrIso5TM = new TH2F("fM02EtTrIso5TM","M02 vs Et for all clusters (ISO_{TRK}<5GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
271 fM02EtTrIso5TM->Sumw2();
272 fOutputList->Add(fM02EtTrIso5TM);
274 fM02EtAllIso1TM = new TH2F("fM02EtAllIso1TM","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
275 fM02EtAllIso1TM->Sumw2();
276 fOutputList->Add(fM02EtAllIso1TM);
278 fM02EtAllIso2TM = new TH2F("fM02EtAllIso2TM","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
279 fM02EtAllIso2TM->Sumw2();
280 fOutputList->Add(fM02EtAllIso2TM);
282 fM02EtAllIso5TM = new TH2F("fM02EtAllIso5TM","M02 vs Et for all clusters (ISO_{EMC+TRK}<2GeV);E_{T} (GeV);M02",1000,0,100,400,0,4);
283 fM02EtAllIso5TM->Sumw2();
284 fOutputList->Add(fM02EtAllIso5TM);
286 fCeIsoVsEtPhoTM = new TH2F("fCeIsoVsEtPhoTM","ISO_{EMC} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{EMC}",1000,0,100,1000,-10,190);
287 fCeIsoVsEtPhoTM->Sumw2();
288 fOutputList->Add(fCeIsoVsEtPhoTM);
290 fTrIsoVsEtPhoTM = new TH2F("fTrIsoVsEtPhoTM","ISO_{TRK} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{TRK}",1000,0,100,1000,-10,190);
291 fTrIsoVsEtPhoTM->Sumw2();
292 fOutputList->Add(fTrIsoVsEtPhoTM);
294 fAllIsoVsEtPhoTM = new TH2F("fAllIsoVsEtPhoTM","ISO_{EMC+TRK} vs. E_{T}^{clus} (0.1<#lambda_{0}^{2}<0.3);E_{T} (GeV);ISO_{EMC+TRK}",1000,0,100,1000,-10,190);
295 fAllIsoVsEtPhoTM->Sumw2();
296 fOutputList->Add(fAllIsoVsEtPhoTM);
298 fCeIsoVsEtPi0TM = new TH2F("fCeIsoVsEtPi0TM","ISO_{EMC} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{EMC}",1000,0,100,1000,-10,190);
299 fCeIsoVsEtPi0TM->Sumw2();
300 fOutputList->Add(fCeIsoVsEtPi0TM);
302 fTrIsoVsEtPi0TM = new TH2F("fTrIsoVsEtPi0TM","ISO_{TRK} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{TRK}",1000,0,100,1000,-10,190);
303 fTrIsoVsEtPi0TM->Sumw2();
304 fOutputList->Add(fTrIsoVsEtPi0TM);
306 fAllIsoVsEtPi0TM = new TH2F("fAllIsoVsEtPi0TM","ISO_{EMC+TRK} vs. E_{T}^{clus} (#pi^{0} selection for BG);E_{T} (GeV);ISO_{EMC+TRK}",1000,0,100,1000,-10,190);
307 fAllIsoVsEtPi0TM->Sumw2();
308 fOutputList->Add(fAllIsoVsEtPi0TM);
310 PostData(1, fOutputList);
313 //________________________________________________________________________
314 void AliAnalysisTaskEMCALIsoPhoton::UserExec(Option_t *)
316 // Main loop, called for each event.
318 // event trigger selection
319 Bool_t isSelected = 0;
320 if(fPeriod.Contains("11a")){
321 if(fTrigBit.Contains("kEMC"))
322 isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kEMC1);
324 isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
327 if(fTrigBit.Contains("kEMC"))
328 isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kEMC7);
330 isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7);
335 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
337 printf("ERROR: fESD not available\n");
343 AliESDVertex *pv = (AliESDVertex*)fESD->GetPrimaryVertex();
346 fPVtxZ->Fill(pv->GetZ());
347 if(TMath::Abs(pv->GetZ())>15)
352 // Track loop to fill a pT spectrum
353 for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
354 AliESDtrack* track = (AliESDtrack*)fESD->GetTrack(iTracks);
357 if (fPrTrCuts && fPrTrCuts->IsSelected(track)){
358 fSelPrimTracks->Add(track);
359 //printf("pt,eta,phi:%1.1f,%1.1f,%1.1f \n",track->Pt(),track->Eta(), track->Phi());
364 for(Int_t mod=0; mod < (fGeom->GetEMCGeometry())->GetNumberOfSuperModules(); mod++){
365 if(fGeoName=="EMCAL_FIRSTYEARV1" && mod>3)
367 fGeom->SetMisalMatrix(fESD->GetEMCALMatrix(mod), mod);
370 fESD->GetEMCALClusters(fCaloClusters);
371 fEMCalCells = fESD->GetEMCALCells();
376 fCaloClusters->Clear();
377 fSelPrimTracks->Clear();
378 PostData(1, fOutputList);
381 //________________________________________________________________________
382 void AliAnalysisTaskEMCALIsoPhoton::FillClusHists()
384 // Fill cluster histograms.
388 const Int_t nclus = fCaloClusters->GetEntries();
392 for(Int_t ic=0;ic<nclus;ic++){
394 AliESDCaloCluster *c = static_cast<AliESDCaloCluster*>(fCaloClusters->At(ic));
400 Double_t Emax = GetMaxCellEnergy( c, id);
401 Double_t Ecross = GetCrossEnergy( c, id);
402 if((1-Ecross/Emax)>fExoticCut)
404 Float_t clsPos[3] = {0,0,0};
405 c->GetPosition(clsPos);
406 TVector3 clsVec(clsPos);
407 Double_t Et = c->E()*TMath::Sin(clsVec.Theta());
408 Float_t ceiso, cephiband, cecore;
409 Float_t triso, trphiband, trcore;
410 Float_t alliso, allphiband, allcore;
411 Float_t phibandArea = (1.4 - 2*fIsoConeR)*2*fIsoConeR;
412 Float_t netConeArea = TMath::Pi()*(fIsoConeR*fIsoConeR - 0.04*0.04);
413 GetCeIso(clsVec, ceiso, cephiband, cecore);
414 GetTrIso(clsVec, triso, trphiband, trcore);
415 alliso = ceiso + triso;
416 allphiband = cephiband + trphiband;
417 allcore = cecore + trcore;
418 Float_t ceisoue = cephiband/phibandArea*netConeArea;
419 Float_t trisoue = trphiband/phibandArea*netConeArea;
420 Float_t allisoue = allphiband/phibandArea*netConeArea;
421 Double_t dR = TMath::Sqrt(pow(c->GetTrackDx(),2)+pow(c->GetTrackDz(),2));
424 M02u = 0.02486*Et*Et - 0.7289*Et + 6.266;
426 M02u = 14.32/Et - 0.09863;
429 Double_t M02l = 12.88/Et - 0.3194;
433 fM02Et->Fill(Et, c->GetM02());
435 fM02EtCeIso1->Fill(Et, c->GetM02());
437 fM02EtCeIso2->Fill(Et, c->GetM02());
439 fM02EtCeIso5->Fill(Et, c->GetM02());
441 fM02EtTrIso1->Fill(Et, c->GetM02());
443 fM02EtTrIso2->Fill(Et, c->GetM02());
445 fM02EtTrIso5->Fill(Et, c->GetM02());
447 fM02EtAllIso1->Fill(Et, c->GetM02());
449 fM02EtAllIso2->Fill(Et, c->GetM02());
451 fM02EtAllIso5->Fill(Et, c->GetM02());
452 if(c->GetM02()>0.1 && c->GetM02()<0.3){
453 fCeIsoVsEtPho->Fill(Et, ceiso - cecore - ceisoue);
454 fTrIsoVsEtPho->Fill(Et, triso - trcore - trisoue);
455 fAllIsoVsEtPho->Fill(Et, alliso - allcore - allisoue);
457 if(c->GetM02()>M02l && c->GetM02()<M02u){
458 fCeIsoVsEtPi0->Fill(Et, ceiso - cecore - ceisoue);
459 fTrIsoVsEtPi0->Fill(Et, triso - trcore - trisoue);
460 fAllIsoVsEtPi0->Fill(Et, alliso - allcore - allisoue);
465 fM02EtTM->Fill(Et, c->GetM02());
467 fM02EtCeIso1TM->Fill(Et, c->GetM02());
469 fM02EtCeIso2TM->Fill(Et, c->GetM02());
471 fM02EtCeIso5TM->Fill(Et, c->GetM02());
473 fM02EtTrIso1TM->Fill(Et, c->GetM02());
475 fM02EtTrIso2TM->Fill(Et, c->GetM02());
477 fM02EtTrIso5TM->Fill(Et, c->GetM02());
479 fM02EtAllIso1TM->Fill(Et, c->GetM02());
481 fM02EtAllIso2TM->Fill(Et, c->GetM02());
483 fM02EtAllIso5TM->Fill(Et, c->GetM02());
484 if(c->GetM02()>0.1 && c->GetM02()<0.3){
485 fCeIsoVsEtPhoTM->Fill(Et, ceiso - cecore - ceisoue);
486 fTrIsoVsEtPhoTM->Fill(Et, triso - trcore - trisoue);
487 fAllIsoVsEtPhoTM->Fill(Et, alliso - allcore - allisoue);
489 if(c->GetM02()>M02l && c->GetM02()<M02u){
490 fCeIsoVsEtPi0TM->Fill(Et, ceiso - cecore - ceisoue);
491 fTrIsoVsEtPi0TM->Fill(Et, triso - trcore - trisoue);
492 fAllIsoVsEtPi0TM->Fill(Et, alliso - allcore - allisoue);
498 fNClusHighClusE->Fill(maxE,nclus);
501 //________________________________________________________________________
502 void AliAnalysisTaskEMCALIsoPhoton::GetCeIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core)
504 // Get cell isolation.
508 const Int_t ncells = fEMCalCells->GetNumberOfCells();
512 Float_t etacl = vec.Eta();
513 Float_t phicl = vec.Phi();
514 Float_t thetacl = vec.Theta();
516 phicl+=TMath::TwoPi();
518 Float_t eta=-1, phi=-1;
519 for(int icell=0;icell<ncells;icell++){
520 absid = TMath::Abs(fEMCalCells->GetCellNumber(icell));
523 fGeom->EtaPhiFromIndex(absid,eta,phi);
524 Float_t dphi = TMath::Abs(phi-phicl);
525 Float_t deta = TMath::Abs(eta-etacl);
526 Float_t R = TMath::Sqrt(deta*deta + dphi*dphi);
527 Float_t etcell = fEMCalCells->GetCellAmplitude(absid)*TMath::Sin(thetacl);
538 totband += fEMCalCells->GetCellAmplitude(absid)*TMath::Sin(thetacl);
546 //________________________________________________________________________
547 void AliAnalysisTaskEMCALIsoPhoton::GetTrIso(TVector3 vec, Float_t &iso, Float_t &phiband, Float_t &core)
549 // Get track isolation.
553 const Int_t ntracks = fSelPrimTracks->GetEntries();
557 Double_t etacl = vec.Eta();
558 Double_t phicl = vec.Phi();
560 phicl+=TMath::TwoPi();
561 for(int itrack=0;itrack<ntracks;itrack++){
562 AliESDtrack *track = static_cast<AliESDtrack*> (fSelPrimTracks->At(itrack));
565 Double_t dphi = TMath::Abs(track->Phi()-phicl);
566 Double_t deta = TMath::Abs(track->Eta()-etacl);
567 Double_t R = TMath::Sqrt(deta*deta + dphi*dphi);
568 Double_t pt = track->Pt();
570 totiso += track->Pt();
579 totband += track->Pt();
587 //________________________________________________________________________
588 Double_t AliAnalysisTaskEMCALIsoPhoton::GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax)
590 // Calculate the energy of cross cells around the leading cell.
592 AliVCaloCells *cells = 0;
593 cells = fESD->GetEMCALCells();
609 Double_t crossEnergy = 0;
611 fGeom->GetCellIndex(idmax,iSupMod,iTower,iIphi,iIeta);
612 fGeom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi, iIeta,iphis,ietas);
614 Int_t ncells = cluster->GetNCells();
615 for (Int_t i=0; i<ncells; i++) {
616 Int_t cellAbsId = cluster->GetCellAbsId(i);
617 fGeom->GetCellIndex(cellAbsId,iSupMod,iTower,iIphi,iIeta);
618 fGeom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi, iIeta,iphi,ieta);
619 Int_t aphidiff = TMath::Abs(iphi-iphis);
622 Int_t aetadiff = TMath::Abs(ieta-ietas);
625 if ( (aphidiff==1 && aetadiff==0) ||
626 (aphidiff==0 && aetadiff==1) ) {
627 crossEnergy += cells->GetCellAmplitude(cellAbsId);
634 //________________________________________________________________________
635 Double_t AliAnalysisTaskEMCALIsoPhoton ::GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const
637 // Get maximum energy of attached cell.
641 AliVCaloCells *cells = 0;
642 cells = fESD->GetEMCALCells();
647 Int_t ncells = cluster->GetNCells();
648 for (Int_t i=0; i<ncells; i++) {
649 Double_t e = cells->GetCellAmplitude(TMath::Abs(cluster->GetCellAbsId(i)));
652 id = cluster->GetCellAbsId(i);
658 //________________________________________________________________________
659 void AliAnalysisTaskEMCALIsoPhoton::Terminate(Option_t *)
661 // Called once at the end of the query.