From 9c121719f9e42fbf3457c506e0c6c50679bdc199 Mon Sep 17 00:00:00 2001
From: Zhenyu Ye <yezhenyu@uic.edu>
Date: Wed, 5 May 2021 18:45:13 +0000
Subject: [PATCH] Resolve "Add MM and/or uRWell barrel tracker details"

---
 compact/definitions.xml           |   4 +-
 compact/materials.xml             |  23 ++++
 compact/rwell_tracker_barrel.xml  | 210 ++++++++++++++++++++++++++++++
 reference_detector.xml            |   3 +-
 src/CylinderTrackerBarrel_geo.cpp |   1 +
 5 files changed, 239 insertions(+), 2 deletions(-)
 create mode 100644 compact/rwell_tracker_barrel.xml

diff --git a/compact/definitions.xml b/compact/definitions.xml
index befa08c5..1a8f2eae 100644
--- a/compact/definitions.xml
+++ b/compact/definitions.xml
@@ -135,11 +135,13 @@
     (75-84) Barrel Tracker IDs
     ===================
     MMTrackerBarrel ID: 75
+    RWellTrackerBarrel ID: 76
 
-    Unused IDs: 76-89
+    Unused IDs: 77-89
 
     </comment>
     <constant name="MMTrackerBarrel_ID" value="75"/>
+    <constant name="RWellTrackerBarrel_ID" value="76"/>
 
     <comment>
     ===================
diff --git a/compact/materials.xml b/compact/materials.xml
index 26ee6989..fb0f49a6 100644
--- a/compact/materials.xml
+++ b/compact/materials.xml
@@ -198,5 +198,28 @@
     <fraction n="0.041960452" ref="H"/>
     <fraction n="0.33301847" ref="O"/>
   </material>
+  <material name="Nomex">
+    <D type="density" value="0.029" unit="g/cm3" />
+    <composite n="14" ref="C"/>
+    <composite n="10" ref="H"/>
+    <composite n="2" ref="N"/>
+    <composite n="2" ref="O"/>
+  </material>
+  <material name="Fr4_Epoxy">
+    <D type="density" value="1.2" unit="g/cm3"/>
+    <composite n="2" ref="H"/>
+    <composite n="2" ref="C"/>
+  </material>
+  <material name="Fr4">
+    <D type="density" value="1.86" unit="g/cm3"/>
+    <fraction n="0.528" ref="Quartz"/>
+    <fraction n="0.472" ref="Fr4_Epoxy"/>
+  </material>
+  <material name="Cfrp_intt">
+    <D type="density" value="1.69" unit="g/cm3"/>
+    <composite n="10" ref="C"/>
+    <composite n="6" ref="H"/>
+    <composite n="1" ref="O"/>
+  </material>
 
 </materials>
diff --git a/compact/rwell_tracker_barrel.xml b/compact/rwell_tracker_barrel.xml
new file mode 100644
index 00000000..f03dd28e
--- /dev/null
+++ b/compact/rwell_tracker_barrel.xml
@@ -0,0 +1,210 @@
+<lccdd>
+
+  <comment>RWell tracker barrel based on Fun4All implementation https://www.dropbox.com/sh/j4n4g5h80g9tai6/AAAzmXSHRGQCShoSiewe6HCDa?dl=0 Where the detector is constructed in the G4_RWell.C and Build_G4_RWell_Sup01.C files
+      original R=(78.67, 90.0)cm,
+               DirftGap=(0.4, 0.4)cm,
+               Length=(200, 200)cm
+               kapton_thickness = 0.0175; //cm
+               cu_thickness = 0.002; //cm
+               prepreg_thickness = 0.005; //cm
+               pcb_thickness = 0.010; //cm
+               //inner tube
+               support_01_thickness = 0.50;
+               support_01_length = 7.2;
+               //inner ring
+               support_02_thickness = 1.6;
+               support_02_length = 1.2;
+               //outer ring
+               support_03_thickness = 0.50;
+               support_03_length = 1.2;
+
+      modified R=(73.67, 85.0) cm  // to avoid conflict with EM Cal
+               Length=TrackerBarrelOuter_length=(160, 160) cm // to avoid conflict with GEM tracker
+  </comment>
+
+  <define>
+    <constant name="RWellTrackerBarrel_length"              value="TrackerBarrelOuter_length"/>
+    <constant name="RWellTrackerBarrel_NZModules"           value="1"/>
+    <constant name="RWellTrackerBarrel_NZSupport"           value="2"/>
+
+    <constant name="RWellTrackerBarrel_Kapton_thickness"    value="175.0*um"/>
+    <constant name="RWellTrackerBarrel_Gas_thickness"       value="4.0*mm"/>
+    <constant name="RWellTrackerBarrel_Cu_thickness"        value="20.0*um"/>
+    <constant name="RWellTrackerBarrel_Prepreg_thickness"   value="50.0*um"/>
+    <constant name="RWellTrackerBarrel_Pcb_thickness"       value="0.1*mm"/>
+
+    <constant name="RWellTrackerBarrelLayer1_length"        value="RWellTrackerBarrel_length"/>
+    <constant name="RWellTrackerBarrelLayer1_gas_rmin"      value="736.7 * mm"/>
+    <constant name="RWellTrackerBarrelLayer1_rmin"          value="RWellTrackerBarrelLayer1_gas_rmin - RWellTrackerBarrel_Kapton_thickness"/>
+    <constant name="RWellTrackerBarrelLayer1_thickness"     value="RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Prepreg_thickness + RWellTrackerBarrel_Pcb_thickness"/>
+    
+    <constant name="RWellTrackerBarrelLayer2_length"        value="RWellTrackerBarrel_length"/>
+    <constant name="RWellTrackerBarrelLayer2_gas_rmin"      value="850.0 * mm"/>
+    <constant name="RWellTrackerBarrelLayer2_rmin"          value="RWellTrackerBarrelLayer2_gas_rmin - RWellTrackerBarrel_Kapton_thickness"/>
+    <constant name="RWellTrackerBarrelLayer2_thickness"     value="RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Prepreg_thickness + RWellTrackerBarrel_Pcb_thickness"/>
+    
+    <constant name="RWellTrackerBarrel_STube_thickness"     value="0.5*cm"/>
+    <constant name="RWellTrackerBarrel_STube_length"        value="7.2*cm"/>
+    <constant name="RWellTrackerBarrel_IRing_thickness"     value="1.6*cm"/>
+    <constant name="RWellTrackerBarrel_IRing_length"        value="1.2*cm"/>
+    <constant name="RWellTrackerBarrel_ORing_thickness"     value="0.5*cm"/>
+    <constant name="RWellTrackerBarrel_ORing_length"        value="1.2*cm"/>
+    <constant name="RWellTrackerBarrelLayer1_support_rmin" value="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrelLayer1_thickness"/>
+    <constant name="RWellTrackerBarrelLayer2_support_rmin" value="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrelLayer2_thickness"/>
+  </define>
+
+  <limits>
+  </limits>
+
+  <regions>
+  </regions>
+
+  <display>
+  </display>
+
+  <detectors>
+    <detector id="RWellTrackerBarrel_ID" name="RWellTrackerBarrel" type="refdet_RWellTrackerBarrel" readout="RWellTrackerBarrelHits">
+        
+        <module name="Module1" vis="GreenVis">
+          <module_envelope
+            rmin="RWellTrackerBarrelLayer1_rmin" thickness="RWellTrackerBarrelLayer1_thickness" length="RWellTrackerBarrelLayer1_length" phi="360*degree" />
+          <module_component rmin="RWellTrackerBarrelLayer1_rmin" thickness="RWellTrackerBarrel_Kapton_thickness" material="Kapton"  name="entrance_window" sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrel_Kapton_thickness" thickness="RWellTrackerBarrel_Gas_thickness" material="Ar10CO2" name="drift region"    sensitive="true"/>
+          <module_component rmin="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness" thickness="RWellTrackerBarrel_Cu_thickness" material="Copper"  name="Cu"              sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness" thickness="RWellTrackerBarrel_Prepreg_thickness" material="Nomex"   name="Prepreg"         sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Prepreg_thickness" thickness="RWellTrackerBarrel_Pcb_thickness" material="Fr4"     name="Pcb"             sensitive="false"/>
+        </module>
+        
+        <module name="Module1_STube" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer1_support_rmin" thickness="RWellTrackerBarrel_STube_thickness" length="RWellTrackerBarrel_STube_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer1_support_rmin" thickness="RWellTrackerBarrel_STube_thickness" material="Cfrp_intt"  name="support_tube" sensitive="false"/>
+        </module>
+        <module name="Module1_IRing" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness" thickness="RWellTrackerBarrel_IRing_thickness" length="RWellTrackerBarrel_IRing_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness" thickness="RWellTrackerBarrel_IRing_thickness" material="Cfrp_intt"  name="support_inner_ring" sensitive="false"/>
+        </module>
+        <module name="Module1_ORing" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" thickness="RWellTrackerBarrel_ORing_thickness" length="RWellTrackerBarrel_ORing_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" thickness="RWellTrackerBarrel_ORing_thickness" material="Cfrp_intt"  name="support_outer_ring" sensitive="false"/>
+        </module>
+      
+        <module name="Module2" vis="GreenVis">
+          <module_envelope
+              rmin="RWellTrackerBarrelLayer2_rmin" thickness="RWellTrackerBarrelLayer2_thickness" length="RWellTrackerBarrelLayer2_length" phi="360*degree" />
+          <module_component rmin="RWellTrackerBarrelLayer2_rmin" thickness="RWellTrackerBarrel_Kapton_thickness" material="Kapton"  name="entrance_window" sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrel_Kapton_thickness" thickness="RWellTrackerBarrel_Gas_thickness" material="Ar10CO2" name="drift region"    sensitive="true"/>
+          <module_component rmin="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness" thickness="RWellTrackerBarrel_Cu_thickness" material="Copper"  name="Cu"              sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness" thickness="RWellTrackerBarrel_Prepreg_thickness" material="Nomex"   name="Prepreg"         sensitive="false"/>
+          <module_component rmin="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrel_Kapton_thickness + RWellTrackerBarrel_Gas_thickness + RWellTrackerBarrel_Cu_thickness + RWellTrackerBarrel_Pcb_thickness" thickness="RWellTrackerBarrel_Pcb_thickness" material="Fr4"     name="Pcb"             sensitive="false"/>
+        </module>
+        
+        <module name="Module2_STube" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer2_support_rmin" thickness="RWellTrackerBarrel_STube_thickness" length="RWellTrackerBarrel_STube_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer2_support_rmin" thickness="RWellTrackerBarrel_STube_thickness" material="Cfrp_intt"  name="support_tube" sensitive="false"/>
+        </module>
+        <module name="Module2_IRing" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness" thickness="RWellTrackerBarrel_IRing_thickness" length="RWellTrackerBarrel_IRing_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness" thickness="RWellTrackerBarrel_IRing_thickness" material="Cfrp_intt"  name="support_inner_ring" sensitive="false"/>
+        </module>
+        <module name="Module2_ORing" vis="GreenVis">
+           <module_envelope
+             rmin="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" thickness="RWellTrackerBarrel_ORing_thickness" length="RWellTrackerBarrel_ORing_length" phi="360*degree" />
+           <module_component rmin="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" thickness="RWellTrackerBarrel_ORing_thickness" material="Cfrp_intt"  name="support_outer_ring" sensitive="false"/>
+        </module>
+
+      <layer module="Module1" id="1" vis="GreenVis">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer1_rmin"
+          outer_r="RWellTrackerBarrelLayer1_rmin + RWellTrackerBarrelLayer1_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer1_rmin" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrelLayer1_length/2.0"
+          nz="RWellTrackerBarrel_NZModules"/>
+      </layer>
+      <layer module="Module1_STube" id="2" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer1_support_rmin"
+          outer_r="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer1_support_rmin" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_STube_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+      <layer module="Module1_IRing" id="3" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness"
+          outer_r="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_IRing_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+      <layer module="Module1_ORing" id="4" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness"
+          outer_r="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness + RWellTrackerBarrel_ORing_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer1_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_ORing_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+
+      <layer module="Module2" id="5" vis="GreenVis">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer2_rmin"
+          outer_r="RWellTrackerBarrelLayer2_rmin + RWellTrackerBarrelLayer2_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer2_rmin" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrelLayer2_length/2.0"
+          nz="RWellTrackerBarrel_NZModules"/>
+      </layer>
+      <layer module="Module2_STube" id="6" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer2_support_rmin"
+          outer_r="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer2_support_rmin" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_STube_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+      <layer module="Module2_IRing" id="7" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness"
+          outer_r="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_IRing_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+      <layer module="Module2_ORing" id="8" vis="InvisibleWithDaughters">
+        <barrel_envelope
+          inner_r="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness"
+          outer_r="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness + RWellTrackerBarrel_ORing_thickness"
+          z_length="RWellTrackerBarrel_length" />
+        <rphi_layout phi_tilt="0.0" nphi="1" phi0="0." rc="RWellTrackerBarrelLayer2_support_rmin + RWellTrackerBarrel_STube_thickness + RWellTrackerBarrel_IRing_thickness" dr="0.0 * mm"/>
+        <z_layout dr="0.0 * mm" z0="-RWellTrackerBarrel_length/2.0 + RWellTrackerBarrel_ORing_length/2.0"
+          nz="RWellTrackerBarrel_NZSupport"/>
+      </layer>
+
+    </detector>
+
+  </detectors>
+
+  <readouts>
+    <readout name="RWellTrackerBarrelHits">
+      <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" />
+      <id>system:8,barrel:3,layer:4,module:7,sensor:2,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <plugins>
+  </plugins>
+
+  <fields>
+  </fields>
+</lccdd>
diff --git a/reference_detector.xml b/reference_detector.xml
index 5537e71e..07eaa508 100644
--- a/reference_detector.xml
+++ b/reference_detector.xml
@@ -135,7 +135,8 @@
   <include ref="compact/mm_tracker_barrel.xml"/>
   <include ref="compact/cb_VTX_Barrel.xml"/>
   -->
-
+   
+  <include ref="compact/rwell_tracker_barrel.xml"/>
 
   <detectors>
   </detectors>
diff --git a/src/CylinderTrackerBarrel_geo.cpp b/src/CylinderTrackerBarrel_geo.cpp
index 6ad205f6..0a4d3265 100644
--- a/src/CylinderTrackerBarrel_geo.cpp
+++ b/src/CylinderTrackerBarrel_geo.cpp
@@ -191,3 +191,4 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s
 // clang-format off
 DECLARE_DETELEMENT(refdet_CylinderTrackerBarrel, create_detector)
 DECLARE_DETELEMENT(refdet_MMTrackerBarrel, create_detector)
+DECLARE_DETELEMENT(refdet_RWellTrackerBarrel, create_detector)
-- 
GitLab