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
77 if (!evtRecEvent)
78 {
79 log << MSG::FATAL << "Could not find EvtRecEvent" << endreq;
80 return StatusCode::SUCCESS;
81 }
82
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
92
93
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 {
113 if (!(*itTrk)->isMdcTrackValid()) continue;
114 if (!(*itTrk)->isMdcKalTrackValid()) continue;
115
116
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
134 };
135
136 for (int j = 0; j < 5; j++)
137 {
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
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)
void setPxy(const double pxy, const int pid)
void setPy(const double py, const int pid)
static void setPidType(PidType pidType)
void setZHelix(const HepVector &helix, const int pid)
const HepSymMatrix & err() const
void setPxy(const double pxy)
void setPy(const double py)
const HepSymMatrix err() const
void setError(double err[15])
void setP(const double p)
void setHelix(double helix[5])
const HepVector helix() const
......
void setPz(const double pz)
void setPx(const double px)
_EXTERN_ std::string EvtRecEvent
_EXTERN_ std::string EvtRecTrackCol