From 2c9a2e3fe6f41c3a20c9d625cf7234c8034d5692 Mon Sep 17 00:00:00 2001
From: Whitney Armstrong <warmstrong@anl.gov>
Date: Tue, 6 Apr 2021 22:02:32 -0500
Subject: [PATCH] 	modified:   compact/cb_Solenoid.xml 	modified:  
 compact/definitions.xml 	modified:   compact/ecal.xml 	modified:  
 compact/forward_rich.xml 	modified:   compact/solenoid.xml 
 modified:   reference_detector.xml 	modified:  
 src/PolyhedraEndcapCalorimeter2_geo.cpp 	deleted:   
 src/TestDetector.cpp 	deleted:    src/cb_Solenoid.cpp

---
 compact/cb_Solenoid.xml                 |   2 +-
 compact/definitions.xml                 | 115 +++++++++++++-----------
 compact/ecal.xml                        |  31 +++----
 compact/forward_rich.xml                |   6 +-
 compact/solenoid.xml                    |   2 +-
 reference_detector.xml                  |  14 ++-
 src/PolyhedraEndcapCalorimeter2_geo.cpp |  95 +++++++++++---------
 src/TestDetector.cpp                    |  36 --------
 src/cb_Solenoid.cpp                     |  35 --------
 9 files changed, 144 insertions(+), 192 deletions(-)
 delete mode 100644 src/TestDetector.cpp
 delete mode 100644 src/cb_Solenoid.cpp

diff --git a/compact/cb_Solenoid.xml b/compact/cb_Solenoid.xml
index 2083a62..efca08b 100644
--- a/compact/cb_Solenoid.xml
+++ b/compact/cb_Solenoid.xml
@@ -21,7 +21,7 @@
     </comment>
     <detector id="Solenoid_ID" name="cb_Solenoid" type="cb_Solenoid" insideTrackingVolume="false" vis="cb_SolenoidVis">
 	    <material name="Vacuum"/>  <!-- G4_Galactic -->	    
-      <dimensions rmin="cb_Solenoid_rmin" rmax="cb_Solenoid_rmax" z="cb_Solenoid_z" delta="cb_Solenoid_shift"/>
+      <dimensions rmin="Solenoid_rmin" rmax="Solenoid_rmax" z="b_Solenoid_z" delta="cb_Solenoid_shift"/>
     </detector>
   </detectors>
 
diff --git a/compact/definitions.xml b/compact/definitions.xml
index f371c0a..83e02e2 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -1,15 +1,16 @@
   <define>
-    <comment>Although not explicit in the design study, the eRHIC crossing angle is not symmetric.</comment>
+    <constant name="world_side" value="30*m"/>
+    <constant name="world_x" value="world_side"/>
+    <constant name="world_y" value="world_side"/>
+    <constant name="world_z" value="100*m"/>
+
+    <comment>Although not explicit in the EIC design study, the crossing angle is not symmetric.</comment>
     <constant name="CrossingAngle" value="0.025"/>
     <constant name="ionCrossingAngle" value="0.0166667"/>
     <constant name="electronCrossingAngle" value="0.00833333"/>
     <constant name="CrossingSlope" value="0.0166682"/>
 
     <constant name="Pi" value="3.14159265359"/>
-    <constant name="world_side" value="30*m"/>
-    <constant name="world_x" value="world_side"/>
-    <constant name="world_y" value="world_side"/>
-    <constant name="world_z" value="100*m"/>
 
     <constant name="mil" value="0.0254*mm"/>
 
@@ -252,31 +253,32 @@
     <constant name="cb_Solenoid_z"     value="400.0 * cm"/> <comment> Central Barrel Solenoid Size in Z direction </comment> 
     <constant name="cb_Solenoid_shift" value="0.0 * cm"/>
 
+    <constant name="Solenoid_length"         value="7000.0*mm"/>
+    <constant name="Solenoid_rmin"           value="3000.0*mm"/>
     <constant name="Solenoid_thickness"      value="400*mm"/>
-    <constant name="Solenoid_rmin"           value="2000.0*mm"/>
     <constant name="Solenoid_rmax"           value="Solenoid_rmin + Solenoid_thickness"/>
-    <constant name="SolenoidLength"          value="6000.0*mm"/>
 
