Skip to content

Commit

Permalink
Add the ARC detector (#271)
Browse files Browse the repository at this point in the history
  • Loading branch information
atolosadelgado authored Jun 29, 2023
1 parent de5d8f3 commit ceec055
Show file tree
Hide file tree
Showing 15 changed files with 2,932 additions and 0 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ file(GLOB sources
./detector/CaloTB/*.cpp
./FCalTB/setup/*.cpp
./plugins/LinearSortingPolicy.cpp
./detector/PID/ARC_geo_o1_v01.cpp
)

file(GLOB G4sources
Expand Down
151 changes: 151 additions & 0 deletions FCCee/CLD/compact/CLD_o3_v01/ARC_o1_v01.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
<lccdd >

<includes>
<gdmlFile ref="materials_arc_o1_v01.xml"/>
<gdmlFile ref="RadiatorCell_FinalOptimisation_o1_v01.xml"/>
</includes>

<display>
<vis name="arc_vessel_vis" r="236/256" g="237/256" b="232/256" alpha="1.00" showDaughters="true" visible="false" />
<vis name="arc_gas_vis" r="227/256" g="239/256" b="217/256" alpha="0.3" showDaughters="true" visible="true" />
<vis name="arc_aerogel_vis" r="244/256" g="177/256" b="132/256" alpha="0.5" showDaughters="true" visible="true" />
<vis name="arc_cooling_vis" r="254/256" g="230/256" b="151/256" alpha="0.5" showDaughters="true" visible="true" />
<vis name="arc_sensor_vis" r="255/256" g="0/256" b="0/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis" r="255/256" g="230/256" b="153/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis1" r="128/256" g="230/256" b="153/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis2" r="128/256" g="128/256" b="153/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis3" r="128/256" g="128/256" b="256/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis4" r="000/256" g="128/256" b="256/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis5" r="000/256" g="000/256" b="256/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis6" r="256/256" g="000/256" b="256/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis7" r="256/256" g="128/256" b="256/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis8" r="256/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis9" r="256/256" g="128/256" b="000/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis10" r="128/256" g="256/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis11" r="128/256" g="256/256" b="000/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis12" r="000/256" g="256/256" b="000/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis13" r="000/256" g="256/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis14" r="000/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis15" r="000/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis16" r="000/256" g="128/256" b="055/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis17" r="000/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis18" r="055/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis19" r="055/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis20" r="055/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_mirror_vis21" r="055/256" g="128/256" b="128/256" alpha="1.0" showDaughters="true" visible="true" />
<vis name="arc_no_vis" showDaughters="true" visible="false" />
<vis name="arc_envelope_vis" r="0/256" g="96/256" b="156/256" alpha="0.3" showDaughters="true" visible="true" />
<vis name="arc_vessel_bulk_vis" r="236/256" g="000/256" b="000/256" alpha="1.00" showDaughters="true" visible="false" />
</display>

<define>
<!-- ARC properties -->
<constant name="ARC_VESSEL_WALL_THICKNESS" value="1.0*cm" />
<constant name="ARC_MIRROR_THICKNESS" value="0.2*cm" />
<constant name="ARC_COOLING_THICKNESS" value="0.2*cm" />
<constant name="ARC_AEROGEL_THICKNESS" value="1.0*cm" />
<!-- ARC sensor properties -->
<constant name="ARC_SENSOR_THICKNESS" value="0.2*cm" />
<constant name="ARC_SENSOR_X" value="8.0*cm" />
<constant name="ARC_SENSOR_Y" value="8.0*cm" />
<constant name="ARC_SENSOR_NStripsX" value="100" />
<constant name="ARC_SENSOR_NStripsY" value="100" />
<constant name="ARC_SENSOR_pitchX" value="0.08*cm" />
<constant name="ARC_SENSOR_pitchY" value="0.08*cm" />
</define>

<detectors>
<detector
id="1"
name="ARCBARREL"
type="ARCBARREL_o1_v01_T"
readout="ARC_HITS"
>
<!-- /detectors/detector/vessel -->
<vessel
skinMaterial="CarbonFibStr"
skin_vis="arc_vessel_vis"
bulk_material="Aerogel_vessel_foam"
bulk_vis="arc_vessel_bulk_vis"
bulk_skin_ratio = "0.8"
>
</vessel>
<!-- /detectors/detector/radiatorgas -->
<radiatorgas
material="C4F10_PFRICH"
vis="arc_gas_vis"
>
</radiatorgas>
<!-- /detectors/detector/sensors -->
<sensors
material="SiliconOptical"
vis="arc_sensor_vis"
sensor_side_Z="ARC_SENSOR_Y"
sensor_side_Phi="ARC_SENSOR_X"
thickness="ARC_SENSOR_THICKNESS"
>
</sensors>
<!-- /detectors/detector/mirror -->
<mirror
material="CarbonFibStr"
thickness="ARC_MIRROR_THICKNESS"
surface="ARC_MirrorSurface"
>
</mirror>
</detector>
<detector
id="2"
name="ARCENDCAP"
type="ARCENDCAP_o1_v01_T"
readout="ARC_HITS"
zpos = "ARC_ENDCAP_ZPOS"
>
<!-- /detectors/detector/vessel -->
<vessel
skinMaterial="CarbonFibStr"
skin_vis="arc_vessel_vis"
bulk_material="Aerogel_vessel_foam"
bulk_vis="arc_vessel_bulk_vis"
bulk_skin_ratio = "0.8"
>
</vessel>
<!-- /detectors/detector/radiatorgas -->
<radiatorgas
material="C4F10_PFRICH"
vis="arc_gas_vis"
>
</radiatorgas>

<!-- /detectors/detector/sensors -->
<sensors
material="SiliconOptical"
vis="arc_sensor_vis"
sensor_side_Y="ARC_SENSOR_Y"
sensor_side_X="ARC_SENSOR_X"
thickness="ARC_SENSOR_THICKNESS"
>
</sensors>
<!-- /detectors/detector/mirror -->
<mirror
material="CarbonFibStr"
thickness="ARC_MIRROR_THICKNESS"
surface="ARC_MirrorSurface"
>
</mirror>
</detector>
</detectors>

<readouts>
<readout name="ARC_HITS">
<segmentation
type="CartesianGridXY"
grid_size_x="ARC_SENSOR_pitchX"
grid_size_y="ARC_SENSOR_pitchY"
offset_x="-0.5*(ARC_SENSOR_NStripsX-1)*ARC_SENSOR_pitchX"
offset_y="-0.5*(ARC_SENSOR_NStripsY-1)*ARC_SENSOR_pitchY"
/>
<id>system:5,barrel:3,cellnumber:24,x:32:-16,y:-16</id>
</readout>
</readouts>

</lccdd>
50 changes: 50 additions & 0 deletions FCCee/CLD/compact/CLD_o3_v01/CLD_o3_v01.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<lccdd >

<info name="CLD"
title="CLD"
author="A. Tolosa Delgado, Martin Tat, Roger Forty, Guy Wilkinson"
url="https://indico.cern.ch/event/1231098/"
status="development"
version="o3, v01">
<comment>The compact format of the CLD+ARC detector</comment>
</info>

<includes>
<gdmlFile ref="elements.xml"/>
<gdmlFile ref="materials.xml"/>
</includes>

<define>
<constant name="world_side" value="10*m" />
<constant name="world_x" value="world_side"/>
<constant name="world_y" value="world_side"/>
<constant name="world_z" value="world_side"/>

<!--
WARNING:
The following variables named as ARC_* are fixed by design.
If changed, reoptimization of sensor/mirror geometry is needed
-->
<!-- ARC ENDCAP SIZE -->
<constant name="ARC_ENDCAP_R_INNER" value=" 25 * cm" />
<constant name="ARC_ENDCAP_R_OUTER" value="210 * cm" />
<constant name="ARC_ENDCAP_LENGTH" value=" 20 * cm" />

<!-- ARC BARREL SIZE -->
<constant name="ARC_BARREL_R_INNER" value="190 * cm" />
<constant name="ARC_BARREL_R_OUTER" value="210 * cm" />
<constant name="ARC_BARREL_LENGTH" value="440 * cm" />
<!-- ARC_ENDCAP_ZPOS is the middle of the endcap
the endcap spans over ARC_ENDCAP_ZPOS +- ARC_ENDCAP_LENGTH/2
WARNING:
if ARC_ENDCAP_ZPOS < (ARC_BARREL_LENGTH+ARC_ENDCAP_LENGTH)/2 + VESSEL_WALL_THICKNESS
The endcap will overlap with the barrel.
-->
<constant name="ARC_ENDCAP_ZPOS" value="235*cm" />
</define>


<include ref="ARC_o1_v01.xml"/>


</lccdd>
38 changes: 38 additions & 0 deletions FCCee/CLD/compact/CLD_o3_v01/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
CLD_o3_v01 Detector
======================

This option (o3) of CLD includes the Array of RICH Cells (ARC) subdetector. The ARC is placed after the tracker and before the calorimeters.

# PID assisted by ARC

Array of RICH Cells (ARC) is a novel RICH detector concept. Detailed description of it can be found in [this dedicated README file](../../../detector/PID/README.md).

The identification of the particle crossing the ARC detector is based on the Cherenkov light produced by two components: a radiator gas, and a layer of aerogel.

Similar systems have been used in the past, e.g. at the LHCb experiment. Details of the setup and analysis of the data can be found [here](https://s3.cern.ch/inspire-prod-files-9/92927eb16166b155de56b61339f05521).



## ARC detector compact files

There are 4 compact `.xml` files that are needed for building the detector.

1. `RadiatorCell_FinalOptimisation_o1_v01.xml`. Contains the parameters that determine the position of mirrors and sensors inside the cells. See the *REMINDER* below.

2. `materials_arc_o1_v01.xml`. Contains the description of the different materials needed in the ARC, including their optical properties if needed and the optical surfaces.

3. `elements.xml`. Contains the whole periodic table of the elements. This file is a copy of the one provided by DD4hep.

4. `ARC_o1_v01.xml`. Contains the detector section which builds the detector elements `ARCENDCAP_o1_v01_T` and `ARCBARREL_o1_v01_T`, visualization attributes, the segmentation and readout of the sensors, and specifications to build the detector:

* Material of each component: vessel, radiator gas, light sensor, aerogel layer, cooling plate

* Total size of the light sensor, now implemented as rectangular (X length can be different from Y)

* Thickness of mirror and sensor

* Z position of endcap: The variable `ARC_ENDCAP_ZPOS` defines the middle point of the endcap along the Z axis. Therefore, the endcap spans over `ARC_ENDCAP_ZPOS +- ARC_ENDCAP_LENGTH/2` along the Z axis.

* Readout and segmentation of the light sensors. The readout includes the definition of the Volume ID bit-field. Barrel field corresponds to barrel (0) or endcaps (+/-1), cellnumber fields correspond to a number which is given consecutively as the cells are placed.

*REMINDER*: the cell parameters defined in the file `RadiatorCell_FinalOptimization.xml` were optimized by a dedicated ray-tracing dedicated software for the initial geometry of the ARC detector (radial depth of 20 cm, outer radius of 2.1 m and a length of 4.4 m). If geometry of the ARC changes, these cell parameters should be optimized again.
Loading

0 comments on commit ceec055

Please sign in to comment.