X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliKFParticle.h;h=6671b18f4cbe28d405d6a58ff822ec2be70572b9;hb=6d985680263af218c5c9088611c967e4e75d5207;hp=812ace948434129db442c16588ae0d852aee0d2b;hpb=e7b09c95f744333d936d7800d9687e4f672f7c87;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliKFParticle.h b/STEER/AliKFParticle.h index 812ace94843..6671b18f4cb 100644 --- a/STEER/AliKFParticle.h +++ b/STEER/AliKFParticle.h @@ -19,9 +19,10 @@ #define ALIKFPARTICLE_H #include "AliKFParticleBase.h" -#include "AliESDVertex.h" +#include "TMath.h" -class AliExternalTrackParam; +class AliVTrack; +class AliVVertex; class AliKFParticle :public AliKFParticleBase { @@ -57,19 +58,15 @@ class AliKFParticle :public AliKFParticleBase //* Initialisation from "cartesian" coordinates ( X Y Z Px Py Pz ) //* Parameters, covariance matrix, charge and PID hypothesis should be provided - AliKFParticle( const Double_t Param[], const Double_t Cov[], Int_t Charge, Int_t PID ); + void Create( const Double_t Param[], const Double_t Cov[], Int_t Charge, Int_t PID ); //* Initialisation from ALICE track, PID hypothesis shoould be provided - AliKFParticle( const AliExternalTrackParam &track, Int_t PID ); + AliKFParticle( const AliVTrack &track, Int_t PID ); - //* Initialisation from ESD vertex + //* Initialisation from VVertex - AliKFParticle( const AliESDVertex &vertex ); - - //* Copy position part to ESD vertex - - void CopyToESDVertex( AliESDVertex &Vtx ) const ; + AliKFParticle( const AliVVertex &vertex ); //* Initialise covariance matrix and set current parameters to 0.0 @@ -103,14 +100,19 @@ class AliKFParticle :public AliKFParticleBase //* Accessors with calculations, value returned w/o error flag - Double_t GetMomentum () const; - Double_t GetMass () const; - Double_t GetDecayLength () const; - Double_t GetLifeTime () const; + Double_t GetP () const; //* momentum + Double_t GetPt () const; //* transverse momentum + Double_t GetEta () const; //* pseudorapidity + Double_t GetPhi () const; //* phi + Double_t GetMomentum () const; //* momentum (same as GetP() ) + Double_t GetMass () const; //* mass + Double_t GetDecayLength () const; //* decay length + Double_t GetLifeTime () const; //* life time + Double_t GetR () const; //* distance to the origin //* Accessors to estimated errors - Double_t GetErrX () const ; //* x of current position + Double_t GetErrX () const ; //* x of current position Double_t GetErrY () const ; //* y of current position Double_t GetErrZ () const ; //* z of current position Double_t GetErrPx () const ; //* x-compoment of 3-momentum @@ -118,18 +120,28 @@ class AliKFParticle :public AliKFParticleBase Double_t GetErrPz () const ; //* z-compoment of 3-momentum Double_t GetErrE () const ; //* energy Double_t GetErrS () const ; //* decay length / momentum - Double_t GetErrMomentum () const; - Double_t GetErrMass () const; - Double_t GetErrDecayLength () const; - Double_t GetErrLifeTime () const; + Double_t GetErrP () const ; //* momentum + Double_t GetErrPt () const ; //* transverse momentum + Double_t GetErrEta () const ; //* pseudorapidity + Double_t GetErrPhi () const ; //* phi + Double_t GetErrMomentum () const ; //* momentum + Double_t GetErrMass () const ; //* mass + Double_t GetErrDecayLength () const ; //* decay length + Double_t GetErrLifeTime () const ; //* life time + Double_t GetErrR () const ; //* distance to the origin //* Accessors with calculations( &value, &estimated sigma ) //* error flag returned (0 means no error during calculations) - int GetMomentum ( Double_t &P, Double_t &SigmaP ) const ; - int GetMass ( Double_t &M, Double_t &SigmaM ) const ; - int GetDecayLength ( Double_t &L, Double_t &SigmaL ) const ; - int GetLifeTime ( Double_t &T, Double_t &SigmaT ) const ; + int GetP ( Double_t &P, Double_t &SigmaP ) const ; //* momentum + int GetPt ( Double_t &Pt, Double_t &SigmaPt ) const ; //* transverse momentum + int GetEta ( Double_t &Eta, Double_t &SigmaEta ) const ; //* pseudorapidity + int GetPhi ( Double_t &Phi, Double_t &SigmaPhi ) const ; //* phi + 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 GetR ( Double_t &R, Double_t &SigmaR ) const ; //* R //* @@ -151,6 +163,8 @@ class AliKFParticle :public AliKFParticleBase 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 @@ -181,7 +195,7 @@ class AliKFParticle :public AliKFParticleBase //* Everything in one go void Construct( const AliKFParticle *vDaughters[], int NDaughters, - const AliKFParticle *ProdVtx=0, Double_t Mass=-1 ); + const AliKFParticle *ProdVtx=0, Double_t Mass=-1, Bool_t IsConstrained=0 ); //* //* TRANSPORT @@ -202,9 +216,9 @@ class AliKFParticle :public AliKFParticleBase void TransportToPoint( const Double_t xyz[] ); - //* Transport the particle close to ESD vertex + //* Transport the particle close to VVertex - void TransportToVertex( const AliESDVertex &v ); + void TransportToVertex( const AliVVertex &v ); //* Transport the particle close to another particle p @@ -237,7 +251,7 @@ class AliKFParticle :public AliKFParticleBase Double_t GetDistanceFromVertex( const Double_t vtx[] ) const ; Double_t GetDistanceFromVertex( const AliKFParticle &Vtx ) const ; - Double_t GetDistanceFromVertex( const AliESDVertex &Vtx ) const ; + Double_t GetDistanceFromVertex( const AliVVertex &Vtx ) const ; Double_t GetDistanceFromParticle( const AliKFParticle &p ) const ; //* Calculate sqrt(Chi2/ndf) deviation from another object @@ -245,14 +259,14 @@ class AliKFParticle :public AliKFParticleBase Double_t GetDeviationFromVertex( const Double_t v[], const Double_t Cv[]=0 ) const ; Double_t GetDeviationFromVertex( const AliKFParticle &Vtx ) const ; - Double_t GetDeviationFromVertex( const AliESDVertex &Vtx ) const ; + Double_t GetDeviationFromVertex( const AliVVertex &Vtx ) const ; Double_t GetDeviationFromParticle( const AliKFParticle &p ) const ; //* Calculate distance from another object [cm] in XY-plane Double_t GetDistanceFromVertexXY( const Double_t vtx[] ) const ; Double_t GetDistanceFromVertexXY( const AliKFParticle &Vtx ) const ; - Double_t GetDistanceFromVertexXY( const AliESDVertex &Vtx ) const ; + Double_t GetDistanceFromVertexXY( const AliVVertex &Vtx ) const ; Double_t GetDistanceFromParticleXY( const AliKFParticle &p ) const ; //* Calculate sqrt(Chi2/ndf) deviation from another object in XY plane @@ -260,7 +274,7 @@ class AliKFParticle :public AliKFParticleBase Double_t GetDeviationFromVertexXY( const Double_t v[], const Double_t Cv[]=0 ) const ; Double_t GetDeviationFromVertexXY( const AliKFParticle &Vtx ) const ; - Double_t GetDeviationFromVertexXY( const AliESDVertex &Vtx ) const ; + Double_t GetDeviationFromVertexXY( const AliVVertex &Vtx ) const ; Double_t GetDeviationFromParticleXY( const AliKFParticle &p ) const ; //* Calculate opennig angle between two particles @@ -272,13 +286,12 @@ class AliKFParticle :public AliKFParticleBase //* Subtract the particle from the vertex void SubtractFromVertex( AliKFParticle &v ) const ; - void SubtractFromVertex( AliESDVertex &v ) const ; protected: //* //* INTERNAL STUFF - //* + //* //* Method to access ALICE field @@ -291,6 +304,9 @@ class AliKFParticle :public AliKFParticleBase 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 @@ -429,6 +445,34 @@ inline Double_t AliKFParticle::GetCovariance( int i, int j ) const } +inline Double_t AliKFParticle::GetP () const +{ + Double_t par, err; + if( AliKFParticleBase::GetMomentum( par, err ) ) return 0; + else return par; +} + +inline Double_t AliKFParticle::GetPt () const +{ + Double_t par, err; + if( AliKFParticleBase::GetPt( par, err ) ) return 0; + else return par; +} + +inline Double_t AliKFParticle::GetEta () const +{ + Double_t par, err; + if( AliKFParticleBase::GetEta( par, err ) ) return 0; + else return par; +} + +inline Double_t AliKFParticle::GetPhi () const +{ + Double_t par, err; + if( AliKFParticleBase::GetPhi( par, err ) ) return 0; + else return par; +} + inline Double_t AliKFParticle::GetMomentum () const { Double_t par, err; @@ -457,6 +501,13 @@ inline Double_t AliKFParticle::GetLifeTime () const else return par; } +inline Double_t AliKFParticle::GetR () const +{ + Double_t par, err; + if( AliKFParticleBase::GetR( par, err ) ) return 0; + else return par; +} + inline Double_t AliKFParticle::GetErrX () const { return TMath::Sqrt(TMath::Abs( GetCovariance(0,0) )); @@ -497,6 +548,34 @@ inline Double_t AliKFParticle::GetErrS () const return TMath::Sqrt(TMath::Abs( GetCovariance(7,7) )); } +inline Double_t AliKFParticle::GetErrP () const +{ + Double_t par, err; + if( AliKFParticleBase::GetMomentum( par, err ) ) return 1.e10; + else return err; +} + +inline Double_t AliKFParticle::GetErrPt () const +{ + Double_t par, err; + if( AliKFParticleBase::GetPt( par, err ) ) return 1.e10; + else return err; +} + +inline Double_t AliKFParticle::GetErrEta () const +{ + Double_t par, err; + if( AliKFParticleBase::GetEta( par, err ) ) return 1.e10; + else return err; +} + +inline Double_t AliKFParticle::GetErrPhi () const +{ + Double_t par, err; + if( AliKFParticleBase::GetPhi( par, err ) ) return 1.e10; + else return err; +} + inline Double_t AliKFParticle::GetErrMomentum () const { Double_t par, err; @@ -525,6 +604,33 @@ inline Double_t AliKFParticle::GetErrLifeTime () const else return err; } +inline Double_t AliKFParticle::GetErrR () const +{ + Double_t par, err; + if( AliKFParticleBase::GetR( par, err ) ) return 1.e10; + else return err; +} + + +inline int AliKFParticle::GetP( Double_t &P, Double_t &SigmaP ) const +{ + return AliKFParticleBase::GetMomentum( P, SigmaP ); +} + +inline int AliKFParticle::GetPt( Double_t &Pt, Double_t &SigmaPt ) const +{ + return AliKFParticleBase::GetPt( Pt, SigmaPt ); +} + +inline int AliKFParticle::GetEta( Double_t &Eta, Double_t &SigmaEta ) const +{ + return AliKFParticleBase::GetEta( Eta, SigmaEta ); +} + +inline int AliKFParticle::GetPhi( Double_t &Phi, Double_t &SigmaPhi ) const +{ + return AliKFParticleBase::GetPhi( Phi, SigmaPhi ); +} inline int AliKFParticle::GetMomentum( Double_t &P, Double_t &SigmaP ) const { @@ -546,6 +652,11 @@ inline int AliKFParticle::GetLifeTime( Double_t &T, Double_t &SigmaT ) const return AliKFParticleBase::GetLifeTime( T, SigmaT ); } +inline int AliKFParticle::GetR( Double_t &R, Double_t &SigmaR ) const +{ + return AliKFParticleBase::GetR( R, SigmaR ); +} + inline Double_t & AliKFParticle::X() { return AliKFParticleBase::X(); @@ -616,6 +727,16 @@ inline Double_t & AliKFParticle::Covariance( int i, int j ) 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 ) { @@ -644,10 +765,10 @@ inline void AliKFParticle::SetNoDecayLength() } inline void AliKFParticle::Construct( const AliKFParticle *vDaughters[], int NDaughters, - const AliKFParticle *ProdVtx, Double_t Mass ) + const AliKFParticle *ProdVtx, Double_t Mass, Bool_t IsConstrained ) { AliKFParticleBase::Construct( ( const AliKFParticleBase**)vDaughters, NDaughters, - ( const AliKFParticleBase*)ProdVtx, Mass ); + ( const AliKFParticleBase*)ProdVtx, Mass, IsConstrained ); } inline void AliKFParticle::TransportToDecayVertex() @@ -665,7 +786,7 @@ inline void AliKFParticle::TransportToPoint( const Double_t xyz[] ) TransportToDS( GetDStoPoint(xyz) ); } -inline void AliKFParticle::TransportToVertex( const AliESDVertex &v ) +inline void AliKFParticle::TransportToVertex( const AliVVertex &v ) { TransportToPoint( AliKFParticle(v).fP ); } @@ -716,12 +837,12 @@ inline Double_t AliKFParticle::GetDeviationFromVertex( const AliKFParticle &Vtx return AliKFParticleBase::GetDeviationFromVertex( Vtx ); } -inline Double_t AliKFParticle::GetDistanceFromVertex( const AliESDVertex &Vtx ) const +inline Double_t AliKFParticle::GetDistanceFromVertex( const AliVVertex &Vtx ) const { return GetDistanceFromVertex( AliKFParticle(Vtx) ); } -inline Double_t AliKFParticle::GetDeviationFromVertex( const AliESDVertex &Vtx ) const +inline Double_t AliKFParticle::GetDeviationFromVertex( const AliVVertex &Vtx ) const { return GetDeviationFromVertex( AliKFParticle(Vtx) ); } @@ -741,19 +862,6 @@ 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 ); -} - inline Double_t AliKFParticle::GetFieldAlice() { return fgBz; @@ -775,6 +883,7 @@ inline void AliKFParticle::GetDStoParticleXY( const AliKFParticleBase &p, Double_t &DS, Double_t &DSp ) const { AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS, DSp ) ; + //GetDStoParticleALICE( p, DS, DSp ) ; } inline void AliKFParticle::Transport( Double_t dS, Double_t P[], Double_t C[] ) const