Newer
Older
<?xml version="1.0" encoding="UTF-8"?>
<lccdd>
<define>
<!-- vessel geometry -->
<constant name="PFRICH_Length" value="BackwardRICHRegion_length"/> <!-- vessel z-length -->
<constant name="PFRICH_zmin" value="-BackwardRICHRegion_zmin"/> <!-- vessel front -->
<constant name="PFRICH_zmax" value="PFRICH_zmin - PFRICH_Length"/> <!-- vessel back -->
<constant name="PFRICH_rmin0" value="BackwardPIDRegion_tan * BackwardRICHRegion_zmin"/> <!-- bore radius at vessel frontplane -->
<constant name="PFRICH_rmin1" value="BackwardPIDRegion_tan * (BackwardRICHRegion_zmin + BackwardRICHRegion_length)"/> <!-- bore radius at vessel backplane -->
<constant name="PFRICH_rmax" value="BackwardPIDRegion_rmax - 2*cm"/> <!-- vessel backplane radius -->
<constant name="PFRICH_wall_thickness" value="0.5*cm"/> <!-- thickness of radial walls -->
<constant name="PFRICH_window_thickness" value="0.1*cm"/> <!-- thickness of entrance and exit walls -->
<!-- additional parameters -->
<constant name="PFRICH_aerogel_thickness" value="3.0*cm"/> <!-- aerogel thickness -->
<constant name="PFRICH_sensor_active_size_default" value="24.0*mm"/> <!-- sensor side length (effective area) -->
<constant name="PFRICH_sensor_full_size_default" value="25.8*mm"/> <!-- sensor side length (full size, with enclosure) -->
<!-- lores values are used for global vizualizations _only_ -->
<constant name="PFRICH_sensor_active_size_lores" value="PFRICH_sensor_active_size_default * 4"/>
<constant name="PFRICH_sensor_full_size_lores" value="PFRICH_sensor_full_size_default * 4"/>
<!-- actual values used by the parametrization -->
<constant name="PFRICH_sensor_active_size" value="PFRICH_sensor_active_size_default"/>
<constant name="PFRICH_sensor_full_size" value="PFRICH_sensor_full_size_default"/>
<constant name="PFRICH_sensor_thickness" value="1.5*mm"/> <!-- sensor thickness -->
<constant name="PFRICH_sensor_dist" value="40*cm"/> <!-- distance between aerogel exit plane and sensor entrance plane -->
<constant name="PFRICH_num_px" value="8"/> <!-- number of pixels along one side of the sensor -->
<!-- debugging switches -->
<comment>
- `PFRICH_debug_optics`: 1 = all components become vacuum; test opticalphotons from IP
2 = all components become vacuum, except for `gasvol`, test charged particles from IP
0 = off
</comment>
<constant name="PFRICH_debug_optics" value="0"/>
</define>
<detectors>
<!-- /detectors/detector -->
<documentation level="10">
</documentation>
<detector
id="BackwardRICH_ID"
name="PFRICH"
type="athena_PFRICH"
readout="PFRICHHits"
gas="C4F10_PFRICH"
material="Aluminum"
vis_vessel="DRICH_vessel_vis"
vis_gas="DRICH_gas_vis"
>
<!-- /detectors/detector/dimensions -->
<documentation level="10">
#### Vessel
- dimensions:
- `zmin`: z-position of vessel front plane
- `length`: overall z-length of the full vessel
- `rmin0` and `rmin1`: bore radius at front plane and back plane, respectively
- `rmax0` and `rmax1`: outer radius of vessel, at front plane and back plane, respectively
- `wall_thickness`: thickness of radial walls
- `window_thickness`: thickness of entrance and exit disks
</documentation>
<dimensions
zmin="PFRICH_zmin"
zmax="PFRICH_zmax"
length="PFRICH_Length"
rmin0="PFRICH_rmin0"
rmin1="PFRICH_rmin1"
rmax0="PFRICH_rmax"
rmax1="PFRICH_rmax"
wall_thickness="PFRICH_wall_thickness"
window_thickness="PFRICH_window_thickness"
/>
<!-- /detectors/detector/radiator -->
<documentation level="10">
#### Radiator
- radiator is defined in a wedge of azimuthal space, composed of aerogel and a
filter; the filter is applied to the back of the aerogel, so that it separates
the aerogel and gas radiators
- dimensions:
- `frontplane`: front of the aerogel, w.r.t. front plane of the vessel envelope
- `rmin` and `rmax`: inner and outer radius (at the front plane; radial bounds are conical)
- `phiw`: azimuthal width of wedge
- `thickness`: radiator thickness, defined separately for aerogel and filter
- `pitch`: controls the angle of the radiator (0=vertical)
</documentation>
<radiator
frontplane="-PFRICH_window_thickness"
rmin="PFRICH_rmin0 + PFRICH_wall_thickness + 0.2*cm"
rmax="(PFRICH_rmax/PFRICH_zmax)*PFRICH_zmin + 8.0*cm"
phiw="60*degree"
pitch="0*degree"
>
<aerogel
material="Aerogel_DRICH"
vis="DRICH_aerogel_vis"
thickness="PFRICH_aerogel_thickness"
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/>
<filter
material="Acrylic_DRICH"
vis="DRICH_filter_vis"
thickness="0.3*mm"
/>
</radiator>
<!-- /detectors/detector/sensors -->
<documentation level="10">
#### Sensors
</documentation>
<sensors>
<!-- /detectors/detector/sensors/module -->
<documentation level="10">
##### Sensor module
- based on Hamamatsu S13361-3050AE-08
- effective area: 24.0 x 24.0 mm
- enclosure size: 25.8 x 25.8 mm
- pixel size: 3x3 mm (8x8 matrix)
- thickness: 1.5 mm
- dimensions:
- `side`: side length of the square module
- `thickness`: thickness of the sensor module
- `gap`: provides room between the squares, to help prevent them from overlapping
- note: the values of `side` and `gap` will determine how many sensors there are, since the
sensor placement algorithm will try to place as many as it can in the specified region
</documentation>
<module
material="Silicon"
surface="SensorSurface_DRICH"
vis="PFRICH_sensor_vis"
side="PFRICH_sensor_active_size"
thickness="PFRICH_sensor_thickness"
gap="0.5*(PFRICH_sensor_full_size-PFRICH_sensor_active_size) + 0.5*mm"
/>
<!-- /detectors/detector/sensors/plane -->
<documentation level="10">
##### Sensor plane
- sensors will be placed on a plane
- plane dimensions:
- `sensordist`: distance between sensor plane active surface (e.g., photocathode) and aerogel backplane
- `rmin`: minimum radial position of a sensor's centroid
- `rmax`: maximum radial position of a sensor's centroid
</documentation>
<plane
sensordist="PFRICH_sensor_dist"
rmin="PFRICH_rmin1 + 2*cm"
rmax="PFRICH_rmax - 4*cm"
<comment>
Material should be equivallent with 3x0.5cm Al, spread over the entire available distance.
This was confirmed by Silvia.
</comment>
<component name="aluminum" thickness="5*mm" vis="RICHServiceVis" material="Aluminum"/>
<component name="air" thickness="40*mm" vis="InvisibleNoDaughters" material="Air"/>
<component name="aluminum" thickness="5*mm" vis="RICHServiceVis" material="Aluminum"/>
<component name="air" thickness="40*mm" vis="InvisibleNoDaughters" material="Air"/>
<component name="aluminum" thickness="5*mm" vis="RICHServiceVis" material="Aluminum"/>
</sensors>
</detector>
</detectors>
<documentation level="10">
#### Readout
- segmentation: square matrix of pixels
- `grid_size_x,y`: size of each sensor, but note we must divide sensor size
by 1 less than the number of pixels, to account for fenceposting
- `offset_x,y`: specified such that the `x` and `y` indicators are unsigned
- indicators and `cellID` bits:
| indicator | offset | length |
|-----------|--------|--------|
| sensor | 8 | 12 |
| x pixel | 20 | 16 |
| y pixel | 36 | 16 |
</documentation>
<readouts>
<segmentation
type="CartesianGridXY"
grid_size_x="PFRICH_sensor_active_size/(PFRICH_num_px-1)"
grid_size_y="PFRICH_sensor_active_size/(PFRICH_num_px-1)"
offset_x="-PFRICH_sensor_active_size/2.0"
offset_y="-PFRICH_sensor_active_size/2.0"
/>
<id>system:8,module:12,x:20:16,y:16</id>
</readout>
</readouts>
</lccdd>