Line data Source code
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 0 : if( !p ) return;
91 0 : fAlpha = p->GetAlpha();
92 0 : fX = p->GetX();
93 0 : fY = p->GetY();
94 0 : fZ = p->GetZ();
95 0 : fSnp = p->GetSnp();
96 0 : fTgl = p->GetTgl();
97 0 : fSigned1Pt = p->GetSigned1Pt();
98 0 : for (Int_t idx = 0; idx <15; ++idx) fC[idx] = p->GetCovariance()[idx];
99 0 : }
100 :
101 : #endif
|