+    <comment>Solenoid Barrel Parameters</comment>
     <constant name="SolenoidBarrelCryostatThickness"      value=" 1.0 * cm"/>
     <constant name="SolenoidBarrelGapThickness"           value=" 3.3 * cm"/>
     <constant name="SolenoidBarrelAlConductorThickness"   value="12.0 * cm"/>
     <constant name="SolenoidBarrelQuenchbackThickness"    value=" 1.5 * cm"/>
     <constant name="SolenoidBarrelOuterGapThickness"      value=" 5.6 * cm"/>
     <constant name="SolenoidBarrelOuterCryostatThickness" value=" 1.2 * cm"/>
-
     <constant name="SolenoidEndPlateGapThickness"           value=" 5.7 * cm"/>
     <constant name="SolenoidEndPlateCryostatThickness"      value=" 1.5 * cm"/>
 
+    <comment> Solenoid Yoke Endcap </comment>
+    <constant name="SolenoidYokeEndcap_thickness"  value="0.2 * m"/>
+
     <constant name="SolenoidBarrel_rmin"     value="Solenoid_rmin"/>
-    <constant name="SolenoidBarrelLenth"     value="SolenoidLength"/>
-    <constant name="SolenoidBarrel_zmax"     value="SolenoidBarrelLenth/2.0"/>
+    <constant name="SolenoidBarrel_length"   value="Solenoid_length"/>
+    <constant name="SolenoidBarrel_zmax"     value="Solenoid_length/2.0"/>
+
+    <constant name="SolenoidCoilConductor_rmin" value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/>
+    <constant name="SolenoidCoilConductor_rmax" value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
 
-    <constant name="SolenoidCoilConductor_rmin" 
-              value="SolenoidBarrel_rmin + SolenoidBarrelCryostatThickness + SolenoidBarrelGapThickness"/>
-    <constant name="SolenoidCoilConductor_rmax" 
-              value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
-    <constant name="SolenoidBarrel_rmax" 
-              value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
+    <constant name="SolenoidBarrel_rmax" value="SolenoidCoilConductor_rmax + SolenoidBarrelOuterGapThickness + SolenoidBarrelOuterCryostatThickness"/>
 
     <constant name="SolenoidCoil_zmax" 
               value="SolenoidBarrel_zmax - SolenoidEndPlateCryostatThickness - SolenoidEndPlateGapThickness"/>
@@ -284,15 +286,12 @@
     <constant name="SolenoidalFieldRadius" 
               value="SolenoidCoilConductor_rmin + SolenoidBarrelAlConductorThickness / 2.0"/>
 
-    <constant name="SolenoidCoilLength" value="SolenoidCoil_zmax*2.0"/>
+    <constant name="SolenoidCoil_length" value="SolenoidCoil_zmax*2.0"/>
 
-    <constant name="SolenoidThickness"           value="Solenoid_rmax - Solenoid_rmin"/>
-
-    <constant name="SolenoidYokeEndcapP_rmin"     value="800*mm"/>
-    <constant name="SolenoidYokeEndcapN_rmin"     value="800*mm"/>
-    <constant name="SolenoidYokeEndcapThickness"  value="0.2 * m"/>
-    <constant name="SolenoidYokeEndcap_zmin"      value="SolenoidBarrel_zmax"/>
-    <constant name="SolenoidYokeEndcap_zmax"      value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcapThickness"/>
+    <constant name="SolenoidYokeEndcapP_rmin"     value="SolenoidBarrel_rmin"/>
+    <constant name="SolenoidYokeEndcapN_rmin"     value="SolenoidBarrel_rmin"/>
+    <constant name="SolenoidYokeEndcap_zmin"      value="SolenoidCoil_zmax"/>
+    <constant name="SolenoidYokeEndcap_zmax"      value="SolenoidYokeEndcap_zmin + SolenoidYokeEndcap_thickness"/>
 
     <constant name="SolenoidYokeChamferAngle"    value="0.2"/>
 
@@ -303,8 +302,8 @@
       --------------------------------
       These are needed here to compute the dependent parameters.
     </comment>
-    <constant name="RICHLength"       value="1.5*m"/>
-    <constant name="TRDLength"        value="40.0*cm"/>
+    <constant name="RICHLength"       value="1.3*m"/>
+    <constant name="TRDLength"        value="30.0*cm"/>
     <constant name="ForwardTOFLength" value="10.0*cm"/>
     <constant name="ForwardPIDLength" value="RICHLength + TRDLength + ForwardTOFLength"/>
     
@@ -320,7 +319,7 @@
       ============================
     </comment>
     <constant name="tracker_region_rmax"            value="Solenoid_rmax/2.0"/>
-    <constant name="tracker_region_zmax"            value="SolenoidLength/2.0"/>
+    <constant name="tracker_region_zmax"            value="Solenoid_length/2.0"/>
 
     <comment>
       -------------------------
@@ -338,9 +337,10 @@
       --------------------------
     </comment>
     <constant name="SiliconTrackerInnerRadius"       value="95.0*mm"/>
-    <constant name="SiliconTrackerInnerBarrelLength" value="500.0*mm"/>
-    <constant name="SiliconTrackerOuterRadius"       value="Solenoid_rmax/2.0"/>
-    <constant name="SiliconTrackerOuterBarrelLength" value="SolenoidLength/3.0"/>
+    <constant name="SiliconTrackerInnerBarrelLength" value="300.0*mm"/>
+    <constant name="SiliconTrackerOuterRadius"       value="Solenoid_rmax/3.0"/>
+    <constant name="SiliconTrackerOuterBarrelLength" value="Solenoid_length/4.0"/>
+    <constant name="SiliconTrackerOuterBarrel_zmax"  value="SiliconTrackerOuterBarrelLength/2.0"/>
 
     <comment>
       -------------------------------
@@ -372,6 +372,9 @@
       ======================
 
     </comment>
+    <comment>
+      Ecal and Hcal Barrel
+    </comment>
     <constant name="EcalBarrel_rmin"            value="SiliconTrackerOuterRadius + BarrelPIDThickness + 3.0 * cm"/>
     <constant name="HcalBarrel_rmax"            value="Solenoid_rmin - 5.0 *cm "/>
     <constant name="Barrel_TotalCalThickness"   value="HcalBarrel_rmax - EcalBarrel_rmin"/>
@@ -382,6 +385,7 @@
     <constant name="EcalBarrelLength"           value="SiliconTrackerOuterBarrelLength + ForwardPIDLength + BackwardPIDLength"/>
     <constant name="EcalEndcapP_zmin"           value="SiliconTrackerOuterBarrelLength/2.0 + ForwardPIDLength"/>
     <constant name="EcalEndcapN_zmin"           value="SiliconTrackerOuterBarrelLength/2.0 + BackwardPIDLength"/>
+    <constant name="EcalBarrel_offset"  value="(EcalEndcapP_zmin-EcalEndcapN_zmin)/2.0"/>
 
     <constant name="EndcapP_TotalCalThickness"  value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapP_zmin + 10.0 * mm)"/>
     <constant name="EndcapN_TotalCalThickness"  value="(SolenoidYokeEndcap_zmin - 10.0 * mm) - (EcalEndcapN_zmin + 10.0 * mm)"/>
@@ -418,48 +422,51 @@
     <constant name="CaloSides"                  value="12"/>
 	    
     <comment>Material Thickness</comment>
-    <constant name="EcalSiliconThickness"       value="9.00 * mm"/>
-    <constant name="EcalCopperThickness"        value="0.05 * mm"/>
-    <constant name="EcalKaptonThickness"        value="0.30 * mm"/>
-    <constant name="EcalAir1Thickness"          value="0.33 * mm"/>
-    <constant name="EcalAir2Thickness"          value="0.25 * mm"/>
-    <constant name="EcalThinTungstenThickness"  value="2.50 * mm"/>
-    <constant name="EcalThickTungstenThickness" value="5.00 * mm"/>
+    <constant name="EcalSiliconThickness"       value="9.00 * mm" />
+    <constant name="EcalCopperThickness"        value="0.05 * mm" />
+    <constant name="EcalKaptonThickness"        value="0.30 * mm" />
+    <constant name="EcalAir1Thickness"          value="0.33 * mm" />
+    <constant name="EcalAir2Thickness"          value="0.25 * mm" />
+    <constant name="EcalThinTungstenThickness"  value="2.50 * mm" />
+    <constant name="EcalThickTungstenThickness" value="5.00 * mm" />
 	    
     <comment> Layer Thickness  </comment>
-    <constant name="EcalFirstLayerThickness"
+    <constant name="EcalLayer1_thickness"
 	      value="EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
-    <constant name="EcalThinOneLayerThickness"   
+    <constant name="EcalLayer2_thickness"   
 	      value="EcalThinTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
-    <constant name="EcalThickOneLayerThickness"   
+    <constant name="EcalLayer3_thickness"   
 	      value="EcalThickTungstenThickness + EcalAir2Thickness + EcalSiliconThickness + EcalCopperThickness + EcalKaptonThickness + EcalAir1Thickness"/>
 	    
     <comment> EM Barrel N Layer; same number of layers for EcalThin and EcalThick</comment>
     <constant name="EcalBarrelLayers" 
