BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
trkInfo.h
Go to the documentation of this file.
1#include "CLHEP/Vector/LorentzVector.h"
2#include "MdcRecEvent/RecMdcKalTrack.h"
3#include "string.h"
4const double mmass[5] = { 0.000511, 0.105658, 0.139570, 0.493677, 0.938272 };
5// mmass[5] = { e, mu, pion, Kion, proton}
6class m_trkInfo {
7 int i;
8 double mom;
9 HepLorentzVector trk;
10 RecMdcKalTrack* mdcTrk;
11
12public:
13 m_trkInfo( int index, double momentum, HepLorentzVector trkp, RecMdcKalTrack* mdcKaltrk ) {
14 i = index;
15 mom = momentum;
16 trk = trkp;
17 mdcTrk = mdcKaltrk;
18 }
19 int getIndex() { return i; }
20 double getMom() { return mom; }
21 HepLorentzVector getTrk() { return trk; }
22 HepLorentzVector getTrk( std::string m_particle_type );
23};
24
25// Define a function which can calculate the momentum difference between two Lorentz vectors.
26inline double cal_via_mom( HepLorentzVector m_mom_a, HepLorentzVector m_mom_b ) {
27 return ( m_mom_b.vect().mag() * 1000 - m_mom_a.vect().mag() );
28} // where a factor 1000 arise from the differences between the unit of MC truth and
29 // reconstruction
30
31inline HepLorentzVector m_trkInfo::getTrk( std::string m_part_type ) {
32 if ( m_part_type == "e" )
33 {
34 mdcTrk->setPidType( RecMdcKalTrack::electron );
35 trk.setPx( mdcTrk->px() );
36 trk.setPy( mdcTrk->py() );
37 trk.setPz( mdcTrk->pz() );
38 double p3( mdcTrk->p() );
39 trk.setE( sqrt( p3 * p3 + mmass[0] * mmass[0] ) );
40 return trk;
41 }
42 if ( m_part_type == "muon" )
43 {
44 mdcTrk->setPidType( RecMdcKalTrack::muon );
45 trk.setPx( mdcTrk->px() );
46 trk.setPy( mdcTrk->py() );
47 trk.setPz( mdcTrk->pz() );
48 double p3( mdcTrk->p() );
49 trk.setE( sqrt( p3 * p3 + mmass[1] * mmass[1] ) );
50 return trk;
51 }
52 if ( m_part_type == "pion" )
53 {
54 mdcTrk->setPidType( RecMdcKalTrack::pion );
55 trk.setPx( mdcTrk->px() );
56 trk.setPy( mdcTrk->py() );
57 trk.setPz( mdcTrk->pz() );
58 double p3( mdcTrk->p() );
59 trk.setE( sqrt( p3 * p3 + mmass[2] * mmass[2] ) );
60 return trk;
61 }
62 if ( m_part_type == "kion" )
63 {
64 mdcTrk->setPidType( RecMdcKalTrack::kaon );
65 trk.setPx( mdcTrk->px() );
66 trk.setPy( mdcTrk->py() );
67 trk.setPz( mdcTrk->pz() );
68 double p3( mdcTrk->p() );
69 trk.setE( sqrt( p3 * p3 + mmass[3] * mmass[3] ) );
70 return trk;
71 }
72 if ( m_part_type == "proton" )
73 {
74 mdcTrk->setPidType( RecMdcKalTrack::proton );
75 trk.setPx( mdcTrk->px() );
76 trk.setPy( mdcTrk->py() );
77 trk.setPz( mdcTrk->pz() );
78 double p3( mdcTrk->p() );
79 trk.setE( sqrt( p3 * p3 + mmass[4] * mmass[4] ) );
80 return trk;
81 }
82 else return trk;
83}
**********INTEGER nmxhep !maximum number of particles DOUBLE PRECISION vhep INTEGER jdahep COMMON hepevt $ !serial number $ !number of particles $ !status code $ !particle ident KF $ !parent particles $ !childreen particles $ !four momentum
int getIndex()
Definition trkInfo.h:19
double getMom()
Definition trkInfo.h:20
HepLorentzVector getTrk()
Definition trkInfo.h:21
m_trkInfo(int index, double momentum, HepLorentzVector trkp, RecMdcKalTrack *mdcKaltrk)
Definition trkInfo.h:13
const double mmass[5]
Definition trkInfo.h:4
double cal_via_mom(HepLorentzVector m_mom_a, HepLorentzVector m_mom_b)
Definition trkInfo.h:26