]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliFlatExternalTrackParam.h
flat friend update
[u/mrichter/AliRoot.git] / HLT / global / AliFlatExternalTrackParam.h
1 #ifndef ALIFLATEXTERNALTRACKPARAM_H
2 #define ALIFLATEXTERNALTRACKPARAM_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               *
6  * Primary Authors : Sergey Gorbunov, Jochen Thaeder, Chiara Zampolli     */
7
8 /**
9  * >> Flat structure representing parameters of an external track  <<
10  */
11
12 #include "Rtypes.h"
13 #include "AliExternalTrackParam.h"
14
15 class AliFlatExternalTrackParam
16 {
17  public:
18
19   AliFlatExternalTrackParam();
20   ~AliFlatExternalTrackParam() {}
21
22   // constructor and method for reinitialisation of virtual table
23   AliFlatExternalTrackParam( AliVConstructorReinitialisationFlag );
24   void Reinitialize() { new (this) AliFlatExternalTrackParam( AliVReinitialize ); }
25  
26   void SetAlpha(Float_t alpha)             {fAlpha = alpha;}
27   void SetX(Float_t x)                     {fX = x;}
28   void SetY(Float_t y)                     {fY = y;}
29   void SetZ(Float_t z)                     {fZ = z;}
30   void SetSnp(Float_t snp)                 {fSnp = snp;}
31   void SetTgl(Float_t tgl)                 {fTgl = tgl;}
32   void SetSigned1Pt(Float_t signed1Pt)     {fSigned1Pt = signed1Pt;}
33   void SetCovEntry(Int_t idx, Float_t cov) {(idx >= 0 && idx < 15) ? fC[idx] = cov : 0.;}
34
35   Float_t  GetAlpha()             const {return fAlpha;}
36   Float_t  GetX()                 const {return fX;}
37   Float_t  GetY()                 const {return fY;}
38   Float_t  GetZ()                 const {return fZ;}
39   Float_t  GetSnp()               const {return fSnp;}
40   Float_t  GetTgl()               const {return fTgl;}
41   Float_t  GetSigned1Pt()         const {return fSigned1Pt;}
42   Float_t* GetCov()               const {return const_cast<Float_t*>(fC);}
43   Float_t  GetCovEntry(Int_t idx) const {return (idx >= 0 && idx < 15) ? fC[idx] : 0.;}
44   Float_t  GetPt()                const {
45     Double_t pt1 = fabs( fSigned1Pt );
46     return (pt1>kAlmost0) ? 1./pt1 : kVeryBig;
47   }
48   void GetExternalTrackParam( AliExternalTrackParam &p ) const;
49   void SetExternalTrackParam( const AliExternalTrackParam *p );
50
51  private:
52
53   Float_t fAlpha;     // azimuthal angle of reference frame
54   Float_t fX;         // x: radial distance
55   Float_t fY;         // local Y-coordinate of a track (cm)
56   Float_t fZ;         // local Z-coordinate of a track (cm)
57   Float_t fSnp;       // local sine of the track momentum azimuthal angle
58   Float_t fTgl;       // tangent of the track momentum dip angle
59   Float_t fSigned1Pt; // 1/pt (1/(GeV/c))
60   Float_t fC[15];     // covariance matrix
61 };
62
63 inline AliFlatExternalTrackParam::AliFlatExternalTrackParam()
64  :
65  fAlpha(0),  
66  fX(0),                                  
67  fY(0),
68  fZ(0),
69  fSnp(0),
70  fTgl(0),
71  fSigned1Pt(0)
72 {
73   for( int i=0; i<15; i++ ) fC[i]=0;
74 }
75
76 #pragma GCC diagnostic ignored "-Weffc++" 
77 inline AliFlatExternalTrackParam::AliFlatExternalTrackParam( AliVConstructorReinitialisationFlag ){}
78 #pragma GCC diagnostic warning "-Weffc++" 
79
80 inline void AliFlatExternalTrackParam::GetExternalTrackParam( AliExternalTrackParam &p ) const
81 {
82  // Get external track parameters  
83   Float_t par[5] = { fY, fZ, fSnp, fTgl, fSigned1Pt };
84   p.Set( fX, fAlpha, par, fC );
85 }
86
87 inline void AliFlatExternalTrackParam::SetExternalTrackParam( const AliExternalTrackParam *p ) 
88 {
89   // Set external track parameters
90   if( !p ) return;
91   fAlpha = p->GetAlpha();
92   fX = p->GetX();
93   fY = p->GetY();
94   fZ = p->GetZ();
95   fSnp = p->GetSnp();
96   fTgl = p->GetTgl();
97   fSigned1Pt = p->GetSigned1Pt();  
98   for (Int_t idx = 0; idx <15; ++idx) fC[idx] = p->GetCovariance()[idx];
99 }
100
101 #endif