-	      value="floor((EcalBarrel_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/>
-    <constant name="EcalBarrelThinLayers"       value="EcalBarrelLayers"/>
-    <constant name="EcalBarrelThickLayers"      value="EcalBarrelLayers"/>
+	      value="floor((EcalBarrel_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
+    <constant name="EcalBarrelLayer1_NRepeat"       value="1"/>
+    <constant name="EcalBarrelLayer2_NRepeat"       value="EcalBarrelLayers"/>
+    <constant name="EcalBarrelLayer3_NRepeat"       value="EcalBarrelLayers"/>
 
     <comment> EM Barrel Thickness </comment>
     <constant name="EcalBarrelThickness"
-	      value="EcalFirstLayerThickness + (EcalBarrelThinLayers * EcalThinOneLayerThickness) + (EcalBarrelThickLayers * EcalThickOneLayerThickness)"/>
+	      value="EcalBarrelLayer1_NRepeat*EcalLayer1_thickness + EcalBarrelLayer2_NRepeat * EcalLayer2_thickness + EcalBarrelLayer3_NRepeat * EcalLayer3_thickness"/>
     <constant name="EcalBarrel_rmax"            value="EcalBarrel_rmin + EcalBarrelThickness"/>
 
     <comment> EM Endcap N Layer; same number of layers for EcalThin and EcalThick </comment>
     <constant name="EcalEndcapPLayers" 
-	      value="floor((EcalEndcapP_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/>
+	      value="floor((EcalEndcapP_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
     <constant name="EcalEndcapNLayers" 
-	      value="floor((EcalEndcapN_TotalThickness - EcalFirstLayerThickness) / (EcalThinOneLayerThickness + EcalThickOneLayerThickness))"/>
-    <constant name="EcalEndcapP_NThinLayers"       value="EcalEndcapPLayers"/>
-    <constant name="EcalEndcapP_NThickLayers"      value="EcalEndcapPLayers"/>
-    <constant name="EcalEndcapN_NThinLayers"       value="EcalEndcapNLayers"/>
-    <constant name="EcalEndcapN_NThickLayers"      value="EcalEndcapNLayers"/>
+	      value="floor((EcalEndcapN_TotalThickness - EcalLayer1_thickness) / (EcalLayer2_thickness + EcalLayer3_thickness))"/>
+    <constant name="EcalEndcapPLayer1_NRepeat"      value="1"/>
+    <constant name="EcalEndcapNLayer1_NRepeat"      value="1"/>
+    <constant name="EcalEndcapPLayer2_NRepeat"      value="EcalEndcapPLayers"/>
+    <constant name="EcalEndcapPLayer3_NRepeat"      value="EcalEndcapPLayers"/>
+    <constant name="EcalEndcapNLayer2_NRepeat"      value="EcalEndcapNLayers"/>
+    <constant name="EcalEndcapNLayer3_NRepeat"      value="EcalEndcapNLayers"/>
 
     <comment> EM Endcap Thickness </comment>
     <constant name="EcalEndcapPThickness"        
-	      value="EcalFirstLayerThickness + (EcalEndcapP_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapP_NThickLayers * EcalThickOneLayerThickness)"/>
+	      value="EcalEndcapPLayer1_NRepeat*EcalLayer1_thickness + EcalEndcapPLayer2_NRepeat*EcalLayer2_thickness + EcalEndcapPLayer3_NRepeat*EcalLayer3_thickness "/>
     <constant name="EcalEndcapNThickness"        
-	      value="EcalFirstLayerThickness + (EcalEndcapN_NThinLayers * EcalThinOneLayerThickness) + (EcalEndcapN_NThickLayers * EcalThickOneLayerThickness)"/>
+	      value="EcalEndcapNLayer1_NRepeat*EcalLayer1_thickness + EcalEndcapNLayer2_NRepeat*EcalLayer2_thickness + EcalEndcapNLayer3_NRepeat*EcalLayer3_thickness"/>
 
 
     <comment>
@@ -540,7 +547,9 @@
     </comment>
     <constant name="RICHZMin"  value="SiliconTrackerOuterBarrelLength/2.0 + 1 * cm"/>
     <constant name="RICHRMin"  value="15 * cm"/>
-    <constant name="RICHRMax"  value="60 * cm"/>
+    <constant name="RICH_rmax0"  value="SiliconTrackerOuterBarrel_zmin"/>
+    <constant name="RICH_rmax1"  value="EcalBarrel_rmin"/>
+    <constant name="RICH_rmax2"  value="SolenoidBarrel_rmin-2*cm"/>
     <constant name="RICHDepth" value="1.0*m"/>
 
 
