From c99099dafb46f2c38784037ece464e91bf935f0a Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Fri, 21 Oct 2016 12:44:31 +0200
Subject: [PATCH] Fix GEAR interface in DDRec

---
 DDCore/include/DD4hep/Segmentations.h |  4 +++-
 DDCore/src/Segmentations.cpp          | 10 ++++++----
 DDRec/src/gear/createGearForILD.cpp   |  6 +++---
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/DDCore/include/DD4hep/Segmentations.h b/DDCore/include/DD4hep/Segmentations.h
index 395415df7..deadd6f0e 100644
--- a/DDCore/include/DD4hep/Segmentations.h
+++ b/DDCore/include/DD4hep/Segmentations.h
@@ -51,7 +51,7 @@ namespace DD4hep {
       /// Initializing constructor creating a new object of the given DDSegmentation type
       Segmentation(const std::string& type, const std::string& name, BitField64* decoder);
       /// Default constructor
-      Segmentation() : Handle<Object>() { }
+      Segmentation() = default;
       /// Copy Constructor from object
       Segmentation(const Segmentation& e) : Handle<Object>(e) { }
 #ifndef __CINT__
@@ -69,6 +69,8 @@ namespace DD4hep {
       std::string type() const;
       /// Access to the parameters
       Parameters parameters() const;
+      /// Access to parameter by name
+      Parameter  parameter(const std::string& parameterName) const;
       /// Access the main detector element using this segmetnation object
       Handle<DetElementObject> detector() const;
       /// Access the sensitive detector using this segmetnation object
diff --git a/DDCore/src/Segmentations.cpp b/DDCore/src/Segmentations.cpp
index 7e2c5ed4c..77f13ac8b 100644
--- a/DDCore/src/Segmentations.cpp
+++ b/DDCore/src/Segmentations.cpp
@@ -26,9 +26,6 @@
 using namespace std;
 using namespace DD4hep;
 using namespace DD4hep::Geometry;
-using DD4hep::DDSegmentation::Parameter;
-using DD4hep::DDSegmentation::Parameters;
-using DD4hep::DDSegmentation::SegmentationParameter;
 
 DD4HEP_INSTANTIATE_HANDLE_UNNAMED(SegmentationObject);
 
@@ -56,10 +53,15 @@ bool Segmentation::useForHitPosition() const {
 }
 
 /// Access to the parameters
-Parameters Segmentation::parameters() const {
+Segmentation::Parameters Segmentation::parameters() const {
   return data<Object>()->parameters();
 }
 
+/// Access to parameter by name
+Segmentation::Parameter  Segmentation::parameter(const std::string& parameterName) const   {
+  return data<Object>()->parameter(parameterName);
+}
+
 /// determine the local position based on the cell ID
 Position Segmentation::position(const long64& cell) const {
   return Position(data<Object>()->segmentation->position(cell));
diff --git a/DDRec/src/gear/createGearForILD.cpp b/DDRec/src/gear/createGearForILD.cpp
index 04ad85f2c..84718a3bb 100644
--- a/DDRec/src/gear/createGearForILD.cpp
+++ b/DDRec/src/gear/createGearForILD.cpp
@@ -405,9 +405,9 @@ namespace DD4hep{
 	      Readout readOut = sD.readout() ;
 	      Segmentation seg = readOut.segmentation() ;
 	      
-	      //	    DDSegmentation::DoubleVecParameter rPar =  dynamic_cast<DDSegmentation::DoubleVecParameter>( seg.segmentation()->parameter("grid_r_values"));
-	      DDSegmentation::DoubleVecParameter pPar =  dynamic_cast<DDSegmentation::DoubleVecParameter>( seg.segmentation()->parameter("grid_phi_values"));
-	      DDSegmentation::DoubleParameter    oPPar=  dynamic_cast<DDSegmentation::DoubleParameter>(    seg.segmentation()->parameter("offset_phi"));
+	      //	    DDSegmentation::DoubleVecParameter rPar =  dynamic_cast<DDSegmentation::DoubleVecParameter>( seg.parameter("grid_r_values"));
+	      DDSegmentation::DoubleVecParameter pPar =  dynamic_cast<DDSegmentation::DoubleVecParameter>( seg.parameter("grid_phi_values"));
+	      DDSegmentation::DoubleParameter    oPPar=  dynamic_cast<DDSegmentation::DoubleParameter>(    seg.parameter("offset_phi"));
 	      
 
 	      //offset_phi="-180*degree+(360*degree-BCal_SpanningPhi)*0.5"
-- 
GitLab