522f2034d0a85f54fd97faacaec7fb695c947c4b
[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   inline AliMUONHitForRec* GetHitForRec1(void) {
27     // Get fHitForRecPtr1
28     return fHitForRecPtr1;}
29   inline AliMUONHitForRec* GetHitForRec2(void) {
30     // Get fHitForRecPtr2
31     return fHitForRecPtr2;}
32   inline Double_t GetBendingCoorReso2(void) {
33     // Get fBendingCoorReso2
34     return fBendingCoorReso2;}
35   inline void SetBendingCoorReso2(Double_t BendingCoorReso2) {
36     // Set fBendingCoorReso2
37     fBendingCoorReso2 = BendingCoorReso2;}
38   inline Double_t GetNonBendingCoorReso2(void) {
39     // Get fNonBendingCoorReso2
40     return fNonBendingCoorReso2;}
41   inline void SetNonBendingCoorReso2(Double_t NonBendingCoorReso2) {
42     // Set fNonBendingCoorReso2
43     fNonBendingCoorReso2 = NonBendingCoorReso2;}
44   inline Double_t GetBendingImpact(void) {
45     // Get fBendingImpact
46     return fBendingImpact;}
47   inline Bool_t GetInTrack(void) {
48     // Get fInTrack
49     return fInTrack;}
50   inline void SetInTrack(Bool_t InTrack) {
51     // Set fInTrack
52     fInTrack = InTrack;}
53
54   AliMUONSegment* CreateSegmentFromLinearExtrapToStation (Int_t Station, Double_t MCSfactor);
55   Double_t NormalizedChi2WithSegment(AliMUONSegment* Segment, Double_t Sigma2Cut);
56   AliMUONHitForRec* CreateHitForRecFromLinearExtrapToChamber (Int_t Chamber, Double_t MCSfactor);
57   void UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam, Double_t MCSfactor, Double_t Dz1, Double_t Dz2);
58
59   // What is necessary for sorting TClonesArray's; sufficient too ????
60   Bool_t IsSortable() const { return kTRUE; }
61   Int_t Compare(TObject* Segment); // "Compare" function for sorting
62  protected:
63  private:
64   AliMUONHitForRec* fHitForRecPtr1; // pointer to HitForRec in first chamber
65   AliMUONHitForRec* fHitForRecPtr2; // pointer to HitForRec in second chamber
66   // Bending plane:
67   Double_t fBendingCoor; // Coordinate in bending plane
68   Double_t fBendingSlope; // Slope in bending plane
69   // Covariance in bending plane:
70   Double_t fBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
71   Double_t fBendingSlopeReso2; // Covariance(slope)
72   Double_t fBendingCoorSlopeReso2; // Covariance(C1,slope)
73   Double_t fBendingImpact; // Impact parameter in bending plane
74   // Non Bending plane:
75   Double_t fNonBendingCoor; // Coordinate in non bending plane
76   Double_t fNonBendingSlope; // Slope in non bending plane
77   // Covariance in non bending plane:
78   Double_t fNonBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
79   Double_t fNonBendingSlopeReso2; // Covariance(slope)
80   Double_t fNonBendingCoorSlopeReso2; // Covariance(C1,slope)
81   Double_t fNonBendingImpact; // Impact parameter in non bending plane
82   Bool_t fInTrack; // TRUE if segment belongs to one track
83   
84   ClassDef(AliMUONSegment, 1) // Class definition in ROOT context
85     };
86         
87 #endif