From fb365344f2c79719e6b1f4ab945c29585b8e9ac3 Mon Sep 17 00:00:00 2001 From: christos <christos@cern.ch> Date: Mon, 29 Apr 2019 21:39:13 +0100 Subject: [PATCH] Add ATLAS_CHECK_THREAD_SAFETY --- .../TrkEventUtils/ATLAS_CHECK_THREAD_SAFETY | 1 + .../TrkEventUtils/PerigeeFromVertexCreator.h | 9 +++--- .../TrkEventUtils/TruthCollectionFilter.h | 12 +++---- .../src/PerigeeFromVertexCreator.cxx | 4 +-- .../ATLAS_CHECK_THREAD_SAFETY | 1 + .../TrkMaterialOnTrack/EnergyLoss.h | 32 +++++++++---------- .../TrkMaterialOnTrack/MaterialEffectsBase.h | 4 +-- 7 files changed, 32 insertions(+), 31 deletions(-) create mode 100644 Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ATLAS_CHECK_THREAD_SAFETY create mode 100644 Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/ATLAS_CHECK_THREAD_SAFETY diff --git a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ATLAS_CHECK_THREAD_SAFETY b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 00000000000..0e5538127e0 --- /dev/null +++ b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Tracking/TrkEvent/TrkEventUtils diff --git a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/PerigeeFromVertexCreator.h b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/PerigeeFromVertexCreator.h index d1b42b72669..aeaf9f2c02e 100755 --- a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/PerigeeFromVertexCreator.h +++ b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/PerigeeFromVertexCreator.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ @@ -50,10 +50,9 @@ namespace Trk { Trk::Perigee* createNewPerigee(Amg::Vector3D& gp, double phi, double theta, double qOverP) const; private: - double m_field; //!< magnetic field in tesla, can be set through constructor - - static double s_unitConversion; //!< unit conversion factor - static double s_magField; //!< default magnetic field value + double m_field; //!< magnetic field in tesla, can be set through constructor + static const double s_unitConversion; //!< unit conversion factor + static const double s_magField; //!< default magnetic field value }; diff --git a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/TruthCollectionFilter.h b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/TruthCollectionFilter.h index 7a46036f6ef..a47e3ac218f 100755 --- a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/TruthCollectionFilter.h +++ b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/TruthCollectionFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /** @@ -8,11 +8,11 @@ * This file provides @ref TruthFilters that can be used with the * @ref TruthInverters. */ - - #ifndef TRUTHCOLLECTIONFILTER_H #define TRUTHCOLLECTIONFILTER_H +#include <atomic> + namespace Trk { /** @@ -86,9 +86,9 @@ namespace Trk { private: BasicTruthCollectionFilter<TruthCollection> m_basicFilter; double m_probabilityCut; - mutable unsigned m_numTruthTotal; - mutable unsigned m_numTruthInvalid; - mutable unsigned m_numTruthNoVtx; + std::atomic_ulong m_numTruthTotal; + std::atomic_ulong m_numTruthInvalid; + std::atomic_ulong m_numTruthNoVtx; }; template<class OStream, class TruthCollection> diff --git a/Tracking/TrkEvent/TrkEventUtils/src/PerigeeFromVertexCreator.cxx b/Tracking/TrkEvent/TrkEventUtils/src/PerigeeFromVertexCreator.cxx index be037c6386b..7ce915e9acf 100755 --- a/Tracking/TrkEvent/TrkEventUtils/src/PerigeeFromVertexCreator.cxx +++ b/Tracking/TrkEvent/TrkEventUtils/src/PerigeeFromVertexCreator.cxx @@ -9,8 +9,8 @@ #include "TrkEventUtils/PerigeeFromVertexCreator.h" #include <cmath> -double Trk::PerigeeFromVertexCreator::s_unitConversion = -0.3; -double Trk::PerigeeFromVertexCreator::s_magField = 2.083; +const double Trk::PerigeeFromVertexCreator::s_unitConversion = -0.3; +const double Trk::PerigeeFromVertexCreator::s_magField = 2.083; Trk::Perigee Trk::PerigeeFromVertexCreator::createPerigee(Amg::Vector3D& vertex, Amg::Vector3D& momentum, diff --git a/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/ATLAS_CHECK_THREAD_SAFETY b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 00000000000..dcada01d90c --- /dev/null +++ b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Tracking/TrkEvent/TrkMaterialOnTrack diff --git a/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/EnergyLoss.h b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/EnergyLoss.h index b69903e4d97..348b84614fd 100755 --- a/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/EnergyLoss.h +++ b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/EnergyLoss.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -87,13 +87,13 @@ class EnergyLoss { double length() const; //update from mean values - void update(double ioni, double sigi, double rad, double sigr, bool mpv=false) const; + void update(double ioni, double sigi, double rad, double sigr, bool mpv=false) ; //update - void update( EnergyLoss&, bool mpv=false ) const; + void update( EnergyLoss&, bool mpv=false ) ; //set - void set(double eLoss, double sigde, double ioni, double sigi, double rad, double sigr) const; + void set(double eLoss, double sigde, double ioni, double sigi, double rad, double sigr) ; //! Interface method for output, can be overloaded by child classes virtual MsgStream& dump( MsgStream& sl ) const; @@ -103,19 +103,19 @@ class EnergyLoss { private: //! @f$ \Delta E @f$ - the estimated or measured energy loss - mutable double m_deltaE; + double m_deltaE; //!< @f$ \sigma(\Delta E) @f$ - error on the energy loss - mutable double m_sigmaDeltaE; + double m_sigmaDeltaE; //!< @f$ \sigma(\Delta E) @f$ - negative error on the energy loss - double m_sigmaMinusDeltaE; + double m_sigmaMinusDeltaE; //!< @f$ \sigma(\Delta E) @f$ - positive error on the energy loss - double m_sigmaPlusDeltaE; + double m_sigmaPlusDeltaE; // additional information about components (cache only, not persistified) - mutable double m_mean_ioni; // mean value for ionization - mutable double m_sig_ioni; // sigma for ionization - mutable double m_mean_rad; // mean value for radiation - mutable double m_sig_rad; // sigma for radiation - mutable double m_length; // 3D length of material + double m_mean_ioni; // mean value for ionization + double m_sig_ioni; // sigma for ionization + double m_mean_rad; // mean value for radiation + double m_sig_rad; // sigma for radiation + double m_length; // 3D length of material }; @@ -149,7 +149,7 @@ class EnergyLoss { inline double EnergyLoss::length() const { return m_length; } // length can be positive and negative like Eloss depending on (back)tracking - inline void EnergyLoss::update(double ioni, double sigi, double rad, double sigr, bool mpv) const + inline void EnergyLoss::update(double ioni, double sigi, double rad, double sigr, bool mpv) { m_mean_ioni += ioni; m_mean_rad += rad; m_sig_ioni += sigi; @@ -158,7 +158,7 @@ class EnergyLoss { m_sigmaDeltaE = sqrt( m_sig_ioni*m_sig_ioni + m_sig_rad*m_sig_rad); } - inline void EnergyLoss::update(EnergyLoss& eloss, bool mpv) const + inline void EnergyLoss::update(EnergyLoss& eloss, bool mpv) { m_mean_ioni += eloss.meanIoni(); m_mean_rad += eloss.meanRad(); m_sig_ioni += eloss.sigmaIoni(); @@ -167,7 +167,7 @@ class EnergyLoss { m_sigmaDeltaE = sqrt( m_sig_ioni*m_sig_ioni + m_sig_rad*m_sig_rad); } - inline void EnergyLoss::set(double eloss, double sigde, double ioni, double sigi, double rad, double sigr) const + inline void EnergyLoss::set(double eloss, double sigde, double ioni, double sigi, double rad, double sigr) { m_mean_ioni = ioni; m_mean_rad = rad; m_sig_ioni = sigi; diff --git a/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/MaterialEffectsBase.h b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/MaterialEffectsBase.h index b49077a1137..d30dac430c5 100755 --- a/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/MaterialEffectsBase.h +++ b/Tracking/TrkEvent/TrkMaterialOnTrack/TrkMaterialOnTrack/MaterialEffectsBase.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -122,7 +122,7 @@ class MaterialEffectsBase two cases are distinguished by the presence of a pointer from the Trk::Surface to a Trk::DetectorElement, if not present it is a custom-made surface. */ - mutable const Surface* m_associatedSurface; + const Surface* m_associatedSurface; //! the flags (bits) telling what information this ME are based on long m_typeFlags; -- GitLab