]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliKFParticle.cxx
Fixed class version number
[u/mrichter/AliRoot.git] / STEER / AliKFParticle.cxx
CommitLineData
f826d409 1//----------------------------------------------------------------------------
2// Implementation of 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 AliKFParticleCore
14//
15// -= Copyright &copy ALICE HLT Group =-
16//____________________________________________________________________________
17
18
19#include "AliKFParticle.h"
20#include "TDatabasePDG.h"
21#include "TParticlePDG.h"
22#include "AliExternalTrackParam.h"
23//#include "TMath.h"
24
25ClassImp(AliKFParticle)
26
4bbc290d 27Double_t AliKFParticle::fgBz = 5.; //* Bz compoment of the magnetic field
f826d409 28
4bbc290d 29AliKFParticle::AliKFParticle( const AliExternalTrackParam &track, Int_t PID )
f826d409 30{
31 // Constructor from ALICE track, PID hypothesis can be provided
32
33 TParticlePDG* particlePDG = TDatabasePDG::Instance()->GetParticle(PID);
34 Double_t mass = (particlePDG) ? particlePDG->Mass() :0.13957;
35
36 track.GetXYZ(fP);
37 track.GetPxPyPz(fP+3);
38 Double_t energy = TMath::Sqrt( mass*mass + fP[3]*fP[3] + fP[4]*fP[4] + fP[5]*fP[5]);
39 fP[6] = energy;
40 fP[7] = 0;
41 fQ = (track.Get1Pt() >0 ) ?1 :-1;
42 fNDF = 0;
43 fChi2 = 0;
44 fAtProductionVertex = 0;
45 fIsLinearized = 0;
46 fSFromDecay = 0;
47
48 Double_t energyInv = 1./energy;
49 Double_t
50 h0 = fP[3]*energyInv,
51 h1 = fP[4]*energyInv,
52 h2 = fP[5]*energyInv;
53 track.GetCovarianceXYZPxPyPz( fC );
54
55 fC[21] = h0*fC[ 6] + h1*fC[10] + h2*fC[15];
56 fC[22] = h0*fC[ 7] + h1*fC[11] + h2*fC[16];
57 fC[23] = h0*fC[ 8] + h1*fC[12] + h2*fC[17];
58 fC[24] = h0*fC[ 9] + h1*fC[13] + h2*fC[18];
59 fC[25] = h0*fC[13] + h1*fC[14] + h2*fC[19];
60 fC[26] = h0*fC[18] + h1*fC[19] + h2*fC[20];
61 fC[27] = h0*h0*fC[ 9] + h1*h1*fC[14] + h2*h2*fC[20]
62 + 2*(h0*h1*fC[13] + h0*h2*fC[18] + h1*h2*fC[19] );
63 for( int i=28; i<36; i++ ) fC[i] = 0;
64 fC[35] = 1.;
65}
66
4bbc290d 67AliKFParticle::AliKFParticle( const AliESDVertex &vertex )
f826d409 68{
69 // Constructor from ALICE vertex
70
71 vertex.GetXYZ( fP );
72 vertex.GetCovMatrix( fC );
73 fChi2 = vertex.GetChi2();
74 fNDF = 2*vertex.GetNContributors() - 3;
75 fQ = 0;
76 fAtProductionVertex = 0;
77 fIsLinearized = 0;
78 fSFromDecay = 0;
79}