/// \ingroup rec
/// \class AliMUONTrackReconstructor
/// \brief Standard class for the MUON track reconstruction
-///
-//////////////////////////////////////////////
-/// Standard MUON track reconstructor in ALICE
-//////////////////////////////////////////////
-#include <TObject.h>
#include "AliMUONVTrackReconstructor.h"
-class AliMUONSegment;
+class AliMUONVCluster;
+class AliMUONVClusterStore;
+class AliMUONTrackParam;
class AliMUONTrack;
-class TVirtualFitter;
-
-class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor {
+class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor
+{
+
public:
- AliMUONTrackReconstructor(AliMUONData* data); // default Constructor
+
+ AliMUONTrackReconstructor(AliMUONVClusterServer& clusterServer); // default Constructor
virtual ~AliMUONTrackReconstructor(); // Destructor
- /// Return track fitter
- static TVirtualFitter* Fitter(void) {return fgFitter;}
-
- virtual void EventDump(void); // dump reconstructed event
+ virtual Bool_t RefitTrack(AliMUONTrack &track);
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 void MakeTrackCandidates(AliMUONVClusterStore& clusterStore);
+ virtual void MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore);
+ virtual void FollowTracks(AliMUONVClusterStore& clusterStore);
+ virtual void ComplementTracks(const AliMUONVClusterStore& clusterStore);
+ virtual void ImproveTrack(AliMUONTrack &track);
+ virtual void FinalizeTrack(AliMUONTrack &track);
private:
- // Defaults parameters for reconstruction
- static const Double_t fgkDefaultMaxChi2; ///< default max. track chi2 for reconstruction
-
- static TVirtualFitter* fgFitter; //!< Pointer to track fitter
+ /// Not implemented copy constructor
+ AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs);
+ /// Not implemented copy assignment operator
+ AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
+
+ Bool_t FollowTrackInChamber(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextChamber);
+ Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, AliMUONVClusterStore& clusterStore, Int_t nextStation);
+
+ Double_t TryTwoClusters(const AliMUONTrackParam &trackParamAtCluster, AliMUONVCluster* cluster2, AliMUONTrackParam &trackParamAtCluster2);
- // Parameters for track reconstruction
- Double_t fMaxChi2; ///< maximum Chi2 per degree of Freedom
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster);
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2);
- // Functions
- AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs); ///< copy constructor
- AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs); ///< assignment operator
+ Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
+
+ void SetVertexErrXY2ForFit(AliMUONTrack &trackCandidate);
- Int_t MakeTrackCandidatesWithTwoSegments(AliMUONSegment *BegSegment);
- Int_t MakeTrackCandidatesWithOneSegmentAndOnePoint(AliMUONSegment *BegSegment);
- void CalcTrackParamAtVertex(AliMUONTrack *Track) const;
- void Fit(AliMUONTrack *Track, Int_t FitStart, Int_t FitMCS);
- void UpdateHitForRecAtHit(void);
+ void Fit(AliMUONTrack &track, Bool_t includeMCS, Bool_t fitWithVertex, Bool_t calcCov);
ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
- };
+};
#endif