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$ */
//-------------------------------------------------------------------------
//               Implementation of the ITS tracker class
//    It reads AliITSRecPoint clusters and creates AliITStrackV2 tracks
//                   and fills with them the ESD
//          Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
//     dEdx analysis by: Boris Batyunya, JINR, Boris.Batiounia@cern.ch
//-------------------------------------------------------------------------

#include <new>

#include <TError.h>
#include <TFile.h>
#include <TTree.h>
#include <TRandom.h>
#include <TGeoMatrix.h>

#include "AliITSgeomTGeo.h"
#include "AliAlignObj.h"
#include "AliITSRecPoint.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliITSRecPoint.h"
#include "AliITSReconstructor.h"
#include "AliITStrackerV2.h"

ClassImp(AliITStrackerV2)

AliITStrackerV2::AliITSlayer AliITStrackerV2::fgLayers[AliITSgeomTGeo::kNLayers]; //ITS layers

AliITStrackerV2::AliITStrackerV2(): 
  AliTracker(), 
  fI(AliITSgeomTGeo::GetNLayers()),
  fBestTrack(),
  fTrackToFollow(),
  fPass(0),
  fLastLayerToTrackTo(AliITSRecoParam::GetLastLayerToTrackTo())
{
  //--------------------------------------------------------------------
  //This is the AliITStrackerV2 default constructor
  //--------------------------------------------------------------------

  for (Int_t i=1; i<AliITSgeomTGeo::GetNLayers()+1; i++) new(fgLayers+i-1) AliITSlayer();

  fConstraint[0]=1; fConstraint[1]=0;

  Double_t xyz[]={AliITSReconstructor::GetRecoParam()->GetXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetZVdef()}; 
  Double_t ers[]={AliITSReconstructor::GetRecoParam()->GetSigmaXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaZVdef()}; 
  SetVertex(xyz,ers);

  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fLayersNotToSkip[i]=AliITSRecoParam::GetLayersNotToSkip(i);

}

AliITStrackerV2::AliITStrackerV2(const AliITStrackerV2 &t): 
  AliTracker(t), 
  fI(t.fI),
  fBestTrack(t.fBestTrack),
  fTrackToFollow(t.fTrackToFollow),
  fPass(t.fPass),
  fLastLayerToTrackTo(t.fLastLayerToTrackTo)
{
  //--------------------------------------------------------------------
  //This is the AliITStrackerV2 copy constructor
  //--------------------------------------------------------------------

  //for (Int_t i=1; i<AliITSgeomTGeo::GetNLayers()+1; i++) new(fgLayers+i-1) AliITSlayer();

  fConstraint[0]=t.fConstraint[0]; fConstraint[1]=t.fConstraint[1];

  Double_t xyz[]={AliITSReconstructor::GetRecoParam()->GetXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetZVdef()}; 
  Double_t ers[]={AliITSReconstructor::GetRecoParam()->GetSigmaXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaZVdef()}; 
  xyz[0]=t.GetX(); xyz[1]=t.GetY(); xyz[2]=t.GetZ(); 
  ers[0]=t.GetSigmaX(); ers[1]=t.GetSigmaY(); ers[2]=t.GetSigmaZ(); 
  SetVertex(xyz,ers);

  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fLayersNotToSkip[i]=t.fLayersNotToSkip[i];

}

AliITStrackerV2::AliITStrackerV2(const Char_t *geom) : 
  AliTracker(), 
  fI(AliITSgeomTGeo::GetNLayers()),
  fBestTrack(),
  fTrackToFollow(),
  fPass(0),
  fLastLayerToTrackTo(AliITSRecoParam::GetLastLayerToTrackTo())
{
  //--------------------------------------------------------------------
  //This is the AliITStrackerV2 constructor
  //--------------------------------------------------------------------
  if (geom) {
    AliWarning("\"geom\" is actually a dummy argument !");
  }

  for (Int_t i=1; i<AliITSgeomTGeo::GetNLayers()+1; i++) {
    Int_t nlad=AliITSgeomTGeo::GetNLadders(i);
    Int_t ndet=AliITSgeomTGeo::GetNDetectors(i);

    Double_t xyz[3], &x=xyz[0], &y=xyz[1], &z=xyz[2];
    AliITSgeomTGeo::GetOrigTranslation(i,1,1,xyz); 
    Double_t poff=TMath::ATan2(y,x);
    Double_t zoff=z;
    Double_t r=TMath::Sqrt(x*x + y*y);

    AliITSgeomTGeo::GetOrigTranslation(i,1,2,xyz);
    r += TMath::Sqrt(x*x + y*y);
    AliITSgeomTGeo::GetOrigTranslation(i,2,1,xyz);
    r += TMath::Sqrt(x*x + y*y);
    AliITSgeomTGeo::GetOrigTranslation(i,2,2,xyz);
    r += TMath::Sqrt(x*x + y*y);
    r*=0.25;

    new (fgLayers+i-1) AliITSlayer(r,poff,zoff,nlad,ndet);

    for (Int_t j=1; j<nlad+1; j++) {
      for (Int_t k=1; k<ndet+1; k++) { //Fill this layer with detectors
        TGeoHMatrix m; AliITSgeomTGeo::GetOrigMatrix(i,j,k,m);
        const TGeoHMatrix *tm=AliITSgeomTGeo::GetTracking2LocalMatrix(i,j,k);
        m.Multiply(tm);
        Double_t txyz[3]={0.}; 
	xyz[0]=0.; xyz[1]=0.; xyz[2]=0.;
        m.LocalToMaster(txyz,xyz);
        r=TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
        Double_t phi=TMath::ATan2(xyz[1],xyz[0]);

        if (phi<0) phi+=TMath::TwoPi();
        else if (phi>=TMath::TwoPi()) phi-=TMath::TwoPi();

        AliITSdetector &det=fgLayers[i-1].GetDetector((j-1)*ndet + k-1); 
        new(&det) AliITSdetector(r,phi); 
      } 
    }  

  }

  fConstraint[0]=1; fConstraint[1]=0;

  Double_t xyz[]={AliITSReconstructor::GetRecoParam()->GetXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetZVdef()}; 
  Double_t ers[]={AliITSReconstructor::GetRecoParam()->GetSigmaXVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaYVdef(),
		  AliITSReconstructor::GetRecoParam()->GetSigmaZVdef()}; 
  SetVertex(xyz,ers);

  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fLayersNotToSkip[i]=AliITSRecoParam::GetLayersNotToSkip(i);

}

void AliITStrackerV2::SetLayersNotToSkip(Int_t *l) {
  //--------------------------------------------------------------------
  //This function set masks of the layers which must be not skipped
  //--------------------------------------------------------------------
  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fLayersNotToSkip[i]=l[i];
}

Int_t AliITStrackerV2::LoadClusters(TTree *cTree) {
  //--------------------------------------------------------------------
  //This function loads ITS clusters
  //--------------------------------------------------------------------
  TBranch *branch=cTree->GetBranch("ITSRecPoints");
  if (!branch) { 
    Error("LoadClusters"," can't get the branch !\n");
    return 1;
  }

  TClonesArray dummy("AliITSRecPoint",10000), *clusters=&dummy;
  branch->SetAddress(&clusters);

  Int_t j=0;
  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) {
    Int_t ndet=fgLayers[i].GetNdetectors();
    Int_t jmax = j + fgLayers[i].GetNladders()*ndet;

    Double_t r=fgLayers[i].GetR();
    Double_t circ=TMath::TwoPi()*r;

    for (; j<jmax; j++) {           
      if (!cTree->GetEvent(j)) continue;
      Int_t ncl=clusters->GetEntriesFast();
 
      while (ncl--) {
        AliITSRecPoint *c=(AliITSRecPoint*)clusters->UncheckedAt(ncl);

	if (!c->Misalign()) AliWarning("Can't misalign this cluster !");

        Int_t idx=c->GetDetectorIndex();
        AliITSdetector &det=fgLayers[i].GetDetector(idx);
   
        Double_t y=r*det.GetPhi()+c->GetY();
        if (y>circ) y-=circ; else if (y<0) y+=circ;
        c->SetPhiR(y);

        fgLayers[i].InsertCluster(new AliITSRecPoint(*c));
      }
      clusters->Delete();
    }
    fgLayers[i].ResetRoad(); //road defined by the cluster density
  }

  return 0;
}

