25 m_rndmSvc(
"RndmGenSvc",
n),
28 m_numberOfSurfaces(100),
32 declareInterface<ISurfaceBuilder>(
this);
53 if ( m_rndmSvc.retrieve().isFailure() ) {
55 return StatusCode::FAILURE;
59 m_gaussDist =
new Rndm::Numbers(&*m_rndmSvc, Rndm::Gauss(0.,1.));
60 m_flatDist =
new Rndm::Numbers(&*m_rndmSvc, Rndm::Flat(0.,1.));
62 return StatusCode::SUCCESS;
69 return StatusCode::SUCCESS;
75 std::vector<const Trk::Surface*>* cSurfaces =
new std::vector<const Trk::Surface*>();
76 cSurfaces->reserve(m_numberOfSurfaces);
77 for (
size_t isf = 0; isf < m_numberOfSurfaces; ++isf ){
79 if (csf) cSurfaces->push_back(csf);
82 if ( cSurfaces->size() != m_numberOfSurfaces )
84 <<
") does not correspond to chosen number (" << m_numberOfSurfaces <<
")." );
92 if (m_worldDimensions.size() < 3 )
return nullptr;
95 int sType = std::floor(m_flatDist->shoot()*6);
98 if (!m_enableCones && !sType){
100 sType = std::floor(m_flatDist->shoot()*6);
103 sType = sType == 6 ? 5 : sType;
105 double tx = m_worldDimensions[0]*(2*m_flatDist->shoot()-1);
106 double ty = m_worldDimensions[1]*(2*m_flatDist->shoot()-1);
107 double tz = m_worldDimensions[2]*(2*m_flatDist->shoot()-1);
108 double dx = m_flatDist->shoot();
109 double dy = m_flatDist->shoot();
110 double dz = m_flatDist->shoot();
126 (*transform) = translation;