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$ */

//-----------------------------------------------------------------------------
/// \class AliMUONTrackReconstructorK
///
/// MUON track reconstructor using the kalman method
///
/// This class contains as data:
/// - the parameters for the track reconstruction
///
/// It contains as methods, among others:
/// - MakeTracks to build the tracks
///
//-----------------------------------------------------------------------------

#include "AliMUONTrackReconstructorK.h"

#include "AliMUONConstants.h"
#include "AliMUONVCluster.h"
#include "AliMUONVClusterServer.h"
#include "AliMUONVClusterStore.h"
#include "AliMUONTrack.h"
#include "AliMUONTrackParam.h"
#include "AliMUONTrackExtrap.h"
#include "AliMUONRecoParam.h"
#include "AliMUONGeometryTransformer.h"

#include "AliMpArea.h"

#include "AliLog.h"

#include <Riostream.h>
#include <TMath.h>
#include <TMatrixD.h>
#include <TClonesArray.h>

using std::endl;
using std::cout;
/// \cond CLASSIMP
ClassImp(AliMUONTrackReconstructorK) // Class implementation in ROOT context
/// \endcond

  //__________________________________________________________________________
AliMUONTrackReconstructorK::AliMUONTrackReconstructorK(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
						       const AliMUONGeometryTransformer* transformer)
  : AliMUONVTrackReconstructor(recoParam, clusterServer, transformer)
{
  /// Constructor
}

  //__________________________________________________________________________
