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