Status of Data Products that Must be Changed to be Thread Safe

Complete: 4

Purpose of Page

This is meant to collect the status of various Run,Lumi,Event and EventSetup data products which have been found to be non-thread safe.

CMSSW Rules for Data Products

The following are an update of the original CMSSW data products rules in light of C++11's threading model. C++11 assumes that calling const member functions on the same object is thread safe. As CMSSW enforces only const access to data products this means we only need to make calls to const member functions thread safe and we do not have to worry about the thread safety issues of the non-const member functions.

The update rules (which are the same except for explicit thread-safety requirements) are as follows:

  1. const member functions must return the same value given the same arguments
    1. const functions which change internal data are not allowed if it will cause a subsequent call to a const member function that uses that data to return a different result.
    2. caching is allowed but it must be made explicitly thread safe
  2. const functions must not return non-const pointers or references to member data
    1. This avoids having thread 1 changing internals of a product while thread 2 is reading it
  3. only const interactions are allowed
    1. const_cast of data products is not allowed
  4. implementations must not use non-const statics
    1. this holds for both class statics and function statics
    2. This avoids having thread 1 changing the static while thread 2 is reading it
  5. all member data must be private

Packages

This sections contains list of CMS packages which found to be not thread-safe.

CalibCalorimetry/CaloTPG

files: CaloTPGTranscoderULUT.cc, CaloTPGTranscoderULUT.h

found issues:

  • violates CMSSW rules for Data Products: A1 violation
  • violates CMS rules for EventSetup objects, here
  • contains mutable data, here
proposed solution:
  • move code which loads compression files into separate ESProducer and pass necessary pieces to this class, otherwise use std::mutex to protect access to all routines doing lazy decompression
categories/managers:

CalibFormats/HcalObjects DONE

files: HcalDbService.h, HcalDbService.cc

found issues:

proposed solution:

categories/managers:

CondFormats/CastorObjects CastorElectronicsMap DONE

files: CastorElectronicsMap.h, CastorElectronicsMap.cc

found issues:

proposed solution:

categories/managers:

CondFormats/DTObjects

files:
DTObjects/interface/DTCCBConfig.h
DTObjects/interface/DTDeadFlag.h
DTObjects/interface/DTHVStatus.h
DTObjects/interface/DTLVStatus.h
DTObjects/interface/DTMtime.h
DTObjects/interface/DTPerformance.h
DTObjects/interface/DTRangeT0.h
DTObjects/interface/DTReadOutMapping.h
DTObjects/interface/DTStatusFlag.h
DTObjects/interface/DTTPGParameters.h
DTObjects/interface/DTTtrig.h 
DTObjects/src/DTCCBConfig.cc
DTObjects/src/DTDeadFlag.cc
DTObjects/src/DTHVStatus.cc
DTObjects/src/DTLVStatus.cc
DTObjects/src/DTMtime.cc
DTObjects/src/DTPerformance.cc
DTObjects/src/DTRangeT0.cc
DTObjects/src/DTReadOutMapping.cc
DTObjects/src/DTStatusFlag.cc
DTObjects/src/DTTPGParameters.cc
DTObjects/src/DTTtrig.cc 
DTTrig DONE

found issues:

proposed solution:

categories/managers:

CondFormats/HcalObjects DONE

files: HcalElectronicsMap.h, HcalElectronicsMap.cc, HcalDcsMap.h, HcalDcsMap.cc

found issues:

proposed solution:

categories/managers:

CondFormats/PhysicsToolsObjects Partial

files: PerformancePayloadFromTFormula.h, PerformancePayloadFromTFormula.cc, PerformancePayloadFromBinnedTFormula.h, PerformancePayloadFromBinnedTFormula.cc, Histogram2D.h, Histogram2D.icc

found issues:

proposed solution: DONE

  • see this set of changes
  • Warning, important due to underlying non thread-safe structure of TFormula class we're unable to come up with thread-safe changes for PerformancePayloadFromTFormula and PerformancePayloadFromBinnedTFormula classes. They will require serialize access in new multi-threaded framework.

