4from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5from AthenaConfiguration.Enums
import LHCPeriod
6from AthenaCommon.Logging
import log
9 acc = ComponentAccumulator()
10 from AthenaConfiguration.ComponentFactory
import CompFactory
12 isMC = flags.Input.isMC
13 isFastSim = flags.Sim.ISF.Simulator.usesFastCaloSim()
16 SUSYToolsAlg = CompFactory.SUSYToolsAlg
19 DoSyst = isMC
and (
not susyArgs.noSyst)
22 if susyArgs.configFile:
23 alg.SUSYTools.ConfigFile = susyArgs.configFile
26 if flags.GeoModel.Run
is LHCPeriod.Run3:
27 alg.SUSYTools.ConfigFile =
"SUSYTools/SUSYTools_Default_Run3.conf"
29 alg.SUSYTools.ConfigFile =
"SUSYTools/SUSYTools_Default.conf"
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
36 log.info(
"Configuration file: %s",alg.SUSYTools.ConfigFile)
38 alg.SUSYTools.DataSource = 0
if not isMC
else (1
if not isFastSim
else 2)
39 alg.SUSYTools.mcCampaign = susyArgs.testCampaign
40 log.info(
"Configuration SUSYTools.DataSource: %s",alg.SUSYTools.DataSource)
44 alg.SUSYTools.PRWConfigFiles = susyArgs.prwFiles
46 alg.SUSYTools.AutoconfigurePRWTool =
True
47 alg.SUSYTools.PRWUseCommonMCFiles =
True
49 if susyArgs.lumicalcFiles:
50 alg.SUSYTools.PRWLumiCalcFiles = susyArgs.lumicalcFiles
52 from PileupReweighting.AutoconfigurePRW
import getLumicalcFiles
53 alg.SUSYTools.PRWLumiCalcFiles = getLumicalcFiles(flags.Input.MCCampaign)
60if __name__ ==
"__main__":
62 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
63 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
66 flags = initConfigFlags()
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")
80 susyArgs = flags.fillFromArgs(parser=susyArgsParser)
82 if susyArgs.testCampaign:
83 pTag =
'p7267' if (
'data2' in susyArgs.testCampaign)
else 'p7266'
85 inputDir =
'/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/SUSYTools/'
87 inputFiles[
'data18'] = f
'data18_13TeV.00364292_{pTag}.{susyArgs.testFormat}.pool.root'
88 inputFiles[
'data22'] = f
'data22_13p6TeV.00440613_{pTag}.{susyArgs.testFormat}.pool.root'
89 inputFiles[
'data23'] = f
'data23_13p6TeV.00456749_{pTag}.{susyArgs.testFormat}.pool.root'
90 inputFiles[
'mc20e'] = f
'mc20_13TeV.410470.FS_mc20e_{pTag}.{susyArgs.testFormat}.pool.root'
91 inputFiles[
'mc23a'] = f
'mc23_13p6TeV.601229.FS_mc23a_{pTag}.{susyArgs.testFormat}.pool.root'
92 inputFiles[
'mc23d'] = f
'mc23_13p6TeV.601229.FS_mc23d_{pTag}.{susyArgs.testFormat}.pool.root'
93 flags.Input.Files = [f
'{inputDir}/{inputFiles[susyArgs.testCampaign]}']
94 if susyArgs.fileOutput
is None:
95 susyArgs.fileOutput = f
"hist-Ath_{susyArgs.testCampaign}_DAOD_{susyArgs.testFormat}.root"
97 log.info(
"Processing: %s",flags.Input.Files)
98 log.info(
"Outputting: %s",susyArgs.fileOutput)
102 acc = MainServicesCfg(flags)
104 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
105 acc.merge(PoolReadCfg(flags))
107 from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg
108 tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
112 from AthenaConfiguration.ComponentFactory
import CompFactory
113 acc.addService(CompFactory.THistSvc(Output=[f
"ANALYSIS DATAFILE='{susyArgs.fileOutput}' OPT='RECREATE'"]))
118 sys.exit(
not status.isSuccess())
std::string replace(std::string s, const std::string &s2, const std::string &s3)