/// \ingroup rec
/// \class AliMUONTrackReconstructorK
/// \brief Class for the MUON track reconstruction using kalman filter
-///
-////////////////////////////////////////////////
-/// MUON track reconstructor using kalman filter
-////////////////////////////////////////////////
-#include <TObject.h>
#include "AliMUONVTrackReconstructor.h"
-class AliMUONTrackReconstructorK : public AliMUONVTrackReconstructor {
+class AliMUONVClusterStore;
+class AliMUONTrack;
+class AliMUONTrackParam;
+
+class AliMUONTrackReconstructorK : public AliMUONVTrackReconstructor
+{
public:
- AliMUONTrackReconstructorK(AliMUONData* data, const Option_t* TrackMethod); // default Constructor
+
+ AliMUONTrackReconstructorK(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer); // default Constructor
virtual ~AliMUONTrackReconstructorK(); // Destructor
-
- /// Return track method
- Int_t GetTrackMethod(void) const {return fTrackMethod;}
- virtual void EventDump(void); // dump reconstructed event
+ virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);
protected:
-
+
// Functions
- virtual void AddHitsForRecFromRawClusters();
- virtual void MakeSegments(void);
- virtual void MakeTracks(void);
- virtual void MakeTrackCandidates(void);
- virtual void FollowTracks(void);
- virtual void RemoveDoubleTracks(void);
+ 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 void FinalizeTrack(AliMUONTrack &track);
private:
+
+ /// Not implemented copy constructor
+ AliMUONTrackReconstructorK (const AliMUONTrackReconstructorK& rhs);
+ /// Not implemented copy assignment operator
+ AliMUONTrackReconstructorK& operator=(const AliMUONTrackReconstructorK& rhs);
+
+ void RetraceTrack(AliMUONTrack &trackCandidate, Bool_t resetSeed);
+ void 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);
- Int_t fTrackMethod; ///< AZ - tracking method
-
- Int_t fMuons; ///< AZ - number of muons within acceptance - just for tests
-
- // Functions
- AliMUONTrackReconstructorK (const AliMUONTrackReconstructorK& rhs); ///< copy constructor
- AliMUONTrackReconstructorK& operator=(const AliMUONTrackReconstructorK& rhs); ///< assignment operator
+ 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 CheckCandidate(Int_t icand, Int_t nSeeds) const;
- void GoToVertex(void);
- void FillMUONTrack(void); // set track parameters at hits for Kalman track
+ Bool_t RunSmoother(AliMUONTrack &track);
ClassDef(AliMUONTrackReconstructorK, 0) // MUON track reconstructor in ALICE
- };
+};
#endif