categories/managers:

DataFormats/L1DTTrackFinder DONE

files: L1MuDTChambPhContainer.cc

found issues:

proposed solution: categories/managers:

DataFormats/ParticleFlowReco

files: DataFormats/ParticleFlowReco/interface/PFCluster.h, DataFormats/ParticleFlowReco/src/PFCluster.cc

found issues: statics

proposed solution: The class PFCluster has two static methods setDepthCorParameters and getDepthCorParameters which set and then use private static class variables. Fortunately, setDepthCorParameters appears to only be called in cmsRun from PFClusterProducer 's constructor and therefore having the values change between threads is not an issue. However, getDepthCorParameters is called from quite a number of other producers. Therefore changing a parameter setting in PFClusterProducer changes the results of other modules even if those other modules never read data from the PFClusterProducer. Even works, if PFClusterProducer is removed from a configuration, the answers given by the other modules will change even if what they read from the Event and how they were configured stays the same!

We recommend that the statics become non-static member data of a new class and the two static functions be removed from PFCluster. That new class must be used for all calls to getDepthCorParameters. If it is deemed necessary to have a consistent value across all modules, the value should be retrieved from the EventSetup.

DataFormats/TrackingRecHit DONE

files: DataFormats/TrackingRecHit/src/RecHit1D.cc DataFormats/TrackingRecHit/src/RecHit2DLocalPos.cc

found issues: statics.

proposed solution:

Geometry/CaloGeometry DONE

files: CaloSubdetectorGeometry.{h,cc}

found issues:

proposed solution:

categories/managers:

JetMETCorrections/Algorithms

Files
JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc
JetMETCorrections/Algorithms/src/L1JPTOffsetCorrector.cc
JetMETCorrections/Algorithms/src/L1OffsetCorrector.cc
JetMETCorrections/Algorithms/src/L6SLBCorrector.cc
JetMETCorrections/Algorithms/src/LXXXCorrector.cc

found issues: const_cast used, Member data modified in const function

proposed solution: Code needs re-factoring: Data member "FactorizedJetCorrector* mCorrector;" is stateful, Possible solution is to divide FactorizedJetCorrector in stateful and stateless classes or create a helper function.

JetMETCorrections/FFTJetObjects DONE

Files
JetMETCorrections/FFTJetObjects/interface/FFTJetDict.h

found issues: Const function returns pointer or reference to non-const object

proposed solution: see pull request 1419

JetMETCorrections/TauJet:

Files
JetMETCorrections/TauJet/src/TCTauCorrector.cc

found issues: Unknown, not visible on llvm static analyzer page.

L1TriggerConfig/DTTPGConfig DONE

Files
L1TriggerConfig/DTTPGConfig/src/DTConfigManager.cc

found issues: Const function returns pointer or reference to non-const object

proposed solution:see pull request 1420

MagneticField/Engine DONE

Files:
MagneticField/Engine/interface/MagneticField.h

found issues: Member data modified in const function and Mutable member

proposed solution: See pull request 1497

MagneticField/ParametrizedEngine DONE

Files:
MagneticField/ParametrizedEngine/plugins/PolyFit2DParametrizedMagneticField.cc

found issues: Non-const member function could modify member data object

proposed solution: See pull request 1498

RecoBTau/JetTagComputer

Files:
RecoBTau/JetTagComputer/interface/JetTagComputer.h

found issues: Member data modified in const function

proposed solution: Looks like a false positive Looks like data member m_setupDone is used to make sure that no one calls "void JetTagComputer::uses(unsigned int, const std::string &)" after calling "JetTagComputer::getInputLabels() const" As "JetTagComputer::uses(unsigned int, const std::string &)" is non-const so I guess this will not be called concurrently by mutiple threads. As "JetTagComputer::getInputLabels() const" itself does not compute any thing so I guess we do not need any protection (e.g. std::atimic) for m_setupDone.

