LCOV - code coverage report
Current view: top level - STEER/ESD - AliKFParticle.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 31 220 14.1 %
Date: 2016-06-14 17:26:59 Functions: 24 128 18.8 %

          Line data    Source code
       1             : //---------------------------------------------------------------------------------
       2             : // The AliKFParticle class
       3             : // .
       4             : // @author  S.Gorbunov, I.Kisel
       5             : // @version 1.0
       6             : // @since   13.05.07
       7             : // 
       8             : // Class to reconstruct and store the decayed particle parameters.
       9             : // The method is described in CBM-SOFT note 2007-003, 
      10             : // ``Reconstruction of decayed particles based on the Kalman filter'', 
      11             : // http://www.gsi.de/documents/DOC-2007-May-14-1.pdf
      12             : //
      13             : // This class is ALICE interface to general mathematics in AliKFParticleBase
      14             : // 
      15             : //  -= Copyright &copy ALICE HLT Group =-
      16             : //_________________________________________________________________________________
      17             : 
      18             : #ifndef ALIKFPARTICLE_H
      19             : #define ALIKFPARTICLE_H
      20             : 
      21             : #include "AliKFParticleBase.h"
      22             : #include "TMath.h"
      23             : 
      24             : class AliVTrack;
      25             : class AliVVertex;
      26             : class AliExternalTrackParam;
      27             : 
      28         112 : class AliKFParticle :public AliKFParticleBase
      29             : {
      30             :   
      31             :  public:
      32             : 
      33             :   //*
      34             :   //*  INITIALIZATION
      35             :   //*
      36             : 
      37             :   //* Set magnetic field for all particles
      38             :   
      39             :   static void SetField( Double_t Bz );
      40             : 
      41             :   //* Constructor (empty)
      42             : 
      43         492 :   AliKFParticle():AliKFParticleBase(){ ; }
      44             : 
      45             :   //* Destructor (empty)
      46             : 
      47        1052 :   ~AliKFParticle(){ ; }
      48             : 
      49             :   //* Construction of mother particle by its 2-3-4 daughters
      50             : 
      51             :   AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2, Bool_t gamma = kFALSE );
      52             : 
      53             :   AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2, 
      54             :                  const AliKFParticle &d3 );
      55             : 
      56             :   AliKFParticle( const AliKFParticle &d1, const AliKFParticle &d2, 
      57             :                  const AliKFParticle &d3, const AliKFParticle &d4 );
      58             :  
      59             :  //* Initialisation from "cartesian" coordinates ( X Y Z Px Py Pz )
      60             :  //* Parameters, covariance matrix, charge and PID hypothesis should be provided 
      61             : 
      62             :   void Create( const Double_t Param[], const Double_t Cov[], Int_t Charge, Int_t PID );
      63             :   void Create( const Double_t Param[], const Double_t Cov[], Int_t Charge, Double_t Mass );
      64             : 
      65             :  //* Initialisation from ALICE track, PID hypothesis shoould be provided 
      66             : 
      67             :   AliKFParticle( const AliVTrack &track, Int_t PID );
      68             :   AliKFParticle( const AliExternalTrackParam &track, Double_t Mass, Int_t Charge );
      69             : 
      70             :   //* Initialisation from VVertex 
      71             : 
      72             :   AliKFParticle( const AliVVertex &vertex );
      73             : 
      74             :   //* Initialise covariance matrix and set current parameters to 0.0 
      75             : 
      76             :   void Initialize();
      77             : 
      78             :   //* Set decay vertex parameters for linearisation 
      79             : 
      80             :   void SetVtxGuess( Double_t x, Double_t y, Double_t z );
      81             : 
      82             :   //*
      83             :   //*  ACCESSORS
      84             :   //*
      85             : 
      86             :   //* Simple accessors 
      87             : 
      88             :   Double_t GetX    () const ; //* x of current position
      89             :   Double_t GetY    () const ; //* y of current position
      90             :   Double_t GetZ    () const ; //* z of current position
      91             :   Double_t GetPx   () const ; //* x-compoment of 3-momentum
      92             :   Double_t GetPy   () const ; //* y-compoment of 3-momentum
      93             :   Double_t GetPz   () const ; //* z-compoment of 3-momentum
      94             :   Double_t GetE    () const ; //* energy
      95             :   Double_t GetS    () const ; //* decay length / momentum
      96             :   Int_t    GetQ    () const ; //* charge
      97             :   Double_t GetChi2 () const ; //* chi^2
      98             :   Int_t    GetNDF  () const ; //* Number of Degrees of Freedom
      99             : 
     100           0 :   const Double_t& X    () const { return fP[0]; }
     101           0 :   const Double_t& Y    () const { return fP[1]; }
     102           0 :   const Double_t& Z    () const { return fP[2]; }
     103           0 :   const Double_t& Px   () const { return fP[3]; }
     104           0 :   const Double_t& Py   () const { return fP[4]; }
     105           0 :   const Double_t& Pz   () const { return fP[5]; }
     106           0 :   const Double_t& E    () const { return fP[6]; }
     107           0 :   const Double_t& S    () const { return fP[7]; }
     108           0 :   const Int_t   & Q    () const { return fQ;    }
     109           0 :   const Double_t& Chi2 () const { return fChi2; }
     110           0 :   const Int_t   & NDF  () const { return fNDF;  }
     111             :   
     112             :   Double_t GetParameter ( int i ) const ;
     113             :   Double_t GetCovariance( int i ) const ;
     114             :   Double_t GetCovariance( int i, int j ) const ;
     115             : 
     116             :   //* Accessors with calculations, value returned w/o error flag
     117             :   
     118             :   Double_t GetP           () const; //* momentum
     119             :   Double_t GetPt          () const; //* transverse momentum
     120             :   Double_t GetEta         () const; //* pseudorapidity
     121             :   Double_t GetPhi         () const; //* phi
     122             :   Double_t GetMomentum    () const; //* momentum (same as GetP() )
     123             :   Double_t GetMass        () const; //* mass
     124             :   Double_t GetDecayLength () const; //* decay length
     125             :   Double_t GetDecayLengthXY () const; //* decay length in XY
     126             :   Double_t GetLifeTime    () const; //* life time
     127             :   Double_t GetR           () const; //* distance to the origin
     128             : 
     129             :   //* Accessors to estimated errors
     130             : 
     131             :   Double_t GetErrX           () const ; //* x of current position 
     132             :   Double_t GetErrY           () const ; //* y of current position
     133             :   Double_t GetErrZ           () const ; //* z of current position
     134             :   Double_t GetErrPx          () const ; //* x-compoment of 3-momentum
     135             :   Double_t GetErrPy          () const ; //* y-compoment of 3-momentum
     136             :   Double_t GetErrPz          () const ; //* z-compoment of 3-momentum
     137             :   Double_t GetErrE           () const ; //* energy
     138             :   Double_t GetErrS           () const ; //* decay length / momentum
     139             :   Double_t GetErrP           () const ; //* momentum
     140             :   Double_t GetErrPt          () const ; //* transverse momentum
     141             :   Double_t GetErrEta         () const ; //* pseudorapidity
     142             :   Double_t GetErrPhi         () const ; //* phi
     143             :   Double_t GetErrMomentum    () const ; //* momentum
     144             :   Double_t GetErrMass        () const ; //* mass
     145             :   Double_t GetErrDecayLength () const ; //* decay length
     146             :   Double_t GetErrDecayLengthXY () const ; //* decay length in XY
     147             :   Double_t GetErrLifeTime    () const ; //* life time
     148             :   Double_t GetErrR           () const ; //* distance to the origin
     149             : 
     150             :   //* Accessors with calculations( &value, &estimated sigma )
     151             :   //* error flag returned (0 means no error during calculations) 
     152             : 
     153             :   int GetP           ( Double_t &P, Double_t &SigmaP ) const ;   //* momentum
     154             :   int GetPt          ( Double_t &Pt, Double_t &SigmaPt ) const ; //* transverse momentum
     155             :   int GetEta         ( Double_t &Eta, Double_t &SigmaEta ) const ; //* pseudorapidity
     156             :   int GetPhi         ( Double_t &Phi, Double_t &SigmaPhi ) const ; //* phi
     157             :   int GetMomentum    ( Double_t &P, Double_t &SigmaP ) const ;   //* momentum
     158             :   int GetMass        ( Double_t &M, Double_t &SigmaM ) const ;   //* mass
     159             :   int GetDecayLength ( Double_t &L, Double_t &SigmaL ) const ;   //* decay length
     160             :   int GetDecayLengthXY ( Double_t &L, Double_t &SigmaL ) const ;   //* decay length in XY
     161             :    int GetLifeTime    ( Double_t &T, Double_t &SigmaT ) const ;   //* life time
     162             :   int GetR           ( Double_t &R, Double_t &SigmaR ) const ; //* R
     163             : 
     164             : 
     165             :   //*
     166             :   //*  MODIFIERS
     167             :   //*
     168             :   
     169             :   Double_t & X    () ;
     170             :   Double_t & Y    () ;
     171             :   Double_t & Z    () ;
     172             :   Double_t & Px   () ;
     173             :   Double_t & Py   () ;
     174             :   Double_t & Pz   () ;
     175             :   Double_t & E    () ;
     176             :   Double_t & S    () ;
     177             :   Int_t    & Q    () ;
     178             :   Double_t & Chi2 () ;
     179             :   Int_t    & NDF  () ;
     180             : 
     181             :   Double_t & Parameter ( int i ) ;
     182             :   Double_t & Covariance( int i ) ;
     183             :   Double_t & Covariance( int i, int j ) ;
     184             :   Double_t * Parameters () ;
     185             :   Double_t * CovarianceMatrix() ;
     186             : 
     187             :   //* 
     188             :   //* CONSTRUCTION OF THE PARTICLE BY ITS DAUGHTERS AND MOTHER
     189             :   //* USING THE KALMAN FILTER METHOD
     190             :   //*
     191             : 
     192             : 
     193             :   //* Add daughter to the particle 
     194             : 
     195             :   void AddDaughter( const AliKFParticle &Daughter );
     196             : 
     197             :   //* Add daughter via += operator: ex.{ D0; D0+=Pion; D0+= Kaon; }
     198             : 
     199             :   void operator +=( const AliKFParticle &Daughter );  
     200             : 
     201             :   //* Set production vertex 
     202             : 
     203             :   void SetProductionVertex( const AliKFParticle &Vtx );
     204             : 
     205             :   //* Set mass constraint 
     206             : 
     207             :   void SetMassConstraint( Double_t Mass, Double_t SigmaMass = 0  );
     208             :   
     209             :   //* Set no decay length for resonances
     210             : 
     211             :   void SetNoDecayLength();
     212             : 
     213             :   //* Everything in one go  
     214             : 
     215             :   void Construct( const AliKFParticle *vDaughters[], int NDaughters, 
     216             :                   const AliKFParticle *ProdVtx=0,   Double_t Mass=-1, Bool_t IsConstrained=0  );
     217             : 
     218             :   //*
     219             :   //*                   TRANSPORT
     220             :   //* 
     221             :   //*  ( main transportation parameter is S = SignedPath/Momentum )
     222             :   //*  ( parameters of decay & production vertices are stored locally )
     223             :   //*
     224             : 
     225             :   //* Transport the particle to its decay vertex 
     226             : 
     227             :   void TransportToDecayVertex();
     228             : 
     229             :   //* Transport the particle to its production vertex 
     230             : 
     231             :   void TransportToProductionVertex();
     232             : 
     233             :   //* Transport the particle close to xyz[] point 
     234             : 
     235             :   void TransportToPoint( const Double_t xyz[] );
     236             : 
     237             :   //* Transport the particle close to VVertex  
     238             : 
     239             :   void TransportToVertex( const AliVVertex &v );
     240             : 
     241             :   //* Transport the particle close to another particle p 
     242             : 
     243             :   void TransportToParticle( const AliKFParticle &p );
     244             : 
     245             :   //* Transport the particle on dS parameter (SignedPath/Momentum) 
     246             : 
     247             :   void TransportToDS( Double_t dS );
     248             : 
     249             :   //* Get dS to a certain space point 
     250             : 
     251             :   Double_t GetDStoPoint( const Double_t xyz[] ) const ;
     252             :   
     253             :   //* Get dS to other particle p (dSp for particle p also returned) 
     254             : 
     255             :   void GetDStoParticle( const AliKFParticle &p, 
     256             :                         Double_t &DS, Double_t &DSp ) const ;
     257             :   
     258             :   //* Get dS to other particle p in XY-plane
     259             : 
     260             :   void GetDStoParticleXY( const AliKFParticleBase &p, 
     261             :                           Double_t &DS, Double_t &DSp ) const ;
     262             :   
     263             :   //* 
     264             :   //* OTHER UTILITIES
     265             :   //*
     266             : 
     267             : 
     268             :   //* Calculate distance from another object [cm]
     269             : 
     270             :   Double_t GetDistanceFromVertex( const Double_t vtx[] ) const ;
     271             :   Double_t GetDistanceFromVertex( const AliKFParticle &Vtx ) const ;
     272             :   Double_t GetDistanceFromVertex( const AliVVertex &Vtx ) const ;
     273             :   Double_t GetDistanceFromParticle( const AliKFParticle &p ) const ;
     274             : 
     275             :   //* Calculate sqrt(Chi2/ndf) deviation from another object
     276             :   //* ( v = [xyz]-vertex, Cv=[Cxx,Cxy,Cyy,Cxz,Cyz,Czz]-covariance matrix )
     277             : 
     278             :   Double_t GetDeviationFromVertex( const Double_t v[], const Double_t Cv[]=0 ) const ;
     279             :   Double_t GetDeviationFromVertex( const AliKFParticle &Vtx ) const ;
     280             :   Double_t GetDeviationFromVertex( const AliVVertex &Vtx ) const ;
     281             :   Double_t GetDeviationFromParticle( const AliKFParticle &p ) const ;
     282             :  
     283             :   //* Calculate distance from another object [cm] in XY-plane
     284             : 
     285             :   Bool_t GetDistanceFromVertexXY( const Double_t vtx[], Double_t &val, Double_t &err ) const ;
     286             :   Bool_t GetDistanceFromVertexXY( const Double_t vtx[], const Double_t Cv[], Double_t &val, Double_t &err ) const ;
     287             :   Bool_t GetDistanceFromVertexXY( const AliKFParticle &Vtx, Double_t &val, Double_t &err ) const ;
     288             :   Bool_t GetDistanceFromVertexXY( const AliVVertex &Vtx, Double_t &val, Double_t &err ) const ;
     289             : 
     290             :   Double_t GetDistanceFromVertexXY( const Double_t vtx[] ) const ;
     291             :   Double_t GetDistanceFromVertexXY( const AliKFParticle &Vtx ) const ;
     292             :   Double_t GetDistanceFromVertexXY( const AliVVertex &Vtx ) const ;
     293             :   Double_t GetDistanceFromParticleXY( const AliKFParticle &p ) const ;
     294             : 
     295             :   //* Calculate sqrt(Chi2/ndf) deviation from another object in XY plane
     296             :   //* ( v = [xyz]-vertex, Cv=[Cxx,Cxy,Cyy,Cxz,Cyz,Czz]-covariance matrix )
     297             : 
     298             :   Double_t GetDeviationFromVertexXY( const Double_t v[], const Double_t Cv[]=0 ) const ;
     299             :   Double_t GetDeviationFromVertexXY( const AliKFParticle &Vtx ) const ;
     300             :   Double_t GetDeviationFromVertexXY( const AliVVertex &Vtx ) const ;
     301             :   Double_t GetDeviationFromParticleXY( const AliKFParticle &p ) const ;
     302             : 
     303             :   //* Calculate opennig angle between two particles
     304             : 
     305             :   Double_t GetAngle  ( const AliKFParticle &p ) const ;
     306             :   Double_t GetAngleXY( const AliKFParticle &p ) const ;
     307             :   Double_t GetAngleRZ( const AliKFParticle &p ) const ;
     308             : 
     309             :   //* Subtract the particle from the vertex  
     310             : 
     311             :   void SubtractFromVertex( AliKFParticle &v ) const ;
     312             : 
     313             :   //* Special method for creating gammas
     314             : 
     315             :   void ConstructGamma( const AliKFParticle &daughter1,
     316             :                        const AliKFParticle &daughter2  );
     317             :   
     318             :     // * Pseudo Proper Time of decay = (r*pt) / |pt| * M/|pt|
     319             :     // @primVertex - primary vertex
     320             :     // @mass - mass of the mother particle (in the case of "Hb -> JPsi" it would be JPsi mass)
     321             :     // @*timeErr2 - squared error of the decay time. If timeErr2 = 0 it isn't calculated
     322             :   Double_t GetPseudoProperDecayTime( const AliKFParticle &primVertex, const Double_t& mass, Double_t* timeErr2 = 0 ) const;
     323             :   
     324             :  protected: 
     325             :   
     326             :   //*
     327             :   //*  INTERNAL STUFF
     328             :   //* 
     329             : 
     330             :   //* Method to access ALICE field 
     331             :  
     332             :   static Double_t GetFieldAlice();
     333             :   
     334             :   //* Other methods required by the abstract AliKFParticleBase class 
     335             :   
     336             :   void GetFieldValue( const Double_t xyz[], Double_t B[] ) const ;
     337             :   void GetDStoParticle( const AliKFParticleBase &p, Double_t &DS, Double_t &DSp )const ;
     338             :   void Transport( Double_t dS, Double_t P[], Double_t C[] ) const ;
     339             :   static void GetExternalTrackParam( const AliKFParticleBase &p, Double_t &X, Double_t &Alpha, Double_t P[5]  ) ;
     340             : 
     341             :   //void GetDStoParticleALICE( const AliKFParticleBase &p, Double_t &DS, Double_t &DS1 ) const;
     342             : 
     343             : 
     344             :  private:
     345             : 
     346             :   static Double_t fgBz;  //* Bz compoment of the magnetic field
     347             : 
     348         172 :   ClassDef( AliKFParticle, 1 );
     349             : 
     350             : };
     351             : 
     352             : 
     353             : 
     354             : //---------------------------------------------------------------------
     355             : //
     356             : //     Inline implementation of the AliKFParticle methods
     357             : //
     358             : //---------------------------------------------------------------------
     359             : 
     360             : 
     361             : inline void AliKFParticle::SetField( Double_t Bz )
     362             : { 
     363           0 :   fgBz = Bz;
     364           0 : }
     365             : 
     366           0 : inline AliKFParticle::AliKFParticle( const AliKFParticle &d1, 
     367             :                                      const AliKFParticle &d2, 
     368             :                                      const AliKFParticle &d3 )
     369           0 : {
     370           0 :   AliKFParticle mother;
     371           0 :   mother+= d1;
     372           0 :   mother+= d2;
     373           0 :   mother+= d3;
     374           0 :   *this = mother;
     375           0 : }
     376             : 
     377           0 : inline AliKFParticle::AliKFParticle( const AliKFParticle &d1, 
     378             :                                      const AliKFParticle &d2, 
     379             :                                      const AliKFParticle &d3, 
     380             :                                      const AliKFParticle &d4 )
     381           0 : {
     382           0 :   AliKFParticle mother;
     383           0 :   mother+= d1;
     384           0 :   mother+= d2;
     385           0 :   mother+= d3;
     386           0 :   mother+= d4;
     387           0 :   *this = mother;
     388           0 : }
     389             : 
     390             : 
     391             : inline void AliKFParticle::Initialize()
     392             : { 
     393          36 :   AliKFParticleBase::Initialize(); 
     394          18 : }
     395             : 
     396             : inline void AliKFParticle::SetVtxGuess( Double_t x, Double_t y, Double_t z )
     397             : {
     398           0 :   AliKFParticleBase::SetVtxGuess(x,y,z);
     399           0 : }  
     400             : 
     401             : inline Double_t AliKFParticle::GetX    () const 
     402             : { 
     403           0 :   return AliKFParticleBase::GetX();    
     404             : }
     405             : 
     406             : inline Double_t AliKFParticle::GetY    () const 
     407             : { 
     408           0 :   return AliKFParticleBase::GetY();    
     409             : }
     410             : 
     411             : inline Double_t AliKFParticle::GetZ    () const 
     412             : { 
     413           0 :   return AliKFParticleBase::GetZ();    
     414             : }
     415             : 
     416             : inline Double_t AliKFParticle::GetPx   () const 
     417             : { 
     418           0 :   return AliKFParticleBase::GetPx();   
     419             : }
     420             : 
     421             : inline Double_t AliKFParticle::GetPy   () const 
     422             : { 
     423           0 :   return AliKFParticleBase::GetPy();   
     424             : }
     425             : 
     426             : inline Double_t AliKFParticle::GetPz   () const 
     427             : { 
     428           0 :   return AliKFParticleBase::GetPz();   
     429             : }
     430             : 
     431             : inline Double_t AliKFParticle::GetE    () const 
     432             : { 
     433           0 :   return AliKFParticleBase::GetE();    
     434             : }
     435             : 
     436             : inline Double_t AliKFParticle::GetS    () const 
     437             : { 
     438           8 :   return AliKFParticleBase::GetS();    
     439             : }
     440             : 
     441             : inline Int_t    AliKFParticle::GetQ    () const 
     442             : { 
     443           0 :   return AliKFParticleBase::GetQ();    
     444             : }
     445             : 
     446             : inline Double_t AliKFParticle::GetChi2 () const 
     447             : { 
     448         148 :   return AliKFParticleBase::GetChi2(); 
     449             : }
     450             : 
     451             : inline Int_t    AliKFParticle::GetNDF  () const 
     452             : { 
     453         296 :   return AliKFParticleBase::GetNDF();  
     454             : }
     455             : 
     456             : inline Double_t AliKFParticle::GetParameter ( int i ) const 
     457             : { 
     458           0 :   return AliKFParticleBase::GetParameter(i);  
     459             : }
     460             : 
     461             : inline Double_t AliKFParticle::GetCovariance( int i ) const 
     462             : { 
     463           0 :   return AliKFParticleBase::GetCovariance(i); 
     464             : }
     465             : 
     466             : inline Double_t AliKFParticle::GetCovariance( int i, int j ) const 
     467             : { 
     468           0 :   return AliKFParticleBase::GetCovariance(i,j);
     469             : }
     470             : 
     471             : 
     472             : inline Double_t AliKFParticle::GetP    () const
     473             : {
     474           0 :   Double_t par, err;
     475           0 :   if( AliKFParticleBase::GetMomentum( par, err ) ) return 0;
     476           0 :   else return par;
     477           0 : }
     478             : 
     479             : inline Double_t AliKFParticle::GetPt   () const
     480             : {
     481           0 :   Double_t par, err;
     482           0 :   if( AliKFParticleBase::GetPt( par, err ) ) return 0;
     483           0 :   else return par;
     484           0 : }
     485             : 
     486             : inline Double_t AliKFParticle::GetEta   () const
     487             : {
     488           0 :   Double_t par, err;
     489           0 :   if( AliKFParticleBase::GetEta( par, err ) ) return 0;
     490           0 :   else return par;
     491           0 : }
     492             : 
     493             : inline Double_t AliKFParticle::GetPhi   () const
     494             : {
     495           0 :   Double_t par, err;
     496           0 :   if( AliKFParticleBase::GetPhi( par, err ) ) return 0;
     497           0 :   else return par;
     498           0 : }
     499             : 
     500             : inline Double_t AliKFParticle::GetMomentum    () const
     501             : {
     502           0 :   Double_t par, err;
     503           0 :   if( AliKFParticleBase::GetMomentum( par, err ) ) return 0;
     504           0 :   else return par;
     505           0 : }
     506             : 
     507             : inline Double_t AliKFParticle::GetMass        () const
     508             : {
     509           0 :   Double_t par, err;
     510           0 :   if( AliKFParticleBase::GetMass( par, err ) ) return 0;
     511           0 :   else return par;
     512           0 : }
     513             : 
     514             : inline Double_t AliKFParticle::GetDecayLength () const
     515             : {
     516           0 :   Double_t par, err;
     517           0 :   if( AliKFParticleBase::GetDecayLength( par, err ) ) return 0;
     518           0 :   else return par;
     519           0 : }
     520             : 
     521             : inline Double_t AliKFParticle::GetDecayLengthXY () const
     522             : {
     523           0 :   Double_t par, err;
     524           0 :   if( AliKFParticleBase::GetDecayLengthXY( par, err ) ) return 0;
     525           0 :   else return par;
     526           0 : }
     527             : 
     528             : inline Double_t AliKFParticle::GetLifeTime    () const
     529             : {
     530           0 :   Double_t par, err;
     531           0 :   if( AliKFParticleBase::GetLifeTime( par, err ) ) return 0;
     532           0 :   else return par;
     533           0 : }
     534             : 
     535             : inline Double_t AliKFParticle::GetR   () const
     536             : {
     537           0 :   Double_t par, err;
     538           0 :   if( AliKFParticleBase::GetR( par, err ) ) return 0;
     539           0 :   else return par;
     540           0 : }
     541             : 
     542             : inline Double_t AliKFParticle::GetErrX           () const 
     543             : {
     544           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(0,0) ));
     545             : }
     546             : 
     547             : inline Double_t AliKFParticle::GetErrY           () const 
     548             : {
     549           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(1,1) ));
     550             : }
     551             : 
     552             : inline Double_t AliKFParticle::GetErrZ           () const 
     553             : {
     554           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(2,2) ));
     555             : }
     556             : 
     557             : inline Double_t AliKFParticle::GetErrPx          () const 
     558             : {
     559           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(3,3) ));
     560             : }
     561             : 
     562             : inline Double_t AliKFParticle::GetErrPy          () const 
     563             : {
     564           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(4,4) ));
     565             : }
     566             : 
     567             : inline Double_t AliKFParticle::GetErrPz          () const 
     568             : {
     569           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(5,5) ));
     570             : }
     571             : 
     572             : inline Double_t AliKFParticle::GetErrE           () const 
     573             : {
     574           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(6,6) ));
     575             : }
     576             : 
     577             : inline Double_t AliKFParticle::GetErrS           () const 
     578             : {
     579           0 :   return TMath::Sqrt(TMath::Abs( GetCovariance(7,7) ));
     580             : }
     581             : 
     582             : inline Double_t AliKFParticle::GetErrP    () const
     583             : {
     584           0 :   Double_t par, err;
     585           0 :   if( AliKFParticleBase::GetMomentum( par, err ) ) return 1.e10;
     586           0 :   else return err;
     587           0 : }
     588             : 
     589             : inline Double_t AliKFParticle::GetErrPt    () const
     590             : {
     591           0 :   Double_t par, err;
     592           0 :   if( AliKFParticleBase::GetPt( par, err ) ) return 1.e10;
     593           0 :   else return err;
     594           0 : }
     595             : 
     596             : inline Double_t AliKFParticle::GetErrEta    () const
     597             : {
     598           0 :   Double_t par, err;
     599           0 :   if( AliKFParticleBase::GetEta( par, err ) ) return 1.e10;
     600           0 :   else return err;
     601           0 : }
     602             : 
     603             : inline Double_t AliKFParticle::GetErrPhi    () const
     604             : {
     605           0 :   Double_t par, err;
     606           0 :   if( AliKFParticleBase::GetPhi( par, err ) ) return 1.e10;
     607           0 :   else return err;
     608           0 : }
     609             : 
     610             : inline Double_t AliKFParticle::GetErrMomentum    () const
     611             : {
     612           0 :   Double_t par, err;
     613           0 :   if( AliKFParticleBase::GetMomentum( par, err ) ) return 1.e10;
     614           0 :   else return err;
     615           0 : }
     616             : 
     617             : inline Double_t AliKFParticle::GetErrMass        () const
     618             : {
     619           0 :   Double_t par, err;
     620           0 :   if( AliKFParticleBase::GetMass( par, err ) ) return 1.e10;
     621           0 :   else return err;
     622           0 : }
     623             : 
     624             : inline Double_t AliKFParticle::GetErrDecayLength () const
     625             : {
     626           0 :   Double_t par, err;
     627           0 :   if( AliKFParticleBase::GetDecayLength( par, err ) ) return 1.e10;
     628           0 :   else return err;
     629           0 : }
     630             : 
     631             : inline Double_t AliKFParticle::GetErrDecayLengthXY () const
     632             : {
     633           0 :   Double_t par, err;
     634           0 :   if( AliKFParticleBase::GetDecayLengthXY( par, err ) ) return 1.e10;
     635           0 :   else return err;
     636           0 : }
     637             : 
     638             : inline Double_t AliKFParticle::GetErrLifeTime    () const
     639             : {
     640           0 :   Double_t par, err;
     641           0 :   if( AliKFParticleBase::GetLifeTime( par, err ) ) return 1.e10;
     642           0 :   else return err;
     643           0 : }
     644             : 
     645             : inline Double_t AliKFParticle::GetErrR    () const
     646             : {
     647           0 :   Double_t par, err;
     648           0 :   if( AliKFParticleBase::GetR( par, err ) ) return 1.e10;
     649           0 :   else return err;
     650           0 : }
     651             : 
     652             : 
     653             : inline int AliKFParticle::GetP( Double_t &P, Double_t &SigmaP ) const 
     654             : {
     655           0 :   return AliKFParticleBase::GetMomentum( P, SigmaP );
     656             : }
     657             : 
     658             : inline int AliKFParticle::GetPt( Double_t &Pt, Double_t &SigmaPt ) const 
     659             : {
     660           0 :   return AliKFParticleBase::GetPt( Pt, SigmaPt );
     661             : }
     662             : 
     663             : inline int AliKFParticle::GetEta( Double_t &Eta, Double_t &SigmaEta ) const 
     664             : {
     665           0 :   return AliKFParticleBase::GetEta( Eta, SigmaEta );
     666             : }
     667             : 
     668             : inline int AliKFParticle::GetPhi( Double_t &Phi, Double_t &SigmaPhi ) const 
     669             : {
     670           0 :   return AliKFParticleBase::GetPhi( Phi, SigmaPhi );
     671             : }
     672             : 
     673             : inline int AliKFParticle::GetMomentum( Double_t &P, Double_t &SigmaP ) const 
     674             : {
     675           0 :   return AliKFParticleBase::GetMomentum( P, SigmaP );
     676             : }
     677             : 
     678             : inline int AliKFParticle::GetMass( Double_t &M, Double_t &SigmaM ) const 
     679             : {
     680          36 :   return AliKFParticleBase::GetMass( M, SigmaM );
     681             : }
     682             : 
     683             : inline int AliKFParticle::GetDecayLength( Double_t &L, Double_t &SigmaL ) const 
     684             : {
     685           0 :   return AliKFParticleBase::GetDecayLength( L, SigmaL );
     686             : }
     687             : 
     688             : inline int AliKFParticle::GetDecayLengthXY( Double_t &L, Double_t &SigmaL ) const 
     689             : {
     690           0 :   return AliKFParticleBase::GetDecayLengthXY( L, SigmaL );
     691             : }
     692             : 
     693             : inline int AliKFParticle::GetLifeTime( Double_t &T, Double_t &SigmaT ) const 
     694             : {
     695           0 :   return AliKFParticleBase::GetLifeTime( T, SigmaT );
     696             : }
     697             : 
     698             : inline int AliKFParticle::GetR( Double_t &R, Double_t &SigmaR ) const 
     699             : {
     700           0 :   return AliKFParticleBase::GetR( R, SigmaR );
     701             : }
     702             : 
     703             : inline Double_t & AliKFParticle::X() 
     704             : { 
     705          44 :   return AliKFParticleBase::X();    
     706             : }
     707             : 
     708             : inline Double_t & AliKFParticle::Y()
     709             : { 
     710          44 :   return AliKFParticleBase::Y();    
     711             : }
     712             : 
     713             : inline Double_t & AliKFParticle::Z() 
     714             : { 
     715          44 :   return AliKFParticleBase::Z();    
     716             : }
     717             : 
     718             : inline Double_t & AliKFParticle::Px() 
     719             : { 
     720           0 :   return AliKFParticleBase::Px();   
     721             : }
     722             : 
     723             : inline Double_t & AliKFParticle::Py() 
     724             : { 
     725           0 :   return AliKFParticleBase::Py();   
     726             : }
     727             : 
     728             : inline Double_t & AliKFParticle::Pz() 
     729             : { 
     730           0 :   return AliKFParticleBase::Pz();   
     731             : }
     732             : 
     733             : inline Double_t & AliKFParticle::E() 
     734             : { 
     735           0 :   return AliKFParticleBase::E();    
     736             : }
     737             : 
     738             : inline Double_t & AliKFParticle::S() 
     739             : { 
     740           0 :   return AliKFParticleBase::S();    
     741             : }
     742             : 
     743             : inline Int_t    & AliKFParticle::Q() 
     744             : { 
     745           0 :   return AliKFParticleBase::Q();    
     746             : }
     747             : 
     748             : inline Double_t & AliKFParticle::Chi2() 
     749             : { 
     750           0 :   return AliKFParticleBase::Chi2(); 
     751             : }
     752             : 
     753             : inline Int_t    & AliKFParticle::NDF() 
     754             : { 
     755           0 :   return AliKFParticleBase::NDF();  
     756             : }
     757             : 
     758             : inline Double_t & AliKFParticle::Parameter ( int i )        
     759             : { 
     760           0 :   return AliKFParticleBase::Parameter(i);
     761             : }
     762             : 
     763             : inline Double_t & AliKFParticle::Covariance( int i )        
     764             : { 
     765           0 :   return AliKFParticleBase::Covariance(i);
     766             : }
     767             : 
     768             : inline Double_t & AliKFParticle::Covariance( int i, int j ) 
     769             : { 
     770         132 :   return AliKFParticleBase::Covariance(i,j); 
     771             : }
     772             : 
     773             : inline Double_t * AliKFParticle::Parameters ()
     774             : {
     775           0 :   return fP;
     776             : }
     777             : 
     778             : inline Double_t * AliKFParticle::CovarianceMatrix()
     779             : {
     780           0 :   return fC;
     781             : }
     782             : 
     783             : 
     784             : inline void AliKFParticle::operator +=( const AliKFParticle &Daughter )
     785             : {
     786         296 :   AliKFParticleBase::operator +=( Daughter );
     787         148 : }
     788             :   
     789             : 
     790             : inline void AliKFParticle::AddDaughter( const AliKFParticle &Daughter )
     791             : {
     792           0 :   AliKFParticleBase::AddDaughter( Daughter );
     793           0 : }
     794             : 
     795             : inline void AliKFParticle::SetProductionVertex( const AliKFParticle &Vtx )
     796             : {
     797         148 :   AliKFParticleBase::SetProductionVertex( Vtx );
     798          74 : }
     799             : 
     800             : inline void AliKFParticle::SetMassConstraint( Double_t Mass, Double_t SigmaMass )
     801             : {
     802          36 :   AliKFParticleBase::SetMassConstraint( Mass, SigmaMass );
     803          18 : }
     804             :     
     805             : inline void AliKFParticle::SetNoDecayLength()
     806             : {
     807           0 :   AliKFParticleBase::SetNoDecayLength();
     808           0 : }
     809             : 
     810             : inline void AliKFParticle::Construct( const AliKFParticle *vDaughters[], int NDaughters, 
     811             :                                const AliKFParticle *ProdVtx,   Double_t Mass, Bool_t IsConstrained  )
     812             : {    
     813           0 :   AliKFParticleBase::Construct( ( const AliKFParticleBase**)vDaughters, NDaughters, 
     814           0 :                          ( const AliKFParticleBase*)ProdVtx, Mass, IsConstrained );
     815           0 : }
     816             : 
     817             : inline void AliKFParticle::TransportToDecayVertex()
     818             : { 
     819           0 :   AliKFParticleBase::TransportToDecayVertex(); 
     820           0 : }
     821             : 
     822             : inline void AliKFParticle::TransportToProductionVertex()
     823             : {
     824           0 :   AliKFParticleBase::TransportToProductionVertex();
     825           0 : }
     826             : 
     827             : inline void AliKFParticle::TransportToPoint( const Double_t xyz[] )
     828             : { 
     829           0 :   TransportToDS( GetDStoPoint(xyz) );
     830           0 : }
     831             : 
     832             : inline void AliKFParticle::TransportToVertex( const AliVVertex &v )
     833             : {       
     834           0 :   TransportToPoint( AliKFParticle(v).fP );
     835           0 : }
     836             : 
     837             : inline void AliKFParticle::TransportToParticle( const AliKFParticle &p )
     838             : { 
     839           0 :   Double_t dS, dSp;
     840           0 :   GetDStoParticle( p, dS, dSp );
     841           0 :   TransportToDS( dS );
     842           0 : }
     843             : 
     844             : inline void AliKFParticle::TransportToDS( Double_t dS )
     845             : {
     846           0 :   AliKFParticleBase::TransportToDS( dS );
     847           0 : } 
     848             : 
     849             : inline Double_t AliKFParticle::GetDStoPoint( const Double_t xyz[] ) const 
     850             : {
     851        1036 :   return AliKFParticleBase::GetDStoPointBz( GetFieldAlice(), xyz );
     852             : }
     853             : 
     854             :   
     855             : inline void AliKFParticle::GetDStoParticle( const AliKFParticle &p, 
     856             :                                             Double_t &DS, Double_t &DSp ) const 
     857             : {
     858           0 :   GetDStoParticleXY( p, DS, DSp );
     859           0 : }
     860             : 
     861             : 
     862             : inline Double_t AliKFParticle::GetDistanceFromVertex( const Double_t vtx[] ) const
     863             : {
     864           0 :   return AliKFParticleBase::GetDistanceFromVertex( vtx );
     865             : }
     866             : 
     867             : inline Double_t AliKFParticle::GetDeviationFromVertex( const Double_t v[], 
     868             :                                                        const Double_t Cv[] ) const
     869             : {
     870           0 :   return AliKFParticleBase::GetDeviationFromVertex( v, Cv);
     871             : }
     872             : 
     873             : inline Double_t AliKFParticle::GetDistanceFromVertex( const AliKFParticle &Vtx ) const
     874             : {
     875           0 :   return AliKFParticleBase::GetDistanceFromVertex( Vtx );
     876             : }
     877             : 
     878             : inline Double_t AliKFParticle::GetDeviationFromVertex( const AliKFParticle &Vtx ) const
     879             : {
     880           0 :   return AliKFParticleBase::GetDeviationFromVertex( Vtx );
     881             : }
     882             : 
     883             : inline Double_t AliKFParticle::GetDistanceFromVertex( const AliVVertex &Vtx ) const
     884             : {
     885           0 :   return GetDistanceFromVertex( AliKFParticle(Vtx) );
     886           0 : }
     887             : 
     888             : inline Double_t AliKFParticle::GetDeviationFromVertex( const AliVVertex &Vtx ) const
     889             : {
     890           0 :   return GetDeviationFromVertex( AliKFParticle(Vtx) );
     891           0 : }
     892             :  
     893             : inline Double_t AliKFParticle::GetDistanceFromParticle( const AliKFParticle &p ) const 
     894             : {
     895           0 :   return AliKFParticleBase::GetDistanceFromParticle( p );
     896             : }
     897             : 
     898             : inline Double_t AliKFParticle::GetDeviationFromParticle( const AliKFParticle &p ) const 
     899             : {
     900           0 :   return AliKFParticleBase::GetDeviationFromParticle( p );
     901             : }
     902             : 
     903             : inline void AliKFParticle::SubtractFromVertex( AliKFParticle &v ) const 
     904             : {
     905           0 :   AliKFParticleBase::SubtractFromVertex( v );
     906           0 : }
     907             : 
     908             : inline Double_t AliKFParticle::GetFieldAlice()
     909             : { 
     910        4292 :   return fgBz; 
     911             : }
     912             : 
     913             : inline void AliKFParticle::GetFieldValue( const Double_t * /*xyz*/, Double_t B[] ) const 
     914             : {    
     915        1628 :   B[0] = B[1] = 0;
     916         814 :   B[2] = GetFieldAlice();
     917         814 : }
     918             : 
     919             : inline void AliKFParticle::GetDStoParticle( const AliKFParticleBase &p, 
     920             :                                             Double_t &DS, Double_t &DSp )const
     921             : {
     922         148 :   GetDStoParticleXY( p, DS, DSp );
     923          74 : }
     924             : 
     925             : inline void AliKFParticle::GetDStoParticleXY( const AliKFParticleBase &p, 
     926             :                                        Double_t &DS, Double_t &DSp ) const
     927             : { 
     928         148 :   AliKFParticleBase::GetDStoParticleBz( GetFieldAlice(), p, DS, DSp ) ;
     929             :   //GetDStoParticleALICE( p, DS, DSp ) ;
     930          74 : }
     931             : 
     932             : inline void AliKFParticle::Transport( Double_t dS, Double_t P[], Double_t C[] ) const 
     933             : {
     934        1480 :   AliKFParticleBase::TransportBz( GetFieldAlice(), dS, P, C );
     935         740 : }
     936             : 
     937             : inline void AliKFParticle::ConstructGamma( const AliKFParticle &daughter1,
     938             :                                            const AliKFParticle &daughter2  )
     939             : {
     940           0 :   AliKFParticleBase::ConstructGammaBz( daughter1, daughter2, GetFieldAlice() );
     941           0 : }
     942             : 
     943             : #endif 

Generated by: LCOV version 1.11