]>
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; |
21 | class AliMUONHitForRec; | |
8d0843c6 | 22 | class AliMUONTriggerTrack; |
7771752e | 23 | class AliMUONTrackHitPattern; |
7ec3b9cf | 24 | class AliMUONVClusterStore; |
25 | class AliMUONVTrackStore; | |
26 | class AliMUONVTriggerTrackStore; | |
27 | class AliMUONVTriggerStore; | |
28 | class AliMUONGeometryTransformer; | |
29 | class AliMUONDigitMaker; | |
32ab62c9 | 30 | class AliMUONTriggerCircuit; |
3304fa09 | 31 | class TClonesArray; |
8d0843c6 | 32 | |
33 | class AliMUONVTrackReconstructor : public TObject { | |
34 | ||
35 | public: | |
7ec3b9cf | 36 | AliMUONVTrackReconstructor(); // default Constructor |
8d0843c6 | 37 | virtual ~AliMUONVTrackReconstructor(); // Destructor |
38 | ||
39 | // Parameters for track reconstruction: public methods | |
40 | // Get and Set, Set to defaults | |
41 | /// Return minimum value (GeV/c) of momentum in bending plane | |
3304fa09 | 42 | Double_t GetMinBendingMomentum() const {return AliMUONReconstructor::GetRecoParam()->GetMinBendingMomentum();} |
8d0843c6 | 43 | |
44 | // Reconstructed tracks | |
45 | /// Return number of reconstructed tracks | |
46 | Int_t GetNRecTracks() const {return fNRecTracks;} // Number | |
47 | /// Set number of reconstructed tracks | |
48 | void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;} | |
49 | /// Return array of reconstructed tracks | |
ea94c18b | 50 | TClonesArray* GetRecTracksPtr() const {return fRecTracksPtr;} // Array |
8d0843c6 | 51 | |
52 | // Functions | |
7ec3b9cf | 53 | void EventReconstruct(const AliMUONVClusterStore& clusterStore, |
54 | AliMUONVTrackStore& trackStore); | |
8d0843c6 | 55 | |
32ab62c9 | 56 | void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, |
7ec3b9cf | 57 | const AliMUONVTriggerStore& triggerStore, |
58 | AliMUONVTriggerTrackStore& triggerTrackStore); | |
59 | ||
60 | void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, | |
61 | const AliMUONVTriggerTrackStore& triggerTrackStore, | |
62 | const AliMUONVTriggerStore& triggerStore, | |
63 | const AliMUONTrackHitPattern& trackHitPattern); | |
ea94c18b | 64 | |
65 | ||
8d0843c6 | 66 | protected: |
67 | ||
8d0843c6 | 68 | TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction |
69 | Int_t fNHitsForRec; ///< number of hits for reconstruction | |
8d0843c6 | 70 | Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec |
71 | Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec | |
72 | ||
8d0843c6 | 73 | // Reconstructed tracks |
74 | TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks | |
75 | Int_t fNRecTracks; ///< number of reconstructed tracks | |
76 | ||
ea94c18b | 77 | |
8d0843c6 | 78 | // Functions |
79 | AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor | |
80 | AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator | |
81 | ||
ea94c18b | 82 | /// Make track candidats from clusters in stations(1..) 4 and 5 |
83 | virtual void MakeTrackCandidates() = 0; | |
84 | /// Follow tracks in stations(1..) 3, 2 and 1 | |
85 | virtual void FollowTracks() = 0; | |
b709ac13 | 86 | /// Complement the reconstructed tracks |
87 | virtual void ComplementTracks() = 0; | |
ea94c18b | 88 | /// Improve the reconstructed tracks |
89 | virtual void ImproveTracks() = 0; | |
90 | /// Finalize the tracking results | |
91 | virtual void Finalize() = 0; | |
92 | ||
93 | TClonesArray* MakeSegmentsInStation(Int_t station); | |
8d0843c6 | 94 | |
ea94c18b | 95 | void RemoveIdenticalTracks(); |
96 | void RemoveDoubleTracks(); | |
97 | ||
98 | Double_t TryOneHitForRec(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec, | |
99 | AliMUONTrackParam &trackParamAtHit, Bool_t updatePropagator = kFALSE); | |
019df241 | 100 | Bool_t TryOneHitForRecFast(const AliMUONTrackParam &trackParam, AliMUONHitForRec* hitForRec); |
101 | Double_t TryTwoHitForRecFast(const AliMUONTrackParam &trackParamAtHit1, AliMUONHitForRec* hitForRec2, | |
102 | AliMUONTrackParam &trackParamAtHit2); | |
103 | ||
104 | Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, Int_t nextStation); | |
ea94c18b | 105 | |
8d0843c6 | 106 | |
107 | private: | |
108 | ||
8d0843c6 | 109 | // Functions |
ea94c18b | 110 | void ResetTracks(); |
111 | void ResetHitsForRec(); | |
112 | ||
113 | void AddHitsForRecFromRawClusters(const AliMUONVClusterStore& clusterStore); | |
114 | void SortHitsForRecWithIncreasingChamber(); | |
115 | ||
116 | void MakeTracks(); | |
117 | ||
8d0843c6 | 118 | |
8d0843c6 | 119 | ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE |
208f139e | 120 | }; |
8d0843c6 | 121 | |
122 | #endif |