8 #include "Acts/Definitions/Units.hpp"
9 #include "Acts/MagneticField/MagneticFieldContext.hpp"
11 #include "Acts/Seeding/BinnedGroup.hpp"
12 #include "Acts/Seeding/SeedFilter.hpp"
13 #include "Acts/Seeding/SeedFinder.hpp"
28 ISvcLocator *pSvcLocator )
55 return StatusCode::SUCCESS;
60 std::array<std::string, kNStat>{
65 return StatusCode::SUCCESS;
83 ATH_CHECK( seedHandle.
record( std::make_unique< ActsTrk::SeedContainer >() ) );
88 ATH_CHECK( boundTrackParamsHandle.
record( std::make_unique< ActsTrk::BoundTrackParametersContainer >() ) );
98 if (beamSpotHandle.cptr() ==
nullptr) {
99 ATH_MSG_ERROR(
"Retrieved Beam Spot Handle contains a nullptr");
100 return StatusCode::FAILURE;
102 auto beamSpotData = beamSpotHandle.cptr();
110 std::vector<const xAOD::SpacePointContainer *> all_input_collections;
113 std::size_t number_input_space_points = 0;
115 ATH_MSG_DEBUG(
"Retrieving from Input Collection '" << spacePointKey.key() <<
"' ..." );
118 all_input_collections.push_back(handle.
cptr());
120 number_input_space_points += handle->
size();
124 std::vector<const xAOD::SpacePoint*> selectedSpacePoints;
125 selectedSpacePoints.reserve(number_input_space_points);
127 for (
const auto* collection : all_input_collections) {
128 for (
const auto* sp : *collection) {
131 selectedSpacePoints.push_back( sp );
135 ATH_MSG_DEBUG(
" \\__ Total input space points: " << selectedSpacePoints.size());
139 if (selectedSpacePoints.empty()) {
140 ATH_MSG_DEBUG(
"No input space points found, we stop seeding");
141 return StatusCode::SUCCESS;
153 if (fieldCondObj ==
nullptr) {
155 return StatusCode::FAILURE;
160 Acts::MagneticFieldContext magFieldContext(fieldCondObj);
162 Acts::MagneticFieldProvider::Cache magFieldCache = magneticField.
makeCache( magFieldContext );
163 Acts::Vector3 bField = *magneticField.
getField( Acts::Vector3(beamPos.x(), beamPos.y(), 0),
169 if ( detEle ==
nullptr ) {
171 return StatusCode::FAILURE;
180 time_seedCreation.start();
186 time_seedCreation.stop();
194 ATH_MSG_DEBUG(
"Estimating Track Parameters from seed ..." );
197 auto retrieveSurfaceFunction =
198 [
this, &detEle] (
const Acts::Seed<xAOD::SpacePoint>& seed) ->
const Acts::Surface&
207 time_parameterEstimation.start();
209 std::optional<Acts::BoundTrackParameters> optTrackParams =
212 geo_context.context(),
214 retrieveSurfaceFunction);
216 if ( optTrackParams.has_value() ) {
217 Acts::BoundTrackParameters *
toAdd =
218 new Acts::BoundTrackParameters( optTrackParams.value() );
223 time_parameterEstimation.stop();
225 mon_nSeeds = seedPtrs->size();
227 return StatusCode::SUCCESS;