Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
41b7173
Remove the population of the NeighbourSurfacesData from the detector …
tmadlener Aug 18, 2026
55bf307
Using 'VertexBarrelCollection' and 'VertexEndcapCollection' in all mo…
armin-ilg Jun 24, 2026
1445ef7
Now also inner vertex outer support tube is shared
armin-ilg Jun 24, 2026
b9f703c
Put vertex CAD files correctly into CMakeLists as option (see #363 (c…
armin-ilg Aug 20, 2026
d57d4d5
Further refactoring of IDEA/ALLEGRO vertex detector into smaller piec…
armin-ilg Aug 20, 2026
e95cf5e
Moved readout definitions into the sub-detectors. Moved pitch definit…
armin-ilg Aug 20, 2026
912b7b7
Use new Vertex_o4_v08 from CLD for ILD (corrected disks material budget)
armin-ilg Aug 20, 2026
557dabc
Update the IDEA_o2_v01 test to have the same vertex detector as the …
armin-ilg Aug 20, 2026
0af50b9
Copy CLD_o2_v08 as basis for CLD_o2_v09 and CLD_o5_v01
armin-ilg Aug 20, 2026
e85336e
Apply CLD_o2_v09 and CLD_o5_v01 modifications: Fixing the material bu…
armin-ilg Aug 20, 2026
0ea9c41
Updating all affecteds detector READMEs
armin-ilg Aug 20, 2026
474e207
Merge branch 'main' into FCC-SEED_PR
giovannimarchiori Aug 27, 2026
369a921
Merge branch 'main' into FCC-SEED_PR
armin-ilg Sep 9, 2026
c8139b1
Install only .stl files of IDEA_o1_v03
armin-ilg Sep 9, 2026
ad8f394
Move vertex inner barrel outer tube back to correct radius
armin-ilg Sep 9, 2026
cfa6ad7
Also remove vis properties from new CLD
armin-ilg Sep 9, 2026
8ce398c
Merge branch 'main' into FCC-SEED_PR
armin-ilg Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
option(BUILD_TESTING "Enable and build tests" ON)
option(INSTALL_COMPACT_FILES "Copy compact files to install area" OFF)
option(INSTALL_BEAMPIPE_STL_FILES "Download CAD files for building the detailed beampipe" OFF)
option(INSTALL_VERTEX_STL_FILES "Download CAD files for IDEA vertex detector" OFF)

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Expand Down Expand Up @@ -223,3 +224,46 @@ if(INSTALL_BEAMPIPE_STL_FILES)
INSTALL(DIRECTORY ${OUTPUT_DIR} DESTINATION share/k4geo/FCCee/MDI/compact/stl_files )

endif()

if(INSTALL_VERTEX_STL_FILES)

file(MAKE_DIRECTORY share/k4geo/FCCee)

set(STL_FILES
"VertexCoolingCones_o1_v03.stl"
"VertexSupport_CarbonFiber_o1_v03.stl"
"VertexSupport_PEEK_o1_v03.stl"
)
# Set main FCC url
set(FCC_URL "https://fccsw.web.cern.ch/fccsw/filesForSimDigiReco")
set(STL_PATH "IDEA/IDEA_o1_v03/STL_FILES")

# Set the output directory where the file will be placed
set(OUTPUT_DIR "${PROJECT_SOURCE_DIR}/FCCee/IDEA/compact/IDEA_o1_v03/")

foreach(STL_FILE ${STL_FILES})
set(FULL_URL "${FCC_URL}/${STL_PATH}/${STL_FILE}")
message(DEBUG "Downloading file ${FULL_URL}")
set(OUTPUT_FILE "${OUTPUT_DIR}/${STL_FILE}")

if(EXISTS "${OUTPUT_FILE}")
message(STATUS "File ${STL_FILE} already exists. Skipping download.")
else()
# Download the file
file(DOWNLOAD ${FULL_URL} ${OUTPUT_FILE}
SHOW_PROGRESS
STATUS download_status)

list(GET download_status 0 status_code)
if(NOT status_code EQUAL 0)
list(GET download_status 1 error_message)
message(FATAL_ERROR "Failed to download file: ${error_message}")
endif()
endif()

install(
FILES "${OUTPUT_DIR}/${STL_FILE}"
DESTINATION share/k4geo/FCCee/IDEA/compact/IDEA_o1_v03/stl_files
)
endforeach()
endif()
24 changes: 17 additions & 7 deletions FCCee/ALLEGRO/compact/ALLEGRO_o1_v03/DectDimensions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

<constant name="DetID_VXD_Barrel" value=" 1"/>
<constant name="DetID_VXD_Disks" value=" 2"/>
<constant name="DetID_VXD_OuterBarrel" value=" 31"/>

<constant name="DetID_DCH" value=" 3"/>

Expand Down Expand Up @@ -83,10 +84,12 @@
<constant name="VertexAcceptanceLimit" value="0.125*rad"/> <!-- Acceptance limit of vertex detector, used to define number of modules per stave -->
<constant name="VTXIB_r_min_layer" value="13.7*mm"/> <!-- Start of inner vertex detector layers. To keep distance of 1.3 mm from outer beam pipe end (10+0.35+1+0.35 mm = 11.7 mm). This changes to 13.7 mm due to cooling issues (see https://indico.cern.ch/event/1176398/contributions/5207171/attachments/2581129/4451907/Krakow%202023_v23_final.pdf).
Radius can be reduced down to the beam pipe outer radius, changing automatically the number of modules used. -->
<constant name="VTXIB_SEED_Kapton_beampipe_thickness" value="0.1*mm"/> <!-- Thickness of the Kapton layer on the beampipe. Kapton layer is used if Vertex_inner_radius+VTXIB_SEED_Kapton_beampipe_thickness = VTXIB_r_min_layer -->
<constant name="VTXIB_r_min_clearance" value="(VTXIB_r_min_layer-CentralBeamPipe_rmax-BeamPipeWidth)/2."/> <!-- Clearance of vertex detector in radius, used for definiton of vertex DD4hep_SubdetectorAssembly -->
<constant name="VTXIB_r_max_layer" value="34.0*mm"/> <!-- Position of the outermost vertex inner barrel layer -->
<constant name="VTXIB_r_max" value="50.0*mm"/> <!-- End of inner vertex = outer radius of inner vertex tube -->
<constant name="VTXIB_half_length" value="556.2/2.*mm"/> <!-- 278.1*mm, half length of inner vertex tube -->
<constant name="VTXIB_tube_thickness" value="0.2*mm"/> <!-- Thickness of the inner vertex tube needed for air-cooling -->

<constant name="VTXOB_r_min_layer" value="130*mm"/> <!-- R of the innermost layer of the outer vertex -->
<constant name="VTXOB_r_max_layer" value="315*mm"/> <!-- R of the outermost layer of the outer vertex -->
Expand All @@ -103,6 +106,13 @@
<constant name="VTX_r_max" value="VTXOB_r_max_layer+VTXOB_rmax_clearance"/> <!-- Not used, just do indicate the vertex detector envelope limits -->
<constant name="VTX_z_max" value="VTXD_z_max_total"/> <!-- Not used, just do indicate the vertex detector envelope limits -->

<constant name="VTXIB_pitch_z" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXIB_pitch_phi" value="0.020*mm"/>
<constant name="VTXOB_pitch_z" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXOB_pitch_phi" value="0.020*mm"/>
<constant name="VTXD_pitch_r" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXD_pitch_phi" value="0.020*mm"/>

<!-- Drift Chamber parameters -->
<!-- Changing the radius is not enough to resize the detector, please contact the experts-->
<constant name="DCH_inner_cyl_R_total" value=" 349.8 * mm " />
Expand All @@ -123,17 +133,17 @@
<constant name="SiWrD_inner_radius" value="350.0*mm"/> <!-- Can be freely changed. Must be smaller than 'SiWrB_inner_radius' -->
<constant name="SiWrD_outer_radius" value="2040.0*mm"/> <!-- Can be freely changed. Must be larger than 'SiWrD_inner_radius' and SiWrD_outer_radius-SiWrD_inner_radius must be smaller than ~ 2450 mm, otherwise the number of available rings is not large enough to cover the whole area -->
<constant name="SiWrD_services_opening" value="30*mm"/><!-- Can be freely changed. -->
<constant name="SiWr_nLayers" value="2"/> <!-- Can be either 1 or 2 -->
<constant name="SiWr_nLayers" value="1"/> <!-- Can be either 1 or 2 -->
<constant name="SiWrD_zmin" value="3020.0*mm"/> <!-- Can be freely changed, as long as SiWrD_zmax-SiWrD_zmin is >7cm (SiWr_nLayers=2) or >=5cm (SiWr_nLayers=1) -->
<constant name="SiWrD_zmax" value="3090.0*mm"/> <!-- Can be freely changed, as long as SiWrD_zmax-SiWrD_zmin is kept constant or is increased -->
<constant name="SiWrB_pitch_z0" value="1.000*mm"/> <!-- The pitches can be freely changed and can be different for the two layers. These pitches here are just an assumption, impact on physics needs to be studied in detail! -->
<constant name="SiWrB_pitch_z0" value="0.050*mm"/> <!-- The pitches can be freely changed and can be different for the two layers. These pitches here are just an assumption, impact on physics needs to be studied in detail! Currently assuming 50x50 um2 pixels, AC-LGADs or MAPS -->
<constant name="SiWrB_pitch_z1" value="0.050*mm"/>
<constant name="SiWrB_pitch_phi0" value="0.050*mm"/>
<constant name="SiWrB_pitch_phi1" value="1.000*mm"/>
<constant name="SiWrD_pitch_r0" value="1.000*mm"/>
<constant name="SiWrB_pitch_phi1" value="0.050*mm"/>
<constant name="SiWrD_pitch_r0" value="0.050*mm"/>
<constant name="SiWrD_pitch_r1" value="0.050*mm"/>
<constant name="SiWrD_pitch_phi0" value="0.050*mm"/>
<constant name="SiWrD_pitch_phi1" value="1.000*mm"/>
<constant name="SiWrD_pitch_phi1" value="0.050*mm"/>

<!-- LAr ECAL Calo Barrel -->
<constant name="BarECal_id" value="DetID_ECAL_Barrel"/>
Expand Down Expand Up @@ -254,8 +264,8 @@
</limits>
<regions>
<region name="BeampipeRegion"/>
<region name="VTXBRegion"/>
<region name="VTXDRegion"/>
<region name="VertexBarrelRegion"/>
<region name="VertexEndcapRegion"/>
<region name="SiWrBRegion"/>
<region name="SiWrDRegion"/>
</regions>
Expand Down
24 changes: 17 additions & 7 deletions FCCee/ALLEGRO/compact/ALLEGRO_o2_v01/DectDimensions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

<constant name="DetID_VXD_Barrel" value=" 1"/>
<constant name="DetID_VXD_Disks" value=" 2"/>
<constant name="DetID_VXD_OuterBarrel" value=" 31"/>

<constant name="DetID_STT" value=" 3"/>

Expand Down Expand Up @@ -83,10 +84,12 @@
<constant name="VertexAcceptanceLimit" value="0.125*rad"/> <!-- Acceptance limit of vertex detector, used to define number of modules per stave -->
<constant name="VTXIB_r_min_layer" value="13.7*mm"/> <!-- Start of inner vertex detector layers. To keep distance of 1.3 mm from outer beam pipe end (10+0.35+1+0.35 mm = 11.7 mm). This changes to 13.7 mm due to cooling issues (see https://indico.cern.ch/event/1176398/contributions/5207171/attachments/2581129/4451907/Krakow%202023_v23_final.pdf).
Radius can be reduced down to the beam pipe outer radius, changing automatically the number of modules used. -->
<constant name="VTXIB_SEED_Kapton_beampipe_thickness" value="0.1*mm"/> <!-- Thickness of the Kapton layer on the beampipe. Kapton layer is used if Vertex_inner_radius+VTXIB_SEED_Kapton_beampipe_thickness = VTXIB_r_min_layer -->
<constant name="VTXIB_r_min_clearance" value="(VTXIB_r_min_layer-CentralBeamPipe_rmax-BeamPipeWidth)/2."/> <!-- Clearance of vertex detector in radius, used for definiton of vertex DD4hep_SubdetectorAssembly -->
<constant name="VTXIB_r_max_layer" value="34.0*mm"/> <!-- Position of the outermost vertex inner barrel layer -->
<constant name="VTXIB_r_max" value="50.0*mm"/> <!-- End of inner vertex = outer radius of inner vertex tube -->
<constant name="VTXIB_half_length" value="556.2/2.*mm"/> <!-- 278.1*mm, half length of inner vertex tube -->
<constant name="VTXIB_tube_thickness" value="0.2*mm"/> <!-- Thickness of the inner vertex tube needed for air-cooling -->

<constant name="VTXOB_r_min_layer" value="130*mm"/> <!-- R of the innermost layer of the outer vertex -->
<constant name="VTXOB_r_max_layer" value="315*mm"/> <!-- R of the outermost layer of the outer vertex -->
Expand All @@ -103,6 +106,13 @@
<constant name="VTX_r_max" value="VTXOB_r_max_layer+VTXOB_rmax_clearance"/> <!-- Not used, just do indicate the vertex detector envelope limits -->
<constant name="VTX_z_max" value="VTXD_z_max_total"/> <!-- Not used, just do indicate the vertex detector envelope limits -->

<constant name="VTXIB_pitch_z" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXIB_pitch_phi" value="0.020*mm"/>
<constant name="VTXOB_pitch_z" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXOB_pitch_phi" value="0.020*mm"/>
<constant name="VTXD_pitch_r" value="0.020*mm"/> <!-- Assume 20x20 µm pitch, DRD3 OCTOPUS-like sensors -->
<constant name="VTXD_pitch_phi" value="0.020*mm"/>

<!-- Straw tracker parameters -->
<constant name="STT_inner_cyl_R_total" value=" 349.8 * mm " />
<constant name="STT_outer_cyl_R_total" value=" 2015 * mm " />
Expand All @@ -115,17 +125,17 @@
<constant name="SiWrD_inner_radius" value="350.0*mm"/> <!-- Can be freely changed. Must be smaller than 'SiWrB_inner_radius' -->
<constant name="SiWrD_outer_radius" value="2040.0*mm"/> <!-- Can be freely changed. Must be larger than 'SiWrD_inner_radius' and SiWrD_outer_radius-SiWrD_inner_radius must be smaller than ~ 2450 mm, otherwise the number of available rings is not large enough to cover the whole area -->
<constant name="SiWrD_services_opening" value="30*mm"/><!-- Can be freely changed. -->
<constant name="SiWr_nLayers" value="2"/> <!-- Can be either 1 or 2 -->
<constant name="SiWr_nLayers" value="1"/> <!-- Can be either 1 or 2 -->
<constant name="SiWrD_zmin" value="2930.0*mm"/> <!-- Can be freely changed, as long as SiWrD_zmax-SiWrD_zmin is >7cm (SiWr_nLayers=2) or >=5cm (SiWr_nLayers=1) -->
<constant name="SiWrD_zmax" value="3000.0*mm"/> <!-- Can be freely changed, as long as SiWrD_zmax-SiWrD_zmin is kept constant or is increased -->
<constant name="SiWrB_pitch_z0" value="1.000*mm"/> <!-- The pitches can be freely changed and can be different for the two layers. These pitches here are just an assumption, impact on physics needs to be studied in detail! -->
<constant name="SiWrB_pitch_z0" value="0.050*mm"/> <!-- The pitches can be freely changed and can be different for the two layers. These pitches here are just an assumption, impact on physics needs to be studied in detail! Currently assuming 50x50 um2 pixels, AC-LGADs or MAPS -->
<constant name="SiWrB_pitch_z1" value="0.050*mm"/>
<constant name="SiWrB_pitch_phi0" value="0.050*mm"/>
<constant name="SiWrB_pitch_phi1" value="1.000*mm"/>
<constant name="SiWrD_pitch_r0" value="1.000*mm"/>
<constant name="SiWrB_pitch_phi1" value="0.050*mm"/>
<constant name="SiWrD_pitch_r0" value="0.050*mm"/>
<constant name="SiWrD_pitch_r1" value="0.050*mm"/>
<constant name="SiWrD_pitch_phi0" value="0.050*mm"/>
<constant name="SiWrD_pitch_phi1" value="1.000*mm"/>
<constant name="SiWrD_pitch_phi1" value="0.050*mm"/>

<!-- LAr ECAL Calo Barrel -->
<constant name="BarECal_id" value="DetID_ECAL_Barrel"/>
Expand Down Expand Up @@ -246,8 +256,8 @@
</limits>
<regions>
<region name="BeampipeRegion"/>
<region name="VTXBRegion"/>
<region name="VTXDRegion"/>
<region name="VertexBarrelRegion"/>
<region name="VertexEndcapRegion"/>
<region name="SiWrBRegion"/>
<region name="SiWrDRegion"/>
</regions>
Expand Down
2 changes: 2 additions & 0 deletions FCCee/ALLEGRO/compact/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ ALLEGRO_o1_v03:
- For the muon tagger, switched from eta-phi to theta-phi segmentation. Outer R set to 5m as in initial conceptual design (to be replaced in the future by more realistic detector).
- February 2026: The vertex detector and silicon wrapper are now taken from IDEA_o1_v04.
- August 2026: The HCal segmentation logic was updated to guarantee at the same time more flexibility for v04 and the same functionality as before in v03. No impact on the actual resulting segmentation here.
- August 2026: ALLEGRO no longer has the same vertex detector parameters as IDEA. Pixel pitch is changed to 20x20 µm2 everywhere. For the silicon wrapper, conversely to IDEA, only one layer is used. The pitch is changed to 50x50 µm2. The inner vertex detector can be changed to use the ultra-light or FCC-SEED inner vertex instead by modifying FCCee/IDEA/compact/IDEA_o1_v04/VertexComplete_o1_v04.xml accordingly.

ALLEGRO_o1_v04
- Update on the HCal geometry, to fix some minor positioning bugs and make the detector structure more realistic. All other subdetectors are currently taken from ALLEGRO_o1_v03.
Expand All @@ -31,3 +32,4 @@ ALLEGRO_o2_v01:
- This version of ALLEGRO allows for direct comparison between the drift chamber and the straw tracker, as compared to o1_v03 the only changes are (i) the swap of drift chamber and straw and (ii) elongating the tracking volume, including the silicon wrapper.
- The elongated wrapper is +660mm longer in both the positive and negative z directions with a 60mm buffer between the ends of the straw and the silicon wrapper endcap, to be filled later with straw RO/HV and support.
- February 2026: The vertex detector and silicon wrapper are now taken from IDEA_o1_v04.
- August 2026: ALLEGRO no longer has the same vertex detector parameters as IDEA. Pixel pitch is changed to 20x20 µm2 everywhere. For the silicon wrapper, conversely to IDEA, only one layer is used. The pitch is changed to 50x50 µm2. The inner vertex detector can be changed to use the ultra-light or FCC-SEED inner vertex instead by modifying FCCee/IDEA/compact/IDEA_o1_v04/VertexComplete_o1_v04.xml accordingly.
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<lccdd>

<detectors>
<comment>Beampipe Instrumentation</comment>

<detector name="CompSol" type="DD4hep_Mask_o1_v01" insideTrackingVolume="true" vis="CompSolVis">
<parameter crossingangle="CrossingAngle" />
<envelope vis="CoilVis">
<shape type="Assembly"/>
</envelope>
<section type="Center" start="CompSol_min_z" end="QD0_min_z" rMin1="103*mm" rMin2="180*mm" rMax1="123*mm" rMax2="200*mm" material="SolenoidMixture" name="CompSol" />
</detector>

<detector name="ScreenSol" type="DD4hep_Mask_o1_v01" insideTrackingVolume="true" vis="ScreenSolVis">
<parameter crossingangle="CrossingAngle" />
<envelope vis="CoilVis">
<shape type="Assembly"/>
</envelope>

<section type="Center" start="QD0_min_z" end="QD0_min_z+5*cm" rMin1="SeparatedBeamPipe_rmax+1*mm+5*cm" rMin2="SeparatedBeamPipe_rmax+1*mm+5*cm" rMax1="200*mm" rMax2="200*mm" material="SolenoidMixture" name="CompSol" />

<section type="Center" start="QD0_min_z+5*cm" end="QD0_max_z" rMin1="180*mm" rMin2="180*mm" rMax1="200*mm" rMax2="200*mm" material="SolenoidMixture" name="CompSol" />
</detector>

</detectors>
</lccdd>
Loading