From 3991615cf692f7cf0f68b17d3832fdd3db32c9cd Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Fri, 5 Apr 2024 13:06:36 +0200 Subject: [PATCH 1/4] feat: Allow extrapolation from filtered states in TrackHelpers (#3078) - Adds extrapolation for filtered states in TrackHelpers - Adds debug logging --- Core/include/Acts/Utilities/TrackHelpers.hpp | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Core/include/Acts/Utilities/TrackHelpers.hpp b/Core/include/Acts/Utilities/TrackHelpers.hpp index c7ee69ce7ea..67fe8a10f05 100644 --- a/Core/include/Acts/Utilities/TrackHelpers.hpp +++ b/Core/include/Acts/Utilities/TrackHelpers.hpp @@ -10,6 +10,7 @@ #include "Acts/Definitions/Tolerance.hpp" #include "Acts/EventData/MultiTrajectoryHelpers.hpp" +#include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/TrackStateType.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Propagator/StandardAborters.hpp" @@ -159,14 +160,21 @@ Result smoothTracks( template Result> findTrackStateForExtrapolation( - const GeometryContext &geoContext, track_proxy_t &track, + const GeometryContext &geoContext, const track_proxy_t &track, const Surface &referenceSurface, TrackExtrapolationStrategy strategy, const Logger &logger = *getDefaultLogger("TrackExtrapolation", Logging::INFO)) { using TrackStateProxy = typename track_proxy_t::ConstTrackStateProxy; auto intersect = [&](const TrackStateProxy &state) -> SurfaceIntersection { - auto freeVector = MultiTrajectoryHelpers::freeSmoothed(geoContext, state); + assert(state.hasSmoothed() || state.hasFiltered()); + + FreeVector freeVector; + if (state.hasSmoothed()) { + freeVector = MultiTrajectoryHelpers::freeSmoothed(geoContext, state); + } else { + freeVector = MultiTrajectoryHelpers::freeFiltered(geoContext, state); + } return referenceSurface .intersect(geoContext, freeVector.template segment<3>(eFreePos0), @@ -293,11 +301,16 @@ Result extrapolateTrackToReferenceSurface( auto &[trackState, distance] = *findResult; options.direction = Direction::fromScalarZeroAsPositive(distance); + + BoundTrackParameters parameters = track.createParametersFromState(trackState); + ACTS_VERBOSE("extrapolating track to reference surface at distance " + << distance << " with direction " << options.direction + << " with starting parameters " << parameters); + auto propagateResult = propagator.template propagate( - track.createParametersFromState(trackState), referenceSurface, - options); + parameters, referenceSurface, options); if (!propagateResult.ok()) { ACTS_ERROR("failed to extrapolate track: " << propagateResult.error()); From 4935604fa3c6ebae23467312684800a78e722c0b Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Fri, 5 Apr 2024 14:55:44 +0200 Subject: [PATCH 2/4] feat: Pythia8 label secondary vertices based on proximity in Examples (#3048) Implements a spatial proximity match criteria for secondary vertices with Pythia8. blocked by - https://github.com/acts-project/acts/pull/2998 --- .../reference/performance_ambi_ttbar.root | Bin 35322 -> 35421 bytes ...erformance_amvf_gridseeder_ttbar_hist.root | Bin 43667 -> 43714 bytes .../performance_amvf_ttbar_hist.root | Bin 43344 -> 43435 bytes .../reference/performance_ckf_ttbar.root | Bin 42964 -> 42868 bytes .../reference/performance_seeding_ttbar.root | Bin 16419 -> 16430 bytes .../tracksummary_ckf_ttbar_hist.root | Bin 41432 -> 41494 bytes .../Generators/Pythia8ProcessGenerator.cpp | 15 ++++++++++----- .../Generators/Pythia8ProcessGenerator.hpp | 6 ++++-- Examples/Python/tests/root_file_hashes.txt | 2 +- 9 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CI/physmon/reference/performance_ambi_ttbar.root b/CI/physmon/reference/performance_ambi_ttbar.root index ce0e9b66afa3bef73d5e0c67101b7b57e7168091..b6aed8bb0be789976823cac46e877d4c5e4ea110 100644 GIT binary patch delta 27039 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
-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
vYajPC?!$R2qJA7N68 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 I?l_qL2W0GD%K!iX delta 26998 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 diff --git a/CI/physmon/reference/performance_amvf_gridseeder_ttbar_hist.root b/CI/physmon/reference/performance_amvf_gridseeder_ttbar_hist.root index 716ac95ba34da09aa77bf4e0c29dc465f17f135f..58493d78b9f9c0b9aa6e6c6bff79b88f6439f543 100644 GIT binary patch delta 26163 zcmcG$by!tf7dN^$-67qjq!NO3cefJK-5rvPkZ!l2(kWd6BHgKUcS?6Rcf*PIyytuG zy?@;2;=lL-!_Fg_ajA+pl$RQbdoH82fchJMvEL~B)?8Q0ROF{p8 z_!9&|OMV~${Xj`S`~(dIAA6hUep&TgZ0_?d^pDh2{out}zX zK;RdT1XUjw^c(~Rfna1H!te3npoA|V?_g^GH%!su_BnvXPD9%#b4L2TX= zJuLPVx>#c>NDpix8XqhIMv-+k{M~pB`NKk4HUA(gCFW;FB`mI&^<{39gAnAlCZz+V zN&mP`#YdWq4>aMjAWd)t;8Vy1902%PwKR*s^)`#}u(GZO*y2l;*E}&{@4jr;MmiJd z#<<3$e8T0>Y-fnq_Z%+x0u>P>G|(?05S)x3JA-{u`?_DG#qIQFaEcR=w$tyoA&2;@ zC&;7p-OVUyjFbk!*F-X4)&Qbm18+n^zM^oWH9Jd6a>;#6;pncTrKTMA}RP^&t#l6q9C3fI5W(5iR@vnx2#UKX7$gl3dI#QBWmAMv!SdOuHJOu)#Qm&H zSP_NWIay#R%?-+-;-C#~53q{&i|1lZZb5wqC%S@d^P;Mv{8c}NS@)4?V31qC*}a$j z{LZhvd%4hQBxDgF;Ikj2theKPVV!$_PSk$act?So3P5F zLaW1RbiAEQ0+a}RMn+TEx8#Gc@-Pgq~u{>b&zFE7wMu3WR-&)>T&&t)p`NzN5X z(6IGEe|5WC)W=oHt7>G?m@#&#xk~W+c74Kf+xSPx-NOAG8RacY6R4_CoePRQvYncP zjit+j%;7_YPVP}iC?6rS0LgaftYFh~r_1>keYbNrlt!a2+-M@%p2N z@<>49IiEkm`zMKtU!2@voc~RL{J}h+KzO*D%x-{^Wt0K$ko9}>oqMOD-_7lWWuk;p zOX%s_@I;#aBJgm(9E4~XU?pF*=|8=rcjkbT6f<}qZ1%b$+a0^H9UPI3J0VIN+ZG}zOZO%$w~07t;<7_{iMnp zYLS7LUwa~i<>-2x=3wpU<~TH_!bPUjA?H-u&JO;BAL1QU@8!Nf_q%R%up6Bxc!$Ud zT_xf9-JxUX?9fVzWRBMi&!lV9fW3*1=w=g1_ z^oe08Ej@rUKfXD~let)G^P7erX$o&ylCM4BAagN%v0z!NgWx?2YJd`I2st;i$7qXg z53CC2h)FtZ+LPNNN^jyNF}>?&G54V&y4ypD&ME}BBpI08SEt-pPcPD?D55s9juW>9 z55Ovj6TT@Eq@Jsx|LoD8(_r=&Ze(_OyZvk#al0=b* zlNJv3H8BJ^f8SYEvdz_T-KzVobN6n5fsFh$lQ2JkgJ!Jn*h2vuctNq+(Vdm-iqRX6 z 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 delta 26156 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 N;g1S&sME2a{{qqBq@w@; diff --git a/CI/physmon/reference/performance_amvf_ttbar_hist.root b/CI/physmon/reference/performance_amvf_ttbar_hist.root index c15b9a9bc19cf00336526769e32578acc461bc5a..4c1b98a903980d7be27bff5aac55f4650506bfc9 100644 GIT binary patch delta 25377 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
u)j;S4Ay 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 diff --git a/CI/physmon/reference/performance_ckf_ttbar.root b/CI/physmon/reference/performance_ckf_ttbar.root index b383a51a774581a1cde85f3faa971a7580c1c8ad..41a07227f18fa865c6caa1b38f2901664faa363b 100644 GIT binary patch delta 34906 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]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 V_n#C0pSO*1zqbUPFK-Iy{{S71Lp=Zh diff --git a/CI/physmon/reference/tracksummary_ckf_ttbar_hist.root b/CI/physmon/reference/tracksummary_ckf_ttbar_hist.root index 2decf8ad67650a87cbcf1c0f94443ae0ac223c30..d029c70d2d388209cda12fb966f6f58d57702fb7 100644 GIT binary patch delta 25662 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 bJ5r+pJ}=LXoB$OjC%3bs^f7mVIMDw9I|ub? diff --git a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp index bad3b902771..fe39105ba55 100644 --- a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp +++ b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp @@ -1,6 +1,6 @@ // This file is part of the Acts project. // -// Copyright (C) 2017-2019 CERN for the benefit of the Acts project +// Copyright (C) 2017-2024 CERN for the benefit of the Acts project // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -115,10 +115,15 @@ Pythia8Generator::operator()(RandomEngine& rng) { // only secondaries have a defined vertex position if (m_cfg.labelSecondaries && genParticle.hasVertex()) { // either add to existing secondary vertex if exists or create new one - // TODO can we do this w/o the manual search and position check? - auto it = std::find_if( - vertices.begin(), vertices.end(), - [=](const SimVertex& other) { return pos4 == other.position4; }); + + // check if an existing vertex is close enough + auto it = + std::find_if(vertices.begin(), vertices.end(), + [&pos4, this](const SimVertex& other) { + return (pos4.head<3>() - other.position()).norm() < + m_cfg.spatialVertexThreshold; + }); + if (it != vertices.end()) { particleId.setVertexSecondary(std::distance(vertices.begin(), it)); it->outgoing.insert(particleId); diff --git a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.hpp b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.hpp index f7f852b1d7a..4b6f8a20614 100644 --- a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.hpp +++ b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.hpp @@ -1,6 +1,6 @@ // This file is part of the Acts project. // -// Copyright (C) 2017-2019 CERN for the benefit of the Acts project +// Copyright (C) 2017-2024 CERN for the benefit of the Acts project // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -45,7 +45,9 @@ class Pythia8Generator : public EventGenerator::ParticlesGenerator { /// Turn on/off the labeling of secondary vertices /// TODO this is essentially broken as the current code will label any kind /// of decay as secondary - bool labelSecondaries = false; + bool labelSecondaries = true; + /// The spatial threshold to consider a particle originating from a vertex + double spatialVertexThreshold = 1.0 * Acts::UnitConstants::um; }; Pythia8Generator(const Config& cfg, Acts::Logging::Level lvl); diff --git a/Examples/Python/tests/root_file_hashes.txt b/Examples/Python/tests/root_file_hashes.txt index 2c54bb27aa7..9f977c62425 100644 --- a/Examples/Python/tests/root_file_hashes.txt +++ b/Examples/Python/tests/root_file_hashes.txt @@ -1,4 +1,4 @@ -test_pythia8__pythia8_particles.root: 79fa44dadc3193c9349c108c7a784d6121d343f88e8059ca11eed442ab1d49db +test_pythia8__pythia8_particles.root: 49b89c3458a51aa9407f887be50e6bbcd9a2a0c897e6f2be5a5d6a29d1bf3505 test_fatras__particles_simulation.root: 4ce0feb0ecb234143f418789a7a0d377f4a653d529c49bf999dda1878c50cee1 test_fatras__hits.root: 2e47d9ba55fa1b377f70c361107fe811e9880d14c42cb3d7a9cd4616a6f33a54 test_geant4__particles_simulation.root: 3052d64dfe627c22521c3dd95397a3c02c1c63fd5d6d07606005541014b40b1d From 1374baab7433e367bf41a9f2c69af6624f8a2d19 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Sat, 6 Apr 2024 10:38:34 +0200 Subject: [PATCH 3/4] refactor: Remove `constexpr` from `MultiTrajectory` functions (#3073) I believe the `constexpr` cannot be guaranteed with C++17 for the vector backend and even with C++20 it would limit other backends to be `constexpr`. From https://en.cppreference.com/w/cpp/language/constexpr > The constexpr specifier declares that it is possible to evaluate the value of the function or variable at compile time. Such variables and functions can then be used where only compile time [constant expressions](https://en.cppreference.com/w/cpp/language/constant_expression) are allowed (provided that appropriate function arguments are given). If not all backends can be guaranteed to be `constexpr`, the frontend cannot be `constexpr`. --- .../Acts/EventData/MultiTrajectory.hpp | 60 +++++++++---------- .../Acts/EventData/VectorMultiTrajectory.hpp | 12 ++-- 2 files changed, 33 insertions(+), 39 deletions(-) diff --git a/Core/include/Acts/EventData/MultiTrajectory.hpp b/Core/include/Acts/EventData/MultiTrajectory.hpp index 309c50139e3..d25e1ec72e7 100644 --- a/Core/include/Acts/EventData/MultiTrajectory.hpp +++ b/Core/include/Acts/EventData/MultiTrajectory.hpp @@ -191,7 +191,7 @@ class MultiTrajectory { /// Helper function to check if a component exists IF it is an optional one. /// Used in assertions - constexpr bool checkOptional(HashedString key, IndexType istate) const { + bool checkOptional(HashedString key, IndexType istate) const { using namespace Acts::HashedStringLiteral; switch (key) { case "predicted"_hash: @@ -240,9 +240,8 @@ class MultiTrajectory { /// @param iprevious index of the previous state, kInvalid if first /// @return Index of the newly added track state template > - constexpr IndexType addTrackState( - TrackStatePropMask mask = TrackStatePropMask::All, - IndexType iprevious = kInvalid) { + IndexType addTrackState(TrackStatePropMask mask = TrackStatePropMask::All, + IndexType iprevious = kInvalid) { return self().addTrackState_impl(mask, iprevious); } @@ -388,29 +387,27 @@ class MultiTrajectory { /// compatibility with backends. /// @note Only available if the MultiTrajectory is not read-only template > - constexpr void addColumn(const std::string& key) { + void addColumn(const std::string& key) { self().template addColumn_impl(key); } /// Check if a column with a key @p key exists. /// @param key Key to check for a column with /// @return True if the column exists, false if not. - constexpr bool hasColumn(HashedString key) const { - return self().hasColumn_impl(key); - } + bool hasColumn(HashedString key) const { return self().hasColumn_impl(key); } /// @} /// Clear the @c MultiTrajectory. Leaves the underlying storage untouched /// @note Only available if the MultiTrajectory is not read-only template > - constexpr void clear() { + void clear() { self().clear_impl(); } /// Returns the number of track states contained /// @return The number of track states - constexpr IndexType size() const { return self().size_impl(); } + IndexType size() const { return self().size_impl(); } protected: // These are internal helper functions which the @c TrackStateProxy class talks to @@ -419,7 +416,7 @@ class MultiTrajectory { /// @param key The key for which to check /// @param istate The track state index to check /// @return True if the component exists, false if not - constexpr bool has(HashedString key, IndexType istate) const { + bool has(HashedString key, IndexType istate) const { return self().has_impl(key, istate); } @@ -428,7 +425,7 @@ class MultiTrajectory { /// @param istate The track state index to check /// @return True if the component exists, false if not template - constexpr bool has(IndexType istate) const { + bool has(IndexType istate) const { return self().has_impl(key, istate); } @@ -436,15 +433,14 @@ class MultiTrajectory { /// @param parIdx Index into the parameter column /// @return Mutable proxy template > - constexpr typename TrackStateProxy::Parameters parameters(IndexType parIdx) { + typename TrackStateProxy::Parameters parameters(IndexType parIdx) { return self().parameters_impl(parIdx); } /// Retrieve a parameter proxy instance for parameters at a given index /// @param parIdx Index into the parameter column /// @return Const proxy - constexpr typename ConstTrackStateProxy::Parameters parameters( - IndexType parIdx) const { + typename ConstTrackStateProxy::Parameters parameters(IndexType parIdx) const { return self().parameters_impl(parIdx); } @@ -452,15 +448,14 @@ class MultiTrajectory { /// @param covIdx Index into the covariance column /// @return Mutable proxy template > - constexpr typename TrackStateProxy::Covariance covariance(IndexType covIdx) { + typename TrackStateProxy::Covariance covariance(IndexType covIdx) { return self().covariance_impl(covIdx); } /// Retrieve a covariance proxy instance for a covariance at a given index /// @param covIdx Index into the covariance column /// @return Const proxy - constexpr typename ConstTrackStateProxy::Covariance covariance( - IndexType covIdx) const { + typename ConstTrackStateProxy::Covariance covariance(IndexType covIdx) const { return self().covariance_impl(covIdx); } @@ -468,15 +463,14 @@ class MultiTrajectory { /// @param jacIdx Index into the jacobian column /// @return Mutable proxy template > - constexpr typename TrackStateProxy::Covariance jacobian(IndexType jacIdx) { + typename TrackStateProxy::Covariance jacobian(IndexType jacIdx) { return self().jacobian_impl(jacIdx); } /// Retrieve a jacobian proxy instance for a jacobian at a given index /// @param jacIdx Index into the jacobian column /// @return Const proxy - constexpr typename ConstTrackStateProxy::Covariance jacobian( - IndexType jacIdx) const { + typename ConstTrackStateProxy::Covariance jacobian(IndexType jacIdx) const { return self().jacobian_impl(jacIdx); } @@ -486,7 +480,7 @@ class MultiTrajectory { /// @return Mutable proxy template > - constexpr typename TrackStateProxy::template Measurement measurement( + typename TrackStateProxy::template Measurement measurement( IndexType measIdx) { return self().template measurement_impl(measIdx); } @@ -496,8 +490,8 @@ class MultiTrajectory { /// @param measIdx Index into the measurement column /// @return Const proxy template - constexpr typename ConstTrackStateProxy::template Measurement - measurement(IndexType measIdx) const { + typename ConstTrackStateProxy::template Measurement measurement( + IndexType measIdx) const { return self().template measurement_impl(measIdx); } @@ -508,7 +502,7 @@ class MultiTrajectory { /// @return Mutable proxy template > - constexpr typename TrackStateProxy::template MeasurementCovariance + typename TrackStateProxy::template MeasurementCovariance measurementCovariance(IndexType covIdx) { return self().template measurementCovariance_impl(covIdx); } @@ -542,9 +536,9 @@ class MultiTrajectory { /// @note The track states both need to be stored in the /// same @c MultiTrajectory instance template > - constexpr void shareFrom(IndexType iself, IndexType iother, - TrackStatePropMask shareSource, - TrackStatePropMask shareTarget) { + void shareFrom(IndexType iself, IndexType iother, + TrackStatePropMask shareSource, + TrackStatePropMask shareTarget) { self().shareFrom_impl(iself, iother, shareSource, shareTarget); } @@ -552,7 +546,7 @@ class MultiTrajectory { /// @param target The component to unset /// @param istate The track state index to operate on template > - constexpr void unset(TrackStatePropMask target, IndexType istate) { + void unset(TrackStatePropMask target, IndexType istate) { self().unset_impl(target, istate); } @@ -572,7 +566,7 @@ class MultiTrajectory { /// @return Mutable reference to the component given by @p key template > - constexpr T& component(IndexType istate) { + T& component(IndexType istate) { assert(checkOptional(key, istate)); return *std::any_cast(self().component_impl(key, istate)); } @@ -583,7 +577,7 @@ class MultiTrajectory { /// @param istate The track state index to operate on /// @return Mutable reference to the component given by @p key template > - constexpr T& component(HashedString key, IndexType istate) { + T& component(HashedString key, IndexType istate) { assert(checkOptional(key, istate)); return *std::any_cast(self().component_impl(key, istate)); } @@ -594,7 +588,7 @@ class MultiTrajectory { /// @param istate The track state index to operate on /// @return Const reference to the component given by @p key template - constexpr const T& component(IndexType istate) const { + const T& component(IndexType istate) const { assert(checkOptional(key, istate)); return *std::any_cast(self().component_impl(key, istate)); } @@ -605,7 +599,7 @@ class MultiTrajectory { /// @param istate The track state index to operate on /// @return Const reference to the component given by @p key template - constexpr const T& component(HashedString key, IndexType istate) const { + const T& component(HashedString key, IndexType istate) const { assert(checkOptional(key, istate)); return *std::any_cast(self().component_impl(key, istate)); } diff --git a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp index ae5c3dfcb74..8bcb34d8c9c 100644 --- a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp +++ b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp @@ -266,7 +266,7 @@ class VectorMultiTrajectoryBase { } template - static constexpr bool hasColumn_impl(T& instance, HashedString key) { + static bool hasColumn_impl(T& instance, HashedString key) { using namespace Acts::HashedStringLiteral; switch (key) { case "predicted"_hash: @@ -434,7 +434,7 @@ class VectorMultiTrajectory final void unset_impl(TrackStatePropMask target, IndexType istate); - constexpr bool has_impl(HashedString key, IndexType istate) const { + bool has_impl(HashedString key, IndexType istate) const { return detail_vmt::VectorMultiTrajectoryBase::has_impl(*this, key, istate); } @@ -455,12 +455,12 @@ class VectorMultiTrajectory final } template - constexpr void addColumn_impl(const std::string& key) { + void addColumn_impl(const std::string& key) { Acts::HashedString hashedKey = hashString(key); m_dynamic.insert({hashedKey, std::make_unique>()}); } - constexpr bool hasColumn_impl(HashedString key) const { + bool hasColumn_impl(HashedString key) const { return detail_vmt::VectorMultiTrajectoryBase::hasColumn_impl(*this, key); } @@ -561,7 +561,7 @@ class ConstVectorMultiTrajectory final &m_measCov[offset]}; } - constexpr bool has_impl(HashedString key, IndexType istate) const { + bool has_impl(HashedString key, IndexType istate) const { return detail_vmt::VectorMultiTrajectoryBase::has_impl(*this, key, istate); } @@ -574,7 +574,7 @@ class ConstVectorMultiTrajectory final *this, key, istate); } - constexpr bool hasColumn_impl(HashedString key) const { + bool hasColumn_impl(HashedString key) const { return detail_vmt::VectorMultiTrajectoryBase::hasColumn_impl(*this, key); } From 6883f31129e3677fbb9104495180c01c1c333249 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Mon, 8 Apr 2024 09:09:09 +0200 Subject: [PATCH 4/4] ci: Add clang-tidy check for nested namespace definitions (#3084) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New language feature in C++17: Nested namespace definitions, e.g., `namespace X::Y { … }` instead of `namespace X { namespace Y { … } }` We had a good mix between them, but clang-tidy has with `modernize-concat-nested-namespaces` an option, to automatically check for them. I stumbled over this, when reading through the cpp-standard-updates and I think this improves readability. Hits will be reported similar to this one: ``` ╭─ /builds/acts/ci-bridge/src/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp─╮ │ 🟡 │ │ /builds/acts/ci-bridge/src/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp: │ │ 27:1 WARNING [modernize-concat-nested-namespaces] │ │ ╭──────────────────────────────────────────────────────────────────────────╮ │ │ │ nested namespaces can be concatenated │ │ │ │ 27 | namespace Acts { │ │ │ │ | ^~~~~~~~~~~~~~~~ │ │ │ │ 28 | │ │ │ │ 29 | namespace Test { │ │ │ │ | ~~~~~~~~~~~~~~ │ │ │ │ | namespace Acts::Test │ │ │ │ │ │ │ ╰──────────────────────────────────────────────────────────────────────────╯ │ │ ──────────────────────────────────────────────────────────────────────────── │ ╰──────────────────────────────────────────────────────────────────────────────╯ ``` --- .clang-tidy | 2 +- .../ActsAlignment/Kernel/detail/AlignmentEngine.hpp | 6 ++---- Alignment/src/Kernel/detail/AlignmentEngine.cpp | 6 ++---- CI/clang_tidy/limits.yml | 1 + Core/include/Acts/Detector/Blueprint.hpp | 6 ++---- .../Acts/Detector/CuboidalContainerBuilder.hpp | 6 ++---- .../Acts/Detector/CylindricalContainerBuilder.hpp | 6 ++---- Core/include/Acts/Detector/DetectorBuilder.hpp | 6 ++---- .../include/Acts/Detector/DetectorVolumeBuilder.hpp | 6 ++---- .../Acts/Detector/GeometryCompatibilityConcept.hpp | 8 ++------ Core/include/Acts/Detector/GeometryIdMapper.hpp | 6 ++---- .../Detector/IndexedRootVolumeFinderBuilder.hpp | 7 ++----- Core/include/Acts/Detector/KdtSurfacesProvider.hpp | 8 ++------ .../include/Acts/Detector/LayerStructureBuilder.hpp | 6 ++---- .../Acts/Detector/MultiWireStructureBuilder.hpp | 6 ++---- Core/include/Acts/Detector/ProtoBinning.hpp | 7 ++----- Core/include/Acts/Detector/ProtoSupport.hpp | 7 ++----- .../Acts/Detector/VolumeStructureBuilder.hpp | 6 ++---- .../Acts/Detector/detail/BlueprintDrawer.hpp | 12 ++---------- .../Acts/Detector/detail/BlueprintHelper.hpp | 12 ++---------- .../Acts/Detector/detail/CuboidalDetectorHelper.hpp | 13 ++++--------- .../Detector/detail/CylindricalDetectorHelper.hpp | 13 ++++--------- .../Detector/detail/DetectorVolumeConsistency.hpp | 12 ++++-------- .../Acts/Detector/detail/IndexedGridFiller.hpp | 8 ++------ .../Detector/detail/IndexedSurfacesGenerator.hpp | 8 ++------ Core/include/Acts/Detector/detail/PortalHelper.hpp | 6 ++---- .../Acts/Detector/detail/ProtoMaterialHelper.hpp | 6 ++---- .../Acts/Detector/detail/ReferenceGenerators.hpp | 8 ++------ .../Acts/Detector/detail/SupportSurfacesHelper.hpp | 8 ++------ .../Acts/Detector/interface/IDetectorBuilder.hpp | 6 ++---- .../interface/IDetectorComponentBuilder.hpp | 6 ++---- .../interface/IExternalStructureBuilder.hpp | 6 ++---- .../interface/IInternalStructureBuilder.hpp | 6 ++---- .../Detector/interface/IRootVolumeFinderBuilder.hpp | 7 ++----- .../Acts/EventData/MultiTrajectoryHelpers.hpp | 8 ++------ .../Acts/EventData/detail/CalculateResiduals.hpp | 6 ++---- .../Acts/EventData/detail/ParameterTraits.hpp | 6 ++---- .../Acts/EventData/detail/covariance_helper.hpp | 6 ++---- .../Acts/Material/detail/AverageMaterials.hpp | 6 ++---- Core/include/Acts/Navigation/DetectorNavigator.hpp | 6 ++---- .../Acts/Navigation/DetectorVolumeFinders.hpp | 6 ++---- .../Acts/Navigation/DetectorVolumeUpdaters.hpp | 6 ++---- .../Acts/Navigation/MultiLayerSurfacesUpdater.hpp | 7 ++----- .../Acts/Navigation/NavigationStateUpdaters.hpp | 7 ++----- .../Acts/Navigation/SurfaceCandidatesUpdaters.hpp | 6 ++---- Core/include/Acts/Propagator/StepperConcept.hpp | 6 ++---- Core/include/Acts/Propagator/detail/Auctioneer.hpp | 6 ++---- .../Acts/Propagator/detail/CovarianceEngine.hpp | 6 ++---- .../Acts/Propagator/detail/JacobianEngine.hpp | 6 ++---- .../Acts/Propagator/detail/LoopProtection.hpp | 6 ++---- .../detail/PointwiseMaterialInteraction.hpp | 6 ++---- .../Acts/Propagator/detail/SteppingHelper.hpp | 6 ++---- .../Propagator/detail/VolumeMaterialInteraction.hpp | 6 ++---- .../Propagator/detail/abort_list_implementation.hpp | 6 ++---- .../detail/action_list_implementation.hpp | 6 ++---- Core/include/Acts/Seeding/HoughTransformUtils.hpp | 6 ++---- Core/include/Acts/Seeding/InternalSpacePoint.hpp | 2 +- Core/include/Acts/Surfaces/DiscSurface.hpp | 2 +- Core/include/Acts/Surfaces/PlaneSurface.hpp | 2 +- .../Acts/Surfaces/detail/AlignmentHelper.hpp | 8 ++------ Core/include/Acts/Surfaces/detail/FacesHelper.hpp | 8 ++------ .../Acts/Surfaces/detail/IntersectionHelper2D.hpp | 6 ++---- Core/include/Acts/Surfaces/detail/PlanarHelper.hpp | 7 ++----- .../include/Acts/Surfaces/detail/VerticesHelper.hpp | 8 ++------ .../Acts/TrackFinding/SourceLinkAccessorConcept.hpp | 6 ++---- .../detail/AmbiguityTrackClustering.hpp | 6 ++---- .../Acts/TrackFitting/GlobalChiSquareFitter.hpp | 6 ++---- .../TrackFitting/GlobalChiSquareFitterError.hpp | 6 ++---- Core/include/Acts/TrackFitting/detail/GsfActor.hpp | 6 ++---- .../TrackFitting/detail/KalmanGlobalCovariance.hpp | 6 ++---- .../TrackFitting/detail/KalmanUpdateHelpers.hpp | 6 ++---- Core/include/Acts/Utilities/BinnedArrayXD.hpp | 2 +- Core/include/Acts/Utilities/GridAxisGenerators.hpp | 8 ++------ Core/include/Acts/Utilities/TransformRange.hpp | 7 ++----- Core/include/Acts/Utilities/VectorHelpers.hpp | 6 ++---- Core/include/Acts/Utilities/detail/Axis.hpp | 8 ++------ Core/include/Acts/Utilities/detail/AxisFwd.hpp | 6 ++---- Core/include/Acts/Utilities/detail/Extendable.hpp | 7 ++----- Core/include/Acts/Utilities/detail/MPL/all_of.hpp | 8 ++------ Core/include/Acts/Utilities/detail/MPL/any_of.hpp | 8 ++------ .../Acts/Utilities/detail/MPL/are_sorted.hpp | 8 ++------ .../Acts/Utilities/detail/MPL/are_within.hpp | 8 ++------ Core/include/Acts/Utilities/detail/MPL/at_index.hpp | 8 ++------ .../Acts/Utilities/detail/MPL/has_duplicates.hpp | 8 ++------ .../Acts/Utilities/detail/MPL/type_collector.hpp | 8 ++------ .../Acts/Utilities/detail/RealQuadraticEquation.hpp | 6 ++---- Core/include/Acts/Utilities/detail/Subspace.hpp | 6 ++---- Core/include/Acts/Utilities/detail/grid_helper.hpp | 8 ++------ .../Acts/Utilities/detail/interpolation_impl.hpp | 8 ++------ Core/include/Acts/Utilities/detail/periodic.hpp | 6 ++---- Core/src/Detector/CuboidalContainerBuilder.cpp | 6 ++---- Core/src/Detector/CylindricalContainerBuilder.cpp | 6 ++---- Core/src/Detector/LayerStructureBuilder.cpp | 6 ++---- .../detail/PointwiseMaterialInteraction.cpp | 6 ++---- Core/src/TrackFitting/GsfUtils.cpp | 6 ++---- Core/src/Visualization/GeometryView3D.cpp | 6 ++---- .../include/ActsExamples/Digitization/Smearers.hpp | 6 ++---- .../TelescopeG4DetectorConstruction.hpp | 6 ++---- .../Geant4HepMC/src/PrimaryGeneratorAction.hpp | 7 ++----- .../ActsExamples/Geometry/VolumeAssociationTest.hpp | 6 ++---- .../TrackFinding/DefaultHoughFunctions.hpp | 6 ++---- .../ContextualDetector/AlignmentDecorator.hpp | 7 ++----- .../ExternallyAlignedDetectorElement.hpp | 7 ++----- .../InternallyAlignedDetectorElement.hpp | 7 ++----- .../ActsExamples/DD4hepDetector/DD4hepDetector.hpp | 6 ++---- .../DD4hepDetector/DD4hepDetectorHelper.hpp | 6 ++---- .../DD4hepDetector/DD4hepGeometryService.hpp | 6 ++---- .../Detectors/DD4hepDetector/src/DD4hepDetector.cpp | 6 ++---- Examples/Detectors/DD4hepDetector/src/DetUtils.cpp | 6 ++---- Examples/Detectors/DD4hepDetector/src/DetUtils.h | 6 ++---- .../GenericDetector/BuildGenericDetector.hpp | 6 ++---- .../GenericDetector/GenericDetector.hpp | 6 ++---- .../GenericDetector/GenericDetectorElement.hpp | 8 ++------ .../ActsExamples/GenericDetector/LayerBuilderT.hpp | 6 ++---- .../GenericDetector/ProtoLayerCreatorT.hpp | 7 ++----- .../GenericDetector/src/BuildGenericDetector.cpp | 8 ++------ .../ActsExamples/MagneticField/MagneticField.hpp | 7 ++----- .../MockupSectorBuilder.hpp | 6 ++---- .../TelescopeDetector/BuildTelescopeDetector.hpp | 6 ++---- .../TelescopeDetector/TelescopeDetector.hpp | 6 ++---- .../TelescopeDetector/TelescopeDetectorElement.hpp | 6 ++---- .../include/ActsExamples/Utilities/Helpers.hpp | 8 ++------ .../include/ActsExamples/Utilities/Options.hpp | 6 ++---- .../include/ActsExamples/Utilities/OptionsFwd.hpp | 12 ++++-------- .../include/ActsExamples/Utilities/tbbWrap.hpp | 13 +++++-------- Examples/Framework/src/Utilities/Helpers.cpp | 8 ++------ .../include/ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp | 6 ++---- .../include/ActsExamples/Io/HepMC3/HepMC3Event.hpp | 6 ++---- .../ActsExamples/Io/HepMC3/HepMC3Particle.hpp | 6 ++---- .../include/ActsExamples/Io/HepMC3/HepMC3Vertex.hpp | 6 ++---- .../ActsExamples/Io/Json/JsonSurfacesReader.hpp | 8 ++------ .../detail/NuclearInteractionParametrisation.hpp | 8 ++------ .../detail/NuclearInteractionParametrisation.cpp | 8 ++------ .../include/ActsExamples/Io/Root/RootUtility.hpp | 6 ++---- Examples/Python/src/ExaTrkXTrackFindingStub.cpp | 6 ++---- Examples/Python/src/HepMC3Stub.cpp | 6 ++---- Examples/Python/src/OnnxStub.cpp | 6 ++---- Examples/Python/src/SvgStub.cpp | 6 ++---- .../ActsFatras/Kernel/detail/SimulationActor.hpp | 6 ++---- .../ActsFatras/Kernel/detail/SimulationError.hpp | 6 ++---- .../ElectroMagnetic/detail/GaussianMixture.hpp | 6 ++---- .../ElectroMagnetic/detail/GeneralMixture.hpp | 6 ++---- .../Physics/ElectroMagnetic/detail/Highland.hpp | 6 ++---- .../NuclearInteractionParameters.hpp | 6 ++---- .../include/ActsFatras/Selectors/KinematicCasts.hpp | 6 ++---- .../Selectors/detail/combine_selectors.hpp | 6 ++---- Fatras/src/Kernel/SimulationError.cpp | 6 ++---- .../Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp | 6 ++---- .../Acts/Plugins/DD4hep/DD4hepDetectorStructure.hpp | 7 ++----- .../Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp | 7 ++----- Plugins/DD4hep/src/ConvertDD4hepDetector.cpp | 2 +- .../include/Acts/Plugins/EDM4hep/EDM4hepUtil.hpp | 6 ++---- Plugins/EDM4hep/src/EDM4hepUtil.cpp | 8 ++------ .../Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp | 6 ++---- .../Identification/IdentifiedDetectorElement.hpp | 2 +- .../Json/DetectorVolumeFinderJsonConverter.hpp | 7 ++----- .../include/Acts/Plugins/Json/DetrayJsonHelper.hpp | 7 ++----- .../Legacy/include/Acts/Seeding/AtlasSeedFinder.hpp | 6 ++---- .../include/Acts/Seeding/LegacyInternalSeed.hpp | 6 ++---- Plugins/Legacy/include/Acts/Seeding/LegacySeed.hpp | 6 ++---- Plugins/Legacy/include/Acts/Seeding/SPForSeed.hpp | 6 ++---- Tests/Benchmarks/SurfaceIntersectionBenchmark.cpp | 6 ++---- .../Acts/Tests/CommonHelpers/BenchmarkTools.hpp | 6 ++---- .../Tests/CommonHelpers/CubicTrackingGeometry.hpp | 6 ++---- .../CommonHelpers/CylindricalTrackingGeometry.hpp | 6 ++---- .../Acts/Tests/CommonHelpers/DataDirectory.hpp | 6 ++---- .../Acts/Tests/CommonHelpers/FloatComparisons.hpp | 6 ++---- .../Acts/Tests/CommonHelpers/LineSurfaceStub.hpp | 6 ++---- .../Tests/CommonHelpers/MeasurementsCreator.hpp | 6 ++---- .../Tests/CommonHelpers/PredefinedMaterials.hpp | 6 ++---- .../Acts/Tests/CommonHelpers/TestSpacePoint.hpp | 6 ++---- .../InterpolatedSolenoidBFieldTest.cpp | 6 ++---- Tests/IntegrationTests/PropagationDatasets.hpp | 6 ++---- Tests/UnitTests/Benchmarks/BenchmarkTools.cpp | 6 ++---- .../Core/Clusterization/ClusterizationTests1D.cpp | 6 ++---- .../Core/Clusterization/ClusterizationTests2D.cpp | 6 ++---- .../Core/Detector/BlueprintHelperTests.cpp | 6 ++---- Tests/UnitTests/Core/Detector/BlueprintTests.cpp | 6 ++---- .../Detector/CylindricalDetectorHelperTests.cpp | 6 ++---- Tests/UnitTests/Core/Detector/PortalTests.cpp | 6 ++---- .../Digitization/CartesianSegmentationTests.cpp | 6 ++---- .../Core/Digitization/PlanarModuleStepperTests.cpp | 6 ++---- .../Core/Geometry/AlignmentContextTests.cpp | 6 ++---- .../Core/Geometry/CuboidVolumeBoundsTests.cpp | 6 ++---- .../Core/Geometry/CuboidVolumeBuilderTests.cpp | 6 ++---- .../Core/Geometry/CylinderVolumeBuilderTests.cpp | 6 ++---- .../Geometry/GenericApproachDescriptorTests.cpp | 10 ++-------- .../Geometry/GenericCuboidVolumeBoundsTests.cpp | 6 ++---- .../Core/Geometry/GeometryIdentifierTests.cpp | 6 ++---- Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp | 6 ++---- Tests/UnitTests/Core/Geometry/LayerTests.cpp | 6 ++---- .../Core/Geometry/NavigationLayerTests.cpp | 6 ++---- Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp | 6 ++---- .../UnitTests/Core/Geometry/SimpleGeometryTests.cpp | 6 ++---- .../Core/Geometry/SurfaceArrayCreatorTests.cpp | 6 ++---- .../Core/Geometry/SurfaceBinningMatcherTests.cpp | 8 ++------ .../Core/Geometry/TrackingGeometryClosureTests.cpp | 6 ++---- .../Core/Geometry/TrackingGeometryCreationTests.cpp | 6 ++---- .../Geometry/TrackingGeometryGeometryIdTests.cpp | 6 ++---- Tests/UnitTests/Core/Geometry/VolumeTests.cpp | 6 ++---- .../Core/MagneticField/ConstantBFieldTests.cpp | 6 ++---- .../MagneticField/InterpolatedBFieldMapTests.cpp | 6 ++---- .../MagneticField/MagneticFieldProviderTests.cpp | 6 ++---- .../Core/MagneticField/SolenoidBFieldTests.cpp | 6 ++---- .../Material/AccumulatedSurfaceMaterialTests.cpp | 6 ++---- .../Core/Material/BinnedSurfaceMaterialTests.cpp | 7 ++----- .../Material/HomogeneousSurfaceMaterialTests.cpp | 7 ++----- .../Material/HomogeneousVolumeMaterialTests.cpp | 7 ++----- .../Core/Material/ISurfaceMaterialTests.cpp | 7 ++----- .../Core/Material/InterpolatedMaterialMapTests.cpp | 8 ++------ .../Material/IntersectionMaterialAssignerTests.cpp | 6 ++---- .../Core/Material/MaterialGridHelperTests.cpp | 6 ++---- .../Material/MaterialInteractionAssignmentTests.cpp | 6 ++---- .../Material/PropagatorMaterialAssignerTests.cpp | 6 ++---- .../Core/Material/ProtoSurfaceMaterialTests.cpp | 7 ++----- .../Core/Material/ProtoVolumeMaterialTests.cpp | 7 ++----- .../Core/Navigation/DetectorVolumeUpdatersTests.cpp | 6 ++---- .../Core/Navigation/NavigationStateTests.cpp | 6 ++---- .../UnitTests/Core/Propagator/AtlasStepperTests.cpp | 6 ++---- Tests/UnitTests/Core/Propagator/AuctioneerTests.cpp | 6 ++---- .../Core/Propagator/ConstrainedStepTests.cpp | 6 ++---- .../Core/Propagator/CovarianceEngineTests.cpp | 6 ++---- .../Core/Propagator/DirectNavigatorTests.cpp | 6 ++---- .../UnitTests/Core/Propagator/EigenStepperTests.cpp | 6 ++---- .../UnitTests/Core/Propagator/ExtrapolatorTests.cpp | 6 ++---- .../Core/Propagator/JacobianEngineTests.cpp | 6 ++---- Tests/UnitTests/Core/Propagator/JacobianTests.cpp | 6 ++---- .../Core/Propagator/KalmanExtrapolatorTests.cpp | 6 ++---- .../Core/Propagator/MaterialCollectionTests.cpp | 6 ++---- Tests/UnitTests/Core/Propagator/NavigatorTests.cpp | 6 ++---- Tests/UnitTests/Core/Propagator/PropagatorTests.cpp | 6 ++---- .../Core/Propagator/StraightLineStepperTests.cpp | 6 ++---- .../Propagator/VolumeMaterialInteractionTests.cpp | 6 ++---- .../SpacePointFormation/SpacePointBuilderTests.cpp | 6 ++---- .../Core/Surfaces/AlignmentHelperTests.cpp | 6 ++---- Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp | 6 ++---- .../Core/Surfaces/CylinderSurfaceTests.cpp | 7 ++----- .../UnitTests/Core/Surfaces/PerigeeSurfaceTests.cpp | 6 ++---- Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp | 7 ++----- Tests/UnitTests/Core/Surfaces/StrawSurfaceTests.cpp | 8 ++------ Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp | 8 ++------ Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp | 6 ++---- .../Core/Utilities/AnnealingUtilityTests.cpp | 6 ++---- .../UnitTests/Core/Utilities/BinAdjustmentTests.cpp | 6 ++---- .../Core/Utilities/BinAdjustmentVolumeTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/BinningDataTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/DBScanTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/ExtendableTests.cpp | 6 ++---- .../Core/Utilities/FiniteStateMachineTests.cpp | 6 ++---- .../UnitTests/Core/Utilities/HashedStringTests.cpp | 8 ++------ .../UnitTests/Core/Utilities/IntersectionTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/KDTreeTests.cpp | 6 ++---- Tests/UnitTests/Core/Utilities/LoggerTests.cpp | 6 ++---- .../Core/Utilities/MaterialMapUtilsTests.cpp | 6 ++---- .../Vertexing/AdaptiveGridTrackDensityTests.cpp | 6 ++---- .../Vertexing/AdaptiveMultiVertexFinderTests.cpp | 6 ++---- .../Vertexing/AdaptiveMultiVertexFitterTests.cpp | 6 ++---- .../Core/Vertexing/FullBilloirVertexFitterTests.cpp | 6 ++---- .../Vertexing/GaussianGridTrackDensityTests.cpp | 6 ++---- .../Core/Vertexing/GridDensityVertexFinderTests.cpp | 6 ++---- .../Core/Vertexing/IterativeVertexFinderTests.cpp | 6 ++---- .../Core/Vertexing/KalmanVertexUpdaterTests.cpp | 6 ++---- .../Core/Vertexing/LinearizedTrackFactoryTests.cpp | 6 ++---- .../Vertexing/TrackDensityVertexFinderTests.cpp | 6 ++---- .../Core/Vertexing/VertexingDataHelper.hpp | 6 ++---- .../Core/Vertexing/ZScanVertexFinderTests.cpp | 6 ++---- .../Core/Visualization/EventDataView3DBase.hpp | 6 ++---- .../Core/Visualization/PrimitivesView3DBase.hpp | 7 ++----- .../Core/Visualization/SurfaceView3DBase.hpp | 7 ++----- .../Visualization/TrackingGeometryView3DBase.hpp | 7 ++----- .../Core/Visualization/Visualization3DTester.hpp | 8 ++------ .../Core/Visualization/VolumeView3DBase.hpp | 7 ++----- Tests/UnitTests/Fatras/Kernel/TupleIndexOfTests.cpp | 6 ++---- .../Plugins/Json/PortalJsonConverterTests.cpp | 6 ++---- .../Plugins/TGeo/TGeoArb8ConversionTests.cpp | 8 ++------ .../Plugins/TGeo/TGeoBBoxConversionTests.cpp | 7 ++----- .../Plugins/TGeo/TGeoLayerBuilderTests.cpp | 8 ++------ Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp | 7 ++----- .../Plugins/TGeo/TGeoPrimitivesHelperTests.cpp | 6 ++---- .../Plugins/TGeo/TGeoTrd1ConversionTests.cpp | 6 ++---- .../Plugins/TGeo/TGeoTrd2ConversionTests.cpp | 6 ++---- .../Plugins/TGeo/TGeoTubeConversionTests.cpp | 8 ++------ cmake/ActsStaticAnalysis.cmake | 1 + 285 files changed, 572 insertions(+), 1258 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index e42e75cde28..21d190190af 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,5 @@ --- -Checks: '-*,readability-container-size-empty,readability-implicit-bool-cast,readability-implicit-bool-conversion,modernize-use-equals-default,modernize-use-override,modernize-use-using,readability-braces-around-statements,modernize-use-nullptr,performance-move-const-arg,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-init-variables,clang-analyzer-optin.cplusplus.UninitializedObject,readability-operators-representation' +Checks: '-*,readability-container-size-empty,readability-implicit-bool-cast,readability-implicit-bool-conversion,modernize-concat-nested-namespaces,modernize-use-equals-default,modernize-use-override,modernize-use-using,readability-braces-around-statements,modernize-use-nullptr,performance-move-const-arg,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-init-variables,clang-analyzer-optin.cplusplus.UninitializedObject,readability-operators-representation' HeaderFilterRegex: '.*(? -namespace ActsAlignment { -namespace detail { +namespace ActsAlignment::detail { using namespace Acts; /// @@ -299,5 +298,4 @@ TrackAlignmentState trackAlignmentState( return alignState; } -} // namespace detail -} // namespace ActsAlignment +} // namespace ActsAlignment::detail diff --git a/Alignment/src/Kernel/detail/AlignmentEngine.cpp b/Alignment/src/Kernel/detail/AlignmentEngine.cpp index 552bba03b90..c5c012d08d7 100644 --- a/Alignment/src/Kernel/detail/AlignmentEngine.cpp +++ b/Alignment/src/Kernel/detail/AlignmentEngine.cpp @@ -8,8 +8,7 @@ #include "ActsAlignment/Kernel/detail/AlignmentEngine.hpp" -namespace ActsAlignment { -namespace detail { +namespace ActsAlignment::detail { void resetAlignmentDerivative(Acts::AlignmentToBoundMatrix& alignToBound, AlignmentMask mask) { @@ -33,5 +32,4 @@ void resetAlignmentDerivative(Acts::AlignmentToBoundMatrix& alignToBound, } } -} // namespace detail -} // namespace ActsAlignment +} // namespace ActsAlignment::detail diff --git a/CI/clang_tidy/limits.yml b/CI/clang_tidy/limits.yml index 0b75c0fc149..5b2818d7d0e 100644 --- a/CI/clang_tidy/limits.yml +++ b/CI/clang_tidy/limits.yml @@ -5,6 +5,7 @@ limits: "readability-braces-around-statements": 0 "readability-implicit-bool-cast": 0 "readability-implicit-bool-conversion": 0 + "modernize-concat-nested-namespaces": 0 "modernize-use-using": 0 "modernize-use-override": 0 "modernize-use-equals-default" : 0 diff --git a/Core/include/Acts/Detector/Blueprint.hpp b/Core/include/Acts/Detector/Blueprint.hpp index 4b63b351ec4..f3ddc47699b 100644 --- a/Core/include/Acts/Detector/Blueprint.hpp +++ b/Core/include/Acts/Detector/Blueprint.hpp @@ -20,8 +20,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IGeometryIdGenerator; class IInternalStructureBuilder; @@ -122,5 +121,4 @@ struct Node final { }; } // namespace Blueprint -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp b/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp index df385879758..9ec69348116 100644 --- a/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp +++ b/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp @@ -19,8 +19,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IRootVolumeFinderBuilder; class IGeometryIdGenerator; @@ -106,5 +105,4 @@ class CuboidalContainerBuilder : public IDetectorComponentBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp b/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp index eb58806015b..c3023cea84e 100644 --- a/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp +++ b/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IRootVolumeFinderBuilder; class IGeometryIdGenerator; @@ -109,5 +108,4 @@ class CylindricalContainerBuilder : public IDetectorComponentBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/DetectorBuilder.hpp b/Core/include/Acts/Detector/DetectorBuilder.hpp index 2638f20a28f..6ec5dea54d8 100644 --- a/Core/include/Acts/Detector/DetectorBuilder.hpp +++ b/Core/include/Acts/Detector/DetectorBuilder.hpp @@ -15,8 +15,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IGeometryIdGenerator; @@ -69,5 +68,4 @@ class DetectorBuilder final : public IDetectorBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/DetectorVolumeBuilder.hpp b/Core/include/Acts/Detector/DetectorVolumeBuilder.hpp index f1a9ef6906a..c7b4ae8c6f6 100644 --- a/Core/include/Acts/Detector/DetectorVolumeBuilder.hpp +++ b/Core/include/Acts/Detector/DetectorVolumeBuilder.hpp @@ -17,8 +17,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IExternalStructureBuilder; class IInternalStructureBuilder; class IGeometryIdGenerator; @@ -79,5 +78,4 @@ class DetectorVolumeBuilder : public IDetectorComponentBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/GeometryCompatibilityConcept.hpp b/Core/include/Acts/Detector/GeometryCompatibilityConcept.hpp index f58a8223435..4879fb9533d 100644 --- a/Core/include/Acts/Detector/GeometryCompatibilityConcept.hpp +++ b/Core/include/Acts/Detector/GeometryCompatibilityConcept.hpp @@ -12,9 +12,7 @@ #include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/Utilities/TypeTraits.hpp" -namespace Acts { - -namespace Concepts { +namespace Acts::Concepts { // Types to check compatibility of template @@ -48,6 +46,4 @@ template constexpr bool NavigationCompatibilityConcept = NavigationCompatibilityConceptImpl::value; -} // namespace Concepts - -} // namespace Acts +} // namespace Acts::Concepts diff --git a/Core/include/Acts/Detector/GeometryIdMapper.hpp b/Core/include/Acts/Detector/GeometryIdMapper.hpp index 00037f26497..f4d6a4163b2 100644 --- a/Core/include/Acts/Detector/GeometryIdMapper.hpp +++ b/Core/include/Acts/Detector/GeometryIdMapper.hpp @@ -16,8 +16,7 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief This is a mapper of geometry ids, which can be used to /// assign predefined geometry ids to objects @@ -144,5 +143,4 @@ class GeometryIdMapper final : public IGeometryIdGenerator { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp b/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp index e817ce599c5..6160216c2d5 100644 --- a/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp +++ b/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp @@ -16,9 +16,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; @@ -45,5 +43,4 @@ class IndexedRootVolumeFinderBuilder final : public IRootVolumeFinderBuilder { std::vector m_casts; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/KdtSurfacesProvider.hpp b/Core/include/Acts/Detector/KdtSurfacesProvider.hpp index 75ec9d050e6..dda69aeefc7 100644 --- a/Core/include/Acts/Detector/KdtSurfacesProvider.hpp +++ b/Core/include/Acts/Detector/KdtSurfacesProvider.hpp @@ -20,9 +20,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// @brief A wrapper class around a KDTree of surfaces /// @@ -195,6 +193,4 @@ class KdtSurfacesProvider : public ISurfacesProvider { Extent m_region; }; -} // namespace Experimental - -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/LayerStructureBuilder.hpp b/Core/include/Acts/Detector/LayerStructureBuilder.hpp index 542e1f4a44b..afc04463cc5 100644 --- a/Core/include/Acts/Detector/LayerStructureBuilder.hpp +++ b/Core/include/Acts/Detector/LayerStructureBuilder.hpp @@ -28,8 +28,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief This is a builder of layer structures to be contained /// within a DetectorVolume, it extends the IInternalStructureBuilder @@ -130,5 +129,4 @@ class LayerStructureBuilder : public IInternalStructureBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/MultiWireStructureBuilder.hpp b/Core/include/Acts/Detector/MultiWireStructureBuilder.hpp index e58ce69290c..86cce7fce56 100644 --- a/Core/include/Acts/Detector/MultiWireStructureBuilder.hpp +++ b/Core/include/Acts/Detector/MultiWireStructureBuilder.hpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class MultiWireStructureBuilder { public: @@ -75,5 +74,4 @@ class MultiWireStructureBuilder { std::unique_ptr mLogger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/ProtoBinning.hpp b/Core/include/Acts/Detector/ProtoBinning.hpp index 2122c61d51c..f3adb4e0779 100644 --- a/Core/include/Acts/Detector/ProtoBinning.hpp +++ b/Core/include/Acts/Detector/ProtoBinning.hpp @@ -18,9 +18,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// @brief Simple helper class to define a binning structure /// @@ -146,5 +144,4 @@ struct BinningDescription { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/ProtoSupport.hpp b/Core/include/Acts/Detector/ProtoSupport.hpp index e900cae6e2d..e4525523698 100644 --- a/Core/include/Acts/Detector/ProtoSupport.hpp +++ b/Core/include/Acts/Detector/ProtoSupport.hpp @@ -19,9 +19,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// @brief Support surface building instructions /// /// There are two ways to build a support surface: @@ -78,5 +76,4 @@ struct ProtoSupport { bool assignToAll = true; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/VolumeStructureBuilder.hpp b/Core/include/Acts/Detector/VolumeStructureBuilder.hpp index ca2acb79b78..812f2e761ec 100644 --- a/Core/include/Acts/Detector/VolumeStructureBuilder.hpp +++ b/Core/include/Acts/Detector/VolumeStructureBuilder.hpp @@ -19,8 +19,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// This class provides the external detector volume structure, configured /// either from: @@ -77,5 +76,4 @@ class VolumeStructureBuilder : public IExternalStructureBuilder { std::unique_ptr m_logger; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/detail/BlueprintDrawer.hpp b/Core/include/Acts/Detector/detail/BlueprintDrawer.hpp index 4b3007fce8c..cc589bf8e06 100644 --- a/Core/include/Acts/Detector/detail/BlueprintDrawer.hpp +++ b/Core/include/Acts/Detector/detail/BlueprintDrawer.hpp @@ -13,12 +13,7 @@ #include #include -namespace Acts { - -namespace Experimental { - -namespace detail { -namespace BlueprintDrawer { +namespace Acts::Experimental::detail::BlueprintDrawer { /// @brief Nested options struct for the drawer struct Options { @@ -63,7 +58,4 @@ struct Options { void dotStream(std::ostream& ss, const Blueprint::Node& node, const Options& options = Options{}); -} // namespace BlueprintDrawer -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental::detail::BlueprintDrawer diff --git a/Core/include/Acts/Detector/detail/BlueprintHelper.hpp b/Core/include/Acts/Detector/detail/BlueprintHelper.hpp index 59dc89d75b3..06cc3e2046f 100644 --- a/Core/include/Acts/Detector/detail/BlueprintHelper.hpp +++ b/Core/include/Acts/Detector/detail/BlueprintHelper.hpp @@ -11,12 +11,7 @@ #include "Acts/Detector/Blueprint.hpp" #include "Acts/Utilities/BinningData.hpp" -namespace Acts { - -namespace Experimental { - -namespace detail { -namespace BlueprintHelper { +namespace Acts::Experimental::detail::BlueprintHelper { /// @brief Sort the nodes in the blueprint container node /// @@ -42,7 +37,4 @@ void fillGapsCylindrical(Blueprint::Node& node, bool adjustToParent = true); /// @param adjustToParent nodes, if nodes should be adjusted to parent void fillGapsCuboidal(Blueprint::Node& node, bool adjustToParent = true); -} // namespace BlueprintHelper -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental::detail::BlueprintHelper diff --git a/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp b/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp index c264d645d7e..34be7576be2 100644 --- a/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp +++ b/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp @@ -22,15 +22,12 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; class Portal; -namespace detail { -namespace CuboidalDetectorHelper { +namespace detail::CuboidalDetectorHelper { /// @brief Connect detector volumes given a binning value /// @@ -81,7 +78,5 @@ std::array, 3u> xyzBoundaries( const std::vector& volumes, Acts::Logging::Level logLevel = Acts::Logging::INFO); -} // namespace CuboidalDetectorHelper -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace detail::CuboidalDetectorHelper +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/detail/CylindricalDetectorHelper.hpp b/Core/include/Acts/Detector/detail/CylindricalDetectorHelper.hpp index e603c4fb0ef..91b7935482c 100644 --- a/Core/include/Acts/Detector/detail/CylindricalDetectorHelper.hpp +++ b/Core/include/Acts/Detector/detail/CylindricalDetectorHelper.hpp @@ -23,15 +23,12 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; class Portal; -namespace detail { -namespace CylindricalDetectorHelper { +namespace detail::CylindricalDetectorHelper { /// @brief Connect detector volumes in R /// @@ -240,7 +237,5 @@ std::array, 3u> rzphiBoundaries( uniqueBoundaries[2].end())}}; } -} // namespace CylindricalDetectorHelper -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace detail::CylindricalDetectorHelper +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp b/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp index 5d3c2d2d2ea..ffc9ae97985 100644 --- a/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp +++ b/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp @@ -15,13 +15,11 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; -namespace detail { -namespace DetectorVolumeConsistency { +namespace detail::DetectorVolumeConsistency { /// @brief Helper method to check alignment of the volumes, this method checks /// if the rotational part of the transform is identical @@ -52,7 +50,5 @@ std::vector checkCenterAlignment( const std::vector>& volumes, BinningValue axisValue); -} // namespace DetectorVolumeConsistency -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace detail::DetectorVolumeConsistency +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/detail/IndexedGridFiller.hpp b/Core/include/Acts/Detector/detail/IndexedGridFiller.hpp index 0311a728743..742d733930f 100644 --- a/Core/include/Acts/Detector/detail/IndexedGridFiller.hpp +++ b/Core/include/Acts/Detector/detail/IndexedGridFiller.hpp @@ -26,9 +26,7 @@ #include #include -namespace Acts { -namespace Experimental { -namespace detail { +namespace Acts::Experimental::detail { /// @brief Helper method to generate completely populated bin sequences /// that respect the boundary type of the axis @@ -253,6 +251,4 @@ struct IndexedGridFiller { const Logger& logger() const { return (*oLogger); } }; -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental::detail diff --git a/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp b/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp index fbc510ae854..598945d3e5d 100644 --- a/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp +++ b/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp @@ -17,9 +17,7 @@ #include #include -namespace Acts { -namespace Experimental { -namespace detail { +namespace Acts::Experimental::detail { /// @brief A templated indexed grid generator. /// @@ -104,6 +102,4 @@ struct IndexedSurfacesGenerator { const Logger& logger() const { return *oLogger; } }; -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental::detail diff --git a/Core/include/Acts/Detector/detail/PortalHelper.hpp b/Core/include/Acts/Detector/detail/PortalHelper.hpp index cf178c84968..63eb39ffca6 100644 --- a/Core/include/Acts/Detector/detail/PortalHelper.hpp +++ b/Core/include/Acts/Detector/detail/PortalHelper.hpp @@ -36,8 +36,7 @@ using PortalReplacement = std::tuple, unsigned int, Direction, std::vector, BinningValue>; -namespace detail { -namespace PortalHelper { +namespace detail::PortalHelper { /// @brief Method to attach a single detector volume to a portal /// @@ -108,7 +107,6 @@ stripSideVolumes( const std::vector& selectedOnly = {}, Acts::Logging::Level logLevel = Acts::Logging::INFO); -} // namespace PortalHelper -} // namespace detail +} // namespace detail::PortalHelper } // namespace Experimental } // namespace Acts diff --git a/Core/include/Acts/Detector/detail/ProtoMaterialHelper.hpp b/Core/include/Acts/Detector/detail/ProtoMaterialHelper.hpp index 3d8738da423..eb483a2f680 100644 --- a/Core/include/Acts/Detector/detail/ProtoMaterialHelper.hpp +++ b/Core/include/Acts/Detector/detail/ProtoMaterialHelper.hpp @@ -18,8 +18,7 @@ namespace Experimental { struct BinningDescription; -namespace detail { -namespace ProtoMaterialHelper { +namespace detail::ProtoMaterialHelper { /// @brief Method that attaches proto material to a surface given /// a proto binning description @@ -34,7 +33,6 @@ BinningDescription attachProtoMaterial(const GeometryContext& gctx, Surface& surface, const BinningDescription& bDescription); -} // namespace ProtoMaterialHelper -} // namespace detail +} // namespace detail::ProtoMaterialHelper } // namespace Experimental } // namespace Acts diff --git a/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp b/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp index cdd08563f41..ab72f16d62e 100644 --- a/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp +++ b/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp @@ -16,9 +16,7 @@ #include -namespace Acts { -namespace Experimental { -namespace detail { +namespace Acts::Experimental::detail { /// A struct to access the center position /// @@ -94,6 +92,4 @@ struct PolyhedronReferenceGenerator { } }; -} // namespace detail -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental::detail diff --git a/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp b/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp index 0f344c0bb81..1cfef5fdb5b 100644 --- a/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp +++ b/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp @@ -24,14 +24,12 @@ namespace Acts { using namespace UnitLiterals; -namespace Experimental { -namespace detail { /// @brief This file contains helper methods to build common support structures /// such as support cylinders or discs. /// /// It allows to model those as Disc/CylinderSurface objects, but also - if /// configured such - as approximations built from palanr surfaces -namespace SupportSurfacesHelper { +namespace Experimental::detail::SupportSurfacesHelper { using SupportSurfaceComponents = std::tuple, Acts::Transform3>; @@ -161,7 +159,5 @@ void addSupport(std::vector>& layerSurfaces, const SurfaceComponentsCreator& componentCreator, unsigned int supportSplits = 1u); -} // namespace SupportSurfacesHelper -} // namespace detail -} // namespace Experimental +} // namespace Experimental::detail::SupportSurfacesHelper } // namespace Acts diff --git a/Core/include/Acts/Detector/interface/IDetectorBuilder.hpp b/Core/include/Acts/Detector/interface/IDetectorBuilder.hpp index 2b09dc7a2e3..73a167e08ba 100644 --- a/Core/include/Acts/Detector/interface/IDetectorBuilder.hpp +++ b/Core/include/Acts/Detector/interface/IDetectorBuilder.hpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class Detector; @@ -37,5 +36,4 @@ class IDetectorBuilder { const GeometryContext& gctx) const = 0; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/interface/IDetectorComponentBuilder.hpp b/Core/include/Acts/Detector/interface/IDetectorComponentBuilder.hpp index 5e4cb319ec6..e2b8f5fdd6d 100644 --- a/Core/include/Acts/Detector/interface/IDetectorComponentBuilder.hpp +++ b/Core/include/Acts/Detector/interface/IDetectorComponentBuilder.hpp @@ -11,8 +11,7 @@ #include "Acts/Detector/DetectorComponents.hpp" #include "Acts/Geometry/GeometryContext.hpp" -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief This is the interface for detector component builders; /// such a builder could be a simple detector volume builder, with @@ -31,5 +30,4 @@ class IDetectorComponentBuilder { virtual DetectorComponent construct(const GeometryContext& gctx) const = 0; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/interface/IExternalStructureBuilder.hpp b/Core/include/Acts/Detector/interface/IExternalStructureBuilder.hpp index efc55d7e1e7..483ddf6299a 100644 --- a/Core/include/Acts/Detector/interface/IExternalStructureBuilder.hpp +++ b/Core/include/Acts/Detector/interface/IExternalStructureBuilder.hpp @@ -11,8 +11,7 @@ #include "Acts/Detector/DetectorComponents.hpp" #include "Acts/Geometry/GeometryContext.hpp" -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief This is the interface definition of external structure /// builders for DetectorVolume construction. @@ -28,5 +27,4 @@ class IExternalStructureBuilder { virtual ExternalStructure construct(const GeometryContext& gctx) const = 0; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/interface/IInternalStructureBuilder.hpp b/Core/include/Acts/Detector/interface/IInternalStructureBuilder.hpp index 6d306735ba3..4ae2e242bf0 100644 --- a/Core/include/Acts/Detector/interface/IInternalStructureBuilder.hpp +++ b/Core/include/Acts/Detector/interface/IInternalStructureBuilder.hpp @@ -11,8 +11,7 @@ #include "Acts/Detector/DetectorComponents.hpp" #include "Acts/Geometry/GeometryContext.hpp" -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief This is the interface definition of internal structure /// builders for DetectorVolume construction. @@ -31,5 +30,4 @@ class IInternalStructureBuilder { virtual InternalStructure construct(const GeometryContext& gctx) const = 0; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/interface/IRootVolumeFinderBuilder.hpp b/Core/include/Acts/Detector/interface/IRootVolumeFinderBuilder.hpp index f2f392ccb79..793c5d8a9b1 100644 --- a/Core/include/Acts/Detector/interface/IRootVolumeFinderBuilder.hpp +++ b/Core/include/Acts/Detector/interface/IRootVolumeFinderBuilder.hpp @@ -14,9 +14,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; @@ -38,5 +36,4 @@ class IRootVolumeFinderBuilder { const = 0; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/EventData/MultiTrajectoryHelpers.hpp b/Core/include/Acts/EventData/MultiTrajectoryHelpers.hpp index 94bef2db8f7..1bc2c6e6f8b 100644 --- a/Core/include/Acts/EventData/MultiTrajectoryHelpers.hpp +++ b/Core/include/Acts/EventData/MultiTrajectoryHelpers.hpp @@ -17,9 +17,7 @@ #include #include -namespace Acts { - -namespace MultiTrajectoryHelpers { +namespace Acts::MultiTrajectoryHelpers { /// @brief Struct for brief trajectory summary info /// @@ -164,6 +162,4 @@ FreeVector freeSmoothed(const GeometryContext& gctx, return transformBoundToFreeParameters(trackStateProxy.referenceSurface(), gctx, trackStateProxy.smoothed()); } -} // namespace MultiTrajectoryHelpers - -} // namespace Acts +} // namespace Acts::MultiTrajectoryHelpers diff --git a/Core/include/Acts/EventData/detail/CalculateResiduals.hpp b/Core/include/Acts/EventData/detail/CalculateResiduals.hpp index 533745316b3..38adc0df822 100644 --- a/Core/include/Acts/EventData/detail/CalculateResiduals.hpp +++ b/Core/include/Acts/EventData/detail/CalculateResiduals.hpp @@ -15,8 +15,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// Residuals between bound reference parameters and a measured subspace. /// @@ -94,5 +93,4 @@ inline void calculateResiduals(FreeIndices size, } } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/EventData/detail/ParameterTraits.hpp b/Core/include/Acts/EventData/detail/ParameterTraits.hpp index f5e116c88b6..6252a474af2 100644 --- a/Core/include/Acts/EventData/detail/ParameterTraits.hpp +++ b/Core/include/Acts/EventData/detail/ParameterTraits.hpp @@ -14,8 +14,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// Traits class for an unrestricted parameter. struct UnrestrictedParameterTraits { @@ -172,5 +171,4 @@ struct ParametersTraitsImpl { template constexpr std::size_t kParametersSize = ParametersTraitsImpl::kSize; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/EventData/detail/covariance_helper.hpp b/Core/include/Acts/EventData/detail/covariance_helper.hpp index 4f6dbe6440b..acc549fcecf 100644 --- a/Core/include/Acts/EventData/detail/covariance_helper.hpp +++ b/Core/include/Acts/EventData/detail/covariance_helper.hpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// @brief check and correct covariance matrix /// /// @tparam CovMatrix_t The type of covariance matrix @@ -70,5 +69,4 @@ struct covariance_helper { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Material/detail/AverageMaterials.hpp b/Core/include/Acts/Material/detail/AverageMaterials.hpp index dfabeb61de7..5fec5819dc5 100644 --- a/Core/include/Acts/Material/detail/AverageMaterials.hpp +++ b/Core/include/Acts/Material/detail/AverageMaterials.hpp @@ -10,8 +10,7 @@ #include "Acts/Material/MaterialSlab.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// Compute the average properties for a combined slab of two materials. /// @@ -24,5 +23,4 @@ namespace detail { /// throughout the slab. MaterialSlab combineSlabs(const MaterialSlab& slab1, const MaterialSlab& slab2); -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Navigation/DetectorNavigator.hpp b/Core/include/Acts/Navigation/DetectorNavigator.hpp index 47d4955347b..894238be91b 100644 --- a/Core/include/Acts/Navigation/DetectorNavigator.hpp +++ b/Core/include/Acts/Navigation/DetectorNavigator.hpp @@ -29,8 +29,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorNavigator { public: @@ -439,5 +438,4 @@ class DetectorNavigator { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Navigation/DetectorVolumeFinders.hpp b/Core/include/Acts/Navigation/DetectorVolumeFinders.hpp index ebaecba4761..afd24ed0e11 100644 --- a/Core/include/Acts/Navigation/DetectorVolumeFinders.hpp +++ b/Core/include/Acts/Navigation/DetectorVolumeFinders.hpp @@ -20,8 +20,7 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { struct NoopFinder : public INavigationDelegate { inline void update(const GeometryContext& /*gctx*/, @@ -120,5 +119,4 @@ using IndexedDetectorVolumesImpl = IndexedUpdaterImpl; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Navigation/DetectorVolumeUpdaters.hpp b/Core/include/Acts/Navigation/DetectorVolumeUpdaters.hpp index 4f9a8cf2684..94da589eb11 100644 --- a/Core/include/Acts/Navigation/DetectorVolumeUpdaters.hpp +++ b/Core/include/Acts/Navigation/DetectorVolumeUpdaters.hpp @@ -18,8 +18,7 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; @@ -141,5 +140,4 @@ struct BoundVolumesGrid1Impl : public INavigationDelegate { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Navigation/MultiLayerSurfacesUpdater.hpp b/Core/include/Acts/Navigation/MultiLayerSurfacesUpdater.hpp index 8bea8df5568..787cad0f22d 100644 --- a/Core/include/Acts/Navigation/MultiLayerSurfacesUpdater.hpp +++ b/Core/include/Acts/Navigation/MultiLayerSurfacesUpdater.hpp @@ -17,8 +17,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { template class MultiLayerSurfacesUpdaterImpl : public INavigationDelegate { @@ -140,6 +139,4 @@ struct PathGridSurfacesGenerator { } }; -} // namespace Experimental - -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp b/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp index 5e5ea1068d1..89eebdc4b68 100644 --- a/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp +++ b/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp @@ -23,9 +23,7 @@ #include #include -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// Helper method to update the candidates (portals/surfaces), /// this can be called for initial surface/portal estimation, @@ -201,5 +199,4 @@ class ChainedUpdaterImpl : public INavigationDelegate { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Navigation/SurfaceCandidatesUpdaters.hpp b/Core/include/Acts/Navigation/SurfaceCandidatesUpdaters.hpp index 534170ec06e..3c707fcc731 100644 --- a/Core/include/Acts/Navigation/SurfaceCandidatesUpdaters.hpp +++ b/Core/include/Acts/Navigation/SurfaceCandidatesUpdaters.hpp @@ -22,8 +22,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { struct AllPortalsImpl : public INavigationDelegate { /// A ordered portal provider @@ -155,5 +154,4 @@ template class indexed_updator> using IndexedSurfacesAllPortalsImpl = ChainedUpdaterImpl>; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/Propagator/StepperConcept.hpp b/Core/include/Acts/Propagator/StepperConcept.hpp index d7e81502939..c62f3127406 100644 --- a/Core/include/Acts/Propagator/StepperConcept.hpp +++ b/Core/include/Acts/Propagator/StepperConcept.hpp @@ -21,8 +21,7 @@ namespace Acts { class Surface; -namespace Concepts { -namespace Stepper { +namespace Concepts::Stepper { template using state_t = typename T::State; @@ -214,8 +213,7 @@ constexpr bool MultiStepperStateConcept= require< }; // clang-format on -} // namespace Stepper -} // namespace Concepts +} // namespace Concepts::Stepper template constexpr bool StepperConcept = diff --git a/Core/include/Acts/Propagator/detail/Auctioneer.hpp b/Core/include/Acts/Propagator/detail/Auctioneer.hpp index 1f0fdce16df..e086526d327 100644 --- a/Core/include/Acts/Propagator/detail/Auctioneer.hpp +++ b/Core/include/Acts/Propagator/detail/Auctioneer.hpp @@ -11,8 +11,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// The StepperExtensionList allows to add an arbitrary number of step /// evaluation algorithms for the RKN4 evaluation. These can be categorised in /// two general types: @@ -106,5 +105,4 @@ struct HighestValidAuctioneer { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/CovarianceEngine.hpp b/Core/include/Acts/Propagator/detail/CovarianceEngine.hpp index 5f7af7a0cc1..1509402a04b 100644 --- a/Core/include/Acts/Propagator/detail/CovarianceEngine.hpp +++ b/Core/include/Acts/Propagator/detail/CovarianceEngine.hpp @@ -21,8 +21,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// @brief These functions perform the transport of a covariance matrix using /// given Jacobians. The required data is provided by the stepper object @@ -147,5 +146,4 @@ Result boundToBoundConversion( const GeometryContext& gctx, const BoundTrackParameters& boundParameters, const Surface& targetSurface, const Vector3& bField = Vector3::Zero()); -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/JacobianEngine.hpp b/Core/include/Acts/Propagator/detail/JacobianEngine.hpp index e6798262256..8b448cf83d6 100644 --- a/Core/include/Acts/Propagator/detail/JacobianEngine.hpp +++ b/Core/include/Acts/Propagator/detail/JacobianEngine.hpp @@ -15,8 +15,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Surfaces/Surface.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// @brief These functions perform the calculation of the Jacobians for the /// the covariance transport. This is a purely algebraic problem the @@ -213,5 +212,4 @@ void reinitializeJacobians(FreeMatrix& freeTransportJacobian, BoundToFreeMatrix& boundToFreeJacobian, const Vector3& direction); -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/LoopProtection.hpp b/Core/include/Acts/Propagator/detail/LoopProtection.hpp index c8170ce0976..1dd334a59a4 100644 --- a/Core/include/Acts/Propagator/detail/LoopProtection.hpp +++ b/Core/include/Acts/Propagator/detail/LoopProtection.hpp @@ -11,8 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Utilities/Logger.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// Estimate the loop protection limit template #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// @brief Struct to handle pointwise material interaction struct PointwiseMaterialInteraction { @@ -185,5 +184,4 @@ struct PointwiseMaterialInteraction { NoiseUpdateMode updateMode = addNoise) const; }; -} // namespace detail -} // end of namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp index d2f3a7ef2f1..fcfb42b9b39 100644 --- a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp +++ b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp @@ -17,8 +17,7 @@ #include "Acts/Utilities/Intersection.hpp" #include "Acts/Utilities/Logger.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// Update surface status - Single component /// @@ -83,5 +82,4 @@ void updateSingleStepSize(typename stepper_t::State& state, state.stepSize.update(stepSize, ConstrainedStep::actor, release); } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/VolumeMaterialInteraction.hpp b/Core/include/Acts/Propagator/detail/VolumeMaterialInteraction.hpp index 9101843e827..8fd72f38aa8 100644 --- a/Core/include/Acts/Propagator/detail/VolumeMaterialInteraction.hpp +++ b/Core/include/Acts/Propagator/detail/VolumeMaterialInteraction.hpp @@ -16,8 +16,7 @@ #include "Acts/Material/MaterialSlab.hpp" #include "Acts/Surfaces/Surface.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// @brief Struct to handle volume material interaction struct VolumeMaterialInteraction { @@ -124,5 +123,4 @@ struct VolumeMaterialInteraction { } }; -} // namespace detail -} // end of namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/abort_list_implementation.hpp b/Core/include/Acts/Propagator/detail/abort_list_implementation.hpp index dbbccb20317..5c4a7d5b959 100644 --- a/Core/include/Acts/Propagator/detail/abort_list_implementation.hpp +++ b/Core/include/Acts/Propagator/detail/abort_list_implementation.hpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { namespace { @@ -106,5 +105,4 @@ struct abort_list_impl<> { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Propagator/detail/action_list_implementation.hpp b/Core/include/Acts/Propagator/detail/action_list_implementation.hpp index 946b69264de..c58a62191cf 100644 --- a/Core/include/Acts/Propagator/detail/action_list_implementation.hpp +++ b/Core/include/Acts/Propagator/detail/action_list_implementation.hpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { namespace { @@ -94,5 +93,4 @@ struct action_list_impl<> { const navigator_t& /*navigator*/, Args&&... /*args*/) {} }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Seeding/HoughTransformUtils.hpp b/Core/include/Acts/Seeding/HoughTransformUtils.hpp index 87ae70a7d99..6b6872a74be 100644 --- a/Core/include/Acts/Seeding/HoughTransformUtils.hpp +++ b/Core/include/Acts/Seeding/HoughTransformUtils.hpp @@ -21,8 +21,7 @@ #include "HoughVectors.hpp" -namespace Acts { -namespace HoughTransformUtils { +namespace Acts::HoughTransformUtils { /// this type is responsible for encoding the parameters of our hough space using CoordType = double; @@ -370,7 +369,6 @@ class IslandsAroundMax { std::make_pair(0, 1), std::make_pair(1, 1)}; }; } // namespace PeakFinders -} // namespace HoughTransformUtils -} // namespace Acts +} // namespace Acts::HoughTransformUtils #include "HoughTransformUtils.ipp" diff --git a/Core/include/Acts/Seeding/InternalSpacePoint.hpp b/Core/include/Acts/Seeding/InternalSpacePoint.hpp index e859de79ef1..6609123bf29 100644 --- a/Core/include/Acts/Seeding/InternalSpacePoint.hpp +++ b/Core/include/Acts/Seeding/InternalSpacePoint.hpp @@ -88,4 +88,4 @@ template inline InternalSpacePoint::InternalSpacePoint( const InternalSpacePoint& sp) = default; -} // end of namespace Acts +} // namespace Acts diff --git a/Core/include/Acts/Surfaces/DiscSurface.hpp b/Core/include/Acts/Surfaces/DiscSurface.hpp index fb5846af363..bb28d5f9a53 100644 --- a/Core/include/Acts/Surfaces/DiscSurface.hpp +++ b/Core/include/Acts/Surfaces/DiscSurface.hpp @@ -337,4 +337,4 @@ class DiscSurface : public RegularSurface { ACTS_STATIC_CHECK_CONCEPT(RegularSurfaceConcept, DiscSurface); -} // end of namespace Acts +} // namespace Acts diff --git a/Core/include/Acts/Surfaces/PlaneSurface.hpp b/Core/include/Acts/Surfaces/PlaneSurface.hpp index 90c1441f1dd..9d850b791cf 100644 --- a/Core/include/Acts/Surfaces/PlaneSurface.hpp +++ b/Core/include/Acts/Surfaces/PlaneSurface.hpp @@ -236,4 +236,4 @@ class PlaneSurface : public RegularSurface { ACTS_STATIC_CHECK_CONCEPT(RegularSurfaceConcept, PlaneSurface); -} // end of namespace Acts +} // namespace Acts diff --git a/Core/include/Acts/Surfaces/detail/AlignmentHelper.hpp b/Core/include/Acts/Surfaces/detail/AlignmentHelper.hpp index 2dc3721c8ab..f69de328ae1 100644 --- a/Core/include/Acts/Surfaces/detail/AlignmentHelper.hpp +++ b/Core/include/Acts/Surfaces/detail/AlignmentHelper.hpp @@ -14,9 +14,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { // The container for derivative of local frame axis w.r.t. its // rotation parameters. The first element is for x axis, second for y axis and @@ -34,6 +32,4 @@ using RotationToAxes = /// rotation angles (extrinsic Euler angles) around global x/y/z axis RotationToAxes rotationToLocalAxesDerivative(const RotationMatrix3& rotation); -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Surfaces/detail/FacesHelper.hpp b/Core/include/Acts/Surfaces/detail/FacesHelper.hpp index 7438020a268..a9eaf763db6 100644 --- a/Core/include/Acts/Surfaces/detail/FacesHelper.hpp +++ b/Core/include/Acts/Surfaces/detail/FacesHelper.hpp @@ -15,9 +15,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { /// @brief Helper for writing out faces for polyhedron representation struct FacesHelper { @@ -83,6 +81,4 @@ struct FacesHelper { } }; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Surfaces/detail/IntersectionHelper2D.hpp b/Core/include/Acts/Surfaces/detail/IntersectionHelper2D.hpp index cba67c30267..125d1fc8bc3 100644 --- a/Core/include/Acts/Surfaces/detail/IntersectionHelper2D.hpp +++ b/Core/include/Acts/Surfaces/detail/IntersectionHelper2D.hpp @@ -13,8 +13,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { struct IntersectionHelper2D { /// Intersect two segments @@ -73,5 +72,4 @@ struct IntersectionHelper2D { }; // struct IntersectionHelper2D -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp b/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp index 32c6a8bf75d..a83cc6563c4 100644 --- a/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp +++ b/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp @@ -11,10 +11,8 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Utilities/Intersection.hpp" -namespace Acts { - /// @brief Helpers for planar surfaces that share the same maths -namespace PlanarHelper { +namespace Acts::PlanarHelper { /// Intersection with a planar surface /// @@ -46,5 +44,4 @@ inline Intersection3D intersect(const Transform3& transform, return Intersection3D::invalid(); } -} // namespace PlanarHelper -} // namespace Acts +} // namespace Acts::PlanarHelper diff --git a/Core/include/Acts/Surfaces/detail/VerticesHelper.hpp b/Core/include/Acts/Surfaces/detail/VerticesHelper.hpp index 3d0d0511da6..d9b06aaadd4 100644 --- a/Core/include/Acts/Surfaces/detail/VerticesHelper.hpp +++ b/Core/include/Acts/Surfaces/detail/VerticesHelper.hpp @@ -16,10 +16,8 @@ #include #include -namespace Acts { -namespace detail { /// Helper methods for polyhedron vertices drawing and inside/outside checks. -namespace VerticesHelper { +namespace Acts::detail::VerticesHelper { /// A method that inserts the cartesian extrema points and segments /// a curved segment into sub segments @@ -170,6 +168,4 @@ bool isInsideRectangle(const vertex_t& point, const vertex_t& lowerLeft, bool onHyperPlane(const std::vector& vertices, ActsScalar tolerance = s_onSurfaceTolerance); -} // namespace VerticesHelper -} // namespace detail -} // namespace Acts +} // namespace Acts::detail::VerticesHelper diff --git a/Core/include/Acts/TrackFinding/SourceLinkAccessorConcept.hpp b/Core/include/Acts/TrackFinding/SourceLinkAccessorConcept.hpp index 72bffeb6f8f..e20a63634cf 100644 --- a/Core/include/Acts/TrackFinding/SourceLinkAccessorConcept.hpp +++ b/Core/include/Acts/TrackFinding/SourceLinkAccessorConcept.hpp @@ -16,8 +16,7 @@ namespace Acts { class Surface; -namespace Concepts { -namespace SourceLinkAccessor { +namespace Concepts::SourceLinkAccessor { template using container_t = typename T::Container; @@ -69,8 +68,7 @@ METHOD_TRAIT(at_t, at); at_exists>; }; // clang-format on -} // namespace SourceLinkAccessor -} // namespace Concepts +} // namespace Concepts::SourceLinkAccessor template constexpr bool SourceLinkAccessorConcept = diff --git a/Core/include/Acts/TrackFinding/detail/AmbiguityTrackClustering.hpp b/Core/include/Acts/TrackFinding/detail/AmbiguityTrackClustering.hpp index fb2c11f21ba..14a30bb2dd3 100644 --- a/Core/include/Acts/TrackFinding/detail/AmbiguityTrackClustering.hpp +++ b/Core/include/Acts/TrackFinding/detail/AmbiguityTrackClustering.hpp @@ -13,8 +13,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// Clusterise tracks based on shared hits /// @@ -25,5 +24,4 @@ clusterDuplicateTracks( const std::multimap>>& trackMap); -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index cd446c87ef0..b7950994766 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -43,8 +43,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { namespace Gx2fConstants { constexpr std::string_view gx2fnUpdateColumn = "Gx2fnUpdateColumn"; @@ -847,5 +846,4 @@ class Gx2Fitter { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp index 52aed8456a4..f84505769a6 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitterError.hpp @@ -11,8 +11,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { enum class GlobalChiSquareFitterError { // ensure all values are non-zero @@ -24,8 +23,7 @@ enum class GlobalChiSquareFitterError { std::error_code make_error_code( Acts::Experimental::GlobalChiSquareFitterError e); -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental namespace std { // register with STL diff --git a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp index 4261aebf42f..814bdeab3fb 100644 --- a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp +++ b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp @@ -29,8 +29,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { template struct GsfResult { @@ -798,5 +797,4 @@ struct GsfActor { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/TrackFitting/detail/KalmanGlobalCovariance.hpp b/Core/include/Acts/TrackFitting/detail/KalmanGlobalCovariance.hpp index 47b6dba0fc0..b5c9ded721f 100644 --- a/Core/include/Acts/TrackFitting/detail/KalmanGlobalCovariance.hpp +++ b/Core/include/Acts/TrackFitting/detail/KalmanGlobalCovariance.hpp @@ -17,8 +17,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// Calculate the global track parameters covariance for a smoothed trajectory /// stored in MultiTrajecty based on formulas at Journal of Physics: Conference @@ -99,5 +98,4 @@ globalTrackParametersCovariance(const traj_t& multiTraj, return std::make_pair(fullGlobalTrackParamsCov, stateRowIndices); } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/TrackFitting/detail/KalmanUpdateHelpers.hpp b/Core/include/Acts/TrackFitting/detail/KalmanUpdateHelpers.hpp index 22d215ab93f..5b7cc8785ef 100644 --- a/Core/include/Acts/TrackFitting/detail/KalmanUpdateHelpers.hpp +++ b/Core/include/Acts/TrackFitting/detail/KalmanUpdateHelpers.hpp @@ -15,8 +15,7 @@ #include "Acts/Utilities/CalibrationContext.hpp" #include "Acts/Utilities/Result.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { /// This function encapsulates the Kalman update performed on a MultiTrajectory /// for a single source link. @@ -190,5 +189,4 @@ auto kalmanHandleNoMeasurement( return trackStateProxy; } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/BinnedArrayXD.hpp b/Core/include/Acts/Utilities/BinnedArrayXD.hpp index 7bd2777da93..4b78b1026bc 100644 --- a/Core/include/Acts/Utilities/BinnedArrayXD.hpp +++ b/Core/include/Acts/Utilities/BinnedArrayXD.hpp @@ -196,4 +196,4 @@ class BinnedArrayXD : public BinnedArray { /// binUtility for retrieving and filling the Array std::unique_ptr m_binUtility; }; -} // end of namespace Acts +} // namespace Acts diff --git a/Core/include/Acts/Utilities/GridAxisGenerators.hpp b/Core/include/Acts/Utilities/GridAxisGenerators.hpp index 9aaf9cc5693..74bd488c68d 100644 --- a/Core/include/Acts/Utilities/GridAxisGenerators.hpp +++ b/Core/include/Acts/Utilities/GridAxisGenerators.hpp @@ -16,16 +16,13 @@ #include #include -namespace Acts { - /// Axis generators are used to allow defining different grid types /// for indexed geometry objects. /// /// The call operator() API allows to plug axis generators into /// dedicated code snippets and create fitting axis types on the fly /// which then turn into concrete Grid types. -/// -namespace GridAxisGenerators { +namespace Acts::GridAxisGenerators { /// @brief Templated base generator for equidistant axis as a tuple - 1D /// @@ -318,5 +315,4 @@ using PossibleAxes = VarOpenVarBound, VarOpenVarOpen, VarOpenVarClosed, VarClosedVarBound, VarClosedVarOpen, VarClosedVarClosed>; -} // namespace GridAxisGenerators -} // namespace Acts +} // namespace Acts::GridAxisGenerators diff --git a/Core/include/Acts/Utilities/TransformRange.hpp b/Core/include/Acts/Utilities/TransformRange.hpp index d4773cc3722..2c64fc17735 100644 --- a/Core/include/Acts/Utilities/TransformRange.hpp +++ b/Core/include/Acts/Utilities/TransformRange.hpp @@ -12,9 +12,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { template struct TransformRangeIterator; @@ -224,5 +222,4 @@ struct DotGet { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/VectorHelpers.hpp b/Core/include/Acts/Utilities/VectorHelpers.hpp index cd326659511..84c0e6791da 100644 --- a/Core/include/Acts/Utilities/VectorHelpers.hpp +++ b/Core/include/Acts/Utilities/VectorHelpers.hpp @@ -19,8 +19,7 @@ #include "Eigen/Dense" -namespace Acts { -namespace VectorHelpers { +namespace Acts::VectorHelpers { namespace detail { template @@ -235,5 +234,4 @@ inline std::pair incidentAngles( return {phi, theta}; } -} // namespace VectorHelpers -} // namespace Acts +} // namespace Acts::VectorHelpers diff --git a/Core/include/Acts/Utilities/detail/Axis.hpp b/Core/include/Acts/Utilities/detail/Axis.hpp index be9e22f9edd..c987e3c030b 100644 --- a/Core/include/Acts/Utilities/detail/Axis.hpp +++ b/Core/include/Acts/Utilities/detail/Axis.hpp @@ -15,9 +15,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { // This object can be iterated to produce up to two sequences of integer // indices, corresponding to the half-open integer ranges [begin1, end1[ and @@ -660,6 +658,4 @@ class Axis final : public IAxis { /// vector of bin edges (sorted in ascending order) std::vector m_binEdges; }; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/AxisFwd.hpp b/Core/include/Acts/Utilities/detail/AxisFwd.hpp index d5d8dfa4296..72ed864d565 100644 --- a/Core/include/Acts/Utilities/detail/AxisFwd.hpp +++ b/Core/include/Acts/Utilities/detail/AxisFwd.hpp @@ -8,8 +8,7 @@ #pragma once -namespace Acts { -namespace detail { +namespace Acts::detail { /// Enum which determines how the axis handle its outer boundaries /// possible values values /// - Open is the default behaviour: out of bounds @@ -40,5 +39,4 @@ class Axis; using EquidistantAxis = Axis; using VariableAxis = Axis; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/Extendable.hpp b/Core/include/Acts/Utilities/detail/Extendable.hpp index ef511e76156..4ae1912b6b4 100644 --- a/Core/include/Acts/Utilities/detail/Extendable.hpp +++ b/Core/include/Acts/Utilities/detail/Extendable.hpp @@ -13,9 +13,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { /// This sctruct defines an extendable std::tuple /// @@ -112,5 +110,4 @@ struct Extendable { std::tuple m_extensions; }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/all_of.hpp b/Core/include/Acts/Utilities/detail/MPL/all_of.hpp index 87b456c6cbb..1553cb4f3f3 100644 --- a/Core/include/Acts/Utilities/detail/MPL/all_of.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/all_of.hpp @@ -9,9 +9,7 @@ #pragma once #include -namespace Acts { - -namespace detail { +namespace Acts::detail { namespace { // clang-format off @@ -28,6 +26,4 @@ namespace { template constexpr bool all_of_v = all_of::value; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/any_of.hpp b/Core/include/Acts/Utilities/detail/MPL/any_of.hpp index 313012a76f0..f56a669cfef 100644 --- a/Core/include/Acts/Utilities/detail/MPL/any_of.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/any_of.hpp @@ -9,9 +9,7 @@ #pragma once #include -namespace Acts { - -namespace detail { +namespace Acts::detail { namespace { // clang-format off @@ -28,6 +26,4 @@ namespace { template constexpr bool any_of_v = any_of::value; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/are_sorted.hpp b/Core/include/Acts/Utilities/detail/MPL/are_sorted.hpp index 4d1be61a0ea..e45cea4d3e5 100644 --- a/Core/include/Acts/Utilities/detail/MPL/are_sorted.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/are_sorted.hpp @@ -7,9 +7,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. #pragma once -namespace Acts { -/// @cond detail -namespace detail { +namespace Acts::detail { /** * @brief check whether integral values are sorted * @@ -60,6 +58,4 @@ struct are_sorted { enum { value = (a >= b && are_sorted::value) }; }; /// @endcond -} // namespace detail -/// @endcond -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/are_within.hpp b/Core/include/Acts/Utilities/detail/MPL/are_within.hpp index 5c0a6e072cd..ab01b96d259 100644 --- a/Core/include/Acts/Utilities/detail/MPL/are_within.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/are_within.hpp @@ -7,9 +7,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. #pragma once -namespace Acts { -/// @cond detail -namespace detail { +namespace Acts::detail { /** * @brief check whether integral values are within a given range * @@ -44,6 +42,4 @@ struct are_within { }; }; /// @endcond -} // namespace detail -/// @endcond -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/at_index.hpp b/Core/include/Acts/Utilities/detail/MPL/at_index.hpp index e45bf816a48..c1e88111bb3 100644 --- a/Core/include/Acts/Utilities/detail/MPL/at_index.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/at_index.hpp @@ -7,9 +7,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. #pragma once -namespace Acts { -/// @cond detail -namespace detail { +namespace Acts::detail { /** * @brief return integral constant at position in template parameter pack * @@ -35,6 +33,4 @@ struct at_index { static constexpr T value = next; }; /// @endcond -} // namespace detail -/// @endcond -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/has_duplicates.hpp b/Core/include/Acts/Utilities/detail/MPL/has_duplicates.hpp index 9554ce9c4b6..41b4b80d876 100644 --- a/Core/include/Acts/Utilities/detail/MPL/has_duplicates.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/has_duplicates.hpp @@ -7,9 +7,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. #pragma once -namespace Acts { - -namespace detail { +namespace Acts::detail { namespace { template @@ -43,6 +41,4 @@ struct has_duplicates { template constexpr bool has_duplicates_v = has_duplicates::value; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/MPL/type_collector.hpp b/Core/include/Acts/Utilities/detail/MPL/type_collector.hpp index 42844ea8c92..3cfcf603f81 100644 --- a/Core/include/Acts/Utilities/detail/MPL/type_collector.hpp +++ b/Core/include/Acts/Utilities/detail/MPL/type_collector.hpp @@ -11,9 +11,7 @@ #include #include -namespace Acts { - -namespace detail { +namespace Acts::detail { namespace hana = boost::hana; /** @@ -105,6 +103,4 @@ constexpr bool has_action_type_v = */ template using action_type_t = typename action_type_extractor::extractor_impl; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/RealQuadraticEquation.hpp b/Core/include/Acts/Utilities/detail/RealQuadraticEquation.hpp index ed81028d5c3..c401d8f1549 100644 --- a/Core/include/Acts/Utilities/detail/RealQuadraticEquation.hpp +++ b/Core/include/Acts/Utilities/detail/RealQuadraticEquation.hpp @@ -14,8 +14,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// @struct RealQuadradicEquation /// Mathematic struct for solving real quadratic equations @@ -66,5 +65,4 @@ struct RealQuadraticEquation { } }; -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/Subspace.hpp b/Core/include/Acts/Utilities/detail/Subspace.hpp index e6985c024ae..a9db25348e8 100644 --- a/Core/include/Acts/Utilities/detail/Subspace.hpp +++ b/Core/include/Acts/Utilities/detail/Subspace.hpp @@ -15,8 +15,7 @@ #include #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// @defgroup subspace Linear subspace definitions /// @@ -204,5 +203,4 @@ class FixedSizeSubspace { /// @} -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/grid_helper.hpp b/Core/include/Acts/Utilities/detail/grid_helper.hpp index c3cc2d82883..f296baaff97 100644 --- a/Core/include/Acts/Utilities/detail/grid_helper.hpp +++ b/Core/include/Acts/Utilities/detail/grid_helper.hpp @@ -19,9 +19,7 @@ #include -namespace Acts { - -namespace detail { +namespace Acts::detail { template constexpr T ipow(T num, unsigned int pow) { @@ -887,6 +885,4 @@ struct grid_helper { } }; -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/interpolation_impl.hpp b/Core/include/Acts/Utilities/detail/interpolation_impl.hpp index 57890f3a1f5..9b36515421d 100644 --- a/Core/include/Acts/Utilities/detail/interpolation_impl.hpp +++ b/Core/include/Acts/Utilities/detail/interpolation_impl.hpp @@ -10,9 +10,7 @@ #include -namespace Acts { - -namespace detail { +namespace Acts::detail { /// @brief check types for requirements needed by interpolation /// @@ -130,6 +128,4 @@ struct interpolate_impl { } }; /// @endcond -} // namespace detail - -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/include/Acts/Utilities/detail/periodic.hpp b/Core/include/Acts/Utilities/detail/periodic.hpp index f87454dd3bc..b9badb7a123 100644 --- a/Core/include/Acts/Utilities/detail/periodic.hpp +++ b/Core/include/Acts/Utilities/detail/periodic.hpp @@ -10,8 +10,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { /// Wrap a periodic value back into the nominal range. template @@ -91,5 +90,4 @@ inline std::pair normalizePhiTheta(T phi, T theta) { return {radian_sym(phi), theta}; } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/src/Detector/CuboidalContainerBuilder.cpp b/Core/src/Detector/CuboidalContainerBuilder.cpp index 7f4fb3d5696..7c403d6b55d 100644 --- a/Core/src/Detector/CuboidalContainerBuilder.cpp +++ b/Core/src/Detector/CuboidalContainerBuilder.cpp @@ -21,11 +21,9 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental Acts::Experimental::CuboidalContainerBuilder::CuboidalContainerBuilder( const Acts::Experimental::CuboidalContainerBuilder::Config& cfg, diff --git a/Core/src/Detector/CylindricalContainerBuilder.cpp b/Core/src/Detector/CylindricalContainerBuilder.cpp index f9b6e5d1f46..c115bcfc153 100644 --- a/Core/src/Detector/CylindricalContainerBuilder.cpp +++ b/Core/src/Detector/CylindricalContainerBuilder.cpp @@ -23,11 +23,9 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental namespace { diff --git a/Core/src/Detector/LayerStructureBuilder.cpp b/Core/src/Detector/LayerStructureBuilder.cpp index 968b9307a1d..09a9d923c30 100644 --- a/Core/src/Detector/LayerStructureBuilder.cpp +++ b/Core/src/Detector/LayerStructureBuilder.cpp @@ -31,11 +31,9 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental namespace { diff --git a/Core/src/Propagator/detail/PointwiseMaterialInteraction.cpp b/Core/src/Propagator/detail/PointwiseMaterialInteraction.cpp index e60b849edd6..8314003111e 100644 --- a/Core/src/Propagator/detail/PointwiseMaterialInteraction.cpp +++ b/Core/src/Propagator/detail/PointwiseMaterialInteraction.cpp @@ -10,8 +10,7 @@ #include "Acts/Material/Interactions.hpp" -namespace Acts { -namespace detail { +namespace Acts::detail { void PointwiseMaterialInteraction::evaluatePointwiseMaterialInteraction( bool multipleScattering, bool energyLoss) { @@ -52,5 +51,4 @@ double PointwiseMaterialInteraction::updateVariance( return std::max(0., variance + std::copysign(change, updateMode)); } -} // namespace detail -} // end of namespace Acts +} // namespace Acts::detail diff --git a/Core/src/TrackFitting/GsfUtils.cpp b/Core/src/TrackFitting/GsfUtils.cpp index 02f790d261a..13043c603e2 100644 --- a/Core/src/TrackFitting/GsfUtils.cpp +++ b/Core/src/TrackFitting/GsfUtils.cpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace detail { +namespace Acts::detail { using TrackStateTraits = TrackStateTraits; @@ -36,5 +35,4 @@ ActsScalar calculateDeterminant( .determinant(); }); } -} // namespace detail -} // namespace Acts +} // namespace Acts::detail diff --git a/Core/src/Visualization/GeometryView3D.cpp b/Core/src/Visualization/GeometryView3D.cpp index 0388b826da6..26710a4800a 100644 --- a/Core/src/Visualization/GeometryView3D.cpp +++ b/Core/src/Visualization/GeometryView3D.cpp @@ -64,15 +64,13 @@ std::string getWorkingDirectory() { } // namespace -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { ViewConfig s_viewSensitive = ViewConfig({0, 180, 240}); ViewConfig s_viewPassive = ViewConfig({240, 280, 0}); ViewConfig s_viewVolume = ViewConfig({220, 220, 0}); ViewConfig s_viewGrid = ViewConfig({220, 0, 0}); ViewConfig s_viewLine = ViewConfig({0, 0, 220}); -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental void Acts::GeometryView3D::drawPolyhedron(IVisualization3D& helper, const Polyhedron& polyhedron, diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp index a4ba5600edd..94023637068 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp @@ -21,8 +21,7 @@ #include #include -namespace ActsExamples { -namespace Digitization { +namespace ActsExamples::Digitization { /// Exact smearing of a single parameter. /// @@ -205,5 +204,4 @@ struct Digital { } }; -} // namespace Digitization -} // namespace ActsExamples +} // namespace ActsExamples::Digitization diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp index a15d73e7fea..f9cd28eae87 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp @@ -16,8 +16,7 @@ class G4VPhysicalVolume; class G4LogicalVolume; -namespace ActsExamples { -namespace Telescope { +namespace ActsExamples::Telescope { class TelescopeG4DetectorConstruction final : public G4VUserDetectorConstruction { @@ -43,5 +42,4 @@ class TelescopeG4DetectorConstructionFactory final TelescopeDetector::Config m_cfg; }; -} // namespace Telescope -} // namespace ActsExamples +} // namespace ActsExamples::Telescope diff --git a/Examples/Algorithms/Geant4HepMC/src/PrimaryGeneratorAction.hpp b/Examples/Algorithms/Geant4HepMC/src/PrimaryGeneratorAction.hpp index c6e95ca9d88..aca41fb7e37 100644 --- a/Examples/Algorithms/Geant4HepMC/src/PrimaryGeneratorAction.hpp +++ b/Examples/Algorithms/Geant4HepMC/src/PrimaryGeneratorAction.hpp @@ -21,9 +21,7 @@ class G4ParticleGun; class G4Event; -namespace ActsExamples { - -namespace Geant4::HepMC3 { +namespace ActsExamples::Geant4::HepMC3 { /// The PrimaryGeneratorAction is the implementation of the Geant4 /// class G4VUserPrimaryGeneratorAction. It generates a random direction @@ -53,6 +51,5 @@ class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { /// The Geant4 particle table G4ParticleTable* m_particleTable; }; -} // namespace Geant4::HepMC3 -} // namespace ActsExamples +} // namespace ActsExamples::Geant4::HepMC3 diff --git a/Examples/Algorithms/Geometry/include/ActsExamples/Geometry/VolumeAssociationTest.hpp b/Examples/Algorithms/Geometry/include/ActsExamples/Geometry/VolumeAssociationTest.hpp index 70cf5fa7617..897415af846 100644 --- a/Examples/Algorithms/Geometry/include/ActsExamples/Geometry/VolumeAssociationTest.hpp +++ b/Examples/Algorithms/Geometry/include/ActsExamples/Geometry/VolumeAssociationTest.hpp @@ -12,11 +12,9 @@ #include "ActsExamples/Framework/ProcessCode.hpp" #include "ActsExamples/Framework/RandomNumbers.hpp" -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class Detector; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental namespace ActsExamples { diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp index 57786bea284..f158d736f61 100644 --- a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/DefaultHoughFunctions.hpp @@ -24,8 +24,7 @@ template <> struct is_error_code_enum : std::true_type {}; } // namespace std -namespace ActsExamples { -namespace DefaultHoughFunctions { +namespace ActsExamples::DefaultHoughFunctions { using ResultDouble = Acts::Result; using ResultBool = Acts::Result; using ResultUnsigned = Acts::Result; @@ -124,5 +123,4 @@ ResultBool inSliceDefault(double z, unsigned layer, int slice) { } } } -} // namespace DefaultHoughFunctions -} // namespace ActsExamples +} // namespace ActsExamples::DefaultHoughFunctions diff --git a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/AlignmentDecorator.hpp b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/AlignmentDecorator.hpp index 16b3af92f45..379ff8d6868 100644 --- a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/AlignmentDecorator.hpp +++ b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/AlignmentDecorator.hpp @@ -19,9 +19,7 @@ #include #include -namespace ActsExamples { - -namespace Contextual { +namespace ActsExamples::Contextual { /// @brief A mockup service that rotates the modules in a /// simple tracking geometry @@ -87,5 +85,4 @@ class AlignmentDecorator : public IContextDecorator { } } }; -} // namespace Contextual -} // namespace ActsExamples +} // namespace ActsExamples::Contextual diff --git a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/ExternallyAlignedDetectorElement.hpp b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/ExternallyAlignedDetectorElement.hpp index c7c2a56f045..a29721521d1 100644 --- a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/ExternallyAlignedDetectorElement.hpp +++ b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/ExternallyAlignedDetectorElement.hpp @@ -18,9 +18,7 @@ #include -namespace ActsExamples { - -namespace Contextual { +namespace ActsExamples::Contextual { /// @class ExternallyAlignedDetectorElement extends GenericDetectorElement /// @@ -84,5 +82,4 @@ inline const Acts::Transform3& ExternallyAlignedDetectorElement::transform( return alignContext.alignmentStore->transforms[idValue]; } -} // end of namespace Contextual -} // end of namespace ActsExamples +} // namespace ActsExamples::Contextual diff --git a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/InternallyAlignedDetectorElement.hpp b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/InternallyAlignedDetectorElement.hpp index a1e1908dd9c..23ac592ae98 100644 --- a/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/InternallyAlignedDetectorElement.hpp +++ b/Examples/Detectors/ContextualDetector/include/ActsExamples/ContextualDetector/InternallyAlignedDetectorElement.hpp @@ -21,9 +21,7 @@ #include #include -namespace ActsExamples { - -namespace Contextual { +namespace ActsExamples::Contextual { /// @class InternallyAlignedDetectorElement extends GenericDetectorElement /// @@ -121,5 +119,4 @@ inline void InternallyAlignedDetectorElement::clearAlignedTransform( } } -} // namespace Contextual -} // end of namespace ActsExamples +} // namespace ActsExamples::Contextual diff --git a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetector.hpp b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetector.hpp index bb2b5a3207d..bda365d6df9 100644 --- a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetector.hpp +++ b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetector.hpp @@ -35,8 +35,7 @@ namespace ActsExamples { class IContextDecorator; } // namespace ActsExamples -namespace ActsExamples { -namespace DD4hep { +namespace ActsExamples::DD4hep { struct DD4hepDetector { /// @brief The context decorators @@ -93,5 +92,4 @@ struct DD4hepDetector { std::shared_ptr field() const; }; -} // namespace DD4hep -} // namespace ActsExamples +} // namespace ActsExamples::DD4hep diff --git a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetectorHelper.hpp b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetectorHelper.hpp index 2bdcba266cb..69619eaf3ca 100644 --- a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetectorHelper.hpp +++ b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepDetectorHelper.hpp @@ -104,8 +104,7 @@ class DigitizationModule; /// created for this DetElement. /// @endcode -namespace ActsExamples { -namespace DD4hep { +namespace ActsExamples::DD4hep { struct DD4hepDetectorHelper { /// Global method to build an Acts::DigitizationModule with rectangular @@ -138,5 +137,4 @@ struct DD4hepDetectorHelper { double thickness, const dd4hep::Segmentation& segmentation); }; -} // end of namespace DD4hep -} // end of namespace ActsExamples +} // namespace ActsExamples::DD4hep diff --git a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepGeometryService.hpp b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepGeometryService.hpp index 2eed6323751..25415977e2f 100644 --- a/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepGeometryService.hpp +++ b/Examples/Detectors/DD4hepDetector/include/ActsExamples/DD4hepDetector/DD4hepGeometryService.hpp @@ -35,8 +35,7 @@ namespace dd4hep { class Detector; } // namespace dd4hep -namespace ActsExamples { -namespace DD4hep { +namespace ActsExamples::DD4hep { void sortFCChhDetElements(std::vector& det); @@ -130,5 +129,4 @@ class DD4hepGeometryService { std::unique_ptr m_logger; }; -} // namespace DD4hep -} // namespace ActsExamples +} // namespace ActsExamples::DD4hep diff --git a/Examples/Detectors/DD4hepDetector/src/DD4hepDetector.cpp b/Examples/Detectors/DD4hepDetector/src/DD4hepDetector.cpp index 6ff5172e77c..919ff0668bc 100644 --- a/Examples/Detectors/DD4hepDetector/src/DD4hepDetector.cpp +++ b/Examples/Detectors/DD4hepDetector/src/DD4hepDetector.cpp @@ -23,8 +23,7 @@ #include #include -namespace ActsExamples { -namespace DD4hep { +namespace ActsExamples::DD4hep { DD4hepDetector::DD4hepDetector( std::shared_ptr _geometryService) @@ -82,5 +81,4 @@ std::shared_ptr DD4hepDetector::field() const { return std::make_shared(detector.field()); } -} // namespace DD4hep -} // namespace ActsExamples +} // namespace ActsExamples::DD4hep diff --git a/Examples/Detectors/DD4hepDetector/src/DetUtils.cpp b/Examples/Detectors/DD4hepDetector/src/DetUtils.cpp index abbad9085b5..42c2563d3d1 100644 --- a/Examples/Detectors/DD4hepDetector/src/DetUtils.cpp +++ b/Examples/Detectors/DD4hepDetector/src/DetUtils.cpp @@ -20,8 +20,7 @@ #include #include -namespace det { -namespace utils { +namespace det::utils { std::shared_ptr rectangleDigiModuleXZ( double halflengthX, double halflengthZ, double thickness, @@ -179,5 +178,4 @@ double getAttrValueWithFallback(const dd4hep::xml::Component& node, return defaultValue; } } -} // namespace utils -} // namespace det +} // namespace det::utils diff --git a/Examples/Detectors/DD4hepDetector/src/DetUtils.h b/Examples/Detectors/DD4hepDetector/src/DetUtils.h index 3b218829cd7..e29d379172c 100644 --- a/Examples/Detectors/DD4hepDetector/src/DetUtils.h +++ b/Examples/Detectors/DD4hepDetector/src/DetUtils.h @@ -28,8 +28,7 @@ class DigitizationModule; given value e.g. returns when called with (detector, "layer", "name", "1") */ -namespace det { -namespace utils { +namespace det::utils { /// Global method to build an Acts::DigitizationModule with rectangular /// segmentation. @@ -106,5 +105,4 @@ dd4hep::xml::Component getNodeByStrAttr(const dd4hep::xml::Handle_t& mother, double getAttrValueWithFallback(const dd4hep::xml::Component& node, const std::string& attrName, const double& defaultValue); -} // namespace utils -} // namespace det +} // namespace det::utils diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp index cf713ba916a..bdb82d6e84b 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp @@ -48,8 +48,7 @@ class IMaterialDecorator; class ISurfaceMaterial; } // namespace Acts -namespace ActsExamples { -namespace Generic { +namespace ActsExamples::Generic { /// Helper method for positioning /// @param radius is the cylinder radius @@ -835,5 +834,4 @@ std::unique_ptr buildDetector( return trackingGeometry; } -} // end of namespace Generic -} // end of namespace ActsExamples +} // namespace ActsExamples::Generic diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetector.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetector.hpp index a7f48bf2f6e..0279b91efef 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetector.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetector.hpp @@ -24,11 +24,9 @@ namespace ActsExamples { class IContextDecorator; } // namespace ActsExamples -namespace ActsExamples { -namespace Generic { +namespace ActsExamples::Generic { class GenericDetectorElement; -} -} // namespace ActsExamples +} // namespace ActsExamples::Generic struct GenericDetector { using DetectorElement = ActsExamples::Generic::GenericDetectorElement; diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetectorElement.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetectorElement.hpp index c222c77b4ec..eadd5e59eff 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetectorElement.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/GenericDetectorElement.hpp @@ -25,9 +25,7 @@ class ISurfaceMaterial; class DigitizationModule; } // namespace Acts -namespace ActsExamples { - -namespace Generic { +namespace ActsExamples::Generic { /// @class GenericDetectorElement /// @@ -151,6 +149,4 @@ ActsExamples::Generic::GenericDetectorElement::digitizationModule() const { return m_digitizationModule; } -} // end of namespace Generic - -} // end of namespace ActsExamples +} // namespace ActsExamples::Generic diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/LayerBuilderT.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/LayerBuilderT.hpp index 633834be53d..c317a9437e7 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/LayerBuilderT.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/LayerBuilderT.hpp @@ -26,8 +26,7 @@ #include -namespace ActsExamples { -namespace Generic { +namespace ActsExamples::Generic { using Acts::VectorHelpers::eta; using Acts::VectorHelpers::perp; @@ -243,5 +242,4 @@ LayerBuilderT::constructEndcapLayers( return eLayers; } -} // end of namespace Generic -} // end of namespace ActsExamples +} // namespace ActsExamples::Generic diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp index 257279df0dd..cc266f15c9c 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp @@ -35,9 +35,7 @@ class Surface; class DetecorElementBase; } // namespace Acts -namespace ActsExamples { - -namespace Generic { +namespace ActsExamples::Generic { using Acts::VectorHelpers::eta; using Acts::VectorHelpers::perp; @@ -579,5 +577,4 @@ ProtoLayerCreatorT::createProtoLayers( return epLayers; } -} // end of namespace Generic -} // end of namespace ActsExamples +} // namespace ActsExamples::Generic diff --git a/Examples/Detectors/GenericDetector/src/BuildGenericDetector.cpp b/Examples/Detectors/GenericDetector/src/BuildGenericDetector.cpp index b1c34e045d7..de056aee602 100644 --- a/Examples/Detectors/GenericDetector/src/BuildGenericDetector.cpp +++ b/Examples/Detectors/GenericDetector/src/BuildGenericDetector.cpp @@ -10,9 +10,7 @@ #include -namespace ActsExamples { - -namespace Generic { +namespace ActsExamples::Generic { /// helper method for cylinder std::vector modulePositionsCylinder( @@ -130,6 +128,4 @@ std::vector modulePositionsRing(double z, double radius, return rPositions; } -} // end of namespace Generic - -} // end of namespace ActsExamples +} // namespace ActsExamples::Generic diff --git a/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp b/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp index 65bfe27dc9e..69e5644e557 100644 --- a/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp +++ b/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp @@ -24,8 +24,7 @@ #include #include -namespace ActsExamples { -namespace detail { +namespace ActsExamples::detail { using InterpolatedMagneticField2 = Acts::InterpolatedBFieldMap< Acts::Grid>; -} // namespace detail - -} // namespace ActsExamples +} // namespace ActsExamples::detail diff --git a/Examples/Detectors/MuonSpectrometerMockupDetector/include/ActsExamples/MuonSpectrometerMockupDetector/MockupSectorBuilder.hpp b/Examples/Detectors/MuonSpectrometerMockupDetector/include/ActsExamples/MuonSpectrometerMockupDetector/MockupSectorBuilder.hpp index 4b1e98d5a6d..8e0b37179f2 100644 --- a/Examples/Detectors/MuonSpectrometerMockupDetector/include/ActsExamples/MuonSpectrometerMockupDetector/MockupSectorBuilder.hpp +++ b/Examples/Detectors/MuonSpectrometerMockupDetector/include/ActsExamples/MuonSpectrometerMockupDetector/MockupSectorBuilder.hpp @@ -18,11 +18,9 @@ class G4VPhysicalVolume; -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental namespace ActsExamples { diff --git a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp index d54a75b941d..34656cc0a32 100644 --- a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp +++ b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp @@ -21,8 +21,7 @@ namespace Acts { class TrackingGeometry; } // namespace Acts -namespace ActsExamples { -namespace Telescope { +namespace ActsExamples::Telescope { /// The telescope detector surface type enum class TelescopeSurfaceType { @@ -55,5 +54,4 @@ std::unique_ptr buildDetector( double thickness, TelescopeSurfaceType surfaceType, Acts::BinningValue binValue = Acts::BinningValue::binZ); -} // end of namespace Telescope -} // end of namespace ActsExamples +} // namespace ActsExamples::Telescope diff --git a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp index e1d94db9604..19bb2b700d1 100644 --- a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp +++ b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp @@ -28,8 +28,7 @@ namespace ActsExamples { class IContextDecorator; } // namespace ActsExamples -namespace ActsExamples { -namespace Telescope { +namespace ActsExamples::Telescope { class TelescopeDetectorElement; class TelescopeG4DetectorConstruction; @@ -62,5 +61,4 @@ struct TelescopeDetector { const std::shared_ptr& mdecorator); }; -} // namespace Telescope -} // namespace ActsExamples +} // namespace ActsExamples::Telescope diff --git a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetectorElement.hpp b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetectorElement.hpp index 95af46fb643..e56bbf98465 100644 --- a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetectorElement.hpp +++ b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetectorElement.hpp @@ -24,8 +24,7 @@ class DiscBounds; class ISurfaceMaterial; } // namespace Acts -namespace ActsExamples { -namespace Telescope { +namespace ActsExamples::Telescope { /// @class TelescopeDetectorElement /// @@ -160,5 +159,4 @@ TelescopeDetectorElement::alignedTransforms() const { return m_alignedTransforms; } -} // namespace Telescope -} // namespace ActsExamples +} // namespace ActsExamples::Telescope diff --git a/Examples/Framework/include/ActsExamples/Utilities/Helpers.hpp b/Examples/Framework/include/ActsExamples/Utilities/Helpers.hpp index 85d152c2b71..e57c650c365 100644 --- a/Examples/Framework/include/ActsExamples/Utilities/Helpers.hpp +++ b/Examples/Framework/include/ActsExamples/Utilities/Helpers.hpp @@ -25,9 +25,7 @@ class TH1F; class TH2F; class TProfile; -namespace ActsExamples { - -namespace PlotHelpers { +namespace ActsExamples::PlotHelpers { /// @brief Nested binning struct for booking plots class Binning { public: @@ -145,6 +143,4 @@ TProfile* bookProf(const char* profName, const char* profTitle, void fillProf(TProfile* profile, float xValue, float yValue, float weight = 1.0); -} // namespace PlotHelpers - -} // namespace ActsExamples +} // namespace ActsExamples::PlotHelpers diff --git a/Examples/Framework/include/ActsExamples/Utilities/Options.hpp b/Examples/Framework/include/ActsExamples/Utilities/Options.hpp index be291240b95..c60c3cc1812 100644 --- a/Examples/Framework/include/ActsExamples/Utilities/Options.hpp +++ b/Examples/Framework/include/ActsExamples/Utilities/Options.hpp @@ -14,8 +14,7 @@ #include #include -namespace ActsExamples { -namespace Options { +namespace ActsExamples::Options { /// @defgroup option-types Additional types for program options /// @@ -167,5 +166,4 @@ inline std::ostream& operator<<(std::ostream& os, return os; } -} // namespace Options -} // namespace ActsExamples +} // namespace ActsExamples::Options diff --git a/Examples/Framework/include/ActsExamples/Utilities/OptionsFwd.hpp b/Examples/Framework/include/ActsExamples/Utilities/OptionsFwd.hpp index b97e61a34f9..945400b2922 100644 --- a/Examples/Framework/include/ActsExamples/Utilities/OptionsFwd.hpp +++ b/Examples/Framework/include/ActsExamples/Utilities/OptionsFwd.hpp @@ -8,16 +8,12 @@ #pragma once -namespace boost { -namespace program_options { +namespace boost::program_options { class options_description; class variables_map; -} // namespace program_options -} // namespace boost +} // namespace boost::program_options -namespace ActsExamples { -namespace Options { +namespace ActsExamples::Options { using Description = ::boost::program_options::options_description; using Variables = ::boost::program_options::variables_map; -} // namespace Options -} // namespace ActsExamples +} // namespace ActsExamples::Options diff --git a/Examples/Framework/include/ActsExamples/Utilities/tbbWrap.hpp b/Examples/Framework/include/ActsExamples/Utilities/tbbWrap.hpp index 267814f0ebc..839545252c7 100644 --- a/Examples/Framework/include/ActsExamples/Utilities/tbbWrap.hpp +++ b/Examples/Framework/include/ActsExamples/Utilities/tbbWrap.hpp @@ -23,8 +23,6 @@ #include #endif -namespace ActsExamples { - /// Wrapper for most of the tbb functions that we use in Sequencer. /// /// It disables the use of tbb if nthreads=1. @@ -42,10 +40,10 @@ namespace ActsExamples { /// https://stackoverflow.com/questions/59736661/how-to-completely-switch-off-threading-in-tbb-code #ifdef ACTS_EXAMPLES_NO_TBB -namespace tbb { +namespace ActsExamples::tbb { namespace task_arena { constexpr int automatic = -1; -} +} // namespace task_arena template struct blocked_range { @@ -57,10 +55,10 @@ struct blocked_range { Value my_end; Value my_begin; }; -} // namespace tbb +} // namespace ActsExamples::tbb #endif -namespace tbbWrap { +namespace ActsExamples::tbbWrap { /// enableTBB keeps a record of whether we are multi-threaded (nthreads!=1) or /// not. This is set once in task_arena and stored globally. /// This means that enableTBB(nthreads) itself is not thread-safe. That should @@ -173,5 +171,4 @@ class queuing_mutex { }; }; -} // namespace tbbWrap -} // namespace ActsExamples +} // namespace ActsExamples::tbbWrap diff --git a/Examples/Framework/src/Utilities/Helpers.cpp b/Examples/Framework/src/Utilities/Helpers.cpp index ada37f99095..544d58dfd22 100644 --- a/Examples/Framework/src/Utilities/Helpers.cpp +++ b/Examples/Framework/src/Utilities/Helpers.cpp @@ -18,9 +18,7 @@ #include #include -namespace ActsExamples { - -namespace PlotHelpers { +namespace ActsExamples::PlotHelpers { TH1F* bookHisto(const char* histName, const char* histTitle, const Binning& varBinning) { TH1F* hist = @@ -108,6 +106,4 @@ void fillProf(TProfile* profile, float xValue, float yValue, float weight) { profile->Fill(xValue, yValue, weight); } -} // namespace PlotHelpers - -} // namespace ActsExamples +} // namespace ActsExamples::PlotHelpers diff --git a/Examples/Io/EDM4hep/include/ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp b/Examples/Io/EDM4hep/include/ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp index 38e12be6306..1a684e1f320 100644 --- a/Examples/Io/EDM4hep/include/ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp +++ b/Examples/Io/EDM4hep/include/ActsExamples/Io/EDM4hep/EDM4hepUtil.hpp @@ -27,8 +27,7 @@ #include "edm4hep/TrackerHitCollection.h" #include "edm4hep/TrackerHitPlane.h" -namespace ActsExamples { -namespace EDM4hepUtil { +namespace ActsExamples::EDM4hepUtil { using MapParticleIdFrom = std::function; @@ -138,5 +137,4 @@ uint64_t podioObjectIDToInteger(T&& o) { } } -} // namespace EDM4hepUtil -} // namespace ActsExamples +} // namespace ActsExamples::EDM4hepUtil diff --git a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Event.hpp b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Event.hpp index f23ae42b332..950ba814f1a 100644 --- a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Event.hpp +++ b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Event.hpp @@ -17,8 +17,7 @@ #include #include -namespace ActsExamples { -namespace HepMC3Event { +namespace ActsExamples::HepMC3Event { /// /// Setter @@ -138,5 +137,4 @@ std::vector beams(const HepMC3::GenEvent& event); /// @return List of final state particles std::vector finalState(const HepMC3::GenEvent& event); -} // namespace HepMC3Event -} // namespace ActsExamples +} // namespace ActsExamples::HepMC3Event diff --git a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Particle.hpp b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Particle.hpp index c020afeaeea..1585b5f84c5 100644 --- a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Particle.hpp +++ b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Particle.hpp @@ -15,8 +15,7 @@ #include #include -namespace ActsExamples { -namespace HepMC3Particle { +namespace ActsExamples::HepMC3Particle { /// @brief Returns the barcode translated into Acts /// @param particle HepMC3::GenParticle particle @@ -93,5 +92,4 @@ void energy(const std::shared_ptr& particle, void mass(const std::shared_ptr& particle, const double mass); -} // namespace HepMC3Particle -} // namespace ActsExamples +} // namespace ActsExamples::HepMC3Particle diff --git a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Vertex.hpp b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Vertex.hpp index 7ce7034a5e5..47e190b5769 100644 --- a/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Vertex.hpp +++ b/Examples/Io/HepMC3/include/ActsExamples/Io/HepMC3/HepMC3Vertex.hpp @@ -15,8 +15,7 @@ #include #include -namespace ActsExamples { -namespace HepMC3Vertex { +namespace ActsExamples::HepMC3Vertex { /// @brief Returns a vertex translated into Acts /// @param vertex vertex in HepMC data type @@ -92,5 +91,4 @@ void position(const std::shared_ptr& vertex, /// @param time new time of the vertex void time(const std::shared_ptr& vertex, double time); -} // namespace HepMC3Vertex -} // namespace ActsExamples +} // namespace ActsExamples::HepMC3Vertex diff --git a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonSurfacesReader.hpp b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonSurfacesReader.hpp index 9cac0900424..fcd16b97a8e 100644 --- a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonSurfacesReader.hpp +++ b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonSurfacesReader.hpp @@ -18,9 +18,7 @@ namespace Acts { class Surface; } -namespace ActsExamples { - -namespace JsonSurfacesReader { +namespace ActsExamples::JsonSurfacesReader { /// @brief Options specification for surface reading struct Options { @@ -38,6 +36,4 @@ struct Options { Acts::GeometryHierarchyMap> read( const Options& options); -} // namespace JsonSurfacesReader - -} // namespace ActsExamples +} // namespace ActsExamples::JsonSurfacesReader diff --git a/Examples/Io/NuclearInteractions/include/ActsExamples/Io/NuclearInteractions/detail/NuclearInteractionParametrisation.hpp b/Examples/Io/NuclearInteractions/include/ActsExamples/Io/NuclearInteractions/detail/NuclearInteractionParametrisation.hpp index e47749d02c6..c0efc4e1eb5 100644 --- a/Examples/Io/NuclearInteractions/include/ActsExamples/Io/NuclearInteractions/detail/NuclearInteractionParametrisation.hpp +++ b/Examples/Io/NuclearInteractions/include/ActsExamples/Io/NuclearInteractions/detail/NuclearInteractionParametrisation.hpp @@ -22,9 +22,7 @@ #include #include -namespace ActsExamples { -namespace detail { -namespace NuclearInteractionParametrisation { +namespace ActsExamples::detail::NuclearInteractionParametrisation { /// This struct stores a fraction of an event around a nuclear /// interaction. @@ -192,6 +190,4 @@ TVectorF softProbability(const EventCollection& events); /// @return The cumulative distribution for the nuclear interaction CumulativeDistribution cumulativeNuclearInteractionProbability( const EventCollection& events, unsigned int interactionProbabilityBins); -} // namespace NuclearInteractionParametrisation -} // namespace detail -} // namespace ActsExamples +} // namespace ActsExamples::detail::NuclearInteractionParametrisation diff --git a/Examples/Io/NuclearInteractions/src/detail/NuclearInteractionParametrisation.cpp b/Examples/Io/NuclearInteractions/src/detail/NuclearInteractionParametrisation.cpp index 446e7e1ca5e..a098b9cedcb 100644 --- a/Examples/Io/NuclearInteractions/src/detail/NuclearInteractionParametrisation.cpp +++ b/Examples/Io/NuclearInteractions/src/detail/NuclearInteractionParametrisation.cpp @@ -22,9 +22,7 @@ #include #include -namespace ActsExamples { -namespace detail { -namespace NuclearInteractionParametrisation { +namespace ActsExamples::detail::NuclearInteractionParametrisation { namespace { /// @brief Evaluate the location in a standard normal distribution for a value @@ -377,6 +375,4 @@ CumulativeDistribution cumulativeNuclearInteractionProbability( return histo; // TODO: in this case the normalisation is not taking into // account } -} // namespace NuclearInteractionParametrisation -} // namespace detail -} // namespace ActsExamples +} // namespace ActsExamples::detail::NuclearInteractionParametrisation diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootUtility.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootUtility.hpp index 892d11bdfaa..addbcc7a583 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootUtility.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootUtility.hpp @@ -12,8 +12,7 @@ #include -namespace ActsExamples { -namespace RootUtility { +namespace ActsExamples::RootUtility { /// @brief Sorts an array of elements and outputs the indices of the sorted elements. /// @@ -53,5 +52,4 @@ void stableSort(index_t numElements, const element_t* elements, } } -} // namespace RootUtility -} // namespace ActsExamples +} // namespace ActsExamples::RootUtility diff --git a/Examples/Python/src/ExaTrkXTrackFindingStub.cpp b/Examples/Python/src/ExaTrkXTrackFindingStub.cpp index 7fa15ed37fb..00275ef1bea 100644 --- a/Examples/Python/src/ExaTrkXTrackFindingStub.cpp +++ b/Examples/Python/src/ExaTrkXTrackFindingStub.cpp @@ -6,11 +6,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -namespace Acts { -namespace Python { +namespace Acts::Python { struct Context; -} // namespace Python -} // namespace Acts +} // namespace Acts::Python namespace Acts::Python { void addExaTrkXTrackFinding(Context& /*ctx*/) { diff --git a/Examples/Python/src/HepMC3Stub.cpp b/Examples/Python/src/HepMC3Stub.cpp index 448436a874d..7e3919d9dca 100644 --- a/Examples/Python/src/HepMC3Stub.cpp +++ b/Examples/Python/src/HepMC3Stub.cpp @@ -6,11 +6,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -namespace Acts { -namespace Python { +namespace Acts::Python { struct Context; -} // namespace Python -} // namespace Acts +} // namespace Acts::Python namespace Acts::Python { void addHepMC3(Context& /*ctx*/) {} diff --git a/Examples/Python/src/OnnxStub.cpp b/Examples/Python/src/OnnxStub.cpp index 3785307347e..3c070e417d6 100644 --- a/Examples/Python/src/OnnxStub.cpp +++ b/Examples/Python/src/OnnxStub.cpp @@ -6,11 +6,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -namespace Acts { -namespace Python { +namespace Acts::Python { struct Context; -} // namespace Python -} // namespace Acts +} // namespace Acts::Python namespace Acts::Python { void addOnnx(Context& /*unused*/) { diff --git a/Examples/Python/src/SvgStub.cpp b/Examples/Python/src/SvgStub.cpp index d53232af188..61bce57b319 100644 --- a/Examples/Python/src/SvgStub.cpp +++ b/Examples/Python/src/SvgStub.cpp @@ -6,11 +6,9 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -namespace Acts { -namespace Python { +namespace Acts::Python { struct Context; -} // namespace Python -} // namespace Acts +} // namespace Acts::Python namespace Acts::Python { void addSvg(Context& /*ctx*/) {} diff --git a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp index 82f532cad84..88edd988013 100644 --- a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp +++ b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp @@ -22,8 +22,7 @@ #include #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// Fatras simulation actor for the Acts propagator. /// @@ -353,5 +352,4 @@ struct SimulationActor { } }; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp b/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp index b9478dc69b0..56b3c6bc515 100644 --- a/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp +++ b/Fatras/include/ActsFatras/Kernel/detail/SimulationError.hpp @@ -11,8 +11,7 @@ #include #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { enum class SimulationError { // ensure all values are non-zero @@ -24,8 +23,7 @@ enum class SimulationError { /// Must use snake_case naming for STL compatibility. std::error_code make_error_code(SimulationError e); -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail // Register the error enum as STL-compatible. namespace std { diff --git a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GaussianMixture.hpp b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GaussianMixture.hpp index 1a9d2f1799e..70274e11c40 100644 --- a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GaussianMixture.hpp +++ b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GaussianMixture.hpp @@ -12,8 +12,7 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// Generate scattering angles using a Gaussian mixture model. struct GaussianMixture { @@ -89,5 +88,4 @@ struct GaussianMixture { } }; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GeneralMixture.hpp b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GeneralMixture.hpp index 99101f61333..200e84bc1f7 100644 --- a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GeneralMixture.hpp +++ b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/GeneralMixture.hpp @@ -13,8 +13,7 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// Generate scattering angles using a general mixture model. /// @@ -201,5 +200,4 @@ struct GeneralMixture { } }; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/Highland.hpp b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/Highland.hpp index e7a9110f277..5ac710ed727 100644 --- a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/Highland.hpp +++ b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/detail/Highland.hpp @@ -12,8 +12,7 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// Generate scattering angles using the Highland/PDG parametrization. /// @@ -40,5 +39,4 @@ struct Highland { } }; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteractionParameters.hpp b/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteractionParameters.hpp index 82dc5a3d847..2621c4d8b5f 100644 --- a/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteractionParameters.hpp +++ b/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteractionParameters.hpp @@ -12,8 +12,7 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// @brief Data storage of the parametrized nuclear interaction struct NuclearInteractionParameters { @@ -104,5 +103,4 @@ using NuclearInteractionParametrisation = /// Parametrisation of multiple particles using MultiParticleNuclearInteractionParametrisation = std::vector>; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/include/ActsFatras/Selectors/KinematicCasts.hpp b/Fatras/include/ActsFatras/Selectors/KinematicCasts.hpp index 045e7691259..56305f3ca2e 100644 --- a/Fatras/include/ActsFatras/Selectors/KinematicCasts.hpp +++ b/Fatras/include/ActsFatras/Selectors/KinematicCasts.hpp @@ -13,8 +13,7 @@ #include -namespace ActsFatras { -namespace Casts { +namespace ActsFatras::Casts { /// Retrieve the transverse absolute distance of the position to the origin. struct Vrho { @@ -76,5 +75,4 @@ struct E { } }; -} // namespace Casts -} // namespace ActsFatras +} // namespace ActsFatras::Casts diff --git a/Fatras/include/ActsFatras/Selectors/detail/combine_selectors.hpp b/Fatras/include/ActsFatras/Selectors/detail/combine_selectors.hpp index 15f2bad4d7e..23a95492c62 100644 --- a/Fatras/include/ActsFatras/Selectors/detail/combine_selectors.hpp +++ b/Fatras/include/ActsFatras/Selectors/detail/combine_selectors.hpp @@ -12,8 +12,7 @@ #include #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { /// Combine multiple selectors with a configurable combine function. template @@ -65,5 +64,4 @@ class CombineSelectors { } }; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Fatras/src/Kernel/SimulationError.cpp b/Fatras/src/Kernel/SimulationError.cpp index 029e7eaa7e6..7c86bcc7890 100644 --- a/Fatras/src/Kernel/SimulationError.cpp +++ b/Fatras/src/Kernel/SimulationError.cpp @@ -10,8 +10,7 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { namespace { // Define a custom error code category derived from std::error_category @@ -36,5 +35,4 @@ std::error_code make_error_code(SimulationError e) { return {static_cast(e), s_simulatorErrorCategory}; } -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp index ff9b84612b9..0f89983507c 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp @@ -28,8 +28,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DD4hepBlueprintFactory { public: @@ -133,5 +132,4 @@ class DD4hepBlueprintFactory { const std::string& baseName) const; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorStructure.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorStructure.hpp index abb482cc7fc..47fbf866d14 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorStructure.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorStructure.hpp @@ -22,9 +22,7 @@ namespace dd4hep { class DetElement; } -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// @brief This class allows to generate layer structure builders for dd4hep sub detectors /// It performs an intermediate step by taking dd4hep::DetElemnent objects that @@ -81,5 +79,4 @@ class DD4hepDetectorStructure { const Logger& logger() const { return *m_logger; } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp index ab7685cf064..441386857b2 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp @@ -26,9 +26,7 @@ namespace dd4hep { class DetElement; } -namespace Acts { - -namespace Experimental { +namespace Acts::Experimental { /// @brief This class allows to generate layer structure builders for dd4hep sub detectors /// It performs an intermediate step by taking dd4hep::DetElemnent objects that @@ -103,5 +101,4 @@ class DD4hepLayerStructure { const Logger& logger() const { return *m_logger; } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Plugins/DD4hep/src/ConvertDD4hepDetector.cpp b/Plugins/DD4hep/src/ConvertDD4hepDetector.cpp index f77d60389b5..7fd18a0532f 100644 --- a/Plugins/DD4hep/src/ConvertDD4hepDetector.cpp +++ b/Plugins/DD4hep/src/ConvertDD4hepDetector.cpp @@ -634,4 +634,4 @@ void collectLayers_dd4hep(dd4hep::DetElement& detElement, } } -} // End of namespace Acts +} // namespace Acts diff --git a/Plugins/EDM4hep/include/Acts/Plugins/EDM4hep/EDM4hepUtil.hpp b/Plugins/EDM4hep/include/Acts/Plugins/EDM4hep/EDM4hepUtil.hpp index 1b31bfa8e37..505f9bbe1cc 100644 --- a/Plugins/EDM4hep/include/Acts/Plugins/EDM4hep/EDM4hepUtil.hpp +++ b/Plugins/EDM4hep/include/Acts/Plugins/EDM4hep/EDM4hepUtil.hpp @@ -30,8 +30,7 @@ #include "edm4hep/MutableTrack.h" -namespace Acts { -namespace EDM4hepUtil { +namespace Acts::EDM4hepUtil { static constexpr std::int32_t EDM4HEP_ACTS_POSITION_TYPE = 42; @@ -248,5 +247,4 @@ void readTrack(const edm4hep::Track& from, track.nMeasurements() = track.nTrackStates(); } -} // namespace EDM4hepUtil -} // namespace Acts +} // namespace Acts::EDM4hepUtil diff --git a/Plugins/EDM4hep/src/EDM4hepUtil.cpp b/Plugins/EDM4hep/src/EDM4hepUtil.cpp index 3bdc7f9677e..ec22eb9c1a2 100644 --- a/Plugins/EDM4hep/src/EDM4hepUtil.cpp +++ b/Plugins/EDM4hep/src/EDM4hepUtil.cpp @@ -18,9 +18,7 @@ #include "edm4hep/TrackState.h" -namespace Acts { -namespace EDM4hepUtil { -namespace detail { +namespace Acts::EDM4hepUtil::detail { ActsSquareMatrix<6> jacobianToEdm4hep(double theta, double qOverP, double Bz) { // Calculate jacobian from our internal parametrization (d0, z0, phi, theta, @@ -184,6 +182,4 @@ BoundTrackParameters convertTrackParametersFromEdm4hep( return {params.surface, targetPars, cov, params.particleHypothesis}; } -} // namespace detail -} // namespace EDM4hepUtil -} // namespace Acts +} // namespace Acts::EDM4hepUtil::detail diff --git a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp index 268d2089205..7747cce104a 100644 --- a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp +++ b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp @@ -16,8 +16,7 @@ #include "G4LogicalVolume.hh" #include "G4VPhysicalVolume.hh" -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// @brief A surface provider that extracts surfaces from a gdml file /// @@ -157,5 +156,4 @@ class Geant4SurfaceProvider : public Acts::Experimental::ISurfacesProvider { G4Transform3D m_g4ToWorld; }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental diff --git a/Plugins/Identification/include/Acts/Plugins/Identification/IdentifiedDetectorElement.hpp b/Plugins/Identification/include/Acts/Plugins/Identification/IdentifiedDetectorElement.hpp index 47802a04af0..60d7e9cb87d 100644 --- a/Plugins/Identification/include/Acts/Plugins/Identification/IdentifiedDetectorElement.hpp +++ b/Plugins/Identification/include/Acts/Plugins/Identification/IdentifiedDetectorElement.hpp @@ -37,4 +37,4 @@ class IdentifiedDetectorElement : public DetectorElementBase { const = 0; }; -} // end of namespace Acts +} // namespace Acts diff --git a/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp index c48c7aea327..67206b9a2c4 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp @@ -17,9 +17,7 @@ #include -namespace Acts { - -namespace DetectorVolumeFinderJsonConverter { +namespace Acts::DetectorVolumeFinderJsonConverter { /// @brief Convert the single delegate if it is of the type of the reference /// @@ -98,5 +96,4 @@ static inline nlohmann::json toJson( Experimental::DetectorVolumeUpdater fromJson( const nlohmann::json& jVolumeFinder); -} // namespace DetectorVolumeFinderJsonConverter -} // namespace Acts +} // namespace Acts::DetectorVolumeFinderJsonConverter diff --git a/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp b/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp index 421362e0137..84519166324 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp @@ -16,9 +16,7 @@ #include -namespace Acts { - -namespace DetrayJsonHelper { +namespace Acts::DetrayJsonHelper { /// @brief Helper function to switch keys from ACTS to detray /// @@ -130,5 +128,4 @@ inline static std::size_t accelerationLink(const binning_values_t& casts) { return accLink; } -} // namespace DetrayJsonHelper -} // namespace Acts +} // namespace Acts::DetrayJsonHelper diff --git a/Plugins/Legacy/include/Acts/Seeding/AtlasSeedFinder.hpp b/Plugins/Legacy/include/Acts/Seeding/AtlasSeedFinder.hpp index a5d6569f56e..706d0823f2d 100644 --- a/Plugins/Legacy/include/Acts/Seeding/AtlasSeedFinder.hpp +++ b/Plugins/Legacy/include/Acts/Seeding/AtlasSeedFinder.hpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Legacy { +namespace Acts::Legacy { template class AtlasSeedFinder { struct Config { @@ -351,6 +350,5 @@ class comCurvature { return i1.first < i2.first; } }; -} // namespace Legacy -} // namespace Acts +} // namespace Acts::Legacy #include "Acts/Seeding/AtlasSeedFinder.ipp" diff --git a/Plugins/Legacy/include/Acts/Seeding/LegacyInternalSeed.hpp b/Plugins/Legacy/include/Acts/Seeding/LegacyInternalSeed.hpp index 041685e998e..8698987865d 100644 --- a/Plugins/Legacy/include/Acts/Seeding/LegacyInternalSeed.hpp +++ b/Plugins/Legacy/include/Acts/Seeding/LegacyInternalSeed.hpp @@ -14,8 +14,7 @@ #include "Acts/Seeding/LegacySeed.hpp" #include "Acts/Seeding/SPForSeed.hpp" -namespace Acts { -namespace Legacy { +namespace Acts::Legacy { template class InternalSeed { ///////////////////////////////////////////////////////////////////////////////// @@ -170,5 +169,4 @@ inline bool InternalSeed::setQuality(float q) { /// @endcond -} // namespace Legacy -} // namespace Acts +} // namespace Acts::Legacy diff --git a/Plugins/Legacy/include/Acts/Seeding/LegacySeed.hpp b/Plugins/Legacy/include/Acts/Seeding/LegacySeed.hpp index 527b18a3a2f..45f9406083b 100644 --- a/Plugins/Legacy/include/Acts/Seeding/LegacySeed.hpp +++ b/Plugins/Legacy/include/Acts/Seeding/LegacySeed.hpp @@ -13,8 +13,7 @@ #pragma once #include -namespace Acts { -namespace Legacy { +namespace Acts::Legacy { template class Seed { @@ -110,5 +109,4 @@ Seed::~Seed() = default; /// @endcond -} // namespace Legacy -} // namespace Acts +} // namespace Acts::Legacy diff --git a/Plugins/Legacy/include/Acts/Seeding/SPForSeed.hpp b/Plugins/Legacy/include/Acts/Seeding/SPForSeed.hpp index 4c889ad6746..fc4d3ac435c 100644 --- a/Plugins/Legacy/include/Acts/Seeding/SPForSeed.hpp +++ b/Plugins/Legacy/include/Acts/Seeding/SPForSeed.hpp @@ -28,8 +28,7 @@ // if(de->isBarrel()) {m_covz = 8.*f22; m_covr = .1;} // else {m_covr = 8.*f22; m_covz = .1;} -namespace Acts { -namespace Legacy { +namespace Acts::Legacy { template class SPForSeed { @@ -247,5 +246,4 @@ inline void SPForSeed::setQuality(float q) { } } -} // namespace Legacy -} // namespace Acts +} // namespace Acts::Legacy diff --git a/Tests/Benchmarks/SurfaceIntersectionBenchmark.cpp b/Tests/Benchmarks/SurfaceIntersectionBenchmark.cpp index 28791a1bf15..392e5367995 100644 --- a/Tests/Benchmarks/SurfaceIntersectionBenchmark.cpp +++ b/Tests/Benchmarks/SurfaceIntersectionBenchmark.cpp @@ -27,8 +27,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Some randomness & number crunching unsigned int ntests = 10; @@ -123,5 +122,4 @@ BOOST_DATA_TEST_CASE( } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/BenchmarkTools.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/BenchmarkTools.hpp index dbceeb05640..a53eba2f3f0 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/BenchmarkTools.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/BenchmarkTools.hpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // === INTRODUCTION === // @@ -553,5 +552,4 @@ MicroBenchmarkResult microBenchmark( inputs.size(), num_runs, warmup_time); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp index 4dfdc816ac2..7a24126db56 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp @@ -33,8 +33,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { struct CubicTrackingGeometry { /// Default constructor for the Cubic tracking geometry @@ -202,5 +201,4 @@ struct CubicTrackingGeometry { std::reference_wrapper geoContext; }; -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp index e5a8fd1d49f..c6491a2a46f 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp @@ -38,8 +38,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { struct CylindricalTrackingGeometry { std::reference_wrapper geoContext; @@ -334,5 +333,4 @@ struct CylindricalTrackingGeometry { } }; -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/DataDirectory.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/DataDirectory.hpp index 4bcb95e4b8d..378abb4f697 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/DataDirectory.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/DataDirectory.hpp @@ -10,13 +10,11 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// Get the full path to a file in the test data directory. /// /// @param relativePath file path relative to the data directory std::string getDataPath(const std::string& relativePath); -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/FloatComparisons.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/FloatComparisons.hpp index 60fc71a3eb7..e6b9550e728 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/FloatComparisons.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/FloatComparisons.hpp @@ -56,8 +56,7 @@ // The relevant infrastructure is implemented below -namespace Acts { -namespace Test { +namespace Acts::Test { namespace float_compare_internal { // Under the hood, various scalar comparison logics may be used @@ -307,5 +306,4 @@ boost::test_tools::predicate_result checkCloseCovariance( } return true; } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp index 3366cee816c..4070074539c 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { class LineSurfaceStub : public LineSurface { public: @@ -66,5 +65,4 @@ class LineSurfaceStub : public LineSurface { return Polyhedron({}, {}, {}); } }; -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/MeasurementsCreator.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/MeasurementsCreator.hpp index 9a20f419cdd..35bab1eaac1 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/MeasurementsCreator.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/MeasurementsCreator.hpp @@ -23,8 +23,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// All supported simulated measurement types. enum class MeasurementType { @@ -172,5 +171,4 @@ Measurements createMeasurements(const propagator_t& propagator, return std::move(result.template get()); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/PredefinedMaterials.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/PredefinedMaterials.hpp index 2898dd943bd..4ddf0a7e66d 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/PredefinedMaterials.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/PredefinedMaterials.hpp @@ -15,8 +15,7 @@ #include "Acts/Material/Material.hpp" #include "Acts/Material/MaterialSlab.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { inline Material makeBeryllium() { using namespace UnitLiterals; @@ -46,5 +45,4 @@ inline MaterialSlab makePercentSlab() { return slab; } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/TestSpacePoint.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/TestSpacePoint.hpp index be517a3701a..aec14a5d0f8 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/TestSpacePoint.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/TestSpacePoint.hpp @@ -18,8 +18,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// Space point representation of a measurement suitable for track seeding. class TestSpacePoint { @@ -97,5 +96,4 @@ inline bool operator==(const TestSpacePoint& lhs, const TestSpacePoint& rhs) { /// Container of space points. using TestSpacePointContainer = std::vector; -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/IntegrationTests/InterpolatedSolenoidBFieldTest.cpp b/Tests/IntegrationTests/InterpolatedSolenoidBFieldTest.cpp index 672a31c5bdc..86276a36758 100644 --- a/Tests/IntegrationTests/InterpolatedSolenoidBFieldTest.cpp +++ b/Tests/IntegrationTests/InterpolatedSolenoidBFieldTest.cpp @@ -26,8 +26,7 @@ using namespace Acts::UnitLiterals; namespace bdata = boost::unit_test::data; -namespace Acts { -namespace IntegrationTest { +namespace Acts::IntegrationTest { const double L = 5.8_m; const double R = (2.56 + 2.46) * 0.5 * 0.5_m; @@ -129,5 +128,4 @@ BOOST_DATA_TEST_CASE( ofstr << Bm.x() << ";" << Bm.y() << ";" << Bm.z() << std::endl; } -} // namespace IntegrationTest -} // namespace Acts +} // namespace Acts::IntegrationTest diff --git a/Tests/IntegrationTests/PropagationDatasets.hpp b/Tests/IntegrationTests/PropagationDatasets.hpp index 5c3bacb94cf..6b65e21c85f 100644 --- a/Tests/IntegrationTests/PropagationDatasets.hpp +++ b/Tests/IntegrationTests/PropagationDatasets.hpp @@ -12,8 +12,7 @@ #include "Acts/Definitions/Units.hpp" -namespace ActsTests { -namespace PropagationDatasets { +namespace ActsTests::PropagationDatasets { namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; @@ -47,5 +46,4 @@ const auto pathLength = bdata::make({1_cm, 10_cm}); // magnetic field strength const auto magneticField = bdata::make({0.5_T, 2_T, 4_T}); -} // namespace PropagationDatasets -} // namespace ActsTests +} // namespace ActsTests::PropagationDatasets diff --git a/Tests/UnitTests/Benchmarks/BenchmarkTools.cpp b/Tests/UnitTests/Benchmarks/BenchmarkTools.cpp index 85050d32b2d..2ae6911e390 100644 --- a/Tests/UnitTests/Benchmarks/BenchmarkTools.cpp +++ b/Tests/UnitTests/Benchmarks/BenchmarkTools.cpp @@ -19,8 +19,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Basic non-timing tests do not validate the core performance aspects of the // benchmark tools, but have the advantage of being runnable on any system. @@ -296,5 +295,4 @@ BOOST_AUTO_TEST_CASE(assume_written) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Clusterization/ClusterizationTests1D.cpp b/Tests/UnitTests/Core/Clusterization/ClusterizationTests1D.cpp index 4dd55736ae4..760ee400041 100644 --- a/Tests/UnitTests/Core/Clusterization/ClusterizationTests1D.cpp +++ b/Tests/UnitTests/Core/Clusterization/ClusterizationTests1D.cpp @@ -21,8 +21,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { struct Cell1D { Cell1D(int colv) : col(colv) {} @@ -129,5 +128,4 @@ BOOST_AUTO_TEST_CASE(Grid_1D_rand) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Clusterization/ClusterizationTests2D.cpp b/Tests/UnitTests/Core/Clusterization/ClusterizationTests2D.cpp index 97aa95c07a0..27cfb0fafa1 100644 --- a/Tests/UnitTests/Core/Clusterization/ClusterizationTests2D.cpp +++ b/Tests/UnitTests/Core/Clusterization/ClusterizationTests2D.cpp @@ -24,8 +24,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { using Rectangle = std::array; @@ -248,5 +247,4 @@ BOOST_AUTO_TEST_CASE(Grid_2D_rand) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp b/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp index 2c5da5edf00..0f704545e7b 100644 --- a/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp +++ b/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp @@ -15,11 +15,9 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IInternalStructureBuilder {}; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental BOOST_AUTO_TEST_SUITE(Experimental) diff --git a/Tests/UnitTests/Core/Detector/BlueprintTests.cpp b/Tests/UnitTests/Core/Detector/BlueprintTests.cpp index dfd7dbaebb6..a8d2acfcaaa 100644 --- a/Tests/UnitTests/Core/Detector/BlueprintTests.cpp +++ b/Tests/UnitTests/Core/Detector/BlueprintTests.cpp @@ -13,11 +13,9 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class IInternalStructureBuilder {}; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental BOOST_AUTO_TEST_SUITE(Experimental) diff --git a/Tests/UnitTests/Core/Detector/CylindricalDetectorHelperTests.cpp b/Tests/UnitTests/Core/Detector/CylindricalDetectorHelperTests.cpp index 66583ba2432..6b3e7173134 100644 --- a/Tests/UnitTests/Core/Detector/CylindricalDetectorHelperTests.cpp +++ b/Tests/UnitTests/Core/Detector/CylindricalDetectorHelperTests.cpp @@ -36,11 +36,9 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class Portal; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental using namespace Acts; using namespace Experimental; diff --git a/Tests/UnitTests/Core/Detector/PortalTests.cpp b/Tests/UnitTests/Core/Detector/PortalTests.cpp index b9837b8e65b..fb710f1307d 100644 --- a/Tests/UnitTests/Core/Detector/PortalTests.cpp +++ b/Tests/UnitTests/Core/Detector/PortalTests.cpp @@ -31,8 +31,7 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// a simple link to volume struct class LinkToVolumeImpl : public INavigationDelegate { @@ -50,8 +49,7 @@ class LinkToVolumeImpl : public INavigationDelegate { } }; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental using namespace Acts::Experimental; diff --git a/Tests/UnitTests/Core/Digitization/CartesianSegmentationTests.cpp b/Tests/UnitTests/Core/Digitization/CartesianSegmentationTests.cpp index 4caa3b7072a..ae7fa0abee1 100644 --- a/Tests/UnitTests/Core/Digitization/CartesianSegmentationTests.cpp +++ b/Tests/UnitTests/Core/Digitization/CartesianSegmentationTests.cpp @@ -25,8 +25,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { std::size_t nbinsx = 100; std::size_t nbinsy = 200; @@ -127,5 +126,4 @@ BOOST_AUTO_TEST_CASE(cartesian_segmentation) { CHECK_CLOSE_REL(tAngle, lAngle, 0.001); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Digitization/PlanarModuleStepperTests.cpp b/Tests/UnitTests/Core/Digitization/PlanarModuleStepperTests.cpp index e2ab9e5f073..7151c8842b4 100644 --- a/Tests/UnitTests/Core/Digitization/PlanarModuleStepperTests.cpp +++ b/Tests/UnitTests/Core/Digitization/PlanarModuleStepperTests.cpp @@ -29,8 +29,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { double halfX = 5_mm; double halfY = 10_mm; @@ -104,5 +103,4 @@ BOOST_DATA_TEST_CASE( } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/AlignmentContextTests.cpp b/Tests/UnitTests/Core/Geometry/AlignmentContextTests.cpp index a176b5a82cc..929f746377b 100644 --- a/Tests/UnitTests/Core/Geometry/AlignmentContextTests.cpp +++ b/Tests/UnitTests/Core/Geometry/AlignmentContextTests.cpp @@ -26,8 +26,7 @@ class PlanarBounds; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { /// @class AlignmentContext struct AlignmentContext { @@ -210,5 +209,4 @@ BOOST_AUTO_TEST_CASE(AlignmentContextTests) { BOOST_CHECK_EQUAL(localPosition, Vector2(3., 3.)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp index 79b92e46ea8..df24dc264f1 100644 --- a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp @@ -26,8 +26,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { GeometryContext gctx = GeometryContext(); @@ -204,5 +203,4 @@ BOOST_AUTO_TEST_CASE(CuboidVolumeBoundsSetValues) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/CuboidVolumeBuilderTests.cpp b/Tests/UnitTests/Core/Geometry/CuboidVolumeBuilderTests.cpp index 4e7b63ef296..746e140483b 100644 --- a/Tests/UnitTests/Core/Geometry/CuboidVolumeBuilderTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CuboidVolumeBuilderTests.cpp @@ -35,8 +35,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(CuboidVolumeBuilderTest) { // Construct builder @@ -236,5 +235,4 @@ BOOST_AUTO_TEST_CASE(CuboidVolumeBuilderTest) { volumeConfig2.name); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/CylinderVolumeBuilderTests.cpp b/Tests/UnitTests/Core/Geometry/CylinderVolumeBuilderTests.cpp index b7888b59b7d..0dd4df5cf52 100644 --- a/Tests/UnitTests/Core/Geometry/CylinderVolumeBuilderTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CylinderVolumeBuilderTests.cpp @@ -15,8 +15,7 @@ namespace bdata = boost::unit_test::data; -namespace Acts { -namespace Test { +namespace Acts::Test { /// Unit test for testing the wraps() function of the CylinderVolumeBuilder BOOST_DATA_TEST_CASE( @@ -367,5 +366,4 @@ BOOST_DATA_TEST_CASE( BOOST_CHECK(Config0.overlapsInZ(Config7)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/GenericApproachDescriptorTests.cpp b/Tests/UnitTests/Core/Geometry/GenericApproachDescriptorTests.cpp index daa7a2944c3..3bdabe7e7cc 100644 --- a/Tests/UnitTests/Core/Geometry/GenericApproachDescriptorTests.cpp +++ b/Tests/UnitTests/Core/Geometry/GenericApproachDescriptorTests.cpp @@ -30,10 +30,7 @@ #include "../Surfaces/SurfaceStub.hpp" #include "LayerStub.hpp" -namespace Acts { - -namespace Test { -namespace Layers { +namespace Acts::Test::Layers { // Build a default context for testing GeometryContext tgContext = GeometryContext(); @@ -118,7 +115,4 @@ BOOST_AUTO_TEST_CASE(GenericApproachNoOverstepping) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Layers -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test::Layers diff --git a/Tests/UnitTests/Core/Geometry/GenericCuboidVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/GenericCuboidVolumeBoundsTests.cpp index c0cd0bb6c26..2fc5a25ca85 100644 --- a/Tests/UnitTests/Core/Geometry/GenericCuboidVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/GenericCuboidVolumeBoundsTests.cpp @@ -29,8 +29,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { GeometryContext gctx = GeometryContext(); @@ -240,5 +239,4 @@ BOOST_AUTO_TEST_CASE(GenericCuboidVolumeBoundarySurfaces) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/GeometryIdentifierTests.cpp b/Tests/UnitTests/Core/Geometry/GeometryIdentifierTests.cpp index 62e6010f5f5..fe6e4224ffe 100644 --- a/Tests/UnitTests/Core/Geometry/GeometryIdentifierTests.cpp +++ b/Tests/UnitTests/Core/Geometry/GeometryIdentifierTests.cpp @@ -10,8 +10,7 @@ #include "Acts/Geometry/GeometryIdentifier.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(GeometryIdentifier_construct_default) { GeometryIdentifier id; @@ -92,5 +91,4 @@ BOOST_AUTO_TEST_CASE(GeometryIdentifier_order) { GeometryIdentifier(vol1).setSensitive(2u).setExtra(1u)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp b/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp index f150d5734bd..372132937a8 100644 --- a/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp +++ b/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp @@ -44,8 +44,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -459,5 +458,4 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_barrelStagger, LayerCreatorFixture) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/LayerTests.cpp b/Tests/UnitTests/Core/Geometry/LayerTests.cpp index 80894ecc1cd..4b931aab45c 100644 --- a/Tests/UnitTests/Core/Geometry/LayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/LayerTests.cpp @@ -27,8 +27,7 @@ #include "../Surfaces/SurfaceStub.hpp" #include "LayerStub.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -102,5 +101,4 @@ BOOST_AUTO_TEST_CASE(LayerProperties) { BOOST_AUTO_TEST_SUITE_END() } // namespace Layers -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp b/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp index 86f831d6b32..b40677975ea 100644 --- a/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp @@ -22,8 +22,7 @@ #include "../Surfaces/SurfaceStub.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -73,5 +72,4 @@ BOOST_AUTO_TEST_CASE(NavigationLayerProperties) { BOOST_AUTO_TEST_SUITE_END() } // namespace Layers -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp b/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp index 73cef2a790d..dba38bc4e52 100644 --- a/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp @@ -28,8 +28,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -97,5 +96,4 @@ BOOST_AUTO_TEST_CASE(PlaneLayerProperties) { BOOST_AUTO_TEST_SUITE_END() } // namespace Layers -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/SimpleGeometryTests.cpp b/Tests/UnitTests/Core/Geometry/SimpleGeometryTests.cpp index 63fabde2023..a8fe3cb2955 100644 --- a/Tests/UnitTests/Core/Geometry/SimpleGeometryTests.cpp +++ b/Tests/UnitTests/Core/Geometry/SimpleGeometryTests.cpp @@ -29,8 +29,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -121,5 +120,4 @@ BOOST_AUTO_TEST_CASE(SimpleGeometryTest) { BOOST_CHECK(tGeometry != nullptr); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp b/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp index cfcf22b6e85..8ef383b3d62 100644 --- a/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp +++ b/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp @@ -50,8 +50,7 @@ using Acts::VectorHelpers::perp; using Acts::VectorHelpers::phi; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -731,5 +730,4 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_barrelStagger, } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp b/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp index 366d2ddaf1c..6133931eab0 100644 --- a/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp +++ b/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp @@ -23,9 +23,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -78,6 +76,4 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceMatcher) { sbm(tgContext, binPhi, oneSurface.get(), similarPhiSurface.get())); } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/TrackingGeometryClosureTests.cpp b/Tests/UnitTests/Core/Geometry/TrackingGeometryClosureTests.cpp index 0e969a48bfc..99c38ff0663 100644 --- a/Tests/UnitTests/Core/Geometry/TrackingGeometryClosureTests.cpp +++ b/Tests/UnitTests/Core/Geometry/TrackingGeometryClosureTests.cpp @@ -29,8 +29,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -321,5 +320,4 @@ BOOST_AUTO_TEST_CASE(TrackingGeometry_testVisitSurfaces) { BOOST_CHECK_EQUAL(nVolumes, 5u); } -} // end of namespace Test -} // end of namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/TrackingGeometryCreationTests.cpp b/Tests/UnitTests/Core/Geometry/TrackingGeometryCreationTests.cpp index 9fd97515d0c..46af559ff1a 100644 --- a/Tests/UnitTests/Core/Geometry/TrackingGeometryCreationTests.cpp +++ b/Tests/UnitTests/Core/Geometry/TrackingGeometryCreationTests.cpp @@ -12,8 +12,7 @@ #include "Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp" #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -30,5 +29,4 @@ BOOST_AUTO_TEST_CASE(CubicTrackingGeometryTest) { BOOST_CHECK_NE(tGeometry, nullptr); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/TrackingGeometryGeometryIdTests.cpp b/Tests/UnitTests/Core/Geometry/TrackingGeometryGeometryIdTests.cpp index d376a2544c3..ab015dd01a8 100644 --- a/Tests/UnitTests/Core/Geometry/TrackingGeometryGeometryIdTests.cpp +++ b/Tests/UnitTests/Core/Geometry/TrackingGeometryGeometryIdTests.cpp @@ -26,8 +26,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -138,5 +137,4 @@ BOOST_AUTO_TEST_CASE(GeometryIdentifier_containervolume_test) { } } -} // end of namespace Test -} // end of namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Geometry/VolumeTests.cpp b/Tests/UnitTests/Core/Geometry/VolumeTests.cpp index ed719db4eac..0d98444fe7f 100644 --- a/Tests/UnitTests/Core/Geometry/VolumeTests.cpp +++ b/Tests/UnitTests/Core/Geometry/VolumeTests.cpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(VolumeTest) { using namespace Acts::UnitLiterals; @@ -76,5 +75,4 @@ BOOST_AUTO_TEST_CASE(VolumeTest) { BOOST_CHECK_EQUAL(volume.binningPosition(gctx, binX), volume.center()); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/MagneticField/ConstantBFieldTests.cpp b/Tests/UnitTests/Core/MagneticField/ConstantBFieldTests.cpp index 7018cce7d09..01f034369c0 100644 --- a/Tests/UnitTests/Core/MagneticField/ConstantBFieldTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/ConstantBFieldTests.cpp @@ -22,8 +22,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context MagneticFieldContext mfContext = MagneticFieldContext(); @@ -122,5 +121,4 @@ BOOST_DATA_TEST_CASE( BOOST_CHECK_EQUAL(Btrue, BField.getField(-2 * pos, bCache).value()); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp b/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp index 80351759345..4a6ad3df443 100644 --- a/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp @@ -32,8 +32,7 @@ using Acts::VectorHelpers::perp; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context MagneticFieldContext mfContext = MagneticFieldContext(); @@ -170,5 +169,4 @@ BOOST_AUTO_TEST_CASE(InterpolatedBFieldMap_rz) { BOOST_CHECK(c.isInside(transformPos((pos << 0, 2, -4.7).finished()))); BOOST_CHECK(!c.isInside(transformPos((pos << 5, 2, 14.).finished()))); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/MagneticField/MagneticFieldProviderTests.cpp b/Tests/UnitTests/Core/MagneticField/MagneticFieldProviderTests.cpp index e601660c7bb..a57275d08b7 100644 --- a/Tests/UnitTests/Core/MagneticField/MagneticFieldProviderTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/MagneticFieldProviderTests.cpp @@ -11,8 +11,7 @@ #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/MagneticField/MagneticFieldProvider.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context MagneticFieldContext mfContext = MagneticFieldContext(); @@ -52,5 +51,4 @@ BOOST_AUTO_TEST_CASE(TypeErasedCacheType) { BOOST_CHECK(destructor_called); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/MagneticField/SolenoidBFieldTests.cpp b/Tests/UnitTests/Core/MagneticField/SolenoidBFieldTests.cpp index aa5d9f3b92d..d66b8097060 100644 --- a/Tests/UnitTests/Core/MagneticField/SolenoidBFieldTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/SolenoidBFieldTests.cpp @@ -23,8 +23,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(TestSolenoidBField) { // Create a test context @@ -111,5 +110,4 @@ BOOST_AUTO_TEST_CASE(TestSolenoidBField) { // outf.close(); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp index 82db7010121..b5f41f55185 100644 --- a/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(AccumulatedSurfaceMaterial_construction_test) { @@ -186,5 +185,4 @@ BOOST_AUTO_TEST_CASE(AccumulatedSurfaceMaterial_variance_0D) { BOOST_CHECK_EQUAL(trackCount, 2u); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp index c332318bda7..1468cb8f0b9 100644 --- a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp @@ -17,9 +17,7 @@ #include #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(BinnedSurfaceMaterial_construction_test) { @@ -59,5 +57,4 @@ BOOST_AUTO_TEST_CASE(BinnedSurfaceMaterial_construction_test) { BinnedSurfaceMaterial bsmMoveAssigned(std::move(bsmAssigned)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp index 88dbbad476f..aa31a88f46c 100644 --- a/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp @@ -18,9 +18,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(HomogeneousSurfaceMaterial_construction_test) { @@ -172,5 +170,4 @@ BOOST_AUTO_TEST_CASE(HomogeneousSurfaceMaterial_access_test) { BOOST_CHECK_EQUAL(mat, matFwdPre); BOOST_CHECK_EQUAL(vacuum, matBwdPre); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/HomogeneousVolumeMaterialTests.cpp b/Tests/UnitTests/Core/Material/HomogeneousVolumeMaterialTests.cpp index 0a8cb8eecbb..09fac3c8e54 100644 --- a/Tests/UnitTests/Core/Material/HomogeneousVolumeMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/HomogeneousVolumeMaterialTests.cpp @@ -14,9 +14,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(HomogeneousVolumeMaterial_construction_test) { @@ -56,5 +54,4 @@ BOOST_AUTO_TEST_CASE(HomogeneousVolumeMaterial_access_test) { // Test equality of the copy BOOST_CHECK_EQUAL(mat, mat3d); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp index 824eab95c26..24bb823db74 100644 --- a/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp @@ -17,9 +17,7 @@ #include #include -namespace Acts { - -namespace Test { +namespace Acts::Test { class SurfaceMaterialStub : public ISurfaceMaterial { using ISurfaceMaterial::ISurfaceMaterial; @@ -70,5 +68,4 @@ BOOST_AUTO_TEST_CASE(ISurfaceMaterial_factor_test) { 1 - splitFactor); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp index 4739d4c17e7..912d76f9957 100644 --- a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp +++ b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp @@ -28,9 +28,7 @@ #include #include -namespace Acts { - -namespace Test { +namespace Acts::Test { constexpr unsigned int dim = 2; using grid_t = Grid -namespace Acts { -namespace Test { +namespace Acts::Test { auto tContext = GeometryContext(); auto mContext = MagneticFieldContext(); @@ -94,5 +93,4 @@ BOOST_AUTO_TEST_CASE(FindDetectorVolumeIntersections) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp b/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp index 8f9aee24e9d..4f76a425714 100644 --- a/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp +++ b/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp @@ -26,8 +26,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { using EAxis = Acts::detail::EquidistantAxis; using Grid2D = Acts::Grid; @@ -412,5 +411,4 @@ BOOST_AUTO_TEST_CASE(Cylindrical_Grid_test) { BOOST_CHECK_EQUAL(matMap.atLocalBins(index3), vacuum.parameters()); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/MaterialInteractionAssignmentTests.cpp b/Tests/UnitTests/Core/Material/MaterialInteractionAssignmentTests.cpp index 603884bd41b..9187453734c 100644 --- a/Tests/UnitTests/Core/Material/MaterialInteractionAssignmentTests.cpp +++ b/Tests/UnitTests/Core/Material/MaterialInteractionAssignmentTests.cpp @@ -22,8 +22,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { auto tContext = GeometryContext(); @@ -302,5 +301,4 @@ BOOST_AUTO_TEST_CASE(AssignWithPathLength) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp b/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp index a10959a6af5..7c1c031fb4b 100644 --- a/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp +++ b/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp @@ -35,8 +35,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { auto tContext = GeometryContext(); auto mContext = MagneticFieldContext(); @@ -203,5 +202,4 @@ BOOST_AUTO_TEST_CASE(FindSurfaceIntersectionsTrackingVolume) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp index e50d38429ab..bb084a3ccd1 100644 --- a/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp @@ -14,9 +14,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(ProtoSurfaceMaterial_construction_test) { @@ -31,5 +29,4 @@ BOOST_AUTO_TEST_CASE(ProtoSurfaceMaterial_construction_test) { ProtoSurfaceMaterial smpCopyMoved(std::move(smpCopy)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp b/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp index 5b4b1c76622..d075e4db2d5 100644 --- a/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp @@ -14,9 +14,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(ProtoVolumeMaterial_construction_test) { @@ -32,5 +30,4 @@ BOOST_AUTO_TEST_CASE(ProtoVolumeMaterial_construction_test) { ProtoVolumeMaterial vmpCopyMoved(std::move(vmpCopy)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Navigation/DetectorVolumeUpdatersTests.cpp b/Tests/UnitTests/Core/Navigation/DetectorVolumeUpdatersTests.cpp index c6e8963333b..abe8ca8a0f3 100644 --- a/Tests/UnitTests/Core/Navigation/DetectorVolumeUpdatersTests.cpp +++ b/Tests/UnitTests/Core/Navigation/DetectorVolumeUpdatersTests.cpp @@ -22,11 +22,9 @@ // A test context Acts::GeometryContext tContext; -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume {}; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental auto volumeA = std::make_shared(); auto volumeB = std::make_shared(); diff --git a/Tests/UnitTests/Core/Navigation/NavigationStateTests.cpp b/Tests/UnitTests/Core/Navigation/NavigationStateTests.cpp index 0fce099f478..e9f1f1b35aa 100644 --- a/Tests/UnitTests/Core/Navigation/NavigationStateTests.cpp +++ b/Tests/UnitTests/Core/Navigation/NavigationStateTests.cpp @@ -19,12 +19,10 @@ #include #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { /// Define a dummy detector volume class DetectorVolume {}; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental BOOST_AUTO_TEST_SUITE(Experimental) diff --git a/Tests/UnitTests/Core/Propagator/AtlasStepperTests.cpp b/Tests/UnitTests/Core/Propagator/AtlasStepperTests.cpp index 0d58576b9a5..a2895ebb50a 100644 --- a/Tests/UnitTests/Core/Propagator/AtlasStepperTests.cpp +++ b/Tests/UnitTests/Core/Propagator/AtlasStepperTests.cpp @@ -48,8 +48,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; @@ -609,5 +608,4 @@ BOOST_AUTO_TEST_CASE(StepSizeSurface) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/AuctioneerTests.cpp b/Tests/UnitTests/Core/Propagator/AuctioneerTests.cpp index c8d41abc78d..8d3a96158ea 100644 --- a/Tests/UnitTests/Core/Propagator/AuctioneerTests.cpp +++ b/Tests/UnitTests/Core/Propagator/AuctioneerTests.cpp @@ -12,8 +12,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(AuctioneerTest_VoidAuctioneer) { // Build arbitrary vector @@ -50,5 +49,4 @@ BOOST_AUTO_TEST_CASE(AuctioneerTest_HighestValidAuctioneer) { BOOST_CHECK_EQUAL_COLLECTIONS(expected.begin(), expected.end(), resultFva.begin(), resultFva.end()); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/ConstrainedStepTests.cpp b/Tests/UnitTests/Core/Propagator/ConstrainedStepTests.cpp index c1567ec3a5c..6a703bf28f3 100644 --- a/Tests/UnitTests/Core/Propagator/ConstrainedStepTests.cpp +++ b/Tests/UnitTests/Core/Propagator/ConstrainedStepTests.cpp @@ -14,8 +14,7 @@ #include -namespace Acts { -namespace Test { +namespace Acts::Test { // This tests the implementation of the AbortList // and the standard aborters @@ -60,5 +59,4 @@ BOOST_AUTO_TEST_CASE(ConstrainedStepTest) { BOOST_CHECK_EQUAL(stepSize_p.value(), 0.05); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/CovarianceEngineTests.cpp b/Tests/UnitTests/Core/Propagator/CovarianceEngineTests.cpp index ebc6bea28ea..7dbe9b979d9 100644 --- a/Tests/UnitTests/Core/Propagator/CovarianceEngineTests.cpp +++ b/Tests/UnitTests/Core/Propagator/CovarianceEngineTests.cpp @@ -37,8 +37,7 @@ namespace bdata = boost::unit_test::data; -namespace Acts { -namespace Test { +namespace Acts::Test { Acts::GeometryContext gctx; Acts::MagneticFieldContext mctx; @@ -505,5 +504,4 @@ BOOST_DATA_TEST_CASE(CovarianceConversionPerigee, CHECK_CLOSE_ABS(covB, covC, 1e-7); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp b/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp index 903553ba324..0ee45e58a2b 100644 --- a/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp @@ -46,8 +46,7 @@ class Surface; namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -200,5 +199,4 @@ BOOST_DATA_TEST_CASE( runTest(rpropagator, dpropagator, pT, phi, theta, charge, index); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/EigenStepperTests.cpp b/Tests/UnitTests/Core/Propagator/EigenStepperTests.cpp index 656be3a684a..34b4b4a3348 100644 --- a/Tests/UnitTests/Core/Propagator/EigenStepperTests.cpp +++ b/Tests/UnitTests/Core/Propagator/EigenStepperTests.cpp @@ -75,8 +75,7 @@ class Logger; using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -1155,5 +1154,4 @@ BOOST_AUTO_TEST_CASE(step_extension_trackercalomdt_test) { } } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/ExtrapolatorTests.cpp b/Tests/UnitTests/Core/Propagator/ExtrapolatorTests.cpp index 7a77f0f83b6..14abef62502 100644 --- a/Tests/UnitTests/Core/Propagator/ExtrapolatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/ExtrapolatorTests.cpp @@ -46,8 +46,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -288,5 +287,4 @@ BOOST_DATA_TEST_CASE( } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/JacobianEngineTests.cpp b/Tests/UnitTests/Core/Propagator/JacobianEngineTests.cpp index cd5715287e3..8065d16a9bb 100644 --- a/Tests/UnitTests/Core/Propagator/JacobianEngineTests.cpp +++ b/Tests/UnitTests/Core/Propagator/JacobianEngineTests.cpp @@ -20,8 +20,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// Helper function tests BOOST_AUTO_TEST_CASE(jacobian_engine_helper) { @@ -265,5 +264,4 @@ BOOST_AUTO_TEST_CASE(jacobian_engine_to_free) { BOOST_CHECK(newFreeCovariance1.isApprox(newFreeCovariance2)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/JacobianTests.cpp b/Tests/UnitTests/Core/Propagator/JacobianTests.cpp index 701267c716d..e5791a7bff8 100644 --- a/Tests/UnitTests/Core/Propagator/JacobianTests.cpp +++ b/Tests/UnitTests/Core/Propagator/JacobianTests.cpp @@ -38,8 +38,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using BFieldType = ConstantBField; using EigenStepperType = EigenStepper<>; @@ -266,5 +265,4 @@ BOOST_AUTO_TEST_CASE(JacobianStrawToGlobalTest) { testJacobianToGlobal(atStraw); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/KalmanExtrapolatorTests.cpp b/Tests/UnitTests/Core/Propagator/KalmanExtrapolatorTests.cpp index 2c99e603375..700caf744ee 100644 --- a/Tests/UnitTests/Core/Propagator/KalmanExtrapolatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/KalmanExtrapolatorTests.cpp @@ -42,8 +42,7 @@ struct EndOfWorldReached; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Jacobian = BoundMatrix; using Covariance = BoundSquareMatrix; @@ -184,5 +183,4 @@ BOOST_AUTO_TEST_CASE(kalman_extrapolator) { CHECK_CLOSE_OR_SMALL(pJacobian, accJacobian, 1e-6, 1e-9); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp b/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp index 5fea940e01f..f14679f77db 100644 --- a/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp +++ b/Tests/UnitTests/Core/Propagator/MaterialCollectionTests.cpp @@ -46,8 +46,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -407,5 +406,4 @@ BOOST_DATA_TEST_CASE( runTest(slpropagator, pT, phi, theta, charge, index); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp index 4fe5a409c38..3f0aec61513 100644 --- a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp @@ -52,8 +52,7 @@ struct FreeToBoundCorrection; using namespace Acts::UnitLiterals; using Acts::VectorHelpers::perp; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -693,5 +692,4 @@ BOOST_AUTO_TEST_CASE(Navigator_target_methods) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp b/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp index d3de87fc51f..b314c313158 100644 --- a/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp @@ -59,8 +59,7 @@ using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; using Acts::VectorHelpers::perp; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -485,5 +484,4 @@ BOOST_AUTO_TEST_CASE(BasicPropagatorInterface) { "Propagator unexpectedly inherits from BasePropagator"); } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/StraightLineStepperTests.cpp b/Tests/UnitTests/Core/Propagator/StraightLineStepperTests.cpp index 54fb8ff3fe4..814806086ab 100644 --- a/Tests/UnitTests/Core/Propagator/StraightLineStepperTests.cpp +++ b/Tests/UnitTests/Core/Propagator/StraightLineStepperTests.cpp @@ -38,8 +38,7 @@ using Acts::VectorHelpers::makeVector4; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -392,5 +391,4 @@ BOOST_AUTO_TEST_CASE(straight_line_stepper_test) { CHECK_CLOSE_COVARIANCE(slsState.cov, Covariance(2. * cov), 1e-6); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/VolumeMaterialInteractionTests.cpp b/Tests/UnitTests/Core/Propagator/VolumeMaterialInteractionTests.cpp index cbef61a954b..d37ac188324 100644 --- a/Tests/UnitTests/Core/Propagator/VolumeMaterialInteractionTests.cpp +++ b/Tests/UnitTests/Core/Propagator/VolumeMaterialInteractionTests.cpp @@ -25,8 +25,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { /// @brief Simplified stepper state struct StepperState { @@ -136,5 +135,4 @@ BOOST_AUTO_TEST_CASE(volume_material_interaction_test) { BOOST_CHECK_EQUAL(volMatInt.pathCorrection, 0.); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/SpacePointFormation/SpacePointBuilderTests.cpp b/Tests/UnitTests/Core/SpacePointFormation/SpacePointBuilderTests.cpp index 95e3b4b4b51..1d896999fbf 100644 --- a/Tests/UnitTests/Core/SpacePointFormation/SpacePointBuilderTests.cpp +++ b/Tests/UnitTests/Core/SpacePointFormation/SpacePointBuilderTests.cpp @@ -47,8 +47,7 @@ namespace bdata = boost::unit_test::data; -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace UnitLiterals; @@ -321,5 +320,4 @@ BOOST_DATA_TEST_CASE(SpacePointBuilder_basic, bdata::xrange(1), index) { BOOST_CHECK_EQUAL(spacePoints.size(), 6); } -} // end of namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/AlignmentHelperTests.cpp b/Tests/UnitTests/Core/Surfaces/AlignmentHelperTests.cpp index 451e0c89386..ada970908f3 100644 --- a/Tests/UnitTests/Core/Surfaces/AlignmentHelperTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/AlignmentHelperTests.cpp @@ -16,8 +16,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// Test for rotation matrix and calculation of derivative of rotated x/y/z axis /// w.r.t. rotation parameters @@ -123,5 +122,4 @@ BOOST_AUTO_TEST_CASE(alignment_helper_test) { // Check if the derivative for local z axis is as expected CHECK_CLOSE_ABS(irotToLocalZAxis, expRotToZAxis, 1e-15); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp index 9b104c603df..691d60a6619 100644 --- a/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp @@ -30,8 +30,7 @@ // using boost::test_tools::output_test_stream; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -276,5 +275,4 @@ BOOST_AUTO_TEST_CASE(ConeSurfaceAlignment) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp index 35199eda4bb..afd5257d46c 100644 --- a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp @@ -38,8 +38,7 @@ namespace Acts { class AssertionFailureException; } // namespace Acts -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext testContext = GeometryContext(); @@ -329,6 +328,4 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceBinningPosition) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/PerigeeSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/PerigeeSurfaceTests.cpp index 43219963b34..4e5024c2f24 100644 --- a/Tests/UnitTests/Core/Surfaces/PerigeeSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/PerigeeSurfaceTests.cpp @@ -18,8 +18,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -90,5 +89,4 @@ BOOST_AUTO_TEST_CASE(EqualityOperators) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp index e365d4325b4..f4e3727fcb1 100644 --- a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp @@ -37,8 +37,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -361,6 +360,4 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceAlignment) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/StrawSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/StrawSurfaceTests.cpp index 383e52a0e39..b58985e2e9a 100644 --- a/Tests/UnitTests/Core/Surfaces/StrawSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/StrawSurfaceTests.cpp @@ -27,9 +27,7 @@ class PlanarBounds; namespace utf = boost::unit_test; -namespace Acts { - -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -132,6 +130,4 @@ BOOST_AUTO_TEST_CASE(EqualityOperators) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp b/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp index a56b9ccdfe3..b41a17b786b 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp @@ -40,9 +40,7 @@ using Acts::VectorHelpers::phi; -namespace Acts { - -namespace Test { +namespace Acts::Test { // Create a test context GeometryContext tgContext = GeometryContext(); @@ -277,6 +275,4 @@ BOOST_AUTO_TEST_CASE(SurfaceArray_manyElementsSingleLookup) { } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp b/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp index d9af10cdd97..52b836d0fc7 100644 --- a/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp +++ b/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp @@ -42,8 +42,7 @@ using namespace Acts::detail::Test; Acts::Logging::Level logLevel = Acts::Logging::VERBOSE; const auto gx2fLogger = Acts::getDefaultLogger("Gx2f", logLevel); -namespace Acts { -namespace Test { +namespace Acts::Test { //// Construct initial track parameters. Acts::CurvilinearTrackParameters makeParameters( @@ -804,5 +803,4 @@ BOOST_AUTO_TEST_CASE(NotEnoughMeasurements) { ACTS_INFO("*** Test: NotEnoughMeasurements -- Finish"); } BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/AnnealingUtilityTests.cpp b/Tests/UnitTests/Core/Utilities/AnnealingUtilityTests.cpp index e84ad10f777..cad4c95765e 100644 --- a/Tests/UnitTests/Core/Utilities/AnnealingUtilityTests.cpp +++ b/Tests/UnitTests/Core/Utilities/AnnealingUtilityTests.cpp @@ -15,8 +15,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(annealing_tool_singleChi2_tests) { std::vector temperatures{64., 16., 4., 2., 1.5, 1.}; @@ -176,5 +175,4 @@ BOOST_AUTO_TEST_CASE(annealing_tool_multiChi2_tests) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp b/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp index 699868204b2..34c3bea2803 100644 --- a/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp @@ -21,8 +21,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Test Radial BOOST_AUTO_TEST_CASE(BinAdjustment_Radial) { @@ -84,5 +83,4 @@ BOOST_AUTO_TEST_CASE(BinAdjustment_Trapezoid) { BOOST_CHECK_EQUAL(buAdjust.binningData()[1].max, 30); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp b/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp index 49531e2248a..07c8310aecd 100644 --- a/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp @@ -20,8 +20,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // Test Cylinder BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_Cylinder) { @@ -77,5 +76,4 @@ BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_Cuboid) { BOOST_CHECK_EQUAL(buAdjust.binningData()[2].max, 42); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp b/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp index 525777ee345..882fc5703c6 100644 --- a/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp @@ -18,8 +18,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // OPEN - equidistant binning tests BOOST_AUTO_TEST_CASE(BinUtility_equidistant_binning) { @@ -128,5 +127,4 @@ BOOST_AUTO_TEST_CASE(BinUtility_transform) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp b/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp index 1645819ad62..ebea495abf8 100644 --- a/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp @@ -19,8 +19,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // the test positions in 3D Vector3 xyzPosition(0.5, 1.5, 2.5); @@ -403,5 +402,4 @@ BOOST_AUTO_TEST_CASE(BinningData_phi_modules) { BOOST_CHECK_EQUAL(phiData_mod.searchGlobal(underscaledPos), std::size_t(4)); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp b/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp index b7bbedfece9..5f2e4e46b6b 100644 --- a/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp +++ b/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp @@ -32,8 +32,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { struct Object {}; @@ -1256,5 +1255,4 @@ BOOST_AUTO_TEST_CASE(ostream_operator) { BOOST_CHECK(ss.str() == "AABB(ctr=(0.5, 0.5) vmin=(-1, -1) vmax=(2, 2))"); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/DBScanTests.cpp b/Tests/UnitTests/Core/Utilities/DBScanTests.cpp index ab47c630d62..efd502a464a 100644 --- a/Tests/UnitTests/Core/Utilities/DBScanTests.cpp +++ b/Tests/UnitTests/Core/Utilities/DBScanTests.cpp @@ -74,8 +74,7 @@ std::vector> test_vector{ {6.55276593, -7.81387909}, {-1.79854507, -2.10170986}}; } // namespace -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(ClusteringTest2D) { using DBSCAN = Acts::DBScan<2, double, 4>; @@ -104,5 +103,4 @@ BOOST_AUTO_TEST_CASE(ClusteringTest2D) { clusteredPoints.clear(); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/ExtendableTests.cpp b/Tests/UnitTests/Core/Utilities/ExtendableTests.cpp index bb42909d1e6..445ef1cb4ad 100644 --- a/Tests/UnitTests/Core/Utilities/ExtendableTests.cpp +++ b/Tests/UnitTests/Core/Utilities/ExtendableTests.cpp @@ -15,8 +15,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { // This tests the implementation of the ActionList // and the standard aborters @@ -59,5 +58,4 @@ BOOST_AUTO_TEST_CASE(Extendable_) { BOOST_CHECK_EQUAL(abcList.get().vaC, '4'); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp b/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp index 5c54160c3c9..e633c2db5a1 100644 --- a/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp +++ b/Tests/UnitTests/Core/Utilities/FiniteStateMachineTests.cpp @@ -14,8 +14,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { namespace states { struct Disconnected {}; @@ -298,5 +297,4 @@ BOOST_AUTO_TEST_CASE(InternalTransitions) { BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp b/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp index 7428e585055..d2570aa4068 100644 --- a/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp +++ b/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp @@ -15,9 +15,7 @@ using namespace Acts::HashedStringLiteral; -namespace Acts { - -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(string_hashes) { // compile time checks @@ -36,6 +34,4 @@ BOOST_AUTO_TEST_CASE(string_hashes) { static_assert(hashString(sv) == 440920331, "Invalid"); } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp index 7d149307d26..c2f9afe75e2 100644 --- a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp +++ b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp @@ -23,8 +23,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { class Object {}; @@ -202,5 +201,4 @@ BOOST_AUTO_TEST_CASE(IntersectionStatusPrinting) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/KDTreeTests.cpp b/Tests/UnitTests/Core/Utilities/KDTreeTests.cpp index 20979d4dab7..9c4a4d2fe64 100644 --- a/Tests/UnitTests/Core/Utilities/KDTreeTests.cpp +++ b/Tests/UnitTests/Core/Utilities/KDTreeTests.cpp @@ -73,8 +73,7 @@ std::vector, int>> test_vector{ {{-6.0, 3.5, -7.4}, 7}, {{3.2, -6.2, 3.9}, -25}}; } -namespace Acts { -namespace Test { +namespace Acts::Test { struct TreeFixture1DDoubleInt1 { TreeFixture1DDoubleInt1() @@ -634,5 +633,4 @@ BOOST_AUTO_TEST_CASE(range_search_many_same) { BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/LoggerTests.cpp b/Tests/UnitTests/Core/Utilities/LoggerTests.cpp index 7d82a3681dc..e6451b547cf 100644 --- a/Tests/UnitTests/Core/Utilities/LoggerTests.cpp +++ b/Tests/UnitTests/Core/Utilities/LoggerTests.cpp @@ -20,8 +20,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace Acts::Logging; @@ -146,5 +145,4 @@ BOOST_AUTO_TEST_CASE(DEBUG_test) { BOOST_AUTO_TEST_CASE(VERBOSE_test) { debug_level_test("verbose_log.txt", VERBOSE); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Utilities/MaterialMapUtilsTests.cpp b/Tests/UnitTests/Core/Utilities/MaterialMapUtilsTests.cpp index 26278984275..4f9c3561ca2 100644 --- a/Tests/UnitTests/Core/Utilities/MaterialMapUtilsTests.cpp +++ b/Tests/UnitTests/Core/Utilities/MaterialMapUtilsTests.cpp @@ -21,8 +21,7 @@ namespace bdata = boost::unit_test::data; -namespace Acts { -namespace Test { +namespace Acts::Test { BOOST_AUTO_TEST_CASE(materialmap_creation) { // Create grid values @@ -125,5 +124,4 @@ BOOST_AUTO_TEST_CASE(materialmap_creation) { CHECK_CLOSE_ABS(value1_xyz.parameters(), mat1_xyz.parameters(), 1e-9); CHECK_CLOSE_ABS(value2_xyz.parameters(), mat2_xyz.parameters(), 1e-9); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/AdaptiveGridTrackDensityTests.cpp b/Tests/UnitTests/Core/Vertexing/AdaptiveGridTrackDensityTests.cpp index 2277197ce1a..cccf8c08c18 100644 --- a/Tests/UnitTests/Core/Vertexing/AdaptiveGridTrackDensityTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/AdaptiveGridTrackDensityTests.cpp @@ -27,8 +27,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -649,5 +648,4 @@ BOOST_AUTO_TEST_CASE(track_removing) { CHECK_CLOSE_ABS(0., sixthDensitySum2D, 1e-4); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp index 71afa1f4813..a2b9dcef060 100644 --- a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFinderTests.cpp @@ -55,8 +55,7 @@ #include "VertexingDataHelper.hpp" -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace Acts::UnitLiterals; @@ -671,5 +670,4 @@ BOOST_AUTO_TEST_CASE( } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp index c52ec3cded2..7c67926603e 100644 --- a/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/AdaptiveMultiVertexFitterTests.cpp @@ -49,8 +49,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; @@ -733,5 +732,4 @@ BOOST_AUTO_TEST_CASE(adaptive_multi_vertex_fitter_test_athena) { CHECK_CLOSE_ABS(vtx2FQ.second, expVtx2ndf, 0.001); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp b/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp index ae15fc109d2..981aed262db 100644 --- a/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/FullBilloirVertexFitterTests.cpp @@ -48,8 +48,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -297,5 +296,4 @@ BOOST_AUTO_TEST_CASE(billoir_vertex_fitter_defaulttrack_test) { } } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/GaussianGridTrackDensityTests.cpp b/Tests/UnitTests/Core/Vertexing/GaussianGridTrackDensityTests.cpp index e9f059d5263..8bdba7c18e8 100644 --- a/Tests/UnitTests/Core/Vertexing/GaussianGridTrackDensityTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/GaussianGridTrackDensityTests.cpp @@ -30,8 +30,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -309,5 +308,4 @@ BOOST_AUTO_TEST_CASE(gaussian_grid_seed_width_test) { BOOST_CHECK_NE(width, 0.); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/GridDensityVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/GridDensityVertexFinderTests.cpp index 6e260e5fc06..d40b7cb036d 100644 --- a/Tests/UnitTests/Core/Vertexing/GridDensityVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/GridDensityVertexFinderTests.cpp @@ -42,8 +42,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -482,5 +481,4 @@ BOOST_AUTO_TEST_CASE(grid_density_vertex_finder_seed_width_test) { CHECK_CLOSE_ABS(covZZ1, covZZ2, 1e-4); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp index f14fe5b180b..fd11b9e470c 100644 --- a/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/IterativeVertexFinderTests.cpp @@ -59,8 +59,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; using Propagator = Acts::Propagator>; @@ -646,5 +645,4 @@ BOOST_AUTO_TEST_CASE(iterative_finder_test_athena_reference) { // } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/KalmanVertexUpdaterTests.cpp b/Tests/UnitTests/Core/Vertexing/KalmanVertexUpdaterTests.cpp index 88e956ceb72..ca88b35a147 100644 --- a/Tests/UnitTests/Core/Vertexing/KalmanVertexUpdaterTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/KalmanVertexUpdaterTests.cpp @@ -47,8 +47,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; using Propagator = Acts::Propagator>; @@ -329,5 +328,4 @@ BOOST_AUTO_TEST_CASE(Kalman_Vertex_TrackUpdater) { } // end test case -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp b/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp index 7ee6e4a3b2b..46b762aeca0 100644 --- a/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/LinearizedTrackFactoryTests.cpp @@ -44,8 +44,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; // We will compare analytical and numerical computations in the case of a @@ -277,5 +276,4 @@ BOOST_AUTO_TEST_CASE(linearized_track_factory_test) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp index 44249fb1cc6..94c37e32b1d 100644 --- a/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/TrackDensityVertexFinderTests.cpp @@ -45,8 +45,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; using Acts::VectorHelpers::makeVector4; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; @@ -372,5 +371,4 @@ BOOST_AUTO_TEST_CASE(track_density_finder_usertrack_test) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/VertexingDataHelper.hpp b/Tests/UnitTests/Core/Vertexing/VertexingDataHelper.hpp index 89f93b5ac18..de0963c14bd 100644 --- a/Tests/UnitTests/Core/Vertexing/VertexingDataHelper.hpp +++ b/Tests/UnitTests/Core/Vertexing/VertexingDataHelper.hpp @@ -17,8 +17,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { using namespace Acts::UnitLiterals; using Covariance = BoundSquareMatrix; @@ -147,5 +146,4 @@ readTracksAndVertexCSV(const std::string& toolString, return std::make_tuple(beamspotConstraint, vertices, tracks); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp b/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp index 3ae2042bfb2..b9bca4a9c37 100644 --- a/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp +++ b/Tests/UnitTests/Core/Vertexing/ZScanVertexFinderTests.cpp @@ -49,8 +49,7 @@ namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; -namespace Acts { -namespace Test { +namespace Acts::Test { using Covariance = BoundSquareMatrix; using Propagator = Acts::Propagator>; @@ -314,5 +313,4 @@ BOOST_AUTO_TEST_CASE(zscan_finder_usertrack_test) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Visualization/EventDataView3DBase.hpp b/Tests/UnitTests/Core/Visualization/EventDataView3DBase.hpp index 5c103322625..2b08150ad6e 100644 --- a/Tests/UnitTests/Core/Visualization/EventDataView3DBase.hpp +++ b/Tests/UnitTests/Core/Visualization/EventDataView3DBase.hpp @@ -47,8 +47,7 @@ using Acts::VectorHelpers::makeVector4; -namespace Acts { -namespace EventDataView3DTest { +namespace Acts::EventDataView3DTest { using Covariance = BoundSquareMatrix; @@ -400,5 +399,4 @@ static inline std::string testMultiTrajectory(IVisualization3D& helper) { return ss.str(); } -} // namespace EventDataView3DTest -} // namespace Acts +} // namespace Acts::EventDataView3DTest diff --git a/Tests/UnitTests/Core/Visualization/PrimitivesView3DBase.hpp b/Tests/UnitTests/Core/Visualization/PrimitivesView3DBase.hpp index f3ae1cf1b98..505646cfd75 100644 --- a/Tests/UnitTests/Core/Visualization/PrimitivesView3DBase.hpp +++ b/Tests/UnitTests/Core/Visualization/PrimitivesView3DBase.hpp @@ -22,9 +22,7 @@ #include #include -namespace Acts { - -namespace PrimitivesView3DTest { +namespace Acts::PrimitivesView3DTest { // Test on a plane auto identity = Transform3::Identity(); @@ -117,5 +115,4 @@ static inline std::string run(IVisualization3D& helper) { return ss.str(); } -} // namespace PrimitivesView3DTest -} // namespace Acts +} // namespace Acts::PrimitivesView3DTest diff --git a/Tests/UnitTests/Core/Visualization/SurfaceView3DBase.hpp b/Tests/UnitTests/Core/Visualization/SurfaceView3DBase.hpp index f1e7902ec88..8de0a7fda5a 100644 --- a/Tests/UnitTests/Core/Visualization/SurfaceView3DBase.hpp +++ b/Tests/UnitTests/Core/Visualization/SurfaceView3DBase.hpp @@ -32,9 +32,7 @@ #include #include -namespace Acts { - -namespace SurfaceView3DTest { +namespace Acts::SurfaceView3DTest { /// Helper method to visualize all types of surfaces /// @@ -500,5 +498,4 @@ static inline std::string run(IVisualization3D& helper, bool triangulate, return cStream.str(); } -} // namespace SurfaceView3DTest -} // namespace Acts +} // namespace Acts::SurfaceView3DTest diff --git a/Tests/UnitTests/Core/Visualization/TrackingGeometryView3DBase.hpp b/Tests/UnitTests/Core/Visualization/TrackingGeometryView3DBase.hpp index 884523acc97..350e08e1490 100644 --- a/Tests/UnitTests/Core/Visualization/TrackingGeometryView3DBase.hpp +++ b/Tests/UnitTests/Core/Visualization/TrackingGeometryView3DBase.hpp @@ -18,9 +18,7 @@ #include #include -namespace Acts { - -namespace TrackingGeometryView3DTest { +namespace Acts::TrackingGeometryView3DTest { GeometryContext tgContext = GeometryContext(); @@ -66,5 +64,4 @@ static inline std::string run(IVisualization3D& helper, bool triangulate, return cStream.str(); } -} // namespace TrackingGeometryView3DTest -} // namespace Acts +} // namespace Acts::TrackingGeometryView3DTest diff --git a/Tests/UnitTests/Core/Visualization/Visualization3DTester.hpp b/Tests/UnitTests/Core/Visualization/Visualization3DTester.hpp index 7cf27eed7af..84f4c2046c2 100644 --- a/Tests/UnitTests/Core/Visualization/Visualization3DTester.hpp +++ b/Tests/UnitTests/Core/Visualization/Visualization3DTester.hpp @@ -15,9 +15,7 @@ #include -namespace Acts { - -namespace Test { +namespace Acts::Test { /// This is a test function that tests the validity of an obj stream /// It tests for special characters that are not allowed to be contained @@ -226,6 +224,4 @@ inline static std::vector testPlyString(const std::string& tString, return errorStrings; } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Visualization/VolumeView3DBase.hpp b/Tests/UnitTests/Core/Visualization/VolumeView3DBase.hpp index 6397c7a1d9f..00745012f74 100644 --- a/Tests/UnitTests/Core/Visualization/VolumeView3DBase.hpp +++ b/Tests/UnitTests/Core/Visualization/VolumeView3DBase.hpp @@ -21,9 +21,7 @@ #include #include -namespace Acts { - -namespace VolumeView3DTest { +namespace Acts::VolumeView3DTest { /// Helper method to visualize all types of surfaces /// @@ -181,5 +179,4 @@ static inline std::string run(IVisualization3D& helper, bool triangulate, return cStream.str(); } -} // namespace VolumeView3DTest -} // namespace Acts +} // namespace Acts::VolumeView3DTest diff --git a/Tests/UnitTests/Fatras/Kernel/TupleIndexOfTests.cpp b/Tests/UnitTests/Fatras/Kernel/TupleIndexOfTests.cpp index 5f1748119f6..baf49ab6bdf 100644 --- a/Tests/UnitTests/Fatras/Kernel/TupleIndexOfTests.cpp +++ b/Tests/UnitTests/Fatras/Kernel/TupleIndexOfTests.cpp @@ -12,12 +12,10 @@ #include -namespace ActsFatras { -namespace detail { +namespace ActsFatras::detail { template struct TupleIndexOf; -} // namespace detail -} // namespace ActsFatras +} // namespace ActsFatras::detail using ActsFatras::detail::TupleIndexOf; diff --git a/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp index ae59c4bcc97..374e81a9c5a 100644 --- a/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp @@ -22,11 +22,9 @@ #include -namespace Acts { -namespace Experimental { +namespace Acts::Experimental { class DetectorVolume {}; -} // namespace Experimental -} // namespace Acts +} // namespace Acts::Experimental Acts::GeometryContext tContext; diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoArb8ConversionTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoArb8ConversionTests.cpp index 4d5093b721d..651b19ab316 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoArb8ConversionTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoArb8ConversionTests.cpp @@ -33,9 +33,7 @@ #include "TGeoVolume.h" #include "TView.h" -namespace Acts { - -namespace Test { +namespace Acts::Test { GeometryContext tgContext = GeometryContext(); @@ -115,6 +113,4 @@ BOOST_AUTO_TEST_CASE(TGeoArb8_to_PlaneSurface) { } } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoBBoxConversionTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoBBoxConversionTests.cpp index 0bcd6daa77d..fcd96763043 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoBBoxConversionTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoBBoxConversionTests.cpp @@ -32,8 +32,7 @@ #include "TGeoVolume.h" #include "TView.h" -namespace Acts { -namespace Test { +namespace Acts::Test { GeometryContext tgContext = GeometryContext(); @@ -213,6 +212,4 @@ BOOST_AUTO_TEST_CASE(TGeoBBox_to_PlaneSurface) { objVis.write("TGeoConversion_TGeoBBox_PlaneSurface"); } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp index b948a639283..ccea59c4323 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp @@ -34,9 +34,7 @@ using namespace Acts::UnitLiterals; -namespace Acts { - -namespace Test { +namespace Acts::Test { /// @brief struct to load the global geometry struct RootGeometry { @@ -119,6 +117,4 @@ BOOST_AUTO_TEST_CASE(TGeoLayerBuilderTests) { } } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp index 043de958851..99ae9c2c2d8 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp @@ -24,9 +24,7 @@ #include "TGeoManager.h" -namespace Acts { - -namespace Test { +namespace Acts::Test { /// @brief struct to load the global geometry struct RootGeometry { @@ -109,5 +107,4 @@ BOOST_AUTO_TEST_CASE(TGeoParser_Pixel_SelectInnermost) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoPrimitivesHelperTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoPrimitivesHelperTests.cpp index f25f6828d55..bf895d28eb4 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoPrimitivesHelperTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoPrimitivesHelperTests.cpp @@ -14,8 +14,7 @@ #include #include -namespace Acts { -namespace Test { +namespace Acts::Test { /// @brief Unit test checking the match probability BOOST_AUTO_TEST_CASE(TGeoPrimitivesHelper_match) { @@ -27,5 +26,4 @@ BOOST_AUTO_TEST_CASE(TGeoPrimitivesHelper_match) { BOOST_CHECK(TGeoPrimitivesHelper::match(candidates, "BeamPipe")); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoTrd1ConversionTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoTrd1ConversionTests.cpp index 6e883f9334b..4b19a2c55bd 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoTrd1ConversionTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoTrd1ConversionTests.cpp @@ -37,8 +37,7 @@ #include "TGeoVolume.h" #include "TView.h" -namespace Acts { -namespace Test { +namespace Acts::Test { GeometryContext tgContext = GeometryContext(); @@ -112,5 +111,4 @@ BOOST_AUTO_TEST_CASE(TGeoTrd1_to_PlaneSurface) { objVis.write("TGeoConversion_TGeoTrd1_PlaneSurface"); } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoTrd2ConversionTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoTrd2ConversionTests.cpp index dd3f65eff00..d32b7ec5fe0 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoTrd2ConversionTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoTrd2ConversionTests.cpp @@ -37,8 +37,7 @@ #include "TGeoVolume.h" #include "TView.h" -namespace Acts { -namespace Test { +namespace Acts::Test { GeometryContext tgContext = GeometryContext(); @@ -180,5 +179,4 @@ BOOST_AUTO_TEST_CASE(TGeoTrd2_yz_to_PlaneSurface) { } } -} // namespace Test -} // namespace Acts +} // namespace Acts::Test diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoTubeConversionTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoTubeConversionTests.cpp index fb8a9aeb1e3..73305cc507d 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoTubeConversionTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoTubeConversionTests.cpp @@ -37,9 +37,7 @@ #include "TGeoVolume.h" #include "TView.h" -namespace Acts { - -namespace Test { +namespace Acts::Test { GeometryContext tgContext = GeometryContext(); @@ -250,6 +248,4 @@ BOOST_AUTO_TEST_CASE(TGeoTube_to_DiscSurface) { } } -} // namespace Test - -} // namespace Acts +} // namespace Acts::Test diff --git a/cmake/ActsStaticAnalysis.cmake b/cmake/ActsStaticAnalysis.cmake index 075adf125e9..b5464a9a5e0 100644 --- a/cmake/ActsStaticAnalysis.cmake +++ b/cmake/ActsStaticAnalysis.cmake @@ -14,6 +14,7 @@ if(ACTS_RUN_CLANG_TIDY) list(APPEND _chks "readability-braces-around-statements") list(APPEND _chks "readability-implicit-bool-cast") list(APPEND _chks "readability-implicit-bool-conversion") + list(APPEND _chks "modernize-concat-nested-namespaces") list(APPEND _chks "modernize-use-using") list(APPEND _chks "modernize-use-override") list(APPEND _chks "modernize-use-equals-default")