RecoLocalTracker/SiPixelRecHits

Files:
RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h
RecoLocalTracker/SiPixelRecHits/src/PixelCPEBase.cc

found issues: Member data modified in const function

proposed solution: This code needs a major re-factoring, it is full of mutables

RecoLuminosity/LumiProducer DONE

Files:
RecoLuminosity/LumiProducer/src/DIPLumiSummary.cc

found issues: Member data modified in const function

proposed solution: See pull request 1500

RecoTracker/CkfPattern

files: BaseCkfTrajectoryBuilder.cc

found issues:

  • package will be affected by the solution for TrackingTools/GeomPropagagators
  • class also has mutable data members

proposed solution alternatives:

  • Modify API to replace mutable data members with stack variables (affects other packages)
  • Make data members non-mutable, and the functions modifying them non-const. This may require cloning the object.
  • Use thread safe caching for any mutables that are caches (set only once in a const function)

categories/managers:

RecoTracker/MeasurementDet DONE

files: MeasurementTrackerImpl.h, MeasurementTrackerImpl.cc

found issues:

  • violates CMSSW rules for Data Products: A1 violation line 253, line 259, line 340,line 426, line 465
  • use mutable containers as member data, they're re-used on Event-by-Event basis (here). Such behavior will not work under new multi-threaded framework since events will be processed in parallel
proposed solution:
  • re-evaluate underlying algorithm for event-pixel association
categories/managers:

SimDataFormats/GeneratorProducts

files: HepMCProduct.cc

found issues:

  • class has mutable data members
  • class has const functions that modify data members held by pointers

proposed solution alternatives:

  • This class needs a complete refactoring. Currently, users retrieve objects of this class from the event and modify them in place. I see no simple fix.

SimTracker/TrackAssociation

files: CosmicParametersDefinerForTP.h, QuickTrackAssociatorByHits.cc

found issues:

  • classes have mutable data members

proposed solution alternatives:

  • Modify API to replace mutable data members with stack variables (affects other packages)
  • Make data members non-mutable, and the functions modifying them non-const. This may require cloning the object.
  • Use thread safe caching for any mutables that are caches (set only once in a const function)

TrackPropagation/Geant4e

files: Geant4ePropagator.cc

found issues:

  • package will be affected by the solution for TrackingTools/GeomPropagagators
  • class also has a (mutable) data member that is a non-const pointer. This allows const functions to modify state. The mutability can easily be removed by setting the pointer value in the constructor, but this does not fix the thread safety issue caused by the non-const pointer.

proposed solution alternatives:

  • Modify API to replace mutable data members with stack variables (affects other packages)
  • Make data members non-mutable, and the functions modifying them non-const. This may require cloning the object.
  • Use thread safe caching for any mutables that are caches (set only once in a const function)

categories/managers:

TrackPropagation/SteppingHelixPropagator

files: steppingHelixPropagator.cc

found issues:

  • package will be affected by the solution for TrackingTools/GeomPropagagators
  • class also has mutable data members

proposed solution alternatives:

  • Modify API to replace mutable data members with stack variables (affects other packages)
  • Make data members non-mutable, and the functions modifying them non-const. This may require cloning the object.
  • Use thread safe caching for any mutables that are caches (set only once in a const function)

categories/managers:

TrackingTools/GeomPropagators

files: Propagator.h

found issues:

proposed solution:

Propagator class keeps mutable PropagationDirection member data which prevents this class and other which inherit from it to behave safely in multi-threading environment. The const methods, such as propagationDirection, must return the same object, which is not the case due to aforementioned issue. To resolve this problem we propose the following solution:

  • remove the propagation direction from the Propagator and require the direction be passed to all member functions as an argument
  • create a DirectedPropagator class which
    • in constructor takes a const Propagator* and a propagation direction
    • has the same interface as the present Propagator while under the hood passes the call to the Propagator* along with the propagation direction
  • change the users of Propagator to instead use a DirectedPropagator

