]>
Commit | Line | Data |
---|---|---|
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 © 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 | ||
25 | ClassImp(AliKFParticle) | |
26 | ||
4bbc290d | 27 | Double_t AliKFParticle::fgBz = 5.; //* Bz compoment of the magnetic field |
f826d409 | 28 | |
4bbc290d | 29 | AliKFParticle::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 | 67 | AliKFParticle::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 | } |