Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inner mpgd barrel geo update #732

Merged
merged 29 commits into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8ce66ac
Add inner MPGD barrel work to branch
mposik1983 Jan 2, 2024
bb23ad8
Fix overlap with outer service cylinder
mposik1983 Jan 19, 2024
fe82627
fixed DD4HEP and ACTS overlaps
mposik1983 Jan 26, 2024
86d69e2
CyMBaL: Fix material budget => X/X0 ~= 0.5%. Cosmetics.
Mar 6, 2024
1e4ae54
Add ACTS lines
mposik1983 Apr 8, 2024
652ead5
remove extra acts code block
mposik1983 Apr 11, 2024
3dfdb79
CyMBaL geometry: consistent w/ crater_lake of #fe82627 + wide outward…
Apr 11, 2024
288ca2e
CyMBaL: Add services to inner sectors.
Apr 25, 2024
d51d8eb
MPGDCyMBaTracker: Fix compilation error "cannot pass object of non-tr…
Jun 3, 2024
4fa4267
Preparing for merging "inner-mpgd-barrel-geoUpdat" w/ "main".
Jun 28, 2024
8f6bc7d
Preparing for merging continued...
Jun 28, 2024
c8fb144
Merge branch 'main' into inner-mpgd-barrel-geoUpdate
Jun 28, 2024
ebbaeaf
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 28, 2024
8c748d1
CyMBaL in "mpgd_barrel.xml", with "CylindricalGridPhiZ" segmentation.
Jun 28, 2024
868ae91
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 28, 2024
0ed16fe
CyMBaL segmentation: Specifying "radius" of "CylindricalGridPhiZ". Th…
Jul 11, 2024
7af576d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 11, 2024
88f8c0f
yMerge branch 'main' into inner-mpgd-barrel-geoUpdate
Jul 11, 2024
4d869d5
CyMBaL Segmentation: Preparing for moving to strips; "radius" from na…
Jul 18, 2024
b029c29
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 18, 2024
9947f05
Merge branch 'main' into inner-mpgd-barrel-geoUpdate
wdconinc Jul 25, 2024
0e63d80
Apply suggestions from code review
ybedfer Jul 25, 2024
3913ba5
Update src/MPGDCylinderBarrelTracker_geo.cpp
ybedfer Jul 25, 2024
c351d27
Update src/MPGDCylinderBarrelTracker_geo.cpp
ybedfer Jul 25, 2024
539ea31
Update src/MPGDCylinderBarrelTracker_geo.cpp
ybedfer Jul 25, 2024
7403586
CyMBal: Bunch of commits to satisfy PR suggestions.
Jul 26, 2024
67f75a8
Merge branch 'inner-mpgd-barrel-geoUpdate' of github.com:eic/epic int…
Jul 26, 2024
05c07f2
CyMBaL: Increasing the layer_materail binning along phi.
Jul 26, 2024
ecd07f0
CyMBaL: Cosmetics...
Jul 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion compact/tracking/mpgd_backward_endcap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
<constant name="BackwardMPGDMod2_y" value="BackwardMPGDMod2_rmax * cos(BackwardMPGDEndcapMod_angle/2) - BackwardMPGDMod2_rmin" />
</define>

<detectors>
<detectors>
<detector
id="TrackerEndcapN_4_ID"
name="BackwardMPGD"
Expand Down
111 changes: 70 additions & 41 deletions compact/tracking/mpgd_barrel.xml
wdconinc marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<!-- SPDX-License-Identifier: LGPL-3.0-or-later -->
<!-- Copyright (C) 2022 Sylvester Joosten, Wouter Deconinck, Matt Posik -->
<!-- Copyright (C) 2022 Sylvester Joosten, Wouter Deconinck, Matt Posik, Yann Bedfer -->

<lccdd>
<info name="mpgd_barrel.xml"
title="Micro Pattern Gas Detectors"
author="mposik1983"
url="https://github.com/mposik1983"
status="development"
version="1.0"
version="2.0"
><comment/>
</info>

Expand All @@ -21,70 +21,91 @@
</comment>

<constant name="InnerMPGDBarrelLayer_length" value="InnerMPGDBarrel_length" />
<constant name="InnerMPGDBarrelLayer_thickness" value="5*cm" />
<constant name="InnerMPGDBarrelLayer_rmin" value="InnerMPGDBarrel_rmin"/>
<constant name="InnerMPGDBarrelLayer_rmax" value="InnerMPGDBarrelLayer_rmin + InnerMPGDBarrelLayer_thickness"/>

