36 msg(MSG::INFO) <<
" initialize()" <<
endmsg;
39 if (m_extrapolator.retrieve().isFailure()) {
41 return StatusCode::FAILURE;
44 m_gaussDist =
new Rndm::Numbers(randSvc(), Rndm::Gauss(0.,1.));
45 m_flatDist =
new Rndm::Numbers(randSvc(), Rndm::Flat(0.,1.));
47 msg(MSG::INFO) <<
"initialize() successful in " <<
endmsg;
48 return StatusCode::SUCCESS;
56 return StatusCode::SUCCESS;
64 const EventContext& ctx = Gaudi::Hive::currentContext();
66 if (!m_outerBoundary) {
67 m_trackingGeometry = m_extrapolator->trackingGeometry();
68 m_outerBoundary = m_trackingGeometry->highestTrackingVolume();
69 if (!m_outerBoundary) {
70 msg(
MSG::FATAL) <<
"Could not retrieve geometry boundary from " << m_extrapolator <<
". Exiting."<<
endmsg;
71 return StatusCode::FAILURE;
73 msg(MSG::INFO) <<
" boundary retrieved " <<
endmsg;
77 double d0 = m_gaussDist->shoot() * m_sigmaD0;
78 double z0 = m_minZ0 + m_flatDist->shoot() * (m_maxZ0-m_minZ0);
80 double ctheta = -1. + 2* m_flatDist->shoot();
81 double theta = acos(ctheta);
82 double p = m_minP + m_flatDist->shoot()*(m_maxP-m_minP);
83 double charge = (m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
101 if (!destParameters || !m_extrapolator->trackingGeometry()->atVolumeBoundary(destParameters->
position(),m_outerBoundary,0.001) ) {
102 msg(MSG::ERROR) <<
" extrapolation to outer boundary failed for input parameters: " << initialPerigee.parameters() <<
endmsg;
106 msg(MSG::INFO) <<
" outer boundary reached at: " << destParameters->
position().perp() <<
","<<destParameters->
position().z() <<
endmsg;
107 msg(MSG::INFO) <<
"cov matrix:"<< destParameters->covariance() <<
endmsg;
117 msg(MSG::INFO) <<
" extrapolation to perigee:input: " << initialPerigee.parameters() <<
endmsg;
118 msg(MSG::INFO) <<
" extrapolation to perigee:output: " << peri->parameters() <<
endmsg;
119 msg(MSG::INFO) <<
"cov matrix:"<< peri->covariance() <<
endmsg;
121 msg(MSG::ERROR) <<
" extrapolation to perigee failed for input parameters: " << destParameters->parameters() <<
endmsg;
126 delete destParameters;
128 return StatusCode::SUCCESS;