categories/managers:

TrackingTools/KalmanUpdators DONE

files: Chi2MeasurementEstimatorForTrackerHits.h, Chi2MeasurementEstimatorForTrackerHits.cc

found issues:

proposed solution:

categories/managers:

TrackingTools/TrackFitters

files: KFTrajectoryFitter.h

found issues:

  • function KFTrajectoryFitter::clone() no longer clones, but just does a shallow copy, due to a performance improvement by Vincenzo Innocente. The shallow copy is not thread safe, as it allows const functions to modify data in the object

proposed solution

  • ask Vincenzo Innocente tor other expert o come up with a thread safe alternative performance improvement
  • the alternative is to restore cloning by backing out the performance improvement

categories/managers:

TrackingTools/TrajectoryState

files: BasicTrajectoryState.h, FreeTrajectoryState.h, TrajectoryParametrization/interface/GlobalTrajectoryParameters.h

found issues:

  • reference counting scheme in BasicTrajectoryState.h has obsolete implementation for BTSCount class and needs re-evaluation under new multi-threaded framework
  • mutable member data in various classes, e.g. BasicTrajectoryState, FreeTrajectoryState and its dependencies TrajectoryParametrization/interface/GlobalTrajectoryParameters.h violates CMSSW thread safety rules, see rule A1 above.