AliMUONTrackReconstructorK::~AliMUONTrackReconstructorK()
{
/// Destructor
} 

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::MakeTrackCandidates(AliMUONVClusterStore& clusterStore)
{
  /// To make track candidates (assuming linear propagation if AliMUONRecoParam::MakeTrackCandidatesFast() return kTRUE):
  /// Start with segments station(1..) 4 or 5 then follow track in station 5 or 4.
  /// Good candidates are made of at least three clusters if both stations are requested (two otherwise).
  /// Keep only best candidates or all of them according to the flag AliMUONRecoParam::TrackAllTracks().
  
  TClonesArray *segments;
  AliMUONObjectPair *segment;
  AliMUONTrack *track;
  Int_t iCandidate = 0;
  Bool_t clusterFound;

  AliDebug(1,"Enter MakeTrackCandidates");

  // Unless we're doing combined tracking, we'll clusterize all stations at once
  Int_t firstChamber(0);
  Int_t lastChamber(9);
  
  if (GetRecoParam()->CombineClusterTrackReco()) {
    // ... Here's the exception : ask the clustering to reconstruct
    // clusters *only* in station 4 and 5 for combined tracking
    firstChamber = 6;
  }
  
  for (Int_t i = firstChamber; i <= lastChamber; ++i ) 
  {
    if (fClusterServer && GetRecoParam()->UseChamber(i)) fClusterServer->Clusterize(i, clusterStore, AliMpArea(), GetRecoParam());
  }
  
  // Loop over stations(1..) 5 and 4 and make track candidates
  for (Int_t istat=4; istat>=3; istat--) {
    
    // Make segments in the station
    segments = MakeSegmentsBetweenChambers(clusterStore, 2*istat, 2*istat+1);
    
    // Loop over segments
    for (Int_t iSegment=0; iSegment<segments->GetEntriesFast(); iSegment++) {
      AliDebug(1,Form("Making primary candidate(1..) %d",++iCandidate));
      segment = (AliMUONObjectPair*) segments->UncheckedAt(iSegment);
      
      // Transform segments to tracks and put them at the end of fRecTracksPtr
      track = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(segment,GetRecoParam()->GetBendingVertexDispersion());
      fNRecTracks++;
      
      // Look for compatible cluster(s) in the other station
      if (GetRecoParam()->MakeTrackCandidatesFast()) clusterFound = FollowLinearTrackInStation(*track, clusterStore, 7-istat);
      else clusterFound = FollowTrackInStation(*track, clusterStore, 7-istat);
      
      // Remove track if no cluster found on a requested station
      // or abort tracking if there are too many candidates
      if (GetRecoParam()->RequestStation(7-istat)) {
	if (!clusterFound) {
	  fRecTracksPtr->Remove(track);
	  fNRecTracks--;
	} else if (fNRecTracks > GetRecoParam()->GetMaxTrackCandidates()) {
	  AliError(Form("Too many track candidates (%d tracks). Stop tracking.", fNRecTracks));
	  return kFALSE;
	}
      } else {
	if ((fNRecTracks + segments->GetEntriesFast() - iSegment - 1) > GetRecoParam()->GetMaxTrackCandidates()) {
	  AliError(Form("Too many track candidates (%d tracks). Stop tracking.", fNRecTracks + segments->GetEntriesFast() - iSegment - 1));
	  return kFALSE;
	}
      }
      
    }
    
  }
  
  AliDebug(1,Form("Number of candidates before cleaning = %d",fNRecTracks));
  
  // Keep all different tracks if required
  if (GetRecoParam()->TrackAllTracks()) RemoveIdenticalTracks();
  
  // Retrace tracks using Kalman filter and select them if needed
  Int_t nCurrentTracks = fRecTracksPtr->GetLast()+1;
  for (Int_t iRecTrack = 0; iRecTrack < nCurrentTracks; iRecTrack++) {
    track = (AliMUONTrack*) fRecTracksPtr->UncheckedAt(iRecTrack);
    
    // skip empty slots
    if(!track) continue;
    
    // retrace tracks using Kalman filter and remove the ones for which extrap failed or that are out of limits
    if (!RetraceTrack(*track,kTRUE) || !IsAcceptable(*((AliMUONTrackParam*)track->GetTrackParamAtCluster()->First()))) {
      fRecTracksPtr->Remove(track);
      fNRecTracks--;
    }
    
  }
  
  // Keep only the best tracks if required
  if (!GetRecoParam()->TrackAllTracks()) RemoveDoubleTracks();
  else fRecTracksPtr->Compress();
  
  AliDebug(1,Form("Number of good candidates = %d",fNRecTracks));
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore)
{
  /// To make extra track candidates assuming linear propagation:
  /// clustering is supposed to be already done
  /// Start with segments made of 1 cluster in each of the stations 4 and 5 then follow track in remaining chambers.
  /// Good candidates are made of at least three clusters if both stations are requested (two otherwise).
  /// Keep only best candidates or all of them according to the flag fgkTrackAllTracks.
  
  TClonesArray *segments;
  AliMUONObjectPair *segment;
  AliMUONTrack *track;
  Int_t iCandidate = 0, iCurrentTrack, nCurrentTracks;
  Int_t initialNRecTracks = fNRecTracks;
  Bool_t clusterFound;
  
  AliDebug(1,"Enter MakeMoreTrackCandidates");
  
  // Double loop over chambers in stations(1..) 4 and 5 to make track candidates
  for (Int_t ich1 = 6; ich1 <= 7; ich1++) {
    for (Int_t ich2 = 8; ich2 <= 9; ich2++) {
      
      // Make segments between ch1 and ch2
      segments = MakeSegmentsBetweenChambers(clusterStore, ich1, ich2);
      
      /// Remove segments already attached to a track
      RemoveUsedSegments(*segments);
      
      // Loop over segments
      for (Int_t iSegment=0; iSegment<segments->GetEntriesFast(); iSegment++) {
	AliDebug(1,Form("Making primary candidate(1..) %d",++iCandidate));
	segment = (AliMUONObjectPair*) segments->UncheckedAt(iSegment);
	
	// Transform segments to tracks and put them at the end of fRecTracksPtr
	iCurrentTrack = fRecTracksPtr->GetLast()+1;
	track = new ((*fRecTracksPtr)[iCurrentTrack]) AliMUONTrack(segment,GetRecoParam()->GetBendingVertexDispersion());
	fNRecTracks++;
	
	// Look for compatible cluster(s) in the second chamber of station 5
	clusterFound = FollowLinearTrackInChamber(*track, clusterStore, 17-ich2);
	
	// skip the original track in case it has been removed
	if (GetRecoParam()->TrackAllTracks() && clusterFound) iCurrentTrack++;
	
	// loop over every new tracks
	nCurrentTracks = fRecTracksPtr->GetLast()+1;
	while (iCurrentTrack < nCurrentTracks) {
	  track = (AliMUONTrack*) fRecTracksPtr->UncheckedAt(iCurrentTrack);
	  
	  // Look for compatible cluster(s) in the second chamber of station 4
	  FollowLinearTrackInChamber(*track, clusterStore, 13-ich1);
	  
	  iCurrentTrack++;
	}
	
	// abort tracking if there are too many candidates
	if ((fNRecTracks + segments->GetEntriesFast() - iSegment - 1) > GetRecoParam()->GetMaxTrackCandidates()) {
	  AliError(Form("Too many track candidates (%d tracks). Stop tracking.", fNRecTracks + segments->GetEntriesFast() - iSegment - 1));
	  return kFALSE;
	}
	
      }
      
    }
  }
  
  AliDebug(1,Form("Number of candidates before cleaning = %d",fNRecTracks));
  
  // Retrace tracks using Kalman filter (also compute track chi2) and select them
  nCurrentTracks = fRecTracksPtr->GetLast()+1;
  for (Int_t iRecTrack = initialNRecTracks; iRecTrack < nCurrentTracks; iRecTrack++) {
    track = (AliMUONTrack*) fRecTracksPtr->UncheckedAt(iRecTrack);
    
    // skip empty slots
    if(!track) continue;
    
    // retrace tracks using Kalman filter and remove the ones for which extrap failed or that are out of limits
    if (!RetraceTrack(*track,kTRUE) || !IsAcceptable(*((AliMUONTrackParam*)track->GetTrackParamAtCluster()->First()))) {
      fRecTracksPtr->Remove(track);
      fNRecTracks--;
    }
    
  }
  
  // Keep only the best tracks if required
  if (!GetRecoParam()->TrackAllTracks()) RemoveDoubleTracks();
  else fRecTracksPtr->Compress();
  
  AliDebug(1,Form("Number of good candidates = %d",fNRecTracks));
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::RetraceTrack(AliMUONTrack &trackCandidate, Bool_t resetSeed)
{
  /// Re-run the kalman filter from the most downstream cluster to the most uptream one
  /// Return kFALSE in case of failure (i.e. extrapolation problem)
  AliDebug(1,"Enter RetraceTrack");
  
  AliMUONTrackParam* lastTrackParam = (AliMUONTrackParam*) trackCandidate.GetTrackParamAtCluster()->Last();
  
  // Reset the "seed" (= track parameters and their covariances at last cluster) if required
  if (resetSeed) {
    
    // parameters at last cluster
    AliMUONVCluster* cluster2 = lastTrackParam->GetClusterPtr();
    Double_t x2 = cluster2->GetX();
    Double_t y2 = cluster2->GetY();
    Double_t z2 = cluster2->GetZ();
    
    // parameters at last but one cluster
    AliMUONTrackParam* previousTrackParam = (AliMUONTrackParam*) trackCandidate.GetTrackParamAtCluster()->Before(lastTrackParam);
    AliMUONVCluster* cluster1 = previousTrackParam->GetClusterPtr();
    // make sure it is on the previous chamber (can have 2 clusters in the same chamber after "ComplementTrack")
    if (cluster2->GetChamberId() == cluster1->GetChamberId()) {
      previousTrackParam = (AliMUONTrackParam*) trackCandidate.GetTrackParamAtCluster()->Before(previousTrackParam);
      cluster1 = previousTrackParam->GetClusterPtr();
    }
    Double_t x1 = cluster1->GetX();
    Double_t y1 = cluster1->GetY();
    Double_t z1 = cluster1->GetZ();
    
    // reset track parameters
    Double_t dZ = z1 - z2;
    lastTrackParam->SetNonBendingCoor(x2);
    lastTrackParam->SetBendingCoor(y2);
    lastTrackParam->SetZ(z2);
    lastTrackParam->SetNonBendingSlope((x1 - x2) / dZ);
    lastTrackParam->SetBendingSlope((y1 - y2) / dZ);
    Double_t bendingImpact = y2 - z2 * lastTrackParam->GetBendingSlope();
    Double_t inverseBendingMomentum = 1. / AliMUONTrackExtrap::GetBendingMomentumFromImpactParam(bendingImpact);
    lastTrackParam->SetInverseBendingMomentum(inverseBendingMomentum);
    
    // => Reset track parameter covariances at last cluster (as if the other clusters did not exist)
    TMatrixD lastParamCov(5,5);
    lastParamCov.Zero();
    // Non bending plane
    lastParamCov(0,0) = cluster2->GetErrX2();
    lastParamCov(0,1) = - cluster2->GetErrX2() / dZ;
    lastParamCov(1,0) = lastParamCov(0,1);
    lastParamCov(1,1) = ( 1000. * cluster1->GetErrX2() + cluster2->GetErrX2() ) / dZ / dZ;
    // Bending plane
    lastParamCov(2,2) = cluster2->GetErrY2();
    lastParamCov(2,3) = - cluster2->GetErrY2() / dZ;
    lastParamCov(3,2) = lastParamCov(2,3);
    lastParamCov(3,3) = ( 1000. * cluster1->GetErrY2() + cluster2->GetErrY2() ) / dZ / dZ;
    // Inverse bending momentum (vertex resolution + bending slope resolution + 10% error on dipole parameters+field)
    if (AliMUONTrackExtrap::IsFieldON()) {
      lastParamCov(4,4) = ((GetRecoParam()->GetBendingVertexDispersion() *
			    GetRecoParam()->GetBendingVertexDispersion() +
			    (z1 * z1 * cluster2->GetErrY2() + z2 * z2 * 1000. * cluster1->GetErrY2()) / dZ / dZ) /
			   bendingImpact / bendingImpact + 0.1 * 0.1) * inverseBendingMomentum * inverseBendingMomentum;
      lastParamCov(2,4) = z1 * cluster2->GetErrY2() * inverseBendingMomentum / bendingImpact / dZ;
      lastParamCov(4,2) = lastParamCov(2,4);
      lastParamCov(3,4) = - (z1 * cluster2->GetErrY2() + z2 * 1000. * cluster1->GetErrY2()) *
      inverseBendingMomentum / bendingImpact / dZ / dZ;
      lastParamCov(4,3) = lastParamCov(3,4);
    } else lastParamCov(4,4) = inverseBendingMomentum*inverseBendingMomentum;
    lastTrackParam->SetCovariances(lastParamCov);
    
    // Reset the track chi2
    lastTrackParam->SetTrackChi2(0.);
  
  }
  
  // Redo the tracking
  return RetracePartialTrack(trackCandidate, lastTrackParam);
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::RetracePartialTrack(AliMUONTrack &trackCandidate, const AliMUONTrackParam* startingTrackParam)
{
  /// Re-run the kalman filter from the cluster attached to startingTrackParam to the most uptream cluster
  /// Return kFALSE in case of failure (i.e. extrapolation problem)
  AliDebug(1,"Enter RetracePartialTrack");
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
    cout << "RetracePartialTrack: track chi2 before re-tracking: " << trackCandidate.GetGlobalChi2() << endl;
  }
  
  // Reset the track chi2
  trackCandidate.SetGlobalChi2(startingTrackParam->GetTrackChi2());
  
  // loop over attached clusters until the first one and recompute track parameters and covariances using kalman filter
  Bool_t extrapStatus = kTRUE;
  Int_t expectedChamber = startingTrackParam->GetClusterPtr()->GetChamberId() - 1;
  Int_t currentChamber;
  Double_t addChi2TrackAtCluster;
  AliMUONTrackParam* trackParamAtCluster = (AliMUONTrackParam*) trackCandidate.GetTrackParamAtCluster()->Before(startingTrackParam); 
  while (trackParamAtCluster) {
    
    // reset track parameters and their covariances
    trackParamAtCluster->SetParameters(startingTrackParam->GetParameters());
    trackParamAtCluster->SetZ(startingTrackParam->GetZ());
    trackParamAtCluster->SetCovariances(startingTrackParam->GetCovariances());
    
    // add MCS effect
    AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber+1),-1.);
    
    // reset propagator for smoother
    if (GetRecoParam()->UseSmoother()) trackParamAtCluster->ResetPropagator();
    
    // add MCS in missing chambers if any
    currentChamber = trackParamAtCluster->GetClusterPtr()->GetChamberId();
    while (currentChamber < expectedChamber) {
      // extrapolation to the missing chamber (update the propagator)
      if (!AliMUONTrackExtrap::ExtrapToZCov(trackParamAtCluster, AliMUONConstants::DefaultChamberZ(expectedChamber),
					    GetRecoParam()->UseSmoother())) extrapStatus = kFALSE;
      // add MCS effect
      AliMUONTrackExtrap::AddMCSEffect(trackParamAtCluster,AliMUONConstants::ChamberThicknessInX0(expectedChamber),-1.);
      expectedChamber--;
    }
    
    // extrapolation to the plane of the cluster attached to the current trackParamAtCluster (update the propagator)
    if (!AliMUONTrackExtrap::ExtrapToZCov(trackParamAtCluster, trackParamAtCluster->GetClusterPtr()->GetZ(),
					  GetRecoParam()->UseSmoother())) extrapStatus = kFALSE;
    
    if (GetRecoParam()->UseSmoother()) {
      // save extrapolated parameters for smoother
      trackParamAtCluster->SetExtrapParameters(trackParamAtCluster->GetParameters());
      
      // save extrapolated covariance matrix for smoother
      trackParamAtCluster->SetExtrapCovariances(trackParamAtCluster->GetCovariances());
    }
    
    // Compute new track parameters using kalman filter
    addChi2TrackAtCluster = RunKalmanFilter(*trackParamAtCluster);
    
    // Update the track chi2
    trackCandidate.SetGlobalChi2(trackCandidate.GetGlobalChi2() + addChi2TrackAtCluster);
    trackParamAtCluster->SetTrackChi2(trackCandidate.GetGlobalChi2());
    
    // prepare next step
    expectedChamber = currentChamber - 1;
    startingTrackParam = trackParamAtCluster;
    trackParamAtCluster = (AliMUONTrackParam*) (trackCandidate.GetTrackParamAtCluster()->Before(startingTrackParam)); 
  }
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
    cout << "RetracePartialTrack: track chi2 after re-tracking: " << trackCandidate.GetGlobalChi2() << endl;
  }
  
  // set global chi2 to max value in case of problem during track extrapolation
  if (!extrapStatus) trackCandidate.SetGlobalChi2(2.*AliMUONTrack::MaxChi2());
  return extrapStatus;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::FollowTracks(AliMUONVClusterStore& clusterStore)
{
  /// Follow tracks in stations(1..) 3, 2 and 1
  AliDebug(1,"Enter FollowTracks");
  
  AliMUONTrack *track;
  Int_t currentNRecTracks;
  
  for (Int_t station = 2; station >= 0; station--) {
    
    // Save the actual number of reconstructed track in case of
    // tracks are added or suppressed during the tracking procedure
    // !! Do not compress fRecTracksPtr until the end of the loop over tracks !!
    currentNRecTracks = fNRecTracks;
    
    for (Int_t iRecTrack = 0; iRecTrack <currentNRecTracks; iRecTrack++) {
      AliDebug(1,Form("FollowTracks: track candidate(1..) %d", iRecTrack+1));
      
      track = (AliMUONTrack*) fRecTracksPtr->UncheckedAt(iRecTrack);
      
      // Look for compatible cluster(s) in station(0..) "station"
      if (!FollowTrackInStation(*track, clusterStore, station)) {
	
	// Try to recover track if required
	if (GetRecoParam()->RecoverTracks()) {
	  
	  // work on a copy of the track if this station is not required
	  // to keep the case where no cluster is reconstructed as a possible candidate
	  if (!GetRecoParam()->RequestStation(station)) {
	    track = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(*track);
	    fNRecTracks++;
	  }
	  
	  // try to recover
	  if (!RecoverTrack(*track, clusterStore, station)) {
	    // remove track if no cluster found
	    fRecTracksPtr->Remove(track);
	    fNRecTracks--;
	  }
	  
	} else if (GetRecoParam()->RequestStation(station)) {
	  // remove track if no cluster found
	  fRecTracksPtr->Remove(track);
	  fNRecTracks--;
	} 
	
      }
      
      // abort tracking if there are too many candidates
      if (GetRecoParam()->RequestStation(station)) {
	if (fNRecTracks > GetRecoParam()->GetMaxTrackCandidates()) {
	  AliError(Form("Too many track candidates (%d tracks). Stop tracking.", fNRecTracks));
	  return kFALSE;
	}
      } else {
	if ((fNRecTracks + currentNRecTracks - iRecTrack - 1) > GetRecoParam()->GetMaxTrackCandidates()) {
	  AliError(Form("Too many track candidates (%d tracks). Stop tracking.", fNRecTracks + currentNRecTracks - iRecTrack - 1));
	  return kFALSE;
	}
      }
      
    }
    
    fRecTracksPtr->Compress(); // this is essential before checking tracks
    
    AliDebug(1,Form("In stations(1..) %d: Number of candidates before cleaning = %d",station+1,fNRecTracks));
    
    // Keep only the best tracks if required
    if (!GetRecoParam()->TrackAllTracks()) RemoveDoubleTracks();
    
    AliDebug(1,Form("In stations(1..) %d: Number of good candidates = %d",station+1,fNRecTracks));
    
  }
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber)
{
  /// Follow trackCandidate in chamber(0..) nextChamber and search for compatible cluster(s)
  /// Keep all possibilities or only the best one(s) according to the flag fgkTrackAllTracks:
  /// kTRUE:  duplicate "trackCandidate" if there are several possibilities and add the new tracks at the end of
  ///         fRecTracksPtr to avoid conficts with other track candidates at this current stage of the tracking procedure.
  ///         Remove the obsolete "trackCandidate" at the end.
  /// kFALSE: add only the best cluster(s) to the "trackCandidate". Try to add a couple of clusters in priority.
  /// return kTRUE if new cluster(s) have been found (otherwise return kFALSE)
  AliDebug(1,Form("Enter FollowTrackInChamber(1..) %d", nextChamber+1));
  
  Double_t chi2OfCluster;
  Double_t maxChi2OfCluster = 2. * GetRecoParam()->GetSigmaCutForTracking() *
				   GetRecoParam()->GetSigmaCutForTracking(); // 2 because 2 quantities in chi2
  Double_t addChi2TrackAtCluster;
  Double_t bestAddChi2TrackAtCluster = AliMUONTrack::MaxChi2();
  Bool_t foundOneCluster = kFALSE;
  AliMUONTrack *newTrack = 0x0;
  AliMUONVCluster *cluster;
  AliMUONTrackParam extrapTrackParamAtCh;
  AliMUONTrackParam extrapTrackParamAtCluster;
  AliMUONTrackParam bestTrackParamAtCluster;
  
  // Get track parameters according to the propagation direction
  if (nextChamber > 7) extrapTrackParamAtCh = *(AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->Last();
  else extrapTrackParamAtCh = *(AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->First();
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
    cout<<endl<<"Track parameters and covariances at first cluster:"<<endl;
    extrapTrackParamAtCh.GetParameters().Print();
    extrapTrackParamAtCh.GetCovariances().Print();
  }
  
  // Add MCS effect
  Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId();
  AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.);
  
  // reset propagator for smoother
  if (GetRecoParam()->UseSmoother()) extrapTrackParamAtCh.ResetPropagator();
  
  // Add MCS in the missing chamber(s) if any
  while (currentChamber > nextChamber + 1) {
    // extrapolation to the missing chamber
    currentChamber--;
    if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber),
					  GetRecoParam()->UseSmoother())) return kFALSE;
    // add MCS effect
    AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.);
  }
  
  //Extrapolate trackCandidate to chamber
  if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(nextChamber),
					GetRecoParam()->UseSmoother())) return kFALSE;
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
    cout<<endl<<"Track parameters and covariances at first cluster extrapolated to z = "<<AliMUONConstants::DefaultChamberZ(nextChamber)<<":"<<endl;
    extrapTrackParamAtCh.GetParameters().Print();
    extrapTrackParamAtCh.GetCovariances().Print();
  }
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
    cout << "FollowTrackInChamber: look for clusters in chamber(1..): " << nextChamber+1 << endl;
  }
  
  // Ask the clustering to reconstruct new clusters around the track position in the current chamber
  // except for station 4 and 5 that are already entirely clusterized
  if (GetRecoParam()->CombineClusterTrackReco()) {
    if (nextChamber < 6) AskForNewClustersInChamber(extrapTrackParamAtCh, clusterStore, nextChamber);
  }
  
  // Create iterators to loop over clusters in both chambers
  TIter next(clusterStore.CreateChamberIterator(nextChamber,nextChamber));
  
  // look for candidates in chamber
  while ( ( cluster = static_cast<AliMUONVCluster*>(next()) ) ) {
    
    // try to add the current cluster fast
    if (!TryOneClusterFast(extrapTrackParamAtCh, cluster)) continue;
    
    // try to add the current cluster accuratly
    chi2OfCluster = TryOneCluster(extrapTrackParamAtCh, cluster, extrapTrackParamAtCluster,
				  GetRecoParam()->UseSmoother());
    
    // if good chi2 then consider to add cluster
    if (chi2OfCluster < maxChi2OfCluster) {
      
      if (GetRecoParam()->UseSmoother()) {
	// save extrapolated parameters for smoother
	extrapTrackParamAtCluster.SetExtrapParameters(extrapTrackParamAtCluster.GetParameters());
	
	// save extrapolated covariance matrix for smoother
	extrapTrackParamAtCluster.SetExtrapCovariances(extrapTrackParamAtCluster.GetCovariances());
      }
      
      // Compute new track parameters including new cluster using kalman filter
      addChi2TrackAtCluster = RunKalmanFilter(extrapTrackParamAtCluster);
      
      // skip track out of limits
      if (!IsAcceptable(extrapTrackParamAtCluster)) continue;
      
      // remember a cluster was found
      foundOneCluster = kTRUE;
      
      // Printout for debuging
      if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	cout << "FollowTrackInChamber: found one cluster in chamber(1..): " << nextChamber+1
	<< " (Chi2 = " << chi2OfCluster << ")" << endl;
	cluster->Print();
      }
      
      if (GetRecoParam()->TrackAllTracks()) {
	// copy trackCandidate into a new track put at the end of fRecTracksPtr and add the new cluster
	newTrack = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(trackCandidate);
	UpdateTrack(*newTrack,extrapTrackParamAtCluster,addChi2TrackAtCluster);
	fNRecTracks++;
	
	// Printout for debuging
	if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	  cout << "FollowTrackInChamber: added one cluster in chamber(1..): " << nextChamber+1 << endl;
	  if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
	}
	
      } else if (addChi2TrackAtCluster < bestAddChi2TrackAtCluster) {
	// keep track of the best cluster
	bestAddChi2TrackAtCluster = addChi2TrackAtCluster;
	bestTrackParamAtCluster = extrapTrackParamAtCluster;
      }
      
    }
    
  }
  
  // fill out the best track if required else clean up the fRecTracksPtr array
  if (!GetRecoParam()->TrackAllTracks()) {
    if (foundOneCluster) {
      UpdateTrack(trackCandidate,bestTrackParamAtCluster,bestAddChi2TrackAtCluster);
      
      // Printout for debuging
      if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
        cout << "FollowTrackInChamber: added the best cluster in chamber(1..): " << bestTrackParamAtCluster.GetClusterPtr()->GetChamberId()+1 << endl;
        if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
      }
      
    } else return kFALSE;
    
  } else if (foundOneCluster) {
    
    // remove obsolete track
    fRecTracksPtr->Remove(&trackCandidate);
    fNRecTracks--;
    
  } else return kFALSE;
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation)
{
  /// Follow trackCandidate in station(0..) nextStation and search for compatible cluster(s)
  /// Keep all possibilities or only the best one(s) according to the flag fgkTrackAllTracks:
  /// kTRUE:  duplicate "trackCandidate" if there are several possibilities and add the new tracks at the end of
  ///         fRecTracksPtr to avoid conficts with other track candidates at this current stage of the tracking procedure.
  ///         Remove the obsolete "trackCandidate" at the end.
  /// kFALSE: add only the best cluster(s) to the "trackCandidate". Try to add a couple of clusters in priority.
  /// return kTRUE if new cluster(s) have been found (otherwise return kFALSE)
  AliDebug(1,Form("Enter FollowTrackInStation(1..) %d", nextStation+1));
  
  // Order the chamber according to the propagation direction (tracking starts with chamber 2):
  // - nextStation == station(1...) 5 => forward propagation
  // - nextStation < station(1...) 5 => backward propagation
  Int_t ch1, ch2;
  if (nextStation==4) {
    ch1 = 2*nextStation+1;
    ch2 = 2*nextStation;
  } else {
    ch1 = 2*nextStation;
    ch2 = 2*nextStation+1;
  }
  
  Double_t chi2OfCluster;
  Double_t maxChi2OfCluster = 2. * GetRecoParam()->GetSigmaCutForTracking() *
				   GetRecoParam()->GetSigmaCutForTracking(); // 2 because 2 quantities in chi2
  Double_t addChi2TrackAtCluster1;
  Double_t addChi2TrackAtCluster2;
  Double_t bestAddChi2TrackAtCluster1 = AliMUONTrack::MaxChi2();
  Double_t bestAddChi2TrackAtCluster2 = AliMUONTrack::MaxChi2();
  Bool_t foundOneCluster = kFALSE;
  Bool_t foundTwoClusters = kFALSE;
  AliMUONTrack *newTrack = 0x0;
  AliMUONVCluster *clusterCh1, *clusterCh2;
  AliMUONTrackParam extrapTrackParam;
  AliMUONTrackParam extrapTrackParamAtCh;
  AliMUONTrackParam extrapTrackParamAtCluster1;
  AliMUONTrackParam extrapTrackParamAtCluster2;
  AliMUONTrackParam bestTrackParamAtCluster1;
  AliMUONTrackParam bestTrackParamAtCluster2;
  
  // Get track parameters according to the propagation direction
  if (nextStation==4) extrapTrackParamAtCh = *(AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->Last();
  else extrapTrackParamAtCh = *(AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->First();
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
    cout<<endl<<"Track parameters and covariances at first cluster:"<<endl;
    extrapTrackParamAtCh.GetParameters().Print();
    extrapTrackParamAtCh.GetCovariances().Print();
  }
  
  // Add MCS effect
  Int_t currentChamber = extrapTrackParamAtCh.GetClusterPtr()->GetChamberId();
  AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.);
  
  // reset propagator for smoother
  if (GetRecoParam()->UseSmoother()) extrapTrackParamAtCh.ResetPropagator();
  
  // Add MCS in the missing chamber(s) if any
  while (ch1 < ch2 && currentChamber > ch2 + 1) {
    // extrapolation to the missing chamber
    currentChamber--;
    if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(currentChamber),
					  GetRecoParam()->UseSmoother())) return kFALSE;
    // add MCS effect
    AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(currentChamber),-1.);
  }
  
  //Extrapolate trackCandidate to chamber "ch2"
  if (!AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(ch2),
					GetRecoParam()->UseSmoother())) return kFALSE;
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
    cout<<endl<<"Track parameters and covariances at first cluster extrapolated to z = "<<AliMUONConstants::DefaultChamberZ(ch2)<<":"<<endl;
    extrapTrackParamAtCh.GetParameters().Print();
    extrapTrackParamAtCh.GetCovariances().Print();
  }
  
  // Printout for debuging
  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
    cout << "FollowTrackInStation: look for clusters in chamber(1..): " << ch2+1 << endl;
  }
  
  // Ask the clustering to reconstruct new clusters around the track position in the current station
  // except for station 4 and 5 that are already entirely clusterized
  if (GetRecoParam()->CombineClusterTrackReco()) {
    if (nextStation < 3) AskForNewClustersInStation(extrapTrackParamAtCh, clusterStore, nextStation);
  }
  
  Int_t nClusters = clusterStore.GetSize();
  Bool_t *clusterCh1Used = new Bool_t[nClusters];
  for (Int_t i = 0; i < nClusters; i++) clusterCh1Used[i] = kFALSE;
  Int_t iCluster1;
  
  // Create iterators to loop over clusters in both chambers
  TIter nextInCh1(clusterStore.CreateChamberIterator(ch1,ch1));
  TIter nextInCh2(clusterStore.CreateChamberIterator(ch2,ch2));
  
  // look for candidates in chamber 2
  while ( ( clusterCh2 = static_cast<AliMUONVCluster*>(nextInCh2()) ) ) {
    
    // try to add the current cluster fast
    if (!TryOneClusterFast(extrapTrackParamAtCh, clusterCh2)) continue;
    
    // try to add the current cluster accuratly
    chi2OfCluster = TryOneCluster(extrapTrackParamAtCh, clusterCh2, extrapTrackParamAtCluster2,
				  GetRecoParam()->UseSmoother());
    
    // if good chi2 then try to attach a cluster in the other chamber too
    if (chi2OfCluster < maxChi2OfCluster) {
      
      if (GetRecoParam()->UseSmoother()) {
        // save extrapolated parameters for smoother
        extrapTrackParamAtCluster2.SetExtrapParameters(extrapTrackParamAtCluster2.GetParameters());
        
        // save extrapolated covariance matrix for smoother
        extrapTrackParamAtCluster2.SetExtrapCovariances(extrapTrackParamAtCluster2.GetCovariances());
      }
      
      // Compute new track parameters including "clusterCh2" using kalman filter
      addChi2TrackAtCluster2 = RunKalmanFilter(extrapTrackParamAtCluster2);
      
      // skip track out of limits
      if (!IsAcceptable(extrapTrackParamAtCluster2)) continue;
      
      // Printout for debuging
      if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
        cout << "FollowTrackInStation: found one cluster in chamber(1..): " << ch2+1
	<< " (Chi2 = " << chi2OfCluster << ")" << endl;
	clusterCh2->Print();
        cout << "                      look for second clusters in chamber(1..): " << ch1+1 << " ..." << endl;
      }
      
      // copy new track parameters for next step
      extrapTrackParam = extrapTrackParamAtCluster2;
      
      // add MCS effect
      AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParam,AliMUONConstants::ChamberThicknessInX0(ch2),-1.);
      
      // reset propagator for smoother
      if (GetRecoParam()->UseSmoother()) extrapTrackParam.ResetPropagator();
      
      //Extrapolate track parameters to chamber "ch1"
      Bool_t normalExtrap = AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParam, AliMUONConstants::DefaultChamberZ(ch1),
							     GetRecoParam()->UseSmoother());
      
      // reset cluster iterator of chamber 1
      nextInCh1.Reset();
      iCluster1 = -1;
      
      // look for second candidates in chamber 1
      Bool_t foundSecondCluster = kFALSE;
      if (normalExtrap) while ( ( clusterCh1 = static_cast<AliMUONVCluster*>(nextInCh1()) ) ) {
	iCluster1++;
	
    	// try to add the current cluster fast
    	if (!TryOneClusterFast(extrapTrackParam, clusterCh1)) continue;
    	
    	// try to add the current cluster accuratly
    	chi2OfCluster = TryOneCluster(extrapTrackParam, clusterCh1, extrapTrackParamAtCluster1,
				      GetRecoParam()->UseSmoother());
    	
	// if good chi2 then consider to add the 2 clusters to the "trackCandidate"
	if (chi2OfCluster < maxChi2OfCluster) {
          
          if (GetRecoParam()->UseSmoother()) {
            // save extrapolated parameters for smoother
            extrapTrackParamAtCluster1.SetExtrapParameters(extrapTrackParamAtCluster1.GetParameters());
            
            // save extrapolated covariance matrix for smoother
            extrapTrackParamAtCluster1.SetExtrapCovariances(extrapTrackParamAtCluster1.GetCovariances());
          }
          
          // Compute new track parameters including "clusterCh1" using kalman filter
          addChi2TrackAtCluster1 = RunKalmanFilter(extrapTrackParamAtCluster1);
          
	  // skip track out of limits
	  if (!IsAcceptable(extrapTrackParamAtCluster1)) continue;
	  
	  // remember a second cluster was found
	  foundSecondCluster = kTRUE;
	  foundTwoClusters = kTRUE;
          
	  // Printout for debuging
	  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	    cout << "FollowTrackInStation: found one cluster in chamber(1..): " << ch1+1
	    << " (Chi2 = " << chi2OfCluster << ")" << endl;
	    clusterCh1->Print();
	  }
	  
	  if (GetRecoParam()->TrackAllTracks()) {
	    // copy trackCandidate into a new track put at the end of fRecTracksPtr and add the new clusters
            newTrack = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(trackCandidate);
	    UpdateTrack(*newTrack,extrapTrackParamAtCluster1,extrapTrackParamAtCluster2,addChi2TrackAtCluster1,addChi2TrackAtCluster2);
	    fNRecTracks++;
	    
	    // Tag clusterCh1 as used
	    clusterCh1Used[iCluster1] = kTRUE;
	    
	    // Printout for debuging
	    if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	      cout << "FollowTrackInStation: added two clusters in station(1..): " << nextStation+1 << endl;
	      if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
	    }
	    
          } else if (addChi2TrackAtCluster1+addChi2TrackAtCluster2 < bestAddChi2TrackAtCluster1+bestAddChi2TrackAtCluster2) {
	    // keep track of the best couple of clusters
	    bestAddChi2TrackAtCluster1 = addChi2TrackAtCluster1;
	    bestAddChi2TrackAtCluster2 = addChi2TrackAtCluster2;
	    bestTrackParamAtCluster1 = extrapTrackParamAtCluster1;
	    bestTrackParamAtCluster2 = extrapTrackParamAtCluster2;
          }
	  
	}
	
      }
      
      // if no clusterCh1 found then consider to add clusterCh2 only
      if (!foundSecondCluster) {
	
	// remember a cluster was found
	foundOneCluster = kTRUE;
        
	if (GetRecoParam()->TrackAllTracks()) {
	  // copy trackCandidate into a new track put at the end of fRecTracksPtr and add the new cluster
          newTrack = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(trackCandidate);
	  UpdateTrack(*newTrack,extrapTrackParamAtCluster2,addChi2TrackAtCluster2);
	  fNRecTracks++;
	  
	  // Printout for debuging
	  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	    cout << "FollowTrackInStation: added one cluster in chamber(1..): " << ch2+1 << endl;
	    if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
	  }
	  
	} else if (!foundTwoClusters && addChi2TrackAtCluster2 < bestAddChi2TrackAtCluster1) {
	  // keep track of the best single cluster except if a couple of clusters has already been found
	  bestAddChi2TrackAtCluster1 = addChi2TrackAtCluster2;
	  bestTrackParamAtCluster1 = extrapTrackParamAtCluster2;
        }
	
      }
      
    }
    
  }
  
  // look for candidates in chamber 1 not already attached to a track
  // if we want to keep all possible tracks or if no good couple of clusters has been found
  if (GetRecoParam()->TrackAllTracks() || !foundTwoClusters) {
    
    // add MCS effect for next step
    AliMUONTrackExtrap::AddMCSEffect(&extrapTrackParamAtCh,AliMUONConstants::ChamberThicknessInX0(ch2),-1.);
    
    //Extrapolate trackCandidate to chamber "ch1"
    Bool_t normalExtrap = AliMUONTrackExtrap::ExtrapToZCov(&extrapTrackParamAtCh, AliMUONConstants::DefaultChamberZ(ch1),
							   GetRecoParam()->UseSmoother());
    
    // Printout for debuging
    if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
      cout<<endl<<"Track parameters and covariances at first cluster extrapolated to z = "<<AliMUONConstants::DefaultChamberZ(ch1)<<":"<<endl;
      extrapTrackParamAtCh.GetParameters().Print();
      extrapTrackParamAtCh.GetCovariances().Print();
    }
    
    // Printout for debuging
    if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
      cout << "FollowTrackInStation: look for single clusters in chamber(1..): " << ch1+1 << endl;
    }
    
    // reset cluster iterator of chamber 1
    nextInCh1.Reset();
    iCluster1 = -1;
    
    // look for second candidates in chamber 1
    if (normalExtrap) while ( ( clusterCh1 = static_cast<AliMUONVCluster*>(nextInCh1()) ) ) {
      iCluster1++;
      
      if (clusterCh1Used[iCluster1]) continue; // Skip clusters already used
      
      // try to add the current cluster fast
      if (!TryOneClusterFast(extrapTrackParamAtCh, clusterCh1)) continue;
      
      // try to add the current cluster accuratly
      chi2OfCluster = TryOneCluster(extrapTrackParamAtCh, clusterCh1, extrapTrackParamAtCluster1,
				    GetRecoParam()->UseSmoother());
      
      // if good chi2 then consider to add clusterCh1
      // We do not try to attach a cluster in the other chamber too since it has already been done above
      if (chi2OfCluster < maxChi2OfCluster) {
        
	if (GetRecoParam()->UseSmoother()) {
          // save extrapolated parameters for smoother
          extrapTrackParamAtCluster1.SetExtrapParameters(extrapTrackParamAtCluster1.GetParameters());
          
          // save extrapolated covariance matrix for smoother
          extrapTrackParamAtCluster1.SetExtrapCovariances(extrapTrackParamAtCluster1.GetCovariances());
        }
        
        // Compute new track parameters including "clusterCh1" using kalman filter
        addChi2TrackAtCluster1 = RunKalmanFilter(extrapTrackParamAtCluster1);
        
	// skip track out of limits
	if (!IsAcceptable(extrapTrackParamAtCluster1)) continue;
	
	// remember a cluster was found
	foundOneCluster = kTRUE;
  	
	// Printout for debuging
  	if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
  	  cout << "FollowTrackInStation: found one cluster in chamber(1..): " << ch1+1
	  << " (Chi2 = " << chi2OfCluster << ")" << endl;
	  clusterCh1->Print();
  	}
	
	if (GetRecoParam()->TrackAllTracks()) {
	  // copy trackCandidate into a new track put at the end of fRecTracksPtr and add the new cluster
  	  newTrack = new ((*fRecTracksPtr)[fRecTracksPtr->GetLast()+1]) AliMUONTrack(trackCandidate);
	  UpdateTrack(*newTrack,extrapTrackParamAtCluster1,addChi2TrackAtCluster1);
	  fNRecTracks++;
  	  
	  // Printout for debuging
  	  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
  	    cout << "FollowTrackInStation: added one cluster in chamber(1..): " << ch1+1 << endl;
  	    if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
  	  }
	  
  	} else if (addChi2TrackAtCluster1 < bestAddChi2TrackAtCluster1) {
	  // keep track of the best single cluster except if a couple of clusters has already been found
	  bestAddChi2TrackAtCluster1 = addChi2TrackAtCluster1;
	  bestTrackParamAtCluster1 = extrapTrackParamAtCluster1;
  	}
	
      }
      
    }
    
  }
  
  // fill out the best track if required else clean up the fRecTracksPtr array
  if (!GetRecoParam()->TrackAllTracks()) {
    if (foundTwoClusters) {
      UpdateTrack(trackCandidate,bestTrackParamAtCluster1,bestTrackParamAtCluster2,bestAddChi2TrackAtCluster1,bestAddChi2TrackAtCluster2);
      
      // Printout for debuging
      if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
        cout << "FollowTrackInStation: added the two best clusters in station(1..): " << nextStation+1 << endl;
        if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
      }
      
    } else if (foundOneCluster) {
      UpdateTrack(trackCandidate,bestTrackParamAtCluster1,bestAddChi2TrackAtCluster1);
      
      // Printout for debuging
      if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
        cout << "FollowTrackInStation: added the best cluster in chamber(1..): " << bestTrackParamAtCluster1.GetClusterPtr()->GetChamberId()+1 << endl;
        if (AliLog::GetGlobalDebugLevel() >= 3) newTrack->RecursiveDump();
      }
      
    } else {
      delete [] clusterCh1Used;
      return kFALSE;
    }
    
  } else if (foundOneCluster || foundTwoClusters) {
    
    // remove obsolete track
    fRecTracksPtr->Remove(&trackCandidate);
    fNRecTracks--;
    
  } else {
    delete [] clusterCh1Used;
    return kFALSE;
  }
  
  delete [] clusterCh1Used;
  return kTRUE;
  
}

  //__________________________________________________________________________
