31   for (
const auto& surfaceTriple : m_referenceSurfaceTriples) {
 
   32     for (
const auto* surface : surfaceTriple) {
 
   52   if (m_referenceSurfaceRadius.size() == m_referenceSurfaceHalflength.size()) {
 
   54      m_referenceSurfaces = m_referenceSurfaceRadius.size();
 
   60      for ( ; radiusIter != radiusIterEnd; ++radiusIter, ++halfZIter){
 
   62           std::vector< const Trk::Surface*> surfaceTriplet;
 
   67          ATH_MSG_INFO(
"Creating surfaces: R " << *radiusIter << 
" Z " << *halfZIter);
 
   68          m_referenceSurfaceTriples.push_back(surfaceTriplet);
 
   70          m_referenceSurfaceNegativeBoundary.push_back(atan2(*radiusIter,-(*halfZIter)));
 
   71          m_referenceSurfacePositiveBoundary.push_back(atan2(*radiusIter,(*halfZIter)));
 
   76   m_gaussDist = 
new Rndm::Numbers(randSvc(), Rndm::Gauss(0.,1.));
 
   77   m_flatDist  = 
new Rndm::Numbers(randSvc(), Rndm::Flat(0.,1.));
 
   81   if( m_eventsPerExecute > 0 ){
 
   82     m_perigees.reserve(m_eventsPerExecute);
 
   83     for( 
int i=0;
i<m_eventsPerExecute;++
i ) m_perigees.push_back(generatePerigee());
 
   86   return StatusCode::SUCCESS;
 
   94   return StatusCode::SUCCESS;
 
   99    double d0 = m_gaussDist->shoot() * m_sigmaD0;
 
  100    double z0 = m_gaussDist->shoot() * m_sigmaZ0;
 
  101    double phi = m_minPhi + (m_maxPhi-m_minPhi)* m_flatDist->shoot();
 
  102    double eta = m_minEta + m_flatDist->shoot()*(m_maxEta-m_minEta);
 
  104    double p = m_minP + m_flatDist->shoot()*(m_maxP-m_minP);
 
  105    double charge = (m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
 
  116   if( m_eventsPerExecute <= 0 ) runTest(generatePerigee());
 
  117   else                          for( 
int i=0;
i<m_eventsPerExecute;++
i ) runTest(m_perigees[
i]);
 
  118   return StatusCode::SUCCESS;
 
  130    std::vector< std::vector< const Trk::Surface* > >::const_iterator surfaceTripleIter    = m_referenceSurfaceTriples.begin();
 
  131    std::vector< std::vector< const Trk::Surface* > >::const_iterator surfaceTripleIterEnd = m_referenceSurfaceTriples.end();
 
  138    const EventContext& ctx = Gaudi::Hive::currentContext();
 
  139    for (
int refSurface = 0 ; surfaceTripleIter != surfaceTripleIterEnd; ++surfaceTripleIter, ++negRefIter, ++posRefIter ){
 
  141        refSurface = 
theta < (*posRefIter) ? 2 : 1;
 
  142        refSurface = 
theta > (*negRefIter) ? 0 : 1;
 
  144        const Trk::Surface* destinationSurface = (*surfaceTripleIter)[refSurface];
 
  146        const auto* destParameters =
 
  148            ? m_extrapolator->extrapolate(
 
  152                propagationDirection,
 
  161                          propagationDirection,
 
  163                          *m_magFieldProperties,
 
  167        if (destParameters) {
 
  170              destParameters->position().x() << 
", " <<
 
  171              destParameters->position().y() << 
", " <<
 
  172              destParameters->position().z() );           
 
  173        } 
else if (!destParameters)
 
  176        delete destParameters;