// Author: Philippe Pillot
#include "AliMUONReconstructor.h"
-#include "AliMUONRecoParam.h"
#include <TObject.h>
class AliMUONDigitMaker;
class AliMUONTriggerCircuit;
class TClonesArray;
+class AliMUONRecoParam;
class AliMUONVTrackReconstructor : public TObject {
public:
- AliMUONVTrackReconstructor(AliMUONVClusterServer& clusterServer); // default Constructor
+ AliMUONVTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer); // default Constructor
virtual ~AliMUONVTrackReconstructor(); // Destructor
+
void EventReconstruct(AliMUONVClusterStore& clusterStore,
AliMUONVTrackStore& trackStore);
const AliMUONVTriggerTrackStore& triggerTrackStore,
const AliMUONVTriggerStore& triggerStore,
const AliMUONTrackHitPattern& trackHitPattern);
+
+ const AliMUONRecoParam* GetRecoParam() const { return fRecoParam; }
+
+ /// re-fit the given track
+ virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0;
protected:
TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
Int_t fNRecTracks; ///< number of reconstructed tracks
- AliMUONVClusterServer& fClusterServer; ///< reference to our cluster server
+ AliMUONVClusterServer* fClusterServer; ///< reference to our cluster server
+ const AliMUONRecoParam* fRecoParam; ///< reference to reco parameters
+
// Functions
AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor
AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator
- /// Make track candidats from clusters in stations(1..) 4 and 5
+ /// Make track candidates from clusters in stations(1..) 4 and 5
virtual void MakeTrackCandidates(AliMUONVClusterStore& clusterStore) = 0;
+ /// Make extra track candidates from clusters in stations(1..) 4 and 5
+ virtual void MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore) = 0;
/// Follow tracks in stations(1..) 3, 2 and 1
virtual void FollowTracks(AliMUONVClusterStore& clusterStore) = 0;
/// Complement the reconstructed tracks
/// Finalize the given track
virtual void FinalizeTrack(AliMUONTrack &track) = 0;
- TClonesArray* MakeSegmentsInStation(const AliMUONVClusterStore& clusterStore, Int_t station);
+ TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2);
void RemoveIdenticalTracks();
void RemoveDoubleTracks();
void AskForNewClustersInStation(const AliMUONTrackParam &trackParam,
AliMUONVClusterStore& clusterStore, Int_t station);
+ void AskForNewClustersInChamber(const AliMUONTrackParam &trackParam,
+ AliMUONVClusterStore& clusterStore, Int_t chamber);
Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster,
AliMUONTrackParam &trackParamAtCluster, Bool_t updatePropagator = kFALSE);
Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2,
AliMUONTrackParam &trackParamAtCluster2);
- Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore,
- Int_t nextStation);
+ Bool_t FollowLinearTrackInChamber(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber);
+ Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation);
private: