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"