*/
#include "Rtypes.h"
-#include "AliVVexternalTrackParam.h"
-#include "AliFlatESDMisc.h"
+#include "AliExternalTrackParam.h"
-
-class AliFlatExternalTrackParam: public AliVVexternalTrackParam
+class AliFlatExternalTrackParam
{
- friend class AliFlatESDTrack;
public:
- AliFlatExternalTrackParam() {}
- virtual ~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
+ 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;}
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:
- AliFlatExternalTrackParam(AliFlatESDSpecialConstructorFlag f);
-
+
+ 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