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 <constant name="MMInnerAperture" value="MMModuleWidth/MMInnerSensor_R" />
0062 <constant name="MMOuterAperture" value="MMModuleWidth/MMOuterSensor_R" />
0063 </define>
0064
0065 <detectors>
0066 <detector
0067 id="TrackerBarrel_2_ID"
0068 name="InnerMPGDBarrel"
0069 type="epic_CylinderMPGDBarrel"
0070 readout="MPGDBarrelHits"
0071 insideTrackingVolume="true"
0072 vis="TrackerVis">
0073 <type_flags type="DetType_TRACKER + DetType_BARREL"/>
0074 <dimensions
0075 width="MMModuleWidth"
0076 length="MMModuleLength"/>
0077
0078 <module name="InnerMPGDBarrel_Mod1" vis="TrackerLayerVis" >
0079 <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>
0080 <model name="MMInnerSector" rmin1="MMInnerSector_R" rmin2="MMInnerSector_R" offset="MMRadial_offset" rsensor="MMInnerSensor_R"/>
0081 <model name="MMOuterSector" rmin1="MMOuterSector_R" rmin2="MMOuterSector_R" offset="MMRadial_offset" rsensor="MMOuterSensor_R"/>
0082 <frame name="MMFrame" material="CarbonFiber" width="MMFrameWidth" vis="TrackerSupportVis" />
0083 <frame name="MMOutwardFrame" material="CarbonFiber" width="MMOutwardFrameWidth" vis="TrackerServiceVis" />
0084 <service name="MMInnerService" material="Kapton" thickness="MMInnerService_thickness" vis="TrackerServiceVis" /> <comment> This includes cables => Kapton as a material is overoptimistic. </comment>
0085 <comment> Going from the inside (sensitive) side to the readout side </comment>
0086 <module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerModuleVis"/>
0087 <module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" vis="TrackerVis" />
0088 <module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" vis="TrackerVis"/>
0089 <module_component name="GasGap" thickness="MMGasGap_thickness" material="Ar90IsoButane" sensitive="True" vis="TrackerMPGDGasVis" />
0090 <module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" vis="TrackerVis"/>
0091 <module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" vis="TrackerVis"/>
0092 <module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" vis="TrackerMPGDGasVis"/>
0093 <module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" vis="TrackerVis"/>
0094 <module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" vis="TrackerVis" />
0095 <module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" vis="TrackerVis" />
0096 <module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" vis="TrackerVis"/>
0097 <module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" vis="TrackerVis"/>
0098 <module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerMPGDVis"/> <!-- Instead of "TrackerSupportVis" in order to highligh frames -->
0099 </module>
0100
0101 <layer module="InnerMPGDBarrel_Mod1" id="1" vis="InvisibleWithDaughters">
0102 <barrel_envelope
0103 inner_r="InnerMPGDBarrelLayer_rmin"
0104 outer_r="InnerMPGDBarrelLayer_rmax"
0105 z_length="InnerMPGDBarrelLayer_length"
0106 z0="InnerMPGDBarrel_zoffset"/>
0107 <layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0108 <layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0109 <rphi_layout phi0="0.0"/>
0110 <z_layout gap="MMCentral_gap"/>
0111 </layer>
0112 </detector>
0113 </detectors>
0114
0115 <plugins>
0116 <plugin name="DD4hep_ParametersPlugin">
0117 <argument value="InnerMPGDBarrel"/>
0118 <argument value="layer_pattern: str=InnerMPGDBarrel_layer\d"/>
0119 </plugin>
0120 </plugins>
0121
0122 <readouts>
0123 <readout name="MPGDBarrelHits">
0124 <comment> 768 strips in phi yield a segmentation of 2pi/8/768 ~= 1mrad. Which in turn, yields ~160 um in resolution.
0125 </comment>
0126 <segmentation type="MultiSegmentation" key="sensor">
0127 <comment> Strip segmentations ("strip" field !=0) are not used at simulation time but only in digitization at reconstruction time, see digitization class, "MPGDTrackerDigi". </comment>
0128 <segmentation name="Inner" type="MultiSegmentation" key_value="0" key="strip">
0129 <segmentation name="InnerPix" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0130 <segmentation name="InnerPhi" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad" grid_size_z="MMModuleLength" radius="MMInnerSensor_R" />
0131 <segmentation name="InnerZ" type="CylindricalGridPhiZ" key_value="2" grid_size_phi="MMInnerAperture" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0132 </segmentation>
0133 <segmentation name="Outer" type="MultiSegmentation" key_value="1" key="strip">
0134 <segmentation name="OuterPix" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0135 <segmentation name="OuterPhi" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad" grid_size_z="MMModuleLength" radius="MMOuterSensor_R" />
0136 <segmentation name="OuterZ" type="CylindricalGridPhiZ" key_value="2" grid_size_phi="MMOuterAperture" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0137 </segmentation>
0138 </segmentation>
0139 <id>system:8,layer:4,module:12,sensor:2,strip:30:2,phi:-16,z:-16</id>
0140 </readout>
0141 </readouts>
0142
0143 </lccdd>