proposed solution

  • ask Vincenzo Innocente to re-evaluate reference counting scheme under requirements of multi-threaded framework
  • ask L2's to contact code developers and clean-up code, e.g. remove obsolete pieces, re-evaluate its structure, etc.
  • work on fixing mutable member data and const access to them (Valentin's task)
  • see this

categories/managers:

TrackingTools/TransientTrack DONE

files: TrackTransientTrack.h TrackTransientTrack.cc

found issues:

proposed solution:

categories/managers:

Changes from Tracking which are intended to be thread safe

RecoTracker/CkfPattern/src/BaseCkfTrajectoryBuilder.cc
RecoMuon/L3TrackFinder/src/MuonRoadTrajectoryBuilder.cc

List of problematic files

The following are the files containing a data product for which the thread safety checker found have a problem. The full report is at http://home.fnal.gov/~gartung/scan-build/2013-10-25-1/

NOTE: The static analyzer gives false positives when dealing with std::atomics.

File with issue Status
Alignment/KalmanAlignmentAlgorithm/src/CurrentAlignmentKFUpdator.cc  
CalibCalorimetry/CaloTPG/src/CaloTPGTranscoderULUT.cc  
CalibFormats/HcalObjects/src/HcalDbService.cc  
CalibFormats/SiStripObjects/interface/SiStripFecCabling.h  
CalibFormats/SiStripObjects/src/SiStripDetCabling.cc  
CalibFormats/SiStripObjects/src/SiStripFecCabling.cc  
CalibTracker/SiPixelConnectivity/src/PixelToFEDAssociateFromAscii.cc  
CalibTracker/SiPixelConnectivity/src/PixelToFEDAssociateFromAscii.cc  
CondFormats/Common/src/FileBlob.cc DONE: False Positive
CondFormats/DTObjects/src/DTCCBConfig.cc  
CondFormats/DTObjects/src/DTDeadFlag.cc  
CondFormats/DTObjects/src/DTHVStatus.cc  
CondFormats/DTObjects/src/DTLVStatus.cc  
CondFormats/DTObjects/src/DTMtime.cc  
CondFormats/DTObjects/src/DTPerformance.cc  
CondFormats/DTObjects/src/DTRangeT0.cc  
CondFormats/DTObjects/src/DTReadOutMapping.cc  
CondFormats/DTObjects/src/DTStatusFlag.cc  
CondFormats/DTObjects/src/DTTPGParameters.cc  
CondFormats/ESObjects/interface/ESCondObjectContainer.h  
CondFormats/EcalObjects/interface/EcalCondObjectContainer.h #1417
CondFormats/EcalObjects/interface/EcalCondTowerObjectContainer.h #1417
CondFormats/JetMETObjects/src/JetCorrectorParameters.cc #1425
CondFormats/JetMETObjects/src/JetCorrectorParameters.cc #1425
CondFormats/L1TObjects/interface/L1TriggerKey.h #1355
CondFormats/PhysicsToolsObjects/interface/Histogram.icc DONE {atomics}
CondFormats/PhysicsToolsObjects/interface/Histogram2D.icc DONE {atomics}
CondFormats/PhysicsToolsObjects/interface/Histogram3D.icc DONE {atomics}
CondFormats/PhysicsToolsObjects/interface/PerformancePayloadFromBinnedTFormula.h #1442
CondFormats/PhysicsToolsObjects/interface/PerformancePayloadFromTFormula.h  
CondFormats/PhysicsToolsObjects/interface/PerformancePayloadFromTable.h
CondFormats/PhysicsToolsObjects/interface/PerformancePayloadFromTable.h  
CondFormats/PhysicsToolsObjects/src/PerformancePayloadFromBinnedTFormula.cc  
CondFormats/PhysicsToolsObjects/src/PerformancePayloadFromBinnedTFormula.cc  
CondFormats/PhysicsToolsObjects/src/PerformancePayloadFromTFormula.cc  
CondFormats/PhysicsToolsObjects/src/PerformancePayloadFromTFormula.cc  
CondFormats/PhysicsToolsObjects/src/PerformancePayloadFromTable.cc  
CondFormats/RPCObjects/interface/RPCEMap.h #1443
CondFormats/RPCObjects/src/RPCReadOutMapping.cc #1443
CondFormats/SiPixelObjects/src/SiPixelFedCablingMap.cc #1210
CondFormats/SiStripObjects/src/SiStripFedCabling.cc #1210, #1579
DataFormats/CSCRecHit/src/CSCSegment.cc #1444
DataFormats/Candidate/interface/LeafCandidate.h  
DataFormats/Candidate/interface/Particle.h  
DataFormats/Common/interface/AssociationVector.h DONE {atomic} PR #1268
DataFormats/Common/interface/View.h DONE {false positive}
DataFormats/DTRecHit/interface/DTRecSegment2D.h DONE {const static} PR #1304
DataFormats/DTRecHit/src/DTRecSegment4D.cc DONE {const static} PR #1304
DataFormats/EcalDetId/interface/EcalScDetId.h DONE {std::call_once} {CMS_THREAD_SAFE} #1883
DataFormats/EgammaCandidates/src/Conversion.cc DONE PR #1305
DataFormats/GsfTrackReco/src/GsfTrack.cc DONE {false positive}
DataFormats/L1DTTrackFinder/src/L1MuDTChambPhContainer.cc DONE PR #1314
DataFormats/L1DTTrackFinder/src/L1MuDTChambThContainer.cc DONE PR #1314
DataFormats/L1DTTrackFinder/src/L1MuDTTrackContainer.cc DONE PR #1314
DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h DONE {tbb collection} PR #1320
DataFormats/L1Trigger/src/L1ParticleMap.cc DONE {thread safe cache} PR #1326
DataFormats/MuonData/interface/MuonDigiCollection.h DONE {const static} PR #1328
DataFormats/ParticleFlowCandidate/interface/PFCandidate.h DONE {std::atomic} PR #1341
DataFormats/ParticleFlowReco/interface/PFCluster.h Reviewed and reported above
DataFormats/PatCandidates/src/Jet.cc DONE {edm::AtomicPtrCache} PR #1375
DataFormats/PatCandidates/src/MET.cc DONE {edm::AtomicPtrCache} PR #1375
DataFormats/PatCandidates/src/Tau.cc DONE {edm::AtomicPtrCache} PR #1375
DataFormats/TauReco/src/PFTau.cc DONE {false postive: clone method OK}
DataFormats/TrackReco/interface/Track.h DONE {false positive}
DataFormats/TrackReco/src/TrackExtra.cc DONE {false positive}
DataFormats/TrackerCommon/interface/ClusterSummary.h PR #1292, contacted developers to drop off set/get methods
DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h PR #1280, contacted developers to drop off set/get methods
DataFormats/TrackerRecHit2D/interface/SiStripRecHit1D.h PR #1280, contacted developers to drop off set/get methods
DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h PR #1280, contacted developers to drop off set/get methods
EventFilter/ESRawToDigi/src/ESUnpackerWorker.cc  
EventFilter/EcalRawToDigi/interface/EcalUnpackerWorker.h Requires code re-factoring, contacted developers on 11/05/2013
EventFilter/EcalRawToDigi/src/EcalUnpackerWorker.cc Requires code re-factoring, contacted developers on 11/05/2013
FastSimulation/TrackerSetup/interface/TrackerInteractionGeometry.h DONE, PR #1356
FastSimulation/TrackingRecHitProducer/src/FastPixelCPE.cc DONE PR #1369, 1585
FastSimulation/TrackingRecHitProducer/src/FastPixelCPE.h DONE PR #1369, 1585
FastSimulation/TrackingRecHitProducer/src/FastStripCPE.cc DONE PR #1369, 1585
FastSimulation/TrackingRecHitProducer/src/FastStripCPE.h DONE PR #1369, 1585
Fireworks/Geometry/interface/FWTGeoRecoGeometry.h  
Geometry/CaloTopology/src/CaloTowerConstituentsMap.cc DONE, PR #1323
Geometry/CommonDetUnit/src/GlobalTrackingGeometry.cc DONE, PR #1322
Geometry/EcalAlgo/src/EcalBarrelGeometry.cc DONE
Geometry/EcalAlgo/src/EcalEndcapGeometry.cc DONE
Geometry/HcalTowerAlgo/src/HcalDDDGeometry.cc Geometry Group decided to keep it for testing
Geometry/HcalTowerAlgo/src/HcalGeometry.cc DONE, PR#1647
Geometry/TrackerNumberingBuilder/interface/GeometricDet.h PR #1475
Geometry/TrackerNumberingBuilder/interface/GeometricDetExtra.h PR #1475
Geometry/TrackerNumberingBuilder/src/GeometricDet.cc PR #1475
JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc Code needs re-factoring: Data member "FactorizedJetCorrector* mCorrector;" is stateful, Possible solution is to divide FactorizedJetCorrector in stateful and stateless classes or create a helper function.
JetMETCorrections/Algorithms/src/L1JPTOffsetCorrector.cc Same as JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc
JetMETCorrections/Algorithms/src/L1OffsetCorrector.cc Same as JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc
JetMETCorrections/Algorithms/src/L6SLBCorrector.cc Same as JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc
JetMETCorrections/Algorithms/src/LXXXCorrector.cc Same as JetMETCorrections/Algorithms/src/L1FastjetCorrector.cc
JetMETCorrections/FFTJetObjects/interface/FFTJetDict.h Done: PR # 1419
JetMETCorrections/TauJet/src/TCTauCorrector.cc Do not see it any more on the static checker results page
L1TriggerConfig/DTTPGConfig/src/DTConfigManager.cc DONE: PR #1420
MagneticField/Engine/interface/MagneticField.h Done: PR # 1497
MagneticField/ParametrizedEngine/plugins/PolyFit2DParametrizedMagneticField.cc Done: PR # 1498
MagneticField/ParametrizedEngine/plugins/PolyFit3DParametrizedMagneticField.cc  
RecoBTag/SoftLepton/src/ElectronTagger.cc DONE
RecoBTag/SoftLepton/src/MuonTagger.cc DONE
RecoBTag/SoftLepton/src/MuonTaggerNoIP.cc DONE
RecoBTau/JetTagComputer/interface/JetTagComputer.h Looks like a false positive?
RecoBTau/JetTagComputer/src/GenericMVAJetTagComputer.cc  
RecoEgamma/ElectronIdentification/src/ElectronLikelihood.cc Do not see it any more on the static checker results page
RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h This code needs a major re-factoring, it is full of mutables
RecoLocalTracker/SiPixelRecHits/src/PixelCPEBase.cc This code needs a major re-factoring, it is full of mutables
RecoLocalTracker/SiStripRecHitConverter/src/SiStripRecHitMatcher.cc Do not see it any more on the static checker results page
RecoLuminosity/LumiProducer/src/DIPLumiSummary.cc Done: PR # 1500
RecoMuon/CosmicMuonProducer/interface/CosmicMuonSmoother.h Do not see it any more on the static checker results page
RecoMuon/L3TrackFinder/src/MuonRoadTrajectoryBuilder.cc DONE {mutable members removed} {reverse_iterator changed to const_reverse_iterator}
RecoTracker/CkfPattern/src/BaseCkfTrajectoryBuilder.cc NOT DONE Fixing mutables requires changes to API, affecting other packages
SimDataFormats/GeneratorProducts/src/HepMCProduct.cc NOT DONE Fixing mutable requires changes to API, affecting many other packages
SimDataFormats/HiGenData/src/GenHIEvent.cc DONE {remove mutable keyword and also the const qualifier from function that modifies the member. The function is unused, so this is harmless}
SimTracker/TrackAssociation/interface/CosmicParametersDefinerForTP.h NOT DONE Fixing mutable requires changes to API, affecting other packages
SimTracker/TrackAssociation/src/QuickTrackAssociatorByHits.cc NOT DONE Fixing mutables requires many changes to API, affecting other packages
SimTracker/TrackAssociation/src/TrackAssociatorByPosition.cc DONE {mutable member removed}
TrackPropagation/Geant4e/src/Geant4ePropagator.cc NOT DONE Fixing mutable requires changes to Propagator API, potentially touching many packages
TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc PARTLY DONE {some mutable members removed} Fixing remaining mutables require changes to Propagator API, potentially touching many packages
TrackingTools/GeomPropagators/interface/Propagator.h NOT DONE See proposed solution above in TrackingTools/GeomPropagators
TrackingTools/GeomPropagators/src/BeamHaloPropagator.cc DONE {const functions now return pointer to const} and {spurious mutable keywords removed}
TrackingTools/GeomPropagators/src/SmartPropagator.cc DONE {const functions now return pointer to const} and {spurious mutable keywords removed} and {static data member made non-static}
TrackingTools/GsfTools/src/GsfPropagatorAdapter.cc DONE {atomic}
TrackingTools/GsfTracking/src/GsfPropagatorWithMaterial.cc DONE {atomic}
TrackingTools/KalmanUpdators/src/Chi2MeasurementEstimatorForTrackerHits.cc DONE {atomic}
TrackingTools/TrackAssociator/plugins/MuonDetIdAssociator.cc DONE {mutable members removed}
TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h NOT DONE (clone() does not really clone)
TrackingTools/TrajectoryCleaning/src/TrajectoryCleanerBySharedHits.cc DONE {thread_local}
TrackingTools/TrajectoryFiltering/interface/MinPtTrajectoryFilter.h DONE {thread_local}
TrackingTools/TrajectoryFiltering/interface/ThresholdPtTrajectoryFilter.h DONE {thread_local}
TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h DONE {const functions now return pointer to const}
TrackingTools/TransientTrack/src/TrackTransientTrack.cc DONE {atomics}

NOTE: Geometry/HcalTowerAlgo/src/HcalDDDGeometry.cc and HcalGeometry.cc were changed where the commit comment said they were to fix thread safety issues but the fix would not make them thread safe.

Edit | Attach | Watch | Print version | History: r80 < r79 < r78 < r77 < r76 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r80 - 2014-01-15 - ValentinKuznetsov
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback