Back to home page

EIC code displayed by LXR

 
 

    


Warning, /epic/compact/pid/drich.xml is written in an unsupported language. File is not indexed.

0001 <!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
0002 <!-- Copyright (C) 2022, 2023 Christopher Dilks, Chandradoy Chatterjee, Junhuai Xu -->
0003 
0004 <lccdd>
0005 
0006 <define>
0007 <!-- vessel (=snout+tank) geometry -->
0008 <constant name="DRICH_length"             value="ForwardRICHRegion_length"/>  <!-- overall vessel length -->
0009 <constant name="DRICH_zmin"               value="ForwardRICHRegion_zmin + 3.*cm"/> <!-- 3cm spacing since https://indico.bnl.gov/event/22417/ -->
0010 <constant name="DRICH_zmax"               value="DRICH_zmin + DRICH_length"/>
0011 <constant name="DRICH_rmin0"              value="DRICH_zmin * ForwardRICHRegion_tan1"/>  <!-- bore radius at dRICH entrance -->
0012 <constant name="DRICH_rmin1"              value="DRICH_zmax * ForwardRICHRegion_tan2"/>  <!-- bore radius at dRICH exit -->
0013 <constant name="DRICH_bore_slope"         value="(DRICH_rmin1 - DRICH_rmin0) / DRICH_length"/> <!-- slope of bore radius -->
0014 <constant name="DRICH_wall_thickness"     value="1.0*cm"/>  <!-- thickness of radial walls -->
0015 <constant name="DRICH_window_thickness"   value="0.3*cm"/>  <!-- thickness of entrance and exit walls -->
0016 <constant name="DRICH_num_sectors"        value="6"/>  <!-- number of azimuthal sectors -->
0017 <!-- snout geometry: cone with front radius rmax0 and back radius of rmax1 -->
0018 <constant name="DRICH_rmax0"              value="90.0*cm"/>
0019 <constant name="DRICH_snout_length"       value="20.0*cm"/>
0020 <constant name="DRICH_rmax1"              value="DRICH_rmax0 + DRICH_snout_length * (tan(0.200+atan(DRICH_rmax0/DRICH_zmin))) "/>  <!--extra 0.200 takes into account the saturated cone of light from aerogel-->
0021 <!-- tank geometry: cylinder, holding the majority of detector components -->
0022 <constant name="DRICH_rmax2"              value="ForwardPIDRegion_rmax"/>  <!-- cylinder radius -->
0023 <!-- sensor boxes: extrusions of the tank, to hold the sensors and their services -->
0024 <constant name="DRICH_sensorbox_length"   value="50.0*cm"/>  <!-- z-length of the extrusion -->
0025 <constant name="DRICH_sensorbox_rmin"     value="108*cm"/>  <!-- lower radial limit of the extrusion -->
0026 <constant name="DRICH_sensorbox_rmax"     value="DRICH_rmax2 + 5*cm"/>  <!-- upper radial limit of the extrusion -->
0027 <constant name="DRICH_sensorbox_dphi"     value="42*degree"/>  <!-- azimuthal width of the extrusion -->
0028 <!-- aerogel+filter geometry -->
0029 <constant name="DRICH_aerogel_thickness"  value="4.0*cm"/>  <!-- aerogel thickness -->
0030 <constant name="DRICH_airgap_thickness"   value="0.01*mm"/> <!-- air gap between aerogel and filter -->
0031 <constant name="DRICH_filter_thickness"   value="3.0*mm"/>  <!-- filter thickness -->
0032 <!-- sensor geometry; model = S13361-3050NE-08 SiPM -->
0033 <constant name="DRICH_pixel_gap"              value="0.2*mm"/> <!-- size of gaps between adjacent pixels AND gaps between edge pixels and sensor side -->
0034 <constant name="DRICH_sensor_resin_size"      value="25.8*mm"/> <!-- full length of the sensor+resin side -->
0035 <constant name="DRICH_sensor_size"            value="DRICH_sensor_resin_size - DRICH_pixel_gap"/> <!-- side length of photosensitive surface (to be segmented) -->
0036 <constant name="DRICH_sensor_thickness"       value="0.1*mm"/> <!-- photosensitive surface thickness -->
0037 <constant name="DRICH_sensor_resin_thickness" value="1.35*mm"/> <!-- resin thickness -->
0038 <constant name="DRICH_num_px"                 value="8"/> <!-- number of pixels along one side of the sensor -->
0039 <constant name="DRICH_pixel_size"             value="3.0*mm"/> <!-- a single SiPM pixel size -->
0040 <constant name="DRICH_pixel_pitch"            value="DRICH_pixel_size + DRICH_pixel_gap"/> <!-- center-to-center distance between SiPMs in a 8x8 panel -->
0041 <!-- photodetector unit (PDU) geometry -->
0042 <constant name="DRICH_pdu_num_sensors" value="2"/> <!-- number of sensors along one side of a PDU -->
0043 <constant name="DRICH_pdu_sensor_gap"  value="0.2*mm"/> <!-- gap between adjacent sensors -->
0044 <constant name="DRICH_pdu_gap"         value="3.0*mm"/> <!-- gap between adjacent PDUs -->
0045 <!-- settings and switches -->
0046 <comment>
0047 - `DRICH_debug_optics`:    1 = all components become vacuum, except for mirrors; test opticalphotons from IP
0048                            2 = all components become vacuum, except for mirrors and `gasvol`, test charged particles from IP
0049                            3 = all components become vacuum, except for mirrors and sensors, test reflected trajectories' hits
0050                            0 = off
0051 - `DRICH_debug_sector`:    1 = only include one sector (will be set automatically when `DRICH_debug_optics>0`)
0052 - `DRICH_debug_mirror`:    1 = draw full mirror shape for single sector; 0 = off
0053 - `DRICH_debug_sensors`:   1 = draw full sensor sphere for a single sector; 0 = off
0054 </comment>
0055 <constant name="DRICH_debug_optics"    value="0"/>
0056 <constant name="DRICH_debug_sector"    value="0"/>
0057 <constant name="DRICH_debug_mirror"    value="0"/>
0058 <constant name="DRICH_debug_sensors"   value="0"/>
0059 </define>
0060 
0061 
0062 <detectors>
0063 
0064 
0065 <!-- /detectors/detector -->
0066 <documentation level="10">
0067 ### dRICH: ***d***ual ***R***ing ***I***maging ***Ch***erenkov detector
0068 </documentation>
0069 <detector
0070   id="ForwardRICH_ID"
0071   name="DRICH"
0072   type="epic_DRICH"
0073   readout="DRICHHits"
0074   gas="C2F6_DRICH"
0075   material="Aluminum"
0076   vis_vessel="DRICH_vessel_vis"
0077   vis_gas="DRICH_gas_vis"
0078   >
0079 
0080 
0081 <!-- /detectors/detector/dimensions -->
0082 <documentation level="10">
0083 #### Vessel
0084 - the dRICH vessel is composed of two parts:
0085   - tank: cylindrical region containing most of the detector components
0086   - snout: conical region at the front of the vessel, containing the aerogel
0087 - dimensions:
0088   - `zmin`: z-position of vessel front plane
0089   - `length`: overall z-length of the full vessel
0090   - `snout_length`: length of cone-shaped snout region, housing aerogel
0091   - `rmin0` and `rmin1`: bore radius at front plane and back plane, respectively
0092   - `rmax0` and `rmax1`: outer radius of snout at front plane and snout-back (tank-front) plane, respectively
0093   - `rmax2`: outer radius of tank, the main cylindrical vessel volume
0094   - `nsectors`: number of azimuthal sectors
0095   - `wall_thickness`: thickness of radial walls
0096   - `window_thickness`: thickness of entrance and exit disks
0097 </documentation>
0098 <dimensions
0099   zmin="DRICH_zmin"
0100   length="DRICH_length"
0101   snout_length="DRICH_snout_length"
0102   rmin0="DRICH_rmin0"
0103   rmin1="DRICH_rmin1"
0104   rmax0="DRICH_rmax0"
0105   rmax1="DRICH_rmax1"
0106   rmax2="DRICH_rmax2"
0107   nsectors="DRICH_num_sectors"
0108   wall_thickness="DRICH_wall_thickness"
0109   window_thickness="DRICH_window_thickness"
0110   />
0111 
0112 
0113 <!-- /detectors/detector/radiator -->
0114 <documentation level="10">
0115 #### Radiator
0116 - radiator is defined in a wedge of azimuthal space, composed of aerogel and a
0117   filter; the filter is applied to the back of the aerogel, so that it separates
0118   the aerogel and gas radiators; an airgap is defined between the aerogel and filter
0119 - dimensions:
0120   - `frontplane`: front of the aerogel, w.r.t. front plane of the vessel envelope
0121   - `rmin` and `rmax`: inner and outer radius (at the front plane; radial bounds are conical)
0122   - `thickness`: radiator thickness, defined separately for aerogel and filter
0123   - `pitch`: controls the angle of the radiator (0=vertical)
0124 </documentation>
0125 <radiator
0126   rmin="DRICH_rmin0 + DRICH_wall_thickness + 0.2*cm"
0127   rmax="DRICH_rmax0 - DRICH_wall_thickness - 0.2*cm"
0128   frontplane="DRICH_window_thickness"
0129   pitch="0*degree"
0130   >
0131   <aerogel
0132     material="Aerogel_DRICH"
0133     vis="DRICH_aerogel_vis"
0134     thickness="DRICH_aerogel_thickness"
0135     />
0136   <airgap
0137     material="AirOptical"
0138     vis="DRICH_gas_vis"
0139     thickness="DRICH_airgap_thickness"
0140     />
0141   <filter
0142     material="Acrylic_DRICH"
0143     vis="DRICH_filter_vis"
0144     thickness="DRICH_filter_thickness"
0145     />
0146 </radiator>
0147 
0148 
0149 <!-- /detectors/detector/mirror -->
0150 <documentation level="10">
0151 #### Spherical mirror
0152 - spherical mirrors are built from spherical patches, and positioned near the
0153   vessel back plane, separately for each sector
0154 - dimensions:
0155   - `backplane`: the position of the maximum z-plane intersected by the sphere,
0156     w.r.t. the back plane of vessel envelope
0157   - `rmin` and `rmax`: polar angle boundaries
0158   - `phiw`: azimuthal width of one sector
0159   - `thickness` is the radial thickness of the mirror; note that `backplane` is given for the
0160     reflective mirror surface, the inner radius of the sphere
0161   - `focus_tune*` are tuning parameters for the focal region:
0162     - `focus_tune_z` and `focus_tune_x` will move the focal region, with respect
0163       to the sensor sphere center (i.e., set both to zero for focus at the sensor sphere center
0164       (ignoring spherical aberrations effects))
0165 </documentation>
0166 <mirror
0167   material="Acrylic_DRICH"
0168   surface="MirrorSurface_DRICH"
0169   vis="DRICH_mirror_vis"
0170   backplane="DRICH_window_thickness + 1.0*cm"
0171   rmin="DRICH_rmin1 + DRICH_wall_thickness - 1.0*cm"
0172   rmax="DRICH_rmax2 - DRICH_wall_thickness - 3.0*cm"
0173   phiw="59.5*degree"
0174   thickness="0.2*cm"
0175   focus_tune_x="-7.00*cm"
0176   focus_tune_z="6.15*cm"
0177   />
0178 
0179 <!-- /detectors/detector/sensors -->
0180 <documentation level="10">
0181 #### Sensors
0182 </documentation>
0183 <sensors>
0184 
0185 
0186 <documentation level="10">
0187 ##### Sensor modules: photosensitive surface (pss) + resin base
0188 - SiPM: Silicon Photomultiplier
0189   - PSS: photosensitive surface
0190   - resin: resin substrate (holds the PSS)
0191   - dimensions:
0192     - `side`: side length
0193     - `thickness`: thickness
0194 - PDU: Photodetector Unit (dimensions defined as constants above)
0195   - note: the PDU pitch will determine how many PDUs there are, since the
0196     sensor placement algorithm will try to place as many as it can in the specified
0197     spherical patch below
0198   - Front Services: cooling, heat exchange, etc.
0199     - so far just a box with `side` and `thickness` dimensions
0200     - includes a unique `name`, and `material` and `vis`
0201     - if more than one is defined, they will be layered, in order
0202   - Board: a circuit board (front end board, readout board, etc.)
0203     - dimensions:
0204       - `width`: board side length, paralell to PSS
0205       - `length`: board side length, perpendicular to PSS
0206       - `thickness: board thickness
0207       - `offset`: positioning, with respect to PDU central axis
0208   - Back Services: sockets, cooling, etc.
0209     - so far just a box with `side` and `thickness` dimensions
0210     - includes a unique `name`, and `material` and `vis`
0211     - if more than one is defined, they will be layered, in order
0212 
0213 ###### Diagrams
0214 ```
0215  sensor assembly diagram:, where '0' denotes the origin:
0216 
0217                                 axes:  z
0218    +-+--------0--------+-+             |
0219    | |       pss       | |             0--x
0220    | +-----------------+ |
0221    |        resin        |
0222    +---------------------+
0223 
0224 ```
0225 ```
0226 photodetector unit (PDU) assembly diagram: matrix of SiPMs with services
0227 
0228    Top view: 2x2 matrix of SiPMs (2 PDU units shown side-by-side)
0229    =============================
0230 
0231               -:  :- PDU gap size
0232                :  :
0233    +-----------+  +-----------+
0234    | +--+ +--+ |  | +--+ +--+ |
0235    | |  | |  | |  | |  | |  | |
0236    | +--+ +--+ |  | +--+ +--+ |
0237    | +--+ +--+ |  | +--+ +--+ |
0238    | |  | |  | |  | |  | |  | |
0239    | +--+ +--+ |  | +--+ +--+ |
0240    +-----------+  +-----------+
0241         : :  : :
0242         : : -: :- sensor gap size
0243         : :
0244        -: :- sensor gap size (same)
0245 
0246     Side view:
0247     ==========
0248 
0249     +--------------------+
0250     |     SiPM Matrix    |
0251     +--------------------+
0252     |   Cooling, heat    |  frontservices
0253     |   exchange, etc.   |
0254     +--------------------+
0255       ||  ||  ||  ||  ||
0256       ||  ||  ||  ||  || front-end and
0257       ||  ||  ||  ||  || readout boards
0258       ||  ||  ||  ||  ||
0259       ||  ||  ||  ||  ||
0260               ||
0261               ||
0262       +----------------+
0263       | Sockets, etc.  |  backservices
0264       +----------------+
0265 
0266 ```
0267 </documentation>
0268 <pss
0269   material="AirOptical"
0270   surface="SensorSurface_DRICH"
0271   vis="DRICH_sensor_vis"
0272   side="DRICH_sensor_size"
0273   thickness="DRICH_sensor_thickness"
0274   />
0275 <resin
0276   material="Epoxy"
0277   vis="DRICH_vessel_vis"
0278   side="DRICH_sensor_resin_size"
0279   thickness="DRICH_sensor_resin_thickness"
0280   />
0281 <pdu>
0282   <frontservices>
0283     <service
0284       name="cooling"
0285       side="DRICH_pdu_num_sensors * (DRICH_sensor_resin_size + DRICH_pdu_sensor_gap) + DRICH_pdu_sensor_gap"
0286       thickness="2.0*cm"
0287       material="Aluminum"
0288       vis="DRICH_aerogel_vis"
0289       />
0290   </frontservices>
0291   <boards material="Aluminum" vis="DRICH_service_vis">
0292     <board name="FEB0" width="4.2*cm" length="6.0*cm" thickness="0.2*cm" offset="-2.0*cm" />
0293     <board name="FEB1" width="4.2*cm" length="6.0*cm" thickness="0.2*cm" offset="-1.0*cm" />
0294     <board name="RDO"  width="4.2*cm" length="9.0*cm" thickness="0.2*cm" offset="0.0*cm"  />
0295     <board name="FEB2" width="4.2*cm" length="6.0*cm" thickness="0.2*cm" offset="1.0*cm"  />
0296     <board name="FEB3" width="4.2*cm" length="6.0*cm" thickness="0.2*cm" offset="2.0*cm"  />
0297   </boards>
0298   <backservices>
0299     <service
0300       name="socket"
0301       side="4.5*cm"
0302       thickness="2.0*cm"
0303       material="Aluminum"
0304       vis="DRICH_aerogel_vis"
0305       />
0306   </backservices>
0307 </pdu>
0308 
0309 
0310 <!-- /detectors/detector/sensors/{sphere,sphericalpatch} -->
0311 <documentation level="10">
0312 ##### Sensor sphere
0313 - sensors will be placed on a sphere, using a "disco ball" tiling algorithm; each
0314   sector has its own sensor sphere
0315   - sphere dimensions:
0316     - `centerx` and `centerz`: sphere center, defined w.r.t. vessel front plane,
0317       for the sector on +x axis
0318     - `radius`: radius of the sensor sphere
0319 - sensors will be limited to a patch of the sphere
0320   - patch dimensions:
0321     - `phiw`: defines half the angle between the azimuthal boundaries
0322     - `rmin` and `rmax`: radial cut boundaries
0323     - `zmin`: z-plane cut
0324 </documentation>
0325 <sphere
0326   centerz="138.4*cm - DRICH_zmin"
0327   centerx="183.4*cm"
0328   radius="110.0*cm"
0329   />
0330 <sphericalpatch
0331   phiw="18*degree"
0332   rmin="111.0*cm"
0333   rmax="179.0*cm"
0334   zmin="DRICH_snout_length + 4.0*cm"
0335   />
0336 
0337 
0338 </sensors>
0339 </detector>
0340 </detectors>
0341 
0342 
0343 <documentation level="10">
0344 #### Readout
0345 - segmentation: square matrix of pixels
0346   - `grid_size_x,y`: size of each sensor pixel
0347   - `offset_x,y`: specified such that the `x` and `y` values are unsigned
0348     (except for very rare hits on the sensor sides)
0349 </documentation>
0350 <readouts>
0351   <readout name="DRICHHits">
0352     <segmentation
0353       type="CartesianGridXY"
0354       grid_size_x="DRICH_pixel_pitch"
0355       grid_size_y="DRICH_pixel_pitch"
0356       offset_x="-0.5*(DRICH_num_px-1)*DRICH_pixel_pitch"
0357       offset_y="-0.5*(DRICH_num_px-1)*DRICH_pixel_pitch"
0358       />
0359     <id>system:8,sector:3,pdu:12,sipm:6,x:32:-16,y:-16</id>
0360   </readout>
0361 </readouts>
0362 </lccdd>