diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/ATLAS_CHECK_THREAD_SAFETY b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..7e36450425721b5a37a2469322099f68219f3322 --- /dev/null +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Tracking/TrkAlignment/TrkAlignGenTools diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignModuleTool.h b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignModuleTool.h index df1155e1cbfdcf583c4e694de96cc81adbdb7875..8f7bec69db200ed043bcc91f51108c0a3e55e581 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignModuleTool.h +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignModuleTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ #ifndef TRKALIGNGENTOOLS_ALIGNMODULETOOL_H diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignResidualCalculator.h b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignResidualCalculator.h index 4db391ac81287bc243223e7970cc55762f72e45a..b092fdd7aa7105dc5fcca215458c70251a26f8da 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignResidualCalculator.h +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignResidualCalculator.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ #ifndef TRKALIGNGENTOOLS_ALIGNRESIDUALCALCULATOR_H @@ -66,7 +66,7 @@ namespace Trk { double setResidualsOnATSOS(AlignTSOS* atsos, const TrackStateOnSurface* tsos); void accumulateScattering(const TrackStateOnSurface* tsos); - const TrackStateOnSurface* getMatchingTSOS(const AlignTSOS* atsos, const Track* track) const; + const TrackStateOnSurface* getMatchingTSOS(const AlignTSOS* atsos, const Track* track); ToolHandle <IResidualPullCalculator> m_pullCalculator; ToolHandle <IUpdator> m_updator; @@ -81,7 +81,7 @@ namespace Trk { double* m_chi2ForMeasType; - mutable std::vector<const TrackStateOnSurface*> m_matchedTSOS; + std::vector<const TrackStateOnSurface*> m_matchedTSOS; }; diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackCreator.h b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackCreator.h index fe296ec2f20419c27586c9b809d9e6aa1065f8ca..63e305bcc8a5b72515f17979e8e05a8833baa789 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackCreator.h +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackCreator.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ #ifndef TRKALIGNGENTOOLS_ALIGN_TRACK_CREATOR_H @@ -54,7 +54,7 @@ namespace Trk { const AtlasDetectorID* m_idHelper; MeasurementTypeID* m_measTypeIdHelper; - mutable std::vector< std::pair<int,int> > m_goodEventList; //!> good events read in from ASCII file + std::vector< std::pair<int,int> > m_goodEventList; //!> good events read in from ASCII file std::string m_eventListName; //!> name of event list ASCII file bool m_writeEventList; //!> write selected events to event list ASCII file diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackDresser.h b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackDresser.h index b46b26bb2ab778329e23fb575fa7060832c9589e..cc481198433a190335cb8a2fa459b3d72e543517 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackDresser.h +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AlignTrackDresser.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ #ifndef TRKALIGNGENDRESSERS_ALIGN_TRACK_DRESSER_H @@ -36,8 +36,8 @@ namespace Trk { AlignTrackDresser(const std::string & type, const std::string & name, const IInterface * parent); virtual ~AlignTrackDresser(); - StatusCode initialize(); - StatusCode finalize(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; /** dresses alignTrack with derivatives and other information */ bool dressAlignTrack(AlignTrack * alignTrack); @@ -53,7 +53,7 @@ namespace Trk { // private variables ToolHandle <IDerivCalcTool> m_derivCalcTool; //!< tool for calculating derivatives of residuals wrt. alignment parameters - mutable unsigned int m_numBadCovWMatrix; //!< number of tracks with invalid weight matrix from the deriv.calc.tool + unsigned int m_numBadCovWMatrix; //!< number of tracks with invalid weight matrix from the deriv.calc.tool }; // end class diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AnalyticalDerivCalcTool.h b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AnalyticalDerivCalcTool.h index 4461265a0f6670206bfc01c982a79bd48096a98b..560e946aaf002fdef585a00c296d5ee3517e60ab 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AnalyticalDerivCalcTool.h +++ b/Tracking/TrkAlignment/TrkAlignGenTools/TrkAlignGenTools/AnalyticalDerivCalcTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ #ifndef TRK_ANALYTICALDERIVCALCTOOL_H @@ -79,10 +79,8 @@ namespace Trk bool m_useIntrinsicSCTErrors = false; //!< use intrinsic errors for SCT bool m_useIntrinsicTRTErrors = false; //!< use intrinsic errors for TRT - mutable bool m_firstEvent; //!< recognise the first call to setResidualCovMatrix() - int m_residualType; //!< residual type to be used in the calculations - mutable bool m_residualTypeSet; //!< do we have the residual type set? + bool m_residualTypeSet; //!< do we have the residual type set? bool m_storeDerivatives; //!< store derivatives on AlignTSOS to be filled into ntuple diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignModuleTool.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignModuleTool.cxx index e0e1fd1c5b16d801af9ed42ff15b8a7da091d34d..ab43a01b855cb70e8993e830283c80e3439f3e28 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignModuleTool.cxx +++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignModuleTool.cxx @@ -201,7 +201,7 @@ namespace Trk { int idHash =alignModule->identifyHash(); ATH_MSG_DEBUG("getting alignPars for idHash "<<idHash); - return (*m_alignParList)[idHash]; + return std::as_const(m_alignParList)->at(idHash); } //________________________________________________________________________ @@ -219,7 +219,7 @@ namespace Trk { ATH_MSG_DEBUG("have alignModule "<<alignModule->identify()); // get alignment parameters - AlignParVec* modAlignPar = getFullAlignPars(alignModule); + const AlignParVec* modAlignPar = getFullAlignPars(alignModule); ATH_MSG_DEBUG("modAlignPar size: "<<modAlignPar->size()); double alignModPar[AlignModule::NTransformPar]; @@ -312,10 +312,11 @@ namespace Trk { } //________________________________________________________________________ - DataVector<AlignPar>* AlignModuleTool::getFullAlignPars(const AlignModule* alignModule) const + AlignModuleTool::AlignParVec* + AlignModuleTool::getFullAlignPars(const AlignModule* alignModule) const { int idHash =alignModule->identifyHash(); - return (*m_fullAlignParList)[idHash]; + return std::as_const(m_fullAlignParList)->at(idHash); } //________________________________________________________________________ diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx index 28c551fb131eca0fdb35bd720431aed4d9236942..8ccf5d82a2cda984a38017dd68a1c5e75a6f9211 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx +++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration */ @@ -327,7 +327,7 @@ namespace Trk { //________________________________________________________________________ const TrackStateOnSurface* - AlignResidualCalculator::getMatchingTSOS(const AlignTSOS* atsos, const Track* track) const + AlignResidualCalculator::getMatchingTSOS(const AlignTSOS* atsos, const Track* track) { const TrackStateOnSurface* tsos(nullptr); diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignTrackDresser.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignTrackDresser.cxx index 27d9238c22d408904583bb5f14df0e6751d8c297..8b41423529392ee3df77d05ac17ccdb687013e15 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignTrackDresser.cxx +++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignTrackDresser.cxx @@ -121,7 +121,7 @@ namespace Trk { if (imeas!=NMEAS) { msg(MSG::ERROR)<<"problem with nmeas. imeas="<<imeas<<", NMEAS="<<NMEAS<<endmsg; - exit(3); + throw std::runtime_error("Error in AlignTrackDresser::setResiduals"); } alignTrack->setResidualVector(residuals); // residuals owned by alignTrack diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/AnalyticalDerivCalcTool.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/AnalyticalDerivCalcTool.cxx index cd3b39d6ce3b9dd132fa249fe899cbd855dd272d..b13b535eed27dbf54ca960361eac8a87c2a043d7 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/src/AnalyticalDerivCalcTool.cxx +++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/AnalyticalDerivCalcTool.cxx @@ -37,7 +37,6 @@ namespace Trk { , m_alignModuleTool("Trk::AlignModuleTool/AlignModuleTool") , m_idHelper(nullptr) , m_measTypeIdHelper(nullptr) - , m_firstEvent(true) , m_residualType(HitOnly) , m_residualTypeSet(false) , m_storeDerivatives(false) @@ -141,7 +140,8 @@ namespace Trk { //________________________________________________________________________ bool AnalyticalDerivCalcTool::setResidualCovMatrix(AlignTrack * alignTrack) const { - if (m_firstEvent) { + static std::once_flag flag; + std::call_once(flag, [&]() { if(m_logStream) { *m_logStream<<"*************************************************************"<<std::endl; *m_logStream<<"*************************************************************"<<std::endl; @@ -164,8 +164,7 @@ namespace Trk { *m_logStream<<"*** *****"<<std::endl; *m_logStream<<"*************************************************************"<<std::endl; } - m_firstEvent = false; - } + }); // get inverse local error matrix of the track const Amg::MatrixX * Vinv = alignTrack->localErrorMatrixInv(); diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/ShiftingDerivCalcTool.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/ShiftingDerivCalcTool.cxx index d89c62cb7607dded1dfaed12705c1319acadf978..221f143847b829f81e3f2ea781eddf1e49c7af13 100644 --- a/Tracking/TrkAlignment/TrkAlignGenTools/src/ShiftingDerivCalcTool.cxx +++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/ShiftingDerivCalcTool.cxx @@ -315,7 +315,7 @@ namespace Trk { } if (imeas!=NMEAS) { msg(MSG::ERROR)<<"problem with nmeas, imeas="<<imeas<<", NMEAS="<<NMEAS<<endmsg; - exit(3); + throw std::runtime_error("Error in ShiftingDerivCalcTool::setUnshiftedResiduals"); } alignTrack->setResidualVector(m_unshiftedResiduals);