#define ALIKFPARTICLE_H
#include "AliKFParticleBase.h"
-#include "AliESDVertex.h"
+#include "TMath.h"
class AliVTrack;
+class AliVVertex;
class AliKFParticle :public AliKFParticleBase
{
//* Construction of mother particle by its 2-3-4 daughters
- AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2 );
+ AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2, Bool_t gamma = kFALSE );
AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2,
const AliKFParticle &d3 );
AliKFParticle( const AliVVertex &vertex );
- //* Copy position part to ESD vertex
-
- void CopyToESDVertex( AliESDVertex &Vtx ) const ;
-
//* Initialise covariance matrix and set current parameters to 0.0
void Initialize();
Double_t GetMomentum () const; //* momentum (same as GetP() )
Double_t GetMass () const; //* mass
Double_t GetDecayLength () const; //* decay length
+ Double_t GetDecayLengthXY () const; //* decay length in XY
Double_t GetLifeTime () const; //* life time
Double_t GetR () const; //* distance to the origin
Double_t GetErrMomentum () const ; //* momentum
Double_t GetErrMass () const ; //* mass
Double_t GetErrDecayLength () const ; //* decay length
+ Double_t GetErrDecayLengthXY () const ; //* decay length in XY
Double_t GetErrLifeTime () const ; //* life time
Double_t GetErrR () const ; //* distance to the origin
int GetMomentum ( Double_t &P, Double_t &SigmaP ) const ; //* momentum
int GetMass ( Double_t &M, Double_t &SigmaM ) const ; //* mass
int GetDecayLength ( Double_t &L, Double_t &SigmaL ) const ; //* decay length
- int GetLifeTime ( Double_t &T, Double_t &SigmaT ) const ; //* life time
+ int GetDecayLengthXY ( Double_t &L, Double_t &SigmaL ) const ; //* decay length in XY
+ int GetLifeTime ( Double_t &T, Double_t &SigmaT ) const ; //* life time
int GetR ( Double_t &R, Double_t &SigmaR ) const ; //* R
Double_t & Parameter ( int i ) ;
Double_t & Covariance( int i ) ;
Double_t & Covariance( int i, int j ) ;
+ Double_t * Parameters () ;
+ Double_t * CovarianceMatrix() ;
//*
//* CONSTRUCTION OF THE PARTICLE BY ITS DAUGHTERS AND MOTHER
//* Calculate distance from another object [cm] in XY-plane
+ Bool_t GetDistanceFromVertexXY( const Double_t vtx[], Double_t &val, Double_t &err ) const ;
+ Bool_t GetDistanceFromVertexXY( const Double_t vtx[], const Double_t Cv[], Double_t &val, Double_t &err ) const ;
+ Bool_t GetDistanceFromVertexXY( const AliKFParticle &Vtx, Double_t &val, Double_t &err ) const ;
+ Bool_t GetDistanceFromVertexXY( const AliVVertex &Vtx, Double_t &val, Double_t &err ) const ;
+
Double_t GetDistanceFromVertexXY( const Double_t vtx[] ) const ;
Double_t GetDistanceFromVertexXY( const AliKFParticle &Vtx ) const ;
Double_t GetDistanceFromVertexXY( const AliVVertex &Vtx ) const ;
//* Subtract the particle from the vertex
void SubtractFromVertex( AliKFParticle &v ) const ;
- void SubtractFromVertex( AliESDVertex &v ) const ;
+
+ //* Special method for creating gammas
+
+ void ConstructGamma( const AliKFParticle &daughter1,
+ const AliKFParticle &daughter2 );
protected:
inline void AliKFParticle::SetField( Double_t Bz )
{
- fgBz = -Bz;//!!!
-}
-
-
-inline AliKFParticle::AliKFParticle( const AliKFParticle &d1,
- const AliKFParticle &d2 )
-{
- AliKFParticle mother;
- mother+= d1;
- mother+= d2;
- *this = mother;
+ fgBz = Bz;
}
inline AliKFParticle::AliKFParticle( const AliKFParticle &d1,
else return par;
}
+inline Double_t AliKFParticle::GetDecayLengthXY () const
+{
+ Double_t par, err;
+ if( AliKFParticleBase::GetDecayLengthXY( par, err ) ) return 0;
+ else return par;
+}
+
inline Double_t AliKFParticle::GetLifeTime () const
{
Double_t par, err;
else return err;
}
+inline Double_t AliKFParticle::GetErrDecayLengthXY () const
+{
+ Double_t par, err;
+ if( AliKFParticleBase::GetDecayLengthXY( par, err ) ) return 1.e10;
+ else return err;
+}
+
inline Double_t AliKFParticle::GetErrLifeTime () const
{
Double_t par, err;
return AliKFParticleBase::GetDecayLength( L, SigmaL );
}
+inline int AliKFParticle::GetDecayLengthXY( Double_t &L, Double_t &SigmaL ) const
+{
+ return AliKFParticleBase::GetDecayLengthXY( L, SigmaL );
+}
+
inline int AliKFParticle::GetLifeTime( Double_t &T, Double_t &SigmaT ) const
{
return AliKFParticleBase::GetLifeTime( T, SigmaT );
return AliKFParticleBase::Covariance(i,j);
}
+inline Double_t * AliKFParticle::Parameters ()
+{
+ return fP;
+}
+
+inline Double_t * AliKFParticle::CovarianceMatrix()
+{
+ return fC;
+}
+
inline void AliKFParticle::operator +=( const AliKFParticle &Daughter )
{
{
return GetDeviationFromVertex( AliKFParticle(Vtx) );
}
-
+
inline Double_t AliKFParticle::GetDistanceFromParticle( const AliKFParticle &p ) const
{
return AliKFParticleBase::GetDistanceFromParticle( p );
inline void AliKFParticle::SubtractFromVertex( AliKFParticle &v ) const
{
- AliKFParticleBase::SubtractFromVertex( v.fP, v.fC, v.fChi2, v.fNDF);
-}
-
-inline void AliKFParticle::SubtractFromVertex( AliESDVertex &v ) const
-{
- AliKFParticle vTmp(v);
- SubtractFromVertex( vTmp );
- v = AliESDVertex( vTmp.fP, vTmp.fC, vTmp.fChi2, (vTmp.fNDF +3)/2, v.GetName() );
-}
-
-inline void AliKFParticle::CopyToESDVertex( AliESDVertex &v ) const
-{
- AliKFParticle vTmp=*this;
- v = AliESDVertex( vTmp.fP, vTmp.fC, vTmp.fChi2, (vTmp.fNDF +3)/2 );
+ AliKFParticleBase::SubtractFromVertex( v );
}
inline Double_t AliKFParticle::GetFieldAlice()
AliKFParticleBase::TransportBz( GetFieldAlice(), dS, P, C );
}
+inline void AliKFParticle::ConstructGamma( const AliKFParticle &daughter1,
+ const AliKFParticle &daughter2 )
+{
+ AliKFParticleBase::ConstructGammaBz( daughter1, daughter2, GetFieldAlice() );
+}
+
#endif