diff --git a/compact/ecal.xml b/compact/ecal.xml
index a58ad10..30cb801 100644
--- a/compact/ecal.xml
+++ b/compact/ecal.xml
@@ -36,21 +36,23 @@
     <detector 
       id="ECalBarrel_ID"
       name="EcalBarrel"
-      type="DD4hep_EcalBarrel"
+      type="refdet_EcalBarrel"
       readout="EcalBarrelHits"
-      calorimeterType="EM_BARREL">
+      calorimeterType="EM_BARREL"
+      offset="EcalBarrel_offset"
+      >
       <dimensions 
         numsides="CaloSides" 
         rmin="EcalBarrel_rmin" 
         z="EcalBarrelLength"/>
       <staves vis="EcalBarrelVis"/>
-      <layer repeat="1">
+      <layer repeat="EcalBarrelLayer1_NRepeat">
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
         <slice material="Copper" thickness="EcalCopperThickness"/>
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalBarrelThinLayers">
+      <layer repeat="EcalBarrelLayer2_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -58,7 +60,7 @@
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalBarrelThickLayers">
+      <layer repeat="EcalBarrelLayer3_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -74,7 +76,6 @@
       ------------------------------------------
       A layered EM calorimeter with tungsten and silicon (or scintillator) strips
     </comment>
-    <!--
     <detector id="ECalEndcapP_ID" 
       name="EcalEndcapP" 
       reflect="false" 
@@ -87,13 +88,13 @@
         zmin="EcalEndcapP_zmin" 
         rmin="EcalEndcapP_rmin" 
         rmax="EcalBarrel_rmax " />
-      <layer repeat="1">
+      <layer repeat="EcalEndcapPLayer1_NRepeat">
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
         <slice material="Copper" thickness="EcalCopperThickness"/>
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalEndcapP_NThinLayers">
+      <layer repeat="EcalEndcapPLayer2_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -101,7 +102,7 @@
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalEndcapP_NThickLayers">
+      <layer repeat="EcalEndcapPLayer3_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -111,15 +112,12 @@
       </layer>
     </detector>
 
--->
-
     <comment>
       -------------------------------
       Backwards Endcap EM Calorimeter
       -------------------------------
       A layered EM calorimeter with tungsten and silicon (or scintillator) strips
     </comment>
-    <!--
     <detector id="ECalEndcapN_ID" 
       name="EcalEndcapN" 
       type="refdet_PolyhedraEndcapCalorimeter2" 
@@ -132,13 +130,13 @@
         zmin="EcalEndcapN_zmin" 
         rmin="EcalEndcapN_rmin" 
         rmax="EcalBarrel_rmax " />
-      <layer repeat="1">
+      <layer repeat="EcalEndcapPLayer1_NRepeat">
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
         <slice material="Copper" thickness="EcalCopperThickness"/>
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalEndcapN_NThinLayers">
+      <layer repeat="EcalEndcapPLayer2_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThinTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -146,7 +144,7 @@
         <slice material="Kapton" thickness="EcalKaptonThickness"/>
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
-      <layer repeat="EcalEndcapN_NThickLayers">
+      <layer repeat="EcalEndcapPLayer3_NRepeat">
         <slice material="TungstenDens24" thickness="EcalThickTungstenThickness"/>
         <slice material="Air" thickness="EcalAir2Thickness"/>
         <slice material="Silicon" thickness="EcalSiliconThickness" sensitive="yes" limits="cal_limits"/>
@@ -155,7 +153,6 @@
         <slice material="Air" thickness="EcalAir1Thickness"/>
       </layer>
     </detector>
-    -->
   </detectors>
 
   <!--  Definition of the readout segmentation/definition  -->
@@ -183,6 +180,4 @@
   <plugins>
   </plugins>
 
-<fields>
-</fields>
 </lccdd>
diff --git a/compact/forward_rich.xml b/compact/forward_rich.xml
index d94e9e1..791a34b 100644
--- a/compact/forward_rich.xml
+++ b/compact/forward_rich.xml
@@ -5,9 +5,11 @@
 
   <detectors>
     <detector id="ForwardRICH_ID" name="ForwardRICH" type="refdet_ForwardRICH" readout="ForwardRICHHits" vis="BlueVis">
-      <dimensions z0="RICHZMin" length="RICHDepth+20*cm" rmin="RICHRMin" rmax1="RICHRMax*cm" rmax2="RICHRMin+80*cm"/>
+      <dimensions z0="RICHZMin" length="RICHLength" 
+        rmin="RICHRMin" 
+        rmax1="RICH_rmax1" rmax2="RICH_rmax2"/>
       <radiator material="N2cherenkov" />
-      <mcppmt zdiff="15.0*cm" rmin="SolenoidYokeEndcapP_rmin - 10*cm" rmax="SolenoidYokeEndcapP_rmin + 80*cm" rtol="1.0*cm" vis="BlueVis"
+      <mcppmt zdiff="15.0*cm" rmin="SolenoidYokeEndcapP_rmin - 10*cm" rmax="SolenoidYokeEndcapP_rmin" rtol="1.0*cm" vis="BlueVis"
               module_size="10*cm" module_gap="0.2*cm" thickness="1.0*cm" material="Quartz" />
       <tank zdiff="5.0*cm" length="RICHDepth" gas="N2cherenkov" vis="GreenVis"
             rmin="RICHRMin" rmax1="RICHRMin+40*cm" rmax2="RICHRMin+80*cm" />
diff --git a/compact/solenoid.xml b/compact/solenoid.xml
index 42ec292..1a7ddd8 100644
--- a/compact/solenoid.xml
+++ b/compact/solenoid.xml
@@ -79,7 +79,7 @@
         inner_z="SolenoidBarrel_zmax + SolenoidEndPlateGapThickness" 
         inner_r="SolenoidYokeEndcapP_rmin" 
         outer_r="SolenoidBarrel_rmax">
-        <slice material="Steel235" thickness="SolenoidYokeEndcapThickness/2.0" vis="SolenoidYokeVis" />
+        <slice material="Steel235" thickness="SolenoidYokeEndcap_thickness/2.0" vis="SolenoidYokeVis" />
       </layer>
     </detector>
     <!--
diff --git a/reference_detector.xml b/reference_detector.xml
index c65d5a7..0b60d02 100644
--- a/reference_detector.xml
+++ b/reference_detector.xml
@@ -13,9 +13,9 @@
 
   <define>
     <include ref="compact/definitions.xml" />
-    <include ref="eic/eic_defs.xml" />
     <include ref="ip6/ip6_defs.xml" />
     <!--
+    <include ref="eic/eic_defs.xml" />
     -->
   </define>
 
@@ -113,17 +113,25 @@
   <!--
   <include ref="reference_detector/vertex_tracker.xml"/>
   <include ref="compact/silicon_tracker.xml"/>
+<<<<<<< HEAD
   -->
   <include ref="compact/cb_CTD_Si.xml"/>
   <include ref="ip6/beampipe.xml"/>
   <include ref="compact/ffi_ZDC.xml"/>
+=======
+  <include ref="ip6/beampipe.xml"/>
+  -->
+>>>>>>> 913736c (	modified:   compact/cb_Solenoid.xml)
   <include ref="compact/solenoid.xml"/>
-  <include ref="compact/ecal.xml"/>
-  <include ref="compact/hcal.xml"/>
   <include ref="compact/forward_rich.xml"/>
+<<<<<<< HEAD
   <include ref="compact/ce_mrich.xml"/>
   <include ref="compact/ce_GEM.xml"/>
+=======
+  <include ref="compact/ecal.xml"/>
+>>>>>>> 913736c (	modified:   compact/cb_Solenoid.xml)
   <!--
+  <include ref="compact/hcal.xml"/>
   <include ref="compact/roman_pots.xml"/>
   -->
   <include ref="eic/forward_ion_beamline.xml"/>
diff --git a/src/PolyhedraEndcapCalorimeter2_geo.cpp b/src/PolyhedraEndcapCalorimeter2_geo.cpp
index 3469a1c..304961c 100644
--- a/src/PolyhedraEndcapCalorimeter2_geo.cpp
+++ b/src/PolyhedraEndcapCalorimeter2_geo.cpp
@@ -37,6 +37,11 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     Volume endcapVol("endcap", PolyhedraRegular(numsides, rmin, rmax, totalThickness), air);
     DetElement endcap("endcap", det_id);
 
+    std::cout << "totalThickness = " << totalThickness << "\n";
+    std::cout << "zmin = " << zmin << "\n";
+    std::cout << "rmin = " << rmin << "\n";
+    std::cout << "rmax = " << rmax << "\n";
+    std::cout << "nlayers = " << std::size(layering.layers()) << "\n";
     int l_num = 1;
     int layerType = 0;
     double layerZ = -totalThickness / 2;