void AliITStrackerV2::UnloadClusters() {
  //--------------------------------------------------------------------
  //This function unloads ITS clusters
  //--------------------------------------------------------------------
  for (Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fgLayers[i].ResetClusters();
}

static Int_t CorrectForDeadZoneMaterial(AliITStrackV2 *t) {
  //--------------------------------------------------------------------
  // Correction for the material between the TPC and the ITS
  // (should it belong to the TPC code ?)
  //--------------------------------------------------------------------
  Double_t riw=80., diw=0.0053, x0iw=30; // TPC inner wall ? 
  Double_t rcd=61., dcd=0.0053, x0cd=30; // TPC "central drum" ?
  Double_t yr=12.8, dr=0.03; // rods ?
  Double_t zm=0.2, dm=0.40;  // membrane
  //Double_t rr=52., dr=0.19, x0r=24., yyr=7.77; //rails
  Double_t rs=50., ds=0.001; // something belonging to the ITS (screen ?)

  if (t->GetX() > riw) {
     if (!t->PropagateTo(riw,diw,x0iw)) return 1;
     if (TMath::Abs(t->GetY())>yr) t->CorrectForMaterial(dr);
     if (TMath::Abs(t->GetZ())<zm) t->CorrectForMaterial(dm);
     if (!t->PropagateTo(rcd,dcd,x0cd)) return 1;
     //Double_t x,y,z; t->GetGlobalXYZat(rr,x,y,z);
     //if (TMath::Abs(y)<yyr) t->PropagateTo(rr,dr,x0r); 
     if (!t->PropagateTo(rs,ds)) return 1;
  } else if (t->GetX() < rs) {
     if (!t->PropagateTo(rs,-ds)) return 1;
     //Double_t x,y,z; t->GetGlobalXYZat(rr,x,y,z);
     //if (TMath::Abs(y)<yyr) t->PropagateTo(rr,-dr,x0r); 
     if (!t->PropagateTo(rcd,-dcd,x0cd)) return 1;
     if (!t->PropagateTo(riw+0.001,-diw,x0iw)) return 1;
  } else {
  ::Error("CorrectForDeadZoneMaterial","track is already in the dead zone !");
    return 1;
  }
  
  return 0;
}

Int_t AliITStrackerV2::Clusters2Tracks(AliESDEvent *event) {
  //--------------------------------------------------------------------
  // This functions reconstructs ITS tracks
  // The clusters must be already loaded !
  //--------------------------------------------------------------------
  TObjArray itsTracks(15000);

  {/* Read ESD tracks */
    Int_t nentr=event->GetNumberOfTracks();
    Info("Clusters2Tracks", "Number of ESD tracks: %d\n", nentr);
    while (nentr--) {
      AliESDtrack *esd=event->GetTrack(nentr);

      if ((esd->GetStatus()&AliESDtrack::kTPCin)==0) continue;
      if (esd->GetStatus()&AliESDtrack::kTPCout) continue;
      if (esd->GetStatus()&AliESDtrack::kITSin) continue;

      AliITStrackV2 *t = new AliITStrackV2(*esd);

      if (TMath::Abs(t->GetD(GetX(),GetY()))>4) {
	delete t;
	continue;
      }

      if (CorrectForDeadZoneMaterial(t)!=0) {
         Warning("Clusters2Tracks",
                 "failed to correct for the material in the dead zone !\n");
         delete t;
         continue;
      }
      itsTracks.AddLast(t);
    }
  } /* End Read ESD tracks */

  itsTracks.Sort();
  Int_t nentr=itsTracks.GetEntriesFast();

  Int_t ntrk=0;
  for (fPass=0; fPass<2; fPass++) {
     Int_t &constraint=fConstraint[fPass]; if (constraint<0) continue;
     for (Int_t i=0; i<nentr; i++) {
       AliITStrackV2 *t=(AliITStrackV2*)itsTracks.UncheckedAt(i);
       if (t==0) continue;           //this track has been already tracked
       Int_t tpcLabel=t->GetLabel(); //save the TPC track label

       ResetTrackToFollow(*t);
       ResetBestTrack();

       for (FollowProlongation(); fI<AliITSgeomTGeo::GetNLayers(); fI++) {
          while (TakeNextProlongation()) FollowProlongation();
       }

       if (fBestTrack.GetNumberOfClusters() == 0) continue;

       if (fConstraint[fPass]) {
          ResetTrackToFollow(*t);
          if (!RefitAt(3.7, &fTrackToFollow, &fBestTrack)) continue;
          ResetBestTrack();
       }

       fBestTrack.SetLabel(tpcLabel);
       fBestTrack.CookdEdx();
       CookLabel(&fBestTrack,0.); //For comparison only
       fBestTrack.UpdateESDtrack(AliESDtrack::kITSin);
       UseClusters(&fBestTrack);
       delete itsTracks.RemoveAt(i);
       ntrk++;
     }
  }

  itsTracks.Delete();

  Info("Clusters2Tracks","Number of prolonged tracks: %d\n",ntrk);

  return 0;
}

Int_t AliITStrackerV2::PropagateBack(AliESDEvent *event) {
  //--------------------------------------------------------------------
  // This functions propagates reconstructed ITS tracks back
  // The clusters must be loaded !
  //--------------------------------------------------------------------
  Int_t nentr=event->GetNumberOfTracks();
  Info("PropagateBack", "Number of ESD tracks: %d\n", nentr);

  Int_t ntrk=0;
  for (Int_t i=0; i<nentr; i++) {
     AliESDtrack *esd=event->GetTrack(i);

     if ((esd->GetStatus()&AliESDtrack::kITSin)==0) continue;
     if (esd->GetStatus()&AliESDtrack::kITSout) continue;

     AliITStrackV2 *t = new AliITStrackV2(*esd);

     ResetTrackToFollow(*t);

     // propagete to vertex [SR, GSI 17.02.2003]
     // Start Time measurement [SR, GSI 17.02.2003], corrected by I.Belikov
     if (fTrackToFollow.PropagateTo(3.,0.0028,65.19)) {
       if (fTrackToFollow.PropagateToVertex(event->GetVertex())) {
          fTrackToFollow.StartTimeIntegral();
       }
       Bool_t okProp=fTrackToFollow.PropagateTo(3.,-0.0028,65.19);
       if(!okProp){
	 AliWarning("Propagation to beam pipe radius failed");
       }
     }

     fTrackToFollow.ResetCovariance(10.); fTrackToFollow.ResetClusters();
     if (RefitAt(49.,&fTrackToFollow,t)) {
        if (CorrectForDeadZoneMaterial(&fTrackToFollow)!=0) {
          Warning("PropagateBack",
                  "failed to correct for the material in the dead zone !\n");
          delete t;
          continue;
        }
        fTrackToFollow.SetLabel(t->GetLabel());
        //fTrackToFollow.CookdEdx();
        CookLabel(&fTrackToFollow,0.); //For comparison only
        fTrackToFollow.UpdateESDtrack(AliESDtrack::kITSout);
        UseClusters(&fTrackToFollow);
        ntrk++;
     }
     delete t;
  }

  Info("PropagateBack","Number of back propagated ITS tracks: %d\n",ntrk);

  return 0;
}

Int_t AliITStrackerV2::RefitInward(AliESDEvent *event) {
  //--------------------------------------------------------------------
  // This functions refits ITS tracks using the 
  // "inward propagated" TPC tracks
  // The clusters must be loaded !
  //--------------------------------------------------------------------
  Int_t nentr=event->GetNumberOfTracks();
  Info("RefitInward", "Number of ESD tracks: %d\n", nentr);

  Int_t ntrk=0;
  for (Int_t i=0; i<nentr; i++) {
    AliESDtrack *esd=event->GetTrack(i);

    if ((esd->GetStatus()&AliESDtrack::kITSout) == 0) continue;
    if (esd->GetStatus()&AliESDtrack::kITSrefit) continue;
    if (esd->GetStatus()&AliESDtrack::kTPCout)
    if ((esd->GetStatus()&AliESDtrack::kTPCrefit)==0) continue;

    AliITStrackV2 *t = new AliITStrackV2(*esd);

    if (CorrectForDeadZoneMaterial(t)!=0) {
       Warning("RefitInward",
               "failed to correct for the material in the dead zone !\n");
       delete t;
       continue;
    }

    ResetTrackToFollow(*t);
    fTrackToFollow.ResetClusters();

    //Refitting...
    if (RefitAt(3.7, &fTrackToFollow, t, kTRUE)) {
       fTrackToFollow.SetLabel(t->GetLabel());
       fTrackToFollow.CookdEdx();
       CookLabel(&fTrackToFollow,0.); //For comparison only

       if (fTrackToFollow.PropagateTo(3.,0.0028,65.19)) {//The beam pipe 
	 fTrackToFollow.UpdateESDtrack(AliESDtrack::kITSrefit);
         AliESDtrack  *esdTrack =fTrackToFollow.GetESDtrack();
         Double_t r[3]={0.,0.,0.};
         Double_t maxD=3.;
	 esdTrack->RelateToVertex(event->GetVertex(),GetBz(r),maxD);
         ntrk++;
       }
    }
    delete t;
  }

  Info("RefitInward","Number of refitted tracks: %d\n",ntrk);

  return 0;
}

AliCluster *AliITStrackerV2::GetCluster(Int_t index) const {
  //--------------------------------------------------------------------
  //       Return pointer to a given cluster
  //--------------------------------------------------------------------
  Int_t l=(index & 0xf0000000) >> 28;
  Int_t c=(index & 0x0fffffff) >> 00;
  return fgLayers[l].GetCluster(c);
}


void AliITStrackerV2::FollowProlongation() {
  //--------------------------------------------------------------------
  //This function finds a track prolongation 
  //--------------------------------------------------------------------
  while (fI>fLastLayerToTrackTo) {
    Int_t i=fI-1;

    AliITSlayer &layer=fgLayers[i];
    AliITStrackV2 &track=fTracks[i];

    Double_t r=layer.GetR();

    if (i==3 || i==1) {
       Double_t rs=0.5*(fgLayers[i+1].GetR() + r);
       Double_t d=0.0034, x0=38.6;
       if (i==1) {rs=9.; d=0.0097; x0=42;}
       if (!fTrackToFollow.PropagateTo(rs,d,x0)) {
	 //Warning("FollowProlongation","propagation failed !\n");
         return;
       }
    }

    //find intersection
    Double_t phi,z;  
    if (!fTrackToFollow.GetPhiZat(r,phi,z)) {
      //Warning("FollowProlongation","failed to estimate track !\n");
      return;
    }

    Int_t idet=layer.FindDetectorIndex(phi,z);
    if (idet<0) {
      //Warning("FollowProlongation","failed to find a detector !\n");
      return;
    }

    //propagate to the intersection
    const AliITSdetector &det=layer.GetDetector(idet);
    phi=det.GetPhi();
    if (!fTrackToFollow.Propagate(phi,det.GetR())) {
      //Warning("FollowProlongation","propagation failed !\n");
      return;
    }
    fTrackToFollow.SetDetectorIndex(idet);

    //Select possible prolongations and store the current track estimation
    track.~AliITStrackV2(); new(&track) AliITStrackV2(fTrackToFollow);
    Double_t dz=7*TMath::Sqrt(track.GetSigmaZ2() + AliITSReconstructor::GetRecoParam()->GetSigmaZ2(i));
    Double_t dy=7*TMath::Sqrt(track.GetSigmaY2() + AliITSReconstructor::GetRecoParam()->GetSigmaY2(i));
    Double_t road=layer.GetRoad();
    if (dz*dy>road*road) {
       Double_t dd=TMath::Sqrt(dz*dy), scz=dz/dd, scy=dy/dd;
       dz=road*scz; dy=road*scy;
    } 

    //Double_t dz=4*TMath::Sqrt(track.GetSigmaZ2() + AliITSReconstructor::GetRecoParam()->GetSigmaZ2(i));
    if (dz < 0.5*TMath::Abs(track.GetTgl())) dz=0.5*TMath::Abs(track.GetTgl());
    if (dz > AliITSReconstructor::GetRecoParam()->GetMaxRoad()) {
      //Warning("FollowProlongation","too broad road in Z !\n");
      return;
    }

    if (TMath::Abs(fTrackToFollow.GetZ()-GetZ()) > r+dz) return;

    //Double_t dy=4*TMath::Sqrt(track.GetSigmaY2() + AliITSReconstructor::GetRecoParam()->GetSigmaY2(i));
    if (dy < 0.5*TMath::Abs(track.GetSnp())) dy=0.5*TMath::Abs(track.GetSnp());
    if (dy > AliITSReconstructor::GetRecoParam()->GetMaxRoad()) {
      //Warning("FollowProlongation","too broad road in Y !\n");
      return;
    }

    fI--;

    Double_t zmin=track.GetZ() - dz; 
    Double_t zmax=track.GetZ() + dz;
    Double_t ymin=track.GetY() + r*phi - dy;
    Double_t ymax=track.GetY() + r*phi + dy;
    if (layer.SelectClusters(zmin,zmax,ymin,ymax)==0) 
       if (fLayersNotToSkip[fI]) return;  

    if (!TakeNextProlongation()) 
       if (fLayersNotToSkip[fI]) return;

  } 

  //deal with the best track
  Int_t ncl=fTrackToFollow.GetNumberOfClusters();
  Int_t nclb=fBestTrack.GetNumberOfClusters();
  if (ncl)
  if (ncl >= nclb) {
     Double_t chi2=fTrackToFollow.GetChi2();
     if (chi2/ncl < AliITSReconstructor::GetRecoParam()->GetChi2PerCluster()) {        
        if (ncl > nclb || chi2 < fBestTrack.GetChi2()) {
           ResetBestTrack();
        }
     }
  }

}

Int_t AliITStrackerV2::TakeNextProlongation() {
  //--------------------------------------------------------------------
  // This function takes another track prolongation 
  //
  //  dEdx analysis by: Boris Batyunya, JINR, Boris.Batiounia@cern.ch 
  //--------------------------------------------------------------------
  AliITSlayer &layer=fgLayers[fI];
  ResetTrackToFollow(fTracks[fI]);

  Double_t dz=7*TMath::Sqrt(fTrackToFollow.GetSigmaZ2() + AliITSReconstructor::GetRecoParam()->GetSigmaZ2(fI));
  Double_t dy=7*TMath::Sqrt(fTrackToFollow.GetSigmaY2() + AliITSReconstructor::GetRecoParam()->GetSigmaY2(fI));
  Double_t road=layer.GetRoad();
  if (dz*dy>road*road) {
     Double_t dd=TMath::Sqrt(dz*dy), scz=dz/dd, scy=dy/dd;
     dz=road*scz; dy=road*scy;
  } 

  const AliITSRecPoint *c=0; Int_t ci=-1;
  const AliITSRecPoint *cc=0; Int_t cci=-1;
  Double_t chi2=AliITSReconstructor::GetRecoParam()->GetMaxChi2();
  while ((c=layer.GetNextCluster(ci))!=0) {
    Int_t idet=c->GetDetectorIndex();

    if (fTrackToFollow.GetDetectorIndex()!=idet) {
       const AliITSdetector &det=layer.GetDetector(idet);
       ResetTrackToFollow(fTracks[fI]);
       if (!fTrackToFollow.Propagate(det.GetPhi(),det.GetR())) {
         //Warning("TakeNextProlongation","propagation failed !\n");
         continue;
       }
       fTrackToFollow.SetDetectorIndex(idet);
       if (TMath::Abs(fTrackToFollow.GetZ()-GetZ())>layer.GetR()+dz) continue;
    }

    if (TMath::Abs(fTrackToFollow.GetZ() - c->GetZ()) > dz) continue;
    if (TMath::Abs(fTrackToFollow.GetY() - c->GetY()) > dy) continue;

    Double_t ch2=fTrackToFollow.GetPredictedChi2(c); 
    if (ch2 > chi2) continue;
    chi2=ch2;
    cc=c; cci=ci;
    break;
  }

  if (!cc) return 0;

  {// Take into account the mis-alignment
    Double_t x = fTrackToFollow.GetX() + cc->GetX();
    if (!fTrackToFollow.PropagateTo(x,0.,0.)) return 0;
  }
  if (!fTrackToFollow.Update(cc,chi2,(fI<<28)+cci)) {
     //Warning("TakeNextProlongation","filtering failed !\n");
     return 0;
  }

  if (fTrackToFollow.GetNumberOfClusters()>1)
    if (TMath::Abs(fTrackToFollow.GetD(GetX(),GetY()))>4) return 0;

  fTrackToFollow.
    SetSampledEdx(cc->GetQ(),fI-2); //b.b.

  {
  Double_t x0;
 Double_t d=layer.GetThickness(fTrackToFollow.GetY(),fTrackToFollow.GetZ(),x0);
  fTrackToFollow.CorrectForMaterial(d,x0);
  }

  if (fConstraint[fPass]) {
    Double_t d=GetEffectiveThickness(0,0); //Think of this !!!!
    Double_t xyz[]={GetX(),GetY(),GetZ()};
    Double_t ers[]={GetSigmaX(),GetSigmaY(),GetSigmaZ()};
    fTrackToFollow.Improve(d,xyz,ers);
  }

  return 1;
}


AliITStrackerV2::AliITSlayer::AliITSlayer():
  fR(0.),
  fPhiOffset(0.),
  fNladders(0),
  fZOffset(0.),
  fNdetectors(0),
  fDetectors(0),
  fNsel(0),
  fRoad(2*fR*TMath::Sqrt(3.14/1.)) //assuming that there's only one cluster
{
  //--------------------------------------------------------------------
  //default AliITSlayer constructor
  //--------------------------------------------------------------------
  
  for (Int_t i=0; i<kNsector; i++) fN[i]=0;
  for (Int_t i=0; i<AliITSRecoParam::kMaxClusterPerLayer; i++){
    fClusters[i]=0;
    fIndex[i]=0;
  }
}

AliITStrackerV2::AliITSlayer::
AliITSlayer(Double_t r,Double_t p,Double_t z,Int_t nl,Int_t nd): 
  fR(r), 
  fPhiOffset(p), 
  fNladders(nl),
  fZOffset(z),
  fNdetectors(nd),
  fDetectors(new AliITSdetector[nl*nd]),
  fNsel(0),
  fRoad(2*r*TMath::Sqrt(3.14/1.)) //assuming that there's only one cluster
{
  //--------------------------------------------------------------------
  //main AliITSlayer constructor
  //--------------------------------------------------------------------

  for (Int_t i=0; i<kNsector; i++) fN[i]=0;

  for (Int_t i=0; i<AliITSRecoParam::kMaxClusterPerLayer; i++){
    fClusters[i]=0;
    fIndex[i]=0;
  }
}

AliITStrackerV2::AliITSlayer::~AliITSlayer() {
  //--------------------------------------------------------------------
  // AliITSlayer destructor
  //--------------------------------------------------------------------
  delete[] fDetectors;
  ResetClusters();
}

void AliITStrackerV2::AliITSlayer::ResetClusters() {
  //--------------------------------------------------------------------
  // This function removes loaded clusters
  //--------------------------------------------------------------------
   for (Int_t s=0; s<kNsector; s++) {
       Int_t &n=fN[s];
       while (n) {
          n--;
          delete fClusters[s*kMaxClusterPerSector+n];
       }
   }
}

void AliITStrackerV2::AliITSlayer::ResetRoad() {
  //--------------------------------------------------------------------
  // This function calculates the road defined by the cluster density
  //--------------------------------------------------------------------
  Int_t n=0;
  for (Int_t s=0; s<kNsector; s++) {
    Int_t i=fN[s];
    while (i--) 
       if (TMath::Abs(fClusters[s*kMaxClusterPerSector+i]->GetZ())<fR) n++;
  }
  if (n>1) fRoad=2*fR*TMath::Sqrt(3.14/n);
}

Int_t AliITStrackerV2::AliITSlayer::InsertCluster(AliITSRecPoint *c) {
  //--------------------------------------------------------------------
  // This function inserts a cluster to this layer in increasing
  // order of the cluster's fZ
  //--------------------------------------------------------------------
  Float_t circ=TMath::TwoPi()*fR;
  Int_t sec=Int_t(kNsector*c->GetPhiR()/circ);
  if (sec>=kNsector) {
     ::Error("InsertCluster","Wrong sector !\n");
     return 1;
  }
  Int_t &n=fN[sec];
  if (n>=kMaxClusterPerSector) {
     ::Error("InsertCluster","Too many clusters !\n");
     return 1;
  }
  if (n==0) fClusters[sec*kMaxClusterPerSector]=c;
  else {
     Int_t i=FindClusterIndex(c->GetZ(),sec);
     Int_t k=n-i+sec*kMaxClusterPerSector;
     memmove(fClusters+i+1 ,fClusters+i,k*sizeof(AliITSRecPoint*));
     fClusters[i]=c;
  }
  n++;
  return 0;
}

Int_t 
AliITStrackerV2::AliITSlayer::FindClusterIndex(Float_t z,Int_t s) const {
  //--------------------------------------------------------------------
  // For the sector "s", this function returns the index of the first 
  // with its fZ >= "z". 
  //--------------------------------------------------------------------
  Int_t nc=fN[s];
  if (nc==0) return kMaxClusterPerSector*s;

  Int_t b=kMaxClusterPerSector*s;
  if (z <= fClusters[b]->GetZ()) return b;

  Int_t e=b+nc-1;
  if (z > fClusters[e]->GetZ()) return e+1;

  Int_t m=(b+e)/2;
  for (; b<e; m=(b+e)/2) {
    if (z > fClusters[m]->GetZ()) b=m+1;
    else e=m; 
  }
  return m;
}

Int_t AliITStrackerV2::AliITSlayer::
SelectClusters(Float_t zmin,Float_t zmax,Float_t ymin, Float_t ymax) {
  //--------------------------------------------------------------------
  // This function selects clusters within the "window"
  //--------------------------------------------------------------------
    Float_t circ=fR*TMath::TwoPi();

    if (ymin>circ) ymin-=circ; else if (ymin<0) ymin+=circ;
    if (ymax>circ) ymax-=circ; else if (ymax<0) ymax+=circ;

    Int_t i1=Int_t(kNsector*ymin/circ); if (i1==kNsector) i1--;
    if (fN[i1]!=0) {
       Float_t ym = (ymax<ymin) ? ymax+circ : ymax;
       Int_t i=FindClusterIndex(zmin,i1), imax=i1*kMaxClusterPerSector+fN[i1];
       for (; i<imax; i++) {
           AliITSRecPoint *c=fClusters[i];
           if (c->IsUsed()) continue;
           if (c->GetZ()>zmax) break;
           if (c->GetPhiR()<=ymin) continue;
           if (c->GetPhiR()>ym) continue;
           fIndex[fNsel++]=i;
       }
    }

    Int_t i2=Int_t(kNsector*ymax/circ); if (i2==kNsector) i2--;
    if (i2==i1) return fNsel;

    if (fN[i2]!=0) {
       Float_t ym = (ymin>ymax) ? ymin-circ : ymin;
       Int_t i=FindClusterIndex(zmin,i2), imax=i2*kMaxClusterPerSector+fN[i2];
       for (; i<imax; i++) {
           AliITSRecPoint *c=fClusters[i];
           if (c->IsUsed()) continue;
           if (c->GetZ()>zmax) break;
           if (c->GetPhiR()<=ym) continue;
           if (c->GetPhiR()>ymax) continue;
           fIndex[fNsel++]=i;
       }
    }

    return fNsel;
}

const AliITSRecPoint *AliITStrackerV2::AliITSlayer::GetNextCluster(Int_t &ci){
  //--------------------------------------------------------------------
  // This function returns clusters within the "window" 
  //--------------------------------------------------------------------
  AliITSRecPoint *c=0;
  ci=-1;
  if (fNsel) {
     fNsel--;
     ci=fIndex[fNsel]; 
     c=fClusters[ci];
  }
  return c; 
}

Int_t AliITStrackerV2::AliITSlayer::GetNumberOfClusters() const {
  Int_t n=0;
  for (Int_t s=0; s<kNsector; s++) n+=fN[s];
  return n; 
}

Int_t 
AliITStrackerV2::AliITSlayer::FindDetectorIndex(Double_t phi,Double_t z)const {
  //--------------------------------------------------------------------
  //This function finds the detector crossed by the track
  //--------------------------------------------------------------------
  Double_t dphi;
  if (fZOffset<0)            // old geometry
    dphi = -(phi-fPhiOffset);
  else                       // new geometry
    dphi = phi-fPhiOffset;

  if      (dphi <  0) dphi += 2*TMath::Pi();
  else if (dphi >= 2*TMath::Pi()) dphi -= 2*TMath::Pi();
  Int_t np=Int_t(dphi*fNladders*0.5/TMath::Pi()+0.5);
  if (np>=fNladders) np-=fNladders;
  if (np<0)          np+=fNladders;

  Double_t dz=fZOffset-z;
  Int_t nz=Int_t(dz*(fNdetectors-1)*0.5/fZOffset+0.5);
  if (nz>=fNdetectors) return -1;
  if (nz<0)            return -1;

  return np*fNdetectors + nz;
}

Double_t 
AliITStrackerV2::AliITSlayer::GetThickness(Double_t y,Double_t z,Double_t &x0)
const {
  //--------------------------------------------------------------------
  //This function returns the layer thickness at this point (units X0)
  //--------------------------------------------------------------------
  Double_t d=0.0085;
  x0=21.82;

  if (43<fR&&fR<45) { //SSD2
     Double_t dd=0.0034;
     d=dd;
     if (TMath::Abs(y-0.00)>3.40) d+=dd;
     if (TMath::Abs(y-1.90)<0.45) {d+=(0.013-0.0034);}
     if (TMath::Abs(y+1.90)<0.45) {d+=(0.013-0.0034);}
     for (Int_t i=0; i<12; i++) {
       if (TMath::Abs(z-3.9*(i+0.5))<0.15) {
          if (TMath::Abs(y-0.00)>3.40) d+=dd;
          d+=0.0034; 
          break;
       }
       if (TMath::Abs(z+3.9*(i+0.5))<0.15) {
          if (TMath::Abs(y-0.00)>3.40) d+=dd;
          d+=0.0034; 
          break;
       }         
       if (TMath::Abs(z-3.4-3.9*i)<0.50) {d+=(0.016-0.0034); break;}
       if (TMath::Abs(z+0.5+3.9*i)<0.50) {d+=(0.016-0.0034); break;}
     }
  } else 
  if (37<fR&&fR<41) { //SSD1
     Double_t dd=0.0034;
     d=dd;
     if (TMath::Abs(y-0.00)>3.40) d+=dd;
     if (TMath::Abs(y-1.90)<0.45) {d+=(0.013-0.0034);}
     if (TMath::Abs(y+1.90)<0.45) {d+=(0.013-0.0034);}
     for (Int_t i=0; i<11; i++) {
       if (TMath::Abs(z-3.9*i)<0.15) {
          if (TMath::Abs(y-0.00)>3.40) d+=dd;
          d+=dd; 
          break;
       }
       if (TMath::Abs(z+3.9*i)<0.15) {
          if (TMath::Abs(y-0.00)>3.40) d+=dd;
          d+=dd; 
          break;
       }         
       if (TMath::Abs(z-1.85-3.9*i)<0.50) {d+=(0.016-0.0034); break;}
       if (TMath::Abs(z+2.05+3.9*i)<0.50) {d+=(0.016-0.0034); break;}         
     }
  } else
  if (13<fR&&fR<26) { //SDD
     Double_t dd=0.0033;
     d=dd;
     if (TMath::Abs(y-0.00)>3.30) d+=dd;

     if (TMath::Abs(y-1.80)<0.55) {
        d+=0.016;
        for (Int_t j=0; j<20; j++) {
          if (TMath::Abs(z+0.7+1.47*j)<0.12) {d+=0.08; x0=9.; break;}
          if (TMath::Abs(z-0.7-1.47*j)<0.12) {d+=0.08; x0=9.; break;}
        } 
     }
     if (TMath::Abs(y+1.80)<0.55) {
        d+=0.016;
        for (Int_t j=0; j<20; j++) {
          if (TMath::Abs(z-0.7-1.47*j)<0.12) {d+=0.08; x0=9.; break;}
          if (TMath::Abs(z+0.7+1.47*j)<0.12) {d+=0.08; x0=9.; break;}
        } 
     }

     for (Int_t i=0; i<4; i++) {
       if (TMath::Abs(z-7.3*i)<0.60) {
          d+=dd;
          if (TMath::Abs(y-0.00)>3.30) d+=dd; 
          break;
       }
       if (TMath::Abs(z+7.3*i)<0.60) {
          d+=dd; 
          if (TMath::Abs(y-0.00)>3.30) d+=dd; 
          break;
       }
     }
  } else
  if (6<fR&&fR<8) {   //SPD2
     Double_t dd=0.0063; x0=21.5;
     d=dd;
     if (TMath::Abs(y-3.08)>0.5) d+=dd;
     //if (TMath::Abs(y-3.08)>0.45) d+=dd;
     if (TMath::Abs(y-3.03)<0.10) {d+=0.014;}
  } else
  if (3<fR&&fR<5) {   //SPD1
     Double_t dd=0.0063; x0=21.5;
     d=dd;
     if (TMath::Abs(y+0.21)>0.6) d+=dd;
     //if (TMath::Abs(y+0.21)>0.45) d+=dd;
     if (TMath::Abs(y+0.10)<0.10) {d+=0.014;}
  }

  return d;
}

Double_t AliITStrackerV2::GetEffectiveThickness(Double_t y,Double_t z) const
{
  //--------------------------------------------------------------------
  //Returns the thickness between the current layer and the vertex (units X0)
  //--------------------------------------------------------------------
  Double_t d=0.0028*3*3; //beam pipe
  Double_t x0=0;

  Double_t xn=fgLayers[fI].GetR();
  for (Int_t i=0; i<fI; i++) {
    Double_t xi=fgLayers[i].GetR();
    d+=fgLayers[i].GetThickness(y,z,x0)*xi*xi;
  }

  if (fI>1) {
    Double_t xi=9.;
    d+=0.0097*xi*xi;
  }

  if (fI>3) {
    Double_t xi=0.5*(fgLayers[3].GetR()+fgLayers[4].GetR());
    d+=0.0034*xi*xi;
  }

  return d/(xn*xn);
}

Bool_t AliITStrackerV2::RefitAt(Double_t xx,AliITStrackV2 *t,
                                const AliITStrackV2 *c, Bool_t extra) {
  //--------------------------------------------------------------------
  // This function refits the track "t" at the position "x" using
  // the clusters from "c"
  // If "extra"==kTRUE, 
  //    the clusters from overlapped modules get attached to "t" 
  //--------------------------------------------------------------------
  Int_t index[AliITSgeomTGeo::kNLayers];
  Int_t k;
  for (k=0; k<AliITSgeomTGeo::GetNLayers(); k++) index[k]=-1;
  Int_t nc=c->GetNumberOfClusters();
  for (k=0; k<nc; k++) { 
    Int_t idx=c->GetClusterIndex(k),nl=(idx&0xf0000000)>>28;
    index[nl]=idx; 
  }

  Int_t from, to, step;
  if (xx > t->GetX()) {
      from=0; to=AliITSgeomTGeo::GetNLayers();
      step=+1;
  } else {
      from=AliITSgeomTGeo::GetNLayers()-1; to=-1;
      step=-1;
  }

  for (Int_t i=from; i != to; i += step) {
     AliITSlayer &layer=fgLayers[i];
     Double_t r=layer.GetR();
 
     {
     Double_t hI=i-0.5*step; 
     if (TMath::Abs(hI-1.5)<0.01 || TMath::Abs(hI-3.5)<0.01) {  
       Int_t iLay = i-step;
       Double_t rs = 0.;
       if(iLay<0 || iLay>= AliITSgeomTGeo::kNLayers){
	 AliError(Form("Invalid layer %d ",iLay));
	 return kFALSE;
       }
       else{
	 rs=0.5*(fgLayers[i-step].GetR() + r);
       }
       Double_t d=0.0034, x0=38.6; 
       if (TMath::Abs(hI-1.5)<0.01) {rs=9.; d=0.0097; x0=42;}
       if (!t->PropagateTo(rs,-step*d,x0)) {
	 return kFALSE;
       }
     }
     }

     // remember old position [SR, GSI 18.02.2003]
     Double_t oldX=0., oldY=0., oldZ=0.;
     if (t->IsStartedTimeIntegral() && step==1) {
        t->GetGlobalXYZat(t->GetX(),oldX,oldY,oldZ);
     }
     //

     Double_t phi,z;
     if (!t->GetPhiZat(r,phi,z)) { 
       return kFALSE;
     }

     Int_t idet=layer.FindDetectorIndex(phi,z);
     if (idet<0) { 
       return kFALSE;
     }
     const AliITSdetector &det=layer.GetDetector(idet);
     phi=det.GetPhi();
     if (!t->Propagate(phi,det.GetR())) {
       return kFALSE;
     }
     t->SetDetectorIndex(idet);

     const AliITSRecPoint *cl=0;
     Double_t maxchi2=AliITSReconstructor::GetRecoParam()->GetMaxChi2();

     Int_t idx=index[i];
     if (idx>=0) {
        const AliITSRecPoint *ccc=(AliITSRecPoint *)GetCluster(idx); 
        if (idet != ccc->GetDetectorIndex()) {
           idet=ccc->GetDetectorIndex();
           const AliITSdetector &det2=layer.GetDetector(idet);
           if (!t->Propagate(det2.GetPhi(),det2.GetR())) {
             return kFALSE;
           }
           t->SetDetectorIndex(idet);
        }
        Double_t chi2=t->GetPredictedChi2(ccc);
        if (chi2<maxchi2) { 
	  cl=ccc; 
	  maxchi2=chi2; 
	} else {
	  return kFALSE;
	}
     }
 
     if (cl) {
       // Take into account the mis-alignment
       Double_t x=t->GetX()+cl->GetX();
       if (!t->PropagateTo(x,0.,0.)) return kFALSE;
       if (!t->Update(cl,maxchi2,idx)) {
          return kFALSE;
       }
       t->SetSampledEdx(cl->GetQ(),i-2);
     }

     {
     Double_t x0;
     Double_t d=layer.GetThickness(t->GetY(),t->GetZ(),x0);
     t->CorrectForMaterial(-step*d,x0);
     }
                 
     if (extra) { //search for extra clusters
        AliITStrackV2 tmp(*t);
        Double_t dz=4*TMath::Sqrt(tmp.GetSigmaZ2()+AliITSReconstructor::GetRecoParam()->GetSigmaZ2(i));
        if (dz < 0.5*TMath::Abs(tmp.GetTgl())) dz=0.5*TMath::Abs(tmp.GetTgl());
        Double_t dy=4*TMath::Sqrt(t->GetSigmaY2()+AliITSReconstructor::GetRecoParam()->GetSigmaY2(i));
        if (dy < 0.5*TMath::Abs(tmp.GetSnp())) dy=0.5*TMath::Abs(tmp.GetSnp());
        Double_t zmin=t->GetZ() - dz;
        Double_t zmax=t->GetZ() + dz;
        Double_t ymin=t->GetY() + phi*r - dy;
        Double_t ymax=t->GetY() + phi*r + dy;
        layer.SelectClusters(zmin,zmax,ymin,ymax);

        const AliITSRecPoint *cx=0; Int_t ci=-1,cci=-1;
        maxchi2=1000.*AliITSReconstructor::GetRecoParam()->GetMaxChi2();
	Double_t tolerance=0.1;
        while ((cx=layer.GetNextCluster(ci))!=0) {
           if (idet == cx->GetDetectorIndex()) continue;

	   const AliITSdetector &detx=layer.GetDetector(cx->GetDetectorIndex());

	   if (!tmp.Propagate(detx.GetPhi(),detx.GetR())) continue;
           
	   if (TMath::Abs(tmp.GetZ() - cx->GetZ()) > tolerance) continue;
           if (TMath::Abs(tmp.GetY() - cx->GetY()) > tolerance) continue;

           Double_t chi2=tmp.GetPredictedChi2(cx);
           if (chi2<maxchi2) { maxchi2=chi2; cci=ci; }
        }
        if (cci>=0) t->SetExtraCluster(i,(i<<28)+cci);
     }

     // track time update [SR, GSI 17.02.2003]
     if (t->IsStartedTimeIntegral() && step==1) {
        Double_t newX, newY, newZ;
        t->GetGlobalXYZat(t->GetX(),newX,newY,newZ);
        Double_t dL2 = (oldX-newX)*(oldX-newX) + (oldY-newY)*(oldY-newY) + 
                       (oldZ-newZ)*(oldZ-newZ);
        t->AddTimeStep(TMath::Sqrt(dL2));
     }
     //

  }

  if (!t->PropagateTo(xx,0.,0.)) return kFALSE;
  return kTRUE;
}

void AliITStrackerV2::UseClusters(const AliKalmanTrack *t, Int_t from) const {
  //--------------------------------------------------------------------
  // This function marks clusters assigned to the track
  //--------------------------------------------------------------------
  AliTracker::UseClusters(t,from);

  Int_t clusterIndex = t->GetClusterIndex(0);
  AliITSRecPoint *c= 0x0;

  if (clusterIndex>-1)
    c = (AliITSRecPoint *)GetCluster(clusterIndex);
  if (c && c->GetSigmaZ2()>0.1) c->UnUse();

  c = 0x0;
  clusterIndex = t->GetClusterIndex(1);
  if (clusterIndex>-1)
    c=(AliITSRecPoint *)GetCluster(clusterIndex);
  if (c && c->GetSigmaZ2()>0.1) c->UnUse();

}
 AliITStrackerV2.cxx:1
 AliITStrackerV2.cxx:2
 AliITStrackerV2.cxx:3
 AliITStrackerV2.cxx:4
 AliITStrackerV2.cxx:5
 AliITStrackerV2.cxx:6
 AliITStrackerV2.cxx:7
 AliITStrackerV2.cxx:8
 AliITStrackerV2.cxx:9
 AliITStrackerV2.cxx:10
 AliITStrackerV2.cxx:11
 AliITStrackerV2.cxx:12
 AliITStrackerV2.cxx:13
 AliITStrackerV2.cxx:14
 AliITStrackerV2.cxx:15
 AliITStrackerV2.cxx:16
 AliITStrackerV2.cxx:17
 AliITStrackerV2.cxx:18
 AliITStrackerV2.cxx:19
 AliITStrackerV2.cxx:20
 AliITStrackerV2.cxx:21
 AliITStrackerV2.cxx:22
 AliITStrackerV2.cxx:23
 AliITStrackerV2.cxx:24
 AliITStrackerV2.cxx:25
 AliITStrackerV2.cxx:26
 AliITStrackerV2.cxx:27
 AliITStrackerV2.cxx:28
 AliITStrackerV2.cxx:29
 AliITStrackerV2.cxx:30
 AliITStrackerV2.cxx:31
 AliITStrackerV2.cxx:32
 AliITStrackerV2.cxx:33
 AliITStrackerV2.cxx:34
 AliITStrackerV2.cxx:35
 AliITStrackerV2.cxx:36
 AliITStrackerV2.cxx:37
 AliITStrackerV2.cxx:38
 AliITStrackerV2.cxx:39
 AliITStrackerV2.cxx:40
 AliITStrackerV2.cxx:41
 AliITStrackerV2.cxx:42
 AliITStrackerV2.cxx:43
 AliITStrackerV2.cxx:44
 AliITStrackerV2.cxx:45
 AliITStrackerV2.cxx:46
 AliITStrackerV2.cxx:47
 AliITStrackerV2.cxx:48
 AliITStrackerV2.cxx:49
 AliITStrackerV2.cxx:50
 AliITStrackerV2.cxx:51
 AliITStrackerV2.cxx:52
 AliITStrackerV2.cxx:53
 AliITStrackerV2.cxx:54
 AliITStrackerV2.cxx:55
 AliITStrackerV2.cxx:56
 AliITStrackerV2.cxx:57
 AliITStrackerV2.cxx:58
 AliITStrackerV2.cxx:59
 AliITStrackerV2.cxx:60
 AliITStrackerV2.cxx:61
 AliITStrackerV2.cxx:62
 AliITStrackerV2.cxx:63
 AliITStrackerV2.cxx:64
 AliITStrackerV2.cxx:65
 AliITStrackerV2.cxx:66
 AliITStrackerV2.cxx:67
 AliITStrackerV2.cxx:68
 AliITStrackerV2.cxx:69
 AliITStrackerV2.cxx:70
 AliITStrackerV2.cxx:71
 AliITStrackerV2.cxx:72
 AliITStrackerV2.cxx:73
 AliITStrackerV2.cxx:74
 AliITStrackerV2.cxx:75
 AliITStrackerV2.cxx:76
 AliITStrackerV2.cxx:77
 AliITStrackerV2.cxx:78
 AliITStrackerV2.cxx:79
 AliITStrackerV2.cxx:80
 AliITStrackerV2.cxx:81
 AliITStrackerV2.cxx:82
 AliITStrackerV2.cxx:83
 AliITStrackerV2.cxx:84
 AliITStrackerV2.cxx:85
 AliITStrackerV2.cxx:86
 AliITStrackerV2.cxx:87
 AliITStrackerV2.cxx:88
 AliITStrackerV2.cxx:89
 AliITStrackerV2.cxx:90
 AliITStrackerV2.cxx:91
 AliITStrackerV2.cxx:92
 AliITStrackerV2.cxx:93
 AliITStrackerV2.cxx:94
 AliITStrackerV2.cxx:95
 AliITStrackerV2.cxx:96
 AliITStrackerV2.cxx:97
 AliITStrackerV2.cxx:98
 AliITStrackerV2.cxx:99
 AliITStrackerV2.cxx:100
 AliITStrackerV2.cxx:101
 AliITStrackerV2.cxx:102
 AliITStrackerV2.cxx:103
 AliITStrackerV2.cxx:104
 AliITStrackerV2.cxx:105
 AliITStrackerV2.cxx:106
 AliITStrackerV2.cxx:107
 AliITStrackerV2.cxx:108
 AliITStrackerV2.cxx:109
 AliITStrackerV2.cxx:110
 AliITStrackerV2.cxx:111
 AliITStrackerV2.cxx:112
 AliITStrackerV2.cxx:113
 AliITStrackerV2.cxx:114
 AliITStrackerV2.cxx:115
 AliITStrackerV2.cxx:116
 AliITStrackerV2.cxx:117
 AliITStrackerV2.cxx:118
 AliITStrackerV2.cxx:119
 AliITStrackerV2.cxx:120
 AliITStrackerV2.cxx:121
 AliITStrackerV2.cxx:122
 AliITStrackerV2.cxx:123
 AliITStrackerV2.cxx:124
 AliITStrackerV2.cxx:125
 AliITStrackerV2.cxx:126
 AliITStrackerV2.cxx:127
 AliITStrackerV2.cxx:128
 AliITStrackerV2.cxx:129
 AliITStrackerV2.cxx:130
 AliITStrackerV2.cxx:131
 AliITStrackerV2.cxx:132
 AliITStrackerV2.cxx:133
 AliITStrackerV2.cxx:134
 AliITStrackerV2.cxx:135
 AliITStrackerV2.cxx:136
 AliITStrackerV2.cxx:137
 AliITStrackerV2.cxx:138
 AliITStrackerV2.cxx:139
 AliITStrackerV2.cxx:140
 AliITStrackerV2.cxx:141
 AliITStrackerV2.cxx:142
 AliITStrackerV2.cxx:143
 AliITStrackerV2.cxx:144
 AliITStrackerV2.cxx:145
 AliITStrackerV2.cxx:146
 AliITStrackerV2.cxx:147
 AliITStrackerV2.cxx:148
 AliITStrackerV2.cxx:149
 AliITStrackerV2.cxx:150
 AliITStrackerV2.cxx:151
 AliITStrackerV2.cxx:152
 AliITStrackerV2.cxx:153
 AliITStrackerV2.cxx:154
 AliITStrackerV2.cxx:155
 AliITStrackerV2.cxx:156
 AliITStrackerV2.cxx:157
 AliITStrackerV2.cxx:158
 AliITStrackerV2.cxx:159
 AliITStrackerV2.cxx:160
 AliITStrackerV2.cxx:161
 AliITStrackerV2.cxx:162
 AliITStrackerV2.cxx:163
 AliITStrackerV2.cxx:164
 AliITStrackerV2.cxx:165
 AliITStrackerV2.cxx:166
 AliITStrackerV2.cxx:167
 AliITStrackerV2.cxx:168
 AliITStrackerV2.cxx:169
 AliITStrackerV2.cxx:170
 AliITStrackerV2.cxx:171
 AliITStrackerV2.cxx:172
 AliITStrackerV2.cxx:173
 AliITStrackerV2.cxx:174
 AliITStrackerV2.cxx:175
 AliITStrackerV2.cxx:176
 AliITStrackerV2.cxx:177
 AliITStrackerV2.cxx:178
 AliITStrackerV2.cxx:179
 AliITStrackerV2.cxx:180
 AliITStrackerV2.cxx:181
 AliITStrackerV2.cxx:182
 AliITStrackerV2.cxx:183
 AliITStrackerV2.cxx:184
 AliITStrackerV2.cxx:185
 AliITStrackerV2.cxx:186
 AliITStrackerV2.cxx:187
 AliITStrackerV2.cxx:188
 AliITStrackerV2.cxx:189
 AliITStrackerV2.cxx:190
 AliITStrackerV2.cxx:191
 AliITStrackerV2.cxx:192
 AliITStrackerV2.cxx:193
 AliITStrackerV2.cxx:194
 AliITStrackerV2.cxx:195
 AliITStrackerV2.cxx:196
 AliITStrackerV2.cxx:197
 AliITStrackerV2.cxx:198
 AliITStrackerV2.cxx:199
 AliITStrackerV2.cxx:200
 AliITStrackerV2.cxx:201
 AliITStrackerV2.cxx:202
 AliITStrackerV2.cxx:203
 AliITStrackerV2.cxx:204
 AliITStrackerV2.cxx:205
 AliITStrackerV2.cxx:206
 AliITStrackerV2.cxx:207
 AliITStrackerV2.cxx:208
 AliITStrackerV2.cxx:209
 AliITStrackerV2.cxx:210
 AliITStrackerV2.cxx:211
 AliITStrackerV2.cxx:212
 AliITStrackerV2.cxx:213
 AliITStrackerV2.cxx:214
 AliITStrackerV2.cxx:215
 AliITStrackerV2.cxx:216
 AliITStrackerV2.cxx:217
 AliITStrackerV2.cxx:218
 AliITStrackerV2.cxx:219
 AliITStrackerV2.cxx:220
 AliITStrackerV2.cxx:221
 AliITStrackerV2.cxx:222
 AliITStrackerV2.cxx:223
 AliITStrackerV2.cxx:224
 AliITStrackerV2.cxx:225
 AliITStrackerV2.cxx:226
 AliITStrackerV2.cxx:227
 AliITStrackerV2.cxx:228
 AliITStrackerV2.cxx:229
 AliITStrackerV2.cxx:230
 AliITStrackerV2.cxx:231
 AliITStrackerV2.cxx:232
 AliITStrackerV2.cxx:233
 AliITStrackerV2.cxx:234
 AliITStrackerV2.cxx:235
 AliITStrackerV2.cxx:236
 AliITStrackerV2.cxx:237
 AliITStrackerV2.cxx:238
 AliITStrackerV2.cxx:239
 AliITStrackerV2.cxx:240
 AliITStrackerV2.cxx:241
 AliITStrackerV2.cxx:242
 AliITStrackerV2.cxx:243
 AliITStrackerV2.cxx:244
 AliITStrackerV2.cxx:245
 AliITStrackerV2.cxx:246
 AliITStrackerV2.cxx:247
 AliITStrackerV2.cxx:248
 AliITStrackerV2.cxx:249
 AliITStrackerV2.cxx:250
 AliITStrackerV2.cxx:251
 AliITStrackerV2.cxx:252
 AliITStrackerV2.cxx:253
 AliITStrackerV2.cxx:254
 AliITStrackerV2.cxx:255
 AliITStrackerV2.cxx:256
 AliITStrackerV2.cxx:257
 AliITStrackerV2.cxx:258
 AliITStrackerV2.cxx:259
 AliITStrackerV2.cxx:260
 AliITStrackerV2.cxx:261
 AliITStrackerV2.cxx:262
 AliITStrackerV2.cxx:263
 AliITStrackerV2.cxx:264
 AliITStrackerV2.cxx:265
 AliITStrackerV2.cxx:266
 AliITStrackerV2.cxx:267
 AliITStrackerV2.cxx:268
 AliITStrackerV2.cxx:269
 AliITStrackerV2.cxx:270
 AliITStrackerV2.cxx:271
 AliITStrackerV2.cxx:272
 AliITStrackerV2.cxx:273
 AliITStrackerV2.cxx:274
 AliITStrackerV2.cxx:275
 AliITStrackerV2.cxx:276
 AliITStrackerV2.cxx:277
 AliITStrackerV2.cxx:278
 AliITStrackerV2.cxx:279
 AliITStrackerV2.cxx:280
 AliITStrackerV2.cxx:281
 AliITStrackerV2.cxx:282
 AliITStrackerV2.cxx:283
 AliITStrackerV2.cxx:284
 AliITStrackerV2.cxx:285
 AliITStrackerV2.cxx:286
 AliITStrackerV2.cxx:287
 AliITStrackerV2.cxx:288
 AliITStrackerV2.cxx:289
 AliITStrackerV2.cxx:290
 AliITStrackerV2.cxx:291
 AliITStrackerV2.cxx:292
 AliITStrackerV2.cxx:293
 AliITStrackerV2.cxx:294
 AliITStrackerV2.cxx:295
 AliITStrackerV2.cxx:296
 AliITStrackerV2.cxx:297
 AliITStrackerV2.cxx:298
 AliITStrackerV2.cxx:299
 AliITStrackerV2.cxx:300
 AliITStrackerV2.cxx:301
 AliITStrackerV2.cxx:302
 AliITStrackerV2.cxx:303
 AliITStrackerV2.cxx:304
 AliITStrackerV2.cxx:305
 AliITStrackerV2.cxx:306
 AliITStrackerV2.cxx:307
 AliITStrackerV2.cxx:308
 AliITStrackerV2.cxx:309
 AliITStrackerV2.cxx:310
 AliITStrackerV2.cxx:311
 AliITStrackerV2.cxx:312
 AliITStrackerV2.cxx:313
 AliITStrackerV2.cxx:314
 AliITStrackerV2.cxx:315
 AliITStrackerV2.cxx:316
 AliITStrackerV2.cxx:317
 AliITStrackerV2.cxx:318
 AliITStrackerV2.cxx:319
 AliITStrackerV2.cxx:320
 AliITStrackerV2.cxx:321
 AliITStrackerV2.cxx:322
 AliITStrackerV2.cxx:323
 AliITStrackerV2.cxx:324
 AliITStrackerV2.cxx:325
 AliITStrackerV2.cxx:326
 AliITStrackerV2.cxx:327
 AliITStrackerV2.cxx:328
 AliITStrackerV2.cxx:329
 AliITStrackerV2.cxx:330
 AliITStrackerV2.cxx:331
 AliITStrackerV2.cxx:332
 AliITStrackerV2.cxx:333
 AliITStrackerV2.cxx:334
 AliITStrackerV2.cxx:335
 AliITStrackerV2.cxx:336
 AliITStrackerV2.cxx:337
 AliITStrackerV2.cxx:338
 AliITStrackerV2.cxx:339
 AliITStrackerV2.cxx:340
 AliITStrackerV2.cxx:341
 AliITStrackerV2.cxx:342
 AliITStrackerV2.cxx:343
 AliITStrackerV2.cxx:344
 AliITStrackerV2.cxx:345
 AliITStrackerV2.cxx:346
 AliITStrackerV2.cxx:347
 AliITStrackerV2.cxx:348
 AliITStrackerV2.cxx:349
 AliITStrackerV2.cxx:350
 AliITStrackerV2.cxx:351
 AliITStrackerV2.cxx:352
 AliITStrackerV2.cxx:353
 AliITStrackerV2.cxx:354
 AliITStrackerV2.cxx:355
 AliITStrackerV2.cxx:356
 AliITStrackerV2.cxx:357
 AliITStrackerV2.cxx:358
 AliITStrackerV2.cxx:359
 AliITStrackerV2.cxx:360
 AliITStrackerV2.cxx:361
 AliITStrackerV2.cxx:362
 AliITStrackerV2.cxx:363
 AliITStrackerV2.cxx:364
 AliITStrackerV2.cxx:365
 AliITStrackerV2.cxx:366
 AliITStrackerV2.cxx:367
 AliITStrackerV2.cxx:368
 AliITStrackerV2.cxx:369
 AliITStrackerV2.cxx:370
 AliITStrackerV2.cxx:371
 AliITStrackerV2.cxx:372
 AliITStrackerV2.cxx:373
 AliITStrackerV2.cxx:374
 AliITStrackerV2.cxx:375
 AliITStrackerV2.cxx:376
 AliITStrackerV2.cxx:377
 AliITStrackerV2.cxx:378
 AliITStrackerV2.cxx:379
 AliITStrackerV2.cxx:380
 AliITStrackerV2.cxx:381
 AliITStrackerV2.cxx:382
 AliITStrackerV2.cxx:383
 AliITStrackerV2.cxx:384
 AliITStrackerV2.cxx:385
 AliITStrackerV2.cxx:386
 AliITStrackerV2.cxx:387
 AliITStrackerV2.cxx:388
 AliITStrackerV2.cxx:389
 AliITStrackerV2.cxx:390
 AliITStrackerV2.cxx:391
 AliITStrackerV2.cxx:392
 AliITStrackerV2.cxx:393
 AliITStrackerV2.cxx:394
 AliITStrackerV2.cxx:395
 AliITStrackerV2.cxx:396
 AliITStrackerV2.cxx:397
 AliITStrackerV2.cxx:398
 AliITStrackerV2.cxx:399
 AliITStrackerV2.cxx:400
 AliITStrackerV2.cxx:401
 AliITStrackerV2.cxx:402
 AliITStrackerV2.cxx:403
 AliITStrackerV2.cxx:404
 AliITStrackerV2.cxx:405
 AliITStrackerV2.cxx:406
 AliITStrackerV2.cxx:407
 AliITStrackerV2.cxx:408
 AliITStrackerV2.cxx:409
 AliITStrackerV2.cxx:410
 AliITStrackerV2.cxx:411
 AliITStrackerV2.cxx:412
 AliITStrackerV2.cxx:413
 AliITStrackerV2.cxx:414
 AliITStrackerV2.cxx:415
 AliITStrackerV2.cxx:416
 AliITStrackerV2.cxx:417
 AliITStrackerV2.cxx:418
 AliITStrackerV2.cxx:419
 AliITStrackerV2.cxx:420
 AliITStrackerV2.cxx:421
 AliITStrackerV2.cxx:422
 AliITStrackerV2.cxx:423
 AliITStrackerV2.cxx:424
 AliITStrackerV2.cxx:425
 AliITStrackerV2.cxx:426
 AliITStrackerV2.cxx:427
 AliITStrackerV2.cxx:428
 AliITStrackerV2.cxx:429
 AliITStrackerV2.cxx:430
 AliITStrackerV2.cxx:431
 AliITStrackerV2.cxx:432
 AliITStrackerV2.cxx:433
 AliITStrackerV2.cxx:434
 AliITStrackerV2.cxx:435
 AliITStrackerV2.cxx:436
 AliITStrackerV2.cxx:437
 AliITStrackerV2.cxx:438
 AliITStrackerV2.cxx:439
 AliITStrackerV2.cxx:440
 AliITStrackerV2.cxx:441
 AliITStrackerV2.cxx:442
 AliITStrackerV2.cxx:443
 AliITStrackerV2.cxx:444
 AliITStrackerV2.cxx:445
 AliITStrackerV2.cxx:446
 AliITStrackerV2.cxx:447
 AliITStrackerV2.cxx:448
 AliITStrackerV2.cxx:449
 AliITStrackerV2.cxx:450
 AliITStrackerV2.cxx:451
 AliITStrackerV2.cxx:452
 AliITStrackerV2.cxx:453
 AliITStrackerV2.cxx:454
 AliITStrackerV2.cxx:455
 AliITStrackerV2.cxx:456
 AliITStrackerV2.cxx:457
 AliITStrackerV2.cxx:458
 AliITStrackerV2.cxx:459
 AliITStrackerV2.cxx:460
 AliITStrackerV2.cxx:461
 AliITStrackerV2.cxx:462
 AliITStrackerV2.cxx:463
 AliITStrackerV2.cxx:464
 AliITStrackerV2.cxx:465
 AliITStrackerV2.cxx:466
 AliITStrackerV2.cxx:467
 AliITStrackerV2.cxx:468
 AliITStrackerV2.cxx:469
 AliITStrackerV2.cxx:470
 AliITStrackerV2.cxx:471
 AliITStrackerV2.cxx:472
 AliITStrackerV2.cxx:473
 AliITStrackerV2.cxx:474
 AliITStrackerV2.cxx:475
 AliITStrackerV2.cxx:476
 AliITStrackerV2.cxx:477
 AliITStrackerV2.cxx:478
 AliITStrackerV2.cxx:479
 AliITStrackerV2.cxx:480
 AliITStrackerV2.cxx:481
 AliITStrackerV2.cxx:482
 AliITStrackerV2.cxx:483
 AliITStrackerV2.cxx:484
 AliITStrackerV2.cxx:485
 AliITStrackerV2.cxx:486
 AliITStrackerV2.cxx:487
 AliITStrackerV2.cxx:488
 AliITStrackerV2.cxx:489
 AliITStrackerV2.cxx:490
 AliITStrackerV2.cxx:491
 AliITStrackerV2.cxx:492
 AliITStrackerV2.cxx:493
 AliITStrackerV2.cxx:494
 AliITStrackerV2.cxx:495
 AliITStrackerV2.cxx:496
 AliITStrackerV2.cxx:497
 AliITStrackerV2.cxx:498
 AliITStrackerV2.cxx:499
 AliITStrackerV2.cxx:500
 AliITStrackerV2.cxx:501
 AliITStrackerV2.cxx:502
 AliITStrackerV2.cxx:503
 AliITStrackerV2.cxx:504
 AliITStrackerV2.cxx:505
 AliITStrackerV2.cxx:506
 AliITStrackerV2.cxx:507
 AliITStrackerV2.cxx:508
 AliITStrackerV2.cxx:509
 AliITStrackerV2.cxx:510
 AliITStrackerV2.cxx:511
 AliITStrackerV2.cxx:512
 AliITStrackerV2.cxx:513
 AliITStrackerV2.cxx:514
 AliITStrackerV2.cxx:515
 AliITStrackerV2.cxx:516
 AliITStrackerV2.cxx:517
 AliITStrackerV2.cxx:518
 AliITStrackerV2.cxx:519
 AliITStrackerV2.cxx:520
 AliITStrackerV2.cxx:521
 AliITStrackerV2.cxx:522
 AliITStrackerV2.cxx:523
 AliITStrackerV2.cxx:524
 AliITStrackerV2.cxx:525
 AliITStrackerV2.cxx:526
 AliITStrackerV2.cxx:527
 AliITStrackerV2.cxx:528
 AliITStrackerV2.cxx:529
 AliITStrackerV2.cxx:530
 AliITStrackerV2.cxx:531
 AliITStrackerV2.cxx:532
 AliITStrackerV2.cxx:533
 AliITStrackerV2.cxx:534
 AliITStrackerV2.cxx:535
 AliITStrackerV2.cxx:536
 AliITStrackerV2.cxx:537
 AliITStrackerV2.cxx:538
 AliITStrackerV2.cxx:539
 AliITStrackerV2.cxx:540
 AliITStrackerV2.cxx:541
 AliITStrackerV2.cxx:542
 AliITStrackerV2.cxx:543
 AliITStrackerV2.cxx:544
 AliITStrackerV2.cxx:545
 AliITStrackerV2.cxx:546
 AliITStrackerV2.cxx:547
 AliITStrackerV2.cxx:548
 AliITStrackerV2.cxx:549
 AliITStrackerV2.cxx:550
 AliITStrackerV2.cxx:551
 AliITStrackerV2.cxx:552
 AliITStrackerV2.cxx:553
 AliITStrackerV2.cxx:554
 AliITStrackerV2.cxx:555
 AliITStrackerV2.cxx:556
 AliITStrackerV2.cxx:557
 AliITStrackerV2.cxx:558
 AliITStrackerV2.cxx:559
 AliITStrackerV2.cxx:560
 AliITStrackerV2.cxx:561
 AliITStrackerV2.cxx:562
 AliITStrackerV2.cxx:563
 AliITStrackerV2.cxx:564
 AliITStrackerV2.cxx:565
 AliITStrackerV2.cxx:566
 AliITStrackerV2.cxx:567
 AliITStrackerV2.cxx:568
 AliITStrackerV2.cxx:569
 AliITStrackerV2.cxx:570
 AliITStrackerV2.cxx:571
 AliITStrackerV2.cxx:572
 AliITStrackerV2.cxx:573
 AliITStrackerV2.cxx:574
 AliITStrackerV2.cxx:575
 AliITStrackerV2.cxx:576
 AliITStrackerV2.cxx:577
 AliITStrackerV2.cxx:578
 AliITStrackerV2.cxx:579
 AliITStrackerV2.cxx:580
 AliITStrackerV2.cxx:581
 AliITStrackerV2.cxx:582
 AliITStrackerV2.cxx:583
 AliITStrackerV2.cxx:584
 AliITStrackerV2.cxx:585
 AliITStrackerV2.cxx:586
 AliITStrackerV2.cxx:587
 AliITStrackerV2.cxx:588
 AliITStrackerV2.cxx:589
 AliITStrackerV2.cxx:590
 AliITStrackerV2.cxx:591
 AliITStrackerV2.cxx:592
 AliITStrackerV2.cxx:593
 AliITStrackerV2.cxx:594
 AliITStrackerV2.cxx:595
 AliITStrackerV2.cxx:596
 AliITStrackerV2.cxx:597
 AliITStrackerV2.cxx:598
 AliITStrackerV2.cxx:599
 AliITStrackerV2.cxx:600
 AliITStrackerV2.cxx:601
 AliITStrackerV2.cxx:602
 AliITStrackerV2.cxx:603
 AliITStrackerV2.cxx:604
 AliITStrackerV2.cxx:605
 AliITStrackerV2.cxx:606
 AliITStrackerV2.cxx:607
 AliITStrackerV2.cxx:608
 AliITStrackerV2.cxx:609
 AliITStrackerV2.cxx:610
 AliITStrackerV2.cxx:611
 AliITStrackerV2.cxx:612
 AliITStrackerV2.cxx:613
 AliITStrackerV2.cxx:614
 AliITStrackerV2.cxx:615
 AliITStrackerV2.cxx:616
 AliITStrackerV2.cxx:617
 AliITStrackerV2.cxx:618
 AliITStrackerV2.cxx:619
 AliITStrackerV2.cxx:620
 AliITStrackerV2.cxx:621
 AliITStrackerV2.cxx:622
 AliITStrackerV2.cxx:623
 AliITStrackerV2.cxx:624
 AliITStrackerV2.cxx:625
 AliITStrackerV2.cxx:626
 AliITStrackerV2.cxx:627
 AliITStrackerV2.cxx:628
 AliITStrackerV2.cxx:629
 AliITStrackerV2.cxx:630
 AliITStrackerV2.cxx:631
 AliITStrackerV2.cxx:632
 AliITStrackerV2.cxx:633
 AliITStrackerV2.cxx:634
 AliITStrackerV2.cxx:635
 AliITStrackerV2.cxx:636
 AliITStrackerV2.cxx:637
 AliITStrackerV2.cxx:638
 AliITStrackerV2.cxx:639
 AliITStrackerV2.cxx:640
 AliITStrackerV2.cxx:641
 AliITStrackerV2.cxx:642
 AliITStrackerV2.cxx:643
 AliITStrackerV2.cxx:644
 AliITStrackerV2.cxx:645
 AliITStrackerV2.cxx:646
 AliITStrackerV2.cxx:647
 AliITStrackerV2.cxx:648
 AliITStrackerV2.cxx:649
 AliITStrackerV2.cxx:650
 AliITStrackerV2.cxx:651
 AliITStrackerV2.cxx:652
 AliITStrackerV2.cxx:653
 AliITStrackerV2.cxx:654
 AliITStrackerV2.cxx:655
 AliITStrackerV2.cxx:656
 AliITStrackerV2.cxx:657
 AliITStrackerV2.cxx:658
 AliITStrackerV2.cxx:659
 AliITStrackerV2.cxx:660
 AliITStrackerV2.cxx:661
 AliITStrackerV2.cxx:662
 AliITStrackerV2.cxx:663
 AliITStrackerV2.cxx:664
 AliITStrackerV2.cxx:665
 AliITStrackerV2.cxx:666
 AliITStrackerV2.cxx:667
 AliITStrackerV2.cxx:668
 AliITStrackerV2.cxx:669
 AliITStrackerV2.cxx:670
 AliITStrackerV2.cxx:671
 AliITStrackerV2.cxx:672
 AliITStrackerV2.cxx:673
 AliITStrackerV2.cxx:674
 AliITStrackerV2.cxx:675
 AliITStrackerV2.cxx:676
 AliITStrackerV2.cxx:677
 AliITStrackerV2.cxx:678
 AliITStrackerV2.cxx:679
 AliITStrackerV2.cxx:680
 AliITStrackerV2.cxx:681
 AliITStrackerV2.cxx:682
 AliITStrackerV2.cxx:683
 AliITStrackerV2.cxx:684
 AliITStrackerV2.cxx:685
 AliITStrackerV2.cxx:686
 AliITStrackerV2.cxx:687
 AliITStrackerV2.cxx:688
 AliITStrackerV2.cxx:689
 AliITStrackerV2.cxx:690
 AliITStrackerV2.cxx:691
 AliITStrackerV2.cxx:692
 AliITStrackerV2.cxx:693
 AliITStrackerV2.cxx:694
 AliITStrackerV2.cxx:695
 AliITStrackerV2.cxx:696
 AliITStrackerV2.cxx:697
 AliITStrackerV2.cxx:698
 AliITStrackerV2.cxx:699
 AliITStrackerV2.cxx:700
 AliITStrackerV2.cxx:701
 AliITStrackerV2.cxx:702
 AliITStrackerV2.cxx:703
 AliITStrackerV2.cxx:704
 AliITStrackerV2.cxx:705
 AliITStrackerV2.cxx:706
 AliITStrackerV2.cxx:707
 AliITStrackerV2.cxx:708
 AliITStrackerV2.cxx:709
 AliITStrackerV2.cxx:710
 AliITStrackerV2.cxx:711
 AliITStrackerV2.cxx:712
 AliITStrackerV2.cxx:713
 AliITStrackerV2.cxx:714
 AliITStrackerV2.cxx:715
 AliITStrackerV2.cxx:716
 AliITStrackerV2.cxx:717
 AliITStrackerV2.cxx:718
 AliITStrackerV2.cxx:719
 AliITStrackerV2.cxx:720
 AliITStrackerV2.cxx:721
 AliITStrackerV2.cxx:722
 AliITStrackerV2.cxx:723
 AliITStrackerV2.cxx:724
 AliITStrackerV2.cxx:725
 AliITStrackerV2.cxx:726
 AliITStrackerV2.cxx:727
 AliITStrackerV2.cxx:728
 AliITStrackerV2.cxx:729
 AliITStrackerV2.cxx:730
 AliITStrackerV2.cxx:731
 AliITStrackerV2.cxx:732
 AliITStrackerV2.cxx:733
 AliITStrackerV2.cxx:734
 AliITStrackerV2.cxx:735
 AliITStrackerV2.cxx:736
 AliITStrackerV2.cxx:737
 AliITStrackerV2.cxx:738
 AliITStrackerV2.cxx:739
 AliITStrackerV2.cxx:740
 AliITStrackerV2.cxx:741
 AliITStrackerV2.cxx:742
 AliITStrackerV2.cxx:743
 AliITStrackerV2.cxx:744
 AliITStrackerV2.cxx:745
 AliITStrackerV2.cxx:746
 AliITStrackerV2.cxx:747
 AliITStrackerV2.cxx:748
 AliITStrackerV2.cxx:749
 AliITStrackerV2.cxx:750
 AliITStrackerV2.cxx:751
 AliITStrackerV2.cxx:752
 AliITStrackerV2.cxx:753
 AliITStrackerV2.cxx:754
 AliITStrackerV2.cxx:755
 AliITStrackerV2.cxx:756
 AliITStrackerV2.cxx:757
 AliITStrackerV2.cxx:758
 AliITStrackerV2.cxx:759
 AliITStrackerV2.cxx:760
 AliITStrackerV2.cxx:761
 AliITStrackerV2.cxx:762
 AliITStrackerV2.cxx:763
 AliITStrackerV2.cxx:764
 AliITStrackerV2.cxx:765
 AliITStrackerV2.cxx:766
 AliITStrackerV2.cxx:767
 AliITStrackerV2.cxx:768
 AliITStrackerV2.cxx:769
 AliITStrackerV2.cxx:770
 AliITStrackerV2.cxx:771
 AliITStrackerV2.cxx:772
 AliITStrackerV2.cxx:773
 AliITStrackerV2.cxx:774
 AliITStrackerV2.cxx:775
 AliITStrackerV2.cxx:776
 AliITStrackerV2.cxx:777
 AliITStrackerV2.cxx:778
 AliITStrackerV2.cxx:779
 AliITStrackerV2.cxx:780
 AliITStrackerV2.cxx:781
 AliITStrackerV2.cxx:782
 AliITStrackerV2.cxx:783
 AliITStrackerV2.cxx:784
 AliITStrackerV2.cxx:785
 AliITStrackerV2.cxx:786
 AliITStrackerV2.cxx:787
 AliITStrackerV2.cxx:788
 AliITStrackerV2.cxx:789
 AliITStrackerV2.cxx:790
 AliITStrackerV2.cxx:791
 AliITStrackerV2.cxx:792
 AliITStrackerV2.cxx:793
 AliITStrackerV2.cxx:794
 AliITStrackerV2.cxx:795
 AliITStrackerV2.cxx:796
 AliITStrackerV2.cxx:797
 AliITStrackerV2.cxx:798
 AliITStrackerV2.cxx:799
 AliITStrackerV2.cxx:800
 AliITStrackerV2.cxx:801
 AliITStrackerV2.cxx:802
 AliITStrackerV2.cxx:803
 AliITStrackerV2.cxx:804
 AliITStrackerV2.cxx:805
 AliITStrackerV2.cxx:806
 AliITStrackerV2.cxx:807
 AliITStrackerV2.cxx:808
 AliITStrackerV2.cxx:809
 AliITStrackerV2.cxx:810
 AliITStrackerV2.cxx:811
 AliITStrackerV2.cxx:812
 AliITStrackerV2.cxx:813
 AliITStrackerV2.cxx:814
 AliITStrackerV2.cxx:815
 AliITStrackerV2.cxx:816
 AliITStrackerV2.cxx:817
 AliITStrackerV2.cxx:818
 AliITStrackerV2.cxx:819
 AliITStrackerV2.cxx:820
 AliITStrackerV2.cxx:821
 AliITStrackerV2.cxx:822
 AliITStrackerV2.cxx:823
 AliITStrackerV2.cxx:824
 AliITStrackerV2.cxx:825
 AliITStrackerV2.cxx:826
 AliITStrackerV2.cxx:827
 AliITStrackerV2.cxx:828
 AliITStrackerV2.cxx:829
 AliITStrackerV2.cxx:830
 AliITStrackerV2.cxx:831
 AliITStrackerV2.cxx:832
 AliITStrackerV2.cxx:833
 AliITStrackerV2.cxx:834
 AliITStrackerV2.cxx:835
 AliITStrackerV2.cxx:836
 AliITStrackerV2.cxx:837
 AliITStrackerV2.cxx:838
 AliITStrackerV2.cxx:839
 AliITStrackerV2.cxx:840
 AliITStrackerV2.cxx:841
 AliITStrackerV2.cxx:842
 AliITStrackerV2.cxx:843
 AliITStrackerV2.cxx:844
 AliITStrackerV2.cxx:845
 AliITStrackerV2.cxx:846
 AliITStrackerV2.cxx:847
 AliITStrackerV2.cxx:848
 AliITStrackerV2.cxx:849
 AliITStrackerV2.cxx:850
 AliITStrackerV2.cxx:851
 AliITStrackerV2.cxx:852
 AliITStrackerV2.cxx:853
 AliITStrackerV2.cxx:854
 AliITStrackerV2.cxx:855
 AliITStrackerV2.cxx:856
 AliITStrackerV2.cxx:857
 AliITStrackerV2.cxx:858
 AliITStrackerV2.cxx:859
 AliITStrackerV2.cxx:860
 AliITStrackerV2.cxx:861
 AliITStrackerV2.cxx:862
 AliITStrackerV2.cxx:863
 AliITStrackerV2.cxx:864
 AliITStrackerV2.cxx:865
 AliITStrackerV2.cxx:866
 AliITStrackerV2.cxx:867
 AliITStrackerV2.cxx:868
 AliITStrackerV2.cxx:869
 AliITStrackerV2.cxx:870
 AliITStrackerV2.cxx:871
 AliITStrackerV2.cxx:872
 AliITStrackerV2.cxx:873
 AliITStrackerV2.cxx:874
 AliITStrackerV2.cxx:875
 AliITStrackerV2.cxx:876
 AliITStrackerV2.cxx:877
 AliITStrackerV2.cxx:878
 AliITStrackerV2.cxx:879
 AliITStrackerV2.cxx:880
 AliITStrackerV2.cxx:881
 AliITStrackerV2.cxx:882
 AliITStrackerV2.cxx:883
 AliITStrackerV2.cxx:884
 AliITStrackerV2.cxx:885
 AliITStrackerV2.cxx:886
 AliITStrackerV2.cxx:887
 AliITStrackerV2.cxx:888
 AliITStrackerV2.cxx:889
 AliITStrackerV2.cxx:890
 AliITStrackerV2.cxx:891
 AliITStrackerV2.cxx:892
 AliITStrackerV2.cxx:893
 AliITStrackerV2.cxx:894
 AliITStrackerV2.cxx:895
 AliITStrackerV2.cxx:896
 AliITStrackerV2.cxx:897
 AliITStrackerV2.cxx:898
 AliITStrackerV2.cxx:899
 AliITStrackerV2.cxx:900
 AliITStrackerV2.cxx:901
 AliITStrackerV2.cxx:902
 AliITStrackerV2.cxx:903
 AliITStrackerV2.cxx:904
 AliITStrackerV2.cxx:905
 AliITStrackerV2.cxx:906
 AliITStrackerV2.cxx:907
 AliITStrackerV2.cxx:908
 AliITStrackerV2.cxx:909
 AliITStrackerV2.cxx:910
 AliITStrackerV2.cxx:911
 AliITStrackerV2.cxx:912
 AliITStrackerV2.cxx:913
 AliITStrackerV2.cxx:914
 AliITStrackerV2.cxx:915
 AliITStrackerV2.cxx:916
 AliITStrackerV2.cxx:917
 AliITStrackerV2.cxx:918
 AliITStrackerV2.cxx:919
 AliITStrackerV2.cxx:920
 AliITStrackerV2.cxx:921
 AliITStrackerV2.cxx:922
 AliITStrackerV2.cxx:923
 AliITStrackerV2.cxx:924
 AliITStrackerV2.cxx:925
 AliITStrackerV2.cxx:926
 AliITStrackerV2.cxx:927
 AliITStrackerV2.cxx:928
 AliITStrackerV2.cxx:929
 AliITStrackerV2.cxx:930
 AliITStrackerV2.cxx:931
 AliITStrackerV2.cxx:932
 AliITStrackerV2.cxx:933
 AliITStrackerV2.cxx:934
 AliITStrackerV2.cxx:935
 AliITStrackerV2.cxx:936
 AliITStrackerV2.cxx:937
 AliITStrackerV2.cxx:938
 AliITStrackerV2.cxx:939
 AliITStrackerV2.cxx:940
 AliITStrackerV2.cxx:941
 AliITStrackerV2.cxx:942
 AliITStrackerV2.cxx:943
 AliITStrackerV2.cxx:944
 AliITStrackerV2.cxx:945
 AliITStrackerV2.cxx:946
 AliITStrackerV2.cxx:947
 AliITStrackerV2.cxx:948
 AliITStrackerV2.cxx:949
 AliITStrackerV2.cxx:950
 AliITStrackerV2.cxx:951
 AliITStrackerV2.cxx:952
 AliITStrackerV2.cxx:953
 AliITStrackerV2.cxx:954
 AliITStrackerV2.cxx:955
 AliITStrackerV2.cxx:956
 AliITStrackerV2.cxx:957
 AliITStrackerV2.cxx:958
 AliITStrackerV2.cxx:959
 AliITStrackerV2.cxx:960
 AliITStrackerV2.cxx:961
 AliITStrackerV2.cxx:962
 AliITStrackerV2.cxx:963
 AliITStrackerV2.cxx:964
 AliITStrackerV2.cxx:965
 AliITStrackerV2.cxx:966
 AliITStrackerV2.cxx:967
 AliITStrackerV2.cxx:968
 AliITStrackerV2.cxx:969
 AliITStrackerV2.cxx:970
 AliITStrackerV2.cxx:971
 AliITStrackerV2.cxx:972
 AliITStrackerV2.cxx:973
 AliITStrackerV2.cxx:974
 AliITStrackerV2.cxx:975
 AliITStrackerV2.cxx:976
 AliITStrackerV2.cxx:977
 AliITStrackerV2.cxx:978
 AliITStrackerV2.cxx:979
 AliITStrackerV2.cxx:980
 AliITStrackerV2.cxx:981
 AliITStrackerV2.cxx:982
 AliITStrackerV2.cxx:983
 AliITStrackerV2.cxx:984
 AliITStrackerV2.cxx:985
 AliITStrackerV2.cxx:986
 AliITStrackerV2.cxx:987
 AliITStrackerV2.cxx:988
 AliITStrackerV2.cxx:989
 AliITStrackerV2.cxx:990
 AliITStrackerV2.cxx:991
 AliITStrackerV2.cxx:992
 AliITStrackerV2.cxx:993
 AliITStrackerV2.cxx:994
 AliITStrackerV2.cxx:995
 AliITStrackerV2.cxx:996
 AliITStrackerV2.cxx:997
 AliITStrackerV2.cxx:998
 AliITStrackerV2.cxx:999
 AliITStrackerV2.cxx:1000
 AliITStrackerV2.cxx:1001
 AliITStrackerV2.cxx:1002
 AliITStrackerV2.cxx:1003
 AliITStrackerV2.cxx:1004
 AliITStrackerV2.cxx:1005
 AliITStrackerV2.cxx:1006
 AliITStrackerV2.cxx:1007
 AliITStrackerV2.cxx:1008
 AliITStrackerV2.cxx:1009
 AliITStrackerV2.cxx:1010
 AliITStrackerV2.cxx:1011
 AliITStrackerV2.cxx:1012
 AliITStrackerV2.cxx:1013
 AliITStrackerV2.cxx:1014
 AliITStrackerV2.cxx:1015
 AliITStrackerV2.cxx:1016
 AliITStrackerV2.cxx:1017
 AliITStrackerV2.cxx:1018
 AliITStrackerV2.cxx:1019
 AliITStrackerV2.cxx:1020
 AliITStrackerV2.cxx:1021
 AliITStrackerV2.cxx:1022
 AliITStrackerV2.cxx:1023
 AliITStrackerV2.cxx:1024
 AliITStrackerV2.cxx:1025
 AliITStrackerV2.cxx:1026
 AliITStrackerV2.cxx:1027
 AliITStrackerV2.cxx:1028
 AliITStrackerV2.cxx:1029
 AliITStrackerV2.cxx:1030
 AliITStrackerV2.cxx:1031
 AliITStrackerV2.cxx:1032
 AliITStrackerV2.cxx:1033
 AliITStrackerV2.cxx:1034
 AliITStrackerV2.cxx:1035
 AliITStrackerV2.cxx:1036
 AliITStrackerV2.cxx:1037
 AliITStrackerV2.cxx:1038
 AliITStrackerV2.cxx:1039
 AliITStrackerV2.cxx:1040
 AliITStrackerV2.cxx:1041
 AliITStrackerV2.cxx:1042
 AliITStrackerV2.cxx:1043
 AliITStrackerV2.cxx:1044
 AliITStrackerV2.cxx:1045
 AliITStrackerV2.cxx:1046
 AliITStrackerV2.cxx:1047
 AliITStrackerV2.cxx:1048
 AliITStrackerV2.cxx:1049
 AliITStrackerV2.cxx:1050
 AliITStrackerV2.cxx:1051
 AliITStrackerV2.cxx:1052
 AliITStrackerV2.cxx:1053
 AliITStrackerV2.cxx:1054
 AliITStrackerV2.cxx:1055
 AliITStrackerV2.cxx:1056
 AliITStrackerV2.cxx:1057
 AliITStrackerV2.cxx:1058
 AliITStrackerV2.cxx:1059
 AliITStrackerV2.cxx:1060
 AliITStrackerV2.cxx:1061
 AliITStrackerV2.cxx:1062
 AliITStrackerV2.cxx:1063
 AliITStrackerV2.cxx:1064
 AliITStrackerV2.cxx:1065
 AliITStrackerV2.cxx:1066
 AliITStrackerV2.cxx:1067
 AliITStrackerV2.cxx:1068
 AliITStrackerV2.cxx:1069
 AliITStrackerV2.cxx:1070
 AliITStrackerV2.cxx:1071
 AliITStrackerV2.cxx:1072
 AliITStrackerV2.cxx:1073
 AliITStrackerV2.cxx:1074
 AliITStrackerV2.cxx:1075
 AliITStrackerV2.cxx:1076
 AliITStrackerV2.cxx:1077
 AliITStrackerV2.cxx:1078
 AliITStrackerV2.cxx:1079
 AliITStrackerV2.cxx:1080
 AliITStrackerV2.cxx:1081
 AliITStrackerV2.cxx:1082
 AliITStrackerV2.cxx:1083
 AliITStrackerV2.cxx:1084
 AliITStrackerV2.cxx:1085
 AliITStrackerV2.cxx:1086
 AliITStrackerV2.cxx:1087
 AliITStrackerV2.cxx:1088
 AliITStrackerV2.cxx:1089
 AliITStrackerV2.cxx:1090
 AliITStrackerV2.cxx:1091
 AliITStrackerV2.cxx:1092
 AliITStrackerV2.cxx:1093
 AliITStrackerV2.cxx:1094
 AliITStrackerV2.cxx:1095
 AliITStrackerV2.cxx:1096
 AliITStrackerV2.cxx:1097
 AliITStrackerV2.cxx:1098
 AliITStrackerV2.cxx:1099
 AliITStrackerV2.cxx:1100
 AliITStrackerV2.cxx:1101
 AliITStrackerV2.cxx:1102
 AliITStrackerV2.cxx:1103
 AliITStrackerV2.cxx:1104
 AliITStrackerV2.cxx:1105
 AliITStrackerV2.cxx:1106
 AliITStrackerV2.cxx:1107
 AliITStrackerV2.cxx:1108
 AliITStrackerV2.cxx:1109
 AliITStrackerV2.cxx:1110
 AliITStrackerV2.cxx:1111
 AliITStrackerV2.cxx:1112
 AliITStrackerV2.cxx:1113
 AliITStrackerV2.cxx:1114
 AliITStrackerV2.cxx:1115
 AliITStrackerV2.cxx:1116
 AliITStrackerV2.cxx:1117
 AliITStrackerV2.cxx:1118
 AliITStrackerV2.cxx:1119
 AliITStrackerV2.cxx:1120
 AliITStrackerV2.cxx:1121
 AliITStrackerV2.cxx:1122
 AliITStrackerV2.cxx:1123
 AliITStrackerV2.cxx:1124
 AliITStrackerV2.cxx:1125
 AliITStrackerV2.cxx:1126
 AliITStrackerV2.cxx:1127
 AliITStrackerV2.cxx:1128
 AliITStrackerV2.cxx:1129
 AliITStrackerV2.cxx:1130
 AliITStrackerV2.cxx:1131
 AliITStrackerV2.cxx:1132
 AliITStrackerV2.cxx:1133
 AliITStrackerV2.cxx:1134
 AliITStrackerV2.cxx:1135
 AliITStrackerV2.cxx:1136
 AliITStrackerV2.cxx:1137
 AliITStrackerV2.cxx:1138
 AliITStrackerV2.cxx:1139
 AliITStrackerV2.cxx:1140
 AliITStrackerV2.cxx:1141
 AliITStrackerV2.cxx:1142
 AliITStrackerV2.cxx:1143
 AliITStrackerV2.cxx:1144
 AliITStrackerV2.cxx:1145
 AliITStrackerV2.cxx:1146
 AliITStrackerV2.cxx:1147
 AliITStrackerV2.cxx:1148
 AliITStrackerV2.cxx:1149
 AliITStrackerV2.cxx:1150
 AliITStrackerV2.cxx:1151
 AliITStrackerV2.cxx:1152
 AliITStrackerV2.cxx:1153
 AliITStrackerV2.cxx:1154
 AliITStrackerV2.cxx:1155
 AliITStrackerV2.cxx:1156
 AliITStrackerV2.cxx:1157
 AliITStrackerV2.cxx:1158
 AliITStrackerV2.cxx:1159
 AliITStrackerV2.cxx:1160
 AliITStrackerV2.cxx:1161
 AliITStrackerV2.cxx:1162