From c6e524ba56910a4d7e6ac1e2eaff2c85d42aadbb Mon Sep 17 00:00:00 2001
From: John Chapman <jchapman@cern.ch>
Date: Mon, 12 Feb 2018 09:50:03 +0100
Subject: [PATCH] Migrate G4HitFilterTool configuration

Migrate `G4UA::G4HitFilterTool` configuration to use
`simFlags.OptionalUserActionList`. See ATLASSIM-3569.
---
 .../G4Extensions/G4HitFilter/CMakeLists.txt   |  2 --
 .../G4HitFilter/python/G4HitFilterConfig.py   | 32 +++++++++++++++----
 .../G4HitFilter/share/G4HitFilter.py          | 27 ----------------
 .../share/g4/preInclude.HaloSim.py            |  8 +----
 4 files changed, 27 insertions(+), 42 deletions(-)
 delete mode 100644 Simulation/G4Extensions/G4HitFilter/share/G4HitFilter.py

diff --git a/Simulation/G4Extensions/G4HitFilter/CMakeLists.txt b/Simulation/G4Extensions/G4HitFilter/CMakeLists.txt
index 572c46cae70..28c3f71728c 100644
--- a/Simulation/G4Extensions/G4HitFilter/CMakeLists.txt
+++ b/Simulation/G4Extensions/G4HitFilter/CMakeLists.txt
@@ -35,5 +35,3 @@ atlas_add_component( G4HitFilter
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
-atlas_install_joboptions( share/*.py )
-
diff --git a/Simulation/G4Extensions/G4HitFilter/python/G4HitFilterConfig.py b/Simulation/G4Extensions/G4HitFilter/python/G4HitFilterConfig.py
index 7e91279de22..4bba3bab758 100644
--- a/Simulation/G4Extensions/G4HitFilter/python/G4HitFilterConfig.py
+++ b/Simulation/G4Extensions/G4HitFilter/python/G4HitFilterConfig.py
@@ -1,11 +1,31 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon import CfgMgr
-from G4AtlasServices import G4AtlasServicesConfig
 
 def getG4HitFilterTool(name="G4UA::G4HitFilterTool", **kwargs):
-    from G4HitFilter.G4HitFilterConf import G4UA__G4HitFilterTool
-    return G4UA__G4HitFilterTool(name, **kwargs)
-
-def addG4HitFilterTool(name="G4UA::G4HitFilterTool",system=False):
-    G4AtlasServicesConfig.addAction(name,['Run','Event'],system)
+    from G4AtlasApps.SimFlags import simFlags
+    # example custom configuration
+    if name in simFlags.UserActionConfig.get_Value().keys():
+        for prop,value in simFlags.UserActionConfig.get_Value()[name].iteritems():
+            kwargs.setdefault(prop,value)
+    kwargs.setdefault('VolumeNames',
+                      ["BCMHits",
+                       "BLMHits",
+                       "CSC_Hits",
+                       "LArCalibrationHitActive",
+                       "LArCalibrationHitDeadMaterial",
+                       "LArCalibrationHitInactive",
+                       "LArHitEMB",
+                       "LArHitEMEC",
+                       "LArHitFCAL",
+                       "LArHitHEC",
+                       "MBTSHits",
+                       "MDT_Hits",
+                       "PixelHits",
+                       "RPC_Hits",
+                       "SCT_Hits",
+                       "TGC_Hits",
+                       "TRTUncompressedHits",
+                       "TileHitVec"]
+                   )
+    return CfgMgr.G4UA__G4HitFilterTool(name, **kwargs)
diff --git a/Simulation/G4Extensions/G4HitFilter/share/G4HitFilter.py b/Simulation/G4Extensions/G4HitFilter/share/G4HitFilter.py
deleted file mode 100644
index da401cab08a..00000000000
--- a/Simulation/G4Extensions/G4HitFilter/share/G4HitFilter.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from AthenaCommon.CfgGetter import getPublicTool
-from G4AtlasApps.SimFlags import simFlags
-# configuration for MT actions
-from G4HitFilter.G4HitFilterConfig import addG4HitFilterTool
-hitf = getPublicTool('G4UA::G4HitFilterTool',tryDefaultConfigurable=True)
-addG4HitFilterTool(hitf)
-
-hitf.VolumeNames=[
-    "BCMHits",
-    "BLMHits",
-    "CSC_Hits",
-    "LArCalibrationHitActive",
-    "LArCalibrationHitDeadMaterial",
-    "LArCalibrationHitInactive",
-    "LArHitEMB",
-    "LArHitEMEC",
-    "LArHitFCAL",
-    "LArHitHEC",
-    "MBTSHits",
-    "MDT_Hits",
-    "PixelHits",
-    "RPC_Hits",
-    "SCT_Hits",
-    "TGC_Hits",
-    "TRTUncompressedHits",
-    "TileHitVec"
-    ]
diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.HaloSim.py b/Simulation/SimulationJobOptions/share/g4/preInclude.HaloSim.py
index b34af537cbb..1c30058965b 100644
--- a/Simulation/SimulationJobOptions/share/g4/preInclude.HaloSim.py
+++ b/Simulation/SimulationJobOptions/share/g4/preInclude.HaloSim.py
@@ -18,10 +18,4 @@ simFlags.EventFilter.switchFilterOn('VertexRangeChecker')
 simFlags.VertexFromCondDB.set_Off()
 simFlags.VertexTimeOffset.set_Off()
 
-# Hit filter setup function for callback
-def hitFilterSetup():
-  atlasG4log.info("Setting up filter parameters")
-  include("G4HitFilter/G4HitFilter.py")
-
-# Register the callback
-simFlags.InitFunctions.add_function("preInitG4", hitFilterSetup)
+simFlags.OptionalUserActionList.addAction("G4UA::G4HitFilterTool",['Run','Event'])
-- 
GitLab