diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommon.py index 23e1fa45fa640db11537251c8ee036a2a389fe79..10c4ee48e1e9f6046c8cab92dabe65b580b87024 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommon.py @@ -43,7 +43,7 @@ def makeEGammaDFCommon(): isFullSim = False if isMC: simulationFlavour = af.fileinfos['metadata']['/Simulation/Parameters']['SimulationFlavour'] - isFullSim = simulationFlavour in ('default', 'MC12G4', 'FullG4') + isFullSim = simulationFlavour in ('default', 'AtlasG4', 'MC12G4', 'FullG4', 'FullG4_QS') print("EGammaCommon: isMC = ", isMC) if isMC: diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommonConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommonConfig.py index 9524df0d0a862a47f82913c5f4fe2ffa9e16db16..03be44477e054b4172a8a0068dd33cf530b40428 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommonConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGammaCommonConfig.py @@ -43,14 +43,11 @@ def EGammaCommonCfg(ConfigFlags): # Below are some examples: #af.fileinfos - isMC = ConfigFlags.Input.isMC + isMC = ConfigFlags.Input.isMC isFullSim = False - # TODO: something that replicates this needs to be added to the ConfigFlags - #if isMC: - # simulationFlavour = af.fileinfos['metadata']['/Simulation/Parameters']['SimulationFlavour'] - # isFullSim = simulationFlavour in ('default', 'MC12G4', 'FullG4') - - isFullSim = True + if isMC: + isFullSim = ConfigFlags.Sim.ISF.Simulator.isFullSim() + print("EGammaCommon: isMC = ", isMC) if isMC: print("EGammaCommon: isFullSim = ", isFullSim) diff --git a/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_MetadataNew.py b/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_MetadataNew.py index adb46c125b69767602d7b597fb85ca3e68b579c6..1389b52eb3a0d6f235176f973c458e7d5defea28 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_MetadataNew.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/G4Atlas_MetadataNew.py @@ -25,6 +25,7 @@ def fillAtlasMetadata(ConfigFlags, dbFiller): dbFiller.addSimParam('RunType', 'atlas') dbFiller.addSimParam('beamType', ConfigFlags.Beam.Type.value) dbFiller.addSimParam('SimLayout', ConfigFlags.GeoModel.AtlasVersion) + dbFiller.addSimParam('MagneticField', 'AtlasFieldSvc') # TODO hard-coded for now for consistency with old-style configuration. #--------- ## Simulated detector flags: add each enabled detector to the simulatedDetectors list @@ -49,11 +50,13 @@ def fillAtlasMetadata(ConfigFlags, dbFiller): ## Hard-coded simulation hit file magic number (for major changes) dbFiller.addSimParam('hitFileMagicNumber', '0') ##FIXME Remove this? - -def fillISFMetadata(dbFiller): - #todo - later - from ISF_Config.ISF_jobProperties import ISF_Flags - dbFiller.addSimParam('Simulator', ISF_Flags.Simulator()) + if ConfigFlags.Sim.ISFRun: + dbFiller.addSimParam('Simulator', ConfigFlags.Sim.ISF.Simulator.value) + dbFiller.addSimParam('SimulationFlavour', ConfigFlags.Sim.ISF.Simulator.value.replace('MT', '')) # used by egamma + else: + # TODO hard-code for now, but set flag properly later + dbFiller.addSimParam('Simulator', 'AtlasG4') + dbFiller.addSimParam('SimulationFlavour', 'AtlasG4') def writeSimulationParametersMetadata(ConfigFlags): @@ -66,9 +69,7 @@ def writeSimulationParametersMetadata(ConfigFlags): dbFiller.setEndRun(myEndRunNumber) fillAtlasMetadata(ConfigFlags, dbFiller) - if ConfigFlags.Sim.ISFRun: - #fillISFMetadata(dbFiller) #add later - pass + #------------------------------------------------- # Make the MetaData Db #------------------------------------------------- diff --git a/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py b/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py index 40d7f8d6ba0133e0953438431e89192618d0f224..06ea3ee8fb2883d93a4f8499da9502efc874401b 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/SimConfigFlags.py @@ -97,7 +97,40 @@ def createSimConfigFlags(): # ISF scf.addFlag("Sim.ISFRun", False) - scf.addFlag("Sim.ISF.Simulator", SimulationFlavour.Unknown, enum=SimulationFlavour) + + def _checkSimulationFlavour(prevFlags): + simulator = SimulationFlavour.Unknown + if prevFlags.Input.Files: + from AthenaConfiguration.AutoConfigFlags import GetFileMD + simFlavour = GetFileMD(prevFlags.Input.Files).get("Simulator", "") + if not simFlavour: + simFlavour = GetFileMD(prevFlags.Input.Files).get("SimulationFlavour", "") + try: + simulator = SimulationFlavour(simFlavour) + except ValueError: + # Deal with old non-thread-safe simulators + if simFlavour in ['default']: # This is the case when ISF was not configured in sim + simulator = SimulationFlavour.AtlasG4 + elif simFlavour in ['MC12G4', 'FullG4']: + simulator = SimulationFlavour.FullG4MT + elif simFlavour in ['FullG4_QS', 'FullG4_Longlived']: + simulator = SimulationFlavour.FullG4MT_QS + elif simFlavour in ['PassBackG4']: + simulator = SimulationFlavour.PassBackG4MT + elif simFlavour in ['ATLFASTII']: + simulator = SimulationFlavour.ATLFASTIIMT + elif simFlavour in ['ATLFASTIIF']: + simulator = SimulationFlavour.ATLFASTIIFMT + elif simFlavour in ['ATLFAST3']: + simulator = SimulationFlavour.ATLFAST3MT + elif simFlavour in ['ATLFAST3_QS']: + simulator = SimulationFlavour.ATLFAST3MT_QS + else: + # Obscure old-style configuration used - do not try to interpret + simulator = SimulationFlavour.Unknown + return simulator + + scf.addFlag("Sim.ISF.Simulator", _checkSimulationFlavour, enum=SimulationFlavour) scf.addFlag("Sim.ISF.DoTimeMonitoring", True) # bool: run time monitoring scf.addFlag("Sim.ISF.DoMemoryMonitoring", True) # bool: run time monitoring scf.addFlag("Sim.ISF.ValidationMode", False) # bool: run ISF internal validation checks diff --git a/Simulation/G4Atlas/G4AtlasApps/python/SimEnums.py b/Simulation/G4Atlas/G4AtlasApps/python/SimEnums.py index fd4f21a47030c8dd89680387eb7f8c24d5813b63..1e0f57c7bf4e0df0af2b380eaf689d9cde105ac5 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/SimEnums.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/SimEnums.py @@ -44,6 +44,10 @@ class SimulationFlavour(FlagEnum): ATLFAST3MT = 'ATLFAST3MT' ATLFAST3MT_QS = 'ATLFAST3MT_QS' ATLFAST3F_G4MS = 'ATLFAST3F_G4MS' + AtlasG4 = 'AtlasG4' # Outside ISF + + def isFullSim(self): + return 'FullG4' in self.value or 'PassBackG4' in self.value or 'AtlasG4' in self.value def usesFastCaloSim(self): return 'ATLFAST' in self.value diff --git a/Simulation/ISF/ISF_Config/python/FlagSetters.py b/Simulation/ISF/ISF_Config/python/FlagSetters.py index b3ce7ab8fbcb9c696d68492fc74314dca9565c54..6691320c885bc3f00a9a952fe5061f9bedf500be 100644 --- a/Simulation/ISF/ISF_Config/python/FlagSetters.py +++ b/Simulation/ISF/ISF_Config/python/FlagSetters.py @@ -155,19 +155,19 @@ def configureFlagsATLFAST3MT(): configureFlagsATLFAST3() ISF_Flags.ParticleBroker = "" from G4AtlasApps.SimFlags import simFlags - simFlags.SimulationFlavour = "ATLFAST3MT" + simFlags.SimulationFlavour = "ATLFAST3" def configureFlagsATLFAST3MT_QS(): configureFlagsATLFAST3() from G4AtlasApps.SimFlags import simFlags - simFlags.SimulationFlavour = "ATLFAST3MT_QS" + simFlags.SimulationFlavour = "ATLFAST3_QS" return def configureFlagsATLFAST3MTEnergyOrdered(): configureFlagsATLFAST3() ISF_Flags.ParticleBroker = "" from G4AtlasApps.SimFlags import simFlags - simFlags.SimulationFlavour = "ATLFAST3MT" + simFlags.SimulationFlavour = "ATLFAST3" return def configureFlagsG4FastCalo(): diff --git a/Tools/PyUtils/python/MetaReader.py b/Tools/PyUtils/python/MetaReader.py index d760c41c8483a95fe94984835e082a23a92b5994..6babbca967ccca85160d34b99bf6b146d59e8cf9 100644 --- a/Tools/PyUtils/python/MetaReader.py +++ b/Tools/PyUtils/python/MetaReader.py @@ -929,6 +929,8 @@ def make_peeker(meta_dict): 'TruthStrategy', 'SimBarcodeOffset', 'TRTRangeCut', + 'SimulationFlavour', + 'Simulator', ] for item in list(meta_dict[filename]['/Simulation/Parameters']): if item not in keys_to_keep: