/// \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 AliMUONHitForRec;
+class AliMUONTrackParam;
class AliMUONTrack;
-class TVirtualFitter;
-
-class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor {
+class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor
+{
+
public:
- AliMUONTrackReconstructor(AliMUONData* data); // default Constructor
- virtual ~AliMUONTrackReconstructor(); // Destructor
-
- /// Return track fitter
- static TVirtualFitter* Fitter(void) {return fgFitter;}
- virtual void EventDump(void); // dump reconstructed event
+ AliMUONTrackReconstructor(); // default Constructor
+ virtual ~AliMUONTrackReconstructor(); // Destructor
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();
+ virtual void FollowTracks();
+ virtual void ComplementTracks();
+ virtual void ImproveTracks();
+ virtual void Finalize();
private:
- // Defaults parameters for reconstruction
- static const Double_t fgkDefaultMaxChi2; ///< default max. track chi2 for reconstruction
-
- static TVirtualFitter* fgFitter; //!< Pointer to track fitter
-
// Parameters for track reconstruction
- Double_t fMaxChi2; ///< maximum Chi2 per degree of Freedom
+ static const Double_t fgkBendingVertexDispersion; ///< Vertex dispersion (cm) in bending plane for reconstruction
+ static const Double_t fgkNonBendingVertexDispersion; ///< Vertex dispersion (cm) in non bending plane for reconstruction
+
// Functions
- AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs); ///< copy constructor
- AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs); ///< assignment operator
+ /// Not implemented copy constructor
+ AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs);
+ /// Not implemented copy assignment operator
+ AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
+
+ Bool_t FollowTrackInStation(AliMUONTrack &trackCandidate, Int_t nextStation);
+
+ Double_t TryTwoHitForRec(const AliMUONTrackParam &trackParamAtHit1, AliMUONHitForRec* hitForRec2, AliMUONTrackParam &trackParamAtHit2);
+
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtHit);
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtHit1, AliMUONTrackParam &trackParamAtHit2);
+
+ Bool_t RecoverTrack(AliMUONTrack &track, Int_t nextStation);
+
+ void SetVertexForFit(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 calcCov);
ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
- };
+};
#endif