1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
17 //======================================================================
19 // Fill Unit Array class
20 // Class used by AliJetESDReader to fill a UnitArray from the information extracted
21 // from the particle tracks
22 // Author: magali.estienne@ires.in2p3.fr
23 //======================================================================
26 // --- Standard library ---
27 #include <Riostream.h>
29 // --- ROOT system ---
31 #include <TLorentzVector.h>
32 #include <TRefArray.h>
35 #include <TGeoManager.h>
39 #include <TClonesArray.h>
40 #include <TProcessID.h>
42 // --- AliRoot header files ---
43 #include "AliJetFinder.h"
44 #include "AliJetReaderHeader.h"
45 #include "AliJetReader.h"
46 #include "AliJetESDReader.h"
47 #include "AliJetESDReaderHeader.h"
48 #include "AliESDEvent.h"
49 #include "AliJetDummyGeo.h"
50 #include "AliJetUnitArray.h"
51 #include "AliJetFillUnitArrayTracks.h"
52 #include "AliJetHadronCorrectionv1.h"
53 #include "AliJetGrid.h"
55 ClassImp(AliJetFillUnitArrayTracks)
57 //_____________________________________________________________________________
58 AliJetFillUnitArrayTracks::AliJetFillUnitArrayTracks()
59 : TTask("AliJetFillUnitArrayTracks","Fill Unit Array with tpc/its and emcal information"),
101 fEtaBinInEMCalAcc(0),
102 fPhiBinInEMCalAcc(0),
108 //_____________________________________________________________________________
109 AliJetFillUnitArrayTracks::AliJetFillUnitArrayTracks(AliESDEvent* esd)
110 : TTask("AliJetFillUnitArrayTracks","Fill Unit Array with tpc/its and emcal information"),
136 fGrid4(0x0),// first: loop over tracks in ESD
152 fEtaBinInEMCalAcc(0),
153 fPhiBinInEMCalAcc(0),
159 //_____________________________________________________________________________
160 AliJetFillUnitArrayTracks::AliJetFillUnitArrayTracks(const AliJetFillUnitArrayTracks &det)
161 : TTask(det),//"AliJetFillUnitArrayTracks","Fill Unit Array with tpc/its and emcal information"),
162 fNumUnits(det.fNumUnits),
163 fEtaMinCal(det.fEtaMinCal),
164 fEtaMaxCal(det.fEtaMaxCal),
165 fPhiMinCal(det.fPhiMinCal),
166 fPhiMaxCal(det.fPhiMaxCal),
167 fHadCorr(det.fHadCorr),
168 fHCorrection(det.fHCorrection),
169 fNTracks(det.fNTracks),
170 fNTracksCut(det.fNTracksCut),
174 fReaderHeader(det.fReaderHeader),
175 fMomentumArray(det.fMomentumArray),
176 fUnitArray(det.fUnitArray),
177 fRefArray(det.fRefArray),
178 fProcId(det.fProcId),
179 fTPCGrid(det.fTPCGrid),
180 fEMCalGrid(det.fEMCalGrid),
195 fParams(det.fParams),
197 fPhiMin(det.fPhiMin),
198 fPhiMax(det.fPhiMax),
199 fEtaMin(det.fEtaMin),
200 fEtaMax(det.fEtaMax),
201 fEtaBinInTPCAcc(det.fEtaBinInTPCAcc),
202 fPhiBinInTPCAcc(det.fPhiBinInTPCAcc),
203 fEtaBinInEMCalAcc(det.fEtaBinInEMCalAcc),
204 fPhiBinInEMCalAcc(det.fPhiBinInEMCalAcc),
205 fNbinPhi(det.fNbinPhi)
210 //------------------------------------------------------------------
211 AliJetFillUnitArrayTracks& AliJetFillUnitArrayTracks::operator=(const AliJetFillUnitArrayTracks& other)
215 fNumUnits = other.fNumUnits;
216 fEtaMinCal = other.fEtaMinCal;
217 fEtaMaxCal = other.fEtaMaxCal;
218 fPhiMinCal = other.fPhiMinCal;
219 fPhiMaxCal = other.fPhiMaxCal;
220 fHadCorr = other.fHadCorr;
221 fHCorrection = other.fHCorrection;
222 fNTracks = other.fNTracks;
223 fNTracksCut = other.fNTracksCut;
226 fDebug = other.fDebug;
227 fReaderHeader = other.fReaderHeader;
228 fMomentumArray = other.fMomentumArray;
229 fUnitArray = other.fUnitArray;
230 fRefArray = other.fRefArray;
231 fProcId = other.fProcId;
232 fTPCGrid = other.fTPCGrid;
233 fEMCalGrid = other.fEMCalGrid;
236 fGrid0 = other.fGrid0;
237 fGrid1 = other.fGrid1;
238 fGrid2 = other.fGrid2;
239 fGrid3 = other.fGrid3;
240 fGrid4 = other.fGrid4;
247 fIndex = other.fIndex;
248 fParams = other.fParams;
250 fPhiMin = other.fPhiMin;
251 fPhiMax = other.fPhiMax;
252 fEtaMin = other.fEtaMin;
253 fEtaMax = other.fEtaMax;
254 fEtaBinInTPCAcc = other.fEtaBinInTPCAcc;
255 fPhiBinInTPCAcc = other.fPhiBinInTPCAcc;
256 fEtaBinInEMCalAcc = other.fEtaBinInEMCalAcc;
257 fPhiBinInEMCalAcc = other.fPhiBinInEMCalAcc;
258 fNbinPhi = other.fNbinPhi;
263 //____________________________________________________________________________
264 void AliJetFillUnitArrayTracks::InitParameters()
266 fHadCorr = 0; // For hadron correction
267 fNumUnits = fGeom->GetNCells(); // Number of towers in EMCAL
268 //fDebug = fReaderHeader->GetDebug();
270 fEtaMinCal = fGeom->GetArm1EtaMin();
271 fEtaMaxCal = fGeom->GetArm1EtaMax();
272 fPhiMinCal = fGeom->GetArm1PhiMin();
273 fPhiMaxCal = fGeom->GetArm1PhiMax()-10.;
275 fTPCGrid->GetAccParam(fNphi,fNeta,fPhiMin,
276 fPhiMax,fEtaMin,fEtaMax);
277 fTPCGrid->GetBinParam(fPhiBinInTPCAcc,fEtaBinInTPCAcc,
278 fPhiBinInEMCalAcc,fEtaBinInEMCalAcc,fNbinPhi);
280 fEta = fTPCGrid->GetArrayEta();
281 fPhi = fTPCGrid->GetArrayPhi();
282 fIndex = fTPCGrid->GetIndexObject();
285 for(Int_t i=0; i<fNphi+1; i++) cout << "phi[" << i << "] : " << (*fPhi)[i] << endl;
286 for(Int_t i=0; i<fNeta+1; i++) cout << "eta[" << i << "] : " << (*fEta)[i] << endl;
288 for(Int_t i=0; i<fNphi+1; i++)
289 for(Int_t j=0; j<fNeta+1; j++) {cout << "fIndex[" << i << "," << j << "] : " <<
290 (*fIndex)(i,j) << endl; }
292 if(fDebug>1) printf("\n Parameters initiated ! \n");
295 //_____________________________________________________________________________
296 AliJetFillUnitArrayTracks::~AliJetFillUnitArrayTracks()
301 //_____________________________________________________________________________
302 void AliJetFillUnitArrayTracks::Exec(Option_t* /*option*/)
308 fDebug = fReaderHeader->GetDebug();
313 // get number of tracks in event (for the loop)
321 if(fDebug>1) cout << "fESD in Fill array : " << fESD << endl;
323 nt = fESD->GetNumberOfTracks();
324 if(fDebug>1) cout << "Number of Tracks in ESD : " << nt << endl;
326 // temporary storage of signal and pt cut flag
327 Int_t* sflag = new Int_t[nt];
328 Int_t* cflag = new Int_t[nt];
330 // get cuts set by user
331 Float_t ptMin = fReaderHeader->GetPtCut();
332 Float_t etaMin = fReaderHeader->GetFiducialEtaMin();
333 Float_t etaMax = fReaderHeader->GetFiducialEtaMax();
334 Float_t phiMin = fReaderHeader->GetFiducialPhiMin();
335 Float_t phiMax = fReaderHeader->GetFiducialPhiMax();
336 fOpt = fReaderHeader->GetDetector();
337 fDZ = fReaderHeader->GetDZ();
339 Int_t nTracksEmcal = 0;
340 Int_t nTracksEmcalDZ = 0;
341 Int_t nTracksTpc = 0;
342 Int_t nTracksTpcOnly = 0;
343 Int_t nTracksEmcalCut = 0;
344 Int_t nTracksEmcalDZCut = 0;
345 Int_t nTracksTpcCut = 0;
346 Int_t nTracksTpcOnlyCut = 0;
348 fGrid = fTPCGrid->GetGridType();
352 for (Int_t it = 0; it < nmax; it++) {
354 track = fESD->GetTrack(it);
355 UInt_t status = track->GetStatus();
358 track->GetPxPyPz(mom);
360 p3.SetXYZ(mom[0],mom[1],mom[2]);
361 vector<Float_t> vtmp(3);
362 vtmp[0] = mom[0]; vtmp[1] = mom[1]; vtmp[2] = mom[2];
366 mass = track->GetMass();
368 if ((status & AliESDtrack::kTPCrefit) == 0) continue; // quality check
369 if ((status & AliESDtrack::kITSrefit) == 0) continue; // quality check
370 if (((AliJetESDReaderHeader*) fReaderHeader)->ReadSignalOnly()
371 && TMath::Abs(track->GetLabel()) > 10000) continue; // quality check
372 if (((AliJetESDReaderHeader*) fReaderHeader)->ReadBkgdOnly()
373 && TMath::Abs(track->GetLabel()) < 10000) continue; // quality check
375 phi = ( (p3.Phi()) < 0) ? (p3.Phi()) + 2. * TMath::Pi() : (p3.Phi());
377 if ( (eta > etaMax) || (eta < etaMin)) continue; // checking eta cut
378 if ( (phi > phiMax) || (phi < phiMin)) continue; // checking phi cut
381 if (TMath::Abs(track->GetLabel()) < 10000) sflag[goodTrack]=1;
383 if (pt > ptMin) cflag[goodTrack]=1; // pt cut
385 if(fDebug>20) cout << "In Pythia: Track:" << it << ", eta: " << eta << ", phi: " << phi << ", pt: " << pt << endl;
389 // Only TPC filled from its grid in its total acceptance
391 Int_t idTPC = fTPCGrid->GetIndex(phi,eta);
395 AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(idTPC-1);
397 uArray->SetUnitTrackID(it);
399 Float_t unitEnergy = 0.;
400 unitEnergy = uArray->GetUnitEnergy();
401 // nTracksTpcOnly is necessary to count the number of candidate cells
402 // but it doesn't give the real multiplicity -> it will be extracted
403 // in the jet finder and for that, it is necessary to fill the Px,Py,Pz
404 // information for each tracks stored in a given unitcell
411 // Fill energy in TPC acceptance
412 uArray->SetUnitEnergy(unitEnergy + pt);
413 uArray->SetUnitPxPyPz(kFALSE,vtmp);
414 uArray->SetUnitMass(mass);
417 if(uArray->GetUnitEnergy()<ptMin){
418 uArray->SetUnitCutFlag(kPtSmaller);
421 uArray->SetUnitCutFlag(kPtHigher);
422 if(ok) nTracksTpcOnlyCut++;
426 if(sflag[goodTrack] == 1) {
427 uArray->SetUnitSignalFlag(kGood);
428 uArray->SetUnitSignalFlagC(kFALSE,kGood);
429 } else uArray->SetUnitSignalFlagC(kFALSE,kBad);
431 if(uArray->GetUnitEnergy()>0 && ref){
435 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray));
437 fRefArray->Add(uArray);
444 Int_t nElements = fTPCGrid->GetNEntries();
445 // Fill track information in EMCAL acceptance
446 if((eta >= fEtaMin && eta <= fEtaMax) &&
447 (phi >= fPhiMin && phi <= fPhiMax))// &&
449 // Include dead-zones
452 Double_t phimin0 = 0., phimin1 = 0., phimin2 = 0., phimin3 = 0., phimin4 = 0.;
453 Double_t phimax0 = 0., phimax1 = 0., phimax2 = 0., phimax3 = 0., phimax4 = 0.;
454 fGeom->GetPhiBoundariesOfSMGap(0,phimin0,phimax0);
455 fGeom->GetPhiBoundariesOfSMGap(1,phimin1,phimax1);
456 fGeom->GetPhiBoundariesOfSMGap(2,phimin2,phimax2);
457 fGeom->GetPhiBoundariesOfSMGap(3,phimin3,phimax3);
458 fGeom->GetPhiBoundariesOfSMGap(4,phimin4,phimax4);
459 Int_t n0 = fGrid0->GetNEntries();
460 Int_t n1 = fGrid1->GetNEntries();
461 Int_t n2 = fGrid2->GetNEntries();
462 Int_t n3 = fGrid3->GetNEntries();
464 if(phi >= phimin0 && phi <= phimax0){
465 Int_t id0 = fGrid0->GetIndex(phi,eta)-1;
466 AliJetUnitArray *uArray0 = (AliJetUnitArray*)fUnitArray->At(id0+fNumUnits+nElements);
468 uArray0->SetUnitTrackID(it);
470 Float_t uEnergy0 = uArray0->GetUnitEnergy();
472 Bool_t ref0 = kFALSE;
478 uArray0->SetUnitEnergy(uEnergy0+pt);
479 uArray0->SetUnitPxPyPz(kFALSE,vtmp);
480 if(uArray0->GetUnitEnergy()<ptMin)
481 uArray0->SetUnitCutFlag(kPtSmaller);
483 uArray0->SetUnitCutFlag(kPtHigher);
484 if(ok0) nTracksEmcalDZCut++;
486 if(sflag[goodTrack] == 1) {
487 uArray0->SetUnitSignalFlag(kGood);
488 uArray0->SetUnitSignalFlagC(kFALSE,kGood);
489 } else uArray0->SetUnitSignalFlagC(kFALSE,kBad);
491 if(uArray0->GetUnitEnergy()>0 && ref0){
493 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray0));
496 fRefArray->Add(uArray0);
499 if(phi >= phimin1 && phi <= phimax1){
500 Int_t id1 = fGrid1->GetIndex(phi,eta)-1+n0;
501 AliJetUnitArray *uArray1 = (AliJetUnitArray*)fUnitArray->At(id1+fNumUnits+nElements);
502 uArray1->SetUnitTrackID(it);
504 Float_t uEnergy1 = uArray1->GetUnitEnergy();
506 Bool_t ref1 = kFALSE;
512 uArray1->SetUnitEnergy(uEnergy1+pt);
513 uArray1->SetUnitPxPyPz(kFALSE,vtmp);
514 if(uArray1->GetUnitEnergy()<ptMin)
515 uArray1->SetUnitCutFlag(kPtSmaller);
517 uArray1->SetUnitCutFlag(kPtHigher);
518 if(ok1) nTracksEmcalDZCut++;
520 if(sflag[goodTrack] == 1) {
521 uArray1->SetUnitSignalFlag(kGood);
522 uArray1->SetUnitSignalFlagC(kFALSE,kGood);
523 } else uArray1->SetUnitSignalFlagC(kFALSE,kBad);
525 if(uArray1->GetUnitEnergy()>0 && ref1){
527 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray1));
530 fRefArray->Add(uArray1);
533 if(phi >= phimin2 && phi <= phimax2){
534 Int_t id2 = fGrid2->GetIndex(phi,eta)-1+n0+n1;
535 AliJetUnitArray *uArray2 = (AliJetUnitArray*)fUnitArray->At(id2+fNumUnits+nElements);
536 uArray2->SetUnitTrackID(it);
538 Float_t uEnergy2 = uArray2->GetUnitEnergy();
540 Bool_t ref2 = kFALSE;
546 uArray2->SetUnitEnergy(uEnergy2+pt);
547 uArray2->SetUnitPxPyPz(kFALSE,vtmp);
548 if(uArray2->GetUnitEnergy()<ptMin)
549 uArray2->SetUnitCutFlag(kPtSmaller);
551 uArray2->SetUnitCutFlag(kPtHigher);
552 if(ok2) nTracksEmcalDZCut++;
554 if(sflag[goodTrack] == 1) {
555 uArray2->SetUnitSignalFlag(kGood);
556 uArray2->SetUnitSignalFlagC(kFALSE,kGood);
557 } else uArray2->SetUnitSignalFlagC(kFALSE,kBad);
559 if(uArray2->GetUnitEnergy()>0 && ref2){
561 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray2));
564 fRefArray->Add(uArray2);
567 if(phi >= phimin3 && phi <= phimax3){
568 Int_t id3 = fGrid3->GetIndex(phi,eta)-1+n0+n1+n2;
569 AliJetUnitArray *uArray3 = (AliJetUnitArray*)fUnitArray->At(id3+fNumUnits+nElements);
570 uArray3->SetUnitTrackID(it);
572 Float_t uEnergy3 = uArray3->GetUnitEnergy();
574 Bool_t ref3 = kFALSE;
580 uArray3->SetUnitEnergy(uEnergy3+pt);
581 uArray3->SetUnitPxPyPz(kFALSE,vtmp);
582 if(uArray3->GetUnitEnergy()<ptMin)
583 uArray3->SetUnitCutFlag(kPtSmaller);
585 uArray3->SetUnitCutFlag(kPtHigher);
586 if(ok3) nTracksEmcalDZCut++;
588 if(sflag[goodTrack] == 1) {
589 uArray3->SetUnitSignalFlag(kGood);
590 uArray3->SetUnitSignalFlagC(kFALSE,kGood);
591 } else uArray3->SetUnitSignalFlagC(kFALSE,kBad);
593 if(uArray3->GetUnitEnergy()>0 && ref3){
595 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray3));
598 fRefArray->Add(uArray3);
601 if(phi >= phimin4 && phi <= phimax4){
602 Int_t id4 = fGrid4->GetIndex(phi,eta)-1+n0+n1+n2+n3;
603 AliJetUnitArray *uArray4 = (AliJetUnitArray*)fUnitArray->At(id4+fNumUnits+nElements);
604 uArray4->SetUnitTrackID(it);
606 Float_t uEnergy4 = uArray4->GetUnitEnergy();
608 Bool_t ref4 = kFALSE;
614 uArray4->SetUnitEnergy(uEnergy4+pt);
615 uArray4->SetUnitPxPyPz(kFALSE,vtmp);
616 if(uArray4->GetUnitEnergy()<ptMin)
617 uArray4->SetUnitCutFlag(kPtSmaller);
619 uArray4->SetUnitCutFlag(kPtHigher);
620 if(ok4) nTracksEmcalDZCut++;
622 if(sflag[goodTrack] == 1) {
623 uArray4->SetUnitSignalFlag(kGood);
624 uArray4->SetUnitSignalFlagC(kFALSE,kGood);
625 } else uArray4->SetUnitSignalFlagC(kFALSE,kBad);
627 if(uArray4->GetUnitEnergy()>0 && ref4){
629 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray4));
632 fRefArray->Add(uArray4);
638 fGeom->GetAbsCellIdFromEtaPhi(eta,phi,towerID);
639 if(towerID==-1) continue;
641 AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(towerID);
642 uArray->SetUnitTrackID(it);
644 Float_t unitEnergy = uArray->GetUnitEnergy();
653 // Do Hadron Correction
654 // Parametrization to be added
655 if (fHCorrection != 0)
657 Float_t hCEnergy = fHadCorr->GetEnergy(p3.Mag(), (Double_t)eta);
658 unitEnergy -= hCEnergy*TMath::Sin(2.0*TMath::ATan(TMath::Exp(-eta)));
660 } //end Hadron Correction loop
662 uArray->SetUnitEnergy(unitEnergy + pt);
663 uArray->SetUnitPxPyPz(kFALSE,vtmp);
665 if(uArray->GetUnitEnergy()<ptMin){
666 uArray->SetUnitCutFlag(kPtSmaller);
669 uArray->SetUnitCutFlag(kPtHigher);
670 if(ok) nTracksEmcalCut++;
674 if(sflag[goodTrack] == 1) {
675 uArray->SetUnitSignalFlag(kGood);
676 uArray->SetUnitSignalFlagC(kFALSE,kGood);
677 } else uArray->SetUnitSignalFlagC(kFALSE,kBad);
679 if(uArray->GetUnitEnergy()>0 && ref){
681 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray));
684 fRefArray->Add(uArray);
686 } // end loop on EMCal acceptance cut + tracks quality
688 // Outside EMCal acceptance
690 Int_t idTPC = fTPCGrid->GetIndex(phi,eta);
692 AliJetUnitArray *uArray = (AliJetUnitArray*)fUnitArray->At(fNumUnits-1+idTPC);
693 uArray->SetUnitTrackID(it);
695 Float_t unitEnergy2 = uArray->GetUnitEnergy(); // check if fNumUnits or fNumUnits-1
696 Bool_t okout = kFALSE;
697 Bool_t refout = kFALSE;
703 // Fill energy outside emcal acceptance
704 uArray->SetUnitEnergy(unitEnergy2 + pt);
705 uArray->SetUnitPxPyPz(kFALSE,vtmp);
708 if(uArray->GetUnitEnergy()<ptMin){
709 uArray->SetUnitCutFlag(kPtSmaller);
712 uArray->SetUnitCutFlag(kPtHigher);
713 if(okout) nTracksTpcCut++;
716 if(sflag[goodTrack] == 1) {
717 uArray->SetUnitSignalFlag(kGood);
718 uArray->SetUnitSignalFlagC(kFALSE,kGood);
719 } else uArray->SetUnitSignalFlagC(kFALSE,kBad);
721 if(uArray->GetUnitEnergy()>0 && refout){
723 new(fRefArray) TRefArray(TProcessID::GetProcessWithUID(uArray));
726 fRefArray->Add(uArray);
733 } // end loop on entries (tpc tracks)
737 cout << "End of Tracks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
738 cout << "goodTracks: " << goodTrack << endl;
745 fNTracks = nTracksTpcOnly;
746 fNTracksCut = nTracksTpcOnlyCut;
748 cout << "fNTracks : " << fNTracks << endl;
749 cout << "fNTracksCut : " << fNTracksCut << endl;
753 fNTracks = nTracksEmcal+nTracksEmcalDZ+nTracksTpc;
754 fNTracksCut = nTracksEmcalCut+nTracksEmcalDZCut+nTracksTpcCut;
756 cout << "fNTracks : " << fNTracks << endl;
757 cout << "fNTracksCut : " << fNTracksCut << endl;
763 //__________________________________________________________
764 void AliJetFillUnitArrayTracks::GetEtaPhiFromIndex(Int_t index, Float_t &eta, Float_t &phi)
766 for(Int_t j=0; j<fNphi+1; j++)
768 for(Int_t i=0; i<fNeta+1; i++)
772 //-------------------------------------
774 if(j*(fNeta+1)+i == index) {
781 //-------------------------------------
784 if(i>0 && i<(fEtaBinInTPCAcc-fEtaBinInEMCalAcc)/2) ii = i;
785 if(i>=(fEtaBinInTPCAcc+fEtaBinInEMCalAcc)/2 && i<fNeta+1) ii = i-fEtaBinInEMCalAcc;
788 if(j<(fNbinPhi+1) && j*(fNeta+1)+i == index) {
793 if((j>=(fNbinPhi+1) && j<(fNbinPhi+1+fPhiBinInEMCalAcc)) &&
794 ((fNbinPhi+1)*(fNeta+1) + (j-fNbinPhi-1)*(fEtaBinInTPCAcc-fEtaBinInEMCalAcc) + ii)== index ) {
795 if(ii==0) {Int_t ind = 0; eta = fEta2->At(ind);}
796 else eta = fEta2->At(i);
800 if(j>=(fNbinPhi+1+fPhiBinInEMCalAcc) && ((fNbinPhi+1)*(fNeta+1)+fPhiBinInEMCalAcc*((fEtaBinInTPCAcc-fEtaBinInEMCalAcc))+(j-(fNbinPhi+1+fPhiBinInEMCalAcc))*(fNeta+1)+i == index)) {