From fd1f7c424a3bf549217ccd399f4bf6a58ef6b576 Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Wed, 6 Jun 2018 21:45:23 +0200
Subject: [PATCH] Hopefully the last fix for truncated tubes.

---
 DDCore/src/Shapes.cpp                         |  74 +++--
 examples/ClientTests/compact/CheckShape.xml   |   2 +-
 .../compact/Check_Shape_TruncatedTube.xml     |  36 ++-
 .../ClientTests/ref/Ref_TruncatedTube.txt     | 303 +++++++++++++-----
 4 files changed, 294 insertions(+), 121 deletions(-)

diff --git a/DDCore/src/Shapes.cpp b/DDCore/src/Shapes.cpp
index 709c55cc5..841eb97df 100644
--- a/DDCore/src/Shapes.cpp
+++ b/DDCore/src/Shapes.cpp
@@ -435,37 +435,61 @@ void TruncatedTube::make(double zhalf, double rmin, double rmax, double startPhi
 
   double r         = cutAtStart;
   double R         = cutAtDelta;
-  // exaggerate dimensions - does not matter, it's subtracted!
-  double boxX      = 30.*rmax;
-  double boxY      = 20.*rmax;
-  // width of the box > width of the tubs
-  double boxZ      = 1.1 * zhalf;
   // angle of the box w.r.t. tubs
   double cath      = r - R * std::cos( deltaPhi*units::deg );
-  double hypo      = std::sqrt( r * r + R * R - 2. * r * R * std::cos( deltaPhi*units::deg ));
+  double hypo      = std::sqrt( r*r + R*R - 2.*r*R * std::cos( deltaPhi*units::deg ));
   double cos_alpha = cath / hypo;
-  double alpha     = -std::acos( cos_alpha );
-         
-  // rotationmatrix of box w.r.t. tubs
-  RotationZYX rot;
-  rot *= RotationX(M_PI/2.);
-  rot *= RotationZ(alpha);
-         
-  // center point of the box
-  double xBox;
-  if( !cutInside )
-    xBox = r + boxX / std::sin( std::fabs( alpha ));
+  double alpha     = std::acos( cos_alpha );
+  double sin_alpha = std::sin( std::fabs(alpha) );
+  
+  // exaggerate dimensions - does not matter, it's subtracted!
+  // If we don't, the **edge** of the box would cut into the tube segment
+  // for larger delta-phi values
+  double boxX      = 1.1*rmax + rmax/sin_alpha; // Need to adjust for move!
+  double boxY      = rmax;
+  // width of the box > width of the tubs
+  double boxZ      = 1.1 * zhalf;
+  double xBox;      // center point of the box
+  if( cutInside )
+    xBox = r - boxY / sin_alpha;
   else
-    xBox = - (boxX / std::sin( std::fabs( alpha )) - r);
+    xBox = r + boxY / sin_alpha;
+
+  // rotationmatrix of box w.r.t. tubs
+  TGeoRotation rot;
+  //rot.RotateX( 90.0 );
+  rot.RotateZ( -alpha/dd4hep::deg );
+  TGeoTranslation trans(xBox, 0., 0.);  
+  TGeoBBox* box  = new TGeoBBox(boxX, boxY, boxZ);
+  TGeoTubeSeg* tubs = new TGeoTubeSeg(rmin, rmax, zhalf, startPhi, deltaPhi);
+  TGeoSubtraction* sub = new TGeoSubtraction(tubs, box, nullptr, new TGeoCombiTrans(trans, rot));
+  // For debugging:
+  // TGeoUnion* sub = new TGeoUnion(tubs, box, nullptr, new TGeoCombiTrans(trans, rot));
+  _assign(new TGeoCompositeShape("", sub),"","trunctube",true);
 #if 0
-  cout << "Box:  " << boxX << " " << boxZ << " " << boxY << endl;
-  cout << "Tubs: " << rmin << " " << rmax << " " << zhalf << " " << startPhi << " " << deltaPhi << endl;
-  cout << "Pos:  " << xBox << " " << 0 << " " << 0 << endl;
+  cout << "Trans:";  trans.Print(); cout << endl;
+  cout << "Rot:  ";  rot.Print();   cout << endl;
+  cout << " Zhalf:        " << zhalf
+       << " rmin:         " << rmin
+       << " rmax:         " << rmax
+       << " r/cutAtStart: " << r
+       << " R/cutAtDelta: " << R
+       << " cutInside:    " << (cutInside ? "YES" : "NO ")
+       << endl;
+  cout << " cath:      " << cath
+       << " hypo:      " << hypo
+       << " cos_alpha: " << cos_alpha
+       << " alpha:     " << alpha
+       << " alpha(deg):" << alpha/dd4hep::deg
+       << endl;
+  cout << " Deg:       " << dd4hep::deg
+       << " cm:        " << dd4hep::cm
+       << " xBox:      " << xBox
+       << endl;
+  cout << "Box:" << "x:" << box->GetDX() << " y:" << box->GetDY() << " z:" << box->GetDZ() << endl;
+  cout << "Tubs:" << " rmin:" << rmin << " rmax" << rmax << "zhalf" << zhalf
+       << " startPhi:" <<  startPhi << " deltaPhi:" << deltaPhi << endl;
 #endif
-  Box  box(boxX, boxY, boxZ);
-  Tube tubs(rmin, rmax, zhalf, startPhi*units::deg, (startPhi+deltaPhi)*units::deg);
-  SubtractionSolid sub(tubs, box, Transform3D(rot,Position(xBox,0.,0.)));
-  _assign(sub.ptr(),"","trunctube",true);
 }
 
 /// Constructor to be used when creating a new object with attribute initialization
diff --git a/examples/ClientTests/compact/CheckShape.xml b/examples/ClientTests/compact/CheckShape.xml
index 9c24c6a1f..fb2557a34 100644
--- a/examples/ClientTests/compact/CheckShape.xml
+++ b/examples/ClientTests/compact/CheckShape.xml
@@ -43,7 +43,7 @@
     <constant name="world_x" value="world_side"/>
     <constant name="world_y" value="world_side"/>
     <constant name="world_z" value="world_side"/>
-    <constant name="CheckShape_create" value="1"/>
+    <constant name="CheckShape_create" value="0"/>
   </define>
 
   <display>
