]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONVTrackReconstructor.h
1b73fdc521a05c614c98458da6b77c235c2ea14f
[u/mrichter/AliRoot.git] / MUON / AliMUONVTrackReconstructor.h
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 ///
12 //  Author: Philippe Pillot
13
14 #include <TObject.h>
15
16 class TClonesArray;
17 class AliMUONTriggerTrack;
18 class AliMUONTrackHitPattern;
19 class AliMUONVClusterStore;
20 class AliMUONVTrackStore;
21 class AliMUONVTriggerTrackStore;
22 class AliMUONVTriggerStore;
23 class AliMUONGeometryTransformer;
24 class AliMUONDigitMaker;
25
26 class AliMUONVTrackReconstructor : public TObject {
27
28  public:
29   AliMUONVTrackReconstructor(); // default Constructor
30   virtual ~AliMUONVTrackReconstructor(); // Destructor
31
32   // Parameters for track reconstruction: public methods
33   // Get and Set, Set to defaults
34            /// Return minimum value (GeV/c) of momentum in bending plane
35   Double_t GetMinBendingMomentum(void) const {return fMinBendingMomentum;}
36            /// Return chamber resolution (cm) in bending plane
37   Double_t GetBendingResolution(void) const {return fBendingResolution;}
38            /// Return chamber resolution (cm) in non-bending plane
39   Double_t GetNonBendingResolution(void) const {return fNonBendingResolution;}
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
47   TClonesArray* GetRecTracksPtr(void) const {return fRecTracksPtr;} // Array
48  
49   // Functions
50   void EventReconstruct(const AliMUONVClusterStore& clusterStore,
51                         AliMUONVTrackStore& trackStore);
52   
53   void EventReconstructTrigger(const TClonesArray& triggerCircuitArray,
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);
61     
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
67   static const Double_t fgkDefaultBendingResolution; ///< default bending coordinate resolution for reconstruction 
68   static const Double_t fgkDefaultNonBendingResolution; ///< default non bending coordinate resolution for reconstruction
69   static const Double_t fgkDefaultBendingVertexDispersion; ///< default vertex dispersion in bending plane for reconstruction
70   static const Double_t fgkDefaultNonBendingVertexDispersion; ///< default vertex dispersion in non bending plane for reconstruction
71   static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching
72   
73   // Parameters for track reconstruction
74   Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane
75   Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane
76   Double_t fBendingResolution; ///< chamber resolution (cm) in bending plane
77   Double_t fNonBendingResolution; ///< chamber resolution (cm) in non bending plane
78   Double_t fBendingVertexDispersion; ///< vextex dispersion (cm) in bending plane
79   Double_t fNonBendingVertexDispersion; ///< vextex dispersion (cm) in non bending plane
80   Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching
81   
82   TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction
83   Int_t fNHitsForRec; ///< number of hits for reconstruction
84   Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec
85   Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec
86
87   // Reconstructed tracks
88   TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
89   Int_t fNRecTracks; ///< number of reconstructed tracks
90
91   // Functions
92   AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor
93   AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator
94   
95   void SortHitsForRecWithIncreasingChamber();
96   TClonesArray *MakeSegmentsInStation(Int_t station);
97
98                /// \todo add comment
99   virtual void AddHitsForRecFromRawClusters(const AliMUONVClusterStore& clusterStore);
100                /// \todo add comment
101   virtual void MakeTracks(void) = 0;
102                /// \todo add comment
103   virtual void MakeTrackCandidates(void) = 0;
104                /// \todo add comment
105   virtual void FollowTracks(void) = 0;
106                /// \todo add comment
107   virtual void RemoveDoubleTracks(void) = 0;
108                /// \todo add comment
109   virtual void FillMUONTrack(void) = 0;
110
111  private:
112   
113   // Functions
114   void ResetTracks(void);
115   void ResetHitsForRec(void);
116   
117   ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE
118 };
119         
120 #endif