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