From 4db360e82ee16b5c822b7a3332e01ff225e5268f Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Mon, 19 Feb 2024 16:47:16 +0100
Subject: [PATCH] Correct the behaviour of (fake) TwistedTube object when
 converted to Geant4

---
 DDG4/src/Geant4ShapeConverter.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/DDG4/src/Geant4ShapeConverter.cpp b/DDG4/src/Geant4ShapeConverter.cpp
index b7b35a31e..81e871474 100644
--- a/DDG4/src/Geant4ShapeConverter.cpp
+++ b/DDG4/src/Geant4ShapeConverter.cpp
@@ -106,10 +106,18 @@ namespace dd4hep {
 
     template <> G4VSolid* convertShape<TwistedTubeObject>(const TGeoShape* shape)  {
       const TwistedTubeObject* sh = (const TwistedTubeObject*) shape;
+      if ( std::fabs(std::fabs(sh->GetNegativeEndZ()) - std::fabs(sh->GetPositiveEndZ())) < 1e-10 )   {
+        return new G4TwistedTubs(sh->GetName(),sh->GetPhiTwist() * DEGREE_2_RAD,
+                                 sh->GetRmin() * CM_2_MM, sh->GetRmax() * CM_2_MM,
+                                 sh->GetNegativeEndZ() * CM_2_MM,
+                                 sh->GetNsegments(),
+                                 (sh->GetPhi2()-sh->GetPhi1()) * DEGREE_2_RAD);
+      }
       return new G4TwistedTubs(sh->GetName(),sh->GetPhiTwist() * DEGREE_2_RAD,
                                sh->GetRmin() * CM_2_MM, sh->GetRmax() * CM_2_MM,
                                sh->GetNegativeEndZ() * CM_2_MM, sh->GetPositiveEndZ() * CM_2_MM,
-                               sh->GetNsegments(), (sh->GetPhi2()-sh->GetPhi1()) * DEGREE_2_RAD);
+                               sh->GetNsegments(),
+                               (sh->GetPhi2()-sh->GetPhi1()) * DEGREE_2_RAD);
     }
 
     template <> G4VSolid* convertShape<TGeoTrd1>(const TGeoShape* shape)  {
-- 
GitLab