X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONVTrackReconstructor.h;h=be29209708e038518dc2e9c5140516ea80cb786c;hb=07515723ae11bb0f04b72aa63c2879bebaa48baf;hp=5994a1d6ebc832d4f98dfc993d085845da6d814c;hpb=019df241e23498d179fce40148918ef6c10dc6d4;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONVTrackReconstructor.h b/MUON/AliMUONVTrackReconstructor.h index 5994a1d6ebc..be29209708e 100644 --- a/MUON/AliMUONVTrackReconstructor.h +++ b/MUON/AliMUONVTrackReconstructor.h @@ -13,12 +13,12 @@ #include -class TClonesArray; class AliMUONTrack; class AliMUONTrackParam; -class AliMUONHitForRec; +class AliMUONVCluster; class AliMUONTriggerTrack; class AliMUONTrackHitPattern; +class AliMUONVClusterServer; class AliMUONVClusterStore; class AliMUONVTrackStore; class AliMUONVTriggerTrackStore; @@ -26,28 +26,18 @@ class AliMUONVTriggerStore; class AliMUONGeometryTransformer; class AliMUONDigitMaker; class AliMUONTriggerCircuit; +class TClonesArray; +class AliMUONRecoParam; +class AliMUONLocalTrigger; class AliMUONVTrackReconstructor : public TObject { public: - AliMUONVTrackReconstructor(); // default Constructor + AliMUONVTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer); // default Constructor virtual ~AliMUONVTrackReconstructor(); // Destructor - // Parameters for track reconstruction: public methods - // Get and Set, Set to defaults - /// Return minimum value (GeV/c) of momentum in bending plane - Double_t GetMinBendingMomentum() const {return fMinBendingMomentum;} - - // 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, @@ -58,77 +48,78 @@ class AliMUONVTrackReconstructor : public TObject { const AliMUONVTriggerTrackStore& triggerTrackStore, const AliMUONVTriggerStore& triggerStore, const AliMUONTrackHitPattern& trackHitPattern); + + /// Return reco parameters + const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; } + + /// Re-fit the given track + virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0; + + void TriggerToTrack(const AliMUONTriggerCircuit& circuit, + const AliMUONLocalTrigger& locTrg, + AliMUONTriggerTrack& triggerTrack, + UChar_t globalTriggerPattern = 0); + protected: - // Defaults parameters for reconstruction - static const Double_t fgkDefaultMinBendingMomentum; ///< default min. bending momentum for reconstruction - static const Double_t fgkDefaultMaxBendingMomentum; ///< default max. bending momentum for reconstruction - static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching - - // Parameters for track reconstruction - static const Double_t fgkSigmaToCutForTracking; ///< cut in sigma to apply on cluster local chi2 and track global chi2 during tracking - static const Double_t fgkSigmaToCutForImprovement; ///< cut in sigma to apply on cluster local chi2 during track improvement - static const Bool_t fgkMakeTrackCandidatesFast; ///< kTRUE to make track candidates assuming linear propagation between stations 4 and 5 - static const Bool_t fgkTrackAllTracks; ///< kTRUE to track all the possible candidates; kFALSE to track only the best ones - static const Double_t fgkMaxTrackingDistanceBending; ///< Maximum distance to the track to search for compatible hitForRec(s) in bending direction - static const Double_t fgkMaxTrackingDistanceNonBending; ///< Maximum distance to the track to search for compatible hitForRec(s) in non bending direction - static const Bool_t fgkRecoverTracks; ///< kTRUE to try to recover the tracks being lost during reconstruction - static const Bool_t fgkImproveTracks; ///< kTRUE to try to improve the reconstructed tracks - - // Parameters for track reconstruction - Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane - Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane - Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching - - TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction - Int_t fNHitsForRec; ///< number of hits for reconstruction - Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec - Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec - - // Reconstructed tracks TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks Int_t fNRecTracks; ///< number of reconstructed tracks + AliMUONVClusterServer* fClusterServer; ///< reference to our cluster server + const AliMUONRecoParam* fkRecoParam; ///< reference to reco parameters + + Double_t* fMaxMCSAngle2; ///< maximum angle dispersion due to MCS + // 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() = 0; + /// Make track candidates from clusters in stations(1..) 4 and 5 + virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; + /// Make extra track candidates from clusters in stations(1..) 4 and 5 + virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; /// Follow tracks in stations(1..) 3, 2 and 1 - virtual void FollowTracks() = 0; - /// Improve the reconstructed tracks - virtual void ImproveTracks() = 0; - /// Finalize the tracking results - virtual void Finalize() = 0; + virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore) = 0; + /// Complement the reconstructed tracks + virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0; + void ImproveTracks(); + /// Improve the given reconstructed track + virtual void ImproveTrack(AliMUONTrack &track) = 0; + void Finalize(); + /// Finalize the given track + virtual Bool_t FinalizeTrack(AliMUONTrack &track) = 0; - TClonesArray* MakeSegmentsInStation(Int_t station); + Bool_t IsAcceptable(AliMUONTrackParam &trackParam); + + TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2); + void RemoveUsedSegments(TClonesArray& segments); void RemoveIdenticalTracks(); void RemoveDoubleTracks(); + void RemoveConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all); + void TagConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all); - Double_t TryOneHitForRec(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec, - AliMUONTrackParam &trackParamAtHit, Bool_t updatePropagator = kFALSE); - Bool_t TryOneHitForRecFast(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec); - Double_t TryTwoHitForRecFast(const AliMUONTrackParam &trackParamAtHit1, AliMUONHitForRec* hitForRec2, - AliMUONTrackParam &trackParamAtHit2); - - Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, Int_t nextStation); + 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, const AliMUONVCluster* cluster); + Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2, + AliMUONTrackParam &trackParamAtCluster2); + + Bool_t FollowLinearTrackInChamber(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber); + Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation); private: // Functions void ResetTracks(); - void ResetHitsForRec(); - - void AddHitsForRecFromRawClusters(const AliMUONVClusterStore& clusterStore); - void SortHitsForRecWithIncreasingChamber(); - - void MakeTracks(); ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE