ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/* $Id$ */

/* History of cvs commits:
 *
 * $Log$
 * Revision 1.6  2007/08/22 09:20:50  hristov
 * Updated QA classes (Yves)
 *
 * Revision 1.5  2007/07/11 13:43:30  hristov
 * New class AliESDEvent, backward compatibility with the old AliESD (Christian)
 *
 * Revision 1.4  2007/05/04 14:49:29  policheh
 * AliPHOSRecPoint inheritance from AliCluster
 *
 * Revision 1.3  2007/04/25 19:39:42  kharlov
 * Track extracpolation improved
 *
 * Revision 1.2  2007/04/01 19:16:52  kharlov
 * D.P.: Produce EMCTrackSegments using TPC/ITS tracks (no CPV)
 *
 *
 */

//_________________________________________________________________________
// Implementation version 2 of algorithm class to construct PHOS track segments
// Track segment for PHOS is list of 
//        EMC RecPoint + (possibly) projection of TPC track
// To find TrackSegments we do the following: 
//  for each EMC RecPoints we look at
//   TPC projections radius fRtpc. 
//  If there is such a track
//   we make "Link" it is just indexes of EMC and TPC track and distance
//   between them in the PHOS plane. 
//  Then we sort "Links" and starting from the 
//   least "Link" pointing to the unassined EMC and TPC assing them to 
//   new TrackSegment. 
// If there is no TPC track we make TrackSegment 
// consisting from EMC alone. There is no TrackSegments without EMC RecPoint.
//// In principle this class should be called from AliPHOSReconstructor, but 
// one can use it as well in standalone mode.
// Use  case:
//  root [0] AliPHOSTrackSegmentMakerv2 * t = new AliPHOSTrackSegmentMaker("galice.root", "tracksegmentsname", "recpointsname")
//  Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
//               // reads gAlice from header file "galice.root", uses recpoints stored in the branch names "recpointsname" (default = "Default")
//               // and saves recpoints in branch named "tracksegmentsname" (default = "recpointsname")                       
//  root [1] t->ExecuteTask()
//  root [3] t->SetTrackSegmentsBranch("max distance 5 cm")
//  root [4] t->ExecuteTask("deb all time") 
//                 
//*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH) & Yves Schutz (SUBATECH) 
//

// --- ROOT system ---
#include "TFile.h"
#include "TTree.h"
#include "TBenchmark.h"

// --- Standard library ---
#include "Riostream.h"
// --- AliRoot header files ---
#include "AliPHOSGeometry.h"
#include "AliPHOSTrackSegmentMakerv2.h"
#include "AliPHOSTrackSegment.h"
#include "AliPHOSLink.h"
#include "AliPHOSEmcRecPoint.h"
#include "AliPHOSCpvRecPoint.h"

#include "AliESDEvent.h"
#include "AliESDtrack.h"

ClassImp( AliPHOSTrackSegmentMakerv2) 


//____________________________________________________________________________
AliPHOSTrackSegmentMakerv2::AliPHOSTrackSegmentMakerv2() :
  AliPHOSTrackSegmentMaker(),
  fDefaultInit(kTRUE),
  fWrite(kFALSE),
  fNTrackSegments(0),
  fRtpc(0.f),
  fVtx(0.,0.,0.),
  fLinkUpArray(0),
  fTPCtracks(),
  fEmcFirst(0),
  fEmcLast(0),
  fModule(0),
  fTrackSegments(NULL)
{
  // default ctor (to be used mainly by Streamer)

  for(Int_t i=0; i<5; i++)fNtpcTracks[i]=0 ;
  InitParameters() ; 
}

//____________________________________________________________________________
AliPHOSTrackSegmentMakerv2::AliPHOSTrackSegmentMakerv2(AliPHOSGeometry *geom) :
  AliPHOSTrackSegmentMaker(geom),
  fDefaultInit(kFALSE),
  fWrite(kFALSE),
  fNTrackSegments(0),
  fRtpc(0.f),
  fVtx(0.,0.,0.),
  fLinkUpArray(0),
  fTPCtracks(),
  fEmcFirst(0),
  fEmcLast(0),
  fModule(0),
  fTrackSegments(NULL)
{
  // ctor
  for(Int_t i=0; i<5; i++)fNtpcTracks[i]=0 ;

  InitParameters() ; 
  Init() ;
  fESD = 0;
}

//____________________________________________________________________________
AliPHOSTrackSegmentMakerv2::AliPHOSTrackSegmentMakerv2(const AliPHOSTrackSegmentMakerv2 & tsm) :
  AliPHOSTrackSegmentMaker(tsm),
  fDefaultInit(kFALSE),
  fWrite(kFALSE),
  fNTrackSegments(0),
  fRtpc(0.f),
  fVtx(0.,0.,0.),
  fLinkUpArray(0),
  fTPCtracks(),
  fEmcFirst(0),
  fEmcLast(0),
  fModule(0),
  fTrackSegments(NULL)
{
  // cpy ctor: no implementation yet
  // requested by the Coding Convention
  Fatal("cpy ctor", "not implemented") ;
}


//____________________________________________________________________________
 AliPHOSTrackSegmentMakerv2::~AliPHOSTrackSegmentMakerv2()
{ 
  // dtor
  // fDefaultInit = kTRUE if TrackSegmentMaker created by default ctor (to get just the parameters)
  if (!fDefaultInit)  
    delete fLinkUpArray ;
  if (fTrackSegments) {
    fTrackSegments->Delete();
    delete fTrackSegments;
  }
}

//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::FillOneModule()
{
  // Finds first and last indexes between which 
  // clusters from one PHOS module are

  //First EMC clusters
  Int_t totalEmc = fEMCRecPoints->GetEntriesFast() ;
  for(fEmcFirst = fEmcLast; (fEmcLast < totalEmc) &&  
	((static_cast<AliPHOSRecPoint *>(fEMCRecPoints->At(fEmcLast)))->GetPHOSMod() == fModule ); 
      fEmcLast ++)  ;
  
  //Now TPC tracks
  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 ;
           }
        }
      }
    }
  } 

}

