ROOT logo
#ifndef ALIMUONTRACKRECONSTRUCTORK_H
#define ALIMUONTRACKRECONSTRUCTORK_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/// \ingroup rec
/// \class AliMUONTrackReconstructorK
/// \brief Class for the MUON track reconstruction using kalman filter

#include "AliMUONVTrackReconstructor.h"

class AliMUONVClusterStore;
class AliMUONTrack;
class AliMUONTrackParam;
class AliMUONGeometryTransformer;

class AliMUONTrackReconstructorK : public AliMUONVTrackReconstructor 
{

 public:
  
  AliMUONTrackReconstructorK(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
			     const AliMUONGeometryTransformer* transformer); // default Constructor
  virtual ~AliMUONTrackReconstructorK(); // Destructor
  
  virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);


 protected:

  // Functions
  virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore);
  virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore);
  virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore);
  virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore);
  virtual void   ImproveTrack(AliMUONTrack &track);
  virtual Bool_t FinalizeTrack(AliMUONTrack &track);
  

 private:
  
  /// Not implemented copy constructor
  AliMUONTrackReconstructorK (const AliMUONTrackReconstructorK& rhs); 
  /// Not implemented copy assignment operator
  AliMUONTrackReconstructorK& operator=(const AliMUONTrackReconstructorK& rhs);
  
  Bool_t RetraceTrack(AliMUONTrack &trackCandidate, Bool_t resetSeed);
  Bool_t RetracePartialTrack(AliMUONTrack &trackCandidate, const AliMUONTrackParam* startingTrackParam);
  
  Bool_t FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber);
  Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation);
  
  Double_t RunKalmanFilter(AliMUONTrackParam &trackParamAtCluster);

  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster, Double_t addChi2);
  void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2,
  		   Double_t addChi2AtCluster1, Double_t addChi2AtCluster2);
  
  Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
  
  Bool_t RunSmoother(AliMUONTrack &track);


  ClassDef(AliMUONTrackReconstructorK, 0) // MUON track reconstructor in ALICE
};
	
#endif
 AliMUONTrackReconstructorK.h:1
 AliMUONTrackReconstructorK.h:2
 AliMUONTrackReconstructorK.h:3
 AliMUONTrackReconstructorK.h:4
 AliMUONTrackReconstructorK.h:5
 AliMUONTrackReconstructorK.h:6
 AliMUONTrackReconstructorK.h:7
 AliMUONTrackReconstructorK.h:8
 AliMUONTrackReconstructorK.h:9
 AliMUONTrackReconstructorK.h:10
 AliMUONTrackReconstructorK.h:11
 AliMUONTrackReconstructorK.h:12
 AliMUONTrackReconstructorK.h:13
 AliMUONTrackReconstructorK.h:14
 AliMUONTrackReconstructorK.h:15
 AliMUONTrackReconstructorK.h:16
 AliMUONTrackReconstructorK.h:17
 AliMUONTrackReconstructorK.h:18
 AliMUONTrackReconstructorK.h:19
 AliMUONTrackReconstructorK.h:20
 AliMUONTrackReconstructorK.h:21
 AliMUONTrackReconstructorK.h:22
 AliMUONTrackReconstructorK.h:23
 AliMUONTrackReconstructorK.h:24
 AliMUONTrackReconstructorK.h:25
 AliMUONTrackReconstructorK.h:26
 AliMUONTrackReconstructorK.h:27
 AliMUONTrackReconstructorK.h:28
 AliMUONTrackReconstructorK.h:29
 AliMUONTrackReconstructorK.h:30
 AliMUONTrackReconstructorK.h:31
 AliMUONTrackReconstructorK.h:32
 AliMUONTrackReconstructorK.h:33
 AliMUONTrackReconstructorK.h:34
 AliMUONTrackReconstructorK.h:35
 AliMUONTrackReconstructorK.h:36
 AliMUONTrackReconstructorK.h:37
 AliMUONTrackReconstructorK.h:38
 AliMUONTrackReconstructorK.h:39
 AliMUONTrackReconstructorK.h:40
 AliMUONTrackReconstructorK.h:41
 AliMUONTrackReconstructorK.h:42
 AliMUONTrackReconstructorK.h:43
 AliMUONTrackReconstructorK.h:44
 AliMUONTrackReconstructorK.h:45
 AliMUONTrackReconstructorK.h:46
 AliMUONTrackReconstructorK.h:47
 AliMUONTrackReconstructorK.h:48
 AliMUONTrackReconstructorK.h:49
 AliMUONTrackReconstructorK.h:50
 AliMUONTrackReconstructorK.h:51
 AliMUONTrackReconstructorK.h:52
 AliMUONTrackReconstructorK.h:53
 AliMUONTrackReconstructorK.h:54
 AliMUONTrackReconstructorK.h:55
 AliMUONTrackReconstructorK.h:56
 AliMUONTrackReconstructorK.h:57
 AliMUONTrackReconstructorK.h:58
 AliMUONTrackReconstructorK.h:59
 AliMUONTrackReconstructorK.h:60
 AliMUONTrackReconstructorK.h:61
 AliMUONTrackReconstructorK.h:62
 AliMUONTrackReconstructorK.h:63
 AliMUONTrackReconstructorK.h:64
 AliMUONTrackReconstructorK.h:65
 AliMUONTrackReconstructorK.h:66
 AliMUONTrackReconstructorK.h:67
 AliMUONTrackReconstructorK.h:68
 AliMUONTrackReconstructorK.h:69