From 8ef3e7abcf6fa4afd24a46a01fe4931e2377c3e2 Mon Sep 17 00:00:00 2001 From: Tadej Novak <tadej.novak@cern.ch> Date: Fri, 12 Apr 2024 08:30:56 +0200 Subject: [PATCH] CP algs: Use flags and data type consistently in tests --- AtlasTest/CITest/Athena.cmake | 8 +- .../AnalysisAlgorithmsConfig/CMakeLists.txt | 85 +++++++++---------- .../python/FullCPAlgorithmsTest.py | 16 ++-- .../scripts/FullCPAlgorithmsTest_CA.py | 42 ++++----- .../scripts/FullCPAlgorithmsTest_eljob.py | 63 ++++++-------- .../python/PileupAnalysisSequence.py | 22 +++-- 6 files changed, 115 insertions(+), 121 deletions(-) diff --git a/AtlasTest/CITest/Athena.cmake b/AtlasTest/CITest/Athena.cmake index 11fcabe7f0a4..5bb128e03381 100644 --- a/AtlasTest/CITest/Athena.cmake +++ b/AtlasTest/CITest/Athena.cmake @@ -160,11 +160,11 @@ atlas_add_citest( RecoRun4MC_DAODPHYS ################################################################################# atlas_add_citest( CPAlgorithmsRun2MC_PHYS - SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type mc --input-file ../DerivationRun2MC_PHYS/run_mc_PHYS_Run2/DAOD_PHYS.myOutput.pool.root + SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type fullsim --input-file ../DerivationRun2MC_PHYS/run_mc_PHYS_Run2/DAOD_PHYS.myOutput.pool.root DEPENDS_SUCCESS DerivationRun2MC_PHYS ) atlas_add_citest( CPAlgorithmsRun2MC_PHYSLITE - SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type mc --physlite --input-file ../DerivationRun2MC_PHYSLITE/run_mc_PHYSLITE_Run2/DAOD_PHYSLITE.myOutput.pool.root + SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type fullsim --physlite --input-file ../DerivationRun2MC_PHYSLITE/run_mc_PHYSLITE_Run2/DAOD_PHYSLITE.myOutput.pool.root DEPENDS_SUCCESS DerivationRun2MC_PHYSLITE ) atlas_add_citest( CPAlgorithmsRun2Data_PHYS @@ -176,11 +176,11 @@ atlas_add_citest( CPAlgorithmsRun2Data_PHYSLITE DEPENDS_SUCCESS DerivationRun2Data_PHYSLITE ) atlas_add_citest( CPAlgorithmsRun3MC_PHYS - SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type mc --input-file ../DerivationRun3MC_PHYS/run_mc_PHYS_Run3/DAOD_PHYS.myOutput.pool.root + SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type fullsim --input-file ../DerivationRun3MC_PHYS/run_mc_PHYS_Run3/DAOD_PHYS.myOutput.pool.root DEPENDS_SUCCESS DerivationRun3MC_PHYS ) atlas_add_citest( CPAlgorithmsRun3MC_PHYSLITE - SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type mc --physlite --input-file ../DerivationRun3MC_PHYSLITE/run_mc_PHYSLITE_Run3/DAOD_PHYSLITE.myOutput.pool.root + SCRIPT FullCPAlgorithmsTest_CA.py --block-config --data-type fullsim --physlite --input-file ../DerivationRun3MC_PHYSLITE/run_mc_PHYSLITE_Run3/DAOD_PHYSLITE.myOutput.pool.root DEPENDS_SUCCESS DerivationRun3MC_PHYSLITE ) atlas_add_citest( CPAlgorithmsRun3Data_PHYS diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/CMakeLists.txt b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/CMakeLists.txt index b3d94937fd03..54df8b66bc45 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/CMakeLists.txt +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/CMakeLists.txt @@ -15,7 +15,7 @@ if( XAOD_STANDALONE ) function( add_test_job NAME DATA_TYPE ) atlas_add_test( ${NAME} - SCRIPT FullCPAlgorithmsTest_eljob.py --data-type ${DATA_TYPE} --direct-driver --submission-dir submitDir-${NAME} --use-flags ${ARGN} + SCRIPT FullCPAlgorithmsTest_eljob.py --data-type ${DATA_TYPE} --direct-driver --submission-dir submitDir-${NAME} ${ARGN} POST_EXEC_SCRIPT nopost.sh PROPERTIES TIMEOUT 900 ) @@ -59,69 +59,62 @@ endif() add_test_job( TestJobDataSequence data --for-compare --no-systematics ) -add_test_job( TestJobDataConfig data ${USE_FLAGS} --for-compare --block-config --no-systematics ) -add_test_job( TestJobDataTextConfig data ${USE_FLAGS} --for-compare --text-config ${CONFIG_PATH} --no-systematics ) -add_test_job( TestJobDataFull data ${USE_FLAGS} --block-config --no-systematics ) -add_test_job( TestJobDataNominalOR data ${USE_FLAGS} --block-config --no-systematics --only-nominal-or ) +add_test_job( TestJobDataConfig data --for-compare --block-config --no-systematics ) +add_test_job( TestJobDataTextConfig data --for-compare --text-config ${CONFIG_PATH} --no-systematics ) +add_test_job( TestJobDataFull data --block-config --no-systematics ) +add_test_job( TestJobDataNominalOR data --block-config --no-systematics --only-nominal-or ) add_test_compare( TestJobDataCompare data TestJobDataSequence TestJobDataConfig ) add_test_compare( TestJobDataCompareConfig data TestJobDataConfig TestJobDataTextConfig ) -add_test_job( TestJobFullSimSequence mc --for-compare ) -add_test_job( TestJobFullSimConfig mc --for-compare --block-config ) -add_test_job( TestJobFullSimTextConfig mc --for-compare --text-config ${CONFIG_PATH} ) -add_test_job( TestJobFullSimFull mc --block-config ) -add_test_job( TestJobFullSimNominalOR mc --block-config --only-nominal-or ) -add_test_compare( TestJobFullSimCompare mc TestJobFullSimSequence TestJobFullSimConfig ) -add_test_compare( TestJobFullSimCompareConfig mc TestJobFullSimConfig TestJobFullSimTextConfig ) - -add_test_job( TestJobFastSimSequence afii --for-compare ) -add_test_job( TestJobFastSimConfig afii --for-compare --block-config ) -add_test_job( TestJobFastSimTextConfig afii --for-compare --text-config ${CONFIG_PATH} ) -add_test_job( TestJobFastSimFull afii --block-config ) -add_test_job( TestJobFastSimNominalOR afii --block-config --only-nominal-or ) -add_test_compare( TestJobFastSimCompare afii TestJobFastSimSequence TestJobFastSimConfig ) - -# FIX ME: the text configuration currently does not create weight_pileup_%SYS% -# for FastSim. Not quite sure why, but the practical solution for now is to -# disable this comparison. -#add_test_compare( TestJobFastSimCompareConfig afii TestJobFastSimConfig TestJobFastSimTextConfig ) - - - +add_test_job( TestJobFullSimSequence fullsim --for-compare ) +add_test_job( TestJobFullSimConfig fullsim --for-compare --block-config ) +add_test_job( TestJobFullSimTextConfig fullsim --for-compare --text-config ${CONFIG_PATH} ) +add_test_job( TestJobFullSimFull fullsim --block-config ) +add_test_job( TestJobFullSimNominalOR fullsim --block-config --only-nominal-or ) +add_test_compare( TestJobFullSimCompare fullsim TestJobFullSimSequence TestJobFullSimConfig ) +add_test_compare( TestJobFullSimCompareConfig fullsim TestJobFullSimConfig TestJobFullSimTextConfig ) + +add_test_job( TestJobFastSimSequence fastsim --for-compare ) +add_test_job( TestJobFastSimConfig fastsim --for-compare --block-config ) +add_test_job( TestJobFastSimTextConfig fastsim --for-compare --text-config ${CONFIG_PATH} ) +add_test_job( TestJobFastSimFull fastsim --block-config ) +add_test_job( TestJobFastSimNominalOR fastsim --block-config --only-nominal-or ) +add_test_compare( TestJobFastSimCompare fastsim TestJobFastSimSequence TestJobFastSimConfig ) +# add_test_compare( TestJobFastSimCompareConfig fastsim TestJobFastSimConfig TestJobFastSimTextConfig ) # FIX ME: There are some issues with the PHYSLITE tests that need to # be investigated, but until that happens I run some tests only in # AnalysisBase, and disable comparisons alltogether. add_test_job( TestJobDataSequenceLite data --for-compare --physlite --no-systematics ) -add_test_job( TestJobDataConfigLite data ${USE_FLAGS} --for-compare --block-config --physlite --no-systematics ) -add_test_job( TestJobDataTextConfigLite data ${USE_FLAGS} --for-compare --text-config ${CONFIG_PATH} --physlite --no-systematics ) -add_test_job( TestJobDataFullLite data ${USE_FLAGS} --block-config --physlite --no-systematics ) -add_test_job( TestJobDataNominalORLite data ${USE_FLAGS} --block-config --only-nominal-or --physlite ) -#add_test_compare( TestJobDataCompareLite data TestJobDataSequenceLite TestJobDataConfigLite ) -#add_test_compare( TestJobDataCompareConfigLite data TestJobDataConfigLite TestJobDataTextConfigLite ) +add_test_job( TestJobDataConfigLite data --for-compare --block-config --physlite --no-systematics ) +add_test_job( TestJobDataTextConfigLite data --for-compare --text-config ${CONFIG_PATH} --physlite --no-systematics ) +add_test_job( TestJobDataFullLite data --block-config --physlite --no-systematics ) +add_test_job( TestJobDataNominalORLite data --block-config --only-nominal-or --physlite ) +# add_test_compare( TestJobDataCompareLite data TestJobDataSequenceLite TestJobDataConfigLite ) +# add_test_compare( TestJobDataCompareConfigLite data TestJobDataConfigLite TestJobDataTextConfigLite ) if( XAOD_STANDALONE ) - add_test_job( TestJobFullSimSequenceLite mc --for-compare --physlite ) - add_test_job( TestJobFullSimConfigLite mc --for-compare --block-config --physlite ) - add_test_job( TestJobFullSimTextConfigLite mc --for-compare --text-config ${CONFIG_PATH} --physlite ) - add_test_job( TestJobFullSimFullLite mc --block-config --physlite ) - add_test_job( TestJobFullSimNominalORLite mc --block-config --only-nominal-or --physlite ) - add_test_compare( TestJobFullSimCompareLite mc TestJobFullSimSequenceLite TestJobFullSimConfigLite ) + add_test_job( TestJobFullSimSequenceLite fullsim --for-compare --physlite ) + add_test_job( TestJobFullSimConfigLite fullsim --for-compare --block-config --physlite ) + add_test_job( TestJobFullSimTextConfigLite fullsim --for-compare --text-config ${CONFIG_PATH} --physlite ) + add_test_job( TestJobFullSimFullLite fullsim --block-config --physlite ) + add_test_job( TestJobFullSimNominalORLite fullsim --block-config --only-nominal-or --physlite ) + add_test_compare( TestJobFullSimCompareLite fullsim TestJobFullSimSequenceLite TestJobFullSimConfigLite ) - add_test_job( TestJobFastSimSequenceLite afii --for-compare --physlite ) - add_test_job( TestJobFastSimConfigLite afii --for-compare --block-config --physlite ) - add_test_job( TestJobFastSimTextConfigLite afii --for-compare --text-config ${CONFIG_PATH} --physlite ) - add_test_job( TestJobFastSimFullLite afii --block-config --physlite ) - add_test_job( TestJobFastSimNominalORLite afii --block-config --only-nominal-or --physlite ) - add_test_compare( TestJobFastSimCompareLite afii TestJobFastSimSequenceLite TestJobFastSimConfigLite ) + add_test_job( TestJobFastSimSequenceLite fastsim --for-compare --physlite ) + add_test_job( TestJobFastSimConfigLite fastsim --for-compare --block-config --physlite ) + add_test_job( TestJobFastSimTextConfigLite fastsim --for-compare --text-config ${CONFIG_PATH} --physlite ) + add_test_job( TestJobFastSimFullLite fastsim --block-config --physlite ) + add_test_job( TestJobFastSimNominalORLite fastsim --block-config --only-nominal-or --physlite ) + add_test_compare( TestJobFastSimCompareLite fastsim TestJobFastSimSequenceLite TestJobFastSimConfigLite ) # this test is for testing that the algorithm monitors defined in EventLoop # don't break a job of reasonable complexity. they are tested here instead of # in the EventLoop package, because we have a much more complex payload here. - add_test_job( TestJobDataConfigMonitors data ${USE_FLAGS} --for-compare --block-config --no-systematics --algorithm-timer --algorithm-memory ) + add_test_job( TestJobDataConfigMonitors data --for-compare --block-config --no-systematics --algorithm-timer --algorithm-memory ) add_test_compare( TestJobDataCompareMonitor data TestJobDataConfig TestJobDataConfigMonitors ) endif() diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py index bc36fc8d4a53..1c3b4fc7aaee 100644 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/python/FullCPAlgorithmsTest.py @@ -91,6 +91,13 @@ def addOutputCopyAlgorithms (algSeq, ca, postfix, inputContainer, outputContaine def makeSequenceOld (dataType, algSeq, forCompare, isPhyslite, noSystematics, forceEGammaFullSimConfig=False) : + if isinstance(dataType, DataType): + dataType = { + DataType.Data: 'data', + DataType.FullSim: 'mc', + DataType.FastSim: 'afii', + }.get(dataType) + vars = [] metVars = [] @@ -667,14 +674,13 @@ def makeSequenceBlocks (dataType, algSeq, forCompare, isPhyslite, 'jet_': 'OutJets', 'met_': 'AnaMET', '' : 'EventInfo'} - if not(forceEGammaFullSimConfig and dataType=='afii' and forCompare): + if not(forceEGammaFullSimConfig and dataType is DataType.FastSim and forCompare): outputContainers['el_'] = 'OutElectrons' # create factory object to build block configurations from AnalysisAlgorithmsConfig.ConfigFactory import ConfigFactory config = ConfigFactory() - # noSystematics is passed in block from config accumulator configSeq += config.makeConfig('CommonServices') configSeq.setOptionValue('.systematicsHistogram', 'systematicsList') if forCompare: @@ -684,8 +690,8 @@ def makeSequenceBlocks (dataType, algSeq, forCompare, isPhyslite, # overran integrated luminosity for RunNumber=363262 (0.000000 vs 0.000000) if not isPhyslite: configSeq += config.makeConfig('PileupReweighting') - if dataType == 'afii' and forCompare: - prwfiles, lumicalcfiles = pileupConfigFiles( {'data': DataType.Data, 'mc': DataType.FullSim, 'afii': DataType.FastSim}.get(dataType, None) ) + if dataType is DataType.FastSim and forCompare: + prwfiles, lumicalcfiles = pileupConfigFiles(dataType) configSeq.setOptionValue('.userPileupConfigs', prwfiles) configSeq.setOptionValue('.userLumicalcFiles', lumicalcfiles) configSeq.setOptionValue('.useDefaultConfig', False) @@ -1005,7 +1011,7 @@ def makeSequenceBlocks (dataType, algSeq, forCompare, isPhyslite, 'disable ph_select_tight.*', 'disable tau_select_tight.*', ] - if not (dataType == 'afii' and forceEGammaFullSimConfig): + if not (dataType is DataType.FastSim and forceEGammaFullSimConfig): disable_commands.append('disable el_select_loose.*') configSeq.setOptionValue ('.commands', disable_commands) diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_CA.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_CA.py index 18b7dee9031a..bb2b3a00406b 100755 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_CA.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_CA.py @@ -4,7 +4,9 @@ # @author Tadej Novak # @author Teng Jian Khoo +import sys import os +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType from AnalysisAlgorithmsConfig.FullCPAlgorithmsTest import makeSequence from AthenaConfiguration.AllConfigFlags import initConfigFlags from AthenaConfiguration.ComponentFactory import CompFactory @@ -25,7 +27,7 @@ athArgsParser.add_argument("--dump-config", action="store", dest="dump_config", help="Dump the config in a pickle file") athArgsParser.add_argument("--data-type", action="store", dest="data_type", default="data", - help="Type of input to run over. Valid options are 'data', 'mc', 'afii'") + help="Type of input to run over. Valid options are 'data', 'fullsim', 'fastsim'") athArgsParser.add_argument('--block-config', dest='block_config', action='store_true', default=False, help='Configure the job with block configuration') @@ -40,31 +42,27 @@ athArgsParser.add_argument('--no-systematics', dest='no_systematics', help='Configure the job to with no systematics') athArgsParser.add_argument('--physlite', dest='physlite', action='store_true', default=False, - help='Configure the job for physlite') + help='Run the job on physlite') athArgsParser.add_argument('--only-nominal-or', dest='onlyNominalOR', action='store_true', default=False, help='Only run overlap removal for nominal (skip systematics)') athArgs = flags.fillFromArgs(parser=athArgsParser) -dataType = athArgs.data_type +dataType = DataType(athArgs.data_type) blockConfig = athArgs.block_config textConfig = athArgs.text_config forCompare = athArgs.for_compare -isPhyslite = athArgs.physlite - -if dataType not in ["data", "mc", "afii"]: - raise Exception("invalid data type: " + dataType) -print("Running on data type: " + dataType) +print(f"Running on data type: {dataType.value}") -if isPhyslite: - inputfile = {"data": 'ASG_TEST_FILE_LITE_DATA', - "mc": 'ASG_TEST_FILE_LITE_MC', - "afii": 'ASG_TEST_FILE_LITE_MC_AFII'} +if athArgs.physlite: + inputfile = {DataType.Data: 'ASG_TEST_FILE_LITE_DATA', + DataType.FullSim: 'ASG_TEST_FILE_LITE_MC', + DataType.FastSim: 'ASG_TEST_FILE_LITE_MC_AFII'} else: - inputfile = {"data": 'ASG_TEST_FILE_DATA', - "mc": 'ASG_TEST_FILE_MC', - "afii": 'ASG_TEST_FILE_MC_AFII'} + inputfile = {DataType.Data: 'ASG_TEST_FILE_DATA', + DataType.FullSim: 'ASG_TEST_FILE_MC', + DataType.FastSim: 'ASG_TEST_FILE_MC_AFII'} # Set up the reading of the input file: if athArgs.input_file: @@ -86,7 +84,7 @@ cfg.merge(CutFlowSvcCfg(flags)) # Setup the configuration cp_cfg = makeSequence(dataType, blockConfig, textConfig, forCompare=forCompare, noSystematics=athArgs.no_systematics, - isPhyslite=isPhyslite, + isPhyslite=athArgs.physlite, autoconfigFromFlags=flags, onlyNominalOR=athArgs.onlyNominalOR, forceEGammaFullSimConfig=True) # Add all algorithms from the sequence to the job. @@ -94,16 +92,13 @@ cfg.merge(cp_cfg) # Set up a histogram output file for the job: if blockConfig: - outputFile = "ANALYSIS DATAFILE='FullCPAlgorithmsConfigTest." + \ - dataType + ".hist.root' OPT='RECREATE'" + outputFile = f"ANALYSIS DATAFILE='FullCPAlgorithmsConfigTest.{dataType.value}.hist.root' OPT='RECREATE'" elif textConfig: - outputFile = "ANALYSIS DATAFILE='FullCPAlgorithmsTextConfigTest." + \ - dataType + ".hist.root' OPT='RECREATE'" + outputFile = f"ANALYSIS DATAFILE='FullCPAlgorithmsTextConfigTest.{dataType.value}.hist.root' OPT='RECREATE'" else: - outputFile = "ANALYSIS DATAFILE='FullCPAlgorithmsTest." + \ - dataType + ".hist.root' OPT='RECREATE'" + outputFile = f"ANALYSIS DATAFILE='FullCPAlgorithmsTest.{dataType.value}.hist.root' OPT='RECREATE'" if athArgs.output_file: - outputFile = "ANALYSIS DATAFILE='" + athArgs.output_file + "' OPT='RECREATE'" + outputFile = f"ANALYSIS DATAFILE='{athArgs.output_file}' OPT='RECREATE'" cfg.addService(CompFactory.THistSvc(Output=[outputFile])) # Set EventPrintoutInterval to 100 events @@ -117,5 +112,4 @@ if athArgs.dump_config: cfg.store(f) sc = cfg.run(500) -import sys sys.exit(sc.isFailure()) diff --git a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_eljob.py b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_eljob.py index 8f410490e4d4..f2622399d9ae 100755 --- a/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_eljob.py +++ b/PhysicsAnalysis/Algorithms/AnalysisAlgorithmsConfig/scripts/FullCPAlgorithmsTest_eljob.py @@ -6,17 +6,19 @@ # Read the submission directory as a command line argument. You can # extend the list of arguments with your private ones later on. +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType + import optparse parser = optparse.OptionParser() parser.add_option( '-d', '--data-type', dest = 'data_type', action = 'store', type = 'string', default = 'data', - help = 'Type of data to run over. Valid options are data, mc, afii' ) + help="Type of input to run over. Valid options are 'data', 'fullsim', 'fastsim'") parser.add_option( '-s', '--submission-dir', dest = 'submission_dir', action = 'store', type = 'string', default = 'submitDir', help = 'Submission directory for EventLoop' ) -parser.add_option("--input-file", action = "append", dest = "input_file", - default = None, - help = "Specify the input file") +parser.add_option( "--input-file", action = "append", dest = "input_file", + default = None, + help = "Specify the input file") parser.add_option( '-u', '--unit-test', dest='unit_test', action = 'store_true', default = False, help = 'Run the job in "unit test mode"' ) @@ -56,12 +58,6 @@ parser.add_option( '--for-compare', dest='for_compare', parser.add_option( '--physlite', dest='physlite', action = 'store_true', default = False, help = 'Configure the job for physlite' ) -parser.add_option( '--geometry', dest='geometry', - action = 'store', type = 'string', default = 'RUN2', - help = 'LHC Run period to run over. Valid options are RUN2, RUN3' ) -parser.add_option( '--use-flags', dest='use_flags', - action = 'store_true', default = False, - help = 'Use Athena-style configuration flags to set up the config blocks') parser.add_option( '--only-nominal-or', dest='onlyNominalOR', action = 'store_true', default = False, help = 'Only run overlap removal for nominal (skip systematics)') @@ -77,33 +73,31 @@ ROOT.xAOD.TauJetContainer() # ideally we'd run over all of them, but we don't have a mechanism to # configure per-sample right now -dataType = options.data_type +dataType = DataType(options.data_type) blockConfig = options.block_config textConfig = options.text_config forCompare = options.for_compare -isPhyslite = options.physlite -geometry = options.geometry + +print(f"Running on data type: {dataType.value}") + +if options.physlite: + inputfile = {DataType.Data: 'ASG_TEST_FILE_LITE_DATA', + DataType.FullSim: 'ASG_TEST_FILE_LITE_MC', + DataType.FastSim: 'ASG_TEST_FILE_LITE_MC_AFII'} +else: + inputfile = {DataType.Data: 'ASG_TEST_FILE_DATA', + DataType.FullSim: 'ASG_TEST_FILE_MC', + DataType.FastSim: 'ASG_TEST_FILE_MC_AFII'} # No R24 FastSim recommendations for EGamma yet forceEGammaFullSimConfig = True -if dataType not in ["data", "mc", "afii"] : - raise Exception ("invalid data type: " + dataType) - # Set up the sample handler object. See comments from the C++ macro # for the details about these lines. import os sh = ROOT.SH.SampleHandler() sh.setMetaString( 'nc_tree', 'CollectionTree' ) -sample = ROOT.SH.SampleLocal (dataType) -if isPhyslite : - inputfile = {"data": 'ASG_TEST_FILE_LITE_DATA', - "mc": 'ASG_TEST_FILE_LITE_MC', - "afii": 'ASG_TEST_FILE_LITE_MC_AFII'} -else : - inputfile = {"data": 'ASG_TEST_FILE_DATA', - "mc": 'ASG_TEST_FILE_MC', - "afii": 'ASG_TEST_FILE_MC_AFII'} +sample = ROOT.SH.SampleLocal (dataType.value) if options.input_file: for file_idx in range(len(options.input_file)): testFile = options.input_file[file_idx] @@ -114,15 +108,13 @@ else: sh.add (sample) sh.printContent() -flags = None -if options.use_flags: - from AthenaConfiguration.AllConfigFlags import initConfigFlags - flags = initConfigFlags() - if options.input_file: - flags.Input.Files = options.input_file[:] - else: - flags.Input.Files = [testFile] - flags.lock() +from AthenaConfiguration.AllConfigFlags import initConfigFlags +flags = initConfigFlags() +if options.input_file: + flags.Input.Files = options.input_file[:] +else: + flags.Input.Files = [testFile] +flags.lock() # Create an EventLoop job. job = ROOT.EL.Job() @@ -140,8 +132,7 @@ if options.factory_preload != '' : from AnalysisAlgorithmsConfig.FullCPAlgorithmsTest import makeSequence, printSequenceAlgs algSeq = makeSequence (dataType, blockConfig, textConfig, forCompare=forCompare, noSystematics = options.no_systematics, - hardCuts = options.hard_cuts, isPhyslite=isPhyslite, - geometry=geometry, + hardCuts = options.hard_cuts, isPhyslite=options.physlite, autoconfigFromFlags=flags, onlyNominalOR=options.onlyNominalOR, forceEGammaFullSimConfig=forceEGammaFullSimConfig) printSequenceAlgs( algSeq ) # For debugging diff --git a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/PileupAnalysisSequence.py b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/PileupAnalysisSequence.py index cd26dc43aba3..20b1c60c66d6 100755 --- a/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/PileupAnalysisSequence.py +++ b/PhysicsAnalysis/Algorithms/AsgAnalysisAlgorithms/python/PileupAnalysisSequence.py @@ -1,8 +1,9 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration # AnaAlgorithm import(s): from AnaAlgorithm.AnaAlgSequence import AnaAlgSequence from AnaAlgorithm.DualUseConfig import createAlgorithm, addPrivateTool +from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType from Campaigns.Utils import Campaign import logging @@ -12,11 +13,20 @@ def makePileupAnalysisSequence( dataType, campaign=None, files=None, useDefaultC """Create a PRW analysis algorithm sequence Keyword arguments: - dataType -- The data type to run on ("data", "mc" or "afii") + dataType -- The data type enum """ - if dataType not in ["data", "mc", "afii"] : - raise ValueError ("invalid data type: " + dataType) + if isinstance(dataType, str): + dataType = { + "data": DataType.Data, + "fullsim": DataType.FullSim, + "fastsim": DataType.FastSim, + "mc": DataType.FullSim, + "afii": DataType.FastSim, + }.get(dataType) + + if not dataType: + raise ValueError ("invalid data type") # Create the analysis algorithm sequence object: seq = AnaAlgSequence( "PileupAnalysisSequence" ) @@ -36,7 +46,7 @@ def makePileupAnalysisSequence( dataType, campaign=None, files=None, useDefaultC if campaign: if userPileupConfigs is None: - if dataType == 'data': + if dataType is DataType.Data: log.info('Data needs no configuration files') else: from PileupReweighting.AutoconfigurePRW import getConfigurationFiles @@ -63,7 +73,7 @@ def makePileupAnalysisSequence( dataType, campaign=None, files=None, useDefaultC alg = createAlgorithm( 'CP::PileupReweightingAlg', 'PileupReweightingAlg' ) addPrivateTool( alg, 'pileupReweightingTool', 'CP::PileupReweightingTool' ) alg.pileupReweightingTool.ConfigFiles = toolConfigFiles - if not toolConfigFiles and dataType != "data": + if not toolConfigFiles and dataType is not DataType.Data: log.info("No PRW config files provided. Disabling reweighting") # Setting the weight decoration to the empty string disables the reweighting alg.pileupWeightDecoration = "" -- GitLab