]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliTrackParam.h
Test case for B0 -> mu
[u/mrichter/AliRoot.git] / STEER / AliTrackParam.h
1 #ifndef ALITRACKPARAM_H
2 #define ALITRACKPARAM_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 //                                                                           //
10 // class for fast math                                                       //
11 //                                                                           //
12 // Class for generic track parameters                                        //
13 //                                                                           //
14 ///////////////////////////////////////////////////////////////////////////////
15
16
17 #include <TObject.h>
18 class TVector3;
19
20 class AliCluster;
21 class AliExternalTrackParam;
22
23
24 class AliFastMath {
25 public:
26   AliFastMath();  
27   static Double_t FastAsin(Double_t x);   
28  private: 
29   static Double_t fgFastAsin[20000];  //Array to contain the asin values
30 };
31
32
33 class AliTrackParam: public TObject {
34 public:
35   virtual ~AliTrackParam() {}
36   virtual const Double_t* GetParameter() const = 0;
37   virtual const Double_t* GetCovariance() const = 0;
38   virtual Double_t     X() const = 0;
39   virtual Double_t     Alpha() const = 0;
40   virtual AliExternalTrackParam* CreateExternalParam() const = 0;
41   virtual void         ResetCovariance(Double_t factor = 10.,
42                                        Bool_t clearOffDiagonal = kTRUE) = 0;
43
44   virtual Double_t     Y() const = 0;
45   virtual Double_t     Z() const = 0;
46
47   virtual Bool_t       PropagateTo(Double_t x, Double_t* length = NULL) = 0;
48   virtual Bool_t       RotateTo(Double_t alpha) = 0;
49   Bool_t               RotateBy(Double_t dAlpha)
50     {return RotateTo(Alpha() + dAlpha);};
51   virtual Bool_t       RotateAndPropagateTo(Double_t alpha, Double_t x, 
52                                             Double_t* length);
53   virtual Bool_t       CorrectForMaterial(Double_t dAngle2, 
54                                           Double_t dPrel) = 0;
55   virtual Bool_t       GetProlongationAt(Double_t x, Double_t& y, 
56                                          Double_t& z) const = 0;
57   virtual Double_t     GetXAtVertex(Double_t x = 0, Double_t y = 0) const = 0;
58   virtual Double_t     GetDsdx() const;
59
60   virtual Double_t     GetPredictedChi2(const AliCluster* cluster) = 0;
61   virtual Bool_t       Update(const AliCluster* cluster) = 0;
62
63   virtual Double_t     Phi() const;
64   virtual Double_t     SigmaPhi() const;
65   virtual Double_t     Theta() const;
66   virtual Double_t     SigmaTheta() const;
67   virtual Double_t     Eta() const;
68   virtual Double_t     Px() const;
69   virtual Double_t     Py() const;
70   virtual Double_t     Pz() const;
71   virtual Double_t     Pt() const;
72   virtual Double_t     SigmaPt() const;
73   virtual Double_t     P() const;
74   virtual TVector3     Momentum() const;
75   virtual TVector3     Position() const;
76   virtual TVector3     PositionAt(Double_t x) const;
77
78   ClassDef(AliTrackParam, 1)
79 };
80
81 #endif