- Adding hits pattern in trigger chambers in AliMUONTrack (Diego)
[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 AliMUONData;
18 class AliMUONTriggerTrack;
19 class AliMUONTrackHitPattern;
20
21 class AliMUONVTrackReconstructor : public TObject {
22
23  public:
24   AliMUONVTrackReconstructor(AliMUONData* data); // default Constructor
25   virtual ~AliMUONVTrackReconstructor(); // Destructor
26
27   // Parameters for track reconstruction: public methods
28   // Get and Set, Set to defaults
29            /// Return minimum value (GeV/c) of momentum in bending plane
30   Double_t GetMinBendingMomentum(void) const {return fMinBendingMomentum;}
31            /// Return chamber resolution (cm) in bending plane
32   Double_t GetBendingResolution(void) const {return fBendingResolution;}
33            /// Return chamber resolution (cm) in non-bending plane
34   Double_t GetNonBendingResolution(void) const {return fNonBendingResolution;}
35
36   // Reconstructed tracks
37            /// Return number of reconstructed tracks
38   Int_t GetNRecTracks() const {return fNRecTracks;} // Number
39            /// Set number of reconstructed tracks
40   void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;}
41            /// Return array of reconstructed tracks
42   TClonesArray* GetRecTracksPtr(void) const {return fRecTracksPtr;} // Array
43  
44   // Functions
45   void EventReconstruct(void);
46   void EventReconstructTrigger(void);
47   virtual void EventDump(void) = 0;  ///< dump reconstructed event
48   void EventDumpTrigger(void);  // dump reconstructed trigger event
49   
50           /// Return MUON data
51   AliMUONData*  GetMUONData() {return fMUONData;}
52           /// Set MUON data
53   void SetMUONData(AliMUONData* data) {fMUONData = data;}
54
55           /// Set trigger circuit
56   void SetTriggerCircuit(TClonesArray* circuit) {fTriggerCircuit = circuit;}
57
58
59  protected:
60
61   // Defaults parameters for reconstruction
62   static const Double_t fgkDefaultMinBendingMomentum; ///< default min. bending momentum for reconstruction
63   static const Double_t fgkDefaultMaxBendingMomentum; ///< default max. bending momentum for reconstruction
64   static const Double_t fgkDefaultBendingResolution; ///< default bending coordinate resolution for reconstruction 
65   static const Double_t fgkDefaultNonBendingResolution; ///< default non bending coordinate resolution for reconstruction
66   static const Double_t fgkDefaultBendingVertexDispersion; ///< default vertex dispersion in bending plane for reconstruction
67   static const Double_t fgkDefaultNonBendingVertexDispersion; ///< default vertex dispersion in non bending plane for reconstruction
68   static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching
69   
70   // Parameters for track reconstruction
71   Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane
72   Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane
73   Double_t fBendingResolution; ///< chamber resolution (cm) in bending plane
74   Double_t fNonBendingResolution; ///< chamber resolution (cm) in non bending plane
75   Double_t fBendingVertexDispersion; ///< vextex dispersion (cm) in bending plane
76   Double_t fNonBendingVertexDispersion; ///< vextex dispersion (cm) in non bending plane
77   Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching
78   
79   TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction
80   Int_t fNHitsForRec; ///< number of hits for reconstruction
81   Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec
82   Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec
83
84   // Reconstructed tracks
85   TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
86   Int_t fNRecTracks; ///< number of reconstructed tracks
87
88   // data container
89   AliMUONData* fMUONData; ///< Data container for MUON subsystem 
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() = 0;
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   AliMUONTrackHitPattern *fTrackHitPattern; ///< Pointer to class for hit pattern recognition
112
113  private:
114   
115   AliMUONTriggerTrack* fTriggerTrack; ///< Trigger track structure
116
117   TClonesArray* fTriggerCircuit;      //!< trigger circuit array
118   
119   // Functions
120   void ResetTracks(void);
121   void ResetHitsForRec(void);
122   
123   void ValidateTracksWithTrigger(void);
124   
125   Bool_t MakeTriggerTracks(void);
126
127
128   ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE
129 };
130         
131 #endif