diff --git a/examples/ClientTests/compact/Check_Shape_TruncatedTube.xml b/examples/ClientTests/compact/Check_Shape_TruncatedTube.xml
index 3d4c217f7..bebd8d74f 100644
--- a/examples/ClientTests/compact/Check_Shape_TruncatedTube.xml
+++ b/examples/ClientTests/compact/Check_Shape_TruncatedTube.xml
@@ -7,26 +7,46 @@
     <detector id="1" name="Shape_TruncatedTube" type="DD4hep_TestShape_Creator">
 <!--
       <TruncTubs name="trunctubs2" rMin="6.9551*m" rMax="9*m" cutAtStart="6.9551*m" cutAtDelta="7.20045*m" cutInside="true" startPhi="0*deg" deltaPhi="15*deg" zHalf="6.57005*m"/>
--->
 
+        <position z="-28.9*m" y="5.9*m" x="0."/>
+-->
+<!--
       <check vis="Shape1_vis">
         <shape type="TruncatedTube" zhalf="6.57005*m" rmin="6.9551*m" rmax="9*m" 
                startphi="0*deg" deltaphi="15*deg" 
-               cutAtStart="6.9551*m" cutAtDelta="7.20045*m" cutInside="1"/>
-        <position z="-28.9*m" y="5.9*m" x="0."/>
+               cutAtStart="6.9551*m" cutAtDelta="7.20045*m" cutInside="true"/>
       </check>
-
-<!--
+-->
       <check vis="Shape1_vis">
         <shape type="TruncatedTube" zhalf="50*cm" rmin="20*cm" rmax="40*cm" 
-               startphi="0*rad" deltaphi="pi/2.*rad" 
-               cutAtStart="25*cm" cutAtDelta="35*cm" cutInside="1"/>
+               startphi="0*deg" deltaphi="90*deg" 
+               cutAtStart="25*cm" cutAtDelta="35*cm" cutInside="true"/>
+        <position x="0*cm"  y="0*cm"   z="100*cm"/>
       </check>
+      <check vis="Shape1_vis">
+        <shape type="TruncatedTube" zhalf="50*cm" rmin="20*cm" rmax="40*cm" 
+               startphi="0*deg" deltaphi="90*deg" 
+               cutAtStart="25*cm" cutAtDelta="35*cm" cutInside="false"/>
+        <position x="0*cm"  y="0*cm"   z="-100*cm"/>
+      </check>
+      <check vis="Shape2_vis">
+        <shape type="TruncatedTube" zhalf="50*cm" rmin="20*cm" rmax="40*cm" 
+               startphi="0*deg" deltaphi="45*deg" 
+               cutAtStart="20*cm" cutAtDelta="30*cm" cutInside="true"/>
+        <position x="0*cm"  y="150*cm"   z="-100*cm"/>
+      </check>
+      <check vis="Shape3_vis">
+        <shape type="TruncatedTube" zhalf="50*cm" rmin="20*cm" rmax="40*cm" 
+               startphi="0*deg" deltaphi="150*deg" 
+               cutAtStart="20*cm" cutAtDelta="35*cm" cutInside="true"/>
+        <position x="90*cm"  y="150*cm"   z="100*cm"/>
+      </check>
+<!--
       <check vis="Shape2_vis">
         <shape type="TruncatedTube" zhalf="50*cm" rmin="20*cm" rmax="40*cm" 
                startphi="0*rad" deltaphi="pi/2*rad" 
                cutAtStart="25*cm" cutAtDelta="35*cm" cutInside="0"/>
-        <position x="30*cm"  y="30*cm"   z="-90*cm"/>
+        <position x="0*cm"  y="90*cm"   z="0*cm"/>
         <rotation x="0*cm"   y="0*cm"    z="0*cm"/>
       </check>
 -->
