diff --git a/Control/DataModelRoot/CMakeLists.txt b/Control/DataModelRoot/CMakeLists.txt
index 150fe3e7fcff90d8d386e3d606190a0b67ad4f3d..ea460d21586e0b808acb6916a495007302ba1dc6 100644
--- a/Control/DataModelRoot/CMakeLists.txt
+++ b/Control/DataModelRoot/CMakeLists.txt
@@ -5,6 +5,10 @@
 # Declare the package name:
 atlas_subdir( DataModelRoot )
 
+atlas_depends_on_subdirs (
+  PUBLIC
+  Control/CxxUtils )
+
 # External dependencies:
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
 
diff --git a/Control/DataModelRoot/DataModelRoot/RootType.h b/Control/DataModelRoot/DataModelRoot/RootType.h
index cac2b38e39d12d8d79340d553dd0348322ac778a..003d41bc303e683aaedf2cd8795eace965379217 100644
--- a/Control/DataModelRoot/DataModelRoot/RootType.h
+++ b/Control/DataModelRoot/DataModelRoot/RootType.h
@@ -14,6 +14,8 @@ class TMethod;
 class TFunction;
 class TMethodArg;
 
+#include "CxxUtils/checker_macros.h"
+
 #define ROOT_6
 
 namespace Reflex {
@@ -90,9 +92,9 @@ public:
    std::string FunctionParameterDefaultAt( size_t nth ) const;
 
    TReturnTypeAdapter   ReturnType() const;
-   TScopeAdapter        DeclaringScope() const;
-   TTypeAdapter         DeclaringType() const;
-   TTypeAdapter         TypeOf() const;
+   TScopeAdapter        DeclaringScope ATLAS_NOT_THREAD_SAFE () const;
+   TTypeAdapter         DeclaringType ATLAS_NOT_THREAD_SAFE () const;
+   TTypeAdapter         TypeOf ATLAS_NOT_THREAD_SAFE () const;
 
 private:
    TDictionary* fMember;
@@ -107,14 +109,14 @@ public:
 public:
    std::string Name() const;
 
-   TScopeAdapter ToType() const;
+   TScopeAdapter ToType ATLAS_NOT_THREAD_SAFE () const;
 
 private:
    TBaseClass* fBase;
 };
 
 
-class TScopeAdapter {
+class ATLAS_NOT_THREAD_SAFE TScopeAdapter {
 public:
    TScopeAdapter();
    TScopeAdapter( TClass* klass );
diff --git a/Control/DataModelRoot/src/RootType.cxx b/Control/DataModelRoot/src/RootType.cxx
index 026b3653421bc88a4dbda94647791ed8fdd36334..58f03590ae1d84eb78daa83e4d3c13a60a08837a 100644
--- a/Control/DataModelRoot/src/RootType.cxx
+++ b/Control/DataModelRoot/src/RootType.cxx
@@ -142,7 +142,7 @@ TMemberAdapter::operator TMethodArg*() const
 }
 
 //____________________________________________________________________________
-TTypeAdapter TMemberAdapter::TypeOf() const
+TTypeAdapter TMemberAdapter::TypeOf ATLAS_NOT_THREAD_SAFE () const
 {
    // get the type of the data member
    TDataMember* dataMember = (TDataMember*)*this;
@@ -330,7 +330,7 @@ TScopeAdapter TMemberAdapter::DeclaringScope() const
    return std::string( "" );
 }
 
-TTypeAdapter TMemberAdapter::DeclaringType() const
+TTypeAdapter TMemberAdapter::DeclaringType ATLAS_NOT_THREAD_SAFE () const
 {
 // no distinction between scope/type
    return DeclaringScope();
@@ -345,7 +345,7 @@ std::string TBaseAdapter::Name() const
 }
 
 //____________________________________________________________________________
-TScopeAdapter TBaseAdapter::ToType() const
+TScopeAdapter TBaseAdapter::ToType ATLAS_NOT_THREAD_SAFE () const
 {
 // wrap the actual class representing this base
    return TScopeAdapter( fBase->GetClassPointer() );
@@ -626,7 +626,7 @@ std::string TScopeAdapter::Name( unsigned int mod ) const
 }
 
 //____________________________________________________________________________
-TScopeAdapter TScopeAdapter::DeclaringScope() const
+TScopeAdapter TScopeAdapter::DeclaringScope  ATLAS_NOT_THREAD_SAFE () const
 {
    std::string name = Name( Reflex::FINAL | Reflex::SCOPED );
    std::string::size_type pos = name.rfind( "::" );