+Int_t AliTPCtracker::RefitInward(AliESDEvent* event) {
+ //
+ // The function propagates tracks throught TPC inward
+ // using already associated clusters.
+ // The clusters must be already loaded !
+ //
+
+ Int_t nTracks = event->GetNumberOfTracks();
+ Int_t nRefited = 0;
+
+ for (Int_t i = 0; i < nTracks; i++) {
+ AliESDtrack* track = event->GetTrack(i);
+ ULong_t status = track->GetStatus();
+
+ if ( (status & AliESDtrack::kTPCrefit) != 0 ) continue;
+ if ( (status & AliESDtrack::kTPCout ) == 0 ) continue;
+
+ if ( (status & AliESDtrack::kTRDout ) != 0 )
+ if ( (status & AliESDtrack::kTRDrefit ) == 0 ) continue;
+
+ AliTPCtrack* tpcTrack = new AliTPCtrack(*track);
+ AliTPCseed* seed=new AliTPCseed(*tpcTrack); seed->ResetClusters();
+
+ if ( (status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(10.);
+
+ fSectors = fOuterSec;
+
+ Int_t res = FollowRefitInward(seed, tpcTrack);
+ UseClusters(seed);
+ Int_t nc = seed->GetNumberOfClusters();
+
+ fSectors = fInnerSec;
+
+ res = FollowRefitInward(seed, tpcTrack);
+ UseClusters(seed, nc);
+
+ if (res) {
+ seed->PropagateTo(fParam->GetInnerRadiusLow());
+ seed->SetLabel(tpcTrack->GetLabel());
+ seed->SetdEdx(tpcTrack->GetdEdx());
+ track->UpdateTrackParams(seed, AliESDtrack::kTPCrefit);
+ nRefited++;
+ }
+
+ delete seed;
+ delete tpcTrack;
+ }
+
+ Info("RefitInward","Number of refitted tracks : %d",nRefited);
+
+ return 0;
+}
+
+Int_t AliTPCtracker::PropagateBack(AliESDEvent *event) {