diff --git a/examples/ClientTests/ref/Ref_TruncatedTube.txt b/examples/ClientTests/ref/Ref_TruncatedTube.txt
index 412be0c6a..d55b01701 100644
--- a/examples/ClientTests/ref/Ref_TruncatedTube.txt
+++ b/examples/ClientTests/ref/Ref_TruncatedTube.txt
@@ -1,87 +1,216 @@
-ShapeCheck[0] TGeoCompositeShape 84 Mesh-points:
-TGeoCompositeShape TruncatedTube N(mesh)=84  N(vert)=84  N(seg)=0  N(pols)=0
-TGeoCompositeShape 0   Local  ( 695.51,    0.00, -657.00) Global ( 695.51,    0.00, -657.00)
-TGeoCompositeShape 1   Local  ( 695.45,    9.10, -657.00) Global ( 695.45,    9.10, -657.00)
-TGeoCompositeShape 2   Local  ( 695.27,   18.21, -657.00) Global ( 695.27,   18.21, -657.00)
-TGeoCompositeShape 3   Local  ( 694.97,   27.31, -657.00) Global ( 694.97,   27.31, -657.00)
-TGeoCompositeShape 4   Local  ( 694.56,   36.40, -657.00) Global ( 694.56,   36.40, -657.00)
-TGeoCompositeShape 5   Local  ( 694.02,   45.49, -657.00) Global ( 694.02,   45.49, -657.00)
-TGeoCompositeShape 6   Local  ( 693.37,   54.57, -657.00) Global ( 693.37,   54.57, -657.00)
-TGeoCompositeShape 7   Local  ( 692.59,   63.64, -657.00) Global ( 692.59,   63.64, -657.00)
-TGeoCompositeShape 8   Local  ( 691.70,   72.70, -657.00) Global ( 691.70,   72.70, -657.00)
-TGeoCompositeShape 9   Local  ( 690.69,   81.75, -657.00) Global ( 690.69,   81.75, -657.00)
-TGeoCompositeShape 10  Local  ( 689.56,   90.78, -657.00) Global ( 689.56,   90.78, -657.00)
-TGeoCompositeShape 11  Local  ( 688.31,   99.80, -657.00) Global ( 688.31,   99.80, -657.00)
-TGeoCompositeShape 12  Local  ( 686.95,  108.80, -657.00) Global ( 686.95,  108.80, -657.00)
-TGeoCompositeShape 13  Local  ( 685.46,  117.78, -657.00) Global ( 685.46,  117.78, -657.00)
-TGeoCompositeShape 14  Local  ( 683.86,  126.75, -657.00) Global ( 683.86,  126.75, -657.00)
-TGeoCompositeShape 15  Local  ( 682.15,  135.69, -657.00) Global ( 682.15,  135.69, -657.00)
-TGeoCompositeShape 16  Local  ( 680.31,  144.60, -657.00) Global ( 680.31,  144.60, -657.00)
-TGeoCompositeShape 17  Local  ( 678.36,  153.50, -657.00) Global ( 678.36,  153.50, -657.00)
-TGeoCompositeShape 18  Local  ( 676.29,  162.36, -657.00) Global ( 676.29,  162.36, -657.00)
-TGeoCompositeShape 19  Local  ( 674.11,  171.20, -657.00) Global ( 674.11,  171.20, -657.00)
-TGeoCompositeShape 20  Local  ( 671.81,  180.01, -657.00) Global ( 671.81,  180.01, -657.00)
-TGeoCompositeShape 21  Local  ( 900.00,    0.00, -657.00) Global ( 900.00,    0.00, -657.00)
-TGeoCompositeShape 22  Local  ( 899.92,   11.78, -657.00) Global ( 899.92,   11.78, -657.00)
-TGeoCompositeShape 23  Local  ( 899.69,   23.56, -657.00) Global ( 899.69,   23.56, -657.00)
-TGeoCompositeShape 24  Local  ( 899.31,   35.33, -657.00) Global ( 899.31,   35.33, -657.00)
-TGeoCompositeShape 25  Local  ( 898.77,   47.10, -657.00) Global ( 898.77,   47.10, -657.00)
-TGeoCompositeShape 26  Local  ( 898.07,   58.86, -657.00) Global ( 898.07,   58.86, -657.00)
-TGeoCompositeShape 27  Local  ( 897.23,   70.61, -657.00) Global ( 897.23,   70.61, -657.00)
-TGeoCompositeShape 28  Local  ( 896.22,   82.35, -657.00) Global ( 896.22,   82.35, -657.00)
-TGeoCompositeShape 29  Local  ( 895.07,   94.08, -657.00) Global ( 895.07,   94.08, -657.00)
-TGeoCompositeShape 30  Local  ( 893.76,  105.78, -657.00) Global ( 893.76,  105.78, -657.00)
-TGeoCompositeShape 31  Local  ( 892.30,  117.47, -657.00) Global ( 892.30,  117.47, -657.00)
-TGeoCompositeShape 32  Local  ( 890.69,  129.14, -657.00) Global ( 890.69,  129.14, -657.00)
-TGeoCompositeShape 33  Local  ( 888.92,  140.79, -657.00) Global ( 888.92,  140.79, -657.00)
-TGeoCompositeShape 34  Local  ( 887.00,  152.41, -657.00) Global ( 887.00,  152.41, -657.00)
-TGeoCompositeShape 35  Local  ( 884.93,  164.01, -657.00) Global ( 884.93,  164.01, -657.00)
-TGeoCompositeShape 36  Local  ( 882.71,  175.58, -657.00) Global ( 882.71,  175.58, -657.00)
-TGeoCompositeShape 37  Local  ( 880.33,  187.12, -657.00) Global ( 880.33,  187.12, -657.00)
-TGeoCompositeShape 38  Local  ( 877.81,  198.63, -657.00) Global ( 877.81,  198.63, -657.00)
-TGeoCompositeShape 39  Local  ( 875.13,  210.10, -657.00) Global ( 875.13,  210.10, -657.00)
-TGeoCompositeShape 40  Local  ( 872.31,  221.54, -657.00) Global ( 872.31,  221.54, -657.00)
-TGeoCompositeShape 41  Local  ( 869.33,  232.94, -657.00) Global ( 869.33,  232.94, -657.00)
-TGeoCompositeShape 42  Local  ( 695.51,    0.00,  657.00) Global ( 695.51,    0.00,  657.00)
-TGeoCompositeShape 43  Local  ( 695.45,    9.10,  657.00) Global ( 695.45,    9.10,  657.00)
-TGeoCompositeShape 44  Local  ( 695.27,   18.21,  657.00) Global ( 695.27,   18.21,  657.00)
-TGeoCompositeShape 45  Local  ( 694.97,   27.31,  657.00) Global ( 694.97,   27.31,  657.00)
-TGeoCompositeShape 46  Local  ( 694.56,   36.40,  657.00) Global ( 694.56,   36.40,  657.00)
-TGeoCompositeShape 47  Local  ( 694.02,   45.49,  657.00) Global ( 694.02,   45.49,  657.00)
-TGeoCompositeShape 48  Local  ( 693.37,   54.57,  657.00) Global ( 693.37,   54.57,  657.00)
-TGeoCompositeShape 49  Local  ( 692.59,   63.64,  657.00) Global ( 692.59,   63.64,  657.00)
-TGeoCompositeShape 50  Local  ( 691.70,   72.70,  657.00) Global ( 691.70,   72.70,  657.00)
-TGeoCompositeShape 51  Local  ( 690.69,   81.75,  657.00) Global ( 690.69,   81.75,  657.00)
-TGeoCompositeShape 52  Local  ( 689.56,   90.78,  657.00) Global ( 689.56,   90.78,  657.00)
-TGeoCompositeShape 53  Local  ( 688.31,   99.80,  657.00) Global ( 688.31,   99.80,  657.00)
-TGeoCompositeShape 54  Local  ( 686.95,  108.80,  657.00) Global ( 686.95,  108.80,  657.00)
-TGeoCompositeShape 55  Local  ( 685.46,  117.78,  657.00) Global ( 685.46,  117.78,  657.00)
-TGeoCompositeShape 56  Local  ( 683.86,  126.75,  657.00) Global ( 683.86,  126.75,  657.00)
-TGeoCompositeShape 57  Local  ( 682.15,  135.69,  657.00) Global ( 682.15,  135.69,  657.00)
-TGeoCompositeShape 58  Local  ( 680.31,  144.60,  657.00) Global ( 680.31,  144.60,  657.00)
-TGeoCompositeShape 59  Local  ( 678.36,  153.50,  657.00) Global ( 678.36,  153.50,  657.00)
-TGeoCompositeShape 60  Local  ( 676.29,  162.36,  657.00) Global ( 676.29,  162.36,  657.00)
-TGeoCompositeShape 61  Local  ( 674.11,  171.20,  657.00) Global ( 674.11,  171.20,  657.00)
-TGeoCompositeShape 62  Local  ( 671.81,  180.01,  657.00) Global ( 671.81,  180.01,  657.00)
-TGeoCompositeShape 63  Local  ( 900.00,    0.00,  657.00) Global ( 900.00,    0.00,  657.00)
-TGeoCompositeShape 64  Local  ( 899.92,   11.78,  657.00) Global ( 899.92,   11.78,  657.00)
-TGeoCompositeShape 65  Local  ( 899.69,   23.56,  657.00) Global ( 899.69,   23.56,  657.00)
-TGeoCompositeShape 66  Local  ( 899.31,   35.33,  657.00) Global ( 899.31,   35.33,  657.00)
-TGeoCompositeShape 67  Local  ( 898.77,   47.10,  657.00) Global ( 898.77,   47.10,  657.00)
-TGeoCompositeShape 68  Local  ( 898.07,   58.86,  657.00) Global ( 898.07,   58.86,  657.00)
-TGeoCompositeShape 69  Local  ( 897.23,   70.61,  657.00) Global ( 897.23,   70.61,  657.00)
-TGeoCompositeShape 70  Local  ( 896.22,   82.35,  657.00) Global ( 896.22,   82.35,  657.00)
-TGeoCompositeShape 71  Local  ( 895.07,   94.08,  657.00) Global ( 895.07,   94.08,  657.00)
-TGeoCompositeShape 72  Local  ( 893.76,  105.78,  657.00) Global ( 893.76,  105.78,  657.00)
-TGeoCompositeShape 73  Local  ( 892.30,  117.47,  657.00) Global ( 892.30,  117.47,  657.00)
-TGeoCompositeShape 74  Local  ( 890.69,  129.14,  657.00) Global ( 890.69,  129.14,  657.00)
-TGeoCompositeShape 75  Local  ( 888.92,  140.79,  657.00) Global ( 888.92,  140.79,  657.00)
-TGeoCompositeShape 76  Local  ( 887.00,  152.41,  657.00) Global ( 887.00,  152.41,  657.00)
-TGeoCompositeShape 77  Local  ( 884.93,  164.01,  657.00) Global ( 884.93,  164.01,  657.00)
-TGeoCompositeShape 78  Local  ( 882.71,  175.58,  657.00) Global ( 882.71,  175.58,  657.00)
-TGeoCompositeShape 79  Local  ( 880.33,  187.12,  657.00) Global ( 880.33,  187.12,  657.00)
-TGeoCompositeShape 80  Local  ( 877.81,  198.63,  657.00) Global ( 877.81,  198.63,  657.00)
-TGeoCompositeShape 81  Local  ( 875.13,  210.10,  657.00) Global ( 875.13,  210.10,  657.00)
-TGeoCompositeShape 82  Local  ( 872.31,  221.54,  657.00) Global ( 872.31,  221.54,  657.00)
-TGeoCompositeShape 83  Local  ( 869.33,  232.94,  657.00) Global ( 869.33,  232.94,  657.00)
-TGeoCompositeShape Bounding box:  dx= 114.09 dy= 116.47 dz= 657.00 Origin: x= 785.91 y= 116.47 z=   0.00
+ShapeCheck[0] TGeoCompositeShape 42 Mesh-points:
+TGeoCompositeShape TruncatedTube N(mesh)=42  N(vert)=42  N(seg)=0  N(pols)=0
+TGeoCompositeShape 0   Local  (  40.00,    0.00,  -50.00) Global (  40.00,    0.00,   50.00)
+TGeoCompositeShape 1   Local  (  39.88,    3.14,  -50.00) Global (  39.88,    3.14,   50.00)
+TGeoCompositeShape 2   Local  (  39.51,    6.26,  -50.00) Global (  39.51,    6.26,   50.00)
+TGeoCompositeShape 3   Local  (  38.89,    9.34,  -50.00) Global (  38.89,    9.34,   50.00)
+TGeoCompositeShape 4   Local  (  38.04,   12.36,  -50.00) Global (  38.04,   12.36,   50.00)
+TGeoCompositeShape 5   Local  (  36.96,   15.31,  -50.00) Global (  36.96,   15.31,   50.00)
+TGeoCompositeShape 6   Local  (  35.64,   18.16,  -50.00) Global (  35.64,   18.16,   50.00)
+TGeoCompositeShape 7   Local  (  34.11,   20.90,  -50.00) Global (  34.11,   20.90,   50.00)
+TGeoCompositeShape 8   Local  (  32.36,   23.51,  -50.00) Global (  32.36,   23.51,   50.00)
+TGeoCompositeShape 9   Local  (  30.42,   25.98,  -50.00) Global (  30.42,   25.98,   50.00)
+TGeoCompositeShape 10  Local  (  28.28,   28.28,  -50.00) Global (  28.28,   28.28,   50.00)
+TGeoCompositeShape 11  Local  (  25.98,   30.42,  -50.00) Global (  25.98,   30.42,   50.00)
+TGeoCompositeShape 12  Local  (  23.51,   32.36,  -50.00) Global (  23.51,   32.36,   50.00)
+TGeoCompositeShape 13  Local  (  20.90,   34.11,  -50.00) Global (  20.90,   34.11,   50.00)
+TGeoCompositeShape 14  Local  (  18.16,   35.64,  -50.00) Global (  18.16,   35.64,   50.00)
+TGeoCompositeShape 15  Local  (  15.31,   36.96,  -50.00) Global (  15.31,   36.96,   50.00)
+TGeoCompositeShape 16  Local  (  12.36,   38.04,  -50.00) Global (  12.36,   38.04,   50.00)
+TGeoCompositeShape 17  Local  (   9.34,   38.89,  -50.00) Global (   9.34,   38.89,   50.00)
+TGeoCompositeShape 18  Local  (   6.26,   39.51,  -50.00) Global (   6.26,   39.51,   50.00)
+TGeoCompositeShape 19  Local  (   3.14,   39.88,  -50.00) Global (   3.14,   39.88,   50.00)
+TGeoCompositeShape 20  Local  (   0.00,   40.00,  -50.00) Global (   0.00,   40.00,   50.00)
+TGeoCompositeShape 21  Local  (  40.00,    0.00,   50.00) Global (  40.00,    0.00,  150.00)
+TGeoCompositeShape 22  Local  (  39.88,    3.14,   50.00) Global (  39.88,    3.14,  150.00)
+TGeoCompositeShape 23  Local  (  39.51,    6.26,   50.00) Global (  39.51,    6.26,  150.00)
+TGeoCompositeShape 24  Local  (  38.89,    9.34,   50.00) Global (  38.89,    9.34,  150.00)
+TGeoCompositeShape 25  Local  (  38.04,   12.36,   50.00) Global (  38.04,   12.36,  150.00)
+TGeoCompositeShape 26  Local  (  36.96,   15.31,   50.00) Global (  36.96,   15.31,  150.00)
+TGeoCompositeShape 27  Local  (  35.64,   18.16,   50.00) Global (  35.64,   18.16,  150.00)
+TGeoCompositeShape 28  Local  (  34.11,   20.90,   50.00) Global (  34.11,   20.90,  150.00)
+TGeoCompositeShape 29  Local  (  32.36,   23.51,   50.00) Global (  32.36,   23.51,  150.00)
+TGeoCompositeShape 30  Local  (  30.42,   25.98,   50.00) Global (  30.42,   25.98,  150.00)
+TGeoCompositeShape 31  Local  (  28.28,   28.28,   50.00) Global (  28.28,   28.28,  150.00)
+TGeoCompositeShape 32  Local  (  25.98,   30.42,   50.00) Global (  25.98,   30.42,  150.00)
+TGeoCompositeShape 33  Local  (  23.51,   32.36,   50.00) Global (  23.51,   32.36,  150.00)
+TGeoCompositeShape 34  Local  (  20.90,   34.11,   50.00) Global (  20.90,   34.11,  150.00)
+TGeoCompositeShape 35  Local  (  18.16,   35.64,   50.00) Global (  18.16,   35.64,  150.00)
+TGeoCompositeShape 36  Local  (  15.31,   36.96,   50.00) Global (  15.31,   36.96,  150.00)
+TGeoCompositeShape 37  Local  (  12.36,   38.04,   50.00) Global (  12.36,   38.04,  150.00)
+TGeoCompositeShape 38  Local  (   9.34,   38.89,   50.00) Global (   9.34,   38.89,  150.00)
+TGeoCompositeShape 39  Local  (   6.26,   39.51,   50.00) Global (   6.26,   39.51,  150.00)
+TGeoCompositeShape 40  Local  (   3.14,   39.88,   50.00) Global (   3.14,   39.88,  150.00)
+TGeoCompositeShape 41  Local  (   0.00,   40.00,   50.00) Global (   0.00,   40.00,  150.00)
+TGeoCompositeShape Bounding box:  dx=  20.00 dy=  20.00 dz=  50.00 Origin: x=  20.00 y=  20.00 z=   0.00
+ShapeCheck[1] TGeoCompositeShape 42 Mesh-points:
+TGeoCompositeShape TruncatedTube N(mesh)=42  N(vert)=42  N(seg)=0  N(pols)=0
+TGeoCompositeShape 0   Local  (  20.00,    0.00,  -50.00) Global (  20.00,    0.00, -150.00)
+TGeoCompositeShape 1   Local  (  19.94,    1.57,  -50.00) Global (  19.94,    1.57, -150.00)
+TGeoCompositeShape 2   Local  (  19.75,    3.13,  -50.00) Global (  19.75,    3.13, -150.00)
+TGeoCompositeShape 3   Local  (  19.45,    4.67,  -50.00) Global (  19.45,    4.67, -150.00)
+TGeoCompositeShape 4   Local  (  19.02,    6.18,  -50.00) Global (  19.02,    6.18, -150.00)
+TGeoCompositeShape 5   Local  (  18.48,    7.65,  -50.00) Global (  18.48,    7.65, -150.00)
+TGeoCompositeShape 6   Local  (  17.82,    9.08,  -50.00) Global (  17.82,    9.08, -150.00)
+TGeoCompositeShape 7   Local  (  17.05,   10.45,  -50.00) Global (  17.05,   10.45, -150.00)
+TGeoCompositeShape 8   Local  (  16.18,   11.76,  -50.00) Global (  16.18,   11.76, -150.00)
+TGeoCompositeShape 9   Local  (  15.21,   12.99,  -50.00) Global (  15.21,   12.99, -150.00)
+TGeoCompositeShape 10  Local  (  14.14,   14.14,  -50.00) Global (  14.14,   14.14, -150.00)
+TGeoCompositeShape 11  Local  (  12.99,   15.21,  -50.00) Global (  12.99,   15.21, -150.00)
+TGeoCompositeShape 12  Local  (  11.76,   16.18,  -50.00) Global (  11.76,   16.18, -150.00)
+TGeoCompositeShape 13  Local  (  10.45,   17.05,  -50.00) Global (  10.45,   17.05, -150.00)
+TGeoCompositeShape 14  Local  (   9.08,   17.82,  -50.00) Global (   9.08,   17.82, -150.00)
+TGeoCompositeShape 15  Local  (   7.65,   18.48,  -50.00) Global (   7.65,   18.48, -150.00)
+TGeoCompositeShape 16  Local  (   6.18,   19.02,  -50.00) Global (   6.18,   19.02, -150.00)
+TGeoCompositeShape 17  Local  (   4.67,   19.45,  -50.00) Global (   4.67,   19.45, -150.00)
+TGeoCompositeShape 18  Local  (   3.13,   19.75,  -50.00) Global (   3.13,   19.75, -150.00)
+TGeoCompositeShape 19  Local  (   1.57,   19.94,  -50.00) Global (   1.57,   19.94, -150.00)
+TGeoCompositeShape 20  Local  (   0.00,   20.00,  -50.00) Global (   0.00,   20.00, -150.00)
+TGeoCompositeShape 21  Local  (  20.00,    0.00,   50.00) Global (  20.00,    0.00,  -50.00)
+TGeoCompositeShape 22  Local  (  19.94,    1.57,   50.00) Global (  19.94,    1.57,  -50.00)
+TGeoCompositeShape 23  Local  (  19.75,    3.13,   50.00) Global (  19.75,    3.13,  -50.00)
+TGeoCompositeShape 24  Local  (  19.45,    4.67,   50.00) Global (  19.45,    4.67,  -50.00)
+TGeoCompositeShape 25  Local  (  19.02,    6.18,   50.00) Global (  19.02,    6.18,  -50.00)
+TGeoCompositeShape 26  Local  (  18.48,    7.65,   50.00) Global (  18.48,    7.65,  -50.00)
+TGeoCompositeShape 27  Local  (  17.82,    9.08,   50.00) Global (  17.82,    9.08,  -50.00)
+TGeoCompositeShape 28  Local  (  17.05,   10.45,   50.00) Global (  17.05,   10.45,  -50.00)
+TGeoCompositeShape 29  Local  (  16.18,   11.76,   50.00) Global (  16.18,   11.76,  -50.00)
+TGeoCompositeShape 30  Local  (  15.21,   12.99,   50.00) Global (  15.21,   12.99,  -50.00)
+TGeoCompositeShape 31  Local  (  14.14,   14.14,   50.00) Global (  14.14,   14.14,  -50.00)
+TGeoCompositeShape 32  Local  (  12.99,   15.21,   50.00) Global (  12.99,   15.21,  -50.00)
+TGeoCompositeShape 33  Local  (  11.76,   16.18,   50.00) Global (  11.76,   16.18,  -50.00)
+TGeoCompositeShape 34  Local  (  10.45,   17.05,   50.00) Global (  10.45,   17.05,  -50.00)
+TGeoCompositeShape 35  Local  (   9.08,   17.82,   50.00) Global (   9.08,   17.82,  -50.00)
+TGeoCompositeShape 36  Local  (   7.65,   18.48,   50.00) Global (   7.65,   18.48,  -50.00)
+TGeoCompositeShape 37  Local  (   6.18,   19.02,   50.00) Global (   6.18,   19.02,  -50.00)
+TGeoCompositeShape 38  Local  (   4.67,   19.45,   50.00) Global (   4.67,   19.45,  -50.00)
+TGeoCompositeShape 39  Local  (   3.13,   19.75,   50.00) Global (   3.13,   19.75,  -50.00)
+TGeoCompositeShape 40  Local  (   1.57,   19.94,   50.00) Global (   1.57,   19.94,  -50.00)
+TGeoCompositeShape 41  Local  (   0.00,   20.00,   50.00) Global (   0.00,   20.00,  -50.00)
+TGeoCompositeShape Bounding box:  dx=  20.00 dy=  20.00 dz=  50.00 Origin: x=  20.00 y=  20.00 z=   0.00
+ShapeCheck[2] TGeoCompositeShape 42 Mesh-points:
+TGeoCompositeShape TruncatedTube N(mesh)=42  N(vert)=42  N(seg)=0  N(pols)=0
+TGeoCompositeShape 0   Local  (  40.00,    0.00,  -50.00) Global (  40.00,  150.00, -150.00)
+TGeoCompositeShape 1   Local  (  39.97,    1.57,  -50.00) Global (  39.97,  151.57, -150.00)
+TGeoCompositeShape 2   Local  (  39.88,    3.14,  -50.00) Global (  39.88,  153.14, -150.00)
+TGeoCompositeShape 3   Local  (  39.72,    4.70,  -50.00) Global (  39.72,  154.70, -150.00)
+TGeoCompositeShape 4   Local  (  39.51,    6.26,  -50.00) Global (  39.51,  156.26, -150.00)
+TGeoCompositeShape 5   Local  (  39.23,    7.80,  -50.00) Global (  39.23,  157.80, -150.00)
+TGeoCompositeShape 6   Local  (  38.89,    9.34,  -50.00) Global (  38.89,  159.34, -150.00)
+TGeoCompositeShape 7   Local  (  38.50,   10.86,  -50.00) Global (  38.50,  160.86, -150.00)
+TGeoCompositeShape 8   Local  (  38.04,   12.36,  -50.00) Global (  38.04,  162.36, -150.00)
+TGeoCompositeShape 9   Local  (  37.53,   13.84,  -50.00) Global (  37.53,  163.84, -150.00)
+TGeoCompositeShape 10  Local  (  36.96,   15.31,  -50.00) Global (  36.96,  165.31, -150.00)
+TGeoCompositeShape 11  Local  (  36.33,   16.75,  -50.00) Global (  36.33,  166.75, -150.00)
+TGeoCompositeShape 12  Local  (  35.64,   18.16,  -50.00) Global (  35.64,  168.16, -150.00)
+TGeoCompositeShape 13  Local  (  34.90,   19.54,  -50.00) Global (  34.90,  169.54, -150.00)
+TGeoCompositeShape 14  Local  (  34.11,   20.90,  -50.00) Global (  34.11,  170.90, -150.00)
+TGeoCompositeShape 15  Local  (  33.26,   22.22,  -50.00) Global (  33.26,  172.22, -150.00)
+TGeoCompositeShape 16  Local  (  32.36,   23.51,  -50.00) Global (  32.36,  173.51, -150.00)
+TGeoCompositeShape 17  Local  (  31.41,   24.76,  -50.00) Global (  31.41,  174.76, -150.00)
+TGeoCompositeShape 18  Local  (  30.42,   25.98,  -50.00) Global (  30.42,  175.98, -150.00)
+TGeoCompositeShape 19  Local  (  29.37,   27.15,  -50.00) Global (  29.37,  177.15, -150.00)
+TGeoCompositeShape 20  Local  (  28.28,   28.28,  -50.00) Global (  28.28,  178.28, -150.00)
+TGeoCompositeShape 21  Local  (  40.00,    0.00,   50.00) Global (  40.00,  150.00,  -50.00)
+TGeoCompositeShape 22  Local  (  39.97,    1.57,   50.00) Global (  39.97,  151.57,  -50.00)
+TGeoCompositeShape 23  Local  (  39.88,    3.14,   50.00) Global (  39.88,  153.14,  -50.00)
+TGeoCompositeShape 24  Local  (  39.72,    4.70,   50.00) Global (  39.72,  154.70,  -50.00)
+TGeoCompositeShape 25  Local  (  39.51,    6.26,   50.00) Global (  39.51,  156.26,  -50.00)
+TGeoCompositeShape 26  Local  (  39.23,    7.80,   50.00) Global (  39.23,  157.80,  -50.00)
+TGeoCompositeShape 27  Local  (  38.89,    9.34,   50.00) Global (  38.89,  159.34,  -50.00)
+TGeoCompositeShape 28  Local  (  38.50,   10.86,   50.00) Global (  38.50,  160.86,  -50.00)
+TGeoCompositeShape 29  Local  (  38.04,   12.36,   50.00) Global (  38.04,  162.36,  -50.00)
+TGeoCompositeShape 30  Local  (  37.53,   13.84,   50.00) Global (  37.53,  163.84,  -50.00)
+TGeoCompositeShape 31  Local  (  36.96,   15.31,   50.00) Global (  36.96,  165.31,  -50.00)
+TGeoCompositeShape 32  Local  (  36.33,   16.75,   50.00) Global (  36.33,  166.75,  -50.00)
+TGeoCompositeShape 33  Local  (  35.64,   18.16,   50.00) Global (  35.64,  168.16,  -50.00)
+TGeoCompositeShape 34  Local  (  34.90,   19.54,   50.00) Global (  34.90,  169.54,  -50.00)
+TGeoCompositeShape 35  Local  (  34.11,   20.90,   50.00) Global (  34.11,  170.90,  -50.00)
+TGeoCompositeShape 36  Local  (  33.26,   22.22,   50.00) Global (  33.26,  172.22,  -50.00)
+TGeoCompositeShape 37  Local  (  32.36,   23.51,   50.00) Global (  32.36,  173.51,  -50.00)
+TGeoCompositeShape 38  Local  (  31.41,   24.76,   50.00) Global (  31.41,  174.76,  -50.00)
+TGeoCompositeShape 39  Local  (  30.42,   25.98,   50.00) Global (  30.42,  175.98,  -50.00)
+TGeoCompositeShape 40  Local  (  29.37,   27.15,   50.00) Global (  29.37,  177.15,  -50.00)
+TGeoCompositeShape 41  Local  (  28.28,   28.28,   50.00) Global (  28.28,  178.28,  -50.00)
+TGeoCompositeShape Bounding box:  dx=  12.93 dy=  14.14 dz=  50.00 Origin: x=  27.07 y=  14.14 z=   0.00
+ShapeCheck[3] TGeoCompositeShape 78 Mesh-points:
+TGeoCompositeShape TruncatedTube N(mesh)=78  N(vert)=78  N(seg)=0  N(pols)=0
+TGeoCompositeShape 0   Local  (  19.83,    2.61,  -50.00) Global ( 109.83,  152.61,   50.00)
+TGeoCompositeShape 1   Local  (  19.32,    5.18,  -50.00) Global ( 109.32,  155.18,   50.00)
+TGeoCompositeShape 2   Local  (  18.48,    7.65,  -50.00) Global ( 108.48,  157.65,   50.00)
+TGeoCompositeShape 3   Local  (  17.32,   10.00,  -50.00) Global ( 107.32,  160.00,   50.00)
+TGeoCompositeShape 4   Local  (  15.87,   12.18,  -50.00) Global ( 105.87,  162.18,   50.00)
+TGeoCompositeShape 5   Local  (  14.14,   14.14,  -50.00) Global ( 104.14,  164.14,   50.00)
+TGeoCompositeShape 6   Local  (  12.18,   15.87,  -50.00) Global ( 102.18,  165.87,   50.00)
+TGeoCompositeShape 7   Local  (  10.00,   17.32,  -50.00) Global ( 100.00,  167.32,   50.00)
+TGeoCompositeShape 8   Local  (   7.65,   18.48,  -50.00) Global (  97.65,  168.48,   50.00)
+TGeoCompositeShape 9   Local  (   5.18,   19.32,  -50.00) Global (  95.18,  169.32,   50.00)
+TGeoCompositeShape 10  Local  (   2.61,   19.83,  -50.00) Global (  92.61,  169.83,   50.00)
+TGeoCompositeShape 11  Local  (   0.00,   20.00,  -50.00) Global (  90.00,  170.00,   50.00)
+TGeoCompositeShape 12  Local  (  -2.61,   19.83,  -50.00) Global (  87.39,  169.83,   50.00)
+TGeoCompositeShape 13  Local  (  -5.18,   19.32,  -50.00) Global (  84.82,  169.32,   50.00)
+TGeoCompositeShape 14  Local  (  -7.65,   18.48,  -50.00) Global (  82.35,  168.48,   50.00)
+TGeoCompositeShape 15  Local  ( -10.00,   17.32,  -50.00) Global (  80.00,  167.32,   50.00)
+TGeoCompositeShape 16  Local  ( -12.18,   15.87,  -50.00) Global (  77.82,  165.87,   50.00)
+TGeoCompositeShape 17  Local  ( -14.14,   14.14,  -50.00) Global (  75.86,  164.14,   50.00)
+TGeoCompositeShape 18  Local  (  40.00,    0.00,  -50.00) Global ( 130.00,  150.00,   50.00)
+TGeoCompositeShape 19  Local  (  39.66,    5.22,  -50.00) Global ( 129.66,  155.22,   50.00)
+TGeoCompositeShape 20  Local  (  38.64,   10.35,  -50.00) Global ( 128.64,  160.35,   50.00)
+TGeoCompositeShape 21  Local  (  36.96,   15.31,  -50.00) Global ( 126.96,  165.31,   50.00)
+TGeoCompositeShape 22  Local  (  34.64,   20.00,  -50.00) Global ( 124.64,  170.00,   50.00)
+TGeoCompositeShape 23  Local  (  31.73,   24.35,  -50.00) Global ( 121.73,  174.35,   50.00)
+TGeoCompositeShape 24  Local  (  28.28,   28.28,  -50.00) Global ( 118.28,  178.28,   50.00)
+TGeoCompositeShape 25  Local  (  24.35,   31.73,  -50.00) Global ( 114.35,  181.73,   50.00)
+TGeoCompositeShape 26  Local  (  20.00,   34.64,  -50.00) Global ( 110.00,  184.64,   50.00)
+TGeoCompositeShape 27  Local  (  15.31,   36.96,  -50.00) Global ( 105.31,  186.96,   50.00)
+TGeoCompositeShape 28  Local  (  10.35,   38.64,  -50.00) Global ( 100.35,  188.64,   50.00)
+TGeoCompositeShape 29  Local  (   5.22,   39.66,  -50.00) Global (  95.22,  189.66,   50.00)
+TGeoCompositeShape 30  Local  (   0.00,   40.00,  -50.00) Global (  90.00,  190.00,   50.00)
+TGeoCompositeShape 31  Local  (  -5.22,   39.66,  -50.00) Global (  84.78,  189.66,   50.00)
+TGeoCompositeShape 32  Local  ( -10.35,   38.64,  -50.00) Global (  79.65,  188.64,   50.00)
+TGeoCompositeShape 33  Local  ( -15.31,   36.96,  -50.00) Global (  74.69,  186.96,   50.00)
+TGeoCompositeShape 34  Local  ( -20.00,   34.64,  -50.00) Global (  70.00,  184.64,   50.00)
+TGeoCompositeShape 35  Local  ( -24.35,   31.73,  -50.00) Global (  65.65,  181.73,   50.00)
+TGeoCompositeShape 36  Local  ( -28.28,   28.28,  -50.00) Global (  61.72,  178.28,   50.00)
+TGeoCompositeShape 37  Local  ( -31.73,   24.35,  -50.00) Global (  58.27,  174.35,   50.00)
+TGeoCompositeShape 38  Local  ( -34.64,   20.00,  -50.00) Global (  55.36,  170.00,   50.00)
+TGeoCompositeShape 39  Local  (  19.83,    2.61,   50.00) Global ( 109.83,  152.61,  150.00)
+TGeoCompositeShape 40  Local  (  19.32,    5.18,   50.00) Global ( 109.32,  155.18,  150.00)
+TGeoCompositeShape 41  Local  (  18.48,    7.65,   50.00) Global ( 108.48,  157.65,  150.00)
+TGeoCompositeShape 42  Local  (  17.32,   10.00,   50.00) Global ( 107.32,  160.00,  150.00)
+TGeoCompositeShape 43  Local  (  15.87,   12.18,   50.00) Global ( 105.87,  162.18,  150.00)
+TGeoCompositeShape 44  Local  (  14.14,   14.14,   50.00) Global ( 104.14,  164.14,  150.00)
+TGeoCompositeShape 45  Local  (  12.18,   15.87,   50.00) Global ( 102.18,  165.87,  150.00)
+TGeoCompositeShape 46  Local  (  10.00,   17.32,   50.00) Global ( 100.00,  167.32,  150.00)
+TGeoCompositeShape 47  Local  (   7.65,   18.48,   50.00) Global (  97.65,  168.48,  150.00)
+TGeoCompositeShape 48  Local  (   5.18,   19.32,   50.00) Global (  95.18,  169.32,  150.00)
+TGeoCompositeShape 49  Local  (   2.61,   19.83,   50.00) Global (  92.61,  169.83,  150.00)
+TGeoCompositeShape 50  Local  (   0.00,   20.00,   50.00) Global (  90.00,  170.00,  150.00)
+TGeoCompositeShape 51  Local  (  -2.61,   19.83,   50.00) Global (  87.39,  169.83,  150.00)
+TGeoCompositeShape 52  Local  (  -5.18,   19.32,   50.00) Global (  84.82,  169.32,  150.00)
+TGeoCompositeShape 53  Local  (  -7.65,   18.48,   50.00) Global (  82.35,  168.48,  150.00)
+TGeoCompositeShape 54  Local  ( -10.00,   17.32,   50.00) Global (  80.00,  167.32,  150.00)
+TGeoCompositeShape 55  Local  ( -12.18,   15.87,   50.00) Global (  77.82,  165.87,  150.00)
+TGeoCompositeShape 56  Local  ( -14.14,   14.14,   50.00) Global (  75.86,  164.14,  150.00)
+TGeoCompositeShape 57  Local  (  40.00,    0.00,   50.00) Global ( 130.00,  150.00,  150.00)
+TGeoCompositeShape 58  Local  (  39.66,    5.22,   50.00) Global ( 129.66,  155.22,  150.00)
+TGeoCompositeShape 59  Local  (  38.64,   10.35,   50.00) Global ( 128.64,  160.35,  150.00)
+TGeoCompositeShape 60  Local  (  36.96,   15.31,   50.00) Global ( 126.96,  165.31,  150.00)
+TGeoCompositeShape 61  Local  (  34.64,   20.00,   50.00) Global ( 124.64,  170.00,  150.00)
+TGeoCompositeShape 62  Local  (  31.73,   24.35,   50.00) Global ( 121.73,  174.35,  150.00)
+TGeoCompositeShape 63  Local  (  28.28,   28.28,   50.00) Global ( 118.28,  178.28,  150.00)
+TGeoCompositeShape 64  Local  (  24.35,   31.73,   50.00) Global ( 114.35,  181.73,  150.00)
+TGeoCompositeShape 65  Local  (  20.00,   34.64,   50.00) Global ( 110.00,  184.64,  150.00)
+TGeoCompositeShape 66  Local  (  15.31,   36.96,   50.00) Global ( 105.31,  186.96,  150.00)
+TGeoCompositeShape 67  Local  (  10.35,   38.64,   50.00) Global ( 100.35,  188.64,  150.00)
+TGeoCompositeShape 68  Local  (   5.22,   39.66,   50.00) Global (  95.22,  189.66,  150.00)
+TGeoCompositeShape 69  Local  (   0.00,   40.00,   50.00) Global (  90.00,  190.00,  150.00)
+TGeoCompositeShape 70  Local  (  -5.22,   39.66,   50.00) Global (  84.78,  189.66,  150.00)
+TGeoCompositeShape 71  Local  ( -10.35,   38.64,   50.00) Global (  79.65,  188.64,  150.00)
+TGeoCompositeShape 72  Local  ( -15.31,   36.96,   50.00) Global (  74.69,  186.96,  150.00)
+TGeoCompositeShape 73  Local  ( -20.00,   34.64,   50.00) Global (  70.00,  184.64,  150.00)
+TGeoCompositeShape 74  Local  ( -24.35,   31.73,   50.00) Global (  65.65,  181.73,  150.00)
+TGeoCompositeShape 75  Local  ( -28.28,   28.28,   50.00) Global (  61.72,  178.28,  150.00)
+TGeoCompositeShape 76  Local  ( -31.73,   24.35,   50.00) Global (  58.27,  174.35,  150.00)
+TGeoCompositeShape 77  Local  ( -34.64,   20.00,   50.00) Global (  55.36,  170.00,  150.00)
+TGeoCompositeShape Bounding box:  dx=  37.32 dy=  20.00 dz=  50.00 Origin: x=   2.68 y=  20.00 z=   0.00
-- 
GitLab