From 44727fba9137b371016e77f965298190a2f6c5c9 Mon Sep 17 00:00:00 2001
From: John Chapman <jchapman@cern.ch>
Date: Fri, 2 Dec 2022 13:08:12 +0100
Subject: [PATCH] Fix for ReSimulation of samples with specialConfig
 (ATLMCPROD-10108)

---
 .../share/specialConfig/preInclude.AMSB.py               | 3 +++
 .../share/specialConfig/preInclude.GMSB.py               | 3 +++
 .../share/specialConfig/preInclude.Monopole.py           | 5 +++++
 .../share/specialConfig/preInclude.Qball.py              | 7 +++++++
 .../share/specialConfig/preInclude.Quirks.py             | 3 +++
 .../share/specialConfig/preInclude.RHadronsPythia8.py    | 3 +++
 .../share/specialConfig/preInclude.SleptonsLLP.py        | 3 +++
 .../share/specialConfig/preInclude.fcp.py                | 9 +++++++++
 8 files changed, 36 insertions(+)

diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
index 37e3dc578a75..7e20c489e350 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py
@@ -42,6 +42,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
index 8905312b620e..c4b5c83df62f 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py
@@ -120,6 +120,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
index 48a7b52fe438..90acc66cbca6 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py
@@ -44,6 +44,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
@@ -52,6 +55,8 @@ try:
         simdict = simFlags.specialConfiguration.get_Value()
 except:
     from G4AtlasApps.SimFlags import simFlags
+    if not "InteractingPDGCodes" in simFlags.specialConfiguration.get_Value():
+        simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = str([4110000,-4110000])
     simdict = simFlags.specialConfiguration.get_Value()
 
 assert "MASS" in simdict
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
index 384c1cd5a8df..c3deb1dadd0b 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py
@@ -45,6 +45,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
@@ -55,6 +58,10 @@ try:
         simdict = simFlags.specialConfiguration.get_Value()
 except:
     from G4AtlasApps.SimFlags import simFlags
+    if not "InteractingPDGCodes" in simFlags.specialConfiguration.get_Value():
+        assert "CHARGE" in simFlags.specialConfiguration.get_Value()
+        CODE=10000000+int(float(simFlags.specialConfiguration.get_Value()["CHARGE"])*100)
+        simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = str([CODE,-1*CODE])
     simdict = simFlags.specialConfiguration.get_Value()
 
 assert "MASS" in simdict
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
index 7d4d74f20056..5143a54763d0 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py
@@ -21,6 +21,9 @@ if getPDGTABLE(simFlags.ExtraParticlesPDGTABLE.get_Value()):
         if "StreamHITS" in f.infos["stream_names"]:
             from Digitization.DigitizationFlags import digitizationFlags
             simdict = digitizationFlags.specialConfiguration.get_Value()
+            if simdict is None:
+                # Here we are in a ReSim job, so the input is a HITS file
+                raise ValueError
             doG4SimConfig = False
         else:
             from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py
index 99a701e537cb..043f8764b6fc 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.RHadronsPythia8.py
@@ -71,6 +71,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.SleptonsLLP.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.SleptonsLLP.py
index 1733f71bb31f..66d9361fb3aa 100644
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.SleptonsLLP.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.SleptonsLLP.py
@@ -72,6 +72,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.fcp.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.fcp.py
index 3ec70f10da37..10b725d6770c 100755
--- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.fcp.py
+++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.fcp.py
@@ -43,6 +43,9 @@ try:
     if "StreamHITS" in f.infos["stream_names"]:
         from Digitization.DigitizationFlags import digitizationFlags
         simdict = digitizationFlags.specialConfiguration.get_Value()
+        if simdict is None:
+            # Here we are in a ReSim job, so the input is a HITS file
+            raise ValueError
         doG4SimConfig = False
     else:
         from G4AtlasApps.SimFlags import simFlags
@@ -55,6 +58,12 @@ try:
         simdict = simFlags.specialConfiguration.get_Value()
 except:
     from G4AtlasApps.SimFlags import simFlags
+    if not "InteractingPDGCodes" in simFlags.specialConfiguration.get_Value():
+        assert "CHARGE" in simFlags.specialConfiguration.get_Value()
+        assert "X" in simFlags.specialConfiguration.get_Value()
+        assert "Y" in simFlags.specialConfiguration.get_Value()
+        CODE=int(20000000)+int(simFlags.specialConfiguration.get_Value()["X"])*1000+int(simFlags.specialConfiguration.get_Value()["Y"])*10
+        simFlags.specialConfiguration.get_Value()['InteractingPDGCodes'] = str([CODE,-1*CODE])
     simdict = simFlags.specialConfiguration.get_Value()
 
 assert "MASS" in simdict
-- 
GitLab