From 82049da3f00b29b24b786f39b4fd61add5a31f66 Mon Sep 17 00:00:00 2001 From: Markus Frank <Markus.Frank@cern.ch> Date: Thu, 3 Nov 2016 22:07:40 +0100 Subject: [PATCH] First round of fixing Clang compiler and linker problems --- DDAlign/include/DDAlign/AlignmentOperators.h | 1 - DDAlign/include/DDAlign/AlignmentsManager.h | 8 +++++--- DDAlign/src/AlignmentsManager.cpp | 3 ++- DDG4/include/DDG4/Geant4PhysicsList.h | 6 +----- DDG4/src/Geant4Random.cpp | 5 +++++ DDRec/include/DDRec/Material.h | 16 ++++++++-------- DDSurfaces/include/DDSurfaces/IMaterial.h | 6 +++++- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/DDAlign/include/DDAlign/AlignmentOperators.h b/DDAlign/include/DDAlign/AlignmentOperators.h index 080bfc449..e03665355 100644 --- a/DDAlign/include/DDAlign/AlignmentOperators.h +++ b/DDAlign/include/DDAlign/AlignmentOperators.h @@ -57,7 +57,6 @@ namespace DD4hep { const Entries& entries; /// Initializing functor constructor AlignmentSelector(GlobalAlignmentCache& c, Nodes& n, const Entries& e) : AlignmentOperator(c,n), entries(e) {} - ~AlignmentSelector() { } const AlignmentSelector& reset() const { nodes.clear(); return *this; } /// Function callback for cache entries void operator()(const GlobalAlignmentCache::Cache::value_type& e) const; diff --git a/DDAlign/include/DDAlign/AlignmentsManager.h b/DDAlign/include/DDAlign/AlignmentsManager.h index 7402335b8..453c97cb2 100644 --- a/DDAlign/include/DDAlign/AlignmentsManager.h +++ b/DDAlign/include/DDAlign/AlignmentsManager.h @@ -68,7 +68,9 @@ namespace DD4hep { template <typename T> static AlignmentsManager from(T& host); /// Default constructor - AlignmentsManager() : Handle<Object>(0) {} + AlignmentsManager() = default; + /// Copy constructor + AlignmentsManager(const AlignmentsManager& copy) = default; /// Constructor to be used for proper handles AlignmentsManager(const Handle<Object>& e) : Handle<Object>(e) {} /// Constructor to be used for proper handles @@ -77,8 +79,8 @@ namespace DD4hep { AlignmentsManager(const std::string& name); /// Initializing constructor. Creates the object! AlignmentsManager(char const* name); - /// Default destructor - ~AlignmentsManager() {} + /// Assignment operator + AlignmentsManager& operator=(const AlignmentsManager& mgr) = default; /// Delete the manager. Be careful: this affects all referencing handles! void destroy(); /// Adopy alignment dependency for later recalculation diff --git a/DDAlign/src/AlignmentsManager.cpp b/DDAlign/src/AlignmentsManager.cpp index 9314678a9..ca6762a14 100644 --- a/DDAlign/src/AlignmentsManager.cpp +++ b/DDAlign/src/AlignmentsManager.cpp @@ -32,7 +32,8 @@ namespace DD4hep { typedef Conditions::ConditionDependency Dependency; - struct AlignContext { + class AlignContext { + public: struct Entry { const Dependency* dep; DetElement::Object* det; diff --git a/DDG4/include/DDG4/Geant4PhysicsList.h b/DDG4/include/DDG4/Geant4PhysicsList.h index b52ce0514..75c85a534 100644 --- a/DDG4/include/DDG4/Geant4PhysicsList.h +++ b/DDG4/include/DDG4/Geant4PhysicsList.h @@ -66,14 +66,12 @@ namespace DD4hep { typedef std::map<std::string, ParticleProcesses> PhysicsProcesses; /// Structure describing a G4 particle constructor - class ParticleConstructor: public std::string { + class ParticleConstructor : public std::string { public: /// Default constructor ParticleConstructor() = default; /// Initalizing constructor ParticleConstructor(const std::string& s) : std::string(s) { } - /// Default destructor - ~ParticleConstructor() {} /// Assignment operator ParticleConstructor& operator=(const ParticleConstructor& c) { if ( &c != this ) this->std::string::operator=(c); @@ -99,8 +97,6 @@ namespace DD4hep { PhysicsConstructor(const PhysicsConstructor& c) : std::string(c), pointer(c.pointer) {} /// Initalizing constructor PhysicsConstructor(const std::string& s) : std::string(s), pointer(0) {} - /// Default destructor - ~PhysicsConstructor() {} /// Assignment operator PhysicsConstructor& operator=(const PhysicsConstructor& c) { if ( &c != this ) { this->std::string::operator=(c); pointer=c.pointer; } diff --git a/DDG4/src/Geant4Random.cpp b/DDG4/src/Geant4Random.cpp index c0fce221f..769193cfc 100644 --- a/DDG4/src/Geant4Random.cpp +++ b/DDG4/src/Geant4Random.cpp @@ -54,6 +54,11 @@ namespace { fSeed = seed; m_generator->setSeed((long)seed); } + /// Set new seed + virtual void SetSeed(ULong_t seed=0) { + fSeed = seed; + m_generator->setSeed((long)seed); + } /// Single shot random number creation virtual Double_t Rndm(Int_t) { return m_engine->flat(); diff --git a/DDRec/include/DDRec/Material.h b/DDRec/include/DDRec/Material.h index 8c6bd7b1d..ecdd3abc8 100644 --- a/DDRec/include/DDRec/Material.h +++ b/DDRec/include/DDRec/Material.h @@ -87,14 +87,14 @@ namespace DD4hep { /// assignment from Geometry::Material MaterialData& operator=(const IMaterial& m){ - - _name = m.name() ; - _Z = m.Z() ; - _A = m.A() ; - _rho = m.density() ; - _x0 = m.radiationLength() ; - _lambda = m.interactionLength() ; - + if ( this != &m ) { + _name = m.name() ; + _Z = m.Z() ; + _A = m.A() ; + _rho = m.density() ; + _x0 = m.radiationLength() ; + _lambda = m.interactionLength() ; + } return *this ; } diff --git a/DDSurfaces/include/DDSurfaces/IMaterial.h b/DDSurfaces/include/DDSurfaces/IMaterial.h index ade46aba5..40e75521b 100644 --- a/DDSurfaces/include/DDSurfaces/IMaterial.h +++ b/DDSurfaces/include/DDSurfaces/IMaterial.h @@ -14,12 +14,16 @@ namespace DDSurfaces { */ class IMaterial { + + protected: + /// Assignment operator + IMaterial& operator=(const IMaterial&) { return *this; } public: /// Destructor virtual ~IMaterial() {} - + /// material name virtual std::string name() const =0 ; -- GitLab