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