X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONVTrackReconstructor.h;h=8e566555a295d5c74079eb236f0dd588af12c3b0;hb=6332274b9fb4c3420a392335a71e52b2c8ef3709;hp=9630de614a95f1cd2a838bd732461238450188a5;hpb=96ebe67e954961b3c45067cd239082c0d43cd009;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONVTrackReconstructor.h b/MUON/AliMUONVTrackReconstructor.h index 9630de614a9..8e566555a29 100644 --- a/MUON/AliMUONVTrackReconstructor.h +++ b/MUON/AliMUONVTrackReconstructor.h @@ -21,6 +21,7 @@ class AliMUONTrackParam; class AliMUONVCluster; class AliMUONTriggerTrack; class AliMUONTrackHitPattern; +class AliMUONVClusterServer; class AliMUONVClusterStore; class AliMUONVTrackStore; class AliMUONVTriggerTrackStore; @@ -33,19 +34,10 @@ class TClonesArray; class AliMUONVTrackReconstructor : public TObject { public: - AliMUONVTrackReconstructor(); // default Constructor + AliMUONVTrackReconstructor(AliMUONVClusterServer* clusterServer); // default Constructor virtual ~AliMUONVTrackReconstructor(); // Destructor - // Reconstructed tracks - /// Return number of reconstructed tracks - Int_t GetNRecTracks() const {return fNRecTracks;} // Number - /// Set number of reconstructed tracks - void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;} - /// Return array of reconstructed tracks - TClonesArray* GetRecTracksPtr() const {return fRecTracksPtr;} // Array - - // Functions - void EventReconstruct(const AliMUONVClusterStore& clusterStore, + void EventReconstruct(AliMUONVClusterStore& clusterStore, AliMUONVTrackStore& trackStore); void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, @@ -57,41 +49,54 @@ class AliMUONVTrackReconstructor : public TObject { const AliMUONVTriggerStore& triggerStore, const AliMUONTrackHitPattern& trackHitPattern); + /// 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 // 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 - virtual void MakeTrackCandidates(const AliMUONVClusterStore& clusterStore) = 0; + /// 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(const AliMUONVClusterStore& clusterStore) = 0; + virtual void FollowTracks(AliMUONVClusterStore& clusterStore) = 0; /// Complement the reconstructed tracks virtual void ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0; - /// Improve the reconstructed tracks - virtual void ImproveTracks() = 0; - /// Finalize the tracking results - virtual void Finalize() = 0; + void ImproveTracks(); + /// Improve the given reconstructed track + virtual void ImproveTrack(AliMUONTrack &track) = 0; + void Finalize(); + /// 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); Bool_t TryOneClusterFast(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster); 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: