54 rngWrapper->
setSeed(name(), ctx);
55 CLHEP::HepRandomEngine *rngEngine = rngWrapper->
getEngine(ctx);
64 ATH_CHECK(materialTracks.
record(std::make_unique<ActsTrk::RecordedMaterialTrackCollection>()));
68 auto* coll = materialTracks.
ptr();
73 double phi = rngEngine->flat() * 2 * std::numbers::pi - std::numbers::pi;
75 double etaMin = etaRange.at(0);
76 double etaMax = etaRange.at(1);
77 double eta = rngEngine->flat() * std::abs(etaMax - etaMin) + etaMin;
80 double ptMin = ptRange.at(0) * 1_GeV;
81 double ptMax = ptRange.at(1) * 1_GeV;
83 double pt = rngEngine->flat() * std::abs(ptMax - ptMin) + ptMin;
85 Acts::Vector3 momentum(pt * std::cos(
phi), pt * std::sin(
phi),
88 double theta = momentum.theta();
90 double charge = rngEngine->flat() > 0.5 ? -1 : 1;
92 double qop =
charge / momentum.norm();
94 auto surface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Amg::Vector3D::Zero());
99 Acts::BoundVector pars;
102 std::optional<Acts::BoundMatrix> cov = std::nullopt;
106 Acts::BoundTrackParameters startParameters(std::move(surface), std::move(pars), std::move(cov), Acts::ParticleHypothesis::pion());
110 << result.error().message());
113 auto &output = result.value();
114 if(output.first.size() == 0) {
122 Acts::RecordedMaterialTrack track;
123 track.first.first = Acts::Vector3::Zero();
124 track.first.second = momentum;
125 track.second = std::move(output.second);
126 coll->push_back(track);
133 return StatusCode::SUCCESS;
138 for(
const auto& step : steps) {
139 Acts::GeometryIdentifier::Value volumeID = 0;
140 Acts::GeometryIdentifier::Value boundaryID = 0;
141 Acts::GeometryIdentifier::Value layerID = 0;
142 Acts::GeometryIdentifier::Value approachID = 0;
143 Acts::GeometryIdentifier::Value sensitiveID = 0;
146 auto geoID = step.surface->geometryId();
147 sensitiveID = geoID.sensitive();
148 approachID = geoID.approach();
149 layerID = geoID.layer();
150 boundaryID = geoID.boundary();
151 volumeID = geoID.volume();
154 if (step.geoID != Acts::GeometryIdentifier()) {
155 volumeID = step.geoID.volume();
164 m_s_pX.push_back(step.position.x());
165 m_s_pY.push_back(step.position.y());
166 m_s_pZ.push_back(step.position.z());
167 m_s_pR.push_back(Acts::VectorHelpers::perp(step.position));
172 return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;