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 <documentation>
0006 Title: Micro Pattern Gas Detectors
0007 Author: @mposik1983
0008 Status: development
0009 Version: 2.0
0010 </documentation>
0011
0012 <define>
0013 <comment>
0014 Inner MPGD tracking layer = CyMBaL
0015 Note: MPGDs come in two distinct flavours: pixel and 2DStrip.
0016 </comment>
0017 <constant name="InnerMPGDBarrel_2DStrip" value="0"/>
0018
0019 <constant name="InnerMPGDBarrelLayer_length" value="InnerMPGDBarrel_length" />
0020
0021 <comment> Intrinsic parameters... </comment>
0022 <comment> ...Thicknesses </comment>
0023 <constant name="MMKaptonOverlay_thickness" value="50*um"/>
0024 <constant name="MMCuGround_thickness" value="1.58*um"/>
0025 <constant name="MMPCB_thickness" value="100*um"/>
0026 <constant name="MMCuStrip_thickness" value="12*um"/>
0027 <constant name="MMKaptonStrip_thickness" value="75*um"/>
0028 <constant name="MMResistiveStrip_thickness" value="20*um"/>
0029 <constant name="MMGas_thickness" value="128*um"/>
0030 <constant name="MMMesh_thickness" value="18*um"/>
0031 <constant name="MMGasGap_thickness" value="3000*um"/>
0032 <constant name="MMDriftCuElectrode_thickness" value="5*um"/>
0033 <constant name="MMDriftKapton_thickness" value="250*um"/>
0034 <constant name="MMDriftCuGround_thickness" value="0.41*um"/>
0035 <comment> FIXME: No support material is here, so fudge factor used to bring material budget to ~0.5% for barrel. </comment>
0036 <constant name="MMFudgeInnerMPGDBarrel_thickness" value="570*um"/>
0037 <comment> FIXME: No definite plan for connections/services to the inner sectors yet, so guess value. </comment>
0038 <constant name="MMInnerService_thickness" value="0.05*cm"/>
0039 <comment> ...Dimensions </comment>
0040 <constant name="MMModuleWidth" value="46.0*cm"/>
0041 <constant name="MMModuleLength" value="61.0*cm"/>
0042 <constant name="MMFrameWidth" value="1.0*cm"/>
0043 <constant name="MMOutwardFrameWidth" value="5.0*cm"/>
0044 <constant name="MMInnerSection_R" value="InnerMPGDBarrel_rmin + 0.5*cm"/>
0045 <constant name="MMOuterSection_R" value="MMInnerSection_R + 2.2*cm"/>
0046 <comment> ...Positioning </comment>
0047 <constant name="MMRadial_offset" value="1.0*cm"/>
0048 <constant name="MMCentral_gap" value="0.2*cm"/>
0049
0050 <comment> In principle, stave count should not be independenty specified: it is fixed by above intrinsic parameters </comment>
0051 <constant name="MPGDBarrelStave_count" value="8"/>
0052 <constant name="InnerMPGDBarrelLayer_rmin" value="InnerMPGDBarrel_rmin"/>
0053 <constant name="InnerMPGDBarrelLayer_rmax" value="MMOuterSection_R + MMRadial_offset / 2 + 1*cm"/>
0054 <constant name="rmin2Sensor" value="MMDriftCuGround_thickness + MMDriftKapton_thickness + MMDriftCuElectrode_thickness + MMGasGap_thickness / 2" />
0055 <constant name="MMInnerSensor_R" value="MMInnerSection_R + rmin2Sensor" />
0056 <constant name="MMOuterSensor_R" value="MMOuterSection_R + rmin2Sensor" />
0057 <constant name="MMInnerAperture" value="MMModuleWidth/MMInnerSensor_R" />
0058 <constant name="MMOuterAperture" value="MMModuleWidth/MMOuterSensor_R" />
0059 </define>
0060
0061 <detectors>
0062 <detector
0063 id="TrackerBarrel_2_ID"
0064 name="InnerMPGDBarrel"
0065 type="epic_CylinderMPGDBarrel"
0066 readout="MPGDBarrelHits"
0067 insideTrackingVolume="true"
0068 vis="TrackerVis">
0069 <type_flags type="DetType_TRACKER + DetType_BARREL"/>
0070 <dimensions
0071 width="MMModuleWidth"
0072 length="MMModuleLength"/>
0073
0074 <module name="InnerMPGDBarrel_Mod1" vis="TrackerLayerVis" >
0075 <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>
0076 <model name="MMInnerSection" rmin1="MMInnerSection_R" rmin2="MMInnerSection_R" offset="MMRadial_offset" rsensor="MMInnerSensor_R"/>
0077 <model name="MMOuterSection" rmin1="MMOuterSection_R" rmin2="MMOuterSection_R" offset="MMRadial_offset" rsensor="MMOuterSensor_R"/>
0078 <frame name="MMFrame" material="CarbonFiber" width="MMFrameWidth" vis="TrackerSupportVis" />
0079 <frame name="MMOutwardFrame" material="CarbonFiber" width="MMOutwardFrameWidth" vis="TrackerServiceVis" />
0080 <service name="MMInnerService" material="Kapton" thickness="MMInnerService_thickness" vis="TrackerServiceVis" /> <comment> This includes cables => Kapton as a material is overoptimistic. </comment>
0081 <comment> Going from the inside (sensitive) side to the readout side </comment>
0082 <module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerModuleVis"/>
0083 <module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" vis="TrackerVis" />
0084 <module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" vis="TrackerVis"/>
0085 <module_component name="GasGap" thickness="MMGasGap_thickness" material="Ar90IsoButane" sensitive="True" key="0" vis="TrackerMPGDGasVis" />
0086 <module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" vis="TrackerVis"/>
0087 <module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" vis="TrackerVis"/>
0088 <module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" vis="TrackerMPGDGasVis"/>
0089 <module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" vis="TrackerVis"/>
0090 <module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" vis="TrackerVis" />
0091 <module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" vis="TrackerVis" />
0092 <module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" vis="TrackerVis"/>
0093 <module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" vis="TrackerVis"/>
0094 <module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerMPGDVis"/> <!-- Instead of "TrackerSupportVis" in order to highligh frames -->
0095 </module>
0096
0097 <layer module="InnerMPGDBarrel_Mod1" id="1" vis="InvisibleWithDaughters">
0098 <barrel_envelope
0099 inner_r="InnerMPGDBarrelLayer_rmin"
0100 outer_r="InnerMPGDBarrelLayer_rmax"
0101 z_length="InnerMPGDBarrelLayer_length"
0102 z0="InnerMPGDBarrel_zoffset"/>
0103 <layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0104 <layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0105 <rphi_layout phi0="0.0"/>
0106 <z_layout gap="MMCentral_gap"/>
0107 </layer>
0108 </detector>
0109 </detectors>
0110
0111 <plugins>
0112 <plugin name="DD4hep_ParametersPlugin">
0113 <argument value="InnerMPGDBarrel"/>
0114 <argument value="layer_pattern: str=InnerMPGDBarrel_layer\d"/>
0115 </plugin>
0116 </plugins>
0117
0118 <readouts>
0119 <readout name="MPGDBarrelHits">
0120 <comment> 768 strips in phi yield a segmentation of 2pi/8/768 ~= 1mrad. Which in turn, yields ~160 um in resolution.
0121 </comment>
0122 <segmentation type="MultiSegmentation" key="sensor">
0123 <segmentation name="InnerPix" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0124 <segmentation name="OuterPix" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0125 </segmentation>
0126 <comment> "strip" field is ineffective... but required. </comment>
0127 <id>system:8,layer:4,module:12,sensor:2,strip:28:4,phi:-16,z:-16</id>
0128 </readout>
0129 </readouts>
0130
0131 </lccdd>