~AliKFParticle(){}
+ //* Construction of mother particle by its 2-3-4 daughters
+
+ AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2 );
+
+ AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2,
+ const AliKFParticle &d3 );
+
+ AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2,
+ const AliKFParticle &d3, const AliKFParticle &d4 );
+
//* Initialisation from ALICE track, PID hypothesis can be provided
- AliKFParticle( const AliExternalTrackParam &track, Int_t PID = 211 );
+ AliKFParticle( const AliExternalTrackParam &track, Int_t PID );
//* Initialisation from ESD vertex
//*
- //* Simple way to construct particles ex. D0 = Pion + Kaon;
-
- AliKFParticle operator +( const AliKFParticle &Daughter ) const;
+ //* Add daughter to the particle
- void operator +=( const AliKFParticle &Daughter );
+ void AddDaughter( const AliKFParticle &Daughter );
- //* Add daughter track to the particle
+ //* Add daughter via += operator: ex.{ D0; D0+=Pion; D0+= Kaon; }
- void AddDaughter( const AliKFParticle &Daughter );
+ void operator +=( const AliKFParticle &Daughter );
//* Set production vertex
void SubtractFromVertex( AliKFParticle &v ) const ;
void SubtractFromVertex( AliESDVertex &v ) const ;
-
protected:
//*
void GetFieldValue( const Double_t xyz[], Double_t B[] ) const ;
void GetDStoParticle( const AliKFParticleBase &p, Double_t &DS, Double_t &DSp )const ;
void Transport( Double_t dS, Double_t P[], Double_t C[] ) const ;
+ static void GetExternalTrackParam( const AliKFParticleBase &p, Double_t &X, Double_t &Alpha, Double_t P[5] ) ;
+ void GetDStoParticleALICE( const AliKFParticleBase &p, Double_t &DS, Double_t &DS1 ) const;
private:
static Double_t fgBz; //* Bz compoment of the magnetic field
- ClassDef( AliKFParticle, 3 );
+ ClassDef( AliKFParticle, 1 );
};
inline void AliKFParticle::SetField( Double_t Bz )
{
- fgBz = Bz;
+ fgBz = -Bz;//!!!
}
+
+inline AliKFParticle::AliKFParticle( const AliKFParticle &d1,
+ const AliKFParticle &d2 )
+{
+ AliKFParticle mother;
+ mother+= d1;
+ mother+= d2;
+ *this = mother;
+}
+
+inline AliKFParticle::AliKFParticle( const AliKFParticle &d1,
+ const AliKFParticle &d2,
+ const AliKFParticle &d3 )
+{
+ AliKFParticle mother;
+ mother+= d1;
+ mother+= d2;
+ mother+= d3;
+ *this = mother;
+}
+
+inline AliKFParticle::AliKFParticle( const AliKFParticle &d1,
+ const AliKFParticle &d2,
+ const AliKFParticle &d3,
+ const AliKFParticle &d4 )
+{
+ AliKFParticle mother;
+ mother+= d1;
+ mother+= d2;
+ mother+= d3;
+ mother+= d4;
+ *this = mother;
+}
+
+
inline void AliKFParticle::Initialize()
{
AliKFParticleBase::Initialize();
AliKFParticleBase::operator +=( Daughter );
}
-inline AliKFParticle AliKFParticle::operator +( const AliKFParticle &Daughter ) const
-{
- AliKFParticle tmp;
- const AliKFParticle *v[2] = {this, &Daughter };
- tmp.Construct( v,2);
- return tmp;
-}
+//inline AliKFParticle AliKFParticle::operator +( const AliKFParticle &Daughter ) const
+//{
+//AliKFParticle tmp;
+//tmp+= *this;
+//tmp+= Daughter;
+//return tmp;
+//}
inline void AliKFParticle::AddDaughter( const AliKFParticle &Daughter )
{
inline void AliKFParticle::GetDStoParticle( const AliKFParticle &p,
Double_t &DS, Double_t &DSp ) const
{
- return AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS,DSp);
+ GetDStoParticleALICE( p, DS, DSp );
+ //AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS,DSp);
}
inline Double_t AliKFParticle::GetDistanceFromParticle( const AliKFParticle &p ) const
{
- return AliKFParticleBase::GetDistanceFromParticleBz( GetFieldAlice(), p);
+ return AliKFParticleBase::GetDistanceFromParticle( p );
}
inline Double_t AliKFParticle::GetDeviationFromParticle( const AliKFParticle &p ) const
{
- return AliKFParticleBase::GetDeviationFromParticleBz( GetFieldAlice(),p);
+ return AliKFParticleBase::GetDeviationFromParticle( p );
}
inline void AliKFParticle::SubtractFromVertex( AliKFParticle &v ) const
inline void AliKFParticle::GetDStoParticle( const AliKFParticleBase &p,
Double_t &DS, Double_t &DSp )const
{
- return AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS,DSp);
+ GetDStoParticleALICE( p, DS, DSp );
+ //AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS,DSp);
}
inline void AliKFParticle::Transport( Double_t dS, Double_t P[], Double_t C[] ) const