Back to home page

EIC code displayed by LXR

 
 

    


Warning, /epic/compact/tracking/mpgd_barrel_2DStrip.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 Cylindrical Barrel Layer
0007   Author: @ybedfer
0008   Status: development
0009   Version: 2.1
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="1"/>
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 sections yet, so guess value. </comment>
0038     <constant name="MMInnerService_thickness"               value="0.05*cm"/>
0039     <comment> 2DStrip: Multiple Sensitive Volumes. => Subdivide GasGap: 3 thin slices (pixel and (p|n)strips) at the centre, enclosed by 2 thick radiators. </comment>
0040     <constant name="MMThinGap_thickness"                    value="10*um"/>
0041     <constant name="MMThickGap_thickness" value="(MMGasGap_thickness - MMThinGap_thickness * 3) / 2"/>
0042     <comment> ...Dimensions </comment>
0043     <constant name="MMModuleWidth"                          value="46.0*cm"/>
0044     <constant name="MMModuleLength"                         value="61.0*cm"/>
0045     <constant name="MMFrameWidth"                           value="1.0*cm"/>
0046     <constant name="MMOutwardFrameWidth"                    value="5.0*cm"/>
0047     <constant name="MMInnerSection_R"                       value="InnerMPGDBarrel_rmin + 0.5*cm"/>
0048     <constant name="MMOuterSection_R"                       value="MMInnerSection_R + 2.2*cm"/>
0049     <comment> ...Positioning </comment>
0050     <constant name="MMRadial_offset"                        value="1.0*cm"/>
0051     <constant name="MMCentral_gap"                          value="0.2*cm"/>
0052 
0053     <comment> In principle, stave count should not be independenty specified: it is fixed by above intrinsic parameters </comment>
0054     <constant name="MPGDBarrelStave_count"                  value="8"/>
0055     <constant name="InnerMPGDBarrelLayer_rmin"              value="InnerMPGDBarrel_rmin"/>
0056     <constant name="InnerMPGDBarrelLayer_rmax"              value="MMOuterSection_R + MMRadial_offset / 2 + 1*cm"/>
0057     <constant name="rmin2Sensor" value="MMDriftCuGround_thickness + MMDriftKapton_thickness + MMDriftCuElectrode_thickness + MMGasGap_thickness / 2" />
0058     <constant name="MMInnerSensor_R" value="MMInnerSection_R + rmin2Sensor" />
0059     <constant name="MMOuterSensor_R" value="MMOuterSection_R + rmin2Sensor" />
0060     <constant name="MMInnerAperture" value="MMModuleWidth/MMInnerSensor_R" />
0061     <constant name="MMOuterAperture" value="MMModuleWidth/MMOuterSensor_R" />
0062   </define>
0063 
0064   <detectors>
0065     <detector
0066       id="TrackerBarrel_2_ID"
0067       name="InnerMPGDBarrel"
0068       type="epic_CylinderMPGDBarrel"
0069       readout="MPGDBarrelHits"
0070       insideTrackingVolume="true"
0071       vis="TrackerVis">
0072       <type_flags type="DetType_TRACKER + DetType_BARREL"/>
0073       <dimensions
0074         width="MMModuleWidth"
0075         length="MMModuleLength"/>
0076 
0077       <module name="InnerMPGDBarrel_Mod1" vis="TrackerLayerVis" >
0078         <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>
0079         <model name="MMInnerSection" rmin1="MMInnerSection_R" rmin2="MMInnerSection_R" offset="MMRadial_offset" rsensor="MMInnerSensor_R"/>
0080         <model name="MMOuterSection" rmin1="MMOuterSection_R" rmin2="MMOuterSection_R" offset="MMRadial_offset" rsensor="MMOuterSensor_R"/>
0081         <frame name="MMFrame"        material="CarbonFiber" width="MMFrameWidth"        vis="TrackerSupportVis" />
0082         <frame name="MMOutwardFrame" material="CarbonFiber" width="MMOutwardFrameWidth" vis="TrackerServiceVis" />
0083         <service name="MMInnerService" material="Kapton" thickness="MMInnerService_thickness" vis="TrackerServiceVis" /> <comment> This includes cables => Kapton as a material is overoptimistic. </comment>
0084         <comment> Going from the inside (sensitive) side to the readout side </comment>
0085         <module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerModuleVis"/>
0086         <module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" vis="TrackerVis" />
0087         <module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" vis="TrackerVis"/>
0088         <module_component name="InnerRadiator" thickness="MMThickGap_thickness" material="Ar90IsoButane" sensitive="True" key="3" vis="TrackerMPGDGasVis"/>
0089         <module_component name="pStripThinGap" thickness="MMThinGap_thickness"  material="Ar90IsoButane" sensitive="True" key="1" vis="TrackerMPGDGasVis"/>
0090         <module_component name="pixelThinGap"  thickness="MMThinGap_thickness"  material="Ar90IsoButane" sensitive="True" key="0" vis="TrackerMPGDGasVis"/>
0091         <module_component name="nStripThinGap" thickness="MMThinGap_thickness"  material="Ar90IsoButane" sensitive="True" key="2" vis="TrackerMPGDGasVis"/>
0092         <module_component name="OuterRadiator" thickness="MMThickGap_thickness" material="Ar90IsoButane" sensitive="True" key="4" vis="TrackerMPGDGasVis"/>
0093         <module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" vis="TrackerVis"/>
0094         <module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" vis="TrackerVis"/>
0095         <module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" vis="TrackerMPGDGasVis"/>
0096         <module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" vis="TrackerVis"/>
0097         <module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" vis="TrackerVis" />
0098         <module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" vis="TrackerVis" />
0099         <module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" vis="TrackerVis"/>
0100         <module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" vis="TrackerVis"/>
0101         <module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerMPGDVis"/> <!-- Instead of "TrackerSupportVis" in order to highligh frames -->
0102       </module>
0103 
0104       <layer module="InnerMPGDBarrel_Mod1" id="1" vis="InvisibleWithDaughters">
0105         <barrel_envelope
0106           inner_r="InnerMPGDBarrelLayer_rmin"
0107           outer_r="InnerMPGDBarrelLayer_rmax"
0108           z_length="InnerMPGDBarrelLayer_length"
0109           z0="InnerMPGDBarrel_zoffset"/>
0110         <layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0111         <layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
0112         <rphi_layout phi0="0.0"/>
0113         <z_layout gap="MMCentral_gap"/>
0114       </layer>
0115     </detector>
0116   </detectors>
0117 
0118   <plugins>
0119     <plugin name="DD4hep_ParametersPlugin">
0120       <argument value="InnerMPGDBarrel"/>
0121       <argument value="layer_pattern: str=InnerMPGDBarrel_layer\d"/>
0122     </plugin>
0123   </plugins>
0124 
0125   <readouts>
0126     <readout name="MPGDBarrelHits">
0127       <comment> 768 strips in phi yield a segmentation of 2pi/8/768 ~= 1mrad. Which in turn, yields ~160 um in resolution.
0128       </comment>
0129       <segmentation type="MultiSegmentation" key="sensor">
0130         <segmentation name="Inner" type="MultiSegmentation" key_value="0" key="strip">
0131           <segmentation name="InnerPix" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
0132           <segmentation name="InnerPhi" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad"          grid_size_z="MMModuleLength"    radius="MMInnerSensor_R - MMThinGap_thickness" />
0133           <segmentation name="InnerZ"   type="CylindricalGridPhiZ" key_value="2" grid_size_phi="MMInnerAperture" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R + MMThinGap_thickness" />
0134           <segmentation name="InnerBot" type="CylindricalGridPhiZ" key_value="3" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R - 3 * MMThinGap_thickness / 2 - MMThickGap_thickness / 2" />
0135           <segmentation name="InnerTop" type="CylindricalGridPhiZ" key_value="4" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R + 3 * MMThinGap_thickness / 2 + MMThickGap_thickness / 2" />
0136         </segmentation>
0137         <segmentation name="Outer" type="MultiSegmentation" key_value="1" key="strip">
0138           <segmentation name="OuterPix" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
0139           <segmentation name="OuterPhi" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad"          grid_size_z="MMModuleLength"    radius="MMOuterSensor_R - MMThinGap_thickness" />
0140           <segmentation name="OuterZ"   type="CylindricalGridPhiZ" key_value="2" grid_size_phi="MMOuterAperture" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R + MMThinGap_thickness" />
0141           <segmentation name="OuterTop" type="CylindricalGridPhiZ" key_value="3" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R - 3 * MMThinGap_thickness / 2 - MMThickGap_thickness / 2" />
0142           <segmentation name="OuterBot" type="CylindricalGridPhiZ" key_value="4" grid_size_phi="1*mrad"          grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R + 3 * MMThinGap_thickness / 2 + MMThickGap_thickness / 2" />
0143         </segmentation>
0144       </segmentation>
0145       <id>system:8,layer:4,module:12,sensor:2,strip:28:4,phi:-16,z:-16</id>
0146     </readout>
0147   </readouts>
0148 
0149 </lccdd>