54 rngWrapper->
setSeed(name(), ctx);
55 CLHEP::HepRandomEngine *rngEngine = rngWrapper->
getEngine(ctx);
64 auto coll = std::make_unique<ActsTrk::RecordedMaterialTrackCollection>();
69 auto* coll = materialTracks.
ptr();
71 ATH_MSG_ERROR(
"RecordedMaterialTrackCollection ptr() is null for key "
73 return StatusCode::FAILURE;
81 double etaMin = etaRange.at(0);
82 double etaMax = etaRange.at(1);
83 double eta = rngEngine->flat() * std::abs(etaMax - etaMin) + etaMin;
86 double ptMin = ptRange.at(0) * 1_GeV;
87 double ptMax = ptRange.at(1) * 1_GeV;
89 double pt = rngEngine->flat() * std::abs(ptMax - ptMin) + ptMin;
91 Acts::Vector3 momentum(pt * std::cos(
phi), pt * std::sin(
phi),
94 double theta = Acts::VectorHelpers::theta(momentum);
96 double charge = rngEngine->flat() > 0.5 ? -1 : 1;
98 double qop =
charge / momentum.norm();
100 std::shared_ptr<Acts::PerigeeSurface> surface =
101 Acts::Surface::makeShared<Acts::PerigeeSurface>(
102 Acts::Vector3(0, 0, 0));
107 Acts::BoundVector pars;
110 std::optional<Acts::BoundMatrix> cov = std::nullopt;
114 Acts::GenericBoundTrackParameters startParameters(std::move(surface), std::move(pars), std::move(cov), Acts::ParticleHypothesis::pion());
118 <<
result.error().message());
121 auto &output =
result.value();
122 if(output.first.size() == 0) {
130 Acts::RecordedMaterialTrack track;
131 track.first.first = Acts::Vector3::Zero();
132 track.first.second = momentum;
133 track.second = std::move(output.second);
134 coll->push_back(track);
141 return StatusCode::SUCCESS;