//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * emcClu,
                                                         AliESDtrack *track,
                                                         Float_t &dx, Float_t &dz) const
{
  // Calculates the distance between the EMC RecPoint and the CPV RecPoint
  // Clusters are sorted in "rows" and "columns" of width 1 cm

  TVector3 emcGlobal; // Global position of the EMC recpoint
  fGeom->GetGlobalPHOS((AliPHOSRecPoint*)emcClu,emcGlobal);

  //Calculate actual distance to the PHOS surface
  Double_t modAngle=270.+fGeom->GetPHOSAngle(emcClu->GetPHOSMod()) ;
  modAngle*=TMath::Pi()/180. ;
  Double_t rEMC = emcGlobal.X()*TMath::Cos(modAngle)+emcGlobal.Y()*TMath::Sin(modAngle) ;
  track->Rotate(modAngle);
  Double_t xyz[3] ;
  if(!track->GetXYZAt(rEMC, fESD->GetMagneticField(), xyz)){
    dx=999. ;
    dz=999. ;
    return ; //track coord on the cylinder of PHOS radius
  }
  if((TMath::Abs(xyz[0])+TMath::Abs(xyz[1])+TMath::Abs(xyz[2]))<=0){
    dx=999. ; 
    dz=999. ;
    return ;
  } 

  dx=(emcGlobal.X()-xyz[0])*TMath::Sin(modAngle)-(emcGlobal.Y()-xyz[1])*TMath::Cos(modAngle) ;
  dx=TMath::Sign(dx,(Float_t)(emcGlobal.X()-xyz[0])) ; //set direction
  dz=emcGlobal.Z()-xyz[2] ;

  return ;
}
//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::Init()
{
  // Make all memory allocations that are not possible in default constructor
  
  fLinkUpArray  = new TClonesArray("AliPHOSLink", 1000); 
  fTrackSegments = new TClonesArray("AliPHOSTrackSegment",100);
}

//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::InitParameters()
{
  //Initializes parameters
  fRtpc      = 4. ;
  fEmcFirst  = 0 ;    
  fEmcLast   = 0 ;   
  fLinkUpArray = 0 ;
  fWrite                   = kTRUE ;
}


//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::MakeLinks()
{ 
  // Finds distances (links) between all EMC and CPV clusters, 
  // which are not further apart from each other than fRcpv 
  // and sort them in accordance with this distance
  
  fLinkUpArray->Clear() ;    

  AliPHOSEmcRecPoint * emcclu ;

  Int_t iLinkUp  = 0 ;
  
  Int_t iEmcRP;
  for(iEmcRP = fEmcFirst; iEmcRP < fEmcLast; iEmcRP++ ) {
    emcclu = static_cast<AliPHOSEmcRecPoint *>(fEMCRecPoints->At(iEmcRP)) ;
    TVector3 vecEmc ;
    emcclu->GetLocalPosition(vecEmc) ;
    Int_t mod=emcclu->GetPHOSMod() ;
    for(Int_t itr=0; itr<fNtpcTracks[mod-1] ; itr++){
      TrackInPHOS_t &t = fTPCtracks[mod-1][itr] ;
      //calculate raw distance
      Double_t rawdx = t.x - vecEmc.X() ;
      Double_t rawdz = t.z - vecEmc.Z() ;
      if(TMath::Sqrt(rawdx*rawdx+rawdz*rawdz)<fRtpc){
        Float_t dx,dz ;
        //calculate presize difference accounting misalignment
        GetDistanceInPHOSPlane(emcclu, t.track, dx,dz) ;     
        Int_t itrack = t.track->GetID() ;
        new ((*fLinkUpArray)[iLinkUp++])  AliPHOSLink(dx, dz, iEmcRP, itrack, -1) ;
      }      
    }
  } 
  fLinkUpArray->Sort() ;  //first links with smallest distances
}

//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::MakePairs()
{ 
  // Using the previously made list of "links", we found the smallest link - i.e. 
  // link with the least distance between EMC and CPV and pointing to still 
  // unassigned RecParticles. We assign these RecPoints to TrackSegment and 
  // remove them from the list of "unassigned". 

  //Make arrays to mark clusters already chosen
  Int_t * emcExist = 0;

  if(fEmcLast > fEmcFirst)
    emcExist = new Int_t[fEmcLast-fEmcFirst] ;
  else
    AliFatal(Form("fEmcLast > fEmcFirst: %d > %d is not true!",fEmcLast,fEmcFirst));
  
  Int_t index;
  for(index = 0; index <fEmcLast-fEmcFirst; index ++)
    emcExist[index] = 1 ;
  
  
  Bool_t * tpcExist = 0;
  Int_t nTracks = fESD->GetNumberOfTracks();
  if(nTracks>0)
    tpcExist = new Bool_t[nTracks] ;
  
  for(index = 0; index <nTracks; index ++)
    tpcExist[index] = 1 ;
  
  
  // Finds the smallest links and makes pairs of CPV and EMC clusters with smallest distance 
  TIter nextUp(fLinkUpArray) ;
  
  AliPHOSLink * linkUp ;
  
  AliPHOSCpvRecPoint * nullpointer = 0 ;
  
  while ( (linkUp =  static_cast<AliPHOSLink *>(nextUp()) ) ){  

    if(emcExist[linkUp->GetEmc()-fEmcFirst] != -1){

      if(tpcExist[linkUp->GetCpv()]){ //Track still exist
         Float_t dx,dz ; 
         linkUp->GetXZ(dx,dz) ;
	 new ((* fTrackSegments)[fNTrackSegments]) 
	   AliPHOSTrackSegment(static_cast<AliPHOSEmcRecPoint *>(fEMCRecPoints->At(linkUp->GetEmc())) , 
			       nullpointer,
			       linkUp->GetTrack(),dx,dz) ;
       (static_cast<AliPHOSTrackSegment *>(fTrackSegments->At(fNTrackSegments)))->SetIndexInList(fNTrackSegments);
       fNTrackSegments++ ;
       emcExist[linkUp->GetEmc()-fEmcFirst] = -1 ; //Mark emc  that Cpv was found 
       //mark track as already used 
       tpcExist[linkUp->GetCpv()] = kFALSE ;
      } //if CpvUp still exist
    } 
  }        

  //look through emc recPoints left without CPV
  if(emcExist){ //if there is emc rec point
    Int_t iEmcRP ;
    for(iEmcRP = 0; iEmcRP < fEmcLast-fEmcFirst  ; iEmcRP++ ){
      if(emcExist[iEmcRP] > 0 ){
       new ((*fTrackSegments)[fNTrackSegments])  
         AliPHOSTrackSegment(static_cast<AliPHOSEmcRecPoint *>(fEMCRecPoints->At(iEmcRP+fEmcFirst)), 
                           nullpointer) ;
       (static_cast<AliPHOSTrackSegment *>(fTrackSegments->At(fNTrackSegments)))->SetIndexInList(fNTrackSegments);
       fNTrackSegments++;    
      } 
    }
  }
  delete [] emcExist ; 
  delete [] tpcExist ; 
}

