diff --git a/Control/AthenaConfiguration/python/TestDefaults.py b/Control/AthenaConfiguration/python/TestDefaults.py
index b1a35018220897d10b13123bb6c595c598f7d4f3..efc9307840e715e73f1b4f9a55ac6dfca47754ac 100644
--- a/Control/AthenaConfiguration/python/TestDefaults.py
+++ b/Control/AthenaConfiguration/python/TestDefaults.py
@@ -11,6 +11,16 @@ class defaultTestFiles(object):
     HITS= [d + "/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1"]
     HITS_SPECIAL = [d + "/DigitizationTests/mc16_13TeV.HITS.16965029._000024.pool.root.1"]
     HITS_DATA_OVERLAY = [d + "/OverlayMonitoringRTT/mc16_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.OverlaySim/HITS.pool.root"]
+    HITS_MINBIAS_HIGH = [
+        d + "/Tier0ChainTests/mc16_13TeV.361239.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_high.merge.HITS.e4981_s3087_s3089/HITS.10501933._000005.pool.root.1",
+        d + "/Tier0ChainTests/mc16_13TeV.361239.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_high.merge.HITS.e4981_s3087_s3089/HITS.10501933._000013.pool.root.1",
+        d + "/Tier0ChainTests/mc16_13TeV.361239.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_high.merge.HITS.e4981_s3087_s3089/HITS.10501933._000018.pool.root.1",
+    ]
+    HITS_MINBIAS_LOW = [
+        d + "/Tier0ChainTests/mc16_13TeV.361238.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_low.merge.HITS.e4981_s3087_s3089/HITS.10501925._000003.pool.root.1",
+        d + "/Tier0ChainTests/mc16_13TeV.361238.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_low.merge.HITS.e4981_s3087_s3089/HITS.10501925._000024.pool.root.1",
+        d + "/Tier0ChainTests/mc16_13TeV.361238.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_low.merge.HITS.e4981_s3087_s3089/HITS.10501925._000044.pool.root.1",
+    ]
     RAW = [d + "/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1"]
     RAW_BKG = [d + "/OverlayMonitoringRTT/mc15_valid.00200010.overlay_streamsAll_2016_pp_1.skim.DRAW.r8381/DRAW.09331084._000146.pool.root.1"]
     RDO = [d + "/Tier0ChainTests/q221/21.0/v1/myRDO.pool.root"]
