#include "AliMUONVTrackReconstructor.h"
+class AliMUONVCluster;
+class AliMUONVClusterStore;
+class AliMUONTrackParam;
class AliMUONTrack;
-class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor {
-
+class AliMUONTrackReconstructor : public AliMUONVTrackReconstructor
+{
+
public:
- AliMUONTrackReconstructor(AliMUONData* data); // default Constructor
+
+ AliMUONTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer); // default Constructor
virtual ~AliMUONTrackReconstructor(); // Destructor
- virtual void EventDump(void); // dump reconstructed event
+ virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE);
protected:
// Functions
- virtual void AddHitsForRecFromRawClusters();
- virtual void MakeTracks(void);
- virtual void MakeTrackCandidates(void);
- virtual void FollowTracks(void);
- virtual void RemoveDoubleTracks(void);
- virtual void FillMUONTrack(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 Bool_t FinalizeTrack(AliMUONTrack &track);
private:
- // Parameters for reconstruction
- static const Double_t fgkMaxNormChi2; ///< maximum Chi2 per degree of freedom for reconstruction
- static const Bool_t fgkTrackAllTracks; ///< kTRUE to track all the possible candidates; kFALSE to track only the best ones
-
- // Functions
/// Not implemented copy constructor
AliMUONTrackReconstructor (const AliMUONTrackReconstructor& rhs);
/// Not implemented copy assignment operator
AliMUONTrackReconstructor& operator=(const AliMUONTrackReconstructor& rhs);
- void RemoveIdenticalTracks(void);
- void FollowTrackInStation(AliMUONTrack* trackCandidate, Int_t nextStation);
- void SetVertexForFit(AliMUONTrack* trackCandidate);
- void Fit(AliMUONTrack *track, Bool_t includeMCS, Bool_t calcCov);
+ 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);
+
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster);
+ void UpdateTrack(AliMUONTrack &track, AliMUONTrackParam &trackParamAtCluster1, AliMUONTrackParam &trackParamAtCluster2);
+
+ Bool_t RecoverTrack(AliMUONTrack &track, AliMUONVClusterStore& clusterStore, Int_t nextStation);
+
+ void SetVertexErrXY2ForFit(AliMUONTrack &trackCandidate);
+
+ void Fit(AliMUONTrack &track, Bool_t includeMCS, Bool_t fitWithVertex, Bool_t calcCov);
ClassDef(AliMUONTrackReconstructor, 0) // MUON track reconstructor in ALICE
- };
+};
#endif