BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcAliRecTrk.cxx
Go to the documentation of this file.
2
3#include "GaudiKernel/Bootstrap.h"
4#include "GaudiKernel/IDataProviderSvc.h"
5#include "GaudiKernel/IMessageSvc.h"
6#include "GaudiKernel/ISvcLocator.h"
7#include "GaudiKernel/MsgStream.h"
8#include "GaudiKernel/SmartDataPtr.h"
9#include "GaudiKernel/StatusCode.h"
10
11const double MdcAliRecTrk::m_df = 10.0;
12
14 unsigned int i;
15 for ( i = 0; i < m_rechit.size(); i++ ) { delete m_rechit[i]; }
16 m_rechit.clear();
17}
18
19void MdcAliRecTrk::setRecTrk( RecMdcTrackCol::iterator it_trk ) {
20 IMessageSvc* msgSvc;
21 Gaudi::svcLocator()->service( "MessageSvc", msgSvc );
22 MsgStream log( msgSvc, "MdcAliRecTrk" );
23 log << MSG::DEBUG << "MdcAliRecTrk::setRecTrk()" << endmsg;
24
25 m_stat = ( *it_trk )->stat();
26 m_dr = ( *it_trk )->helix( 0 );
27 m_phi0 = ( *it_trk )->helix( 1 );
28 m_kappa = ( *it_trk )->helix( 2 );
29 m_dz = ( *it_trk )->helix( 3 );
30 m_tanl = ( *it_trk )->helix( 4 );
31
32 m_helix = ( *it_trk )->helix();
33 m_helixerr = ( *it_trk )->err();
34
35 m_chisq = ( *it_trk )->chi2();
36 m_nhits = ( *it_trk )->getNhits();
37
38 m_dr *= m_df; // cm -> mm
39 m_dz *= m_df; // cm -> mm
40
41 if ( m_kappa < 0.01 )
42 { // no magnetic field
43 m_pt = 0.0;
44 m_p = 0.0;
45 }
46 else
47 {
48 m_pt = 1.0 / m_kappa;
49 m_p = m_pt * sqrt( m_tanl * m_tanl + 1.0 );
50 }
51
52 HitRefVec gothits = ( *it_trk )->getVecHits();
53 HitRefVec::iterator it_hit = gothits.begin();
54 MdcAliRecHit* rechit;
55 for ( ; it_hit != gothits.end(); it_hit++ )
56 {
57 rechit = new MdcAliRecHit();
58 rechit->setRecHit( it_hit );
59 m_rechit.push_back( rechit );
60 }
61}
62
63void MdcAliRecTrk::setKalTrk( RecMdcKalTrackCol::iterator it_trk ) {
64 IMessageSvc* msgSvc;
65 Gaudi::svcLocator()->service( "MessageSvc", msgSvc );
66 MsgStream log( msgSvc, "MdcAliRecTrk" );
67 log << MSG::DEBUG << "MdcAliRecTrk::setKalTrk()" << endmsg;
68
69 int m_pid = 1;
71 else if ( 1 == m_pid ) RecMdcKalTrack::setPidType( RecMdcKalTrack::muon );
73
74 m_stat = 0;
75 m_dr = ( *it_trk )->dr();
76 m_phi0 = ( *it_trk )->fi0();
77 m_kappa = ( *it_trk )->kappa();
78 m_dz = ( *it_trk )->dz();
79 m_tanl = ( *it_trk )->tanl();
80 m_chisq = ( *it_trk )->chi2();
81
82 m_dr *= 10.0; // cm -> mm
83 m_dz *= 10.0; // cm -> mm
84
85 m_pt = 1.0 / fabs( m_kappa );
86 m_p = m_pt * sqrt( m_tanl * m_tanl + 1.0 );
87
88 HelixSegRefVec gothelixsegs = ( *it_trk )->getVecHelixSegs();
89 HelixSegRefVec::iterator it_hit = gothelixsegs.begin();
90 MdcAliRecHit* rechit;
91
92 int k = 0;
93 for ( ; it_hit != gothelixsegs.end(); it_hit++ )
94 {
95 rechit = new MdcAliRecHit();
96 rechit->setKalHit( it_hit );
97 m_rechit.push_back( rechit );
98
99 k++;
100 }
101 m_nhits = k;
102}
SmartRefVector< RecMdcKalHelixSeg > HelixSegRefVec
IMessageSvc * msgSvc()
void setKalHit(HelixSegRefVec::iterator it_hit)
void setRecHit(HitRefVec::iterator it_hit)
void setKalTrk(RecMdcKalTrackCol::iterator it_trk)
void setRecTrk(RecMdcTrackCol::iterator it_trk)