From cb7ab0b458aef3ccf655b2fce600a1a476654f96 Mon Sep 17 00:00:00 2001
From: John Chapman <jchapman@cern.ch>
Date: Wed, 20 Jun 2018 14:30:30 +0200
Subject: [PATCH] Fix SplitPileUpToolsAlg and add SplitSFPileUpToolsAlg

Adding the missing conditions folder configuration to the
`PixelDigitizationToolHS` `CfgGetter` method. This fixes
running digitization with the `SplitPileUpToolsAlg`.
This runs full digitization for both pile-up and hard-scatter.
Then added a new configuration called `SplitSFPileUpToolsAlg`
which runs full digitization for hard-scatter and fast digitization
for pile-up.

These changes are part of the work for ATLASSIM-3737.

Former-commit-id: 86cde12241b0399c48762844a0a86dde93e6b5be
---
 .../Digitization/python/DigiAlgConfig.py      | 36 +++++++++++++++++++
 Simulation/Digitization/python/DigiOutput.py  |  2 +-
 .../python/DigitizationConfigDb.py            |  1 +
 3 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/Simulation/Digitization/python/DigiAlgConfig.py b/Simulation/Digitization/python/DigiAlgConfig.py
index ae61ae9f968..cbac1ef3a7f 100644
--- a/Simulation/Digitization/python/DigiAlgConfig.py
+++ b/Simulation/Digitization/python/DigiAlgConfig.py
@@ -179,6 +179,22 @@ def getSplitInDetPileUpTools():
         PileUpToolsList += [ "TRTDigitizationToolPU" ]
     return PileUpToolsList
 
+def getSplitSFInDetPileUpTools():
+    from AthenaCommon.DetFlags import DetFlags
+    PileUpToolsList = []
+    if DetFlags.digitize.BCM_on():
+        PileUpToolsList += [ "BCM_DigitizationTool" ]
+    if DetFlags.digitize.pixel_on():
+        PileUpToolsList += [ "PixelDigitizationToolHS" ]
+        PileUpToolsList += [ "PixelFastDigitizationToolPU" ]
+    if DetFlags.digitize.SCT_on():
+        PileUpToolsList += [ "SCT_DigitizationToolHS" ]
+        PileUpToolsList += [ "SCT_FastDigitizationToolPU" ]
+    if DetFlags.digitize.TRT_on():
+        PileUpToolsList += [ "TRTDigitizationToolHS" ]
+        PileUpToolsList += [ "TRTFastDigitizationToolPU" ]
+    return PileUpToolsList
+
 def getSplitNoMergeInDetPileUpTools():
     """ This is for testing the fast chain with full digitization in split PU mode without
 merging pileup
@@ -379,6 +395,22 @@ def getSplitPileUpToolsList():
     PileUpToolsList += [ "MergeRecoTimingObjTool" ]
     return PileUpToolsList
 
+def getSplitSFPileUpToolsList():
+    PileUpToolsList = []
+    ## Truth information
+    PileUpToolsList += getStandardTruthPileUpTools()
+    ## Forward Detector Digitization
+    PileUpToolsList += getStandardForwardPileUpTools()
+    ## Inner Detector Digitization - non-standard
+    PileUpToolsList += getSplitSFInDetPileUpTools()
+    ## Calo Digitization
+    PileUpToolsList += getStandardCaloPileUpTools()
+    ## Muon System Digitization
+    PileUpToolsList += getStandardMuonPileUpTools()
+    ## RecoTimingObj
+    PileUpToolsList += [ "MergeRecoTimingObjTool" ]
+    return PileUpToolsList
+
 def getSplitNoMergePileUpToolsList():
     PileUpToolsList = []
     ## Truth information
@@ -459,6 +491,10 @@ def getSplitPileUpToolsAlg(name="SplitPileUpToolsAlg", **kwargs):
     kwargs.setdefault('PileUpTools', getSplitPileUpToolsList() )
     return getStandardPileUpToolsAlg(name, **kwargs)
 
+def getSplitSFPileUpToolsAlg(name="SplitSFPileUpToolsAlg", **kwargs):
+    kwargs.setdefault('PileUpTools', getSplitSFPileUpToolsList() )
+    return getStandardPileUpToolsAlg(name, **kwargs)
+
 def getStandardSignalOnlyTruthPileUpToolsAlg(name="StandardSignalOnlyTruthPileUpToolsAlg", **kwargs):
     kwargs.setdefault('PileUpTools', getStandardSignalOnlyTruthPileUpToolsList() )
     return getStandardPileUpToolsAlg(name, **kwargs)
diff --git a/Simulation/Digitization/python/DigiOutput.py b/Simulation/Digitization/python/DigiOutput.py
index 0b4f1521e7f..08e7afa1766 100644
--- a/Simulation/Digitization/python/DigiOutput.py
+++ b/Simulation/Digitization/python/DigiOutput.py
@@ -34,7 +34,7 @@ def getStreamRDO_ItemList(log):
         if standardDigiConfig():
             noFastDigi = set(keys).isdisjoint(set(digitizationFlags.experimentalDigi()))
         else:
-            noFastDigi = set(['SplitNoMergeFFPileUpToolsAlg', 'SplitNoMergeSFPileUpToolsAlg', 'SplitNoMergeFSPileUpToolsAlg', 'FastPileUpToolsAlg']).isdisjoint(set([digitizationFlags.digiSteeringConf.get_Value()]))
+            noFastDigi = set(['SplitNoMergeFFPileUpToolsAlg', 'SplitNoMergeSFPileUpToolsAlg', 'SplitNoMergeFSPileUpToolsAlg', 'FastPileUpToolsAlg', 'SplitSFPileUpToolsAlg']).isdisjoint(set([digitizationFlags.digiSteeringConf.get_Value()]))
         return not noFastDigi
 
     def fastPixelDigiOutputExpected():
diff --git a/Simulation/Digitization/python/DigitizationConfigDb.py b/Simulation/Digitization/python/DigitizationConfigDb.py
index a791db8ec48..e95e5364e89 100644
--- a/Simulation/Digitization/python/DigitizationConfigDb.py
+++ b/Simulation/Digitization/python/DigitizationConfigDb.py
@@ -30,6 +30,7 @@ addService("Digitization.PileUpConfig.getPileUpEventLoopMgr"         , "PileUpEv
 addAlgorithm("Digitization.DigiAlgConfig.getStandardPileUpToolsAlg"  , "StandardPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getFastPileUpToolsAlg"      , "FastPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getSplitPileUpToolsAlg"     , "SplitPileUpToolsAlg")
+addAlgorithm("Digitization.DigiAlgConfig.getSplitSFPileUpToolsAlg"  , "SplitSFPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getStandardSignalOnlyTruthPileUpToolsAlg"  , "StandardSignalOnlyTruthPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getStandardInTimeOnlyTruthPileUpToolsAlg"  , "StandardInTimeOnlyTruthPileUpToolsAlg")
 addAlgorithm("Digitization.DigiAlgConfig.getStandardInTimeOnlyGeantinoTruthPileUpToolsAlg"  , "StandardInTimeOnlyGeantinoTruthPileUpToolsAlg")
-- 
GitLab