Back to home page

EIC code displayed by LXR

 
 

    


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

0001 <!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
0002 <!-- Copyright (C) 2022 Sylvester Joosten, Wouter Deconinck, Matt Posik, Yann Bedfer -->
0003 
0004 <lccdd>
0005 <info name="mpgd_barrel.xml"
0006       title="Micro Pattern Gas Detectors"
0007       author="mposik1983"
0008       url="https://github.com/mposik1983"
0009       status="development"
0010       version="2.0"
0011 ><comment/>
0012 </info>
0013 
0014   <define>
0015     <comment>
0016       Inner MPGD tracking layer(s)
0017 
0018       Note: the inner and outer layers are implemented as separate detectors, as they
0019       belong to different ACTS tracking volumes. If this restriction goes away
0020       in the future they could be put together in a single tag.
0021     </comment>
0022 
0023     <constant name="InnerMPGDBarrelLayer_length"            value="InnerMPGDBarrel_length" />
0024 
0025     <comment> Intrinsic parameters... </comment>
0026     <comment> ...Thicknesses </comment>
0027     <constant name="MMKaptonOverlay_thickness"              value="50*um"/>
0028     <constant name="MMCuGround_thickness"                   value="1.58*um"/>
0029     <constant name="MMPCB_thickness"                        value="100*um"/>
0030     <constant name="MMCuStrip_thickness"                    value="12*um"/>
0031     <constant name="MMKaptonStrip_thickness"                value="75*um"/>
0032     <constant name="MMResistiveStrip_thickness"             value="20*um"/>
0033     <constant name="MMGas_thickness"                        value="128*um"/>
0034     <constant name="MMMesh_thickness"                       value="18*um"/>
0035     <constant name="MMGasGap_thickness"                     value="3000*um"/>
0036     <constant name="MMDriftCuElectrode_thickness"           value="5*um"/>
0037     <constant name="MMDriftKapton_thickness"                value="250*um"/>
0038     <constant name="MMDriftCuGround_thickness"              value="0.41*um"/>
0039     <comment> FIXME: No support material is here, so fudge factor used to bring material budget to ~0.5% for barrel </comment>
0040     <constant name="MMFudgeInnerMPGDBarrel_thickness"       value="570*um"/>
0041     <comment> FIXME: No definite plan for connections/services to the inner sectors yet, so guess value </comment>
0042     <constant name="MMInnerService_thickness"               value="0.05*cm"/>
0043     <comment> ...Dimensions </comment>
0044     <constant name="MMModuleWidth"                          value="46.0*cm"/>
0045     <constant name="MMModuleLength"                         value="61.0*cm"/>
0046     <constant name="MMFrameWidth"                           value="1.0*cm"/>
0047     <constant name="MMOutwardFrameWidth"                    value="5.0*cm"/>
0048     <constant name="MMOuterSector_R"                        value="57.7*cm"/>
0049     <constant name="MMInnerSector_R"                        value="55.5*cm"/>
0050     <comment> ...Positioning </comment>
0051     <constant name="MMRadial_offset"                        value="1.0*cm"/>
0052     <constant name="MMCentral_gap"                          value="0.2*cm"/>
0053 
0054     <comment> In principle, stave count should not be independenty specified: it is fixed by above intrinsic parameters </comment>
0055     <constant name="MPGDBarrelStave_count"                  value="8"/>
0056     <constant name="InnerMPGDBarrelLayer_rmin"              value="InnerMPGDBarrel_rmin"/>
0057     <constant name="InnerMPGDBarrelLayer_rmax"              value="MMOuterSector_R + MMRadial_offset / 2 + 1*cm"/>
0058     <constant name="rmin2Sensor" value="MMDriftCuGround_thickness + MMDriftKapton_thickness + MMDriftCuElectrode_thickness + MMGasGap_thickness / 2" />
0059     <constant name="MMInnerSensor_R" value="MMInnerSector_R + rmin2Sensor" />
0060     <constant name="MMOuterSensor_R" value="MMOuterSector_R + rmin2Sensor" />
0061   </define>
0062 
0063   <detectors>
0064     <detector
0065       id="TrackerBarrel_2_ID"
0066       name="InnerMPGDBarrel"
0067       type="epic_CylinderMPGDBarrel"
0068       readout="MPGDBarrelHits"
0069       insideTrackingVolume="true"
0070       vis="TrackerVis">
0071       <type_flags type="DetType_TRACKER + DetType_BARREL"/>
0072       <dimensions
0073         width="MMModuleWidth"
0074         length="MMModuleLength"/>
0075 
0076       <module name="InnerMPGDBarrel_Mod1" vis="TrackerLayerVis" >
0077         <comment> Models describe the overlapping of staves along phi, either (I) via  offsets or (II) via distinct radii ("rmin1/2"). Solution (II) is only partially implemented: would require FOUR distinct "radius" in the readout segmentation. Note that in any case "rsensor" must be set equal the "radius" of the corresponding segmentation and is used internally to double-check the consistency between the stack of "module_component" and the segmentation "radius". </comment>
0078         <model name="MMInnerSector" rmin1="MMInnerSector_R" rmin2="MMInnerSector_R" offset="MMRadial_offset" rsensor="MMInnerSensor_R"/>
0079         <model name="MMOuterSector" rmin1="MMOuterSector_R" rmin2="MMOuterSector_R" offset="MMRadial_offset" rsensor="MMOuterSensor_R"/>
0080         <frame name="MMFrame"        material="CarbonFiber" width="MMFrameWidth"        vis="TrackerSupportVis" />
0081         <frame name="MMOutwardFrame" material="CarbonFiber" width="MMOutwardFrameWidth" vis="TrackerServiceVis" />
0082         <service name="MMInnerService" material="Kapton" thickness="MMInnerService_thickness" vis="TrackerServiceVis" /> <comment> This includes cables => Kapton as a material is overoptimistic. </comment>
0083         <comment> Going from the inside (sensitive) side to the readout side </comment>
0084         <module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerModuleVis"/>
0085         <module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" vis="TrackerVis" />
0086         <module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" vis="TrackerVis"/>
0087         <module_component name="GasGap" thickness="MMGasGap_thickness" material="Ar90IsoButane" sensitive="True" vis="TrackerMPGDGasVis" />
0088         <module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" vis="TrackerVis"/>
0089         <module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" vis="TrackerVis"/>
0090         <module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" vis="TrackerMPGDGasVis"/>
0091         <module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" vis="TrackerVis"/>
0092         <module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" vis="TrackerVis" />
0093         <module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" vis="TrackerVis" />
0094         <module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" vis="TrackerVis"/>
0095         <module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" vis="TrackerVis"/>
0096         <module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerMPGDVis"/> <!-- Instead of "TrackerSupportVis" in order to highligh frames -->
0097       </module>
0098 
0099       <layer module="InnerMPGDBarrel_Mod1" id="1" vis="InvisibleWithDaughters">
0100         <barrel_envelope
0101           inner_r="InnerMPGDBarrelLayer_rmin"
0102           outer_r="InnerMPGDBarrelLayer_rmax"
0103           z_length="InnerMPGDBarrelLayer_length"
0104           z0="InnerMPGDBarrel_zoffset"/>
0105         <layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0106         <layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0107         <rphi_layout phi0="0.0"/>
0108         <z_layout gap="MMCentral_gap"/>
0109       </layer>
0110     </detector>
0111   </detectors>
0112 
0113   <plugins>
0114     <plugin name="DD4hep_ParametersPlugin">
0115       <argument value="InnerMPGDBarrel"/>
0116       <argument value="layer_pattern: str=InnerMPGDBarrel_layer\d"/>
0117     </plugin>
0118   </plugins>
0119 
0120   <readouts>
0121     <readout name="MPGDBarrelHits">
0122       <comment> 768 strips in phi yield a segmentation of 2pi/8/768 ~= 1mrad. Which in turn, yields ~160 um in resolution.
0123       </comment>
0124       <segmentation type="MultiSegmentation" key="sensor">
0125         <comment> In preparation for a 2-sensors-w/-strip setup. Presently sensors w/ odd key values do not exist. </comment>
0126         <segmentation name="InnerPhi" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0127         <segmentation name="InnerZ"   type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0128         <segmentation name="OuterPhi" type="CylindricalGridPhiZ" key_value="2" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0129         <segmentation name="OuterZ"   type="CylindricalGridPhiZ" key_value="3" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0130       </segmentation>
0131       <id>system:8,layer:4,module:12,sensor:2,phi:32:-16,z:-16</id>
0132     </readout>
0133   </readouts>
0134 
0135 </lccdd>