diff --git a/Control/RngComps/python/RandomServices.py b/Control/RngComps/python/RandomServices.py
index aa4f9555958eda455b5cebd10eefba1726a6a271..16f7018c8ac0bc18f3ca327f41665e2f5892d829 100755
--- a/Control/RngComps/python/RandomServices.py
+++ b/Control/RngComps/python/RandomServices.py
@@ -18,8 +18,8 @@ AthEngines = {
 
 def dSFMT(seed, name="AtDSFMTGenSvc"):
     """Return a ComponentAccumulator containing an AtDSFMTGenSvc with seed"""
-    acc = ComponentAccumulator(name)
-    service = AtDSFMTGenSvc()
+    acc = ComponentAccumulator()
+    service = AtDSFMTGenSvc(name)
     service.Seeds.append(seed)
     acc.addService(service)
     return acc
diff --git a/Simulation/Digitization/python/PileUpConfigNew.py b/Simulation/Digitization/python/PileUpConfigNew.py
index 3e820245dd08627e16249fc6bd4792aa243290cb..9f4a8c8fd0035a35805b38c2ead06ad2cb27adcb 100644
--- a/Simulation/Digitization/python/PileUpConfigNew.py
+++ b/Simulation/Digitization/python/PileUpConfigNew.py
@@ -5,14 +5,19 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
-from RngComps.RandomServices import RNG
+from RngComps.RandomServices import dSFMT
 from Digitization import PileUpEventType
 from Digitization.RunDependentConfigNew import (
-    MaxNevtsPerXing,
+    maxNevtsPerXing,
     LumiProfileSvcCfg, NoProfileSvcCfg,
 )
 
 
+def PileUpConfigdSFMT(name):
+    """Local wrapper for dSFMT RNG service"""
+    return dSFMT(name + " OFFSET 340 123 345")
+
+
 def StepArrayBMCfg(flags, name="StepArrayBM", **kwargs):
     acc = ComponentAccumulator()
     kwargs.setdefault("IntensityPattern", flags.Digitization.PU.BeamIntensityPattern)
@@ -32,8 +37,8 @@ def FixedArrayBMCfg(flags, name="FixedArrayBM", **kwargs):
 def ArrayBMCfg(flags, name="ArrayBM", **kwargs):
     acc = ComponentAccumulator()
     kwargs.setdefault("IntensityPattern", flags.Digitization.PU.BeamIntensityPattern)
-    acc.merge(RNG())
-    kwargs.setdefault("RandomSvc", acc.getService("AthRNGSvc"))
+    acc.merge(PileUpConfigdSFMT("PileUpCollXingStream"))
+    kwargs.setdefault("RandomSvc", acc.getService("AtDSFMTGenSvc"))
     acc.addService(CompFactory.ArrayBM(name, **kwargs))
     return acc
 
@@ -81,6 +86,7 @@ def BeamHaloEventSelectorCfg(flags, name="BeamHaloEventSelector", **kwargs):
     return acc
 
 
+
 def MinBiasCacheCfg(flags, name="MinBiasCache", **kwargs):
     acc = ComponentAccumulator()
     kwargs.setdefault("CollPerXing", flags.Digitization.PU.NumberOfLowPtMinBias + flags.Digitization.PU.NumberOfHighPtMinBias)
@@ -98,9 +104,10 @@ def MinBiasCacheCfg(flags, name="MinBiasCache", **kwargs):
 
     kwargs.setdefault("OccupationFraction", (float(flags.Digitization.PU.BunchSpacing)/
                                              float(flags.Beam.BunchSpacing)))
+    
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     # FIXME migrated, but SplitBkgStreamsCache does not exist
@@ -120,9 +127,10 @@ def LowPtMinBiasCacheCfg(flags, name="LowPtMinBiasCache", **kwargs):
 
     kwargs.setdefault("OccupationFraction", (float(flags.Digitization.PU.BunchSpacing)/
                                              float(flags.Beam.BunchSpacing)))
+    
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     # Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise
@@ -146,9 +154,10 @@ def HighPtMinBiasCacheCfg(flags, name="HighPtMinBiasCache", **kwargs):
     kwargs.setdefault("EventSelector", acc.getService("HighPtMinBiasEventSelector"))
     kwargs.setdefault("OccupationFraction", (float(flags.Digitization.PU.BunchSpacing)/
                                              float(flags.Beam.BunchSpacing)))
+    
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     # Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise
@@ -179,9 +188,10 @@ def CavernCacheCfg(flags, name="CavernCache", **kwargs):
     kwargs.setdefault("OccupationFraction", OccupationFraction)
     acc.merge(CavernEventSelectorCfg(flags))
     kwargs.setdefault("EventSelector", acc.getService("cavernEventSelector"))
+    
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     # Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise
@@ -206,8 +216,8 @@ def BeamGasCacheCfg(flags, name="BeamGasCache", **kwargs):
     kwargs.setdefault("EventSelector", acc.getService("BeamGasEventSelector"))
 
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     # Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise
@@ -233,8 +243,8 @@ def BeamHaloCacheCfg(flags, name="BeamHaloCache", **kwargs):
     kwargs.setdefault("EventSelector", acc.getService("BeamHaloEventSelector"))
 
     RndmStreamName = "PileUpCollXingStream"
-    acc.merge(RNG(name=RndmStreamName))
-    kwargs.setdefault("RndmGenSvc", acc.getService(RndmStreamName))
+    acc.merge(PileUpConfigdSFMT(RndmStreamName))
+    kwargs.setdefault("RndmGenSvc", acc.getService("AtDSFMTGenSvc"))
     kwargs.setdefault("RndmStreamName", RndmStreamName)
 
     #Use BkgStreamsStepCaches when using the StepArrayBM and BkgStreamsCache otherwise
@@ -295,7 +305,7 @@ def PileUpEventLoopMgrCfg(flags, name="PileUpEventLoopMgr", **kwargs):
     kwargs.setdefault("lastXing", flags.Digitization.PU.FinalBunchCrossing)
 
     if flags.Digitization.PU.RunAndLumiOverrideList:
-        kwargs.setdefault("MaxMinBiasCollPerXing", MaxNevtsPerXing(flags))
+        kwargs.setdefault("MaxMinBiasCollPerXing", maxNevtsPerXing(flags))
         acc.merge(LumiProfileSvcCfg(flags))
         kwargs.setdefault("BeamLuminosity", acc.getService("LumiProfileSvc"))
     else:
diff --git a/Simulation/Digitization/test/DigitizationPUConfigNew_test.py b/Simulation/Digitization/test/DigitizationPUConfigNew_test.py
index c224fe37e8f4bc52d431094c8eee8e05a2c63bdf..74545bff07333b3b15196f3829c88466c493d4b1 100755
--- a/Simulation/Digitization/test/DigitizationPUConfigNew_test.py
+++ b/Simulation/Digitization/test/DigitizationPUConfigNew_test.py
@@ -17,43 +17,91 @@ from Digitization.DigitizationParametersConfig import writeDigitizationMetadata
 from MCTruthSimAlgs.RecoTimingConfig import MergeRecoTimingObjCfg
 from AthenaConfiguration.JobOptsDumper import JobOptsDumperCfg
 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
+from Digitization.PileUpConfigNew import PileUpEventLoopMgrCfg
 from DigitizationPUConfigNew_test_setup import (
-    test_HighPtMinbiasHitsFile,
-    test_LowPtMinbiasHitsFile,
     test_BeamIntensityPattern,
     test_fragment,
     pileUpCalc,
     makeBkgInputCol,
 )
+from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg
+from SCT_Digitization.SCT_DigitizationConfigNew import SCT_DigitizationCfg
+from TRT_Digitization.TRT_DigitizationConfigNew import TRT_DigitizationCfg
+from PixelDigitization.PixelDigitizationConfigNew import PixelDigitizationCfg
+from LArDigitization.LArDigitizationConfigNew import LArTriggerDigitizationCfg
+from TileSimAlgs.TileDigitizationConfig import TileDigitizationCfg, TileTriggerDigitizationCfg
+from MuonConfig.MDT_DigitizationConfig import MDT_DigitizationDigitToRDOCfg
+from MuonConfig.TGC_DigitizationConfig import TGC_DigitizationDigitToRDOCfg
+from MuonConfig.RPC_DigitizationConfig import RPC_DigitizationDigitToRDOCfg
+from MuonConfig.CSC_DigitizationConfig import CSC_DigitizationDigitToRDOCfg
+
+def EvtIdModifierSvc_add_modifier(svc, 
+        run_nbr=None, evt_nbr=None, time_stamp=None, lbk_nbr=None, 
+        nevts=1):
+    if run_nbr is None:
+        modify_run_nbr = 0
+        run_nbr = 0
+    else:
+        modify_run_nbr = 1
+        
+    if evt_nbr is None:
+        modify_evt_nbr = 0
+        evt_nbr = 0
+    else:
+        modify_evt_nbr = 1
+        
+    if time_stamp is None:
+        modify_time_stamp = 0
+        time_stamp = 0
+    else:
+        modify_time_stamp = 1
+
+    if lbk_nbr is None:
+        modify_lbk_nbr = 0
+        lbk_nbr = 0
+    else:
+        modify_lbk_nbr = 1
+
+    mod_bit = int(0b0000
+                | (modify_run_nbr << 0)
+                | (modify_evt_nbr << 1)
+                | (modify_time_stamp << 2)
+                | (modify_lbk_nbr << 3))
+
+    svc.Modifiers += [run_nbr, evt_nbr, time_stamp, lbk_nbr,
+                    nevts, mod_bit]
+
 
 # Set up logging and new style config
 log.setLevel(DEBUG)
 Configurable.configurableRun3Behavior = True
 
-evtMax = 4
+ConfigFlags.Exec.MaxEvents = 4
 
-# Configure
 ConfigFlags.Input.Files = defaultTestFiles.HITS
-ConfigFlags.Output.RDOFileName = "myRDO.pool.root"
-ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-20"
+ConfigFlags.Output.RDOFileName = "mc16d_ttbar.CA.RDO.pool.root"
+ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16"
+
 ConfigFlags.GeoModel.Align.Dynamic = False
-ConfigFlags.Concurrency.NumThreads = 1
-ConfigFlags.Concurrency.NumConcurrentEvents = 1
+ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01"
 
 ConfigFlags.Beam.BunchSpacing = 25
-# TODO deduplicate NumberOfCollisions?
 ConfigFlags.Beam.NumberOfCollisions = 20.
 
-ConfigFlags.Exec.MaxEvents = evtMax
-
 ConfigFlags.LAr.ROD.NumberOfCollisions = 20
 ConfigFlags.LAr.ROD.nSamples = 4
 ConfigFlags.LAr.ROD.DoOFCPileupOptimization = True
 ConfigFlags.LAr.ROD.FirstSample = 0
 ConfigFlags.LAr.ROD.UseHighestGainAutoCorr = True
 
-ConfigFlags.Digitization.DoXingByXingPileUp = True
+ConfigFlags.Digitization.Pileup = False
+ConfigFlags.Digitization.DoDigiTruth = True
+ConfigFlags.Digitization.TruthOutput = True
+ConfigFlags.Digitization.RandomSeedOffset = 170
+
+ConfigFlags.Digitization.DoXingByXingPileUp = True # TODO get success with this flag enabled
 ConfigFlags.Digitization.HighGainEMECIW = False
+
 ConfigFlags.Digitization.PU.BunchSpacing = 25
 ConfigFlags.Digitization.PU.CavernIgnoresBeamInt = True
 ConfigFlags.Digitization.PU.NumberOfCavern = 0.0
@@ -62,14 +110,18 @@ ConfigFlags.Digitization.PU.NumberOfLowPtMinBias = 80.290021063135
 ConfigFlags.Digitization.PU.BeamIntensityPattern = test_BeamIntensityPattern
 ConfigFlags.Digitization.PU.RunAndLumiOverrideList = test_fragment
 
-cols = makeBkgInputCol(ConfigFlags, [test_HighPtMinbiasHitsFile],
+cols = makeBkgInputCol(ConfigFlags, defaultTestFiles.HITS_MINBIAS_HIGH,
                        ConfigFlags.Digitization.PU.NumberOfHighPtMinBias, True)
 ConfigFlags.Digitization.PU.HighPtMinBiasInputCols = cols
 
-cols = makeBkgInputCol(ConfigFlags, [test_LowPtMinbiasHitsFile],
+cols = makeBkgInputCol(ConfigFlags, defaultTestFiles.HITS_MINBIAS_LOW,
                        ConfigFlags.Digitization.PU.NumberOfLowPtMinBias, True)
 ConfigFlags.Digitization.PU.LowPtMinBiasInputCols = cols
 
+ConfigFlags.Concurrency.NumThreads = 1
+ConfigFlags.Concurrency.NumConcurrentEvents = 1
+ConfigFlags.Tile.BestPhaseFromCOOL = False
+ConfigFlags.Tile.correctTime = False
 
 ConfigFlags.lock()
 
@@ -80,17 +132,10 @@ ConfigFlags.Sim.RunToTimestampDict
 acc = MainServicesCfg(ConfigFlags)
 acc.merge(PoolReadCfg(ConfigFlags))
 acc.merge(PoolWriteCfg(ConfigFlags))
-acc.merge(writeDigitizationMetadata(ConfigFlags))
-
-# Old EventInfo conversion
-if "EventInfo" not in ConfigFlags.Input.Collections:
-    acc.merge(EventInfoCnvAlgCfg(ConfigFlags,
-                                 inputKey="McEventInfo",
-                                 outputKey="EventInfo"))
 
-from Digitization.RunDependentConfigNew import EvtIdModifierSvcCfg
-acc.merge(EvtIdModifierSvcCfg(ConfigFlags))
+acc.merge(writeDigitizationMetadata(ConfigFlags))
 
+# Signal-only truth information
 from Digitization.PileUpToolsConfig import PileUpToolsCfg
 from MCTruthSimAlgs.MCTruthSimAlgsConfigNew import (
     SignalOnlyMcEventCollCfg,
@@ -99,27 +144,69 @@ from MCTruthSimAlgs.MCTruthSimAlgsConfigNew import (
     MergeCalibHitsCfg,
 )
 
+acc.merge(PileUpEventLoopMgrCfg(ConfigFlags))
+
 acc.merge(SignalOnlyMcEventCollCfg(ConfigFlags))
 acc.merge(MergeTruthJetsCfg(ConfigFlags))
 acc.merge(MergeMuonEntryLayerCfg(ConfigFlags))
 acc.merge(MergeCalibHitsCfg(ConfigFlags))
 
-
-# Migration of --digiSteeringConf
-# TODO configure output
-#acc.getEventAlgo("OutputStreamRDO").AcceptAlgs = ["StandardPileUpToolsAlg"]
+# Inner Detector
+acc.merge(BCM_DigitizationCfg(ConfigFlags))
+acc.merge(PixelDigitizationCfg(ConfigFlags))
+acc.merge(SCT_DigitizationCfg(ConfigFlags))
+acc.merge(TRT_DigitizationCfg(ConfigFlags))
+
+# Calorimeter
+acc.merge(LArTriggerDigitizationCfg(ConfigFlags))
+acc.merge(TileDigitizationCfg(ConfigFlags))
+acc.merge(TileTriggerDigitizationCfg(ConfigFlags))
+
+# Muon Spectrometer
+acc.merge(MDT_DigitizationDigitToRDOCfg(ConfigFlags))
+acc.merge(TGC_DigitizationDigitToRDOCfg(ConfigFlags))
+acc.merge(RPC_DigitizationDigitToRDOCfg(ConfigFlags))
+acc.merge(CSC_DigitizationDigitToRDOCfg(ConfigFlags))
+
+# Timing
+acc.merge(MergeRecoTimingObjCfg(ConfigFlags))
+
+# FIXME hack to match to buggy behaviour in old style configuration
+OutputStreamRDO = acc.getEventAlgo("OutputStreamRDO")
+OutputStreamRDO.ItemList += ["EventInfo#*"]
+OutputStreamRDO.ItemList.remove("xAOD::EventInfo#EventInfo")
+OutputStreamRDO.ItemList.remove("xAOD::EventAuxInfo#EventInfoAux.")
+# FIXME this is marked "# Temporary for debugging MBTSHits" in DigiOutput.py
+OutputStreamRDO.ItemList += ["TileHitVector#MBTSHits"]
+# for Tile
+# new style configures these, but they are left default in old config
+TilePulseForTileMuonReceiver = acc.getEventAlgo("TilePulseForTileMuonReceiver")
+TilePulseForTileMuonReceiver.TileRawChannelBuilderMF.TimeMaxForAmpCorrection = 25.
+TilePulseForTileMuonReceiver.TileRawChannelBuilderMF.TimeMinForAmpCorrection = -25.
+TileRChMaker = acc.getEventAlgo("TileRChMaker")
+TileRChMaker.TileRawChannelBuilderFitOverflow.TimeMaxForAmpCorrection = 25.
+TileRChMaker.TileRawChannelBuilderFitOverflow.TimeMinForAmpCorrection = -25.
 
 # Dump config
-acc.merge(JobOptsDumperCfg(ConfigFlags, FileName="DigiPUConfig.txt"))
+acc.merge(JobOptsDumperCfg(ConfigFlags, FileName="DigiPUConfigCA.txt"))
 acc.getService("StoreGateSvc").Dump = True
 acc.getService("ConditionStore").Dump = True
-acc.printConfig(withDetails=True)
+acc.printConfig(withDetails=True, summariseProps=True)
 ConfigFlags.dump()
+# print services
+from AthenaConfiguration.ComponentAccumulator import filterComponents
+for s, _ in filterComponents(acc._services):
+    acc._msg.info(s)
+# print conditions
+for s in acc._conditionsAlgs:
+    acc._msg.info(s)
+
+# dump pickle
+with open("DigiPUConfigCA.pkl", "wb") as f:
+    acc.store(f)
 
-# Was not merged; this prevents errors
-acc.wasMerged()
 # TODO uncomment running in the test once successful
 # Execute and finish
-#sc = acc.run(maxEvents=evtMax)
+#sc = acc.run(maxEvents=ConfigFlags.Exec.MaxEvents)
 # Success should be 0
 #sys.exit(not sc.isSuccess())
diff --git a/Simulation/Digitization/test/DigitizationPUConfigNew_test_setup.py b/Simulation/Digitization/test/DigitizationPUConfigNew_test_setup.py
index 7b91471cc89dccaa2cd480ab2d3a999f1ab7cf85..87f5c3ed5ba1899031ad503fb977d972eb495515 100644
--- a/Simulation/Digitization/test/DigitizationPUConfigNew_test_setup.py
+++ b/Simulation/Digitization/test/DigitizationPUConfigNew_test_setup.py
@@ -3,10 +3,6 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 
-test_HighPtMinbiasHitsFile = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361239.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_high.merge.HITS.e4981_s3087_s3089/*"
-test_LowPtMinbiasHitsFile = "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361238.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_low.merge.HITS.e4981_s3087_s3089/*"
-
-
 # lifted from preInlcude.PileUpBunchTrainsMC16c_2017_Config1.py
 test_BeamIntensityPattern = [0.0, # bunch crossing zero is always empty
 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
@@ -342,8 +338,9 @@ JobMaker=[
 ]
 
 import math
+# TODO this should be integrated into the test (ConfigFlags.Exec.MaxEvents?)
 trfJobNumber = 1
-trfMaxEvents = 25
+trfMaxEvents = 4
 corrMaxEvents = float(trfMaxEvents)
 
 #We may need to repeat this run for long production jobs.
@@ -406,6 +403,7 @@ def makeBkgInputCol(flags, initialList, nBkgEvtsPerCrossing, correctForEmptyBunc
     nBkgEventsPerFile = 5000
     try:
         from PyUtils.MetaReader import read_metadata
+        # TODO fix traceback messages generated here
         metadata = read_metadata(initialList[0])
         metadata = metadata[initialList[0]]  # promote all keys one level up
         nBkgEventsPerFile = int(metadata["nentries"])
diff --git a/Simulation/Tests/DigitizationTests/test/test_PileUpDigiComparison.sh b/Simulation/Tests/DigitizationTests/test/test_PileUpDigiComparison.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e97e3189f892316b5f3ffd8680d05340bc132758
--- /dev/null
+++ b/Simulation/Tests/DigitizationTests/test/test_PileUpDigiComparison.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# art-description: Run a digitization example to compare configuration between ConfGetter and the new ComponentAccumulator approch.
+# art-type: grid
+# art-include: master/Athena
+# art-output: mc16a_ttbar.CG.RDO.pool.root
+# art-output: mc16a_ttbar.CA.RDO.pool.root
+# art-output: log.*
+
+DigitizationPUConfigNew_test.py
+rc=$?
+echo  "art-result: $rc CAdigi"
+
+DigiOutFileName="mc16d_ttbar.CG.RDO.pool.root"
+HighPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361239.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_high.merge.HITS.e4981_s3087_s3089/*"
+LowPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc16_13TeV.361238.Pythia8EvtGen_A3NNPDF23LO_minbias_inelastic_low.merge.HITS.e4981_s3087_s3089/*"
+
+rc2=-9999
+if [ $rc -eq 0 ]
+then
+    # config only
+    Digi_tf.py \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --conditionsTag default:OFLCOND-MC16-SDR-20 \
+    --digiSeedOffset1 170 --digiSeedOffset2 170 \
+    --geometryVersion default:ATLAS-R2-2016-01-00-01 \
+    --inputHighPtMinbiasHitsFile ${HighPtMinbiasHitsFiles} \
+    --inputLowPtMinbiasHitsFile ${LowPtMinbiasHitsFiles} \
+    --jobNumber 1 \
+    --maxEvents 4 \
+    --numberOfCavernBkg 0 \
+    --numberOfHighPtMinBias 0.2099789464 \
+    --numberOfLowPtMinBias 80.290021063135 \
+    --outputRDOFile ${DigiOutFileName} \
+    --digiSteeringConf "StandardSignalOnlyTruth" \
+    --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"]' 'condSeq.LArAutoCorrTotalCondAlg.deltaBunch=1' 'job+=CfgMgr.JobOptsDumperAlg(FileName="DigiPUConfigCG.txt")' \
+    --postInclude 'default:PyJobTransforms/UseFrontier.py' \
+    --pileupFinalBunch 6 \
+    --preExec 'all:from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(20.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False)' \
+    --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInlcude.PileUpBunchTrainsMC16c_2017_Config1.py,RunDependentSimData/configLumi_run300000_mc16d.py' \
+    --skipEvents 0 \
+    --athenaopts '"--config-only=DigiPUConfigCG.pkl"'
+    # full run
+    Digi_tf.py \
+    --inputHITSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e4993_s3091/HITS.10504490._000425.pool.root.1 \
+    --conditionsTag default:OFLCOND-MC16-SDR-20 \
+    --digiSeedOffset1 170 --digiSeedOffset2 170 \
+    --geometryVersion default:ATLAS-R2-2016-01-00-01 \
+    --inputHighPtMinbiasHitsFile ${HighPtMinbiasHitsFiles} \
+    --inputLowPtMinbiasHitsFile ${LowPtMinbiasHitsFiles} \
+    --jobNumber 1 \
+    --maxEvents 4 \
+    --numberOfCavernBkg 0 \
+    --numberOfHighPtMinBias 0.2099789464 \
+    --numberOfLowPtMinBias 80.290021063135 \
+    --outputRDOFile ${DigiOutFileName} \
+    --digiSteeringConf "StandardSignalOnlyTruth" \
+    --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"]' 'condSeq.LArAutoCorrTotalCondAlg.deltaBunch=1' 'job+=CfgMgr.JobOptsDumperAlg(FileName="DigiPUConfigCG.txt")' \
+    --postInclude 'default:PyJobTransforms/UseFrontier.py' \
+    --pileupFinalBunch 6 \
+    --preExec 'all:from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(20.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True); from LArDigitization.LArDigitizationFlags import jobproperties;jobproperties.LArDigitizationFlags.useEmecIwHighGain.set_Value_and_Lock(False)' \
+    --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInlcude.PileUpBunchTrainsMC16c_2017_Config1.py,RunDependentSimData/configLumi_run300000_mc16d.py' \
+    --skipEvents 0
+fi
+
+echo  "art-result: $rc2 STdigi"
+
+rc3=-9999
+if [ $rc2 -eq 0 ]
+then
+    acmd.py diff-root mc16d_ttbar.CG.RDO.pool.root mc16d_ttbar.CA.RDO.pool.root --mode=semi-detailed --order-trees --ignore-leaves RecoTimingObj_p1_HITStoRDO_timings index_ref --error-mode resilient
+    rc3=$?
+fi
+
+echo  "art-result: $rc3 comparison"