- Int_t nTracks = fESD->GetNumberOfTracks();
- TVector3 inPHOS ;
-
- //In this particular case we use fixed vertex position at zero
- Double_t vtx[3]={0.,0.,0.} ;
- AliESDtrack *track;
- Double_t xyz[3] ;
- Int_t nPHOSmod = geom->GetNModules() ;
- for(Int_t imod=0 ; imod< nPHOSmod; imod++){
- fTPC[imod]->Clear() ;
- }
- Double_t rEMC = geom->GetIPtoCrystalSurface() ; //Use here ideal geometry
- for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
- track = fESD->GetTrack(iTrack);
- if (!track->GetXYZAt(rEMC, fESD->GetMagneticField(), xyz))
- continue; //track coord on the cylinder of PHOS radius
- if ((TMath::Abs(xyz[0])+TMath::Abs(xyz[1])+TMath::Abs(xyz[2]))<=0)
- continue;
- //Check if this track hits PHOS
- inPHOS.SetXYZ(xyz[0],xyz[1],xyz[2]);
- Int_t modNum ;
- Double_t x,z ;
- geom->ImpactOnEmc(vtx, inPHOS.Theta(), inPHOS.Phi(), modNum, x,z) ;
- if(modNum>0 && modNum<=nPHOSmod){
- //Mark this track as one belonging to module
- fTPC[modNum-1]->AddLast(track) ;
+ if(fESD){
+ //Do it ones, only first time
+ if(fModule==1){
+ Int_t nTracks = fESD->GetNumberOfTracks();
+
+ Int_t nPHOSmod = fGeom->GetNModules() ;
+ if(fTPCtracks[0].size()<(UInt_t)nTracks){
+ for(Int_t i=0; i<nPHOSmod; i++)
+ fTPCtracks[i].resize(nTracks) ;
+ }
+ for(Int_t i=0; i<5; i++)fNtpcTracks[i]=0 ;
+ TVector3 inPHOS ;
+
+ //In this particular case we use fixed vertex position at zero
+ Double_t vtx[3]={0.,0.,0.} ;
+ AliESDtrack *track;
+ Double_t xyz[3] ;
+ Double_t rEMC = fGeom->GetIPtoCrystalSurface() ; //Use here ideal geometry
+ for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
+ track = fESD->GetTrack(iTrack);
+ for(Int_t iTestMod=1; iTestMod<=nPHOSmod; iTestMod++){
+ Double_t modAngle=270.+fGeom->GetPHOSAngle(iTestMod) ;
+ modAngle*=TMath::Pi()/180. ;
+ track->Rotate(modAngle);
+ if (!track->GetXYZAt(rEMC, fESD->GetMagneticField(), xyz))
+ continue; //track coord on the cylinder of PHOS radius
+ if ((TMath::Abs(xyz[0])+TMath::Abs(xyz[1])+TMath::Abs(xyz[2]))<=0)
+ continue;
+ //Check if this track hits PHOS
+ inPHOS.SetXYZ(xyz[0],xyz[1],xyz[2]);
+ Int_t modNum ;
+ Double_t x,z ;
+ fGeom->ImpactOnEmc(vtx, inPHOS.Theta(), inPHOS.Phi(), modNum, z, x) ;
+ if(modNum==iTestMod){
+ //Mark this track as one belonging to module
+ TrackInPHOS_t &t = fTPCtracks[modNum-1][fNtpcTracks[modNum-1]++] ;
+ t.track = track ;
+ t.x = x ;
+ t.z = z ;
+ break ;
+ }
+ }
+ }