e7a6fbf537e7376e22eaf6eebca6c8076eea45cc
[u/mrichter/AliRoot.git] / MUON / AliMUONSegment.h
1 #ifndef ALIMUONSEGMENT_H
2 #define ALIMUONSEGMENT_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 #include <TROOT.h>
9
10 class AliMUONHitForRec;
11 class AliMUONTrackParam;
12
13 class AliMUONSegment : public TObject {
14  public:
15   AliMUONSegment(){
16     // Constructor
17     ;} // Constructor
18   virtual ~AliMUONSegment(){
19     // Destructor
20     ;} // Destructor
21   AliMUONSegment (const AliMUONSegment& AliMUONSegment); // copy constructor
22   AliMUONSegment& operator=(const AliMUONSegment& AliMUONSegment); // assignment operator
23   AliMUONSegment(AliMUONHitForRec* Hit1, AliMUONHitForRec* Hit2); // Constructor from two HitForRec's
24
25   // Inline functions for Get and Set
26   AliMUONHitForRec* GetHitForRec1(void) {
27     // Get fHitForRecPtr1
28     return fHitForRecPtr1;}
29   AliMUONHitForRec* GetHitForRec2(void) {
30     // Get fHitForRecPtr2
31     return fHitForRecPtr2;}
32   Double_t GetBendingCoor(void) {
33     // Get fBendingCoor
34     return fBendingCoor;}
35   void SetBendingCoor(Double_t BendingCoor) {
36     // Set fBendingCoor
37     fBendingCoor = BendingCoor;}
38   Double_t GetBendingSlope(void) {
39     // Get fBendingSlope
40     return fBendingSlope;}
41   void SetBendingSlope(Double_t BendingSlope) {
42     // Set fBendingSlope
43     fBendingSlope = BendingSlope;}
44   Double_t GetNonBendingCoor(void) {
45     // Get fNonBendingCoor
46     return fNonBendingCoor;}
47   void SetNonBendingCoor(Double_t NonBendingCoor) {
48     // Set fNonBendingCoor
49     fNonBendingCoor = NonBendingCoor;}
50   Double_t GetNonBendingSlope(void) {
51     // Get fNonBendingSlope
52     return fNonBendingSlope;}
53   void SetNonBendingSlope(Double_t NonBendingSlope) {
54     // Set fNonBendingSlope
55     fNonBendingSlope = NonBendingSlope;}
56   Double_t GetBendingCoorReso2(void) {
57     // Get fBendingCoorReso2
58     return fBendingCoorReso2;}
59   void SetBendingCoorReso2(Double_t BendingCoorReso2) {
60     // Set fBendingCoorReso2
61     fBendingCoorReso2 = BendingCoorReso2;}
62   Double_t GetNonBendingCoorReso2(void) {
63     // Get fNonBendingCoorReso2
64     return fNonBendingCoorReso2;}
65   void SetNonBendingCoorReso2(Double_t NonBendingCoorReso2) {
66     // Set fNonBendingCoorReso2
67     fNonBendingCoorReso2 = NonBendingCoorReso2;}
68   Double_t GetBendingImpact(void) {
69     // Get fBendingImpact
70     return fBendingImpact;}
71   Bool_t GetInTrack(void) {
72     // Get fInTrack
73     return fInTrack;}
74   void SetInTrack(Bool_t InTrack) {
75     // Set fInTrack
76     fInTrack = InTrack;}
77
78   AliMUONSegment* CreateSegmentFromLinearExtrapToStation (Int_t Station, Double_t MCSfactor);
79   Double_t NormalizedChi2WithSegment(AliMUONSegment* Segment, Double_t Sigma2Cut);
80   AliMUONHitForRec* CreateHitForRecFromLinearExtrapToChamber (Int_t Chamber, Double_t MCSfactor);
81   void UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam, Double_t MCSfactor, Double_t Dz1, Double_t Dz2, Double_t Dz3, Int_t Station, Double_t InverseMomentum);
82
83   // What is necessary for sorting TClonesArray's; sufficient too ????
84   Bool_t IsSortable() const { return kTRUE; }
85   Int_t Compare(TObject* Segment); // "Compare" function for sorting
86  protected:
87  private:
88   AliMUONHitForRec* fHitForRecPtr1; // pointer to HitForRec in first chamber
89   AliMUONHitForRec* fHitForRecPtr2; // pointer to HitForRec in second chamber
90   // Bending plane:
91   Double_t fBendingCoor; // Coordinate in bending plane
92   Double_t fBendingSlope; // Slope in bending plane
93   // Covariance in bending plane:
94   Double_t fBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
95   Double_t fBendingSlopeReso2; // Covariance(slope)
96   Double_t fBendingCoorSlopeReso2; // Covariance(C1,slope)
97   Double_t fBendingImpact; // Impact parameter in bending plane
98   // Non Bending plane:
99   Double_t fNonBendingCoor; // Coordinate in non bending plane
100   Double_t fNonBendingSlope; // Slope in non bending plane
101   // Covariance in non bending plane:
102   Double_t fNonBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
103   Double_t fNonBendingSlopeReso2; // Covariance(slope)
104   Double_t fNonBendingCoorSlopeReso2; // Covariance(C1,slope)
105   Double_t fNonBendingImpact; // Impact parameter in non bending plane
106   Bool_t fInTrack; // TRUE if segment belongs to one track
107   
108   ClassDef(AliMUONSegment, 1) // Segment for reconstruction in ALICE dimuon spectrometer
109     };
110         
111 #endif