//____________________________________________________________________________
void  AliPHOSTrackSegmentMakerv2::Clusters2TrackSegments(Option_t *option)
{
  // Steering method to perform track segment construction for events
  // in the range from fFirstEvent to fLastEvent.
  // This range is optionally set by SetEventRange().
  // if fLastEvent=-1 (by default), then process events until the end.
  
  if(strstr(option,"tim"))
    gBenchmark->Start("PHOSTSMaker");
 
  if(strstr(option,"print")) {
    Print() ; 
    return ; 
  }
  
  //Make some initializations 
  fNTrackSegments = 0 ;
  fEmcFirst = 0 ;    
  fEmcLast  = 0 ;   
    
  fTrackSegments->Clear();

  //    if(!ReadRecPoints(ievent))   continue; //reads RecPoints for event ievent
    
  for(fModule = 1; fModule <= fGeom->GetNModules() ; fModule++ ) {
    FillOneModule() ; 
    MakeLinks() ;
    MakePairs() ;
  }

  if(strstr(option,"deb"))
    PrintTrackSegments(option);
    
  if(strstr(option,"tim")){
    gBenchmark->Stop("PHOSTSMaker");
    Info("Exec", "took %f seconds for making TS", 
	 gBenchmark->GetCpuTime("PHOSTSMaker")); 
  }
}

//____________________________________________________________________________
void AliPHOSTrackSegmentMakerv2::Print(const Option_t *)const
{
  //  Print TrackSegmentMaker parameters

  TString message("") ;
  if( strcmp(GetName(), "") != 0 ) {
    message = "\n======== AliPHOSTrackSegmentMakerv2 ========\n" ; 
    message += "Making Track segments\n" ;
    message += "with parameters:\n" ; 
    message += "     Maximal EMC - TPC distance (cm) %f\n" ;
    message += "============================================\n" ;
    Info("Print", message.Data(),fRtpc) ;
  }
  else
    Info("Print", "AliPHOSTrackSegmentMakerv2 not initialized ") ;

}

