]>
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; |
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 | ||
8d0843c6 | 39 | // Reconstructed tracks |
40 | /// Return number of reconstructed tracks | |
41 | Int_t GetNRecTracks() const {return fNRecTracks;} // Number | |
42 | /// Set number of reconstructed tracks | |
43 | void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;} | |
44 | /// Return array of reconstructed tracks | |
ea94c18b | 45 | TClonesArray* GetRecTracksPtr() const {return fRecTracksPtr;} // Array |
8d0843c6 | 46 | |
47 | // Functions | |
7ec3b9cf | 48 | void EventReconstruct(const AliMUONVClusterStore& clusterStore, |
49 | AliMUONVTrackStore& trackStore); | |
8d0843c6 | 50 | |
32ab62c9 | 51 | void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, |
7ec3b9cf | 52 | const AliMUONVTriggerStore& triggerStore, |
53 | AliMUONVTriggerTrackStore& triggerTrackStore); | |
54 | ||
55 | void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, | |
56 | const AliMUONVTriggerTrackStore& triggerTrackStore, | |
57 | const AliMUONVTriggerStore& triggerStore, | |
58 | const AliMUONTrackHitPattern& trackHitPattern); | |
ea94c18b | 59 | |
60 | ||
8d0843c6 | 61 | protected: |
62 | ||
8d0843c6 | 63 | TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks |
64 | Int_t fNRecTracks; ///< number of reconstructed tracks | |
65 | ||
ea94c18b | 66 | |
8d0843c6 | 67 | // Functions |
68 | AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor | |
69 | AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator | |
70 | ||
ea94c18b | 71 | /// Make track candidats from clusters in stations(1..) 4 and 5 |
96ebe67e | 72 | virtual void MakeTrackCandidates(const AliMUONVClusterStore& clusterStore) = 0; |
ea94c18b | 73 | /// Follow tracks in stations(1..) 3, 2 and 1 |
96ebe67e | 74 | virtual void FollowTracks(const AliMUONVClusterStore& clusterStore) = 0; |
b709ac13 | 75 | /// Complement the reconstructed tracks |
96ebe67e | 76 | virtual void ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0; |
ea94c18b | 77 | /// Improve the reconstructed tracks |
78 | virtual void ImproveTracks() = 0; | |
79 | /// Finalize the tracking results | |
80 | virtual void Finalize() = 0; | |
81 | ||
96ebe67e | 82 | TClonesArray* MakeSegmentsInStation(const AliMUONVClusterStore& clusterStore, Int_t station); |
8d0843c6 | 83 | |
ea94c18b | 84 | void RemoveIdenticalTracks(); |
85 | void RemoveDoubleTracks(); | |
86 | ||
96ebe67e | 87 | Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster, |
88 | AliMUONTrackParam &trackParamAtCluster, Bool_t updatePropagator = kFALSE); | |
89 | Bool_t TryOneClusterFast(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster); | |
90 | Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2, | |
91 | AliMUONTrackParam &trackParamAtCluster2); | |
019df241 | 92 | |
96ebe67e | 93 | Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, |
94 | Int_t nextStation); | |
ea94c18b | 95 | |
8d0843c6 | 96 | |
97 | private: | |
98 | ||
8d0843c6 | 99 | // Functions |
ea94c18b | 100 | void ResetTracks(); |
ea94c18b | 101 | |
8d0843c6 | 102 | |
8d0843c6 | 103 | ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE |
208f139e | 104 | }; |
8d0843c6 | 105 | |
106 | #endif |