]>
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 | ||
16 | class TClonesArray; | |
019df241 | 17 | class AliMUONTrack; |
ea94c18b | 18 | class AliMUONTrackParam; |
19 | class AliMUONHitForRec; | |
8d0843c6 | 20 | class AliMUONTriggerTrack; |
7771752e | 21 | class AliMUONTrackHitPattern; |
7ec3b9cf | 22 | class AliMUONVClusterStore; |
23 | class AliMUONVTrackStore; | |
24 | class AliMUONVTriggerTrackStore; | |
25 | class AliMUONVTriggerStore; | |
26 | class AliMUONGeometryTransformer; | |
27 | class AliMUONDigitMaker; | |
32ab62c9 | 28 | class AliMUONTriggerCircuit; |
8d0843c6 | 29 | |
30 | class AliMUONVTrackReconstructor : public TObject { | |
31 | ||
32 | public: | |
7ec3b9cf | 33 | AliMUONVTrackReconstructor(); // default Constructor |
8d0843c6 | 34 | virtual ~AliMUONVTrackReconstructor(); // Destructor |
35 | ||
36 | // Parameters for track reconstruction: public methods | |
37 | // Get and Set, Set to defaults | |
38 | /// Return minimum value (GeV/c) of momentum in bending plane | |
ea94c18b | 39 | Double_t GetMinBendingMomentum() const {return fMinBendingMomentum;} |
8d0843c6 | 40 | |
41 | // Reconstructed tracks | |
42 | /// Return number of reconstructed tracks | |
43 | Int_t GetNRecTracks() const {return fNRecTracks;} // Number | |
44 | /// Set number of reconstructed tracks | |
45 | void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;} | |
46 | /// Return array of reconstructed tracks | |
ea94c18b | 47 | TClonesArray* GetRecTracksPtr() const {return fRecTracksPtr;} // Array |
8d0843c6 | 48 | |
49 | // Functions | |
7ec3b9cf | 50 | void EventReconstruct(const AliMUONVClusterStore& clusterStore, |
51 | AliMUONVTrackStore& trackStore); | |
8d0843c6 | 52 | |
32ab62c9 | 53 | void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, |
7ec3b9cf | 54 | const AliMUONVTriggerStore& triggerStore, |
55 | AliMUONVTriggerTrackStore& triggerTrackStore); | |
56 | ||
57 | void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, | |
58 | const AliMUONVTriggerTrackStore& triggerTrackStore, | |
59 | const AliMUONVTriggerStore& triggerStore, | |
60 | const AliMUONTrackHitPattern& trackHitPattern); | |
ea94c18b | 61 | |
62 | ||
8d0843c6 | 63 | protected: |
64 | ||
65 | // Defaults parameters for reconstruction | |
66 | static const Double_t fgkDefaultMinBendingMomentum; ///< default min. bending momentum for reconstruction | |
67 | static const Double_t fgkDefaultMaxBendingMomentum; ///< default max. bending momentum for reconstruction | |
208f139e | 68 | static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching |
8d0843c6 | 69 | |
ea94c18b | 70 | // Parameters for track reconstruction |
71 | static const Double_t fgkSigmaToCutForTracking; ///< cut in sigma to apply on cluster local chi2 and track global chi2 during tracking | |
72 | static const Double_t fgkSigmaToCutForImprovement; ///< cut in sigma to apply on cluster local chi2 during track improvement | |
019df241 | 73 | static const Bool_t fgkMakeTrackCandidatesFast; ///< kTRUE to make track candidates assuming linear propagation between stations 4 and 5 |
ea94c18b | 74 | static const Bool_t fgkTrackAllTracks; ///< kTRUE to track all the possible candidates; kFALSE to track only the best ones |
75 | static const Double_t fgkMaxTrackingDistanceBending; ///< Maximum distance to the track to search for compatible hitForRec(s) in bending direction | |
76 | static const Double_t fgkMaxTrackingDistanceNonBending; ///< Maximum distance to the track to search for compatible hitForRec(s) in non bending direction | |
77 | static const Bool_t fgkRecoverTracks; ///< kTRUE to try to recover the tracks being lost during reconstruction | |
78 | static const Bool_t fgkImproveTracks; ///< kTRUE to try to improve the reconstructed tracks | |
79 | ||
8d0843c6 | 80 | // Parameters for track reconstruction |
81 | Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane | |
82 | Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane | |
208f139e | 83 | Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching |
8d0843c6 | 84 | |
8d0843c6 | 85 | TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction |
86 | Int_t fNHitsForRec; ///< number of hits for reconstruction | |
8d0843c6 | 87 | Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec |
88 | Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec | |
89 | ||
8d0843c6 | 90 | // Reconstructed tracks |
91 | TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks | |
92 | Int_t fNRecTracks; ///< number of reconstructed tracks | |
93 | ||
ea94c18b | 94 | |
8d0843c6 | 95 | // Functions |
96 | AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor | |
97 | AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator | |
98 | ||
ea94c18b | 99 | /// Make track candidats from clusters in stations(1..) 4 and 5 |
100 | virtual void MakeTrackCandidates() = 0; | |
101 | /// Follow tracks in stations(1..) 3, 2 and 1 | |
102 | virtual void FollowTracks() = 0; | |
103 | /// Improve the reconstructed tracks | |
104 | virtual void ImproveTracks() = 0; | |
105 | /// Finalize the tracking results | |
106 | virtual void Finalize() = 0; | |
107 | ||
108 | TClonesArray* MakeSegmentsInStation(Int_t station); | |
8d0843c6 | 109 | |
ea94c18b | 110 | void RemoveIdenticalTracks(); |
111 | void RemoveDoubleTracks(); | |
112 | ||
113 | Double_t TryOneHitForRec(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec, | |
114 | AliMUONTrackParam &trackParamAtHit, Bool_t updatePropagator = kFALSE); | |
019df241 | 115 | Bool_t TryOneHitForRecFast(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec); |
116 | Double_t TryTwoHitForRecFast(const AliMUONTrackParam &trackParamAtHit1, AliMUONHitForRec* hitForRec2, | |
117 | AliMUONTrackParam &trackParamAtHit2); | |
118 | ||
119 | Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, Int_t nextStation); | |
ea94c18b | 120 | |
8d0843c6 | 121 | |
122 | private: | |
123 | ||
8d0843c6 | 124 | // Functions |
ea94c18b | 125 | void ResetTracks(); |
126 | void ResetHitsForRec(); | |
127 | ||
128 | void AddHitsForRecFromRawClusters(const AliMUONVClusterStore& clusterStore); | |
129 | void SortHitsForRecWithIncreasingChamber(); | |
130 | ||
131 | void MakeTracks(); | |
132 | ||
8d0843c6 | 133 | |
8d0843c6 | 134 | ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE |
208f139e | 135 | }; |
8d0843c6 | 136 | |
137 | #endif |