CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
BFieldCorr Class Reference

#include <BFieldCorr.h>

+ Inheritance diagram for BFieldCorr:

Public Member Functions

 BFieldCorr (const std::string &name, ISvcLocator *pSvcLocator)
 
StatusCode initialize ()
 
StatusCode execute ()
 
StatusCode finalize ()
 

Detailed Description

Definition at line 19 of file BFieldCorr.h.

Constructor & Destructor Documentation

◆ BFieldCorr()

BFieldCorr::BFieldCorr ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 45 of file BFieldCorr.cxx.

45 :Algorithm(name,pSvcLocator)
46{
47 declareProperty("CorrectionFactor", m_factor = 1.0000);
48}

Member Function Documentation

◆ execute()

StatusCode BFieldCorr::execute ( )

Definition at line 68 of file BFieldCorr.cxx.

69{
70 MsgStream log(msgSvc(), name());
71 log << MSG::INFO << "in BFieldCorr::execute()" << endreq;
72 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
73 int run_no = eventHeader->runNumber();
74 if (run_no < 0) return StatusCode::SUCCESS;
75
76 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
77 if (!evtRecEvent)
78 {
79 log << MSG::FATAL << "Could not find EvtRecEvent" << endreq;
80 return StatusCode::SUCCESS;
81 }
82
83 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol);
84 if (!evtRecTrkCol)
85 {
86 log << MSG::FATAL << "Could not find EvtRecTrackCol" << endreq;
87 return StatusCode::SUCCESS;
88 }
89
90 if ((unsigned int)evtRecEvent->totalTracks() > evtRecTrkCol->size()) return StatusCode::SUCCESS;
91 //if (evtRecEvent->totalTracks() > 50) return StatusCode::SUCCESS;
92
93 //set Ew if by default
94 double factor;
95 if (fabs(m_factor - 1.000) < 1e-6)
96 {
97 if (run_no >= RUN_BEGIN_10 && run_no <= RUN_END_10)
98 factor = 1.0004;
99 else if (run_no >= RUN_BEGIN_11 && run_no <= RUN_END_11)
100 factor = 1.0002;
101 else
102 factor = 1.0000;
103 }
104 else
105 {
106 factor = m_factor;
107 }
108 m_Ew[2][2] = fabs(factor) < 1e-6 ? 1.0 : 1.0 / factor;
109
110 for (int i = 0; i < evtRecEvent->totalCharged(); i++)
111 {
112 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + i;
113 if (!(*itTrk)->isMdcTrackValid()) continue;
114 if (!(*itTrk)->isMdcKalTrackValid()) continue;
115
116 //RecMdcTrack correction
117 RecMdcTrack *mdc_trk = (*itTrk)->mdcTrack();
118 mdc_trk->setHelix( m_Ew * mdc_trk->helix() );
119 mdc_trk->setError( mdc_trk->err().similarity(m_Ew) );
120 mdc_trk->setP( factor * mdc_trk->p() );
121 mdc_trk->setPxy( factor * mdc_trk->pxy() );
122 mdc_trk->setPx( factor * mdc_trk->px() );
123 mdc_trk->setPy( factor * mdc_trk->py() );
124 mdc_trk->setPz( factor * mdc_trk->pz() );
125
126 //RecMdcKalTrack correction
127 RecMdcKalTrack *kal_trk = (*itTrk)->mdcKalTrack();
128 RecMdcKalTrack::PidType trk_type[] = {
134 };
135
136 for (int j = 0; j < 5; j++)
137 {
138 kal_trk->setPidType( trk_type[j] );
139 kal_trk->setZHelix( m_Ew * kal_trk->helix(), j );
140 kal_trk->setZError( kal_trk->err().similarity(m_Ew), j );
141 kal_trk->setP( factor * kal_trk->p(), j );
142 kal_trk->setPxy( factor * kal_trk->pxy(), j );
143 kal_trk->setPx( factor * kal_trk->px(), j );
144 kal_trk->setPy( factor * kal_trk->py(), j );
145 kal_trk->setPz( factor * kal_trk->pz(), j );
146 }
147 }
148 return StatusCode::SUCCESS;
149}
EvtRecTrackCol::iterator EvtRecTrackIterator
IMessageSvc * msgSvc()
void setPz(const double pz, const int pid)
const HepVector & helix() const
void setZError(const HepSymMatrix &error, const int pid)
void setP(const double p, const int pid)
void setPx(const double px, const int pid)
const double px() const
void setPxy(const double pxy, const int pid)
void setPy(const double py, const int pid)
static void setPidType(PidType pidType)
const double pz() const
void setZHelix(const HepVector &helix, const int pid)
const double py() const
const double p() const
const HepSymMatrix & err() const
const double pxy() const
void setPxy(const double pxy)
Definition DstMdcTrack.h:86
const double py() const
Definition DstMdcTrack.h:56
void setPy(const double py)
Definition DstMdcTrack.h:88
const HepSymMatrix err() const
void setError(double err[15])
const double px() const
Definition DstMdcTrack.h:55
void setP(const double p)
Definition DstMdcTrack.h:90
void setHelix(double helix[5])
const double pz() const
Definition DstMdcTrack.h:57
const double pxy() const
Definition DstMdcTrack.h:54
const HepVector helix() const
......
void setPz(const double pz)
Definition DstMdcTrack.h:89
const double p() const
Definition DstMdcTrack.h:58
void setPx(const double px)
Definition DstMdcTrack.h:87
_EXTERN_ std::string EvtRecEvent
Definition EventModel.h:134
_EXTERN_ std::string EvtRecTrackCol
Definition EventModel.h:135

◆ finalize()

StatusCode BFieldCorr::finalize ( )

Definition at line 151 of file BFieldCorr.cxx.

152{
153 MsgStream log(msgSvc(), name());
154 log << MSG::INFO << "in BFieldCorr::finalize()" << endreq;
155 return StatusCode::SUCCESS;
156}

◆ initialize()

StatusCode BFieldCorr::initialize ( )

Definition at line 50 of file BFieldCorr.cxx.

51{
52 m_Ew = HepSymMatrix(5, 0);
53 m_Ew[0][0] = 1.0;
54 m_Ew[1][1] = 1.0;
55 m_Ew[2][2] = fabs(m_factor) < 1e-6 ? 1.0 : 1.0 / m_factor;
56 m_Ew[3][3] = 1.0;
57 m_Ew[4][4] = 1.0;
58 RUN_BEGIN_10 = 11414;
59 RUN_END_10 = 14604;
60 RUN_BEGIN_11 = 20448;
61 RUN_END_11 = 23454;
62
63 MsgStream log(msgSvc(), name());
64 log << MSG::INFO << "in MagCorr::initialize()" <<endmsg;
65 return StatusCode::SUCCESS;
66}

The documentation for this class was generated from the following files: