From 93b1da844575595cc5354e36bdf150ad5810e878 Mon Sep 17 00:00:00 2001
From: Sylvester Joosten <sjoosten@anl.gov>
Date: Fri, 15 Nov 2024 15:59:06 -0500
Subject: [PATCH 1/3] Special debug configuration of the BIC with only the
 first tracking layer enabled

---
 compact/ecal/bic/bic_layer1_only.xml          | 190 ++++++++++++++++++
 compact/ecal/bic_6layers.xml                  |   2 +-
 compact/ecal/bic_layer1_only.xml              |  17 ++
 configurations/craterlake_bic_layer1_only.yml |  38 ++++
 4 files changed, 246 insertions(+), 1 deletion(-)
 create mode 100644 compact/ecal/bic/bic_layer1_only.xml
 create mode 100644 compact/ecal/bic_layer1_only.xml
 create mode 100644 configurations/craterlake_bic_layer1_only.yml

diff --git a/compact/ecal/bic/bic_layer1_only.xml b/compact/ecal/bic/bic_layer1_only.xml
new file mode 100644
index 000000000..6e5c965da
--- /dev/null
+++ b/compact/ecal/bic/bic_layer1_only.xml
@@ -0,0 +1,190 @@
+<!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
+<!-- Copyright (C) 2022 Whitney Armstrong, Chao Peng, Maria Zurek, Jihee Kim -->
+<!-- Active AstroPix layers: 1-3-4-6 -->
+
+
+<lccdd>
+
+    <display>
+    </display>
+  <define>
+    <comment>
+      ---------------------------------------
+      EM Calorimeter Parameters with AstroPix
+      THIS IS A SPECIAL VERSION WITH ONLY THE FIRST IMAGING LAYER ENABLED
+      FOR TRACKING DEBUG PURPOSES ONLY
+      ---------------------------------------
+    </comment>
+    <comment>
+      To change the number of imaging layer slots from, e.g., 9 to 6,
+      change EcalBarrelImagingLayers_nMax variable. Note that this does NOT change the
+      number of silicon frames, as each silicon frame and layer is placed manually.
+
+      This file assumes the EcalBarrel_enable_staves_N variables have been defined to allow
+      changing the configuration by enabling/disabling staves
+    </comment>
+    <!-- Number of imaging layer slots -->
+    <constant name="EcalBarrelImagingLayers_num"     value="1"/>
+    <comment>
+      Active part of the calorimeter is
+      435 cm long
+      -41.25 cm offset
+    </comment>
+    <constant name="EcalBarrel_Calorimeter_zmin"
+      value="min(258.75*cm, EcalBarrelBackward_zmax)"/>
+    <constant name="EcalBarrel_Calorimeter_zmax"
+      value="min(176.25*cm, EcalBarrelForward_zmax)"/>
+    <constant name="EcalBarrel_Readout_zmin"          value="273.75*cm"/>
+    <constant name="EcalBarrel_Readout_zmax"          value="191.25*cm"/>
+    <constant name="EcalBarrel_Calorimeter_length"
+      value="EcalBarrel_Calorimeter_zmax + EcalBarrel_Calorimeter_zmin"/>
+    <constant name="EcalBarrel_Calorimeter_offset"
+      value="(EcalBarrel_Calorimeter_zmax - EcalBarrel_Calorimeter_zmin)/2.0"/>
+
+    <constant name="EcalBarrel_FrontSupportThickness" value="0.5*cm"/>
+    <constant name="EcalBarrel_BackSupportThickness"  value="3*cm"/>
+    <constant name="EcalBarrel_SiliconThickness"      value="500*um"/>
+    <constant name="EcalBarrel_ElectronicsThickness"  value="150*um"/>
+    <constant name="EcalBarrel_CopperThickness"       value="100*um"/>
+    <constant name="EcalBarrel_KaptonThickness"       value="200*um"/>
+    <constant name="EcalBarrel_EpoxyThickness"        value="100*um"/>
+    <constant name="EcalBarrel_CarbonFrameThickness"  value="2*mm"/>
+    <constant name="EcalBarrel_CarbonStaveThickness"  value="0.5*mm"/>
+
+    <constant name="EcalBarrel_AstroPix_width"        value="2*cm"/>
+    <constant name="EcalBarrel_AstroPix_length"       value="2*cm"/>
+    <constant name="EcalBarrel_AstroPix_margin"       value="200*um"/>
+    <constant name="EcalBarrel_AstroPix_thickness"
+      value="EcalBarrel_SiliconThickness
+      + EcalBarrel_ElectronicsThickness
+      + EcalBarrel_CopperThickness
+      + EcalBarrel_KaptonThickness
+      + EcalBarrel_EpoxyThickness"/>
+
+    <constant name="EcalBarrel_Stave_width"           value="EcalBarrel_AstroPix_width + 2. * EcalBarrel_AstroPix_margin"/>
+    <constant name="EcalBarrel_Stave_length"          value="EcalBarrel_Calorimeter_length"/>
+    <constant name="EcalBarrel_Stave_thickness"       value="EcalBarrel_AstroPix_thickness + EcalBarrel_CarbonStaveThickness"/>
+    <constant name="EcalBarrel_StaveTilt_angle"       value="10*degree"/>
+    <constant name="EcalBarrel_Stave_ModuleRepeat"    value="floor(EcalBarrel_Calorimeter_length / (EcalBarrel_AstroPix_length + EcalBarrel_AstroPix_margin))"/>
+
+    <constant name="EcalBarrel_FiberRadius"           value="0.5*mm"/>
+    <constant name="EcalBarrel_FiberXSpacing"         value="1.34*mm"/>
+    <constant name="EcalBarrel_FiberZSpacing"         value="1.22*mm"/>
+    <constant name="EcalBarrel_CladdingThickness"     value="0.04*mm"/>
+    <constant name="EcalBarrel_SpaceBetween"          value="0.01*mm"/>
+    <comment>
+      For Pb/SiFi (GlueX):  X0 ~ 1.45 cm
+      For W/SiFi (sPHENIX): X0 ~ 0.7 cm (but different fiber orientation)
+    </comment>
+    <constant name="EcalBarrel_RadiatorThickness"      value="EcalBarrel_FiberZSpacing * 17"/>
+    <constant name="EcalBarrel_TotalFiberLayers_num"   value="12"/>
+    <constant name="EcalBarrel_RadiatorEdgeThickness"  value="0.61*mm"/>
+    <constant name="EcalBarrel_SectorRepeat"           value="EcalBarrelSectorsN"/>
+    <constant name="EcalBarrel_AvailThickness"         value="EcalBarrelRegion_thickness - EcalBarrel_BackSupportThickness - EcalBarrel_FrontSupportThickness"/>
+
+    <constant name="EcalBarrel_ImagingLayerThickness"  value="1.7*cm"/>
+
+    <constant name="EcalBarrel_ImagingLayerThickness_WithoutFrame"
+      value="EcalBarrel_ImagingLayerThickness
+      - 2*EcalBarrel_CarbonFrameThickness"/>
+
+    <constant name="EcalBarrel_ScFiLayerThickness_Imaging"
+      value="EcalBarrel_RadiatorThickness + 2*EcalBarrel_RadiatorEdgeThickness"/>
+
+    <comment>
+      Adjusting size of the ScFi back chunk to match number of imaging layers
+      and ~17.1 radiation lengths in total
+    </comment>
+    <constant name="EcalBarrel_FiberBulkLayers_num" value = "EcalBarrel_TotalFiberLayers_num-EcalBarrelImagingLayers_num+1"/>
+
+    <constant name="EcalBarrel_ImagingPartThickness"
+        value="EcalBarrelImagingLayers_num * (EcalBarrel_ImagingLayerThickness + EcalBarrel_ScFiLayerThickness_Imaging + EcalBarrel_SpaceBetween)
+         - EcalBarrel_ScFiLayerThickness_Imaging"/>
+    <constant name="EcalBarrel_ScFiPartThickness"
+        value="EcalBarrel_RadiatorThickness*EcalBarrel_FiberBulkLayers_num"/>
+    <constant name="EcalBarrelDetector_rmax"
+        value="EcalBarrel_rmin + EcalBarrel_FrontSupportThickness
+         + EcalBarrel_ImagingPartThickness + EcalBarrel_ScFiPartThickness + EcalBarrel_BackSupportThickness"/>
+
+  </define>
+
+  <limits>
+  </limits>
+
+  <regions>
+  </regions>
+
+  <display>
+  </display>
+
+  <detectors>
+
+    <comment>
+      ---------------------------------------
+      Imaging Layers of Barrel EM Calorimeter
+      ---------------------------------------
+      Silicon (Astropix) readout layers for imaging 3d showers
+    </comment>
+    <detector
+      id="EcalBarrel_ID"
+      name="EcalBarrelImaging"
+      type="epic_EcalBarrelImaging"
+      readout="EcalBarrelImagingHits"
+      calorimeterType="EM_BARREL"
+      vis="EcalBarrelEnvelopeVis"
+      offset="EcalBarrel_Calorimeter_offset">
+      <dimensions numsides="EcalBarrel_SectorRepeat"
+        rmin="EcalBarrel_rmin"
+        z="EcalBarrel_Calorimeter_length"/>
+      <sectors vis="EcalBarrelSectorVis"/>
+
+      <module name="AstroPix_Module"
+              vis="EcalBarrelModuleVis">
+        <module_component name="AstroPix_Chip"
+                          material="Silicon"
+                          width="EcalBarrel_AstroPix_width"
+                          length="EcalBarrel_AstroPix_length"
+                          thickness="EcalBarrel_AstroPix_thickness"
+                          vis="EcalBarrelModuleVis">
+          <slice material="Silicon" thickness="EcalBarrel_SiliconThickness"     vis="EcalBarrelSliceVis" sensitive="yes" limits="cal_limits"/>
+          <slice material="Silicon" thickness="EcalBarrel_ElectronicsThickness" vis="EcalBarrelSliceVis"/>
+          <slice material="Copper" thickness="EcalBarrel_CopperThickness"       vis="EcalBarrelSliceVis"/>
+          <slice material="Kapton" thickness="EcalBarrel_KaptonThickness"       vis="EcalBarrelSliceVis"/>
+          <slice material="Epoxy" thickness="EcalBarrel_EpoxyThickness"         vis="EcalBarrelSliceVis"/>
+        </module_component>
+      </module>
+
+      <support thickness="EcalBarrel_FrontSupportThickness" material="Aluminum" vis="EcalBarrelSupportVis"/>
+
+      <layer repeat="1" vis="EcalBarrelLayerVis"
+             thickness="EcalBarrel_ImagingLayerThickness"
+             space_before="EcalBarrel_FrontSupportThickness">
+        <frame material="CarbonFiber" fill="Air" thickness="EcalBarrel_CarbonFrameThickness" height="EcalBarrel_ImagingLayerThickness" vis="EcalBarrelSliceVis"/>
+        <stave repeat="6"
+               width="EcalBarrel_Stave_width"
+               length="EcalBarrel_Stave_length"
+               thickness="EcalBarrel_Stave_thickness"
+               angle="EcalBarrel_StaveTilt_angle"
+               module="AstroPix_Module"
+               vis="EcalBarrelStaveVis"
+               enable="EcalBarrel_enable_staves_1">
+          <xy_layout
+            dx="EcalBarrel_AstroPix_width + EcalBarrel_AstroPix_margin"
+            dy="EcalBarrel_AstroPix_length + EcalBarrel_AstroPix_margin"
+          />
+        </stave>
+      </layer>
+    </detector>
+
+  <readouts>
+    <readout name="EcalBarrelImagingHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.5 * mm" grid_size_y="0.5 * mm"/>
+      <id>system:8,sector:6,layer:4,stave:4,module:8,slice:2,x:32:-16,y:-16</id>
+    </readout>
+    <readout name="EcalBarrelScFiHits">
+      <segmentation type="CartesianStripZ" strip_size_x="1.0*cm" identifier_x="z"/>
+      <id>system:8,sector:6,layer:6,slice:4,grid:10,fiber:16,z:-14</id>
+    </readout>
+  </readouts>
+
+</lccdd>
diff --git a/compact/ecal/bic_6layers.xml b/compact/ecal/bic_6layers.xml
index 059c92b9b..f3eab6f89 100644
--- a/compact/ecal/bic_6layers.xml
+++ b/compact/ecal/bic_6layers.xml
@@ -3,7 +3,7 @@
 <lccdd>
 
   <info name="bic_default"
-        title="Default ePIC BIC configuration with 4 AstroPix layers"
+        title="Alternate ePIC BIC configuration with 6 AstroPix layers"
         author="@sly2j"
         url="https://github.com/sly2j"
         status="development"
diff --git a/compact/ecal/bic_layer1_only.xml b/compact/ecal/bic_layer1_only.xml
new file mode 100644
index 000000000..8f46b3658
--- /dev/null
+++ b/compact/ecal/bic_layer1_only.xml
@@ -0,0 +1,17 @@
+<!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
+<!-- Copyright (C) 2024 Sylvester Joosten -->
+<lccdd>
+
+  <info name="bic_default"
+        title="Special ePIC BIC configuration with only the first AstroPix layer (and support) enabled"
+        author="@sly2j"
+        url="https://github.com/sly2j"
+        status="development"
+        version="1.0"
+  ><comment/></info>
+
+  <define>
+    <constant name="EcalBarrel_enable_staves_1" value="1"/>
+  </define>
+  <include ref="bic/bic_layer1_only.xml"/>
+</lccdd>
diff --git a/configurations/craterlake_bic_layer1_only.yml b/configurations/craterlake_bic_layer1_only.yml
new file mode 100644
index 000000000..db5420f34
--- /dev/null
+++ b/configurations/craterlake_bic_layer1_only.yml
@@ -0,0 +1,38 @@
+ebeam: 10
+pbeam: 100
+features:
+  beampipe:
+  tracking:
+    definitions_craterlake:
+    vertex_barrel:
+    silicon_barrel:
+    mpgd_barrel:
+    support_service_craterlake:
+    mpgd_outerbarrel:
+    mpgd_forward_endcap:
+    mpgd_backward_endcap:
+    silicon_disks:
+    tof_barrel:
+    tof_endcap:
+  pid:
+    dirc:
+    pfrich:
+    drich:
+  ecal:
+    forward_homogeneous:
+    forward_insert_homogeneous:
+    bic_layer1_only:
+    backward_PbWO4:
+  solenoid:
+  hcal:
+    lfhcal_with_space_for_insert:
+    forward_insert:
+    barrel_gdml:
+    barrel_flux_return:
+    forward_endcap_flux:
+    backward:
+    backward_endcap_flux:
+  far_forward:
+    default:
+  far_backward:
+    default:

From c5e017284843aa95a734be1b1a92a75bb8754f9f Mon Sep 17 00:00:00 2001
From: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
Date: Fri, 15 Nov 2024 17:17:07 -0500
Subject: [PATCH 2/3] Update compact/ecal/bic/bic_layer1_only.xml

---
 compact/ecal/bic/bic_layer1_only.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/compact/ecal/bic/bic_layer1_only.xml b/compact/ecal/bic/bic_layer1_only.xml
index 6e5c965da..f7af9f9d6 100644
--- a/compact/ecal/bic/bic_layer1_only.xml
+++ b/compact/ecal/bic/bic_layer1_only.xml
@@ -1,6 +1,6 @@
 <!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
 <!-- Copyright (C) 2022 Whitney Armstrong, Chao Peng, Maria Zurek, Jihee Kim -->
-<!-- Active AstroPix layers: 1-3-4-6 -->
+<!-- Active AstroPix layers: 1 -->
 
 
 <lccdd>

From ca69fc951c6bab4abc768c8834aec22d40b28022 Mon Sep 17 00:00:00 2001
From: Sylvester Joosten <sjoosten@anl.gov>
Date: Sat, 16 Nov 2024 14:36:59 -0500
Subject: [PATCH 3/3] add missing closing tag

---
 compact/ecal/bic/bic_layer1_only.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/compact/ecal/bic/bic_layer1_only.xml b/compact/ecal/bic/bic_layer1_only.xml
index f7af9f9d6..10ad35102 100644
--- a/compact/ecal/bic/bic_layer1_only.xml
+++ b/compact/ecal/bic/bic_layer1_only.xml
@@ -175,6 +175,7 @@
         </stave>
       </layer>
     </detector>
+  </detectors>
 
   <readouts>
     <readout name="EcalBarrelImagingHits">