]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONVTrackReconstructor.h
Managed the 234 local boards inside the class & simplified the code
[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 class AliMUONTriggerCircuit;
26
27 class AliMUONVTrackReconstructor : public TObject {
28
29  public:
30   AliMUONVTrackReconstructor(); // default Constructor
31   virtual ~AliMUONVTrackReconstructor(); // Destructor
32
33   // Parameters for track reconstruction: public methods
34   // Get and Set, Set to defaults
35            /// Return minimum value (GeV/c) of momentum in bending plane
36   Double_t GetMinBendingMomentum(void) const {return fMinBendingMomentum;}
37            /// Return chamber resolution (cm) in bending plane
38   Double_t GetBendingResolution(void) const {return fBendingResolution;}
39            /// Return chamber resolution (cm) in non-bending plane
40   Double_t GetNonBendingResolution(void) const {return fNonBendingResolution;}
41
42   // Reconstructed tracks
43            /// Return number of reconstructed tracks
44   Int_t GetNRecTracks() const {return fNRecTracks;} // Number
45            /// Set number of reconstructed tracks
46   void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;}
47            /// Return array of reconstructed tracks
48   TClonesArray* GetRecTracksPtr(void) const {return fRecTracksPtr;} // Array
49  
50   // Functions
51   void EventReconstruct(const AliMUONVClusterStore& clusterStore,
52                         AliMUONVTrackStore& trackStore);
53   
54   void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit,
55                                const AliMUONVTriggerStore& triggerStore,
56                                AliMUONVTriggerTrackStore& triggerTrackStore);
57   
58   void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore,
59                                  const AliMUONVTriggerTrackStore& triggerTrackStore,
60                                  const AliMUONVTriggerStore& triggerStore,
61                                  const AliMUONTrackHitPattern& trackHitPattern);
62     
63  protected:
64
65   // Defaults parameters for reconstruction
66   static const Double_t fgkDefaultMinBendingMomentum; ///< default min. bending momentum for reconstruction
67   static const Double_t fgkDefaultMaxBendingMomentum; ///< default max. bending momentum for reconstruction
68   static const Double_t fgkDefaultBendingResolution; ///< default bending coordinate resolution for reconstruction 
69   static const Double_t fgkDefaultNonBendingResolution; ///< default non bending coordinate resolution for reconstruction
70   static const Double_t fgkDefaultBendingVertexDispersion; ///< default vertex dispersion in bending plane for reconstruction
71   static const Double_t fgkDefaultNonBendingVertexDispersion; ///< default vertex dispersion in non bending plane for reconstruction
72   static const Double_t fgkDefaultMaxNormChi2MatchTrigger; ///< default maximum normalized chi2 of tracking/trigger track matching
73   
74   // Parameters for track reconstruction
75   Double_t fMinBendingMomentum; ///< minimum value (GeV/c) of momentum in bending plane
76   Double_t fMaxBendingMomentum; ///< maximum value (GeV/c) of momentum in bending plane
77   Double_t fBendingResolution; ///< chamber resolution (cm) in bending plane
78   Double_t fNonBendingResolution; ///< chamber resolution (cm) in non bending plane
79   Double_t fBendingVertexDispersion; ///< vextex dispersion (cm) in bending plane
80   Double_t fNonBendingVertexDispersion; ///< vextex dispersion (cm) in non bending plane
81   Double_t fMaxNormChi2MatchTrigger; ///< maximum normalized chi2 of tracking/trigger track matching
82   
83   TClonesArray* fHitsForRecPtr; ///< pointer to the array of hits for reconstruction
84   Int_t fNHitsForRec; ///< number of hits for reconstruction
85   Int_t* fNHitsForRecPerChamber; ///< number of HitsForRec
86   Int_t* fIndexOfFirstHitForRecPerChamber; ///< index (0...) of first HitForRec
87
88   // Reconstructed tracks
89   TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
90   Int_t fNRecTracks; ///< number of reconstructed tracks
91
92   // Functions
93   AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs); ///< copy constructor
94   AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs); ///< assignment operator
95   
96   void SortHitsForRecWithIncreasingChamber();
97   TClonesArray *MakeSegmentsInStation(Int_t station);
98
99                /// \todo add comment
100   virtual void AddHitsForRecFromRawClusters(const AliMUONVClusterStore& clusterStore);
101                /// \todo add comment
102   virtual void MakeTracks(void) = 0;
103                /// \todo add comment
104   virtual void MakeTrackCandidates(void) = 0;
105                /// \todo add comment
106   virtual void FollowTracks(void) = 0;
107                /// \todo add comment
108   virtual void RemoveDoubleTracks(void) = 0;
109                /// \todo add comment
110   virtual void FillMUONTrack(void) = 0;
111
112  private:
113   
114   // Functions
115   void ResetTracks(void);
116   void ResetHitsForRec(void);
117   
118   ClassDef(AliMUONVTrackReconstructor, 0) // MUON track reconstructor in ALICE
119 };
120         
121 #endif