From 981f47fa827c1bccd85b0cd6b02e81ab78b0d388 Mon Sep 17 00:00:00 2001 From: Elmar Ritsch <Elmar.Ritsch@cern.ch> Date: Wed, 15 Jun 2016 12:23:11 +0200 Subject: [PATCH] Add postInclude to launch Python GUI to visualize and examine envelope definitions as provided by EnvelopeDefSvc. ATLASSIM-2665 (SubDetectorEnvelopes-00-04-01) * Add postInclude to launch Python GUI to visualize and examine envelope definitions as provided by EnvelopeDefSvc. ATLASSIM-2665 * tagging SubDetectorEnvelopes-00-04-01 2016-03-23 John Chapman <John.Chapman@cern.ch> * python/SubDetectorEnvelopesConfig.py - update Muon and Cavern envelopes to support MuonSpectrometer-R.07.03. ATLASSIM-2665 * tagging SubDetectorEnvelopes-00-04-00 Former-commit-id: 6f8d4d3b4eaf1663e2e4dd17cf7cf1530101d8ef --- .../python/SubDetectorEnvelopesConfig.py | 19 ++++---- .../share/postInclude.showEnvelopesGUI.py | 46 +++++++++++++++++++ 2 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 AtlasGeometryCommon/SubDetectorEnvelopes/share/postInclude.showEnvelopesGUI.py diff --git a/AtlasGeometryCommon/SubDetectorEnvelopes/python/SubDetectorEnvelopesConfig.py b/AtlasGeometryCommon/SubDetectorEnvelopes/python/SubDetectorEnvelopesConfig.py index 388ddf2d20c..07dabb24c49 100644 --- a/AtlasGeometryCommon/SubDetectorEnvelopes/python/SubDetectorEnvelopesConfig.py +++ b/AtlasGeometryCommon/SubDetectorEnvelopes/python/SubDetectorEnvelopesConfig.py @@ -71,12 +71,13 @@ def getEnvelopeDefSvc(name="AtlasGeometry_EnvelopeDefSvc", **kwargs): # setup fallback MuonEnvelope Muon = Volume() + Muon.addRZ( 4255.0 , 4000.0 ) Muon.addRZ( 4255.0 , 6550.0 ) Muon.addRZ( 3800.0 , 6550.0 ) Muon.addRZ( 3800.0 , 6736.0 ) Muon.addRZ( 420.0 , 6736.0 ) Muon.addRZ( 420.0 , 6783.0 ) - Muon.addRZ( 70.0 , 6783.0 ) + Muon.addRZ( 70.0 , 6783.0 ) Muon.addRZ( 70.0 , 12900.0 ) Muon.addRZ( 279.0 , 12900.0 ) Muon.addRZ( 279.0 , 18650.0 ) @@ -92,18 +93,18 @@ def getEnvelopeDefSvc(name="AtlasGeometry_EnvelopeDefSvc", **kwargs): Muon.addRZ( 12650.0 , 18650.0 ) Muon.addRZ( 13400.0 , 18650.0 ) Muon.addRZ( 13400.0 , 12900.0 ) - Muon.addRZ( 13910.0 , 12900.0 ) - Muon.addRZ( 13910.0 , 6550.0 ) - Muon.addRZ( 13000.0 , 6550.0 ) + Muon.addRZ( 14200.0 , 12900.0 ) + Muon.addRZ( 14200.0 , 4000.0 ) + Muon.addRZ( 13000.0 , 4000.0 ) kwargs.setdefault("FallbackMuonR" , Muon.getRs() ) kwargs.setdefault("FallbackMuonZ" , Muon.getZs() ) - # setup fallback CavernEnvelope + # setup fallback CavernEnvelope Cavern = Volume() - Cavern.addRZ( 13000.0 , 6550.0 ) - Cavern.addRZ( 13910.0 , 6550.0 ) - Cavern.addRZ( 13910.0 , 12900.0 ) # boundary with MS + Cavern.addRZ( 13000.0 , 4000.0 ) + Cavern.addRZ( 14200.0 , 4000.0 ) + Cavern.addRZ( 14200.0 , 12900.0 ) # boundary with MS Cavern.addRZ( 13400.0 , 12900.0 ) # boundary with MS Cavern.addRZ( 13400.0 , 18650.0 ) # boundary with MS Cavern.addRZ( 12650.0 , 18650.0 ) # boundary with MS @@ -112,7 +113,7 @@ def getEnvelopeDefSvc(name="AtlasGeometry_EnvelopeDefSvc", **kwargs): Cavern.addRZ( 2750.0 , 23001.0 ) # boundary with MS Cavern.addRZ( 1500.0 , 23001.0 ) # boundary with MS Cavern.addRZ( 1500.0 , 26046.0 ) # boundary with MS - Cavern.addRZ( 0.0 , 26046.0 ) # + Cavern.addRZ( 0.0 , 26046.0 ) # # the outer dimesions differ between collision and cosmics jobs from AthenaCommon.BeamFlags import jobproperties diff --git a/AtlasGeometryCommon/SubDetectorEnvelopes/share/postInclude.showEnvelopesGUI.py b/AtlasGeometryCommon/SubDetectorEnvelopes/share/postInclude.showEnvelopesGUI.py new file mode 100644 index 00000000000..a2186c9b390 --- /dev/null +++ b/AtlasGeometryCommon/SubDetectorEnvelopes/share/postInclude.showEnvelopesGUI.py @@ -0,0 +1,46 @@ +""" +Visualize envelopes as defined in EnvelopeDefSvc +Elmar Ritsch, 13/05/2016 +""" + +from AthenaCommon.CfgGetter import getService + + +def draw_envelope(ax, rlist_half, zlist_half, color, label): + + # mirror the given (r,z) values in the x-y plane + rlist = rlist_half[:] + zlist = zlist_half[:] + for r in reversed(rlist_half): + rlist.append(r) + for z in reversed(zlist_half): + zlist.append(-z) + rlist.append(rlist[0]) + zlist.append(zlist[0]) + + area = Polygon(zip(zlist, rlist), alpha=0.5, closed=True, color=color, label=label, linewidth=0.) + ax.add_patch(area) + + +if __name__ == "__main__": + import matplotlib + matplotlib.use('Qt4Agg') # use backend that supports GUI (rather than file output only) + import matplotlib.pyplot as plt + from matplotlib.patches import Polygon + + svc = getService('AtlasGeometry_EnvelopeDefSvc') + + fig, ax = plt.subplots(figsize=(20,10)) + + draw_envelope(ax, svc.FallbackBeamPipeR, svc.FallbackBeamPipeZ, 'r', label='BeamPipe') + draw_envelope(ax, svc.FallbackInDetR, svc.FallbackInDetZ, 'b', label='InDet') + draw_envelope(ax, svc.FallbackCaloR, svc.FallbackCaloZ, 'c', label='Calo') + draw_envelope(ax, svc.FallbackMuonR, svc.FallbackMuonZ, 'm', label='MS') + draw_envelope(ax, svc.FallbackCavernR, svc.FallbackCavernZ, 'k', label='Cavern') + + ax.autoscale_view() + plt.ylabel('r (mm)') + plt.xlabel('z (mm)') + plt.legend() + plt.show(block=True) + exit(1) -- GitLab