From 92b2990774d7d46de14c0326a28b7f6faf266ef3 Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Fri, 15 Feb 2019 18:01:16 +0100
Subject: [PATCH] DDRec::DetectorData: add Data Struct to store any number of
 named parameters with double value

---
 DDRec/include/DDRec/DetectorData.h |  6 ++++++
 DDRec/src/DetectorData.cpp         | 14 ++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/DDRec/include/DDRec/DetectorData.h b/DDRec/include/DDRec/DetectorData.h
index 9b822aa90..f78152940 100644
--- a/DDRec/include/DDRec/DetectorData.h
+++ b/DDRec/include/DDRec/DetectorData.h
@@ -485,6 +485,12 @@ namespace dd4hep {
 
     std::ostream& operator<<( std::ostream& io , const NeighbourSurfacesData& d ) ;
 
+    struct MapStringDoubleStruct {
+      std::map<std::string, double> doubleParameters{};
+    };
+    using DoubleParameters = StructExtension<MapStringDoubleStruct>;
+
+    std::ostream& operator<<( std::ostream& io , const DoubleParameters& d ) ;
 
   } /* namespace rec */
 } /* namespace dd4hep */
diff --git a/DDRec/src/DetectorData.cpp b/DDRec/src/DetectorData.cpp
index be7811e43..c3ea7d2d5 100644
--- a/DDRec/src/DetectorData.cpp
+++ b/DDRec/src/DetectorData.cpp
@@ -199,6 +199,20 @@ namespace dd4hep {
       io <<  "   sameLayer.size() : " << d.sameLayer.size() << std::endl ; 
       return io ;
     }
+
+
+    std::ostream& operator<<(std::ostream& io, const DoubleParameters& d) {
+      boost::io::ios_base_all_saver ifs(io);
+      io <<  " --DoubleParameters: "  << std::scientific << std::endl ;
+      for (auto const& thePair: d.doubleParameters) {
+        io <<  "    "
+           << std::setw(40) << thePair.first << ":"
+           << std::setw(14) << thePair.second
+           << std::endl;
+      }
+      return io ;
+    }
+
  
 
   } // namespace
-- 
GitLab