]>
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 | |
3304fa09 | 14 | #include "AliMUONReconstructor.h" |
15 | #include "AliMUONRecoParam.h" | |
16 | ||
8d0843c6 | 17 | #include <TObject.h> |
18 | ||
019df241 | 19 | class AliMUONTrack; |
ea94c18b | 20 | class AliMUONTrackParam; |
96ebe67e | 21 | class AliMUONVCluster; |
8d0843c6 | 22 | class AliMUONTriggerTrack; |
7771752e | 23 | class AliMUONTrackHitPattern; |
1fef78c8 | 24 | class AliMUONVClusterServer; |
7ec3b9cf | 25 | class AliMUONVClusterStore; |
26 | class AliMUONVTrackStore; | |
27 | class AliMUONVTriggerTrackStore; | |
28 | class AliMUONVTriggerStore; | |
29 | class AliMUONGeometryTransformer; | |
30 | class AliMUONDigitMaker; | |
32ab62c9 | 31 | class AliMUONTriggerCircuit; |
3304fa09 | 32 | class TClonesArray; |
a0dc65b4 | 33 | class AliMUONRecoParam; |
8d0843c6 | 34 | |
35 | class AliMUONVTrackReconstructor : public TObject { | |
36 | ||
37 | public: | |
a0dc65b4 | 38 | AliMUONVTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer); // default Constructor |
8d0843c6 | 39 | virtual ~AliMUONVTrackReconstructor(); // Destructor |
40 | ||
a0dc65b4 | 41 | |
1fef78c8 | 42 | void EventReconstruct(AliMUONVClusterStore& clusterStore, |
7ec3b9cf | 43 | AliMUONVTrackStore& trackStore); |
8d0843c6 | 44 | |
32ab62c9 | 45 | void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, |
7ec3b9cf | 46 | const AliMUONVTriggerStore& triggerStore, |
47 | AliMUONVTriggerTrackStore& triggerTrackStore); | |
48 | ||
49 | void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, | |
50 | const AliMUONVTriggerTrackStore& triggerTrackStore, | |
51 | const AliMUONVTriggerStore& triggerStore, | |
52 | const AliMUONTrackHitPattern& trackHitPattern); | |
a0dc65b4 | 53 | |
54 | const AliMUONRecoParam* GetRecoParam() const { return fRecoParam; } | |
ea94c18b | 55 | |
7deb8eb0 | 56 | /// re-fit the given track |
b1fea02e | 57 | virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0; |
7deb8eb0 | 58 | |
ea94c18b | 59 | |
a0dc65b4 | 60 | // methods previously got from the static muonrecoparam: |
61 | // | |
62 | // MakeMoreTrackCandidates() | |
63 | // | |
64 | // ComplementTracks() | |
65 | // | |
66 | // ImproveTracks() | |
67 | // | |
68 | // GetMaxNonBendingSlope() | |
69 | // GetMaxBendingSlope() | |
70 | // | |
71 | // GetMinBendingMomentum() | |
72 | // GetMaxBendingMomentum() | |
73 | // | |
74 | // UseChamber(Int_t chamberId) | |
75 | // | |
76 | // GetMaxNonBendingDistanceToTrack() | |
77 | // GetSigmaCutForTracking() | |
78 | // GetMaxBendingDistanceToTrack() | |
79 | // GetSigmaCutForTracking() | |
80 | // TrackAllTracks() | |
81 | // RequestStation(Int_t stationId) | |
82 | ||
8d0843c6 | 83 | protected: |
84 | ||
8d0843c6 | 85 | TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks |
86 | Int_t fNRecTracks; ///< number of reconstructed tracks | |
87 | ||
b1fea02e | 88 | AliMUONVClusterServer* fClusterServer; ///< reference to our cluster server |
ea94c18b | 89 | |
a0dc65b4 | 90 | const AliMUONRecoParam* fRecoParam; ///< reference to reco parameters |
91 | ||
8d0843c6 | 92 | // Functions |
93 | AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor | |
94 | AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator | |
95 | ||
9bf6860b | 96 | /// Make track candidates from clusters in stations(1..) 4 and 5 |
1fef78c8 | 97 | virtual void MakeTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; |
9bf6860b | 98 | /// Make extra track candidates from clusters in stations(1..) 4 and 5 |
99 | virtual void MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore) = 0; | |
ea94c18b | 100 | /// Follow tracks in stations(1..) 3, 2 and 1 |
1fef78c8 | 101 | virtual void FollowTracks(AliMUONVClusterStore& clusterStore) = 0; |
b709ac13 | 102 | /// Complement the reconstructed tracks |
96ebe67e | 103 | virtual void ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0; |
7332f213 | 104 | void ImproveTracks(); |
105 | /// Improve the given reconstructed track | |
106 | virtual void ImproveTrack(AliMUONTrack &track) = 0; | |
107 | void Finalize(); | |
108 | /// Finalize the given track | |
109 | virtual void FinalizeTrack(AliMUONTrack &track) = 0; | |
ea94c18b | 110 | |
9bf6860b | 111 | TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2); |
8d0843c6 | 112 | |
ea94c18b | 113 | void RemoveIdenticalTracks(); |
114 | void RemoveDoubleTracks(); | |
115 | ||
1fef78c8 | 116 | void AskForNewClustersInStation(const AliMUONTrackParam &trackParam, |
117 | AliMUONVClusterStore& clusterStore, Int_t station); | |
9bf6860b | 118 | void AskForNewClustersInChamber(const AliMUONTrackParam &trackParam, |
119 | AliMUONVClusterStore& clusterStore, Int_t chamber); | |
1fef78c8 | 120 | |
96ebe67e | 121 | Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster, |
122 | AliMUONTrackParam &trackParamAtCluster, Bool_t updatePropagator = kFALSE); | |
123 | Bool_t TryOneClusterFast(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster); | |
124 | Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2, | |
125 | AliMUONTrackParam &trackParamAtCluster2); | |
019df241 | 126 | |
9bf6860b | 127 | Bool_t FollowLinearTrackInChamber(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber); |
128 | Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation); | |
ea94c18b | 129 | |
8d0843c6 | 130 | |
131 | private: | |
132 | ||
8d0843c6 | 133 | // Functions |
ea94c18b | 134 | void ResetTracks(); |
ea94c18b | 135 | |
8d0843c6 | 136 | |
8d0843c6 | 137 | ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE |
208f139e | 138 | }; |
8d0843c6 | 139 | |
140 | #endif |