@@ -44,55 +49,59 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
     endcapVol.setAttributes(description, x_det.regionStr(), x_det.limitsStr(), x_det.visStr());
 
     for (xml_coll_t xc(x_det, _U(layer)); xc; ++xc) {
-        xml_comp_t x_layer = xc;
-        double l_thick = layering.layer(l_num - 1)->thickness();
-        string l_name = _toString(layerType, "layer%d");
-        int l_repeat = x_layer.repeat();
-        Volume l_vol(l_name, PolyhedraRegular(numsides, rmin, rmax, l_thick), air);
-        vector<PlacedVolume> sensitives;
+      std::cout << "l_num = " << l_num << "\n";
+      std::cout << "xc = " << xc << "\n";
+      xml_comp_t           x_layer  = xc;
+      double               l_thick  = layering.layer(l_num - 1)->thickness();
+      std::cout << "xc = " << xc << "\n";
+      string               l_name   = _toString(layerType, "layer%d");
+      int                  l_repeat = x_layer.repeat();
+      Volume               l_vol(l_name, PolyhedraRegular(numsides, rmin, rmax, l_thick), air);
+      vector<PlacedVolume> sensitives;
 
-        int s_num = 1;
-        double sliceZ = -l_thick / 2;
-        for (xml_coll_t xs(x_layer, _U(slice)); xs; ++xs) {
-            xml_comp_t x_slice = xs;
-            string s_name = _toString(s_num, "slice%d");
-            double s_thick = x_slice.thickness();
-            Material s_mat = description.material(x_slice.materialStr());
-            Volume s_vol(s_name, PolyhedraRegular(numsides, rmin, rmax, s_thick), s_mat);
+      int    s_num  = 1;
+      double sliceZ = -l_thick / 2;
+      for (xml_coll_t xs(x_layer, _U(slice)); xs; ++xs) {
+        xml_comp_t x_slice = xs;
+        string     s_name  = _toString(s_num, "slice%d");
+        double     s_thick = x_slice.thickness();
+        Material   s_mat   = description.material(x_slice.materialStr());
+        Volume     s_vol(s_name, PolyhedraRegular(numsides, rmin, rmax, s_thick), s_mat);
 
-            s_vol.setVisAttributes(description.visAttributes(x_slice.visStr()));
-            sliceZ += s_thick / 2;
-            PlacedVolume s_phv = l_vol.placeVolume(s_vol, Position(0, 0, sliceZ));
-            s_phv.addPhysVolID("slice", s_num);
-            if (x_slice.isSensitive()) {
-                sens.setType("calorimeter");
-                s_vol.setSensitiveDetector(sens);
-                sensitives.push_back(s_phv);
-            }
-            sliceZ += s_thick / 2;
-            s_num++;
+        s_vol.setVisAttributes(description.visAttributes(x_slice.visStr()));
+        sliceZ += s_thick / 2;
+        PlacedVolume s_phv = l_vol.placeVolume(s_vol, Position(0, 0, sliceZ));
+        s_phv.addPhysVolID("slice", s_num);
+        if (x_slice.isSensitive()) {
+          sens.setType("calorimeter");
+          s_vol.setSensitiveDetector(sens);
+          sensitives.push_back(s_phv);
         }
-        l_vol.setVisAttributes(description.visAttributes(x_layer.visStr()));
-        if (l_repeat <= 0) throw std::runtime_error(x_det.nameStr() + "> Invalid repeat value");
-        for (int j = 0; j < l_repeat; ++j) {
-            string phys_lay = _toString(l_num, "layer%d");
-            layerZ += l_thick / 2;
-            DetElement layer_elt(endcap, phys_lay, l_num);
-            PlacedVolume pv = endcapVol.placeVolume(l_vol, Position(0, 0, layerZ));
-            pv.addPhysVolID("layer", l_num);
-            layer_elt.setPlacement(pv);
-            for (size_t ic = 0; ic < sensitives.size(); ++ic) {
-                PlacedVolume sens_pv = sensitives[ic];
-                DetElement comp_elt(layer_elt, sens_pv.volume().name(), l_num);
-                comp_elt.setPlacement(sens_pv);
-            }
-            layerZ += l_thick / 2;
-            ++l_num;
+        sliceZ += s_thick / 2;
+        s_num++;
+      }
+      l_vol.setVisAttributes(description.visAttributes(x_layer.visStr()));
+      if (l_repeat <= 0)
+        throw std::runtime_error(x_det.nameStr() + "> Invalid repeat value");
+      for (int j = 0; j < l_repeat; ++j) {
+        string phys_lay = _toString(l_num, "layer%d");
+        layerZ += l_thick / 2;
+        DetElement   layer_elt(endcap, phys_lay, l_num);
+        PlacedVolume pv = endcapVol.placeVolume(l_vol, Position(0, 0, layerZ));
+        pv.addPhysVolID("layer", l_num);
+        layer_elt.setPlacement(pv);
+        for (size_t ic = 0; ic < sensitives.size(); ++ic) {
+          PlacedVolume sens_pv = sensitives[ic];
+          DetElement   comp_elt(layer_elt, sens_pv.volume().name(), l_num);
+          comp_elt.setPlacement(sens_pv);
         }
-        ++layerType;
+        layerZ += l_thick / 2;
+        ++l_num;
+      }
+      ++layerType;
     }
 
-    double z_pos = zmin + totalThickness / 2;
+    double       z_pos = zmin + totalThickness / 2;
     PlacedVolume pv;
     // Reflect it.
     Assembly assembly(det_name);
diff --git a/src/TestDetector.cpp b/src/TestDetector.cpp
deleted file mode 100644
index 5669184..0000000
--- a/src/TestDetector.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <XML/Helper.h>
-
-using namespace dd4hep;
-
-static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens) {
-  xml::DetElement detElem = handle;
-  std::string     detName = detElem.nameStr();
-  int             detID   = detElem.id();
-
-  xml::Component dims      = detElem.dimensions();
-  double         rInner    = dims.inner_radius();
-  double         rMin      = dims.rmin();
-  double         thickness = dims.thickness();
-  double         innerZ    = dims.inner_z();
-  double         angle     = dims.angle();
-
-  Material mat = desc.material(detElem.materialStr());
-
-  Tube             outerTubeShape(rMin, rInner + thickness, innerZ + thickness);
-  Tube             innerTubeShape(0, rInner, innerZ);
-  SubtractionSolid unchamferedShape(outerTubeShape, innerTubeShape);
-  Cone             chamferShape(thickness, 0, rMin, 0, rMin + 2 * tan(angle) * thickness);
-  SubtractionSolid detShape(unchamferedShape, chamferShape, Position(0, 0, innerZ + thickness));
-  Volume           detVol(detName, detShape, mat);
-
-  detVol.setVisAttributes(desc.visAttributes(detElem.visStr()));
-
-  DetElement   det(detName, detID);
-  Volume       motherVol = desc.pickMotherVolume(det);
-  PlacedVolume detPV     = motherVol.placeVolume(detVol);
-  det.setPlacement(detPV);
-  return det;
-}
-
-// clang-format off
-DECLARE_DETELEMENT(TestDetector, createDetector)
diff --git a/src/cb_Solenoid.cpp b/src/cb_Solenoid.cpp
deleted file mode 100644
index 623c520..0000000
--- a/src/cb_Solenoid.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <XML/Helper.h>
-///////////////////////////
-// Central Barrel Solenoid
-///////////////////////////
-
-using namespace dd4hep;
-
-static Ref_t createDetector(Detector& desc, xml_h handle, SensitiveDetector sens)
-{
-  xml::DetElement detElem = handle;
-  std::string     detName = detElem.nameStr();
-  int             detID   = detElem.id();
-
-  xml::Component dims = detElem.dimensions();
-  double SizeZ  = dims.z();     // Size in Z direction
-  double ROut   = dims.rmax();  // Outer diameter
-  double RIn    = dims.rmin();  // Inner diameter
-  double ShiftZ = dims.delta();
-  Material mat = desc.material(detElem.materialStr());
-
-  Tube   cb_Solenoid_GVol_Solid(RIn, ROut, SizeZ / 2., 0., 360 * deg);
-  Volume detVol("cb_Solenoid_GVol_Logic", cb_Solenoid_GVol_Solid, mat);
-
-  detVol.setVisAttributes(desc.visAttributes(detElem.visStr()));
-
-  DetElement   det(detName, detID);
-  Volume       motherVol = desc.pickMotherVolume(det);
-  Transform3D  tr(RotationZYX(0., 0., 0.), Position(0., 0., ShiftZ));
-  PlacedVolume detPV = motherVol.placeVolume(detVol, tr);
-  det.setPlacement(detPV);
-  return det;
-}
-
-// clang-format off
-DECLARE_DETELEMENT(cb_Solenoid, createDetector)
-- 
GitLab