diff --git a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.hpp b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.hpp index 65337fc608bb02499ee7b1fae75ea0738b9f7b45..0ae7a5ca1fc4da78281584031c5ae7a5c6f5b4a9 100644 --- a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.hpp +++ b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.hpp @@ -238,19 +238,23 @@ class AdaptiveMultiVertexFinder { /// /// @param track The track /// @param vtx The vertex + /// @param vertexingOptions Vertexing options /// /// @return The IP significance - Result<double> getIPSignificance(const InputTrack_t* track, - const Vertex<InputTrack_t>& vtx) const; + Result<double> getIPSignificance( + const InputTrack_t* track, const Vertex<InputTrack_t>& vtx, + const VertexingOptions<InputTrack_t>& vertexingOptions) const; /// @brief Adds compatible track to vertex candidate /// /// @param tracks The tracks /// @param vtx The vertex candidate /// @param[out] fitterState The vertex fitter state + /// @param vertexingOptions Vertexing options Result<void> addCompatibleTracksToVertex( const std::vector<const InputTrack_t*>& tracks, Vertex<InputTrack_t>& vtx, - FitterState_t& fitterState) const; + FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const; /// @brief Method that tries to recover from cases where no tracks /// were added to the vertex candidate after seeding @@ -261,13 +265,15 @@ class AdaptiveMultiVertexFinder { /// @param[out] vtx The vertex candidate /// @param currentConstraint Vertex constraint /// @param[out] fitterState The vertex fitter state + /// @param vertexingOptions Vertexing options /// /// return True if recovery was successful, false otherwise Result<bool> canRecoverFromNoCompatibleTracks( const std::vector<const InputTrack_t*>& allTracks, const std::vector<const InputTrack_t*>& seedTracks, Vertex<InputTrack_t>& vtx, const Vertex<InputTrack_t>& currentConstraint, - FitterState_t& fitterState) const; + FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const; /// @brief Method that tries to prepare the vertex for the fit /// @@ -277,13 +283,15 @@ class AdaptiveMultiVertexFinder { /// @param[out] vtx The vertex candidate /// @param currentConstraint Vertex constraint /// @param[out] fitterState The vertex fitter state + /// @param vertexingOptions Vertexing options /// /// @return True if preparation was successful, false otherwise Result<bool> canPrepareVertexForFit( const std::vector<const InputTrack_t*>& allTracks, const std::vector<const InputTrack_t*>& seedTracks, Vertex<InputTrack_t>& vtx, const Vertex<InputTrack_t>& currentConstraint, - FitterState_t& fitterState) const; + FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const; /// @brief Method that checks if vertex is a good vertex and if /// compatible tracks are available diff --git a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.ipp b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.ipp index ff2610e51b0024ac4dde710783c3ef6368588e3f..1653da1084726b8efc3f4b92643e5259a73a265e 100644 --- a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.ipp +++ b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFinder.ipp @@ -63,8 +63,9 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>::find( allVerticesPtr.pop_back(); break; } - auto prepResult = canPrepareVertexForFit( - allTracks, seedTracks, vtxCandidate, currentConstraint, fitterState); + auto prepResult = canPrepareVertexForFit(allTracks, seedTracks, + vtxCandidate, currentConstraint, + fitterState, vertexingOptions); if (!prepResult.ok()) { return prepResult.error(); @@ -180,7 +181,8 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>::estimateDeltaZ( template <typename vfitter_t, typename sfinder_t> auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>::getIPSignificance( - const InputTrack_t* track, const Vertex<InputTrack_t>& vtx) const + const InputTrack_t* track, const Vertex<InputTrack_t>& vtx, + const VertexingOptions<InputTrack_t>& vertexingOptions) const -> Result<double> { // TODO: In original implementation the covariance of the given vertex is set // to zero. I did the same here now, but consider removing this and just @@ -192,7 +194,9 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>::getIPSignificance( newVtx.setFullCovariance(SpacePointSymMatrix::Zero()); } - auto estRes = m_cfg.ipEstimator.estimate(*track, newVtx); + auto estRes = + m_cfg.ipEstimator.estimate(*track, newVtx, vertexingOptions.geoContext, + vertexingOptions.magFieldContext); if (!estRes.ok()) { return estRes.error(); } @@ -210,12 +214,13 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>::getIPSignificance( template <typename vfitter_t, typename sfinder_t> auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>:: - addCompatibleTracksToVertex(const std::vector<const InputTrack_t*>& tracks, - Vertex<InputTrack_t>& vtx, - FitterState_t& fitterState) const + addCompatibleTracksToVertex( + const std::vector<const InputTrack_t*>& tracks, + Vertex<InputTrack_t>& vtx, FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const -> Result<void> { for (const auto& trk : tracks) { - auto sigRes = getIPSignificance(trk, vtx); + auto sigRes = getIPSignificance(trk, vtx, vertexingOptions); if (!sigRes.ok()) { return sigRes.error(); } @@ -243,7 +248,9 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>:: const std::vector<const InputTrack_t*>& seedTracks, Vertex<InputTrack_t>& vtx, const Vertex<InputTrack_t>& currentConstraint, - FitterState_t& fitterState) const -> Result<bool> { + FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const + -> Result<bool> { // Recover from cases where no compatible tracks to vertex // candidate were found // TODO: This is for now how it's done in athena... this look a bit @@ -271,7 +278,8 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>:: VertexInfo<InputTrack_t>(currentConstraint, vtx.fullPosition()); // Try to add compatible track with adapted vertex position - auto res = addCompatibleTracksToVertex(allTracks, vtx, fitterState); + auto res = addCompatibleTracksToVertex(allTracks, vtx, fitterState, + vertexingOptions); if (!res.ok()) { return Result<bool>::failure(res.error()); } @@ -294,24 +302,29 @@ auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>:: template <typename vfitter_t, typename sfinder_t> auto Acts::AdaptiveMultiVertexFinder<vfitter_t, sfinder_t>:: - canPrepareVertexForFit(const std::vector<const InputTrack_t*>& allTracks, - const std::vector<const InputTrack_t*>& seedTracks, - Vertex<InputTrack_t>& vtx, - const Vertex<InputTrack_t>& currentConstraint, - FitterState_t& fitterState) const -> Result<bool> { + canPrepareVertexForFit( + const std::vector<const InputTrack_t*>& allTracks, + const std::vector<const InputTrack_t*>& seedTracks, + Vertex<InputTrack_t>& vtx, + const Vertex<InputTrack_t>& currentConstraint, + FitterState_t& fitterState, + const VertexingOptions<InputTrack_t>& vertexingOptions) const + -> Result<bool> { // Add vertex info to fitter state fitterState.vtxInfoMap[&vtx] = VertexInfo<InputTrack_t>(currentConstraint, vtx.fullPosition()); // Add all compatible tracks to vertex - auto resComp = addCompatibleTracksToVertex(allTracks, vtx, fitterState); + auto resComp = addCompatibleTracksToVertex(allTracks, vtx, fitterState, + vertexingOptions); if (!resComp.ok()) { return Result<bool>::failure(resComp.error()); } // Try to recover from cases where adding compatible track was not possible - auto resRec = canRecoverFromNoCompatibleTracks( - allTracks, seedTracks, vtx, currentConstraint, fitterState); + auto resRec = canRecoverFromNoCompatibleTracks(allTracks, seedTracks, vtx, + currentConstraint, fitterState, + vertexingOptions); if (!resRec.ok()) { return Result<bool>::failure(resRec.error()); } diff --git a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.hpp b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.hpp index ae53491b8dd6845496a9e1abbe63d8fa00ef3461..eaafee956d1da2f83949e3fb0e1e2f162f7afd1a 100644 --- a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.hpp +++ b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.hpp @@ -253,11 +253,11 @@ class AdaptiveMultiVertexFitter { /// at current vertex /// /// @param state The state object - /// @param geoContext The geometry context /// @param currentVtx Current vertex + /// @param vertexingOptions Vertexing options Result<void> setAllVertexCompatibilities( - State& state, const GeometryContext& geoContext, - Vertex<InputTrack_t>* currentVtx) const; + State& state, Vertex<InputTrack_t>* currentVtx, + const VertexingOptions<input_track_t>& vertexingOptions) const; /// @brief Sets weights to the track according to Eq.(5.46) in Ref.(1) /// and updates the vertices by calling the VertexUpdater diff --git a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.ipp b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.ipp index dfb2d5f33fc6d589f04ae8368ad6c9274a7d615d..053b9ed08264cdb883c349c8fa8eea8a37de0bf2 100644 --- a/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.ipp +++ b/Core/include/Acts/Vertexing/AdaptiveMultiVertexFitter.ipp @@ -94,7 +94,7 @@ Acts::AdaptiveMultiVertexFitter<input_track_t, linearizer_t>::fitImpl( // Set vertexCompatibility for all TrackAtVertex objects // at current vertex - setAllVertexCompatibilities(state, geoContext, currentVtx); + setAllVertexCompatibilities(state, currentVtx, vertexingOptions); } // End loop over vertex collection // Now after having estimated all compatibilities of all tracks at @@ -204,12 +204,12 @@ Acts::Result<void> Acts:: auto& currentVtxInfo = state.vtxInfoMap[vtx]; // The seed position const Vector3D& seedPos = currentVtxInfo.seedPosition.template head<3>(); - auto& geoContext = vertexingOptions.geoContext; // Loop over all tracks at current vertex for (const auto& trk : currentVtxInfo.trackLinks) { auto res = m_cfg.ipEst.getParamsAtClosestApproach( - geoContext, m_extractParameters(*trk), seedPos); + vertexingOptions.geoContext, vertexingOptions.magFieldContext, + m_extractParameters(*trk), seedPos); if (!res.ok()) { return res.error(); } @@ -222,8 +222,9 @@ Acts::Result<void> Acts:: template <typename input_track_t, typename linearizer_t> Acts::Result<void> Acts::AdaptiveMultiVertexFitter<input_track_t, linearizer_t>:: - setAllVertexCompatibilities(State& state, const GeometryContext& geoContext, - Vertex<input_track_t>* currentVtx) const { + setAllVertexCompatibilities( + State& state, Vertex<input_track_t>* currentVtx, + const VertexingOptions<input_track_t>& vertexingOptions) const { VertexInfo<input_track_t>& currentVtxInfo = state.vtxInfoMap[currentVtx]; // Loop over tracks at current vertex and @@ -236,7 +237,8 @@ Acts::AdaptiveMultiVertexFitter<input_track_t, linearizer_t>:: if (currentVtxInfo.ip3dParams.find(trk) == currentVtxInfo.ip3dParams.end()) { auto res = m_cfg.ipEst.getParamsAtClosestApproach( - geoContext, m_extractParameters(*trk), + vertexingOptions.geoContext, vertexingOptions.magFieldContext, + m_extractParameters(*trk), VectorHelpers::position(currentVtxInfo.linPoint)); if (!res.ok()) { return res.error(); @@ -246,7 +248,7 @@ Acts::AdaptiveMultiVertexFitter<input_track_t, linearizer_t>:: } // Set compatibility with current vertex auto compRes = m_cfg.ipEst.getVertexCompatibility( - geoContext, &(currentVtxInfo.ip3dParams.at(trk)), + vertexingOptions.geoContext, &(currentVtxInfo.ip3dParams.at(trk)), VectorHelpers::position(currentVtxInfo.oldPosition)); if (!compRes.ok()) { return compRes.error(); diff --git a/Core/include/Acts/Vertexing/HelicalTrackLinearizer.ipp b/Core/include/Acts/Vertexing/HelicalTrackLinearizer.ipp index 8d60896de0f406e736e0d2b4acf2abc8b00294b7..4f75c4c9581069e74697e1582570ffc16c13e52c 100644 --- a/Core/include/Acts/Vertexing/HelicalTrackLinearizer.ipp +++ b/Core/include/Acts/Vertexing/HelicalTrackLinearizer.ipp @@ -19,6 +19,7 @@ Acts::Result<Acts::LinearizedTrack> Acts:: const std::shared_ptr<PerigeeSurface> perigeeSurface = Surface::makeShared<PerigeeSurface>(linPointPos); + // Create propagator options propagator_options_t pOptions(gctx, mctx); pOptions.direction = backward; diff --git a/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.hpp b/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.hpp index 943f9adec3e2bfc68a727e9122c9761b5d5ef677..f2358e7b668d0e39a81106139587cb5871bdbb1f 100644 --- a/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.hpp +++ b/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.hpp @@ -34,40 +34,21 @@ class ImpactPoint3dEstimator { /// /// @param bIn The magnetic field /// @param prop The propagator - /// @param propOptions The propagator options - /// @param doBackwardPropagation Set the propagation direction to backward - Config(const BField_t& bIn, std::shared_ptr<propagator_t> prop, - propagator_options_t propOptions, bool doBackwardPropagation = true) - : bField(bIn), - propagator(std::move(prop)), - pOptions(std::move(propOptions)) { - if (doBackwardPropagation) { - pOptions.direction = backward; - } - } + Config(const BField_t& bIn, std::shared_ptr<propagator_t> prop) + : bField(bIn), propagator(std::move(prop)) {} /// @brief Config constructor if BField_t == NullBField (no B-Field /// provided) /// /// @param prop The propagator - /// @param propOptions The propagator options - /// @param doBackwardPropagation Set the propagation direction to backward template <typename T = BField_t, std::enable_if_t<std::is_same<T, NullBField>::value, int> = 0> - Config(std::shared_ptr<propagator_t> prop, propagator_options_t propOptions, - bool doBackwardPropagation = true) - : propagator(std::move(prop)), pOptions(std::move(propOptions)) { - if (doBackwardPropagation) { - pOptions.direction = backward; - } - } + Config(std::shared_ptr<propagator_t> prop) : propagator(std::move(prop)) {} /// Magnetic field BField_t bField; /// Propagator std::shared_ptr<propagator_t> propagator; - // The propagator options - propagator_options_t pOptions; /// Max. number of iterations in Newton method int maxIterations = 20; /// Desired precision in deltaPhi in Newton method @@ -103,13 +84,14 @@ class ImpactPoint3dEstimator { /// given reference point (vertex). /// /// @param gctx The geometry context + /// @param mctx The magnetic field context /// @param trkParams Track parameters /// @param vtxPos Reference position (vertex) /// /// @return New track params Result<std::unique_ptr<const BoundParameters>> getParamsAtClosestApproach( - const GeometryContext& gctx, const BoundParameters& trkParams, - const Vector3D& vtxPos) const; + const GeometryContext& gctx, const Acts::MagneticFieldContext& mctx, + const BoundParameters& trkParams, const Vector3D& vtxPos) const; /// @brief Estimates the compatibility of a /// track to a vertex position based on the 3d diff --git a/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.ipp b/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.ipp index 3ed4680858b4b940fed2102b69d2969c5f78a238..d3b1cf6e1fec07f2bed53980079f304211770f35 100644 --- a/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.ipp +++ b/Core/include/Acts/Vertexing/ImpactPoint3dEstimator.ipp @@ -38,6 +38,7 @@ Acts::Result<std::unique_ptr<const Acts::BoundParameters>> Acts::ImpactPoint3dEstimator<input_track_t, propagator_t, propagator_options_t>:: getParamsAtClosestApproach(const GeometryContext& gctx, + const Acts::MagneticFieldContext& mctx, const BoundParameters& trkParams, const Vector3D& vtxPos) const { Vector3D deltaR; @@ -70,9 +71,12 @@ Acts::ImpactPoint3dEstimator<input_track_t, propagator_t, Surface::makeShared<PlaneSurface>( std::make_shared<Transform3D>(thePlane)); + // Create propagator options + propagator_options_t pOptions(gctx, mctx); + pOptions.direction = backward; + // Do the propagation to linPointPos - auto result = - m_cfg.propagator->propagate(trkParams, *planeSurface, m_cfg.pOptions); + auto result = m_cfg.propagator->propagate(trkParams, *planeSurface, pOptions); if (result.ok()) { return std::move((*result).endParameters); } else { diff --git a/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.hpp b/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.hpp index 8c34eea4d5de0c3a37013650689e8843d7a211be..2666a51c68412b8f51712d85235591f82080cf5e 100644 --- a/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.hpp +++ b/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.hpp @@ -39,22 +39,11 @@ class TrackToVertexIPEstimator { public: /// @brief Configuration struct /// - /// @param p The propagator - /// @param propOptions The propagator options - /// @param doBackwardPropagation Set the propagation direction to backward + /// @param prop The propagator struct Config { - Config(std::shared_ptr<propagator_t> p, - const propagator_options_t& propOptions, - bool doBackwardPropagation = true) - : propagator(std::move(p)), pOptions(propOptions) { - if (doBackwardPropagation) { - pOptions.direction = backward; - } - } + Config(std::shared_ptr<propagator_t> prop) : propagator(std::move(prop)) {} std::shared_ptr<propagator_t> propagator; - - propagator_options_t pOptions; }; /// @brief Default constructor @@ -77,8 +66,12 @@ class TrackToVertexIPEstimator { /// /// @param track Track to estimate IP from /// @param vtx Vertex the track belongs to + /// @param gctx The geometry context + /// @param mctx The magnetic field context Result<ImpactParametersAndSigma> estimate( - const BoundParameters& track, const Vertex<input_track_t>& vtx) const; + const BoundParameters& track, const Vertex<input_track_t>& vtx, + const GeometryContext& gctx, + const Acts::MagneticFieldContext& mctx) const; private: /// Config diff --git a/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.ipp b/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.ipp index 3d3989b21ceae04bd4736e1eaca8204d026d15b4..853dcedcf40600adbeac2e951c94bd63eb113384 100644 --- a/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.ipp +++ b/Core/include/Acts/Vertexing/TrackToVertexIPEstimator.ipp @@ -13,7 +13,10 @@ template <typename input_track_t, typename propagator_t, Acts::Result<Acts::ImpactParametersAndSigma> Acts::TrackToVertexIPEstimator< input_track_t, propagator_t, propagator_options_t>::estimate(const BoundParameters& track, - const Vertex<input_track_t>& vtx) const { + const Vertex<input_track_t>& vtx, + const GeometryContext& gctx, + const Acts::MagneticFieldContext& mctx) + const { // estimating the d0 and its significance by propagating the trajectory state // towards // the vertex position. By this time the vertex should NOT contain this @@ -21,9 +24,12 @@ Acts::Result<Acts::ImpactParametersAndSigma> Acts::TrackToVertexIPEstimator< const std::shared_ptr<PerigeeSurface> perigeeSurface = Surface::makeShared<PerigeeSurface>(vtx.position()); + // Create propagator options + propagator_options_t pOptions(gctx, mctx); + pOptions.direction = backward; + // Do the propagation to linPoint - auto result = - m_cfg.propagator->propagate(track, *perigeeSurface, m_cfg.pOptions); + auto result = m_cfg.propagator->propagate(track, *perigeeSurface, pOptions); if (!result.ok()) { return result.error(); diff --git a/Core/include/Acts/Vertexing/ZScanVertexFinder.ipp b/Core/include/Acts/Vertexing/ZScanVertexFinder.ipp index 7344f7d2a16bd2b201c3b7533e2ae5be3c209c15..491253247c90bef584818698f4b8d18f2fbc9680 100644 --- a/Core/include/Acts/Vertexing/ZScanVertexFinder.ipp +++ b/Core/include/Acts/Vertexing/ZScanVertexFinder.ipp @@ -30,8 +30,9 @@ auto Acts::ZScanVertexFinder<vfitter_t>::find( ImpactParametersAndSigma ipas; if (useConstraint && vertexingOptions.vertexConstraint.covariance()(0, 0) != 0) { - auto estRes = - m_cfg.ipEstimator.estimate(params, vertexingOptions.vertexConstraint); + auto estRes = m_cfg.ipEstimator.estimate( + params, vertexingOptions.vertexConstraint, + vertexingOptions.geoContext, vertexingOptions.magFieldContext); if (estRes.ok()) { ipas = *estRes; } else { diff --git a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp index f6980479cd8b6600b9b0af5e45912b47ac3bda4d..2aa5af3c50022df8a20595d19fa309b2c51be56a 100644 --- a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp @@ -35,8 +35,8 @@ using Propagator = Propagator<EigenStepper<ConstantBField>>; using Linearizer = HelicalTrackLinearizer<Propagator>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_test) { // Set debug mode @@ -50,13 +50,11 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - pOptions.direction = backward; // IP 3D Estimator using IPEstimator = ImpactPoint3dEstimator<BoundParameters, Propagator>; - IPEstimator::Config ip3dEstCfg(bField, propagator, pOptions, false); + IPEstimator::Config ip3dEstCfg(bField, propagator); IPEstimator ip3dEst(ip3dEstCfg); std::vector<double> temperatures{8.0, 4.0, 2.0, 1.4142136, 1.2247449, 1.0}; @@ -84,7 +82,7 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_test) { using IPEstimater = TrackToVertexIPEstimator<BoundParameters, Propagator>; - IPEstimater::Config ipEstCfg(propagator, pOptions); + IPEstimater::Config ipEstCfg(propagator); // Create TrackToVertexIPEstimator IPEstimater ipEst(ipEstCfg); @@ -120,7 +118,8 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_finder_test) { tracksPtr.push_back(&trk); } - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); Vector3D constraintPos{0._mm, 0._mm, 0_mm}; ActsSymMatrixD<3> constraintCov; diff --git a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp index 886e8b6fc19715659c172d483c01b701ea5d34fb..b8f385ba6224c9725a426a10d5f57350d41f3a17 100644 --- a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp @@ -30,8 +30,8 @@ using Propagator = Propagator<EigenStepper<ConstantBField>>; using Linearizer = HelicalTrackLinearizer<Propagator>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Vertex x/y position distribution std::uniform_real_distribution<> vXYDist(-0.1_mm, 0.1_mm); @@ -75,14 +75,14 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); // IP 3D Estimator using IPEstimator = ImpactPoint3dEstimator<BoundParameters, Propagator>; - IPEstimator::Config ip3dEstCfg(bField, propagator, pOptions); + IPEstimator::Config ip3dEstCfg(bField, propagator); IPEstimator ip3dEst(ip3dEstCfg); AdaptiveMultiVertexFitter<BoundParameters, Linearizer>::Config fitterCfg( @@ -163,7 +163,7 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test) { std::shared_ptr<PerigeeSurface> perigeeSurface = Surface::makeShared<PerigeeSurface>(vtxPosVec[vtxIdx]); - allTracks.push_back(BoundParameters(tgContext, std::move(covMat), paramVec, + allTracks.push_back(BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface)); } @@ -321,14 +321,14 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test_athena) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); // IP 3D Estimator using IPEstimator = ImpactPoint3dEstimator<BoundParameters, Propagator>; - IPEstimator::Config ip3dEstCfg(bField, propagator, pOptions, false); + IPEstimator::Config ip3dEstCfg(bField, propagator); IPEstimator ip3dEst(ip3dEstCfg); std::vector<double> temperatures(1, 3.); @@ -373,22 +373,22 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test_athena) { std::vector<BoundParameters> params1; params1.push_back( - BoundParameters(tgContext, covMat1, pos1a, mom1a, 1, 0, + BoundParameters(geoContext, covMat1, pos1a, mom1a, 1, 0, Surface::makeShared<PerigeeSurface>(pos1a))); params1.push_back( - BoundParameters(tgContext, covMat1, pos1b, mom1b, -1, 0, + BoundParameters(geoContext, covMat1, pos1b, mom1b, -1, 0, Surface::makeShared<PerigeeSurface>(pos1b))); params1.push_back( - BoundParameters(tgContext, covMat1, pos1c, mom1c, 1, 0, + BoundParameters(geoContext, covMat1, pos1c, mom1c, 1, 0, Surface::makeShared<PerigeeSurface>(pos1c))); params1.push_back( - BoundParameters(tgContext, covMat1, pos1d, mom1d, -1, 0, + BoundParameters(geoContext, covMat1, pos1d, mom1d, -1, 0, Surface::makeShared<PerigeeSurface>(pos1d))); params1.push_back( - BoundParameters(tgContext, covMat1, pos1e, mom1e, 1, 0, + BoundParameters(geoContext, covMat1, pos1e, mom1e, 1, 0, Surface::makeShared<PerigeeSurface>(pos1e))); params1.push_back( - BoundParameters(tgContext, covMat1, pos1f, mom1f, -1, 0, + BoundParameters(geoContext, covMat1, pos1f, mom1f, -1, 0, Surface::makeShared<PerigeeSurface>(pos1f))); // Create second vector of tracks @@ -404,13 +404,13 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test_athena) { std::vector<BoundParameters> params2; params2.push_back( - BoundParameters(tgContext, covMat2, pos2a, mom2a, 1, 0, + BoundParameters(geoContext, covMat2, pos2a, mom2a, 1, 0, Surface::makeShared<PerigeeSurface>(pos2a))); params2.push_back( - BoundParameters(tgContext, covMat2, pos2b, mom2b, -1, 0, + BoundParameters(geoContext, covMat2, pos2b, mom2b, -1, 0, Surface::makeShared<PerigeeSurface>(pos2b))); params2.push_back( - BoundParameters(tgContext, covMat2, pos2c, mom2c, -1, 0, + BoundParameters(geoContext, covMat2, pos2c, mom2c, -1, 0, Surface::makeShared<PerigeeSurface>(pos2c))); std::vector<Vertex<BoundParameters>*> vtxList; diff --git a/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp b/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp index 249cd7554450ceaedcda352172296f9e5560b278..8239c0035a18a83917d2c9c3d30f9aebca9adb09 100644 --- a/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp @@ -33,8 +33,8 @@ using Linearizer = HelicalTrackLinearizer<Propagator<EigenStepper<ConstantBField>>>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); /// @brief Unit test for FullBilloirVertexFitter /// @@ -70,7 +70,7 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_empty_input_test) { const std::vector<const BoundParameters*> emptyVector; - VertexingOptions<BoundParameters> vfOptions(tgContext, mfContext, + VertexingOptions<BoundParameters> vfOptions(geoContext, magFieldContext, myConstraint); Vertex<BoundParameters> fittedVertex = @@ -155,10 +155,10 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_defaulttrack_test) { myCovMat(3, 3) = 30.; myConstraint.setFullCovariance(std::move(myCovMat)); myConstraint.setFullPosition(SpacePointVector(0, 0, 0, 0)); - VertexingOptions<BoundParameters> vfOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vfOptions(geoContext, magFieldContext); - VertexingOptions<BoundParameters> vfOptionsConstr(tgContext, mfContext, - myConstraint); + VertexingOptions<BoundParameters> vfOptionsConstr( + geoContext, magFieldContext, myConstraint); // Create position of vertex and perigee surface double x = vXYDist(gen); double y = vXYDist(gen); @@ -198,7 +198,7 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_defaulttrack_test) { covMat << resD0 * resD0, 0., 0., 0., 0., 0., 0., resZ0 * resZ0, 0., 0., 0., 0., 0., 0., resPh * resPh, 0., 0., 0., 0., 0., 0., resTh * resTh, 0., 0., 0., 0., 0., 0., resQp * resQp, 0., 0., 0., 0., 0., 0., 1.; - tracks.push_back(BoundParameters(tgContext, std::move(covMat), paramVec, + tracks.push_back(BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface)); } @@ -292,9 +292,9 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_usertrack_test) { myConstraint.setFullCovariance(std::move(myCovMat)); myConstraint.setFullPosition(SpacePointVector(0, 0, 0, 0)); - VertexingOptions<InputTrack> vfOptions(tgContext, mfContext); + VertexingOptions<InputTrack> vfOptions(geoContext, magFieldContext); - VertexingOptions<InputTrack> vfOptionsConstr(tgContext, mfContext, + VertexingOptions<InputTrack> vfOptionsConstr(geoContext, magFieldContext, myConstraint); // Create position of vertex and perigee surface @@ -337,7 +337,7 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_usertrack_test) { covMat << resD0 * resD0, 0., 0., 0., 0., 0., 0., resZ0 * resZ0, 0., 0., 0., 0., 0., 0., resPh * resPh, 0., 0., 0., 0., 0., 0., resTh * resTh, 0., 0., 0., 0., 0., 0., resQp * resQp, 0., 0., 0., 0., 0., 0., 1.; - tracks.push_back(InputTrack(BoundParameters(tgContext, std::move(covMat), + tracks.push_back(InputTrack(BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface))); } diff --git a/Tests/UnitTests/Core/Vertexing/ImpactPoint3dEstimatorTests.cpp b/Tests/UnitTests/Core/Vertexing/ImpactPoint3dEstimatorTests.cpp index b1dd2458c2fdbd979b8b9278af91dc4c8c37133a..e39f700348f253ed848fd65c4770e82bf4adbdd1 100644 --- a/Tests/UnitTests/Core/Vertexing/ImpactPoint3dEstimatorTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/ImpactPoint3dEstimatorTests.cpp @@ -28,8 +28,8 @@ namespace Test { using Covariance = BoundSymMatrix; using Propagator = Propagator<EigenStepper<ConstantBField>>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Track d0 distribution std::uniform_real_distribution<> d0Dist(-0.01_mm, 0.01_mm); @@ -70,11 +70,10 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_params_distance_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); // Set up the ImpactPoint3dEstimator ImpactPoint3dEstimator<BoundParameters, Propagator>::Config ipEstCfg( - bField, propagator, pOptions); + bField, propagator); ImpactPoint3dEstimator<BoundParameters, Propagator> ipEstimator(ipEstCfg); @@ -117,7 +116,7 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_params_distance_test) { Surface::makeShared<PerigeeSurface>(refPosition); // Creating the track - BoundParameters myTrack(tgContext, std::move(covMat), paramVec, + BoundParameters myTrack(geoContext, std::move(covMat), paramVec, perigeeSurface); // Distance in transverse plane @@ -125,7 +124,7 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_params_distance_test) { // Estimate 3D distance auto distanceRes = - ipEstimator.calculateDistance(tgContext, myTrack, refPosition); + ipEstimator.calculateDistance(geoContext, myTrack, refPosition); BOOST_CHECK(distanceRes.ok()); double distance = *distanceRes; @@ -140,8 +139,8 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_params_distance_test) { << std::endl; } - auto res = - ipEstimator.getParamsAtClosestApproach(tgContext, myTrack, refPosition); + auto res = ipEstimator.getParamsAtClosestApproach( + geoContext, magFieldContext, myTrack, refPosition); BOOST_CHECK(res.ok()); @@ -190,11 +189,10 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_compatibility_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); // Set up the ImpactPoint3dEstimator ImpactPoint3dEstimator<BoundParameters, Propagator>::Config ipEstCfg( - bField, propagator, pOptions); + bField, propagator); ImpactPoint3dEstimator<BoundParameters, Propagator> ipEstimator(ipEstCfg); @@ -240,25 +238,25 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_compatibility_test) { Surface::makeShared<PerigeeSurface>(refPosition); // Creating the track - BoundParameters myTrack(tgContext, std::move(covMat), paramVec, + BoundParameters myTrack(geoContext, std::move(covMat), paramVec, perigeeSurface); // Estimate 3D distance auto distanceRes = - ipEstimator.calculateDistance(tgContext, myTrack, refPosition); + ipEstimator.calculateDistance(geoContext, myTrack, refPosition); BOOST_CHECK(distanceRes.ok()); distancesList.push_back(*distanceRes); - auto res = - ipEstimator.getParamsAtClosestApproach(tgContext, myTrack, refPosition); + auto res = ipEstimator.getParamsAtClosestApproach( + geoContext, magFieldContext, myTrack, refPosition); BOOST_CHECK(res.ok()); BoundParameters params = std::move(**res); auto compRes = - ipEstimator.getVertexCompatibility(tgContext, ¶ms, refPosition); + ipEstimator.getVertexCompatibility(geoContext, ¶ms, refPosition); BOOST_CHECK(compRes.ok()); @@ -310,11 +308,10 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_athena_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); // Set up the ImpactPoint3dEstimator ImpactPoint3dEstimator<BoundParameters, Propagator>::Config ipEstCfg( - bField, propagator, pOptions); + bField, propagator); ImpactPoint3dEstimator<BoundParameters, Propagator> ipEstimator(ipEstCfg); @@ -329,9 +326,9 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_athena_test) { Surface::makeShared<PerigeeSurface>(pos1); // Some fixed track parameter values - BoundParameters params1(tgContext, covMat, pos1, mom1, 1, 0, perigeeSurface); + BoundParameters params1(geoContext, covMat, pos1, mom1, 1, 0, perigeeSurface); - auto res1 = ipEstimator.calculateDistance(tgContext, params1, vtxPos); + auto res1 = ipEstimator.calculateDistance(geoContext, params1, vtxPos); BOOST_CHECK(res1.ok()); double distance = (*res1); @@ -339,11 +336,11 @@ BOOST_AUTO_TEST_CASE(impactpoint_3d_estimator_athena_test) { const double result = 3.10391_mm; CHECK_CLOSE_ABS(distance, result, 0.00001_mm); - auto res2 = - ipEstimator.getParamsAtClosestApproach(tgContext, params1, vtxPos); + auto res2 = ipEstimator.getParamsAtClosestApproach( + geoContext, magFieldContext, params1, vtxPos); BOOST_CHECK(res2.ok()); BoundParameters endParams = std::move(**res2); - Vector3D surfaceCenter = endParams.referenceSurface().center(tgContext); + Vector3D surfaceCenter = endParams.referenceSurface().center(geoContext); BOOST_CHECK_EQUAL(surfaceCenter, vtxPos); } diff --git a/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp index 355ddbaad06158a7e2e1e3521c4907523d2361fa..0d2addda7bb00a53bd87609d547e4d82065accc0 100644 --- a/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp @@ -37,8 +37,8 @@ using Propagator = Propagator<EigenStepper<ConstantBField>>; using Linearizer = HelicalTrackLinearizer<Propagator>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Vertex x/y position distribution std::uniform_real_distribution<> vXYDist(-0.1_mm, 0.1_mm); @@ -102,8 +102,6 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - // Linearizer for BoundParameters type test Linearizer::Config ltConfig(bField, propagator); Linearizer linearizer(ltConfig); @@ -117,7 +115,7 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test) { // Set up all seed finder related things TrackToVertexIPEstimator<BoundParameters, Propagator>::Config ipEstCfg( - propagator, pOptions); + propagator); TrackToVertexIPEstimator<BoundParameters, Propagator> ipEst(ipEstCfg); using ZScanSeedFinder = ZScanVertexFinder<BilloirFitter>; @@ -139,7 +137,7 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test) { using ImpactPointEstimator = ImpactPoint3dEstimator<BoundParameters, Propagator>; - ImpactPointEstimator::Config ip3dEstCfg(bField, propagator, pOptions); + ImpactPointEstimator::Config ip3dEstCfg(bField, propagator); ImpactPointEstimator ip3dEst(ip3dEstCfg); VertexFinder::Config cfg(std::move(bFitter), std::move(linearizer), @@ -210,7 +208,7 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test) { 0., 0., 0., 0., 0., res_ph * res_ph, 0., 0., 0., 0., 0., 0., res_th * res_th, 0., 0., 0., 0., 0., 0., res_qp * res_qp, 0., 0., 0., 0., 0., 0., 1.; - auto params = BoundParameters(tgContext, std::move(covMat), paramVec, + auto params = BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface); tracks.push_back(std::make_unique<BoundParameters>(params)); @@ -231,7 +229,8 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test) { tracksPtr.push_back(trk.get()); } - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); // find vertices auto res = finder.find(tracksPtr, vertexingOptions); @@ -326,8 +325,6 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_user_track_type) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - // Linearizer for user defined InputTrack type test Linearizer::Config ltConfigUT(bField, propagator); Linearizer linearizer(ltConfigUT); @@ -347,7 +344,7 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_user_track_type) { // Set up all seed finder related things TrackToVertexIPEstimator<InputTrack, Propagator>::Config ipEstCfg( - propagator, pOptions); + propagator); TrackToVertexIPEstimator<InputTrack, Propagator> ipEst(ipEstCfg); using ZScanSeedFinder = ZScanVertexFinder<BilloirFitter>; @@ -358,7 +355,7 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_user_track_type) { // IP 3D Estimator using ImpactPointEstimator = ImpactPoint3dEstimator<InputTrack, Propagator>; - ImpactPointEstimator::Config ip3dEstCfg(bField, propagator, pOptions); + ImpactPointEstimator::Config ip3dEstCfg(bField, propagator); ImpactPointEstimator ip3dEst(ip3dEstCfg); // Vertex Finder @@ -431,8 +428,8 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_user_track_type) { 0., 0., 0., 0., 0., res_ph * res_ph, 0., 0., 0., 0., 0., 0., res_th * res_th, 0., 0., 0., 0., 0., 0., res_qp * res_qp, 0., 0., 0., 0., 0., 0., 1.; - auto paramsUT = InputTrack(BoundParameters(tgContext, std::move(covMat), - paramVec, perigeeSurface)); + auto paramsUT = InputTrack(BoundParameters( + geoContext, std::move(covMat), paramVec, perigeeSurface)); tracks.push_back(std::make_unique<InputTrack>(paramsUT)); @@ -454,7 +451,8 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_user_track_type) { tracksPtr.push_back(trk.get()); } - VertexingOptions<InputTrack> vertexingOptionsUT(tgContext, mfContext); + VertexingOptions<InputTrack> vertexingOptionsUT(geoContext, + magFieldContext); // find vertices auto res = finder.find(tracksPtr, vertexingOptionsUT); diff --git a/Tests/UnitTests/Core/Vertexing/KalmanVertexTrackUpdaterTests.cpp b/Tests/UnitTests/Core/Vertexing/KalmanVertexTrackUpdaterTests.cpp index 5662c77f66a1cef11b3a0ae90bb16062da492423..211ea49e8d897edf59d82233c3fff5f6d9f7f0da 100644 --- a/Tests/UnitTests/Core/Vertexing/KalmanVertexTrackUpdaterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/KalmanVertexTrackUpdaterTests.cpp @@ -80,11 +80,10 @@ BOOST_AUTO_TEST_CASE(Kalman_Vertex_TrackUpdater) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(geoContext, magFieldContext); // Set up ImpactPoint3dEstimator, used for comparisons later ImpactPoint3dEstimator<BoundParameters, Propagator>::Config ip3dEstConfig( - bField, propagator, pOptions); + bField, propagator); ImpactPoint3dEstimator<BoundParameters, Propagator> ip3dEst(ip3dEstConfig); diff --git a/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp b/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp index 33b84d5ccb8d0bd0be75f727d04cb2fcfb91ffb2..c450d6bf706859f3842ebecbcd8d454037105015 100644 --- a/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp @@ -33,7 +33,7 @@ using Linearizer = // Create a test context GeometryContext geoContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Vertex x/y position distribution std::uniform_real_distribution<> vXYDist(-0.1_mm, 0.1_mm); @@ -137,7 +137,7 @@ BOOST_AUTO_TEST_CASE(linearized_track_factory_test) { LinearizedTrack linTrack = linFactory .linearizeTrack(parameters, SpacePointVector::Zero(), geoContext, - mfContext) + magFieldContext) .value(); BOOST_CHECK_NE(linTrack.parametersAtPCA, vecBoundZero); @@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(linearized_track_factory_straightline_test) { LinearizedTrack linTrack = linFactory .linearizeTrack(parameters, SpacePointVector::Zero(), geoContext, - mfContext) + magFieldContext) .value(); BOOST_CHECK_NE(linTrack.parametersAtPCA, vecBoundZero); diff --git a/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp index ea6d61771706a5485c63921abd65e9c215bf8218..513c35cd7ea330e455d74b09b71179c5792ca4ad 100644 --- a/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp @@ -29,8 +29,8 @@ namespace Test { using Covariance = BoundSymMatrix; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); /// /// @brief Unit test for TrackDensityVertexFinder using same configuration @@ -47,7 +47,8 @@ BOOST_AUTO_TEST_CASE(track_density_finder_test) { Vector3D pos1c{1.2_mm, 1.3_mm, -7_mm}; Vector3D mom1c{300_MeV, 1000_MeV, 100_MeV}; - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); TrackDensityVertexFinder<DummyVertexFitter<>, GaussianTrackDensity> finder; @@ -57,11 +58,11 @@ BOOST_AUTO_TEST_CASE(track_density_finder_test) { Surface::makeShared<PerigeeSurface>(pos0); // Test finder for some fixed track parameter values - BoundParameters params1a(tgContext, covMat, pos1a, mom1a, 1, 0, + BoundParameters params1a(geoContext, covMat, pos1a, mom1a, 1, 0, perigeeSurface); - BoundParameters params1b(tgContext, covMat, pos1b, mom1b, -1, 0, + BoundParameters params1b(geoContext, covMat, pos1b, mom1b, -1, 0, perigeeSurface); - BoundParameters params1c(tgContext, covMat, pos1c, mom1c, -1, 0, + BoundParameters params1c(geoContext, covMat, pos1c, mom1c, -1, 0, perigeeSurface); // Vectors of track parameters in different orders @@ -106,7 +107,8 @@ BOOST_AUTO_TEST_CASE(track_density_finder_constr_test) { double const expectedZResult = -13.013; // Finder options - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); // Create constraint for seed finding Vector3D constraintPos{1.7_mm, 1.3_mm, -6_mm}; @@ -125,11 +127,11 @@ BOOST_AUTO_TEST_CASE(track_density_finder_constr_test) { Surface::makeShared<PerigeeSurface>(pos0); // Test finder for some fixed track parameter values - BoundParameters params1a(tgContext, covMat, pos1a, mom1a, 1, 0, + BoundParameters params1a(geoContext, covMat, pos1a, mom1a, 1, 0, perigeeSurface); - BoundParameters params1b(tgContext, covMat, pos1b, mom1b, -1, 0, + BoundParameters params1b(geoContext, covMat, pos1b, mom1b, -1, 0, perigeeSurface); - BoundParameters params1c(tgContext, covMat, pos1c, mom1c, -1, 0, + BoundParameters params1c(geoContext, covMat, pos1c, mom1c, -1, 0, perigeeSurface); // Vector of track parameters @@ -179,7 +181,8 @@ BOOST_AUTO_TEST_CASE(track_density_finder_random_test) { std::shared_ptr<PerigeeSurface> perigeeSurface = Surface::makeShared<PerigeeSurface>(pos0); - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); TrackDensityVertexFinder<DummyVertexFitter<>, GaussianTrackDensity> finder; @@ -209,7 +212,7 @@ BOOST_AUTO_TEST_CASE(track_density_finder_random_test) { Vector3D mom(pt * std::cos(phi), pt * std::sin(phi), pt * std::sinh(eta)); double charge = etaDist(gen) > 0 ? 1 : -1; - trackVec.push_back(BoundParameters(tgContext, covMat, pos, mom, charge, 0, + trackVec.push_back(BoundParameters(geoContext, covMat, pos, mom, charge, 0, perigeeSurface)); } @@ -260,7 +263,7 @@ BOOST_AUTO_TEST_CASE(track_density_finder_usertrack_test) { double const expectedZResult = -13.013; // Finder options - VertexingOptions<InputTrack> vertexingOptions(tgContext, mfContext); + VertexingOptions<InputTrack> vertexingOptions(geoContext, magFieldContext); // Create constraint for seed finding Vector3D constraintPos{1.7_mm, 1.3_mm, -6_mm}; @@ -284,11 +287,11 @@ BOOST_AUTO_TEST_CASE(track_density_finder_usertrack_test) { // Test finder for some fixed track parameter values InputTrack params1a( - BoundParameters(tgContext, covMat, pos1a, mom1a, 1, 0, perigeeSurface)); + BoundParameters(geoContext, covMat, pos1a, mom1a, 1, 0, perigeeSurface)); InputTrack params1b( - BoundParameters(tgContext, covMat, pos1b, mom1b, -1, 0, perigeeSurface)); + BoundParameters(geoContext, covMat, pos1b, mom1b, -1, 0, perigeeSurface)); InputTrack params1c( - BoundParameters(tgContext, covMat, pos1c, mom1c, -1, 0, perigeeSurface)); + BoundParameters(geoContext, covMat, pos1c, mom1c, -1, 0, perigeeSurface)); // Vector of track parameters std::vector<const InputTrack*> vec1 = {¶ms1a, ¶ms1b, ¶ms1c}; diff --git a/Tests/UnitTests/Core/Vertexing/TrackToVertexIPEstimatorTests.cpp b/Tests/UnitTests/Core/Vertexing/TrackToVertexIPEstimatorTests.cpp index 9e99cc1631b9e3fe059ff67eb210173cde0a172d..377ce121430aa55debf991132274aaba2ff0601b 100644 --- a/Tests/UnitTests/Core/Vertexing/TrackToVertexIPEstimatorTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/TrackToVertexIPEstimatorTests.cpp @@ -30,8 +30,8 @@ namespace Test { using Covariance = BoundSymMatrix; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Vertex x/y position distribution std::uniform_real_distribution<> vXYDist(-0.1_mm, 0.1_mm); @@ -79,8 +79,6 @@ BOOST_AUTO_TEST_CASE(track_to_vertex_ip_estimator_test) { auto propagator = std::make_shared<Propagator<EigenStepper<ConstantBField>>>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); - // Create perigee surface std::shared_ptr<PerigeeSurface> perigeeSurface = Surface::makeShared<PerigeeSurface>(Vector3D(0., 0., 0.)); @@ -111,7 +109,7 @@ BOOST_AUTO_TEST_CASE(track_to_vertex_ip_estimator_test) { TrackToVertexIPEstimator<BoundParameters, Propagator<EigenStepper<ConstantBField>>>; - IPEst_t::Config ipEstCfg(propagator, pOptions); + IPEst_t::Config ipEstCfg(propagator); // Create TrackToVertexIPEstimator IPEst_t ipEst(ipEstCfg); @@ -140,12 +138,13 @@ BOOST_AUTO_TEST_CASE(track_to_vertex_ip_estimator_test) { 0., 0., 0., resPh * resPh, 0., 0., 0., 0., 0., 0., resTh * resTh, 0., 0., 0., 0., 0., 0., resQp * resQp, 0., 0., 0., 0., 0., 0., 1.; - BoundParameters track = - BoundParameters(tgContext, std::move(covMat), paramVec, perigeeSurface); + BoundParameters track = BoundParameters(geoContext, std::move(covMat), + paramVec, perigeeSurface); // Check if IP are retrieved ImpactParametersAndSigma output = - ipEst.estimate(track, myConstraint).value(); + ipEst.estimate(track, myConstraint, geoContext, magFieldContext) + .value(); BOOST_CHECK_NE(output.IPd0, 0.); BOOST_CHECK_NE(output.IPz0, 0.); } diff --git a/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp index 4143b9116c6e99e5f76d4a6db584e9b2594466a2..f0c991b3d9a4c932b1def92dbdb1c5fb7d53a9cd 100644 --- a/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp @@ -36,8 +36,8 @@ using Propagator = Propagator<EigenStepper<ConstantBField>>; using Linearizer_t = HelicalTrackLinearizer<Propagator>; // Create a test context -GeometryContext tgContext = GeometryContext(); -MagneticFieldContext mfContext = MagneticFieldContext(); +GeometryContext geoContext = GeometryContext(); +MagneticFieldContext magFieldContext = MagneticFieldContext(); // Vertex x/y position distribution std::uniform_real_distribution<> vXYDist(-0.1_mm, 0.1_mm); @@ -84,7 +84,6 @@ BOOST_AUTO_TEST_CASE(zscan_finder_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); typedef FullBilloirVertexFitter<BoundParameters, Linearizer_t> BilloirFitter; @@ -131,7 +130,7 @@ BOOST_AUTO_TEST_CASE(zscan_finder_test) { 0., 0., 0., 0., resPh * resPh, 0., 0., 0., 0., 0., 0., resTh * resTh, 0., 0., 0., 0., 0., 0., resQp * resQp, 0., 0., 0., 0., 0., 0., 1.; - tracks.push_back(BoundParameters(tgContext, std::move(covMat), paramVec, + tracks.push_back(BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface)); } @@ -146,14 +145,15 @@ BOOST_AUTO_TEST_CASE(zscan_finder_test) { "Vertex finder does not fulfill vertex finder concept."); TrackToVertexIPEstimator<BoundParameters, Propagator>::Config ipEstCfg( - propagator, pOptions); + propagator); TrackToVertexIPEstimator<BoundParameters, Propagator> ipEst(ipEstCfg); VertexFinder::Config cfg(std::move(ipEst)); VertexFinder finder(std::move(cfg)); - VertexingOptions<BoundParameters> vertexingOptions(tgContext, mfContext); + VertexingOptions<BoundParameters> vertexingOptions(geoContext, + magFieldContext); auto res = finder.find(tracksPtr, vertexingOptions); @@ -205,7 +205,6 @@ BOOST_AUTO_TEST_CASE(zscan_finder_usertrack_test) { // Set up propagator with void navigator auto propagator = std::make_shared<Propagator>(stepper); - PropagatorOptions<> pOptions(tgContext, mfContext); typedef FullBilloirVertexFitter<InputTrack, Linearizer_t> BilloirFitter; @@ -251,7 +250,7 @@ BOOST_AUTO_TEST_CASE(zscan_finder_usertrack_test) { 0., 0., 0., 0., resPh * resPh, 0., 0., 0., 0., 0., 0., resTh * resTh, 0., 0., 0., 0., 0., 0., resQp * resQp, 0., 0., 0., 0., 0., 0., 1.; - tracks.push_back(InputTrack(BoundParameters(tgContext, std::move(covMat), + tracks.push_back(InputTrack(BoundParameters(geoContext, std::move(covMat), paramVec, perigeeSurface))); } @@ -266,7 +265,7 @@ BOOST_AUTO_TEST_CASE(zscan_finder_usertrack_test) { "Vertex finder does not fulfill vertex finder concept."); TrackToVertexIPEstimator<InputTrack, Propagator>::Config ipEstCfg( - propagator, pOptions); + propagator); TrackToVertexIPEstimator<InputTrack, Propagator> ipEst(ipEstCfg); VertexFinder::Config cfg(std::move(ipEst)); @@ -278,7 +277,7 @@ BOOST_AUTO_TEST_CASE(zscan_finder_usertrack_test) { VertexFinder finder(std::move(cfg), extractParameters); - VertexingOptions<InputTrack> vertexingOptions(tgContext, mfContext); + VertexingOptions<InputTrack> vertexingOptions(geoContext, magFieldContext); auto res = finder.find(tracksPtr, vertexingOptions);