]>
Commit | Line | Data |
---|---|---|
8d0843c6 | 1 | #ifndef ALIMUONVTRACKRECONSTRUCTOR_H |
2 | #define ALIMUONVTRACKRECONSTRUCTOR_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | /// \ingroup rec | |
9 | /// \class AliMUONVTrackReconstructor | |
10 | /// \brief Virtual class for the MUON track reconstruction | |
11 | /// | |
c4ee792d | 12 | // Author: Philippe Pillot |
8d0843c6 | 13 | |
14 | #include <TObject.h> | |
15 | ||
019df241 | 16 | class AliMUONTrack; |
ea94c18b | 17 | class AliMUONTrackParam; |
96ebe67e | 18 | class AliMUONVCluster; |
8d0843c6 | 19 | class AliMUONTriggerTrack; |
7771752e | 20 | class AliMUONTrackHitPattern; |
1fef78c8 | 21 | class AliMUONVClusterServer; |
7ec3b9cf | 22 | class AliMUONVClusterStore; |
23 | class AliMUONVTrackStore; | |
24 | class AliMUONVTriggerTrackStore; | |
25 | class AliMUONVTriggerStore; | |
26 | class AliMUONGeometryTransformer; | |
27 | class AliMUONDigitMaker; | |
32ab62c9 | 28 | class AliMUONTriggerCircuit; |
3304fa09 | 29 | class TClonesArray; |
a0dc65b4 | 30 | class AliMUONRecoParam; |
9f164762 | 31 | class AliMUONLocalTrigger; |
8d0843c6 | 32 | |
33 | class AliMUONVTrackReconstructor : public TObject { | |
34 | ||
35 | public: | |
852fefb4 | 36 | AliMUONVTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer, |
37 | const AliMUONGeometryTransformer* transformer); // default Constructor | |
8d0843c6 | 38 | virtual ~AliMUONVTrackReconstructor(); // Destructor |
39 | ||
a0dc65b4 | 40 | |
1fef78c8 | 41 | void EventReconstruct(AliMUONVClusterStore& clusterStore, |
7ec3b9cf | 42 | AliMUONVTrackStore& trackStore); |
8d0843c6 | 43 | |
32ab62c9 | 44 | void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, |
7ec3b9cf | 45 | const AliMUONVTriggerStore& triggerStore, |
46 | AliMUONVTriggerTrackStore& triggerTrackStore); | |
47 | ||
48 | void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, | |
49 | const AliMUONVTriggerTrackStore& triggerTrackStore, | |
50 | const AliMUONVTriggerStore& triggerStore, | |
51 | const AliMUONTrackHitPattern& trackHitPattern); | |
a0dc65b4 | 52 | |
21973f26 | 53 | /// Return reco parameters |
5a240757 | 54 | const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; } |
ea94c18b | 55 | |
21973f26 | 56 | /// Re-fit the given track |
b1fea02e | 57 | virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0; |
7deb8eb0 | 58 | |
cd859b17 | 59 | Bool_t TriggerToTrack(const AliMUONTriggerCircuit& circuit, |
60 | const AliMUONLocalTrigger& locTrg, | |
61 | AliMUONTriggerTrack& triggerTrack, | |
62 | UChar_t globalTriggerPattern = 0); | |
9f164762 | 63 | |
64 | ||
ea94c18b | 65 | |
8d0843c6 | 66 | protected: |
67 | ||
8d0843c6 | 68 | TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks |
69 | Int_t fNRecTracks; ///< number of reconstructed tracks | |
70 | ||
b1fea02e | 71 | AliMUONVClusterServer* fClusterServer; ///< reference to our cluster server |
ea94c18b | 72 | |
5a240757 | 73 | const AliMUONRecoParam* fkRecoParam; ///< reference to reco parameters |
852fefb4 | 74 | const AliMUONGeometryTransformer* fkTransformer; //!< geometry transformer (not owner) |
a0dc65b4 | 75 | |
4663da9f | 76 | Double_t* fMaxMCSAngle2; ///< maximum angle dispersion due to MCS |
6b191dea | 77 | |
8d0843c6 | 78 | // Functions |
79 | AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor | |
80 | AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator | |
81 | ||
9bf6860b | 82 | /// Make track candidates from clusters in stations(1..) 4 and 5 |
89c8d66d | 83 | virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; |
9bf6860b | 84 | /// Make extra track candidates from clusters in stations(1..) 4 and 5 |
89c8d66d | 85 | virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; |
ea94c18b | 86 | /// Follow tracks in stations(1..) 3, 2 and 1 |
89c8d66d | 87 | virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore) = 0; |
b709ac13 | 88 | /// Complement the reconstructed tracks |
89c8d66d | 89 | virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0; |
7332f213 | 90 | void ImproveTracks(); |
91 | /// Improve the given reconstructed track | |
92 | virtual void ImproveTrack(AliMUONTrack &track) = 0; | |
93 | void Finalize(); | |
94 | /// Finalize the given track | |
4ea3f013 | 95 | virtual Bool_t FinalizeTrack(AliMUONTrack &track) = 0; |
ea94c18b | 96 | |
852fefb4 | 97 | void DiscardMonoCathodClusters(); |
98 | void ChangeMonoCathodClusterRes(AliMUONTrack &track); | |
99 | ||
6b191dea | 100 | Bool_t IsAcceptable(AliMUONTrackParam &trackParam); |
101 | ||
9bf6860b | 102 | TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2); |
8d0843c6 | 103 | |
89c8d66d | 104 | void RemoveUsedSegments(TClonesArray& segments); |
ea94c18b | 105 | void RemoveIdenticalTracks(); |
106 | void RemoveDoubleTracks(); | |
852fefb4 | 107 | void RemoveBadTracks(); |
5c15a68b | 108 | void RemoveConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all); |
109 | void TagConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all); | |
ea94c18b | 110 | |
1fef78c8 | 111 | void AskForNewClustersInStation(const AliMUONTrackParam &trackParam, |
112 | AliMUONVClusterStore& clusterStore, Int_t station); | |
9bf6860b | 113 | void AskForNewClustersInChamber(const AliMUONTrackParam &trackParam, |
114 | AliMUONVClusterStore& clusterStore, Int_t chamber); | |
1fef78c8 | 115 | |
96ebe67e | 116 | Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster, |
117 | AliMUONTrackParam &trackParamAtCluster, Bool_t updatePropagator = kFALSE); | |
5a240757 | 118 | Bool_t TryOneClusterFast(const AliMUONTrackParam &trackParam, const AliMUONVCluster* cluster); |
96ebe67e | 119 | Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2, |
120 | AliMUONTrackParam &trackParamAtCluster2); | |
019df241 | 121 | |
9bf6860b | 122 | Bool_t FollowLinearTrackInChamber(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber); |
123 | Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation); | |
abc2458f | 124 | |
8d0843c6 | 125 | private: |
126 | ||
8d0843c6 | 127 | // Functions |
ea94c18b | 128 | void ResetTracks(); |
ea94c18b | 129 | |
8d0843c6 | 130 | |
8d0843c6 | 131 | ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE |
208f139e | 132 | }; |
8d0843c6 | 133 | |
134 | #endif |