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