New TTask based method to do Digits To clusters. Works with files of multiple
[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 ///////////////////////////////////////////////////////////
9 // Segment for reconstruction in ALICE dimuon  spectrometer
10 ///////////////////////////////////////////////////////////
11
12 #include <TObject.h>
13
14 class AliMUONHitForRec;
15 class AliMUONTrackParam;
16
17 class AliMUONSegment : public TObject {
18  public:
19   AliMUONSegment(); // default constructor
20   virtual ~AliMUONSegment(){
21     // Destructor
22     ;} // Destructor
23   AliMUONSegment (const AliMUONSegment& AliMUONSegment); // copy constructor
24   AliMUONSegment& operator=(const AliMUONSegment& AliMUONSegment); // assignment operator
25   AliMUONSegment(AliMUONHitForRec* Hit1, AliMUONHitForRec* Hit2); // Constructor from two HitForRec's
26
27   // Inline functions for Get and Set
28   AliMUONHitForRec* GetHitForRec1(void) const {return fHitForRecPtr1;}
29   AliMUONHitForRec* GetHitForRec2(void) const {return fHitForRecPtr2;}
30   Double_t GetBendingCoor(void) const {return fBendingCoor;}
31   void SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;}
32   Double_t GetBendingSlope(void) const {return fBendingSlope;}
33   void SetBendingSlope(Double_t BendingSlope) {fBendingSlope = BendingSlope;}
34   Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;}
35   void SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;}
36   Double_t GetNonBendingSlope(void) const {return fNonBendingSlope;}
37   void SetNonBendingSlope(Double_t NonBendingSlope) {fNonBendingSlope = NonBendingSlope;}
38   Double_t GetBendingCoorReso2(void) const {return fBendingCoorReso2;}
39   void SetBendingCoorReso2(Double_t BendingCoorReso2) {fBendingCoorReso2 = BendingCoorReso2;}
40   Double_t GetNonBendingCoorReso2(void) const {return fNonBendingCoorReso2;}
41   void SetNonBendingCoorReso2(Double_t NonBendingCoorReso2) {fNonBendingCoorReso2 = NonBendingCoorReso2;}
42   Double_t GetBendingImpact(void) const {return fBendingImpact;}
43   Bool_t GetInTrack(void) const {return fInTrack;}
44   void SetInTrack(Bool_t InTrack) {fInTrack = InTrack;}
45
46   AliMUONSegment* CreateSegmentFromLinearExtrapToStation (Int_t Station, Double_t MCSfactor);
47   Double_t NormalizedChi2WithSegment(AliMUONSegment* Segment, Double_t Sigma2Cut);
48   AliMUONHitForRec* CreateHitForRecFromLinearExtrapToChamber (Int_t Chamber, Double_t MCSfactor);
49   void UpdateFromStationTrackParam(AliMUONTrackParam *TrackParam, Double_t MCSfactor, Double_t Dz1, Double_t Dz2, Double_t Dz3, Int_t Station, Double_t InverseMomentum);
50
51   // What is necessary for sorting TClonesArray's; sufficient too ????
52   Bool_t IsSortable() const { return kTRUE; }
53   Int_t Compare(const TObject* Segment) const; // "Compare" function for sorting
54  protected:
55  private:
56   AliMUONHitForRec* fHitForRecPtr1; // pointer to HitForRec in first chamber
57   AliMUONHitForRec* fHitForRecPtr2; // pointer to HitForRec in second chamber
58   // Bending plane:
59   Double_t fBendingCoor; // Coordinate in bending plane
60   Double_t fBendingSlope; // Slope in bending plane
61   // Covariance in bending plane:
62   Double_t fBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
63   Double_t fBendingSlopeReso2; // Covariance(slope)
64   Double_t fBendingCoorSlopeReso2; // Covariance(C1,slope)
65   Double_t fBendingImpact; // Impact parameter in bending plane
66   // Non Bending plane:
67   Double_t fNonBendingCoor; // Coordinate in non bending plane
68   Double_t fNonBendingSlope; // Slope in non bending plane
69   // Covariance in non bending plane:
70   Double_t fNonBendingCoorReso2; // Covariance(coordinate C1 in first chamber)
71   Double_t fNonBendingSlopeReso2; // Covariance(slope)
72   Double_t fNonBendingCoorSlopeReso2; // Covariance(C1,slope)
73   Double_t fNonBendingImpact; // Impact parameter in non bending plane
74   Bool_t fInTrack; // TRUE if segment belongs to one track
75   
76   ClassDef(AliMUONSegment, 1) // Segment for reconstruction in ALICE dimuon spectrometer
77     };
78         
79 #endif