From a76847d3d2f560cf5698acd818720405f290fac8 Mon Sep 17 00:00:00 2001
From: John Kenneth Anders <john.kenneth.anders@cern.ch>
Date: Tue, 5 Mar 2019 16:55:07 +0000
Subject: [PATCH] Merge branch 'QballSimFix_ALTMCPROD-6719_21.0' into '21.0'

Fixes for Qball simulation configuration

See merge request atlas/athena!21422

(cherry picked from commit 35bdc9fea6a99bdee9cb226eaf27440a8716ca3b)

57e41aa4 ISF_GenParticleInteractingFilter configuration fix
40c1c6f0 Patch preInclude.Qball.py to work-around missing specialConfiguration metadata
---
 .../ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py        | 4 ++--
 .../share/specialConfig/preInclude.Monopole.py             | 2 +-
 .../share/specialConfig/preInclude.Qball.py                | 7 +++++--
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
index 87d00a7c3f6..0bc48a4f18a 100644
--- a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfig.py
@@ -91,9 +91,9 @@ def getGenParticleInteractingFilter(name="ISF_GenParticleInteractingFilter", **k
     from G4AtlasApps.SimFlags import simFlags
     simdict = simFlags.specialConfiguration.get_Value()
     if simdict is not None and "InteractingPDGCodes" in simdict:
-        kwargs.setdefault('AdditionalInteractingParticleTypes', simdict["InteractingPDGCodes"])
+        kwargs.setdefault('AdditionalInteractingParticleTypes', eval(simdict["InteractingPDGCodes"]))
     if simdict is not None and "NonInteractingPDGCodes" in simdict:
-        kwargs.setdefault('AdditionalNonInteractingParticleTypes', simdict["InteractingNonPDGCodes"])
+        kwargs.setdefault('AdditionalNonInteractingParticleTypes', eval(simdict["InteractingNonPDGCodes"]))
     return CfgMgr.ISF__GenParticleInteractingFilter(name, **kwargs)
 
 def getEtaPhiFilter(name="ISF_EtaPhiFilter", **kwargs):
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
index b9af8ac2960..eff6164861f 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
@@ -48,7 +48,7 @@ try:
     else:
         from G4AtlasApps.SimFlags import simFlags
         if not "InteractingPDGCodes" in simFlags.specialConfiguration.get_Value():
-            simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = [4110000,-4110000]
+            simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = str([4110000,-4110000])
         simdict = simFlags.specialConfiguration.get_Value()
 except:
     from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
index 723fe396f29..5b686b1ad2c 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
@@ -37,6 +37,8 @@ def load_files_for_qball_scenario(MASS, CHARGE):
     del BLINE1
     del BLINE2
 
+assert "MASS" in simdict
+assert "CHARGE" in simdict
 doG4SimConfig = True
 from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
 import PyUtils.AthFile as af
@@ -49,13 +51,14 @@ try:
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
+        if not "InteractingPDGCodes" in simFlags.specialConfiguration.get_Value():
+            CODE=10000000+int(float(simdict["CHARGE"])*100)
+            simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = str([CODE,-1*CODE])
         simdict = simFlags.specialConfiguration.get_Value()
 except:
     from G4AtlasApps.SimFlags import simFlags
     simdict = simFlags.specialConfiguration.get_Value()
 
-assert "MASS" in simdict
-assert "CHARGE" in simdict
 load_files_for_qball_scenario(simdict["MASS"], simdict["CHARGE"])
 
 if doG4SimConfig:
-- 
GitLab