<comment> Intrinsic parameters... </comment>
<comment> ...Thicknesses </comment>
<constant name="MMKaptonOverlay_thickness" value="50*um"/>
<constant name="MMCuGround_thickness" value="1.58*um"/>
<constant name="MMPCB_thickness" value="100*um"/>
<constant name="MMCuStrip_thickness" value="12*um"/>
<constant name="MMKaptonStrip_thickness" value="75*um"/>
<constant name="MMResistiveStrip_thickness" value="128*um"/>
<constant name="MMGas_thickness" value="20*um"/>
<constant name="MMResistiveStrip_thickness" value="20*um"/>
<constant name="MMGas_thickness" value="128*um"/>
<constant name="MMMesh_thickness" value="18*um"/>
<constant name="MMGasGap_thickness" value="3000*um"/>
<constant name="MMDriftCuElectrode_thickness" value="5*um"/>
<constant name="MMDriftKapton_thickness" value="250*um"/>
<constant name="MMDriftCuGround_thickness" value="0.41*um"/>

<comment> FIXME: No support material is here, so fudge factor used to bring material budget to ~0.5% for barrel </comment>
<constant name="MMFudgeInnerMPGDBarrel_thickness" value="570*um"/>
<constant name="MMFudgeInnerMPGDBarrel_thickness" value="570*um"/>
<comment> FIXME: No definite plan for connections/services to the inner sectors yet, so guess value </comment>
<constant name="MMInnerService_thickness" value="0.05*cm"/>
<comment> ...Dimensions </comment>
<constant name="MMModuleWidth" value="46.0*cm"/>
<constant name="MMModuleLength" value="61.0*cm"/>
<constant name="MMFrameWidth" value="1.0*cm"/>
<constant name="MMOutwardFrameWidth" value="5.0*cm"/>
<constant name="MMOuterSector_R" value="57.7*cm"/>
<constant name="MMInnerSector_R" value="55.5*cm"/>
<comment> ...Positioning </comment>
<constant name="MMRadial_offset" value="1.0*cm"/>
<constant name="MMCentral_gap" value="0.2*cm"/>


<comment>
Extra parameters to approximate a cylinder as a set of skinny staves
due to ACTS limitations.
FIXME: this shouldn't be needed anymore, need to update the cylindrical plugin.
</comment>
<constant name="MPGDBarrelStave_count" value="128"/>
<constant name="InnerMPGDBarrelStave_width" value="2*(InnerMPGDBarrelLayer_rmin) * tan(180*degree/MPGDBarrelStave_count)"/>
<comment> In principle, stave count should not be independenty specified: it is fixed by above intrinsic parameters </comment>
<constant name="MPGDBarrelStave_count" value="8"/>
<constant name="InnerMPGDBarrelLayer_rmin" value="InnerMPGDBarrel_rmin"/>
<constant name="InnerMPGDBarrelLayer_rmax" value="MMOuterSector_R + MMRadial_offset / 2 + 1*cm"/>
<constant name="rmin2Sensor" value="MMDriftCuGround_thickness + MMDriftKapton_thickness + MMDriftCuElectrode_thickness + MMGasGap_thickness / 2" />
<constant name="MMInnerSensor_R" value="MMInnerSector_R + rmin2Sensor" />
<constant name="MMOuterSensor_R" value="MMOuterSector_R + rmin2Sensor" />
</define>

<detectors>
<detector
id="TrackerBarrel_2_ID"
name="InnerMPGDBarrel"
type="epic_TrackerBarrel"
type="epic_CylinderMPGDBarrel"
readout="MPGDBarrelHits"
insideTrackingVolume="true">
<type_flags type="DetType_TRACKER + DetType_BARREL"/>
<module name="InnerMPGDBarrel_Mod1" vis="TrackerMPGDVis">
insideTrackingVolume="true"
vis="TrackerVis">
<type_flags type="DetType_TRACKER + DetType_BARREL"/>
<dimensions
width="MMModuleWidth"
length="MMModuleLength"/>