//____________________________________________________________________________
void AliPHOSTrackSegmentMakerv2::PrintTrackSegments(Option_t * option)
{
  // option deb - prints # of found TrackSegments
  // option deb all - prints as well indexed of found RecParticles assigned to the TS

  Info("PrintTrackSegments", "Results from TrackSegmentMaker:") ; 
  printf("        Found %d TrackSegments\n", fTrackSegments->GetEntriesFast() ); 
  
  if(strstr(option,"all")) {  // printing found TS
    printf("TrackSegment #  EMC RP#  CPV RP#\n") ; 
    Int_t index;
    for (index = 0 ; index <fTrackSegments->GetEntriesFast() ; index++) {
      AliPHOSTrackSegment * ts = (AliPHOSTrackSegment * )fTrackSegments->At(index) ; 
      printf("   %d           %d        %d \n", ts->GetIndexInList(), ts->GetEmcIndex(), ts->GetTrackIndex() ) ; 
    }	
  }
}
 AliPHOSTrackSegmentMakerv2.cxx:1
 AliPHOSTrackSegmentMakerv2.cxx:2
 AliPHOSTrackSegmentMakerv2.cxx:3
 AliPHOSTrackSegmentMakerv2.cxx:4
 AliPHOSTrackSegmentMakerv2.cxx:5
 AliPHOSTrackSegmentMakerv2.cxx:6
 AliPHOSTrackSegmentMakerv2.cxx:7
 AliPHOSTrackSegmentMakerv2.cxx:8
 AliPHOSTrackSegmentMakerv2.cxx:9
 AliPHOSTrackSegmentMakerv2.cxx:10
 AliPHOSTrackSegmentMakerv2.cxx:11
 AliPHOSTrackSegmentMakerv2.cxx:12
 AliPHOSTrackSegmentMakerv2.cxx:13
 AliPHOSTrackSegmentMakerv2.cxx:14
 AliPHOSTrackSegmentMakerv2.cxx:15
 AliPHOSTrackSegmentMakerv2.cxx:16
 AliPHOSTrackSegmentMakerv2.cxx:17
 AliPHOSTrackSegmentMakerv2.cxx:18
 AliPHOSTrackSegmentMakerv2.cxx:19
 AliPHOSTrackSegmentMakerv2.cxx:20
 AliPHOSTrackSegmentMakerv2.cxx:21
 AliPHOSTrackSegmentMakerv2.cxx:22
 AliPHOSTrackSegmentMakerv2.cxx:23
 AliPHOSTrackSegmentMakerv2.cxx:24
 AliPHOSTrackSegmentMakerv2.cxx:25
 AliPHOSTrackSegmentMakerv2.cxx:26
 AliPHOSTrackSegmentMakerv2.cxx:27
 AliPHOSTrackSegmentMakerv2.cxx:28
 AliPHOSTrackSegmentMakerv2.cxx:29
 AliPHOSTrackSegmentMakerv2.cxx:30
 AliPHOSTrackSegmentMakerv2.cxx:31
 AliPHOSTrackSegmentMakerv2.cxx:32
 AliPHOSTrackSegmentMakerv2.cxx:33
 AliPHOSTrackSegmentMakerv2.cxx:34
 AliPHOSTrackSegmentMakerv2.cxx:35
 AliPHOSTrackSegmentMakerv2.cxx:36
 AliPHOSTrackSegmentMakerv2.cxx:37
 AliPHOSTrackSegmentMakerv2.cxx:38
 AliPHOSTrackSegmentMakerv2.cxx:39
 AliPHOSTrackSegmentMakerv2.cxx:40
 AliPHOSTrackSegmentMakerv2.cxx:41
 AliPHOSTrackSegmentMakerv2.cxx:42
 AliPHOSTrackSegmentMakerv2.cxx:43
 AliPHOSTrackSegmentMakerv2.cxx:44
 AliPHOSTrackSegmentMakerv2.cxx:45
 AliPHOSTrackSegmentMakerv2.cxx:46
 AliPHOSTrackSegmentMakerv2.cxx:47
 AliPHOSTrackSegmentMakerv2.cxx:48
 AliPHOSTrackSegmentMakerv2.cxx:49
 AliPHOSTrackSegmentMakerv2.cxx:50
 AliPHOSTrackSegmentMakerv2.cxx:51
 AliPHOSTrackSegmentMakerv2.cxx:52
 AliPHOSTrackSegmentMakerv2.cxx:53
 AliPHOSTrackSegmentMakerv2.cxx:54
 AliPHOSTrackSegmentMakerv2.cxx:55
 AliPHOSTrackSegmentMakerv2.cxx:56
 AliPHOSTrackSegmentMakerv2.cxx:57
 AliPHOSTrackSegmentMakerv2.cxx:58
 AliPHOSTrackSegmentMakerv2.cxx:59
 AliPHOSTrackSegmentMakerv2.cxx:60
 AliPHOSTrackSegmentMakerv2.cxx:61
 AliPHOSTrackSegmentMakerv2.cxx:62
 AliPHOSTrackSegmentMakerv2.cxx:63
 AliPHOSTrackSegmentMakerv2.cxx:64
 AliPHOSTrackSegmentMakerv2.cxx:65
 AliPHOSTrackSegmentMakerv2.cxx:66
 AliPHOSTrackSegmentMakerv2.cxx:67
 AliPHOSTrackSegmentMakerv2.cxx:68
 AliPHOSTrackSegmentMakerv2.cxx:69
 AliPHOSTrackSegmentMakerv2.cxx:70
 AliPHOSTrackSegmentMakerv2.cxx:71
 AliPHOSTrackSegmentMakerv2.cxx:72
 AliPHOSTrackSegmentMakerv2.cxx:73
 AliPHOSTrackSegmentMakerv2.cxx:74
 AliPHOSTrackSegmentMakerv2.cxx:75
 AliPHOSTrackSegmentMakerv2.cxx:76
 AliPHOSTrackSegmentMakerv2.cxx:77
 AliPHOSTrackSegmentMakerv2.cxx:78
 AliPHOSTrackSegmentMakerv2.cxx:79
 AliPHOSTrackSegmentMakerv2.cxx:80
 AliPHOSTrackSegmentMakerv2.cxx:81
 AliPHOSTrackSegmentMakerv2.cxx:82
 AliPHOSTrackSegmentMakerv2.cxx:83
 AliPHOSTrackSegmentMakerv2.cxx:84
 AliPHOSTrackSegmentMakerv2.cxx:85
 AliPHOSTrackSegmentMakerv2.cxx:86
 AliPHOSTrackSegmentMakerv2.cxx:87
 AliPHOSTrackSegmentMakerv2.cxx:88
 AliPHOSTrackSegmentMakerv2.cxx:89
 AliPHOSTrackSegmentMakerv2.cxx:90
 AliPHOSTrackSegmentMakerv2.cxx:91
 AliPHOSTrackSegmentMakerv2.cxx:92
 AliPHOSTrackSegmentMakerv2.cxx:93
 AliPHOSTrackSegmentMakerv2.cxx:94
 AliPHOSTrackSegmentMakerv2.cxx:95
 AliPHOSTrackSegmentMakerv2.cxx:96
 AliPHOSTrackSegmentMakerv2.cxx:97
 AliPHOSTrackSegmentMakerv2.cxx:98
 AliPHOSTrackSegmentMakerv2.cxx:99
 AliPHOSTrackSegmentMakerv2.cxx:100
 AliPHOSTrackSegmentMakerv2.cxx:101
 AliPHOSTrackSegmentMakerv2.cxx:102
 AliPHOSTrackSegmentMakerv2.cxx:103
 AliPHOSTrackSegmentMakerv2.cxx:104
 AliPHOSTrackSegmentMakerv2.cxx:105
 AliPHOSTrackSegmentMakerv2.cxx:106
 AliPHOSTrackSegmentMakerv2.cxx:107
 AliPHOSTrackSegmentMakerv2.cxx:108
 AliPHOSTrackSegmentMakerv2.cxx:109
 AliPHOSTrackSegmentMakerv2.cxx:110
 AliPHOSTrackSegmentMakerv2.cxx:111
 AliPHOSTrackSegmentMakerv2.cxx:112
 AliPHOSTrackSegmentMakerv2.cxx:113
 AliPHOSTrackSegmentMakerv2.cxx:114
 AliPHOSTrackSegmentMakerv2.cxx:115
 AliPHOSTrackSegmentMakerv2.cxx:116
 AliPHOSTrackSegmentMakerv2.cxx:117
 AliPHOSTrackSegmentMakerv2.cxx:118
 AliPHOSTrackSegmentMakerv2.cxx:119
 AliPHOSTrackSegmentMakerv2.cxx:120
 AliPHOSTrackSegmentMakerv2.cxx:121
 AliPHOSTrackSegmentMakerv2.cxx:122
 AliPHOSTrackSegmentMakerv2.cxx:123
 AliPHOSTrackSegmentMakerv2.cxx:124
 AliPHOSTrackSegmentMakerv2.cxx:125
 AliPHOSTrackSegmentMakerv2.cxx:126
 AliPHOSTrackSegmentMakerv2.cxx:127
 AliPHOSTrackSegmentMakerv2.cxx:128
 AliPHOSTrackSegmentMakerv2.cxx:129
 AliPHOSTrackSegmentMakerv2.cxx:130
 AliPHOSTrackSegmentMakerv2.cxx:131
 AliPHOSTrackSegmentMakerv2.cxx:132
 AliPHOSTrackSegmentMakerv2.cxx:133
 AliPHOSTrackSegmentMakerv2.cxx:134
 AliPHOSTrackSegmentMakerv2.cxx:135
 AliPHOSTrackSegmentMakerv2.cxx:136
 AliPHOSTrackSegmentMakerv2.cxx:137
 AliPHOSTrackSegmentMakerv2.cxx:138
 AliPHOSTrackSegmentMakerv2.cxx:139
 AliPHOSTrackSegmentMakerv2.cxx:140
 AliPHOSTrackSegmentMakerv2.cxx:141
 AliPHOSTrackSegmentMakerv2.cxx:142
 AliPHOSTrackSegmentMakerv2.cxx:143
 AliPHOSTrackSegmentMakerv2.cxx:144
 AliPHOSTrackSegmentMakerv2.cxx:145
 AliPHOSTrackSegmentMakerv2.cxx:146
 AliPHOSTrackSegmentMakerv2.cxx:147
 AliPHOSTrackSegmentMakerv2.cxx:148
 AliPHOSTrackSegmentMakerv2.cxx:149
 AliPHOSTrackSegmentMakerv2.cxx:150
 AliPHOSTrackSegmentMakerv2.cxx:151
 AliPHOSTrackSegmentMakerv2.cxx:152
 AliPHOSTrackSegmentMakerv2.cxx:153
 AliPHOSTrackSegmentMakerv2.cxx:154
 AliPHOSTrackSegmentMakerv2.cxx:155
 AliPHOSTrackSegmentMakerv2.cxx:156
 AliPHOSTrackSegmentMakerv2.cxx:157
 AliPHOSTrackSegmentMakerv2.cxx:158
 AliPHOSTrackSegmentMakerv2.cxx:159
 AliPHOSTrackSegmentMakerv2.cxx:160
 AliPHOSTrackSegmentMakerv2.cxx:161
 AliPHOSTrackSegmentMakerv2.cxx:162
 AliPHOSTrackSegmentMakerv2.cxx:163
 AliPHOSTrackSegmentMakerv2.cxx:164
 AliPHOSTrackSegmentMakerv2.cxx:165
 AliPHOSTrackSegmentMakerv2.cxx:166
 AliPHOSTrackSegmentMakerv2.cxx:167
 AliPHOSTrackSegmentMakerv2.cxx:168
 AliPHOSTrackSegmentMakerv2.cxx:169
 AliPHOSTrackSegmentMakerv2.cxx:170
 AliPHOSTrackSegmentMakerv2.cxx:171
 AliPHOSTrackSegmentMakerv2.cxx:172
 AliPHOSTrackSegmentMakerv2.cxx:173
 AliPHOSTrackSegmentMakerv2.cxx:174
 AliPHOSTrackSegmentMakerv2.cxx:175
 AliPHOSTrackSegmentMakerv2.cxx:176
 AliPHOSTrackSegmentMakerv2.cxx:177
 AliPHOSTrackSegmentMakerv2.cxx:178
 AliPHOSTrackSegmentMakerv2.cxx:179
 AliPHOSTrackSegmentMakerv2.cxx:180
 AliPHOSTrackSegmentMakerv2.cxx:181
 AliPHOSTrackSegmentMakerv2.cxx:182
 AliPHOSTrackSegmentMakerv2.cxx:183
 AliPHOSTrackSegmentMakerv2.cxx:184
 AliPHOSTrackSegmentMakerv2.cxx:185
 AliPHOSTrackSegmentMakerv2.cxx:186
 AliPHOSTrackSegmentMakerv2.cxx:187
 AliPHOSTrackSegmentMakerv2.cxx:188
 AliPHOSTrackSegmentMakerv2.cxx:189
 AliPHOSTrackSegmentMakerv2.cxx:190
 AliPHOSTrackSegmentMakerv2.cxx:191
 AliPHOSTrackSegmentMakerv2.cxx:192
 AliPHOSTrackSegmentMakerv2.cxx:193
 AliPHOSTrackSegmentMakerv2.cxx:194
 AliPHOSTrackSegmentMakerv2.cxx:195
 AliPHOSTrackSegmentMakerv2.cxx:196
 AliPHOSTrackSegmentMakerv2.cxx:197
 AliPHOSTrackSegmentMakerv2.cxx:198
 AliPHOSTrackSegmentMakerv2.cxx:199
 AliPHOSTrackSegmentMakerv2.cxx:200
 AliPHOSTrackSegmentMakerv2.cxx:201
 AliPHOSTrackSegmentMakerv2.cxx:202
 AliPHOSTrackSegmentMakerv2.cxx:203
 AliPHOSTrackSegmentMakerv2.cxx:204
 AliPHOSTrackSegmentMakerv2.cxx:205
 AliPHOSTrackSegmentMakerv2.cxx:206
 AliPHOSTrackSegmentMakerv2.cxx:207
 AliPHOSTrackSegmentMakerv2.cxx:208
 AliPHOSTrackSegmentMakerv2.cxx:209
 AliPHOSTrackSegmentMakerv2.cxx:210
 AliPHOSTrackSegmentMakerv2.cxx:211
 AliPHOSTrackSegmentMakerv2.cxx:212
 AliPHOSTrackSegmentMakerv2.cxx:213
 AliPHOSTrackSegmentMakerv2.cxx:214
 AliPHOSTrackSegmentMakerv2.cxx:215
 AliPHOSTrackSegmentMakerv2.cxx:216
 AliPHOSTrackSegmentMakerv2.cxx:217
 AliPHOSTrackSegmentMakerv2.cxx:218
 AliPHOSTrackSegmentMakerv2.cxx:219
 AliPHOSTrackSegmentMakerv2.cxx:220
 AliPHOSTrackSegmentMakerv2.cxx:221
 AliPHOSTrackSegmentMakerv2.cxx:222
 AliPHOSTrackSegmentMakerv2.cxx:223
 AliPHOSTrackSegmentMakerv2.cxx:224
 AliPHOSTrackSegmentMakerv2.cxx:225
 AliPHOSTrackSegmentMakerv2.cxx:226
 AliPHOSTrackSegmentMakerv2.cxx:227
 AliPHOSTrackSegmentMakerv2.cxx:228
 AliPHOSTrackSegmentMakerv2.cxx:229
 AliPHOSTrackSegmentMakerv2.cxx:230
 AliPHOSTrackSegmentMakerv2.cxx:231
 AliPHOSTrackSegmentMakerv2.cxx:232
 AliPHOSTrackSegmentMakerv2.cxx:233
 AliPHOSTrackSegmentMakerv2.cxx:234
 AliPHOSTrackSegmentMakerv2.cxx:235
 AliPHOSTrackSegmentMakerv2.cxx:236
 AliPHOSTrackSegmentMakerv2.cxx:237
 AliPHOSTrackSegmentMakerv2.cxx:238
 AliPHOSTrackSegmentMakerv2.cxx:239
 AliPHOSTrackSegmentMakerv2.cxx:240
 AliPHOSTrackSegmentMakerv2.cxx:241
 AliPHOSTrackSegmentMakerv2.cxx:242
 AliPHOSTrackSegmentMakerv2.cxx:243
 AliPHOSTrackSegmentMakerv2.cxx:244
 AliPHOSTrackSegmentMakerv2.cxx:245
 AliPHOSTrackSegmentMakerv2.cxx:246
 AliPHOSTrackSegmentMakerv2.cxx:247
 AliPHOSTrackSegmentMakerv2.cxx:248
 AliPHOSTrackSegmentMakerv2.cxx:249
 AliPHOSTrackSegmentMakerv2.cxx:250
 AliPHOSTrackSegmentMakerv2.cxx:251
 AliPHOSTrackSegmentMakerv2.cxx:252
 AliPHOSTrackSegmentMakerv2.cxx:253
 AliPHOSTrackSegmentMakerv2.cxx:254
 AliPHOSTrackSegmentMakerv2.cxx:255
 AliPHOSTrackSegmentMakerv2.cxx:256
 AliPHOSTrackSegmentMakerv2.cxx:257
 AliPHOSTrackSegmentMakerv2.cxx:258
 AliPHOSTrackSegmentMakerv2.cxx:259
 AliPHOSTrackSegmentMakerv2.cxx:260
 AliPHOSTrackSegmentMakerv2.cxx:261
 AliPHOSTrackSegmentMakerv2.cxx:262
 AliPHOSTrackSegmentMakerv2.cxx:263
 AliPHOSTrackSegmentMakerv2.cxx:264
 AliPHOSTrackSegmentMakerv2.cxx:265
 AliPHOSTrackSegmentMakerv2.cxx:266
 AliPHOSTrackSegmentMakerv2.cxx:267
 AliPHOSTrackSegmentMakerv2.cxx:268
 AliPHOSTrackSegmentMakerv2.cxx:269
 AliPHOSTrackSegmentMakerv2.cxx:270
 AliPHOSTrackSegmentMakerv2.cxx:271
 AliPHOSTrackSegmentMakerv2.cxx:272
 AliPHOSTrackSegmentMakerv2.cxx:273
 AliPHOSTrackSegmentMakerv2.cxx:274
 AliPHOSTrackSegmentMakerv2.cxx:275
 AliPHOSTrackSegmentMakerv2.cxx:276
 AliPHOSTrackSegmentMakerv2.cxx:277
 AliPHOSTrackSegmentMakerv2.cxx:278
 AliPHOSTrackSegmentMakerv2.cxx:279
 AliPHOSTrackSegmentMakerv2.cxx:280
 AliPHOSTrackSegmentMakerv2.cxx:281
 AliPHOSTrackSegmentMakerv2.cxx:282
 AliPHOSTrackSegmentMakerv2.cxx:283
 AliPHOSTrackSegmentMakerv2.cxx:284
 AliPHOSTrackSegmentMakerv2.cxx:285
 AliPHOSTrackSegmentMakerv2.cxx:286
 AliPHOSTrackSegmentMakerv2.cxx:287
 AliPHOSTrackSegmentMakerv2.cxx:288
 AliPHOSTrackSegmentMakerv2.cxx:289
 AliPHOSTrackSegmentMakerv2.cxx:290
 AliPHOSTrackSegmentMakerv2.cxx:291
 AliPHOSTrackSegmentMakerv2.cxx:292
 AliPHOSTrackSegmentMakerv2.cxx:293
 AliPHOSTrackSegmentMakerv2.cxx:294
 AliPHOSTrackSegmentMakerv2.cxx:295
 AliPHOSTrackSegmentMakerv2.cxx:296
 AliPHOSTrackSegmentMakerv2.cxx:297
 AliPHOSTrackSegmentMakerv2.cxx:298
 AliPHOSTrackSegmentMakerv2.cxx:299
 AliPHOSTrackSegmentMakerv2.cxx:300
 AliPHOSTrackSegmentMakerv2.cxx:301
 AliPHOSTrackSegmentMakerv2.cxx:302
 AliPHOSTrackSegmentMakerv2.cxx:303
 AliPHOSTrackSegmentMakerv2.cxx:304
 AliPHOSTrackSegmentMakerv2.cxx:305
 AliPHOSTrackSegmentMakerv2.cxx:306
 AliPHOSTrackSegmentMakerv2.cxx:307
 AliPHOSTrackSegmentMakerv2.cxx:308
 AliPHOSTrackSegmentMakerv2.cxx:309
 AliPHOSTrackSegmentMakerv2.cxx:310
 AliPHOSTrackSegmentMakerv2.cxx:311
 AliPHOSTrackSegmentMakerv2.cxx:312
 AliPHOSTrackSegmentMakerv2.cxx:313
 AliPHOSTrackSegmentMakerv2.cxx:314
 AliPHOSTrackSegmentMakerv2.cxx:315
 AliPHOSTrackSegmentMakerv2.cxx:316
 AliPHOSTrackSegmentMakerv2.cxx:317
 AliPHOSTrackSegmentMakerv2.cxx:318
 AliPHOSTrackSegmentMakerv2.cxx:319
 AliPHOSTrackSegmentMakerv2.cxx:320
 AliPHOSTrackSegmentMakerv2.cxx:321
 AliPHOSTrackSegmentMakerv2.cxx:322
 AliPHOSTrackSegmentMakerv2.cxx:323
 AliPHOSTrackSegmentMakerv2.cxx:324
 AliPHOSTrackSegmentMakerv2.cxx:325
 AliPHOSTrackSegmentMakerv2.cxx:326
 AliPHOSTrackSegmentMakerv2.cxx:327
 AliPHOSTrackSegmentMakerv2.cxx:328
 AliPHOSTrackSegmentMakerv2.cxx:329
 AliPHOSTrackSegmentMakerv2.cxx:330
 AliPHOSTrackSegmentMakerv2.cxx:331
 AliPHOSTrackSegmentMakerv2.cxx:332
 AliPHOSTrackSegmentMakerv2.cxx:333
 AliPHOSTrackSegmentMakerv2.cxx:334
 AliPHOSTrackSegmentMakerv2.cxx:335
 AliPHOSTrackSegmentMakerv2.cxx:336
 AliPHOSTrackSegmentMakerv2.cxx:337
 AliPHOSTrackSegmentMakerv2.cxx:338
 AliPHOSTrackSegmentMakerv2.cxx:339
 AliPHOSTrackSegmentMakerv2.cxx:340
 AliPHOSTrackSegmentMakerv2.cxx:341
 AliPHOSTrackSegmentMakerv2.cxx:342
 AliPHOSTrackSegmentMakerv2.cxx:343
 AliPHOSTrackSegmentMakerv2.cxx:344
 AliPHOSTrackSegmentMakerv2.cxx:345
 AliPHOSTrackSegmentMakerv2.cxx:346
 AliPHOSTrackSegmentMakerv2.cxx:347
 AliPHOSTrackSegmentMakerv2.cxx:348
 AliPHOSTrackSegmentMakerv2.cxx:349
 AliPHOSTrackSegmentMakerv2.cxx:350
 AliPHOSTrackSegmentMakerv2.cxx:351
 AliPHOSTrackSegmentMakerv2.cxx:352
 AliPHOSTrackSegmentMakerv2.cxx:353
 AliPHOSTrackSegmentMakerv2.cxx:354
 AliPHOSTrackSegmentMakerv2.cxx:355
 AliPHOSTrackSegmentMakerv2.cxx:356
 AliPHOSTrackSegmentMakerv2.cxx:357
 AliPHOSTrackSegmentMakerv2.cxx:358
 AliPHOSTrackSegmentMakerv2.cxx:359
 AliPHOSTrackSegmentMakerv2.cxx:360
 AliPHOSTrackSegmentMakerv2.cxx:361
 AliPHOSTrackSegmentMakerv2.cxx:362
 AliPHOSTrackSegmentMakerv2.cxx:363
 AliPHOSTrackSegmentMakerv2.cxx:364
 AliPHOSTrackSegmentMakerv2.cxx:365
 AliPHOSTrackSegmentMakerv2.cxx:366
 AliPHOSTrackSegmentMakerv2.cxx:367
 AliPHOSTrackSegmentMakerv2.cxx:368
 AliPHOSTrackSegmentMakerv2.cxx:369
 AliPHOSTrackSegmentMakerv2.cxx:370
 AliPHOSTrackSegmentMakerv2.cxx:371
 AliPHOSTrackSegmentMakerv2.cxx:372
 AliPHOSTrackSegmentMakerv2.cxx:373
 AliPHOSTrackSegmentMakerv2.cxx:374
 AliPHOSTrackSegmentMakerv2.cxx:375
 AliPHOSTrackSegmentMakerv2.cxx:376
 AliPHOSTrackSegmentMakerv2.cxx:377
 AliPHOSTrackSegmentMakerv2.cxx:378
 AliPHOSTrackSegmentMakerv2.cxx:379
 AliPHOSTrackSegmentMakerv2.cxx:380
 AliPHOSTrackSegmentMakerv2.cxx:381
 AliPHOSTrackSegmentMakerv2.cxx:382
 AliPHOSTrackSegmentMakerv2.cxx:383
 AliPHOSTrackSegmentMakerv2.cxx:384
 AliPHOSTrackSegmentMakerv2.cxx:385
 AliPHOSTrackSegmentMakerv2.cxx:386
 AliPHOSTrackSegmentMakerv2.cxx:387
 AliPHOSTrackSegmentMakerv2.cxx:388
 AliPHOSTrackSegmentMakerv2.cxx:389
 AliPHOSTrackSegmentMakerv2.cxx:390
 AliPHOSTrackSegmentMakerv2.cxx:391
 AliPHOSTrackSegmentMakerv2.cxx:392
 AliPHOSTrackSegmentMakerv2.cxx:393
 AliPHOSTrackSegmentMakerv2.cxx:394
 AliPHOSTrackSegmentMakerv2.cxx:395
 AliPHOSTrackSegmentMakerv2.cxx:396
 AliPHOSTrackSegmentMakerv2.cxx:397
 AliPHOSTrackSegmentMakerv2.cxx:398
 AliPHOSTrackSegmentMakerv2.cxx:399
 AliPHOSTrackSegmentMakerv2.cxx:400
 AliPHOSTrackSegmentMakerv2.cxx:401
 AliPHOSTrackSegmentMakerv2.cxx:402
 AliPHOSTrackSegmentMakerv2.cxx:403
 AliPHOSTrackSegmentMakerv2.cxx:404
 AliPHOSTrackSegmentMakerv2.cxx:405
 AliPHOSTrackSegmentMakerv2.cxx:406
 AliPHOSTrackSegmentMakerv2.cxx:407
 AliPHOSTrackSegmentMakerv2.cxx:408
 AliPHOSTrackSegmentMakerv2.cxx:409
 AliPHOSTrackSegmentMakerv2.cxx:410
 AliPHOSTrackSegmentMakerv2.cxx:411
 AliPHOSTrackSegmentMakerv2.cxx:412
 AliPHOSTrackSegmentMakerv2.cxx:413
 AliPHOSTrackSegmentMakerv2.cxx:414
 AliPHOSTrackSegmentMakerv2.cxx:415
 AliPHOSTrackSegmentMakerv2.cxx:416
 AliPHOSTrackSegmentMakerv2.cxx:417
 AliPHOSTrackSegmentMakerv2.cxx:418
 AliPHOSTrackSegmentMakerv2.cxx:419
 AliPHOSTrackSegmentMakerv2.cxx:420
 AliPHOSTrackSegmentMakerv2.cxx:421
 AliPHOSTrackSegmentMakerv2.cxx:422
 AliPHOSTrackSegmentMakerv2.cxx:423
 AliPHOSTrackSegmentMakerv2.cxx:424
 AliPHOSTrackSegmentMakerv2.cxx:425
 AliPHOSTrackSegmentMakerv2.cxx:426
 AliPHOSTrackSegmentMakerv2.cxx:427
 AliPHOSTrackSegmentMakerv2.cxx:428
 AliPHOSTrackSegmentMakerv2.cxx:429
 AliPHOSTrackSegmentMakerv2.cxx:430
 AliPHOSTrackSegmentMakerv2.cxx:431
 AliPHOSTrackSegmentMakerv2.cxx:432
 AliPHOSTrackSegmentMakerv2.cxx:433
 AliPHOSTrackSegmentMakerv2.cxx:434
 AliPHOSTrackSegmentMakerv2.cxx:435
 AliPHOSTrackSegmentMakerv2.cxx:436
 AliPHOSTrackSegmentMakerv2.cxx:437
 AliPHOSTrackSegmentMakerv2.cxx:438
 AliPHOSTrackSegmentMakerv2.cxx:439
 AliPHOSTrackSegmentMakerv2.cxx:440
 AliPHOSTrackSegmentMakerv2.cxx:441
 AliPHOSTrackSegmentMakerv2.cxx:442
 AliPHOSTrackSegmentMakerv2.cxx:443
 AliPHOSTrackSegmentMakerv2.cxx:444
 AliPHOSTrackSegmentMakerv2.cxx:445
 AliPHOSTrackSegmentMakerv2.cxx:446
 AliPHOSTrackSegmentMakerv2.cxx:447
 AliPHOSTrackSegmentMakerv2.cxx:448
 AliPHOSTrackSegmentMakerv2.cxx:449
 AliPHOSTrackSegmentMakerv2.cxx:450
 AliPHOSTrackSegmentMakerv2.cxx:451
 AliPHOSTrackSegmentMakerv2.cxx:452
 AliPHOSTrackSegmentMakerv2.cxx:453
 AliPHOSTrackSegmentMakerv2.cxx:454
 AliPHOSTrackSegmentMakerv2.cxx:455
 AliPHOSTrackSegmentMakerv2.cxx:456
 AliPHOSTrackSegmentMakerv2.cxx:457
 AliPHOSTrackSegmentMakerv2.cxx:458
 AliPHOSTrackSegmentMakerv2.cxx:459
 AliPHOSTrackSegmentMakerv2.cxx:460
 AliPHOSTrackSegmentMakerv2.cxx:461
 AliPHOSTrackSegmentMakerv2.cxx:462
 AliPHOSTrackSegmentMakerv2.cxx:463
 AliPHOSTrackSegmentMakerv2.cxx:464
 AliPHOSTrackSegmentMakerv2.cxx:465
 AliPHOSTrackSegmentMakerv2.cxx:466
 AliPHOSTrackSegmentMakerv2.cxx:467
 AliPHOSTrackSegmentMakerv2.cxx:468
 AliPHOSTrackSegmentMakerv2.cxx:469