Double_t AliMUONTrackReconstructorK::RunKalmanFilter(AliMUONTrackParam &trackParamAtCluster)
{
  /// Compute new track parameters and their covariances including new cluster using kalman filter
  /// return the additional track chi2
  AliDebug(1,"Enter RunKalmanFilter");
  
  // Get actual track parameters (p)
  TMatrixD param(trackParamAtCluster.GetParameters());
  
  // Get new cluster parameters (m)
  AliMUONVCluster *cluster = trackParamAtCluster.GetClusterPtr();
  TMatrixD clusterParam(5,1);
  clusterParam.Zero();
  clusterParam(0,0) = cluster->GetX();
  clusterParam(2,0) = cluster->GetY();
  
  // Compute the actual parameter weight (W)
  TMatrixD paramWeight(trackParamAtCluster.GetCovariances());
  if (paramWeight.Determinant() != 0) {
    paramWeight.Invert();
  } else {
    AliWarning(" Determinant = 0");
    return 2.*AliMUONTrack::MaxChi2();
  }
  
  // Compute the new cluster weight (U)
  TMatrixD clusterWeight(5,5);
  clusterWeight.Zero();
  clusterWeight(0,0) = 1. / cluster->GetErrX2();
  clusterWeight(2,2) = 1. / cluster->GetErrY2();

  // Compute the new parameters covariance matrix ( (W+U)^-1 )
  TMatrixD newParamCov(paramWeight,TMatrixD::kPlus,clusterWeight);
  if (newParamCov.Determinant() != 0) {
    newParamCov.Invert();
  } else {
    AliWarning(" Determinant = 0");
    return 2.*AliMUONTrack::MaxChi2();
  }
  
  // Save the new parameters covariance matrix
  trackParamAtCluster.SetCovariances(newParamCov);
  
  // Compute the new parameters (p' = ((W+U)^-1)U(m-p) + p)
  TMatrixD tmp(clusterParam,TMatrixD::kMinus,param);
  TMatrixD tmp2(clusterWeight,TMatrixD::kMult,tmp); // U(m-p)
  TMatrixD newParam(newParamCov,TMatrixD::kMult,tmp2); // ((W+U)^-1)U(m-p)
  newParam += param; // ((W+U)^-1)U(m-p) + p
  
  // Save the new parameters
  trackParamAtCluster.SetParameters(newParam);
  
  // Compute the additional chi2 (= ((p'-p)^-1)W(p'-p) + ((p'-m)^-1)U(p'-m))
  tmp = newParam; // p'
  tmp -= param; // (p'-p)
  TMatrixD tmp3(paramWeight,TMatrixD::kMult,tmp); // W(p'-p)
  TMatrixD addChi2Track(tmp,TMatrixD::kTransposeMult,tmp3); // ((p'-p)^-1)W(p'-p)
  tmp = newParam; // p'
  tmp -= clusterParam; // (p'-m)
  TMatrixD tmp4(clusterWeight,TMatrixD::kMult,tmp); // U(p'-m)
  addChi2Track += TMatrixD(tmp,TMatrixD::kTransposeMult,tmp4); // ((p'-p)^-1)W(p'-p) + ((p'-m)^-1)U(p'-m)
  
  return addChi2Track(0,0);
  
}

  //__________________________________________________________________________
void AliMUONTrackReconstructorK::UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster, Double_t addChi2)
{
  /// Add 1 cluster to the track candidate
  /// Update chi2 of the track 
  
  // Flag cluster as being (not) removable
  if (GetRecoParam()->RequestStation(trackParamAtCluster.GetClusterPtr()->GetChamberId()/2))
    trackParamAtCluster.SetRemovable(kFALSE);
  else trackParamAtCluster.SetRemovable(kTRUE);
  trackParamAtCluster.SetLocalChi2(0.); // --> Local chi2 not used
  
  // Update the track chi2 into trackParamAtCluster
  trackParamAtCluster.SetTrackChi2(track.GetGlobalChi2() + addChi2);
  
  // Update the chi2 of the new track
  track.SetGlobalChi2(trackParamAtCluster.GetTrackChi2());
  
  // Update array of TrackParamAtCluster
  track.AddTrackParamAtCluster(trackParamAtCluster,*(trackParamAtCluster.GetClusterPtr()));
  
}

  //__________________________________________________________________________