<module name="InnerMPGDBarrel_Mod1" vis="TrackerLayerVis" >
<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>
<model name="MMInnerSector" rmin1="MMInnerSector_R" rmin2="MMInnerSector_R" offset="MMRadial_offset" rsensor="MMInnerSensor_R"/>
<model name="MMOuterSector" rmin1="MMOuterSector_R" rmin2="MMOuterSector_R" offset="MMRadial_offset" rsensor="MMOuterSensor_R"/>
<frame name="MMFrame" material="CarbonFiber" width="MMFrameWidth" vis="TrackerSupportVis" />
<frame name="MMOutwardFrame" material="CarbonFiber" width="MMOutwardFrameWidth" vis="TrackerServiceVis" />
<service name="MMInnerService" material="Kapton" thickness="MMInnerService_thickness" vis="TrackerServiceVis" /> <comment> This includes cables => Kapton as a material is overoptimistic. </comment>
<comment> Going from the inside (sensitive) side to the readout side </comment>
<module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerMPGDVis" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="GasGap" thickness="MMGasGap_thickness" material="Ar90IsoButane" sensitive="True" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerSupportVis" width="InnerMPGDBarrelStave_width" length="InnerMPGDBarrel_length"/>
<module_component name="DriftCuGround" thickness="MMDriftCuGround_thickness" material="Copper" vis="TrackerModuleVis"/>
<module_component name="DriftKapton" thickness="MMDriftKapton_thickness" material="Kapton" vis="TrackerVis" />
<module_component name="DriftCuElectrode" thickness="MMDriftCuElectrode_thickness" material="Copper" vis="TrackerVis"/>
<module_component name="GasGap" thickness="MMGasGap_thickness" material="Ar90IsoButane" sensitive="True" vis="TrackerMPGDGasVis" />
<module_component name="Mesh" thickness="MMMesh_thickness" material="MMGAS_InoxForMesh" vis="TrackerVis"/>
<module_component name="Fudge" thickness="MMFudgeInnerMPGDBarrel_thickness" material="Kapton" vis="TrackerVis"/>
<module_component name="Gas" thickness="MMGas_thickness" material="Ar90IsoButane" vis="TrackerMPGDGasVis"/>
<module_component name="ResistiveStrips" thickness="MMResistiveStrip_thickness" material="MMGAS_ResistivePaste" vis="TrackerVis"/>
<module_component name="KaptonStrips" thickness="MMKaptonStrip_thickness" material="Kapton" vis="TrackerVis" />
<module_component name="CuStrips" thickness="MMCuStrip_thickness" material="Copper" vis="TrackerVis" />
<module_component name="PCB" thickness="MMPCB_thickness" material="Fr4" vis="TrackerVis"/>
<module_component name="CuGround" thickness="MMCuGround_thickness" material="Copper" vis="TrackerVis"/>
<module_component name="KaptonOverlay" thickness="MMKaptonOverlay_thickness" material="Kapton" vis="TrackerMPGDVis"/> <!-- Instead of "TrackerSupportVis" in order to highligh frames -->
</module>
<layer module="InnerMPGDBarrel_Mod1" id="1" vis="TrackerMMGASLayerVis">

<layer module="InnerMPGDBarrel_Mod1" id="1" vis="InvisibleWithDaughters">
<barrel_envelope
inner_r="InnerMPGDBarrelLayer_rmin"
outer_r="InnerMPGDBarrelLayer_rmax"
z_length="InnerMPGDBarrelLayer_length"
z0="InnerMPGDBarrel_zoffset"/>
<layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count" bins1="100" />
<layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count" bins1="100" />
ybedfer marked this conversation as resolved.
Show resolved Hide resolved
<rphi_layout phi_tilt="0" nphi="MPGDBarrelStave_count" phi0="0.0" rc="(InnerMPGDBarrelLayer_rmin + InnerMPGDBarrelLayer_rmax)/2.0" dr="0.0 * mm"/>
<z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/>
<layer_material surface="inner" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
<layer_material surface="outer" binning="binPhi,binZ" bins0="MPGDBarrelStave_count*24" bins1="100" />
<rphi_layout phi0="0.0"/>
<z_layout gap="MMCentral_gap"/>
</layer>
</detector>
</detectors>
Expand All @@ -98,8 +119,16 @@

<readouts>
<readout name="MPGDBarrelHits">
<segmentation type="CartesianGridXY" grid_size_x="0.150*mm*sqrt(12)" grid_size_y="0.150*mm*sqrt(12)" />
<id>system:8,layer:4,module:12,sensor:2,x:32:-14,y:-18</id>
<comment> 768 strips in phi yield a segmentation of 2pi/8/768 ~= 1mrad. Which in turn, yields ~160 um in resolution.
</comment>
<segmentation type="MultiSegmentation" key="sensor">
<comment> In preparation for a 2-sensors-w/-strip setup. Presently sensors w/ odd key values do not exist. </comment>
<segmentation name="InnerPhi" type="CylindricalGridPhiZ" key_value="0" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
<segmentation name="InnerZ" type="CylindricalGridPhiZ" key_value="1" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMInnerSensor_R" />
<segmentation name="OuterPhi" type="CylindricalGridPhiZ" key_value="2" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
<segmentation name="OuterZ" type="CylindricalGridPhiZ" key_value="3" grid_size_phi="1*mrad" grid_size_z="0.150*mm*sqrt(12)" radius="MMOuterSensor_R" />
</segmentation>
<id>system:8,layer:4,module:12,sensor:2,phi:32:-16,z:-16</id>
ybedfer marked this conversation as resolved.
Show resolved Hide resolved
</readout>
</readouts>

Expand Down
Loading