7f92fc3509ba7f601c2cd8741ce07f8d4b41f310
[u/mrichter/AliRoot.git] / MUON / AliMUONHitForRec.h
1 #ifndef ALIMUONHITFORREC_H
2 #define ALIMUONHITFORREC_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 // Revision of includes 07/05/2004
8
9 /// \ingroup rec
10 /// \class AliMUONHitForRec
11 /// \brief Hit for reconstruction in ALICE dimuon spectrometer
12 ///
13 /// \author J. Gosset
14
15 #include <TObject.h>
16
17 class AliTrackReference;
18 class AliMUONRawCluster;
19 class AliMUONTrackHit;
20 class AliMUONTrackParam;
21
22 class AliMUONHitForRec : public TObject {
23  public:
24   AliMUONHitForRec(); // Constructor
25   virtual ~AliMUONHitForRec(); // Destructor
26   AliMUONHitForRec (const AliMUONHitForRec& AliMUONHitForRec); // copy constructor
27   AliMUONHitForRec& operator=(const AliMUONHitForRec& AliMUONHitForRec); // assignment operator
28   AliMUONHitForRec(AliTrackReference* mHit); // Constructor from track ref. hit
29   AliMUONHitForRec(AliMUONRawCluster* theRawCluster); // Constructor from raw cluster
30
31   // Inline functions for Get and Set
32            /// Return coordinate (cm) in bending plane
33   Double_t GetBendingCoor(void) const { return fBendingCoor;}
34            /// Set coordinate (cm) in bending plane
35   void SetBendingCoor(Double_t BendingCoor) { fBendingCoor = BendingCoor;}
36            /// Return coordinate (cm) in non bending plane
37   Double_t GetNonBendingCoor(void) const { return fNonBendingCoor;}
38            /// Set coordinate (cm) in non bending plane
39   void SetNonBendingCoor(Double_t NonBendingCoor) { fNonBendingCoor = NonBendingCoor;}
40            /// Return Z coordinate (cm)
41   Double_t GetZ(void) const { return fZ;}
42            /// Set Z coordinate (cm)
43   void SetZ(Double_t Z) { fZ = Z;}
44            /// Return resolution**2 (cm**2) on coordinate in bending plane
45   Double_t GetBendingReso2(void) const { return fBendingReso2;}
46            /// Set resolution**2 (cm**2) on coordinate in bending plane
47   void SetBendingReso2(Double_t BendingReso2) { fBendingReso2 = BendingReso2;}
48            /// Return resolution**2 (cm**2) on coordinate in non bending plane
49   Double_t GetNonBendingReso2(void) const { return fNonBendingReso2;}
50            /// Set resolution**2 (cm**2) on coordinate in non bending plane
51   void SetNonBendingReso2(Double_t NonBendingReso2) { fNonBendingReso2 = NonBendingReso2;}
52            /// Return chamber number (0...)
53   Int_t GetChamberNumber(void) const { return fChamberNumber;}
54            /// Set chamber number (0...)
55   void SetChamberNumber(Int_t ChamberNumber) { fChamberNumber = ChamberNumber;}
56            /// Return detection element Id
57   Int_t GetDetElemId(void) const {return fDetElemId;}
58            /// Set detection element Id
59   void SetDetElemId(Int_t id) { fDetElemId = id;}
60            /// Return hit number (0...)
61   Int_t GetHitNumber(void) const { return fHitNumber;}
62            /// Set hit number (0...)
63   void SetHitNumber(Int_t HitNumber) { fHitNumber = HitNumber;}
64            /// Return track number (0...) in TTR
65   Int_t GetTTRTrack(void) const { return fTTRTrack;}
66            /// Set track number (0...) in TTR
67   void SetTTRTrack(Int_t TTRTrack) { fTTRTrack = TTRTrack;}
68            /// Return Track ref. signal (1) or background (0)
69   Int_t GetTrackRefSignal(void) const { return fTrackRefSignal;}
70            /// Set Track ref. signal (1) or background (0)
71   void SetTrackRefSignal(Int_t TrackRefSignal) { fTrackRefSignal = TrackRefSignal;}
72            /// Return number of TrackHit's made with HitForRec
73   Int_t GetNTrackHits(void) const { return fNTrackHits;}
74            /// Set number of TrackHit's made with HitForRec
75   void SetNTrackHits(Int_t NTrackHits) { fNTrackHits = NTrackHits;}
76
77   Double_t NormalizedChi2WithHitForRec(AliMUONHitForRec* Hit, Double_t Sigma2Cut) const;
78
79   /// What is necessary for sorting TClonesArray's; sufficient too ????
80   Bool_t IsSortable() const { return kTRUE; }
81   Int_t Compare(const TObject* HitForRec) const; // "Compare" function for sorting
82
83   virtual void Print(Option_t* opt="") const;
84   
85  private:
86   Double_t fBendingCoor; ///< coordinate (cm) in bending plane
87   Double_t fNonBendingCoor; ///< coordinate (cm) in non bending plane
88   Double_t fZ; ///< Z coordinate (cm)
89   Double_t fBendingReso2; ///< resolution**2 (cm**2) on coordinate in bending plane
90   Double_t fNonBendingReso2; ///< resolution**2 (cm**2) on coordinate in non bending plane
91
92   // links back to original hit for various checks
93   // ideal would be real link to "hit" or "reconstructed hit"
94   // if everything would be in memory ????
95   Int_t fChamberNumber; ///< chamber number (0...)
96   Int_t fDetElemId; ///< detection element Id   
97   Int_t fHitNumber; ///< hit number (0...): RawCluster in "chamber" event of TR or track ref. hit in "track" event of TTR
98   Int_t fTTRTrack; ///< track number (0...) in TTR
99   Int_t fTrackRefSignal; ///< Track ref. signal (1) or background (0)
100
101   Int_t fNTrackHits; //!<  number of TrackHit's made with HitForRec
102   
103   ClassDef(AliMUONHitForRec, 2) // Hit for reconstruction in ALICE dimuon spectrometer
104     };
105         
106 #endif