ATLAS Offline Software
Loading...
Searching...
No Matches
SUSYPhys/SUSYTools/python/SUSYToolsConfig.py
Go to the documentation of this file.
1#!/usr/bin/env athena.py
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.Enums import LHCPeriod
6from AthenaCommon.Logging import log
7
8def SUSYToolsAlgCfg(flags, **kwargs):
9 acc = ComponentAccumulator()
10 from AthenaConfiguration.ComponentFactory import CompFactory
11
12 isMC = flags.Input.isMC
13 isFastSim = flags.Sim.ISF.Simulator.usesFastCaloSim() #full sim or atlfast
14
15 # configure SUSYTools algorithm and its tool
16 SUSYToolsAlg = CompFactory.SUSYToolsAlg
17 alg = SUSYToolsAlg(
18 "SUSYToolsAlg",
19 DoSyst = isMC and (not susyArgs.noSyst)
20 )
21
22 if susyArgs.configFile:
23 alg.SUSYTools.ConfigFile = susyArgs.configFile
24 else:
25 # select config file based on whether we are run3 or run2
26 if flags.GeoModel.Run is LHCPeriod.Run3:
27 alg.SUSYTools.ConfigFile = "SUSYTools/SUSYTools_Default_Run3.conf" # run3
28 else:
29 alg.SUSYTools.ConfigFile = "SUSYTools/SUSYTools_Default.conf" # run2
30
31 if susyArgs.testFormat == "PHYSLITE":
32 STconfig_lite = str(alg.SUSYTools.ConfigFile).replace(".conf","_LITE.conf")
33 alg.SUSYTools.IsPHYSLITE = True
34 alg.SUSYTools.ConfigFile = STconfig_lite
35
36 log.info("Configuration file: %s",alg.SUSYTools.ConfigFile)
37
38 alg.SUSYTools.DataSource = 0 if not isMC else (1 if not isFastSim else 2) # data/FS/atlfast
39
40 log.info("Configuration SUSYTools.DataSource: %s",alg.SUSYTools.DataSource)
41
42 if isMC:
43 if susyArgs.prwFiles:
44 alg.SUSYTools.PRWConfigFiles = susyArgs.prwFiles
45 else:
46 alg.SUSYTools.AutoconfigurePRWTool = True
47 alg.SUSYTools.PRWUseCommonMCFiles = True
48 # set lumicalc info based on the campaign, if running on MC
49 if susyArgs.lumicalcFiles:
50 alg.SUSYTools.PRWLumiCalcFiles = susyArgs.lumicalcFiles
51 else:
52 from PileupReweighting.AutoconfigurePRW import getLumicalcFiles
53 alg.SUSYTools.PRWLumiCalcFiles = getLumicalcFiles(flags.Input.MCCampaign)
54
55
56 acc.addEventAlgo(alg)
57
58 return acc
59
60if __name__ == "__main__": # typically not needed in top level script
61
62 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
63 from AthenaConfiguration.AllConfigFlags import initConfigFlags
64
65 # 1) Init flags
66 flags = initConfigFlags()
67
68 # Standard argparse.ArgumentParser initialisation options can be provided here
69 susyArgsParser = flags.getArgumentParser( )
70 susyArgsParser.add_argument("--testCampaign",action="store",default=None,choices=["mc20e","mc23a","mc23d","data23","data22","data18"],help="Specify to select a test campaign")
71 susyArgsParser.add_argument("--testFormat",action="store",default="PHYS",choices=["PHYS","PHYSLITE"],help="Specify to select a test format")
72 susyArgsParser.add_argument("--accessMode",action="store",choices=["POOLAccess","ClassAccess"],default="POOLAccess",help="xAOD read mode - Class is faster, POOL is more robust")
73 susyArgsParser.add_argument("--configFile",action="store",default=None,help="Name of the SUSYTools config file, leave blank for auto-config")
74 susyArgsParser.add_argument("--prwFiles",action="store",nargs="+",default=None,help="Name of prw files")
75 susyArgsParser.add_argument("--lumicalcFiles",action="store",nargs="+",default=None,help="Name of lumicalc files")
76 susyArgsParser.add_argument("--noSyst",action="store_true",help="include to disable systematics")
77 susyArgsParser.add_argument("--fileOutput",default=None,help="Name of output file")
78
79
80 susyArgs = flags.fillFromArgs(parser=susyArgsParser)
81
82 if susyArgs.testCampaign:
83 pTag = 'p6269' if ('data2' in susyArgs.testCampaign) else 'p6266'
84 inputDir = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/SUSYTools'
85 inputFiles = {}
86 inputFiles['data18'] = f'data18_13TeV.39757132_{pTag}.{susyArgs.testFormat}.pool.root'
87 inputFiles['data22'] = f'data22_13p6TeV.39672246_{pTag}.{susyArgs.testFormat}.pool.root'
88 inputFiles['data23'] = f'data23_13p6TeV.39756993_{pTag}.{susyArgs.testFormat}.pool.root'
89 inputFiles['mc20e'] = f'DAOD_{susyArgs.testFormat}.mc20_13TeV.410470.FS_mc20e_{pTag}.{susyArgs.testFormat}.pool.root'
90 inputFiles['mc23a'] = f'mc23_13p6TeV.601229.FS_mc23a_{pTag}.{susyArgs.testFormat}.pool.root'
91 inputFiles['mc23d'] = f'mc23_13p6TeV.601229.FS_mc23d_{pTag}.{susyArgs.testFormat}.pool.root'
92 flags.Input.Files = [f'{inputDir}/{inputFiles[susyArgs.testCampaign]}']
93 if susyArgs.fileOutput is None:
94 susyArgs.fileOutput = f"hist-Ath_{susyArgs.testCampaign}_DAOD_{susyArgs.testFormat}.root"
95
96 log.info("Processing: %s",flags.Input.Files)
97 log.info("Outputting: %s",susyArgs.fileOutput)
98
99 flags.lock()
100
101 acc = MainServicesCfg(flags)
102 acc.merge(SUSYToolsAlgCfg(flags))
103
104 status = acc.run()
105
106 import sys
107 sys.exit(not status.isSuccess())
108
109
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition hcg.cxx:310