From e2f2993a05b15952f149739d7714ab6ce509ea37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20K=C3=B6hler?= <nicolas.koehler@cern.ch> Date: Mon, 8 Jun 2020 16:22:46 +0200 Subject: [PATCH] remove atomic TrackingVolume pointer by setting it in initialize --- .../CombinedMuonTrackBuilder.h | 7 ++--- .../src/CombinedMuonTrackBuilder.cxx | 29 +++++++++---------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h index 32a3cc6e9ed3..6846bb641070 100755 --- a/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h +++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/MuidTrackBuilder/CombinedMuonTrackBuilder.h @@ -221,8 +221,7 @@ class CombinedMuonTrackBuilder : public AthAlgTool, virtual public ICombinedMuon ToolHandle<Trk::ITrackSummaryTool> m_trackSummary; ToolHandle<Trk::ITrkMaterialProviderTool> m_materialUpdator; - ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", - "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; + ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; // Read handle for conditions object to get the field cache SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}; @@ -265,9 +264,7 @@ class CombinedMuonTrackBuilder : public AthAlgTool, virtual public ICombinedMuon // constants const Trk::Volume* m_calorimeterVolume; const Trk::Volume* m_indetVolume; - - // constant initialized the first time it's needed - mutable std::atomic<const Trk::TrackingVolume*> m_spectrometerEntrance{nullptr}; + const Trk::TrackingVolume* m_spectrometerEntrance; // vertex region and phi modularity for pseudo-measurement constraints Trk::RecVertex* m_beamAxis; diff --git a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx index bbeeef5eb042..bf8204a11ef2 100755 --- a/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx +++ b/Reconstruction/MuonIdentification/MuidTrackBuilder/src/CombinedMuonTrackBuilder.cxx @@ -107,6 +107,7 @@ CombinedMuonTrackBuilder::CombinedMuonTrackBuilder(const std::string& type, cons m_inputSlimming(false), m_calorimeterVolume(nullptr), m_indetVolume(nullptr), + m_spectrometerEntrance(nullptr), m_beamAxis(nullptr), m_perigeeSurface(nullptr), m_sigmaPhiSector(0), @@ -366,6 +367,15 @@ CombinedMuonTrackBuilder::initialize() m_vertex->dump(msg(MSG::DEBUG)); #endif + if (!m_trackingGeometrySvc) { + m_perigeeAtSpectrometerEntranceLocal = false; + // missing TrackingGeometrySvc - no perigee will be added at MS entrance + m_messageHelper->printWarning(41); + } else { + const Trk::TrackingGeometry* trkGeo = m_trackingGeometrySvc->trackingGeometry(); + if (trkGeo) m_spectrometerEntrance = trkGeo->trackingVolume("MuonSpectrometerEntrance"); + } + return StatusCode::SUCCESS; } @@ -3916,27 +3926,14 @@ CombinedMuonTrackBuilder::entrancePerigee(const Trk::TrackParameters* parameters // make sure the spectrometer entrance volume is available if (!parameters) return nullptr; - if (!m_spectrometerEntrance.load()) { - if (!m_trackingGeometrySvc) { - m_perigeeAtSpectrometerEntranceLocal = false; - // missing TrackingGeometrySvc - no perigee will be added at MS entrance - m_messageHelper->printWarning(41); - } else { - m_spectrometerEntrance.store( - m_trackingGeometrySvc->trackingGeometry()->trackingVolume("MuonSpectrometerEntrance")); - } - } - - if (!m_spectrometerEntrance.load()) { - return nullptr; - } + if (!m_spectrometerEntrance) return nullptr; const Trk::TrackParameters* entranceParameters = m_extrapolator->extrapolateToVolume( - *parameters, *m_spectrometerEntrance.load(), Trk::anyDirection, Trk::nonInteracting); + *parameters, *m_spectrometerEntrance, Trk::anyDirection, Trk::nonInteracting); if (!entranceParameters) return nullptr; - Trk::PerigeeSurface surface(entranceParameters->position()); + Trk::PerigeeSurface surface(entranceParameters->position()); const Trk::TrackParameters* trackParameters = m_extrapolator->extrapolateDirectly(*entranceParameters, surface); delete entranceParameters; -- GitLab