void AliMUONTrackReconstructorK::UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2,
					     Double_t addChi2AtCluster1, Double_t addChi2AtCluster2)
{
  /// Add 2 clusters to the track candidate (order is important)
  /// Update track and local chi2
  
  // Update local chi2 at first cluster
  AliMUONVCluster* cluster1 = trackParamAtCluster1.GetClusterPtr();
  Double_t deltaX = trackParamAtCluster1.GetNonBendingCoor() - cluster1->GetX();
  Double_t deltaY = trackParamAtCluster1.GetBendingCoor() - cluster1->GetY();
  Double_t localChi2AtCluster1 = deltaX*deltaX / cluster1->GetErrX2() +
  			         deltaY*deltaY / cluster1->GetErrY2();
  trackParamAtCluster1.SetLocalChi2(localChi2AtCluster1);
  
  // Flag first cluster as being removable
  trackParamAtCluster1.SetRemovable(kTRUE);
  
  // Update local chi2 at second cluster
  AliMUONVCluster* cluster2 = trackParamAtCluster2.GetClusterPtr();
  AliMUONTrackParam extrapTrackParamAtCluster2(trackParamAtCluster1);
  AliMUONTrackExtrap::ExtrapToZ(&extrapTrackParamAtCluster2, trackParamAtCluster2.GetZ());
  deltaX = extrapTrackParamAtCluster2.GetNonBendingCoor() - cluster2->GetX();
  deltaY = extrapTrackParamAtCluster2.GetBendingCoor() - cluster2->GetY();
  Double_t localChi2AtCluster2 = deltaX*deltaX / cluster2->GetErrX2() +
  			         deltaY*deltaY / cluster2->GetErrY2();
  trackParamAtCluster2.SetLocalChi2(localChi2AtCluster2);
  
  // Flag second cluster as being removable
  trackParamAtCluster2.SetRemovable(kTRUE);
  
  // Update the track chi2 into trackParamAtCluster2
  trackParamAtCluster2.SetTrackChi2(track.GetGlobalChi2() + addChi2AtCluster2);
  
  // Update the track chi2 into trackParamAtCluster1
  trackParamAtCluster1.SetTrackChi2(trackParamAtCluster2.GetTrackChi2() + addChi2AtCluster1);
  
  // Update the chi2 of the new track
  track.SetGlobalChi2(trackParamAtCluster1.GetTrackChi2());
  
  // Update array of trackParamAtCluster
  track.AddTrackParamAtCluster(trackParamAtCluster1,*cluster1);
  track.AddTrackParamAtCluster(trackParamAtCluster2,*cluster2);
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::RecoverTrack(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation)
{
  /// Try to recover the track candidate in the next station
  /// by removing the worst of the two clusters attached in the current station
  /// Return kTRUE if recovering succeeds
  AliDebug(1,"Enter RecoverTrack");
  
  // Do not try to recover track until we have attached cluster(s) on station(1..) 3
  if (nextStation > 1) return kFALSE;
  
  Int_t worstClusterNumber = -1;
  Double_t localChi2, worstLocalChi2 = -1.;
  
  // Look for the cluster to remove
  for (Int_t clusterNumber = 0; clusterNumber < 2; clusterNumber++) {
    AliMUONTrackParam *trackParamAtCluster = (AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->UncheckedAt(clusterNumber);
    
    // check if current cluster is in the previous station
    if (trackParamAtCluster->GetClusterPtr()->GetChamberId()/2 != nextStation+1) break;
    
    // check if current cluster is removable
    if (!trackParamAtCluster->IsRemovable()) return kFALSE;
    
    // reset the current cluster as being not removable if it is on a required station
    if (GetRecoParam()->RequestStation(nextStation+1)) trackParamAtCluster->SetRemovable(kFALSE);
    
    // Pick up cluster with the worst chi2
    localChi2 = trackParamAtCluster->GetLocalChi2();
    if (localChi2 > worstLocalChi2) {
      worstLocalChi2 = localChi2;
      worstClusterNumber = clusterNumber;
    }
  }
  
  // check if worst cluster found
  if (worstClusterNumber < 0) return kFALSE;
  
  // Remove the worst cluster
  trackCandidate.RemoveTrackParamAtCluster((AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->UncheckedAt(worstClusterNumber));
  
  // Re-calculate track parameters at the (new) first cluster
  if (!RetracePartialTrack(trackCandidate,(AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->UncheckedAt(1))) return kFALSE;
  
  // skip track out of limits
  if (!IsAcceptable(*((AliMUONTrackParam*)trackCandidate.GetTrackParamAtCluster()->First()))) return kFALSE;
  
  // Look for new cluster(s) in next station
  return FollowTrackInStation(trackCandidate, clusterStore, nextStation);
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::RunSmoother(AliMUONTrack &track)
{
  /// Compute new track parameters and their covariances using smoother
  AliDebug(1,"Enter UseSmoother");
  
  AliMUONTrackParam *previousTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->First();
  
  // Smoothed parameters and covariances at first cluster = filtered parameters and covariances
  previousTrackParam->SetSmoothParameters(previousTrackParam->GetParameters());
  previousTrackParam->SetSmoothCovariances(previousTrackParam->GetCovariances());

  AliMUONTrackParam *currentTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->After(previousTrackParam);
  
  // Save local chi2 at first cluster = last additional chi2 provided by Kalman
  previousTrackParam->SetLocalChi2(previousTrackParam->GetTrackChi2() - currentTrackParam->GetTrackChi2());
  
  // if the track contains only 2 clusters simply copy the filtered parameters
  if (track.GetNClusters() == 2) {
    currentTrackParam->SetSmoothParameters(currentTrackParam->GetParameters());
    currentTrackParam->SetSmoothCovariances(currentTrackParam->GetCovariances());
    currentTrackParam->SetLocalChi2(currentTrackParam->GetTrackChi2());
    return kTRUE;
  }
  
  while (currentTrackParam) {
    
    // Get variables
    const TMatrixD &extrapParameters          = previousTrackParam->GetExtrapParameters();  // X(k+1 k)
    const TMatrixD &filteredParameters        = currentTrackParam->GetParameters();         // X(k k)
    const TMatrixD &previousSmoothParameters  = previousTrackParam->GetSmoothParameters();  // X(k+1 n)
    const TMatrixD &propagator                = previousTrackParam->GetPropagator();        // F(k)
    const TMatrixD &extrapCovariances         = previousTrackParam->GetExtrapCovariances(); // C(k+1 k)
    const TMatrixD &filteredCovariances       = currentTrackParam->GetCovariances();        // C(k k)
    const TMatrixD &previousSmoothCovariances = previousTrackParam->GetSmoothCovariances(); // C(k+1 n)
    
    // Compute smoother gain: A(k) = C(kk) * F(k)^t * (C(k+1 k))^-1
    TMatrixD extrapWeight(extrapCovariances);
    if (extrapWeight.Determinant() != 0) {
      extrapWeight.Invert(); // (C(k+1 k))^-1
    } else {
      AliWarning(" Determinant = 0");
      return kFALSE;
    }
    TMatrixD smootherGain(filteredCovariances,TMatrixD::kMultTranspose,propagator); // C(kk) * F(k)^t
    smootherGain *= extrapWeight; // C(kk) * F(k)^t * (C(k+1 k))^-1
    
    // Compute smoothed parameters: X(k n) = X(k k) + A(k) * (X(k+1 n) - X(k+1 k))
    TMatrixD tmpParam(previousSmoothParameters,TMatrixD::kMinus,extrapParameters); // X(k+1 n) - X(k+1 k)
    TMatrixD smoothParameters(smootherGain,TMatrixD::kMult,tmpParam); // A(k) * (X(k+1 n) - X(k+1 k))
    smoothParameters += filteredParameters; // X(k k) + A(k) * (X(k+1 n) - X(k+1 k))
    
    // Save smoothed parameters
    currentTrackParam->SetSmoothParameters(smoothParameters);
    
    // Compute smoothed covariances: C(k n) = C(k k) + A(k) * (C(k+1 n) - C(k+1 k)) * (A(k))^t
    TMatrixD tmpCov(previousSmoothCovariances,TMatrixD::kMinus,extrapCovariances); // C(k+1 n) - C(k+1 k)
    TMatrixD tmpCov2(tmpCov,TMatrixD::kMultTranspose,smootherGain); // (C(k+1 n) - C(k+1 k)) * (A(k))^t
    TMatrixD smoothCovariances(smootherGain,TMatrixD::kMult,tmpCov2); // A(k) * (C(k+1 n) - C(k+1 k)) * (A(k))^t
    smoothCovariances += filteredCovariances; // C(k k) + A(k) * (C(k+1 n) - C(k+1 k)) * (A(k))^t
    
    // Save smoothed covariances
    currentTrackParam->SetSmoothCovariances(smoothCovariances);
    
    // Compute smoothed residual: r(k n) = cluster - X(k n)
    AliMUONVCluster* cluster = currentTrackParam->GetClusterPtr();
    TMatrixD smoothResidual(2,1);
    smoothResidual.Zero();
    smoothResidual(0,0) = cluster->GetX() - smoothParameters(0,0);
    smoothResidual(1,0) = cluster->GetY() - smoothParameters(2,0);
    
    // Compute weight of smoothed residual: W(k n) = (clusterCov - C(k n))^-1
    TMatrixD smoothResidualWeight(2,2);
    smoothResidualWeight(0,0) = cluster->GetErrX2() - smoothCovariances(0,0);
    smoothResidualWeight(0,1) = - smoothCovariances(0,2);
    smoothResidualWeight(1,0) = - smoothCovariances(2,0);
    smoothResidualWeight(1,1) = cluster->GetErrY2() - smoothCovariances(2,2);
    if (smoothResidualWeight.Determinant() != 0) {
      smoothResidualWeight.Invert();
    } else {
      AliWarning(" Determinant = 0");
      return kFALSE;
    }
    
    // Compute local chi2 = (r(k n))^t * W(k n) * r(k n)
    TMatrixD tmpChi2(smoothResidual,TMatrixD::kTransposeMult,smoothResidualWeight); // (r(k n))^t * W(k n)
    TMatrixD localChi2(tmpChi2,TMatrixD::kMult,smoothResidual); // (r(k n))^t * W(k n) * r(k n)
    
    // Save local chi2
    currentTrackParam->SetLocalChi2(localChi2(0,0));
    
    previousTrackParam = currentTrackParam;
    currentTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->After(previousTrackParam);
  }
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::ComplementTracks(const AliMUONVClusterStore& clusterStore)
{
  /// Complete tracks by adding missing clusters (if there is an overlap between
  /// two detection elements, the track may have two clusters in the same chamber).
  /// Recompute track parameters and covariances at each clusters.
  /// Remove tracks getting abnormal (i.e. extrapolation failed...) after being complemented.
  /// Return kTRUE if one or more tracks have been complemented or removed.
  AliDebug(1,"Enter ComplementTracks");
  
  Int_t chamberId, detElemId;
  Double_t chi2OfCluster, addChi2TrackAtCluster, bestAddChi2TrackAtCluster;
  Double_t maxChi2OfCluster = 2. * GetRecoParam()->GetSigmaCutForTracking() *
				   GetRecoParam()->GetSigmaCutForTracking(); // 2 because 2 quantities in chi2
  Bool_t foundOneCluster, trackModified, hasChanged = kFALSE;
  AliMUONVCluster *cluster;
  AliMUONTrackParam *trackParam, *previousTrackParam, *nextTrackParam, trackParamAtCluster, bestTrackParamAtCluster;
  AliMUONTrack *nextTrack;
  
  AliMUONTrack *track = (AliMUONTrack*) fRecTracksPtr->First();
  while (track) {
    trackModified = kFALSE;
    
    trackParam = (AliMUONTrackParam*)track->GetTrackParamAtCluster()->First();
    previousTrackParam = trackParam;
    while (trackParam) {
      foundOneCluster = kFALSE;
      bestAddChi2TrackAtCluster = AliMUONTrack::MaxChi2();
      chamberId = trackParam->GetClusterPtr()->GetChamberId();
      detElemId = trackParam->GetClusterPtr()->GetDetElemId();
      
      // prepare nextTrackParam before adding new cluster because of the sorting
      nextTrackParam = (AliMUONTrackParam*)track->GetTrackParamAtCluster()->After(trackParam);
      
      // Create iterators to loop over clusters in current chamber
      TIter nextInCh(clusterStore.CreateChamberIterator(chamberId,chamberId));
      
      // look for one second candidate in the same chamber
      while ( ( cluster = static_cast<AliMUONVCluster*>(nextInCh()) ) ) {
        
	// look for a cluster in another detection element
	if (cluster->GetDetElemId() == detElemId) continue;
	
	// try to add the current cluster fast
	if (!TryOneClusterFast(*trackParam, cluster)) continue;
	
	// try to add the current cluster accurately
	// never use track parameters at last cluster because the covariance matrix is meaningless
	if (nextTrackParam) chi2OfCluster = TryOneCluster(*trackParam, cluster, trackParamAtCluster);
	else chi2OfCluster = TryOneCluster(*previousTrackParam, cluster, trackParamAtCluster);
	
	// if good chi2 then consider to add this cluster to the track
	if (chi2OfCluster < maxChi2OfCluster) {
          
	  // Compute local track parameters including current cluster using kalman filter
          addChi2TrackAtCluster = RunKalmanFilter(trackParamAtCluster);
          
	  // keep track of the best cluster
	  if (addChi2TrackAtCluster < bestAddChi2TrackAtCluster) {
	    bestAddChi2TrackAtCluster = addChi2TrackAtCluster;
	    bestTrackParamAtCluster = trackParamAtCluster;
	    foundOneCluster = kTRUE;
	  }
	  
	}
	
      }
      
      // add new cluster if any
      if (foundOneCluster) {
	
	// Printout for debuging
	if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
	  cout << "ComplementTracks: found one cluster in chamber(1..): " << chamberId+1 << endl;
	  bestTrackParamAtCluster.GetClusterPtr()->Print();
	  if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
	    cout<<endl<<"Track parameters and covariances at cluster:"<<endl;
	    bestTrackParamAtCluster.GetParameters().Print();
	    bestTrackParamAtCluster.GetCovariances().Print();
	  }
	}
	
	trackParam->SetRemovable(kTRUE);
	bestTrackParamAtCluster.SetRemovable(kTRUE);
	track->AddTrackParamAtCluster(bestTrackParamAtCluster,*(bestTrackParamAtCluster.GetClusterPtr()));
	trackModified = kTRUE;
	hasChanged = kTRUE;
      }
      
      previousTrackParam = trackParam;
      trackParam = nextTrackParam;
    }
    
    // prepare next track
    nextTrack = (AliMUONTrack*) fRecTracksPtr->After(track);
    
    // re-compute track parameters using kalman filter if needed
    if (trackModified && !RetraceTrack(*track,kTRUE)) {
      AliWarning("track modified but problem occur during refitting --> remove track");
      fRecTracksPtr->Remove(track);
      fNRecTracks--;
    }
    
    track = nextTrack;
  }
  
  return hasChanged;
  
}

//__________________________________________________________________________
void AliMUONTrackReconstructorK::ImproveTrack(AliMUONTrack &track)
{
  /// Improve the given track by removing removable clusters with local chi2 highter than the defined cut
  /// Removable clusters are identified by the method AliMUONTrack::TagRemovableClusters()
  /// Recompute track parameters and covariances at the remaining clusters
  /// and if something goes wrong (i.e. extrapolation failed...) set track chi2 to max value
  AliDebug(1,"Enter ImproveTrack");
  
  Double_t localChi2, worstLocalChi2;
  AliMUONTrackParam *trackParamAtCluster, *worstTrackParamAtCluster, *nextTrackParam, *next2nextTrackParam;
  Int_t nextChamber, next2nextChamber;
  Bool_t smoothed;
  Double_t sigmaCut2 = GetRecoParam()->GetSigmaCutForImprovement() *
                       GetRecoParam()->GetSigmaCutForImprovement();
  
  while (!track.IsImproved()) {
    
    // identify removable clusters
    track.TagRemovableClusters(GetRecoParam()->RequestedStationMask());
    
    // Run smoother if required
    smoothed = kFALSE;
    if (GetRecoParam()->UseSmoother()) smoothed = RunSmoother(track);
    
    // Use standard procedure to compute local chi2 if smoother not required or not working
    if (!smoothed) {
      
      // Update track parameters and covariances
      if (!track.UpdateCovTrackParamAtCluster()) {
	AliWarning("unable to update track parameters and covariances --> stop improvement");
	// restore the kalman parameters
	RetraceTrack(track,kTRUE);
	break;
      }
      
      // Compute local chi2 of each clusters
      track.ComputeLocalChi2(kTRUE);
    }
    
    // Look for the cluster to remove
    worstTrackParamAtCluster = 0x0;
    worstLocalChi2 = -1.;
    trackParamAtCluster = (AliMUONTrackParam*)track.GetTrackParamAtCluster()->First();
    while (trackParamAtCluster) {
      
      // save parameters into smooth parameters in case of smoother did not work properly
      if (GetRecoParam()->UseSmoother() && !smoothed) {
	trackParamAtCluster->SetSmoothParameters(trackParamAtCluster->GetParameters());
	trackParamAtCluster->SetSmoothCovariances(trackParamAtCluster->GetCovariances());
      }
      
      // Pick up cluster with the worst chi2
      localChi2 = trackParamAtCluster->GetLocalChi2();
      if (localChi2 > worstLocalChi2) {
	worstLocalChi2 = localChi2;
	worstTrackParamAtCluster = trackParamAtCluster;
      }
      
      trackParamAtCluster = (AliMUONTrackParam*)track.GetTrackParamAtCluster()->After(trackParamAtCluster);
    }
    
    // Check whether the worst chi2 is under requirement or not
    if (worstLocalChi2 < 2. * sigmaCut2) { // 2 because 2 quantities in chi2
      track.SetImproved(kTRUE);
      break;
    }
    
    // if the worst cluster is not removable then stop improvement
    if (!worstTrackParamAtCluster->IsRemovable()) {
      // restore the kalman parameters in case they have been lost
      if (!smoothed) RetraceTrack(track,kTRUE);
      break;
    }
    
    // get track parameters at cluster next to the one to be removed
    nextTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->After(worstTrackParamAtCluster);
    
    // Remove the worst cluster
    track.RemoveTrackParamAtCluster(worstTrackParamAtCluster);
    
    // Re-calculate track parameters
    // - from the cluster immediately downstream the one suppressed
    // - or from the begining - if parameters have been re-computed using the standard method (kalman parameters have been lost)
    //                        - or if the removed cluster was used to compute the tracking seed
    Bool_t normalExtrap;
    if (smoothed && nextTrackParam) {
      
      nextChamber = nextTrackParam->GetClusterPtr()->GetChamberId();
      next2nextTrackParam = nextTrackParam;
      do {
	
	next2nextChamber = next2nextTrackParam->GetClusterPtr()->GetChamberId();
	next2nextTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->After(next2nextTrackParam);
	
      } while (next2nextTrackParam && (next2nextChamber == nextChamber));
      
      if (next2nextChamber == nextChamber) normalExtrap = RetraceTrack(track,kTRUE);
      else normalExtrap = RetracePartialTrack(track,nextTrackParam);
      
    } else normalExtrap = RetraceTrack(track,kTRUE);
    
    // stop in case of extrapolation problem
    if (!normalExtrap) {
      AliWarning("track partially improved but problem occur during refitting --> stop improvement");
      break;
    }
    
    // Printout for debuging
    if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
      cout << "ImproveTracks: track " << fRecTracksPtr->IndexOf(&track)+1 << " improved " << endl;
    }
    
  }
  
}

//__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::FinalizeTrack(AliMUONTrack &track)
{
  /// Update track parameters and covariances at each attached cluster
  /// using smoother if required, if not already done
  /// return kFALSE if the track cannot be extrapolated uo to the last chamber
  
  AliMUONTrackParam *trackParamAtCluster;
  Bool_t smoothed = kFALSE;
  
  // update track parameters (using smoother if required) if not already done
  if (track.IsImproved()) smoothed = GetRecoParam()->UseSmoother();
  else {
    if (GetRecoParam()->UseSmoother()) smoothed = RunSmoother(track);
    if (!smoothed) {
      if (track.UpdateCovTrackParamAtCluster()) track.ComputeLocalChi2(kTRUE);
      else {
	AliWarning("finalization failed due to extrapolation problem");
	return kFALSE;
      }
    }
  }
  
  // copy smoothed parameters and covariances if any
  if (smoothed) {
    
    trackParamAtCluster = (AliMUONTrackParam*) (track.GetTrackParamAtCluster()->First());
    while (trackParamAtCluster) {
      
      trackParamAtCluster->SetParameters(trackParamAtCluster->GetSmoothParameters());
      trackParamAtCluster->SetCovariances(trackParamAtCluster->GetSmoothCovariances());
      
      trackParamAtCluster = (AliMUONTrackParam*) (track.GetTrackParamAtCluster()->After(trackParamAtCluster));
    }
    
  }
  
  return kTRUE;
  
}

  //__________________________________________________________________________
Bool_t AliMUONTrackReconstructorK::RefitTrack(AliMUONTrack &track, Bool_t enableImprovement)
{
  /// re-fit the given track
  AliDebug(1,"Enter RefitTrack");
  
  // check validity of the track (i.e. at least 2 chambers hit on stations 4 and 5)
  if (!track.IsValid(0)) {
    AliWarning("the track is not valid --> unable to refit");
    return kFALSE;
  }
  
  // re-compute track parameters and covariances using Kalman filter
  if (!RetraceTrack(track,kTRUE)) {
    AliWarning("bad track refitting due to extrapolation failure");
    return kFALSE;
  }
  
  // Improve the reconstructed tracks if required
  track.SetImproved(kFALSE);
  if (enableImprovement && GetRecoParam()->ImproveTracks()) ImproveTrack(track);
  
  // Fill AliMUONTrack data members
  if (track.GetGlobalChi2() < AliMUONTrack::MaxChi2()) return FinalizeTrack(track);
  else {
    AliWarning("track not finalized due to extrapolation failure");
    return kFALSE;
  }
  
}

 AliMUONTrackReconstructorK.cxx:1
 AliMUONTrackReconstructorK.cxx:2
 AliMUONTrackReconstructorK.cxx:3
 AliMUONTrackReconstructorK.cxx:4
 AliMUONTrackReconstructorK.cxx:5
 AliMUONTrackReconstructorK.cxx:6
 AliMUONTrackReconstructorK.cxx:7
 AliMUONTrackReconstructorK.cxx:8
 AliMUONTrackReconstructorK.cxx:9
 AliMUONTrackReconstructorK.cxx:10
 AliMUONTrackReconstructorK.cxx:11
 AliMUONTrackReconstructorK.cxx:12
 AliMUONTrackReconstructorK.cxx:13
 AliMUONTrackReconstructorK.cxx:14
 AliMUONTrackReconstructorK.cxx:15
 AliMUONTrackReconstructorK.cxx:16
 AliMUONTrackReconstructorK.cxx:17
 AliMUONTrackReconstructorK.cxx:18
 AliMUONTrackReconstructorK.cxx:19
 AliMUONTrackReconstructorK.cxx:20
 AliMUONTrackReconstructorK.cxx:21
 AliMUONTrackReconstructorK.cxx:22
 AliMUONTrackReconstructorK.cxx:23
 AliMUONTrackReconstructorK.cxx:24
 AliMUONTrackReconstructorK.cxx:25
 AliMUONTrackReconstructorK.cxx:26
 AliMUONTrackReconstructorK.cxx:27
 AliMUONTrackReconstructorK.cxx:28
 AliMUONTrackReconstructorK.cxx:29
 AliMUONTrackReconstructorK.cxx:30
 AliMUONTrackReconstructorK.cxx:31
 AliMUONTrackReconstructorK.cxx:32
 AliMUONTrackReconstructorK.cxx:33
 AliMUONTrackReconstructorK.cxx:34
 AliMUONTrackReconstructorK.cxx:35
 AliMUONTrackReconstructorK.cxx:36
 AliMUONTrackReconstructorK.cxx:37
 AliMUONTrackReconstructorK.cxx:38
 AliMUONTrackReconstructorK.cxx:39
 AliMUONTrackReconstructorK.cxx:40
 AliMUONTrackReconstructorK.cxx:41
 AliMUONTrackReconstructorK.cxx:42
 AliMUONTrackReconstructorK.cxx:43
 AliMUONTrackReconstructorK.cxx:44
 AliMUONTrackReconstructorK.cxx:45
 AliMUONTrackReconstructorK.cxx:46
 AliMUONTrackReconstructorK.cxx:47
 AliMUONTrackReconstructorK.cxx:48
 AliMUONTrackReconstructorK.cxx:49
 AliMUONTrackReconstructorK.cxx:50
 AliMUONTrackReconstructorK.cxx:51
 AliMUONTrackReconstructorK.cxx:52
 AliMUONTrackReconstructorK.cxx:53
 AliMUONTrackReconstructorK.cxx:54
 AliMUONTrackReconstructorK.cxx:55
 AliMUONTrackReconstructorK.cxx:56
 AliMUONTrackReconstructorK.cxx:57
 AliMUONTrackReconstructorK.cxx:58
 AliMUONTrackReconstructorK.cxx:59
 AliMUONTrackReconstructorK.cxx:60
 AliMUONTrackReconstructorK.cxx:61
 AliMUONTrackReconstructorK.cxx:62
 AliMUONTrackReconstructorK.cxx:63
 AliMUONTrackReconstructorK.cxx:64
 AliMUONTrackReconstructorK.cxx:65
 AliMUONTrackReconstructorK.cxx:66
 AliMUONTrackReconstructorK.cxx:67
 AliMUONTrackReconstructorK.cxx:68
 AliMUONTrackReconstructorK.cxx:69
 AliMUONTrackReconstructorK.cxx:70
 AliMUONTrackReconstructorK.cxx:71
 AliMUONTrackReconstructorK.cxx:72
 AliMUONTrackReconstructorK.cxx:73
 AliMUONTrackReconstructorK.cxx:74
 AliMUONTrackReconstructorK.cxx:75
 AliMUONTrackReconstructorK.cxx:76
 AliMUONTrackReconstructorK.cxx:77
 AliMUONTrackReconstructorK.cxx:78
 AliMUONTrackReconstructorK.cxx:79
 AliMUONTrackReconstructorK.cxx:80
 AliMUONTrackReconstructorK.cxx:81
 AliMUONTrackReconstructorK.cxx:82
 AliMUONTrackReconstructorK.cxx:83
 AliMUONTrackReconstructorK.cxx:84
 AliMUONTrackReconstructorK.cxx:85
 AliMUONTrackReconstructorK.cxx:86
 AliMUONTrackReconstructorK.cxx:87
 AliMUONTrackReconstructorK.cxx:88
 AliMUONTrackReconstructorK.cxx:89
 AliMUONTrackReconstructorK.cxx:90
 AliMUONTrackReconstructorK.cxx:91
 AliMUONTrackReconstructorK.cxx:92
 AliMUONTrackReconstructorK.cxx:93
 AliMUONTrackReconstructorK.cxx:94
 AliMUONTrackReconstructorK.cxx:95
 AliMUONTrackReconstructorK.cxx:96
 AliMUONTrackReconstructorK.cxx:97
 AliMUONTrackReconstructorK.cxx:98
 AliMUONTrackReconstructorK.cxx:99
 AliMUONTrackReconstructorK.cxx:100
 AliMUONTrackReconstructorK.cxx:101
 AliMUONTrackReconstructorK.cxx:102
 AliMUONTrackReconstructorK.cxx:103
 AliMUONTrackReconstructorK.cxx:104
 AliMUONTrackReconstructorK.cxx:105
 AliMUONTrackReconstructorK.cxx:106
 AliMUONTrackReconstructorK.cxx:107
 AliMUONTrackReconstructorK.cxx:108
 AliMUONTrackReconstructorK.cxx:109
 AliMUONTrackReconstructorK.cxx:110
 AliMUONTrackReconstructorK.cxx:111
 AliMUONTrackReconstructorK.cxx:112
 AliMUONTrackReconstructorK.cxx:113
 AliMUONTrackReconstructorK.cxx:114
 AliMUONTrackReconstructorK.cxx:115
 AliMUONTrackReconstructorK.cxx:116
 AliMUONTrackReconstructorK.cxx:117
 AliMUONTrackReconstructorK.cxx:118
 AliMUONTrackReconstructorK.cxx:119
 AliMUONTrackReconstructorK.cxx:120
 AliMUONTrackReconstructorK.cxx:121
 AliMUONTrackReconstructorK.cxx:122
 AliMUONTrackReconstructorK.cxx:123
 AliMUONTrackReconstructorK.cxx:124
 AliMUONTrackReconstructorK.cxx:125
 AliMUONTrackReconstructorK.cxx:126
 AliMUONTrackReconstructorK.cxx:127
 AliMUONTrackReconstructorK.cxx:128
 AliMUONTrackReconstructorK.cxx:129
 AliMUONTrackReconstructorK.cxx:130
 AliMUONTrackReconstructorK.cxx:131
 AliMUONTrackReconstructorK.cxx:132
 AliMUONTrackReconstructorK.cxx:133
 AliMUONTrackReconstructorK.cxx:134
 AliMUONTrackReconstructorK.cxx:135
 AliMUONTrackReconstructorK.cxx:136
 AliMUONTrackReconstructorK.cxx:137
 AliMUONTrackReconstructorK.cxx:138
 AliMUONTrackReconstructorK.cxx:139
 AliMUONTrackReconstructorK.cxx:140
 AliMUONTrackReconstructorK.cxx:141
 AliMUONTrackReconstructorK.cxx:142
 AliMUONTrackReconstructorK.cxx:143
 AliMUONTrackReconstructorK.cxx:144
 AliMUONTrackReconstructorK.cxx:145
 AliMUONTrackReconstructorK.cxx:146
 AliMUONTrackReconstructorK.cxx:147
 AliMUONTrackReconstructorK.cxx:148
 AliMUONTrackReconstructorK.cxx:149
 AliMUONTrackReconstructorK.cxx:150
 AliMUONTrackReconstructorK.cxx:151
 AliMUONTrackReconstructorK.cxx:152
 AliMUONTrackReconstructorK.cxx:153
 AliMUONTrackReconstructorK.cxx:154
 AliMUONTrackReconstructorK.cxx:155
 AliMUONTrackReconstructorK.cxx:156
 AliMUONTrackReconstructorK.cxx:157
 AliMUONTrackReconstructorK.cxx:158
 AliMUONTrackReconstructorK.cxx:159
 AliMUONTrackReconstructorK.cxx:160
 AliMUONTrackReconstructorK.cxx:161
 AliMUONTrackReconstructorK.cxx:162
 AliMUONTrackReconstructorK.cxx:163
 AliMUONTrackReconstructorK.cxx:164
 AliMUONTrackReconstructorK.cxx:165
 AliMUONTrackReconstructorK.cxx:166
 AliMUONTrackReconstructorK.cxx:167
 AliMUONTrackReconstructorK.cxx:168
 AliMUONTrackReconstructorK.cxx:169
 AliMUONTrackReconstructorK.cxx:170
 AliMUONTrackReconstructorK.cxx:171
 AliMUONTrackReconstructorK.cxx:172
 AliMUONTrackReconstructorK.cxx:173
 AliMUONTrackReconstructorK.cxx:174
 AliMUONTrackReconstructorK.cxx:175
 AliMUONTrackReconstructorK.cxx:176
 AliMUONTrackReconstructorK.cxx:177
 AliMUONTrackReconstructorK.cxx:178
 AliMUONTrackReconstructorK.cxx:179
 AliMUONTrackReconstructorK.cxx:180
 AliMUONTrackReconstructorK.cxx:181
 AliMUONTrackReconstructorK.cxx:182
 AliMUONTrackReconstructorK.cxx:183
 AliMUONTrackReconstructorK.cxx:184
 AliMUONTrackReconstructorK.cxx:185
 AliMUONTrackReconstructorK.cxx:186
 AliMUONTrackReconstructorK.cxx:187
 AliMUONTrackReconstructorK.cxx:188
 AliMUONTrackReconstructorK.cxx:189
 AliMUONTrackReconstructorK.cxx:190
 AliMUONTrackReconstructorK.cxx:191
 AliMUONTrackReconstructorK.cxx:192
 AliMUONTrackReconstructorK.cxx:193
 AliMUONTrackReconstructorK.cxx:194
 AliMUONTrackReconstructorK.cxx:195
 AliMUONTrackReconstructorK.cxx:196
 AliMUONTrackReconstructorK.cxx:197
 AliMUONTrackReconstructorK.cxx:198
 AliMUONTrackReconstructorK.cxx:199
 AliMUONTrackReconstructorK.cxx:200
 AliMUONTrackReconstructorK.cxx:201
 AliMUONTrackReconstructorK.cxx:202
 AliMUONTrackReconstructorK.cxx:203
 AliMUONTrackReconstructorK.cxx:204
 AliMUONTrackReconstructorK.cxx:205
 AliMUONTrackReconstructorK.cxx:206
 AliMUONTrackReconstructorK.cxx:207
 AliMUONTrackReconstructorK.cxx:208
 AliMUONTrackReconstructorK.cxx:209
 AliMUONTrackReconstructorK.cxx:210
 AliMUONTrackReconstructorK.cxx:211
 AliMUONTrackReconstructorK.cxx:212
 AliMUONTrackReconstructorK.cxx:213
 AliMUONTrackReconstructorK.cxx:214
 AliMUONTrackReconstructorK.cxx:215
 AliMUONTrackReconstructorK.cxx:216
 AliMUONTrackReconstructorK.cxx:217
 AliMUONTrackReconstructorK.cxx:218
 AliMUONTrackReconstructorK.cxx:219
 AliMUONTrackReconstructorK.cxx:220
 AliMUONTrackReconstructorK.cxx:221
 AliMUONTrackReconstructorK.cxx:222
 AliMUONTrackReconstructorK.cxx:223
 AliMUONTrackReconstructorK.cxx:224
 AliMUONTrackReconstructorK.cxx:225
 AliMUONTrackReconstructorK.cxx:226
 AliMUONTrackReconstructorK.cxx:227
 AliMUONTrackReconstructorK.cxx:228
 AliMUONTrackReconstructorK.cxx:229
 AliMUONTrackReconstructorK.cxx:230
 AliMUONTrackReconstructorK.cxx:231
 AliMUONTrackReconstructorK.cxx:232
 AliMUONTrackReconstructorK.cxx:233
 AliMUONTrackReconstructorK.cxx:234
 AliMUONTrackReconstructorK.cxx:235
 AliMUONTrackReconstructorK.cxx:236
 AliMUONTrackReconstructorK.cxx:237
 AliMUONTrackReconstructorK.cxx:238
 AliMUONTrackReconstructorK.cxx:239
 AliMUONTrackReconstructorK.cxx:240
 AliMUONTrackReconstructorK.cxx:241
 AliMUONTrackReconstructorK.cxx:242
 AliMUONTrackReconstructorK.cxx:243
 AliMUONTrackReconstructorK.cxx:244
 AliMUONTrackReconstructorK.cxx:245
 AliMUONTrackReconstructorK.cxx:246
 AliMUONTrackReconstructorK.cxx:247
 AliMUONTrackReconstructorK.cxx:248
 AliMUONTrackReconstructorK.cxx:249
 AliMUONTrackReconstructorK.cxx:250
 AliMUONTrackReconstructorK.cxx:251
 AliMUONTrackReconstructorK.cxx:252
 AliMUONTrackReconstructorK.cxx:253
 AliMUONTrackReconstructorK.cxx:254
 AliMUONTrackReconstructorK.cxx:255
 AliMUONTrackReconstructorK.cxx:256
 AliMUONTrackReconstructorK.cxx:257
 AliMUONTrackReconstructorK.cxx:258
 AliMUONTrackReconstructorK.cxx:259
 AliMUONTrackReconstructorK.cxx:260
 AliMUONTrackReconstructorK.cxx:261
 AliMUONTrackReconstructorK.cxx:262
 AliMUONTrackReconstructorK.cxx:263
 AliMUONTrackReconstructorK.cxx:264
 AliMUONTrackReconstructorK.cxx:265
 AliMUONTrackReconstructorK.cxx:266
 AliMUONTrackReconstructorK.cxx:267
 AliMUONTrackReconstructorK.cxx:268
 AliMUONTrackReconstructorK.cxx:269
 AliMUONTrackReconstructorK.cxx:270
 AliMUONTrackReconstructorK.cxx:271
 AliMUONTrackReconstructorK.cxx:272
 AliMUONTrackReconstructorK.cxx:273
 AliMUONTrackReconstructorK.cxx:274
 AliMUONTrackReconstructorK.cxx:275
 AliMUONTrackReconstructorK.cxx:276
 AliMUONTrackReconstructorK.cxx:277
 AliMUONTrackReconstructorK.cxx:278
 AliMUONTrackReconstructorK.cxx:279
 AliMUONTrackReconstructorK.cxx:280
 AliMUONTrackReconstructorK.cxx:281
 AliMUONTrackReconstructorK.cxx:282
 AliMUONTrackReconstructorK.cxx:283
 AliMUONTrackReconstructorK.cxx:284
 AliMUONTrackReconstructorK.cxx:285
 AliMUONTrackReconstructorK.cxx:286
 AliMUONTrackReconstructorK.cxx:287
 AliMUONTrackReconstructorK.cxx:288
 AliMUONTrackReconstructorK.cxx:289
 AliMUONTrackReconstructorK.cxx:290
 AliMUONTrackReconstructorK.cxx:291
 AliMUONTrackReconstructorK.cxx:292
 AliMUONTrackReconstructorK.cxx:293
 AliMUONTrackReconstructorK.cxx:294
 AliMUONTrackReconstructorK.cxx:295
 AliMUONTrackReconstructorK.cxx:296
 AliMUONTrackReconstructorK.cxx:297
 AliMUONTrackReconstructorK.cxx:298
 AliMUONTrackReconstructorK.cxx:299
 AliMUONTrackReconstructorK.cxx:300
 AliMUONTrackReconstructorK.cxx:301
 AliMUONTrackReconstructorK.cxx:302
 AliMUONTrackReconstructorK.cxx:303
 AliMUONTrackReconstructorK.cxx:304
 AliMUONTrackReconstructorK.cxx:305
 AliMUONTrackReconstructorK.cxx:306
 AliMUONTrackReconstructorK.cxx:307
 AliMUONTrackReconstructorK.cxx:308
 AliMUONTrackReconstructorK.cxx:309
 AliMUONTrackReconstructorK.cxx:310
 AliMUONTrackReconstructorK.cxx:311
 AliMUONTrackReconstructorK.cxx:312
 AliMUONTrackReconstructorK.cxx:313
 AliMUONTrackReconstructorK.cxx:314
 AliMUONTrackReconstructorK.cxx:315
 AliMUONTrackReconstructorK.cxx:316
 AliMUONTrackReconstructorK.cxx:317
 AliMUONTrackReconstructorK.cxx:318
 AliMUONTrackReconstructorK.cxx:319
 AliMUONTrackReconstructorK.cxx:320
 AliMUONTrackReconstructorK.cxx:321
 AliMUONTrackReconstructorK.cxx:322
 AliMUONTrackReconstructorK.cxx:323
 AliMUONTrackReconstructorK.cxx:324
 AliMUONTrackReconstructorK.cxx:325
 AliMUONTrackReconstructorK.cxx:326
 AliMUONTrackReconstructorK.cxx:327
 AliMUONTrackReconstructorK.cxx:328
 AliMUONTrackReconstructorK.cxx:329
 AliMUONTrackReconstructorK.cxx:330
 AliMUONTrackReconstructorK.cxx:331
 AliMUONTrackReconstructorK.cxx:332
 AliMUONTrackReconstructorK.cxx:333
 AliMUONTrackReconstructorK.cxx:334
 AliMUONTrackReconstructorK.cxx:335
 AliMUONTrackReconstructorK.cxx:336
 AliMUONTrackReconstructorK.cxx:337
 AliMUONTrackReconstructorK.cxx:338
 AliMUONTrackReconstructorK.cxx:339
 AliMUONTrackReconstructorK.cxx:340
 AliMUONTrackReconstructorK.cxx:341
 AliMUONTrackReconstructorK.cxx:342
 AliMUONTrackReconstructorK.cxx:343
 AliMUONTrackReconstructorK.cxx:344
 AliMUONTrackReconstructorK.cxx:345
 AliMUONTrackReconstructorK.cxx:346
 AliMUONTrackReconstructorK.cxx:347
 AliMUONTrackReconstructorK.cxx:348
 AliMUONTrackReconstructorK.cxx:349
 AliMUONTrackReconstructorK.cxx:350
 AliMUONTrackReconstructorK.cxx:351
 AliMUONTrackReconstructorK.cxx:352
 AliMUONTrackReconstructorK.cxx:353
 AliMUONTrackReconstructorK.cxx:354
 AliMUONTrackReconstructorK.cxx:355
 AliMUONTrackReconstructorK.cxx:356
 AliMUONTrackReconstructorK.cxx:357
 AliMUONTrackReconstructorK.cxx:358
 AliMUONTrackReconstructorK.cxx:359
 AliMUONTrackReconstructorK.cxx:360
 AliMUONTrackReconstructorK.cxx:361
 AliMUONTrackReconstructorK.cxx:362
 AliMUONTrackReconstructorK.cxx:363
 AliMUONTrackReconstructorK.cxx:364
 AliMUONTrackReconstructorK.cxx:365
 AliMUONTrackReconstructorK.cxx:366
 AliMUONTrackReconstructorK.cxx:367
 AliMUONTrackReconstructorK.cxx:368
 AliMUONTrackReconstructorK.cxx:369
 AliMUONTrackReconstructorK.cxx:370
 AliMUONTrackReconstructorK.cxx:371
 AliMUONTrackReconstructorK.cxx:372
 AliMUONTrackReconstructorK.cxx:373
 AliMUONTrackReconstructorK.cxx:374
 AliMUONTrackReconstructorK.cxx:375
 AliMUONTrackReconstructorK.cxx:376
 AliMUONTrackReconstructorK.cxx:377
 AliMUONTrackReconstructorK.cxx:378
 AliMUONTrackReconstructorK.cxx:379
 AliMUONTrackReconstructorK.cxx:380
 AliMUONTrackReconstructorK.cxx:381
 AliMUONTrackReconstructorK.cxx:382
 AliMUONTrackReconstructorK.cxx:383
 AliMUONTrackReconstructorK.cxx:384
 AliMUONTrackReconstructorK.cxx:385
 AliMUONTrackReconstructorK.cxx:386
 AliMUONTrackReconstructorK.cxx:387
 AliMUONTrackReconstructorK.cxx:388
 AliMUONTrackReconstructorK.cxx:389
 AliMUONTrackReconstructorK.cxx:390
 AliMUONTrackReconstructorK.cxx:391
 AliMUONTrackReconstructorK.cxx:392
 AliMUONTrackReconstructorK.cxx:393
 AliMUONTrackReconstructorK.cxx:394
 AliMUONTrackReconstructorK.cxx:395
 AliMUONTrackReconstructorK.cxx:396
 AliMUONTrackReconstructorK.cxx:397
 AliMUONTrackReconstructorK.cxx:398
 AliMUONTrackReconstructorK.cxx:399
 AliMUONTrackReconstructorK.cxx:400
 AliMUONTrackReconstructorK.cxx:401
 AliMUONTrackReconstructorK.cxx:402
 AliMUONTrackReconstructorK.cxx:403
 AliMUONTrackReconstructorK.cxx:404
 AliMUONTrackReconstructorK.cxx:405
 AliMUONTrackReconstructorK.cxx:406
 AliMUONTrackReconstructorK.cxx:407
 AliMUONTrackReconstructorK.cxx:408
 AliMUONTrackReconstructorK.cxx:409
 AliMUONTrackReconstructorK.cxx:410
 AliMUONTrackReconstructorK.cxx:411
 AliMUONTrackReconstructorK.cxx:412
 AliMUONTrackReconstructorK.cxx:413
 AliMUONTrackReconstructorK.cxx:414
 AliMUONTrackReconstructorK.cxx:415
 AliMUONTrackReconstructorK.cxx:416
 AliMUONTrackReconstructorK.cxx:417
 AliMUONTrackReconstructorK.cxx:418
 AliMUONTrackReconstructorK.cxx:419
 AliMUONTrackReconstructorK.cxx:420
 AliMUONTrackReconstructorK.cxx:421
 AliMUONTrackReconstructorK.cxx:422
 AliMUONTrackReconstructorK.cxx:423
 AliMUONTrackReconstructorK.cxx:424
 AliMUONTrackReconstructorK.cxx:425
 AliMUONTrackReconstructorK.cxx:426
 AliMUONTrackReconstructorK.cxx:427
 AliMUONTrackReconstructorK.cxx:428
 AliMUONTrackReconstructorK.cxx:429
 AliMUONTrackReconstructorK.cxx:430
 AliMUONTrackReconstructorK.cxx:431
 AliMUONTrackReconstructorK.cxx:432
 AliMUONTrackReconstructorK.cxx:433
 AliMUONTrackReconstructorK.cxx:434
 AliMUONTrackReconstructorK.cxx:435
 AliMUONTrackReconstructorK.cxx:436
 AliMUONTrackReconstructorK.cxx:437
 AliMUONTrackReconstructorK.cxx:438
 AliMUONTrackReconstructorK.cxx:439
 AliMUONTrackReconstructorK.cxx:440
 AliMUONTrackReconstructorK.cxx:441
 AliMUONTrackReconstructorK.cxx:442
 AliMUONTrackReconstructorK.cxx:443
 AliMUONTrackReconstructorK.cxx:444
 AliMUONTrackReconstructorK.cxx:445
 AliMUONTrackReconstructorK.cxx:446
 AliMUONTrackReconstructorK.cxx:447
 AliMUONTrackReconstructorK.cxx:448
 AliMUONTrackReconstructorK.cxx:449
 AliMUONTrackReconstructorK.cxx:450
 AliMUONTrackReconstructorK.cxx:451
 AliMUONTrackReconstructorK.cxx:452
 AliMUONTrackReconstructorK.cxx:453
 AliMUONTrackReconstructorK.cxx:454
 AliMUONTrackReconstructorK.cxx:455
 AliMUONTrackReconstructorK.cxx:456
 AliMUONTrackReconstructorK.cxx:457
 AliMUONTrackReconstructorK.cxx:458
 AliMUONTrackReconstructorK.cxx:459
 AliMUONTrackReconstructorK.cxx:460
 AliMUONTrackReconstructorK.cxx:461
 AliMUONTrackReconstructorK.cxx:462
 AliMUONTrackReconstructorK.cxx:463
 AliMUONTrackReconstructorK.cxx:464
 AliMUONTrackReconstructorK.cxx:465
 AliMUONTrackReconstructorK.cxx:466
 AliMUONTrackReconstructorK.cxx:467
 AliMUONTrackReconstructorK.cxx:468
 AliMUONTrackReconstructorK.cxx:469
 AliMUONTrackReconstructorK.cxx:470
 AliMUONTrackReconstructorK.cxx:471
 AliMUONTrackReconstructorK.cxx:472
 AliMUONTrackReconstructorK.cxx:473
 AliMUONTrackReconstructorK.cxx:474
 AliMUONTrackReconstructorK.cxx:475
 AliMUONTrackReconstructorK.cxx:476
 AliMUONTrackReconstructorK.cxx:477
 AliMUONTrackReconstructorK.cxx:478
 AliMUONTrackReconstructorK.cxx:479
 AliMUONTrackReconstructorK.cxx:480
 AliMUONTrackReconstructorK.cxx:481
 AliMUONTrackReconstructorK.cxx:482
 AliMUONTrackReconstructorK.cxx:483
 AliMUONTrackReconstructorK.cxx:484
 AliMUONTrackReconstructorK.cxx:485
 AliMUONTrackReconstructorK.cxx:486
 AliMUONTrackReconstructorK.cxx:487
 AliMUONTrackReconstructorK.cxx:488
 AliMUONTrackReconstructorK.cxx:489
 AliMUONTrackReconstructorK.cxx:490
 AliMUONTrackReconstructorK.cxx:491
 AliMUONTrackReconstructorK.cxx:492
 AliMUONTrackReconstructorK.cxx:493
 AliMUONTrackReconstructorK.cxx:494
 AliMUONTrackReconstructorK.cxx:495
 AliMUONTrackReconstructorK.cxx:496
 AliMUONTrackReconstructorK.cxx:497
 AliMUONTrackReconstructorK.cxx:498
 AliMUONTrackReconstructorK.cxx:499
 AliMUONTrackReconstructorK.cxx:500
 AliMUONTrackReconstructorK.cxx:501
 AliMUONTrackReconstructorK.cxx:502
 AliMUONTrackReconstructorK.cxx:503
 AliMUONTrackReconstructorK.cxx:504
 AliMUONTrackReconstructorK.cxx:505
 AliMUONTrackReconstructorK.cxx:506
 AliMUONTrackReconstructorK.cxx:507
 AliMUONTrackReconstructorK.cxx:508
 AliMUONTrackReconstructorK.cxx:509
 AliMUONTrackReconstructorK.cxx:510
 AliMUONTrackReconstructorK.cxx:511
 AliMUONTrackReconstructorK.cxx:512
 AliMUONTrackReconstructorK.cxx:513
 AliMUONTrackReconstructorK.cxx:514
 AliMUONTrackReconstructorK.cxx:515
 AliMUONTrackReconstructorK.cxx:516
 AliMUONTrackReconstructorK.cxx:517
 AliMUONTrackReconstructorK.cxx:518
 AliMUONTrackReconstructorK.cxx:519
 AliMUONTrackReconstructorK.cxx:520
 AliMUONTrackReconstructorK.cxx:521
 AliMUONTrackReconstructorK.cxx:522
 AliMUONTrackReconstructorK.cxx:523
 AliMUONTrackReconstructorK.cxx:524
 AliMUONTrackReconstructorK.cxx:525
 AliMUONTrackReconstructorK.cxx:526
 AliMUONTrackReconstructorK.cxx:527
 AliMUONTrackReconstructorK.cxx:528
 AliMUONTrackReconstructorK.cxx:529
 AliMUONTrackReconstructorK.cxx:530
 AliMUONTrackReconstructorK.cxx:531
 AliMUONTrackReconstructorK.cxx:532
 AliMUONTrackReconstructorK.cxx:533
 AliMUONTrackReconstructorK.cxx:534
 AliMUONTrackReconstructorK.cxx:535
 AliMUONTrackReconstructorK.cxx:536
 AliMUONTrackReconstructorK.cxx:537
 AliMUONTrackReconstructorK.cxx:538
 AliMUONTrackReconstructorK.cxx:539
 AliMUONTrackReconstructorK.cxx:540
 AliMUONTrackReconstructorK.cxx:541
 AliMUONTrackReconstructorK.cxx:542
 AliMUONTrackReconstructorK.cxx:543
 AliMUONTrackReconstructorK.cxx:544
 AliMUONTrackReconstructorK.cxx:545
 AliMUONTrackReconstructorK.cxx:546
 AliMUONTrackReconstructorK.cxx:547
 AliMUONTrackReconstructorK.cxx:548
 AliMUONTrackReconstructorK.cxx:549
 AliMUONTrackReconstructorK.cxx:550
 AliMUONTrackReconstructorK.cxx:551
 AliMUONTrackReconstructorK.cxx:552
 AliMUONTrackReconstructorK.cxx:553
 AliMUONTrackReconstructorK.cxx:554
 AliMUONTrackReconstructorK.cxx:555
 AliMUONTrackReconstructorK.cxx:556
 AliMUONTrackReconstructorK.cxx:557
 AliMUONTrackReconstructorK.cxx:558
 AliMUONTrackReconstructorK.cxx:559
 AliMUONTrackReconstructorK.cxx:560
 AliMUONTrackReconstructorK.cxx:561
 AliMUONTrackReconstructorK.cxx:562
 AliMUONTrackReconstructorK.cxx:563
 AliMUONTrackReconstructorK.cxx:564
 AliMUONTrackReconstructorK.cxx:565
 AliMUONTrackReconstructorK.cxx:566
 AliMUONTrackReconstructorK.cxx:567
 AliMUONTrackReconstructorK.cxx:568
 AliMUONTrackReconstructorK.cxx:569
 AliMUONTrackReconstructorK.cxx:570
 AliMUONTrackReconstructorK.cxx:571
 AliMUONTrackReconstructorK.cxx:572
 AliMUONTrackReconstructorK.cxx:573
 AliMUONTrackReconstructorK.cxx:574
 AliMUONTrackReconstructorK.cxx:575
 AliMUONTrackReconstructorK.cxx:576
 AliMUONTrackReconstructorK.cxx:577
 AliMUONTrackReconstructorK.cxx:578
 AliMUONTrackReconstructorK.cxx:579
 AliMUONTrackReconstructorK.cxx:580
 AliMUONTrackReconstructorK.cxx:581
 AliMUONTrackReconstructorK.cxx:582
 AliMUONTrackReconstructorK.cxx:583
 AliMUONTrackReconstructorK.cxx:584
 AliMUONTrackReconstructorK.cxx:585
 AliMUONTrackReconstructorK.cxx:586
 AliMUONTrackReconstructorK.cxx:587
 AliMUONTrackReconstructorK.cxx:588
 AliMUONTrackReconstructorK.cxx:589
 AliMUONTrackReconstructorK.cxx:590
 AliMUONTrackReconstructorK.cxx:591
 AliMUONTrackReconstructorK.cxx:592
 AliMUONTrackReconstructorK.cxx:593
 AliMUONTrackReconstructorK.cxx:594
 AliMUONTrackReconstructorK.cxx:595
 AliMUONTrackReconstructorK.cxx:596
 AliMUONTrackReconstructorK.cxx:597
 AliMUONTrackReconstructorK.cxx:598
 AliMUONTrackReconstructorK.cxx:599
 AliMUONTrackReconstructorK.cxx:600
 AliMUONTrackReconstructorK.cxx:601
 AliMUONTrackReconstructorK.cxx:602
 AliMUONTrackReconstructorK.cxx:603
 AliMUONTrackReconstructorK.cxx:604
 AliMUONTrackReconstructorK.cxx:605
 AliMUONTrackReconstructorK.cxx:606
 AliMUONTrackReconstructorK.cxx:607
 AliMUONTrackReconstructorK.cxx:608
 AliMUONTrackReconstructorK.cxx:609
 AliMUONTrackReconstructorK.cxx:610
 AliMUONTrackReconstructorK.cxx:611
 AliMUONTrackReconstructorK.cxx:612
 AliMUONTrackReconstructorK.cxx:613
 AliMUONTrackReconstructorK.cxx:614
 AliMUONTrackReconstructorK.cxx:615
 AliMUONTrackReconstructorK.cxx:616
 AliMUONTrackReconstructorK.cxx:617
 AliMUONTrackReconstructorK.cxx:618
 AliMUONTrackReconstructorK.cxx:619
 AliMUONTrackReconstructorK.cxx:620
 AliMUONTrackReconstructorK.cxx:621
 AliMUONTrackReconstructorK.cxx:622
 AliMUONTrackReconstructorK.cxx:623
 AliMUONTrackReconstructorK.cxx:624
 AliMUONTrackReconstructorK.cxx:625
 AliMUONTrackReconstructorK.cxx:626
 AliMUONTrackReconstructorK.cxx:627
 AliMUONTrackReconstructorK.cxx:628
 AliMUONTrackReconstructorK.cxx:629
 AliMUONTrackReconstructorK.cxx:630
 AliMUONTrackReconstructorK.cxx:631
 AliMUONTrackReconstructorK.cxx:632
 AliMUONTrackReconstructorK.cxx:633
 AliMUONTrackReconstructorK.cxx:634
 AliMUONTrackReconstructorK.cxx:635
 AliMUONTrackReconstructorK.cxx:636
 AliMUONTrackReconstructorK.cxx:637
 AliMUONTrackReconstructorK.cxx:638
 AliMUONTrackReconstructorK.cxx:639
 AliMUONTrackReconstructorK.cxx:640
 AliMUONTrackReconstructorK.cxx:641
 AliMUONTrackReconstructorK.cxx:642
 AliMUONTrackReconstructorK.cxx:643
 AliMUONTrackReconstructorK.cxx:644
 AliMUONTrackReconstructorK.cxx:645
 AliMUONTrackReconstructorK.cxx:646
 AliMUONTrackReconstructorK.cxx:647
 AliMUONTrackReconstructorK.cxx:648
 AliMUONTrackReconstructorK.cxx:649
 AliMUONTrackReconstructorK.cxx:650
 AliMUONTrackReconstructorK.cxx:651
 AliMUONTrackReconstructorK.cxx:652
 AliMUONTrackReconstructorK.cxx:653
 AliMUONTrackReconstructorK.cxx:654
 AliMUONTrackReconstructorK.cxx:655
 AliMUONTrackReconstructorK.cxx:656
 AliMUONTrackReconstructorK.cxx:657
 AliMUONTrackReconstructorK.cxx:658
 AliMUONTrackReconstructorK.cxx:659
 AliMUONTrackReconstructorK.cxx:660
 AliMUONTrackReconstructorK.cxx:661
 AliMUONTrackReconstructorK.cxx:662
 AliMUONTrackReconstructorK.cxx:663
 AliMUONTrackReconstructorK.cxx:664
 AliMUONTrackReconstructorK.cxx:665
 AliMUONTrackReconstructorK.cxx:666
 AliMUONTrackReconstructorK.cxx:667
 AliMUONTrackReconstructorK.cxx:668
 AliMUONTrackReconstructorK.cxx:669
 AliMUONTrackReconstructorK.cxx:670
 AliMUONTrackReconstructorK.cxx:671
 AliMUONTrackReconstructorK.cxx:672
 AliMUONTrackReconstructorK.cxx:673
 AliMUONTrackReconstructorK.cxx:674
 AliMUONTrackReconstructorK.cxx:675
 AliMUONTrackReconstructorK.cxx:676
 AliMUONTrackReconstructorK.cxx:677
 AliMUONTrackReconstructorK.cxx:678
 AliMUONTrackReconstructorK.cxx:679
 AliMUONTrackReconstructorK.cxx:680
 AliMUONTrackReconstructorK.cxx:681
 AliMUONTrackReconstructorK.cxx:682
 AliMUONTrackReconstructorK.cxx:683
 AliMUONTrackReconstructorK.cxx:684
 AliMUONTrackReconstructorK.cxx:685
 AliMUONTrackReconstructorK.cxx:686
 AliMUONTrackReconstructorK.cxx:687
 AliMUONTrackReconstructorK.cxx:688
 AliMUONTrackReconstructorK.cxx:689
 AliMUONTrackReconstructorK.cxx:690
 AliMUONTrackReconstructorK.cxx:691
 AliMUONTrackReconstructorK.cxx:692
 AliMUONTrackReconstructorK.cxx:693
 AliMUONTrackReconstructorK.cxx:694
 AliMUONTrackReconstructorK.cxx:695
 AliMUONTrackReconstructorK.cxx:696
 AliMUONTrackReconstructorK.cxx:697
 AliMUONTrackReconstructorK.cxx:698
 AliMUONTrackReconstructorK.cxx:699
 AliMUONTrackReconstructorK.cxx:700
 AliMUONTrackReconstructorK.cxx:701
 AliMUONTrackReconstructorK.cxx:702
 AliMUONTrackReconstructorK.cxx:703
 AliMUONTrackReconstructorK.cxx:704
 AliMUONTrackReconstructorK.cxx:705
 AliMUONTrackReconstructorK.cxx:706
 AliMUONTrackReconstructorK.cxx:707
 AliMUONTrackReconstructorK.cxx:708
 AliMUONTrackReconstructorK.cxx:709
 AliMUONTrackReconstructorK.cxx:710
 AliMUONTrackReconstructorK.cxx:711
 AliMUONTrackReconstructorK.cxx:712
 AliMUONTrackReconstructorK.cxx:713
 AliMUONTrackReconstructorK.cxx:714
 AliMUONTrackReconstructorK.cxx:715
 AliMUONTrackReconstructorK.cxx:716
 AliMUONTrackReconstructorK.cxx:717
 AliMUONTrackReconstructorK.cxx:718
 AliMUONTrackReconstructorK.cxx:719
 AliMUONTrackReconstructorK.cxx:720
 AliMUONTrackReconstructorK.cxx:721
 AliMUONTrackReconstructorK.cxx:722
 AliMUONTrackReconstructorK.cxx:723
 AliMUONTrackReconstructorK.cxx:724
 AliMUONTrackReconstructorK.cxx:725
 AliMUONTrackReconstructorK.cxx:726
 AliMUONTrackReconstructorK.cxx:727
 AliMUONTrackReconstructorK.cxx:728
 AliMUONTrackReconstructorK.cxx:729
 AliMUONTrackReconstructorK.cxx:730
 AliMUONTrackReconstructorK.cxx:731
 AliMUONTrackReconstructorK.cxx:732
 AliMUONTrackReconstructorK.cxx:733
 AliMUONTrackReconstructorK.cxx:734
 AliMUONTrackReconstructorK.cxx:735
 AliMUONTrackReconstructorK.cxx:736
 AliMUONTrackReconstructorK.cxx:737
 AliMUONTrackReconstructorK.cxx:738
 AliMUONTrackReconstructorK.cxx:739
 AliMUONTrackReconstructorK.cxx:740
 AliMUONTrackReconstructorK.cxx:741
 AliMUONTrackReconstructorK.cxx:742
 AliMUONTrackReconstructorK.cxx:743
 AliMUONTrackReconstructorK.cxx:744
 AliMUONTrackReconstructorK.cxx:745
 AliMUONTrackReconstructorK.cxx:746
 AliMUONTrackReconstructorK.cxx:747
 AliMUONTrackReconstructorK.cxx:748
 AliMUONTrackReconstructorK.cxx:749
 AliMUONTrackReconstructorK.cxx:750
 AliMUONTrackReconstructorK.cxx:751
 AliMUONTrackReconstructorK.cxx:752
 AliMUONTrackReconstructorK.cxx:753
 AliMUONTrackReconstructorK.cxx:754
 AliMUONTrackReconstructorK.cxx:755
 AliMUONTrackReconstructorK.cxx:756
 AliMUONTrackReconstructorK.cxx:757
 AliMUONTrackReconstructorK.cxx:758
 AliMUONTrackReconstructorK.cxx:759
 AliMUONTrackReconstructorK.cxx:760
 AliMUONTrackReconstructorK.cxx:761
 AliMUONTrackReconstructorK.cxx:762
 AliMUONTrackReconstructorK.cxx:763
 AliMUONTrackReconstructorK.cxx:764
 AliMUONTrackReconstructorK.cxx:765
 AliMUONTrackReconstructorK.cxx:766
 AliMUONTrackReconstructorK.cxx:767
 AliMUONTrackReconstructorK.cxx:768
 AliMUONTrackReconstructorK.cxx:769
 AliMUONTrackReconstructorK.cxx:770
 AliMUONTrackReconstructorK.cxx:771
 AliMUONTrackReconstructorK.cxx:772
 AliMUONTrackReconstructorK.cxx:773
 AliMUONTrackReconstructorK.cxx:774
 AliMUONTrackReconstructorK.cxx:775
 AliMUONTrackReconstructorK.cxx:776
 AliMUONTrackReconstructorK.cxx:777
 AliMUONTrackReconstructorK.cxx:778
 AliMUONTrackReconstructorK.cxx:779
 AliMUONTrackReconstructorK.cxx:780
 AliMUONTrackReconstructorK.cxx:781
 AliMUONTrackReconstructorK.cxx:782
 AliMUONTrackReconstructorK.cxx:783
 AliMUONTrackReconstructorK.cxx:784
 AliMUONTrackReconstructorK.cxx:785
 AliMUONTrackReconstructorK.cxx:786
 AliMUONTrackReconstructorK.cxx:787
 AliMUONTrackReconstructorK.cxx:788
 AliMUONTrackReconstructorK.cxx:789
 AliMUONTrackReconstructorK.cxx:790
 AliMUONTrackReconstructorK.cxx:791
 AliMUONTrackReconstructorK.cxx:792
 AliMUONTrackReconstructorK.cxx:793
 AliMUONTrackReconstructorK.cxx:794
 AliMUONTrackReconstructorK.cxx:795
 AliMUONTrackReconstructorK.cxx:796
 AliMUONTrackReconstructorK.cxx:797
 AliMUONTrackReconstructorK.cxx:798
 AliMUONTrackReconstructorK.cxx:799
 AliMUONTrackReconstructorK.cxx:800
 AliMUONTrackReconstructorK.cxx:801
 AliMUONTrackReconstructorK.cxx:802
 AliMUONTrackReconstructorK.cxx:803
 AliMUONTrackReconstructorK.cxx:804
 AliMUONTrackReconstructorK.cxx:805
 AliMUONTrackReconstructorK.cxx:806
 AliMUONTrackReconstructorK.cxx:807
 AliMUONTrackReconstructorK.cxx:808
 AliMUONTrackReconstructorK.cxx:809
 AliMUONTrackReconstructorK.cxx:810
 AliMUONTrackReconstructorK.cxx:811
 AliMUONTrackReconstructorK.cxx:812
 AliMUONTrackReconstructorK.cxx:813
 AliMUONTrackReconstructorK.cxx:814
 AliMUONTrackReconstructorK.cxx:815
 AliMUONTrackReconstructorK.cxx:816
 AliMUONTrackReconstructorK.cxx:817
 AliMUONTrackReconstructorK.cxx:818
 AliMUONTrackReconstructorK.cxx:819
 AliMUONTrackReconstructorK.cxx:820
 AliMUONTrackReconstructorK.cxx:821
 AliMUONTrackReconstructorK.cxx:822
 AliMUONTrackReconstructorK.cxx:823
 AliMUONTrackReconstructorK.cxx:824
 AliMUONTrackReconstructorK.cxx:825
 AliMUONTrackReconstructorK.cxx:826
 AliMUONTrackReconstructorK.cxx:827
 AliMUONTrackReconstructorK.cxx:828
 AliMUONTrackReconstructorK.cxx:829
 AliMUONTrackReconstructorK.cxx:830
 AliMUONTrackReconstructorK.cxx:831
 AliMUONTrackReconstructorK.cxx:832
 AliMUONTrackReconstructorK.cxx:833
 AliMUONTrackReconstructorK.cxx:834
 AliMUONTrackReconstructorK.cxx:835
 AliMUONTrackReconstructorK.cxx:836
 AliMUONTrackReconstructorK.cxx:837
 AliMUONTrackReconstructorK.cxx:838
 AliMUONTrackReconstructorK.cxx:839
 AliMUONTrackReconstructorK.cxx:840
 AliMUONTrackReconstructorK.cxx:841
 AliMUONTrackReconstructorK.cxx:842
 AliMUONTrackReconstructorK.cxx:843
 AliMUONTrackReconstructorK.cxx:844
 AliMUONTrackReconstructorK.cxx:845
 AliMUONTrackReconstructorK.cxx:846
 AliMUONTrackReconstructorK.cxx:847
 AliMUONTrackReconstructorK.cxx:848
 AliMUONTrackReconstructorK.cxx:849
 AliMUONTrackReconstructorK.cxx:850
 AliMUONTrackReconstructorK.cxx:851
 AliMUONTrackReconstructorK.cxx:852
 AliMUONTrackReconstructorK.cxx:853
 AliMUONTrackReconstructorK.cxx:854
 AliMUONTrackReconstructorK.cxx:855
 AliMUONTrackReconstructorK.cxx:856
 AliMUONTrackReconstructorK.cxx:857
 AliMUONTrackReconstructorK.cxx:858
 AliMUONTrackReconstructorK.cxx:859
 AliMUONTrackReconstructorK.cxx:860
 AliMUONTrackReconstructorK.cxx:861
 AliMUONTrackReconstructorK.cxx:862
 AliMUONTrackReconstructorK.cxx:863
 AliMUONTrackReconstructorK.cxx:864
 AliMUONTrackReconstructorK.cxx:865
 AliMUONTrackReconstructorK.cxx:866
 AliMUONTrackReconstructorK.cxx:867
 AliMUONTrackReconstructorK.cxx:868
 AliMUONTrackReconstructorK.cxx:869
 AliMUONTrackReconstructorK.cxx:870
 AliMUONTrackReconstructorK.cxx:871
 AliMUONTrackReconstructorK.cxx:872
 AliMUONTrackReconstructorK.cxx:873
 AliMUONTrackReconstructorK.cxx:874
 AliMUONTrackReconstructorK.cxx:875
 AliMUONTrackReconstructorK.cxx:876
 AliMUONTrackReconstructorK.cxx:877
 AliMUONTrackReconstructorK.cxx:878
 AliMUONTrackReconstructorK.cxx:879
 AliMUONTrackReconstructorK.cxx:880
 AliMUONTrackReconstructorK.cxx:881
 AliMUONTrackReconstructorK.cxx:882
 AliMUONTrackReconstructorK.cxx:883
 AliMUONTrackReconstructorK.cxx:884
 AliMUONTrackReconstructorK.cxx:885
 AliMUONTrackReconstructorK.cxx:886
 AliMUONTrackReconstructorK.cxx:887
 AliMUONTrackReconstructorK.cxx:888
 AliMUONTrackReconstructorK.cxx:889
 AliMUONTrackReconstructorK.cxx:890
 AliMUONTrackReconstructorK.cxx:891
 AliMUONTrackReconstructorK.cxx:892
 AliMUONTrackReconstructorK.cxx:893
 AliMUONTrackReconstructorK.cxx:894
 AliMUONTrackReconstructorK.cxx:895
 AliMUONTrackReconstructorK.cxx:896
 AliMUONTrackReconstructorK.cxx:897
 AliMUONTrackReconstructorK.cxx:898
 AliMUONTrackReconstructorK.cxx:899
 AliMUONTrackReconstructorK.cxx:900
 AliMUONTrackReconstructorK.cxx:901
 AliMUONTrackReconstructorK.cxx:902
 AliMUONTrackReconstructorK.cxx:903
 AliMUONTrackReconstructorK.cxx:904
 AliMUONTrackReconstructorK.cxx:905
 AliMUONTrackReconstructorK.cxx:906
 AliMUONTrackReconstructorK.cxx:907
 AliMUONTrackReconstructorK.cxx:908
 AliMUONTrackReconstructorK.cxx:909
 AliMUONTrackReconstructorK.cxx:910
 AliMUONTrackReconstructorK.cxx:911
 AliMUONTrackReconstructorK.cxx:912
 AliMUONTrackReconstructorK.cxx:913
 AliMUONTrackReconstructorK.cxx:914
 AliMUONTrackReconstructorK.cxx:915
 AliMUONTrackReconstructorK.cxx:916
 AliMUONTrackReconstructorK.cxx:917
 AliMUONTrackReconstructorK.cxx:918
 AliMUONTrackReconstructorK.cxx:919
 AliMUONTrackReconstructorK.cxx:920
 AliMUONTrackReconstructorK.cxx:921
 AliMUONTrackReconstructorK.cxx:922
 AliMUONTrackReconstructorK.cxx:923
 AliMUONTrackReconstructorK.cxx:924
 AliMUONTrackReconstructorK.cxx:925
 AliMUONTrackReconstructorK.cxx:926
 AliMUONTrackReconstructorK.cxx:927
 AliMUONTrackReconstructorK.cxx:928
 AliMUONTrackReconstructorK.cxx:929
 AliMUONTrackReconstructorK.cxx:930
 AliMUONTrackReconstructorK.cxx:931
 AliMUONTrackReconstructorK.cxx:932
 AliMUONTrackReconstructorK.cxx:933
 AliMUONTrackReconstructorK.cxx:934
 AliMUONTrackReconstructorK.cxx:935
 AliMUONTrackReconstructorK.cxx:936
 AliMUONTrackReconstructorK.cxx:937
 AliMUONTrackReconstructorK.cxx:938
 AliMUONTrackReconstructorK.cxx:939
 AliMUONTrackReconstructorK.cxx:940
 AliMUONTrackReconstructorK.cxx:941
 AliMUONTrackReconstructorK.cxx:942
 AliMUONTrackReconstructorK.cxx:943
 AliMUONTrackReconstructorK.cxx:944
 AliMUONTrackReconstructorK.cxx:945
 AliMUONTrackReconstructorK.cxx:946
 AliMUONTrackReconstructorK.cxx:947
 AliMUONTrackReconstructorK.cxx:948
 AliMUONTrackReconstructorK.cxx:949
 AliMUONTrackReconstructorK.cxx:950
 AliMUONTrackReconstructorK.cxx:951
 AliMUONTrackReconstructorK.cxx:952
 AliMUONTrackReconstructorK.cxx:953
 AliMUONTrackReconstructorK.cxx:954
 AliMUONTrackReconstructorK.cxx:955
 AliMUONTrackReconstructorK.cxx:956
 AliMUONTrackReconstructorK.cxx:957
 AliMUONTrackReconstructorK.cxx:958
 AliMUONTrackReconstructorK.cxx:959
 AliMUONTrackReconstructorK.cxx:960
 AliMUONTrackReconstructorK.cxx:961
 AliMUONTrackReconstructorK.cxx:962
 AliMUONTrackReconstructorK.cxx:963
 AliMUONTrackReconstructorK.cxx:964
 AliMUONTrackReconstructorK.cxx:965
 AliMUONTrackReconstructorK.cxx:966
 AliMUONTrackReconstructorK.cxx:967
 AliMUONTrackReconstructorK.cxx:968
 AliMUONTrackReconstructorK.cxx:969
 AliMUONTrackReconstructorK.cxx:970
 AliMUONTrackReconstructorK.cxx:971
 AliMUONTrackReconstructorK.cxx:972
 AliMUONTrackReconstructorK.cxx:973
 AliMUONTrackReconstructorK.cxx:974
 AliMUONTrackReconstructorK.cxx:975
 AliMUONTrackReconstructorK.cxx:976
 AliMUONTrackReconstructorK.cxx:977
 AliMUONTrackReconstructorK.cxx:978
 AliMUONTrackReconstructorK.cxx:979
 AliMUONTrackReconstructorK.cxx:980
 AliMUONTrackReconstructorK.cxx:981
 AliMUONTrackReconstructorK.cxx:982
 AliMUONTrackReconstructorK.cxx:983
 AliMUONTrackReconstructorK.cxx:984
 AliMUONTrackReconstructorK.cxx:985
 AliMUONTrackReconstructorK.cxx:986
 AliMUONTrackReconstructorK.cxx:987
 AliMUONTrackReconstructorK.cxx:988
 AliMUONTrackReconstructorK.cxx:989
 AliMUONTrackReconstructorK.cxx:990
 AliMUONTrackReconstructorK.cxx:991
 AliMUONTrackReconstructorK.cxx:992
 AliMUONTrackReconstructorK.cxx:993
 AliMUONTrackReconstructorK.cxx:994
 AliMUONTrackReconstructorK.cxx:995
 AliMUONTrackReconstructorK.cxx:996
 AliMUONTrackReconstructorK.cxx:997
 AliMUONTrackReconstructorK.cxx:998
 AliMUONTrackReconstructorK.cxx:999
 AliMUONTrackReconstructorK.cxx:1000
 AliMUONTrackReconstructorK.cxx:1001
 AliMUONTrackReconstructorK.cxx:1002
 AliMUONTrackReconstructorK.cxx:1003
 AliMUONTrackReconstructorK.cxx:1004
 AliMUONTrackReconstructorK.cxx:1005
 AliMUONTrackReconstructorK.cxx:1006
 AliMUONTrackReconstructorK.cxx:1007
 AliMUONTrackReconstructorK.cxx:1008
 AliMUONTrackReconstructorK.cxx:1009
 AliMUONTrackReconstructorK.cxx:1010
 AliMUONTrackReconstructorK.cxx:1011
 AliMUONTrackReconstructorK.cxx:1012
 AliMUONTrackReconstructorK.cxx:1013
 AliMUONTrackReconstructorK.cxx:1014
 AliMUONTrackReconstructorK.cxx:1015
 AliMUONTrackReconstructorK.cxx:1016
 AliMUONTrackReconstructorK.cxx:1017
 AliMUONTrackReconstructorK.cxx:1018
 AliMUONTrackReconstructorK.cxx:1019
 AliMUONTrackReconstructorK.cxx:1020
 AliMUONTrackReconstructorK.cxx:1021
 AliMUONTrackReconstructorK.cxx:1022
 AliMUONTrackReconstructorK.cxx:1023
 AliMUONTrackReconstructorK.cxx:1024
 AliMUONTrackReconstructorK.cxx:1025
 AliMUONTrackReconstructorK.cxx:1026
 AliMUONTrackReconstructorK.cxx:1027
 AliMUONTrackReconstructorK.cxx:1028
 AliMUONTrackReconstructorK.cxx:1029
 AliMUONTrackReconstructorK.cxx:1030
 AliMUONTrackReconstructorK.cxx:1031
 AliMUONTrackReconstructorK.cxx:1032
 AliMUONTrackReconstructorK.cxx:1033
 AliMUONTrackReconstructorK.cxx:1034
 AliMUONTrackReconstructorK.cxx:1035
 AliMUONTrackReconstructorK.cxx:1036
 AliMUONTrackReconstructorK.cxx:1037
 AliMUONTrackReconstructorK.cxx:1038
 AliMUONTrackReconstructorK.cxx:1039
 AliMUONTrackReconstructorK.cxx:1040
 AliMUONTrackReconstructorK.cxx:1041
 AliMUONTrackReconstructorK.cxx:1042
 AliMUONTrackReconstructorK.cxx:1043
 AliMUONTrackReconstructorK.cxx:1044
 AliMUONTrackReconstructorK.cxx:1045
 AliMUONTrackReconstructorK.cxx:1046
 AliMUONTrackReconstructorK.cxx:1047
 AliMUONTrackReconstructorK.cxx:1048
 AliMUONTrackReconstructorK.cxx:1049
 AliMUONTrackReconstructorK.cxx:1050
 AliMUONTrackReconstructorK.cxx:1051
 AliMUONTrackReconstructorK.cxx:1052
 AliMUONTrackReconstructorK.cxx:1053
 AliMUONTrackReconstructorK.cxx:1054
 AliMUONTrackReconstructorK.cxx:1055
 AliMUONTrackReconstructorK.cxx:1056
 AliMUONTrackReconstructorK.cxx:1057
 AliMUONTrackReconstructorK.cxx:1058
 AliMUONTrackReconstructorK.cxx:1059
 AliMUONTrackReconstructorK.cxx:1060
 AliMUONTrackReconstructorK.cxx:1061
 AliMUONTrackReconstructorK.cxx:1062
 AliMUONTrackReconstructorK.cxx:1063
 AliMUONTrackReconstructorK.cxx:1064
 AliMUONTrackReconstructorK.cxx:1065
 AliMUONTrackReconstructorK.cxx:1066
 AliMUONTrackReconstructorK.cxx:1067
 AliMUONTrackReconstructorK.cxx:1068
 AliMUONTrackReconstructorK.cxx:1069
 AliMUONTrackReconstructorK.cxx:1070
 AliMUONTrackReconstructorK.cxx:1071
 AliMUONTrackReconstructorK.cxx:1072
 AliMUONTrackReconstructorK.cxx:1073
 AliMUONTrackReconstructorK.cxx:1074
 AliMUONTrackReconstructorK.cxx:1075
 AliMUONTrackReconstructorK.cxx:1076
 AliMUONTrackReconstructorK.cxx:1077
 AliMUONTrackReconstructorK.cxx:1078
 AliMUONTrackReconstructorK.cxx:1079
 AliMUONTrackReconstructorK.cxx:1080
 AliMUONTrackReconstructorK.cxx:1081
 AliMUONTrackReconstructorK.cxx:1082
 AliMUONTrackReconstructorK.cxx:1083
 AliMUONTrackReconstructorK.cxx:1084
 AliMUONTrackReconstructorK.cxx:1085
 AliMUONTrackReconstructorK.cxx:1086
 AliMUONTrackReconstructorK.cxx:1087
 AliMUONTrackReconstructorK.cxx:1088
 AliMUONTrackReconstructorK.cxx:1089
 AliMUONTrackReconstructorK.cxx:1090
 AliMUONTrackReconstructorK.cxx:1091
 AliMUONTrackReconstructorK.cxx:1092
 AliMUONTrackReconstructorK.cxx:1093
 AliMUONTrackReconstructorK.cxx:1094
 AliMUONTrackReconstructorK.cxx:1095
 AliMUONTrackReconstructorK.cxx:1096
 AliMUONTrackReconstructorK.cxx:1097
 AliMUONTrackReconstructorK.cxx:1098
 AliMUONTrackReconstructorK.cxx:1099
 AliMUONTrackReconstructorK.cxx:1100
 AliMUONTrackReconstructorK.cxx:1101
 AliMUONTrackReconstructorK.cxx:1102
 AliMUONTrackReconstructorK.cxx:1103
 AliMUONTrackReconstructorK.cxx:1104
 AliMUONTrackReconstructorK.cxx:1105
 AliMUONTrackReconstructorK.cxx:1106
 AliMUONTrackReconstructorK.cxx:1107
 AliMUONTrackReconstructorK.cxx:1108
 AliMUONTrackReconstructorK.cxx:1109
 AliMUONTrackReconstructorK.cxx:1110
 AliMUONTrackReconstructorK.cxx:1111
 AliMUONTrackReconstructorK.cxx:1112
 AliMUONTrackReconstructorK.cxx:1113
 AliMUONTrackReconstructorK.cxx:1114
 AliMUONTrackReconstructorK.cxx:1115
 AliMUONTrackReconstructorK.cxx:1116
 AliMUONTrackReconstructorK.cxx:1117
 AliMUONTrackReconstructorK.cxx:1118
 AliMUONTrackReconstructorK.cxx:1119
 AliMUONTrackReconstructorK.cxx:1120
 AliMUONTrackReconstructorK.cxx:1121
 AliMUONTrackReconstructorK.cxx:1122
 AliMUONTrackReconstructorK.cxx:1123
 AliMUONTrackReconstructorK.cxx:1124
 AliMUONTrackReconstructorK.cxx:1125
 AliMUONTrackReconstructorK.cxx:1126
 AliMUONTrackReconstructorK.cxx:1127
 AliMUONTrackReconstructorK.cxx:1128
 AliMUONTrackReconstructorK.cxx:1129
 AliMUONTrackReconstructorK.cxx:1130
 AliMUONTrackReconstructorK.cxx:1131
 AliMUONTrackReconstructorK.cxx:1132
 AliMUONTrackReconstructorK.cxx:1133
 AliMUONTrackReconstructorK.cxx:1134
 AliMUONTrackReconstructorK.cxx:1135
 AliMUONTrackReconstructorK.cxx:1136
 AliMUONTrackReconstructorK.cxx:1137
 AliMUONTrackReconstructorK.cxx:1138
 AliMUONTrackReconstructorK.cxx:1139
 AliMUONTrackReconstructorK.cxx:1140
 AliMUONTrackReconstructorK.cxx:1141
 AliMUONTrackReconstructorK.cxx:1142
 AliMUONTrackReconstructorK.cxx:1143
 AliMUONTrackReconstructorK.cxx:1144
 AliMUONTrackReconstructorK.cxx:1145
 AliMUONTrackReconstructorK.cxx:1146
 AliMUONTrackReconstructorK.cxx:1147
 AliMUONTrackReconstructorK.cxx:1148
 AliMUONTrackReconstructorK.cxx:1149
 AliMUONTrackReconstructorK.cxx:1150
 AliMUONTrackReconstructorK.cxx:1151
 AliMUONTrackReconstructorK.cxx:1152
 AliMUONTrackReconstructorK.cxx:1153
 AliMUONTrackReconstructorK.cxx:1154
 AliMUONTrackReconstructorK.cxx:1155
 AliMUONTrackReconstructorK.cxx:1156
 AliMUONTrackReconstructorK.cxx:1157
 AliMUONTrackReconstructorK.cxx:1158
 AliMUONTrackReconstructorK.cxx:1159
 AliMUONTrackReconstructorK.cxx:1160
 AliMUONTrackReconstructorK.cxx:1161
 AliMUONTrackReconstructorK.cxx:1162
 AliMUONTrackReconstructorK.cxx:1163
 AliMUONTrackReconstructorK.cxx:1164
 AliMUONTrackReconstructorK.cxx:1165
 AliMUONTrackReconstructorK.cxx:1166
 AliMUONTrackReconstructorK.cxx:1167
 AliMUONTrackReconstructorK.cxx:1168
 AliMUONTrackReconstructorK.cxx:1169
 AliMUONTrackReconstructorK.cxx:1170
 AliMUONTrackReconstructorK.cxx:1171
 AliMUONTrackReconstructorK.cxx:1172
 AliMUONTrackReconstructorK.cxx:1173
 AliMUONTrackReconstructorK.cxx:1174
 AliMUONTrackReconstructorK.cxx:1175
 AliMUONTrackReconstructorK.cxx:1176
 AliMUONTrackReconstructorK.cxx:1177
 AliMUONTrackReconstructorK.cxx:1178
 AliMUONTrackReconstructorK.cxx:1179
 AliMUONTrackReconstructorK.cxx:1180
 AliMUONTrackReconstructorK.cxx:1181
 AliMUONTrackReconstructorK.cxx:1182
 AliMUONTrackReconstructorK.cxx:1183
 AliMUONTrackReconstructorK.cxx:1184
 AliMUONTrackReconstructorK.cxx:1185
 AliMUONTrackReconstructorK.cxx:1186
 AliMUONTrackReconstructorK.cxx:1187
 AliMUONTrackReconstructorK.cxx:1188
 AliMUONTrackReconstructorK.cxx:1189
 AliMUONTrackReconstructorK.cxx:1190
 AliMUONTrackReconstructorK.cxx:1191
 AliMUONTrackReconstructorK.cxx:1192
 AliMUONTrackReconstructorK.cxx:1193
 AliMUONTrackReconstructorK.cxx:1194
 AliMUONTrackReconstructorK.cxx:1195
 AliMUONTrackReconstructorK.cxx:1196
 AliMUONTrackReconstructorK.cxx:1197
 AliMUONTrackReconstructorK.cxx:1198
 AliMUONTrackReconstructorK.cxx:1199
 AliMUONTrackReconstructorK.cxx:1200
 AliMUONTrackReconstructorK.cxx:1201
 AliMUONTrackReconstructorK.cxx:1202
 AliMUONTrackReconstructorK.cxx:1203
 AliMUONTrackReconstructorK.cxx:1204
 AliMUONTrackReconstructorK.cxx:1205
 AliMUONTrackReconstructorK.cxx:1206
 AliMUONTrackReconstructorK.cxx:1207
 AliMUONTrackReconstructorK.cxx:1208
 AliMUONTrackReconstructorK.cxx:1209
 AliMUONTrackReconstructorK.cxx:1210
 AliMUONTrackReconstructorK.cxx:1211
 AliMUONTrackReconstructorK.cxx:1212
 AliMUONTrackReconstructorK.cxx:1213
 AliMUONTrackReconstructorK.cxx:1214
 AliMUONTrackReconstructorK.cxx:1215
 AliMUONTrackReconstructorK.cxx:1216
 AliMUONTrackReconstructorK.cxx:1217
 AliMUONTrackReconstructorK.cxx:1218
 AliMUONTrackReconstructorK.cxx:1219
 AliMUONTrackReconstructorK.cxx:1220
 AliMUONTrackReconstructorK.cxx:1221
 AliMUONTrackReconstructorK.cxx:1222
 AliMUONTrackReconstructorK.cxx:1223
 AliMUONTrackReconstructorK.cxx:1224
 AliMUONTrackReconstructorK.cxx:1225
 AliMUONTrackReconstructorK.cxx:1226
 AliMUONTrackReconstructorK.cxx:1227
 AliMUONTrackReconstructorK.cxx:1228
 AliMUONTrackReconstructorK.cxx:1229
 AliMUONTrackReconstructorK.cxx:1230
 AliMUONTrackReconstructorK.cxx:1231
 AliMUONTrackReconstructorK.cxx:1232
 AliMUONTrackReconstructorK.cxx:1233
 AliMUONTrackReconstructorK.cxx:1234
 AliMUONTrackReconstructorK.cxx:1235
 AliMUONTrackReconstructorK.cxx:1236
 AliMUONTrackReconstructorK.cxx:1237
 AliMUONTrackReconstructorK.cxx:1238
 AliMUONTrackReconstructorK.cxx:1239
 AliMUONTrackReconstructorK.cxx:1240
 AliMUONTrackReconstructorK.cxx:1241
 AliMUONTrackReconstructorK.cxx:1242
 AliMUONTrackReconstructorK.cxx:1243
 AliMUONTrackReconstructorK.cxx:1244
 AliMUONTrackReconstructorK.cxx:1245
 AliMUONTrackReconstructorK.cxx:1246
 AliMUONTrackReconstructorK.cxx:1247
 AliMUONTrackReconstructorK.cxx:1248
 AliMUONTrackReconstructorK.cxx:1249
 AliMUONTrackReconstructorK.cxx:1250
 AliMUONTrackReconstructorK.cxx:1251
 AliMUONTrackReconstructorK.cxx:1252
 AliMUONTrackReconstructorK.cxx:1253
 AliMUONTrackReconstructorK.cxx:1254
 AliMUONTrackReconstructorK.cxx:1255
 AliMUONTrackReconstructorK.cxx:1256
 AliMUONTrackReconstructorK.cxx:1257
 AliMUONTrackReconstructorK.cxx:1258
 AliMUONTrackReconstructorK.cxx:1259
 AliMUONTrackReconstructorK.cxx:1260
 AliMUONTrackReconstructorK.cxx:1261
 AliMUONTrackReconstructorK.cxx:1262
 AliMUONTrackReconstructorK.cxx:1263
 AliMUONTrackReconstructorK.cxx:1264
 AliMUONTrackReconstructorK.cxx:1265
 AliMUONTrackReconstructorK.cxx:1266
 AliMUONTrackReconstructorK.cxx:1267
 AliMUONTrackReconstructorK.cxx:1268
 AliMUONTrackReconstructorK.cxx:1269
 AliMUONTrackReconstructorK.cxx:1270
 AliMUONTrackReconstructorK.cxx:1271
 AliMUONTrackReconstructorK.cxx:1272
 AliMUONTrackReconstructorK.cxx:1273
 AliMUONTrackReconstructorK.cxx:1274
 AliMUONTrackReconstructorK.cxx:1275
 AliMUONTrackReconstructorK.cxx:1276
 AliMUONTrackReconstructorK.cxx:1277
 AliMUONTrackReconstructorK.cxx:1278
 AliMUONTrackReconstructorK.cxx:1279
 AliMUONTrackReconstructorK.cxx:1280
 AliMUONTrackReconstructorK.cxx:1281
 AliMUONTrackReconstructorK.cxx:1282
 AliMUONTrackReconstructorK.cxx:1283
 AliMUONTrackReconstructorK.cxx:1284
 AliMUONTrackReconstructorK.cxx:1285
 AliMUONTrackReconstructorK.cxx:1286
 AliMUONTrackReconstructorK.cxx:1287
 AliMUONTrackReconstructorK.cxx:1288
 AliMUONTrackReconstructorK.cxx:1289
 AliMUONTrackReconstructorK.cxx:1290
 AliMUONTrackReconstructorK.cxx:1291
 AliMUONTrackReconstructorK.cxx:1292
 AliMUONTrackReconstructorK.cxx:1293
 AliMUONTrackReconstructorK.cxx:1294
 AliMUONTrackReconstructorK.cxx:1295
 AliMUONTrackReconstructorK.cxx:1296
 AliMUONTrackReconstructorK.cxx:1297
 AliMUONTrackReconstructorK.cxx:1298
 AliMUONTrackReconstructorK.cxx:1299
 AliMUONTrackReconstructorK.cxx:1300
 AliMUONTrackReconstructorK.cxx:1301
 AliMUONTrackReconstructorK.cxx:1302
 AliMUONTrackReconstructorK.cxx:1303
 AliMUONTrackReconstructorK.cxx:1304
 AliMUONTrackReconstructorK.cxx:1305
 AliMUONTrackReconstructorK.cxx:1306
 AliMUONTrackReconstructorK.cxx:1307
 AliMUONTrackReconstructorK.cxx:1308
 AliMUONTrackReconstructorK.cxx:1309
 AliMUONTrackReconstructorK.cxx:1310
 AliMUONTrackReconstructorK.cxx:1311
 AliMUONTrackReconstructorK.cxx:1312
 AliMUONTrackReconstructorK.cxx:1313
 AliMUONTrackReconstructorK.cxx:1314
 AliMUONTrackReconstructorK.cxx:1315
 AliMUONTrackReconstructorK.cxx:1316
 AliMUONTrackReconstructorK.cxx:1317
 AliMUONTrackReconstructorK.cxx:1318
 AliMUONTrackReconstructorK.cxx:1319
 AliMUONTrackReconstructorK.cxx:1320
 AliMUONTrackReconstructorK.cxx:1321
 AliMUONTrackReconstructorK.cxx:1322
 AliMUONTrackReconstructorK.cxx:1323
 AliMUONTrackReconstructorK.cxx:1324
 AliMUONTrackReconstructorK.cxx:1325
 AliMUONTrackReconstructorK.cxx:1326
 AliMUONTrackReconstructorK.cxx:1327
 AliMUONTrackReconstructorK.cxx:1328
 AliMUONTrackReconstructorK.cxx:1329
 AliMUONTrackReconstructorK.cxx:1330
 AliMUONTrackReconstructorK.cxx:1331
 AliMUONTrackReconstructorK.cxx:1332
 AliMUONTrackReconstructorK.cxx:1333
 AliMUONTrackReconstructorK.cxx:1334
 AliMUONTrackReconstructorK.cxx:1335
 AliMUONTrackReconstructorK.cxx:1336
 AliMUONTrackReconstructorK.cxx:1337
 AliMUONTrackReconstructorK.cxx:1338
 AliMUONTrackReconstructorK.cxx:1339
 AliMUONTrackReconstructorK.cxx:1340
 AliMUONTrackReconstructorK.cxx:1341
 AliMUONTrackReconstructorK.cxx:1342
 AliMUONTrackReconstructorK.cxx:1343
 AliMUONTrackReconstructorK.cxx:1344
 AliMUONTrackReconstructorK.cxx:1345
 AliMUONTrackReconstructorK.cxx:1346
 AliMUONTrackReconstructorK.cxx:1347
 AliMUONTrackReconstructorK.cxx:1348
 AliMUONTrackReconstructorK.cxx:1349
 AliMUONTrackReconstructorK.cxx:1350
 AliMUONTrackReconstructorK.cxx:1351
 AliMUONTrackReconstructorK.cxx:1352
 AliMUONTrackReconstructorK.cxx:1353
 AliMUONTrackReconstructorK.cxx:1354
 AliMUONTrackReconstructorK.cxx:1355
 AliMUONTrackReconstructorK.cxx:1356
 AliMUONTrackReconstructorK.cxx:1357
 AliMUONTrackReconstructorK.cxx:1358
 AliMUONTrackReconstructorK.cxx:1359
 AliMUONTrackReconstructorK.cxx:1360
 AliMUONTrackReconstructorK.cxx:1361
 AliMUONTrackReconstructorK.cxx:1362
 AliMUONTrackReconstructorK.cxx:1363
 AliMUONTrackReconstructorK.cxx:1364
 AliMUONTrackReconstructorK.cxx:1365
 AliMUONTrackReconstructorK.cxx:1366
 AliMUONTrackReconstructorK.cxx:1367
 AliMUONTrackReconstructorK.cxx:1368
 AliMUONTrackReconstructorK.cxx:1369
 AliMUONTrackReconstructorK.cxx:1370
 AliMUONTrackReconstructorK.cxx:1371
 AliMUONTrackReconstructorK.cxx:1372
 AliMUONTrackReconstructorK.cxx:1373
 AliMUONTrackReconstructorK.cxx:1374
 AliMUONTrackReconstructorK.cxx:1375
 AliMUONTrackReconstructorK.cxx:1376
 AliMUONTrackReconstructorK.cxx:1377
 AliMUONTrackReconstructorK.cxx:1378
 AliMUONTrackReconstructorK.cxx:1379
 AliMUONTrackReconstructorK.cxx:1380
 AliMUONTrackReconstructorK.cxx:1381
 AliMUONTrackReconstructorK.cxx:1382
 AliMUONTrackReconstructorK.cxx:1383
 AliMUONTrackReconstructorK.cxx:1384
 AliMUONTrackReconstructorK.cxx:1385
 AliMUONTrackReconstructorK.cxx:1386
 AliMUONTrackReconstructorK.cxx:1387
 AliMUONTrackReconstructorK.cxx:1388
 AliMUONTrackReconstructorK.cxx:1389
 AliMUONTrackReconstructorK.cxx:1390
 AliMUONTrackReconstructorK.cxx:1391
 AliMUONTrackReconstructorK.cxx:1392
 AliMUONTrackReconstructorK.cxx:1393
 AliMUONTrackReconstructorK.cxx:1394
 AliMUONTrackReconstructorK.cxx:1395
 AliMUONTrackReconstructorK.cxx:1396
 AliMUONTrackReconstructorK.cxx:1397
 AliMUONTrackReconstructorK.cxx:1398
 AliMUONTrackReconstructorK.cxx:1399
 AliMUONTrackReconstructorK.cxx:1400
 AliMUONTrackReconstructorK.cxx:1401
 AliMUONTrackReconstructorK.cxx:1402
 AliMUONTrackReconstructorK.cxx:1403
 AliMUONTrackReconstructorK.cxx:1404
 AliMUONTrackReconstructorK.cxx:1405
 AliMUONTrackReconstructorK.cxx:1406
 AliMUONTrackReconstructorK.cxx:1407
 AliMUONTrackReconstructorK.cxx:1408
 AliMUONTrackReconstructorK.cxx:1409
 AliMUONTrackReconstructorK.cxx:1410
 AliMUONTrackReconstructorK.cxx:1411
 AliMUONTrackReconstructorK.cxx:1412
 AliMUONTrackReconstructorK.cxx:1413
 AliMUONTrackReconstructorK.cxx:1414
 AliMUONTrackReconstructorK.cxx:1415
 AliMUONTrackReconstructorK.cxx:1416
 AliMUONTrackReconstructorK.cxx:1417
 AliMUONTrackReconstructorK.cxx:1418
 AliMUONTrackReconstructorK.cxx:1419
 AliMUONTrackReconstructorK.cxx:1420
 AliMUONTrackReconstructorK.cxx:1421
 AliMUONTrackReconstructorK.cxx:1422
 AliMUONTrackReconstructorK.cxx:1423
 AliMUONTrackReconstructorK.cxx:1424
 AliMUONTrackReconstructorK.cxx:1425
 AliMUONTrackReconstructorK.cxx:1426
 AliMUONTrackReconstructorK.cxx:1427
 AliMUONTrackReconstructorK.cxx:1428
 AliMUONTrackReconstructorK.cxx:1429
 AliMUONTrackReconstructorK.cxx:1430
 AliMUONTrackReconstructorK.cxx:1431
 AliMUONTrackReconstructorK.cxx:1432
 AliMUONTrackReconstructorK.cxx:1433
 AliMUONTrackReconstructorK.cxx:1434
 AliMUONTrackReconstructorK.cxx:1435
 AliMUONTrackReconstructorK.cxx:1436
 AliMUONTrackReconstructorK.cxx:1437
 AliMUONTrackReconstructorK.cxx:1438
 AliMUONTrackReconstructorK.cxx:1439
 AliMUONTrackReconstructorK.cxx:1440
 AliMUONTrackReconstructorK.cxx:1441
 AliMUONTrackReconstructorK.cxx:1442
 AliMUONTrackReconstructorK.cxx:1443
 AliMUONTrackReconstructorK.cxx:1444
 AliMUONTrackReconstructorK.cxx:1445
 AliMUONTrackReconstructorK.cxx:1446
 AliMUONTrackReconstructorK.cxx:1447
 AliMUONTrackReconstructorK.cxx:1448
 AliMUONTrackReconstructorK.cxx:1449
 AliMUONTrackReconstructorK.cxx:1450
 AliMUONTrackReconstructorK.cxx:1451
 AliMUONTrackReconstructorK.cxx:1452
 AliMUONTrackReconstructorK.cxx:1453
 AliMUONTrackReconstructorK.cxx:1454
 AliMUONTrackReconstructorK.cxx:1455
 AliMUONTrackReconstructorK.cxx:1456
 AliMUONTrackReconstructorK.cxx:1457
 AliMUONTrackReconstructorK.cxx:1458
 AliMUONTrackReconstructorK.cxx:1459
 AliMUONTrackReconstructorK.cxx:1460
 AliMUONTrackReconstructorK.cxx:1461
 AliMUONTrackReconstructorK.cxx:1462
 AliMUONTrackReconstructorK.cxx:1463
 AliMUONTrackReconstructorK.cxx:1464
 AliMUONTrackReconstructorK.cxx:1465
 AliMUONTrackReconstructorK.cxx:1466
 AliMUONTrackReconstructorK.cxx:1467
 AliMUONTrackReconstructorK.cxx:1468
 AliMUONTrackReconstructorK.cxx:1469
 AliMUONTrackReconstructorK.cxx:1470
 AliMUONTrackReconstructorK.cxx:1471
 AliMUONTrackReconstructorK.cxx:1472
 AliMUONTrackReconstructorK.cxx:1473
 AliMUONTrackReconstructorK.cxx:1474
 AliMUONTrackReconstructorK.cxx:1475
 AliMUONTrackReconstructorK.cxx:1476
 AliMUONTrackReconstructorK.cxx:1477
 AliMUONTrackReconstructorK.cxx:1478
 AliMUONTrackReconstructorK.cxx:1479
 AliMUONTrackReconstructorK.cxx:1480
 AliMUONTrackReconstructorK.cxx:1481
 AliMUONTrackReconstructorK.cxx:1482
 AliMUONTrackReconstructorK.cxx:1483
 AliMUONTrackReconstructorK.cxx:1484
 AliMUONTrackReconstructorK.cxx:1485
 AliMUONTrackReconstructorK.cxx:1486
 AliMUONTrackReconstructorK.cxx:1487
 AliMUONTrackReconstructorK.cxx:1488
 AliMUONTrackReconstructorK.cxx:1489
 AliMUONTrackReconstructorK.cxx:1490
 AliMUONTrackReconstructorK.cxx:1491
 AliMUONTrackReconstructorK.cxx:1492
 AliMUONTrackReconstructorK.cxx:1493
 AliMUONTrackReconstructorK.cxx:1494
 AliMUONTrackReconstructorK.cxx:1495
 AliMUONTrackReconstructorK.cxx:1496
 AliMUONTrackReconstructorK.cxx:1497
 AliMUONTrackReconstructorK.cxx:1498
 AliMUONTrackReconstructorK.cxx:1499
 AliMUONTrackReconstructorK.cxx:1500
 AliMUONTrackReconstructorK.cxx:1501
 AliMUONTrackReconstructorK.cxx:1502
 AliMUONTrackReconstructorK.cxx:1503
 AliMUONTrackReconstructorK.cxx:1504
 AliMUONTrackReconstructorK.cxx:1505
 AliMUONTrackReconstructorK.cxx:1506
 AliMUONTrackReconstructorK.cxx:1507
 AliMUONTrackReconstructorK.cxx:1508
 AliMUONTrackReconstructorK.cxx:1509
 AliMUONTrackReconstructorK.cxx:1510
 AliMUONTrackReconstructorK.cxx:1511
 AliMUONTrackReconstructorK.cxx:1512
 AliMUONTrackReconstructorK.cxx:1513
 AliMUONTrackReconstructorK.cxx:1514
 AliMUONTrackReconstructorK.cxx:1515
 AliMUONTrackReconstructorK.cxx:1516
 AliMUONTrackReconstructorK.cxx:1517
 AliMUONTrackReconstructorK.cxx:1518
 AliMUONTrackReconstructorK.cxx:1519
 AliMUONTrackReconstructorK.cxx:1520
 AliMUONTrackReconstructorK.cxx:1521
 AliMUONTrackReconstructorK.cxx:1522
 AliMUONTrackReconstructorK.cxx:1523
 AliMUONTrackReconstructorK.cxx:1524
 AliMUONTrackReconstructorK.cxx:1525
 AliMUONTrackReconstructorK.cxx:1526
 AliMUONTrackReconstructorK.cxx:1527
 AliMUONTrackReconstructorK.cxx:1528
 AliMUONTrackReconstructorK.cxx:1529
 AliMUONTrackReconstructorK.cxx:1530
 AliMUONTrackReconstructorK.cxx:1531
 AliMUONTrackReconstructorK.cxx:1532
 AliMUONTrackReconstructorK.cxx:1533
 AliMUONTrackReconstructorK.cxx:1534
 AliMUONTrackReconstructorK.cxx:1535
 AliMUONTrackReconstructorK.cxx:1536
 AliMUONTrackReconstructorK.cxx:1537
 AliMUONTrackReconstructorK.cxx:1538
 AliMUONTrackReconstructorK.cxx:1539
 AliMUONTrackReconstructorK.cxx:1540
 AliMUONTrackReconstructorK.cxx:1541
 AliMUONTrackReconstructorK.cxx:1542
 AliMUONTrackReconstructorK.cxx:1543
 AliMUONTrackReconstructorK.cxx:1544
 AliMUONTrackReconstructorK.cxx:1545
 AliMUONTrackReconstructorK.cxx:1546
 AliMUONTrackReconstructorK.cxx:1547
 AliMUONTrackReconstructorK.cxx:1548
 AliMUONTrackReconstructorK.cxx:1549
 AliMUONTrackReconstructorK.cxx:1550
 AliMUONTrackReconstructorK.cxx:1551
 AliMUONTrackReconstructorK.cxx:1552
 AliMUONTrackReconstructorK.cxx:1553
 AliMUONTrackReconstructorK.cxx:1554
 AliMUONTrackReconstructorK.cxx:1555
 AliMUONTrackReconstructorK.cxx:1556
 AliMUONTrackReconstructorK.cxx:1557
 AliMUONTrackReconstructorK.cxx:1558
 AliMUONTrackReconstructorK.cxx:1559
 AliMUONTrackReconstructorK.cxx:1560
 AliMUONTrackReconstructorK.cxx:1561
 AliMUONTrackReconstructorK.cxx:1562
 AliMUONTrackReconstructorK.cxx:1563
 AliMUONTrackReconstructorK.cxx:1564
 AliMUONTrackReconstructorK.cxx:1565
 AliMUONTrackReconstructorK.cxx:1566
 AliMUONTrackReconstructorK.cxx:1567
 AliMUONTrackReconstructorK.cxx:1568
 AliMUONTrackReconstructorK.cxx:1569
 AliMUONTrackReconstructorK.cxx:1570
 AliMUONTrackReconstructorK.cxx:1571
 AliMUONTrackReconstructorK.cxx:1572
 AliMUONTrackReconstructorK.cxx:1573
 AliMUONTrackReconstructorK.cxx:1574
 AliMUONTrackReconstructorK.cxx:1575
 AliMUONTrackReconstructorK.cxx:1576
 AliMUONTrackReconstructorK.cxx:1577
 AliMUONTrackReconstructorK.cxx:1578
 AliMUONTrackReconstructorK.cxx:1579
 AliMUONTrackReconstructorK.cxx:1580
 AliMUONTrackReconstructorK.cxx:1581
 AliMUONTrackReconstructorK.cxx:1582
 AliMUONTrackReconstructorK.cxx:1583
 AliMUONTrackReconstructorK.cxx:1584
 AliMUONTrackReconstructorK.cxx:1585
 AliMUONTrackReconstructorK.cxx:1586
 AliMUONTrackReconstructorK.cxx:1587
 AliMUONTrackReconstructorK.cxx:1588
 AliMUONTrackReconstructorK.cxx:1589
 AliMUONTrackReconstructorK.cxx:1590
 AliMUONTrackReconstructorK.cxx:1591
 AliMUONTrackReconstructorK.cxx:1592
 AliMUONTrackReconstructorK.cxx:1593
 AliMUONTrackReconstructorK.cxx:1594
 AliMUONTrackReconstructorK.cxx:1595
 AliMUONTrackReconstructorK.cxx:1596
 AliMUONTrackReconstructorK.cxx:1597
 AliMUONTrackReconstructorK.cxx:1598
 AliMUONTrackReconstructorK.cxx:1599
 AliMUONTrackReconstructorK.cxx:1600
 AliMUONTrackReconstructorK.cxx:1601
 AliMUONTrackReconstructorK.cxx:1602
 AliMUONTrackReconstructorK.cxx:1603
 AliMUONTrackReconstructorK.cxx:1604
 AliMUONTrackReconstructorK.cxx:1605
 AliMUONTrackReconstructorK.cxx:1606
 AliMUONTrackReconstructorK.cxx:1607
 AliMUONTrackReconstructorK.cxx:1608
 AliMUONTrackReconstructorK.cxx:1609
 AliMUONTrackReconstructorK.cxx:1610
 AliMUONTrackReconstructorK.cxx:1611
 AliMUONTrackReconstructorK.cxx:1612
 AliMUONTrackReconstructorK.cxx:1613
 AliMUONTrackReconstructorK.cxx:1614
 AliMUONTrackReconstructorK.cxx:1615
 AliMUONTrackReconstructorK.cxx:1616
 AliMUONTrackReconstructorK.cxx:1617
 AliMUONTrackReconstructorK.cxx:1618
 AliMUONTrackReconstructorK.cxx:1619
 AliMUONTrackReconstructorK.cxx:1620
 AliMUONTrackReconstructorK.cxx:1621
 AliMUONTrackReconstructorK.cxx:1622
 AliMUONTrackReconstructorK.cxx:1623
 AliMUONTrackReconstructorK.cxx:1624
 AliMUONTrackReconstructorK.cxx:1625
 AliMUONTrackReconstructorK.cxx:1626
 AliMUONTrackReconstructorK.cxx:1627
 AliMUONTrackReconstructorK.cxx:1628
 AliMUONTrackReconstructorK.cxx:1629
 AliMUONTrackReconstructorK.cxx:1630
 AliMUONTrackReconstructorK.cxx:1631
 AliMUONTrackReconstructorK.cxx:1632
 AliMUONTrackReconstructorK.cxx:1633
 AliMUONTrackReconstructorK.cxx:1634
 AliMUONTrackReconstructorK.cxx:1635