]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliFlatExternalTrackParam.h
CMake: removing qpythia from the depedencies
[u/mrichter/AliRoot.git] / HLT / global / AliFlatExternalTrackParam.h
index 20745d06c392db64ad786dd95a85b0c914a6890d..9cea8c0c0980f8c09f9fd479598ba6e080f51eae 100644 (file)
  */
 
 #include "Rtypes.h"
+#include "AliExternalTrackParam.h"
 
-struct AliFlatExternalTrackParam
+class AliFlatExternalTrackParam
 {
-  Float_t fAlpha;     // azimuthal angle of reference frame
-  Float_t fX;         // x: radial distance
-  Float_t fY;         // local Y-coordinate of a track (cm)
-  Float_t fZ;         // local Z-coordinate of a track (cm)
-  Float_t fSnp;       // local sine of the track momentum azimuthal angle
-  Float_t fTgl;       // tangent of the track momentum dip angle
-  Float_t fSigned1Pt; // 1/pt (1/(GeV/c))
-  Float_t fC[15];     // covariance matrix
+ public:
+
+  AliFlatExternalTrackParam();
+  ~AliFlatExternalTrackParam() {}
 
+  // constructor and method for reinitialisation of virtual table
+  AliFlatExternalTrackParam( AliVConstructorReinitialisationFlag );
+  void Reinitialize() { new (this) AliFlatExternalTrackParam( AliVReinitialize ); }
   void SetAlpha(Float_t alpha)             {fAlpha = alpha;}
   void SetX(Float_t x)                     {fX = x;}
   void SetY(Float_t y)                     {fY = y;}
@@ -40,8 +41,61 @@ struct AliFlatExternalTrackParam
   Float_t  GetSigned1Pt()         const {return fSigned1Pt;}
   Float_t* GetCov()               const {return const_cast<Float_t*>(fC);}
   Float_t  GetCovEntry(Int_t idx) const {return (idx >= 0 && idx < 15) ? fC[idx] : 0.;}
+  Float_t  GetPt()                const {
+    Double_t pt1 = fabs( fSigned1Pt );
+    return (pt1>kAlmost0) ? 1./pt1 : kVeryBig;
+  }
+  void GetExternalTrackParam( AliExternalTrackParam &p ) const;
+  void SetExternalTrackParam( const AliExternalTrackParam *p );
+
+ private:
+
+  Float_t fAlpha;     // azimuthal angle of reference frame
+  Float_t fX;         // x: radial distance
+  Float_t fY;         // local Y-coordinate of a track (cm)
+  Float_t fZ;         // local Z-coordinate of a track (cm)
+  Float_t fSnp;       // local sine of the track momentum azimuthal angle
+  Float_t fTgl;       // tangent of the track momentum dip angle
+  Float_t fSigned1Pt; // 1/pt (1/(GeV/c))
+  Float_t fC[15];     // covariance matrix
 };
 
-typedef struct AliFlatExternalTrackParam AliFlatExternalTrackParam;
+inline AliFlatExternalTrackParam::AliFlatExternalTrackParam()
+ :
+ fAlpha(0),  
+ fX(0),                                 
+ fY(0),
+ fZ(0),
+ fSnp(0),
+ fTgl(0),
+ fSigned1Pt(0)
+{
+  for( int i=0; i<15; i++ ) fC[i]=0;
+}
+
+#pragma GCC diagnostic ignored "-Weffc++" 
+inline AliFlatExternalTrackParam::AliFlatExternalTrackParam( AliVConstructorReinitialisationFlag ){}
+#pragma GCC diagnostic warning "-Weffc++" 
+
+inline void AliFlatExternalTrackParam::GetExternalTrackParam( AliExternalTrackParam &p ) const
+{
+ // Get external track parameters  
+  Float_t par[5] = { fY, fZ, fSnp, fTgl, fSigned1Pt };
+  p.Set( fX, fAlpha, par, fC );
+}
+
+inline void AliFlatExternalTrackParam::SetExternalTrackParam( const AliExternalTrackParam *p ) 
+{
+  // Set external track parameters
+  if( !p ) return;
+  fAlpha = p->GetAlpha();
+  fX = p->GetX();
+  fY = p->GetY();
+  fZ = p->GetZ();
+  fSnp = p->GetSnp();
+  fTgl = p->GetTgl();
+  fSigned1Pt = p->GetSigned1Pt();  
+  for (Int_t idx = 0; idx <15; ++idx) fC[idx] = p->GetCovariance()[idx];
+}
 
 #endif