diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py b/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py index fa39682b09308bd2a5bef9258d2d372a546b703c..cd96b5c52fe7c2c13721d30c0b4b96851230d2d5 100644 --- a/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py +++ b/Simulation/SimulationJobOptions/share/g4/preInclude.PhotonNuclOff.py @@ -5,9 +5,5 @@ ######################################################### atlasG4log.info("Turning off photon inelastic interactions") -def disable_photonuclear(): - from G4AtlasApps import AtlasG4Eng - AtlasG4Eng.G4Eng.gbl.G4Commands().process.inactivate('PhotonInelastic', 'gamma') - from G4AtlasApps.SimFlags import simFlags -simFlags.InitFunctions.add_function("postInit", disable_photonuclear) +simFlags.G4Commands += ['/process/inactivate PhotonInelastic gamma'] diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py index 0ae1fb4ff55b2a06783b8d1c6b86a9c1619d68d7..71a477dc9c8c596e9537e9966666077c6d0ae4eb 100644 --- a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py +++ b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseProcess.py @@ -1,9 +1,5 @@ # Use verbose output for all G4 process. # Only works in dbg builds. -def use_verbose_process(): - from G4AtlasApps import AtlasG4Eng - AtlasG4Eng.G4Eng.gbl.G4Commands().process.verbose(10) - from G4AtlasApps.SimFlags import simFlags -simFlags.InitFunctions.add_function("preInitPhysics", use_verbose_process) +simFlags.G4Commands += ['/process/verbose 10'] diff --git a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py index c0c3bcc0dd15a224dd6eacad53356f827f2b4346..a688a54a1bd5d379f92be9d0cae33338f6c9f2a1 100644 --- a/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py +++ b/Simulation/SimulationJobOptions/share/g4/preInclude.VerboseTracking.py @@ -2,6 +2,5 @@ # may find the VerboseSelector or VerboseSelectorArea preIncludes to be # more appropriate, but this one gives you all the output you can eat. -from G4AtlasApps.SimFlags import simFlags from G4AtlasApps import callbacks -simFlags.InitFunctions.add_function("preInitG4", callbacks.use_verbose_tracking) +callbacks.use_verbose_tracking() diff --git a/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py b/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py index face2eefe6e3265b2ca956d28f5c2afa24ef577e..5d910db3b8770105bc4ee46488528f1a8b7abb3f 100644 --- a/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py +++ b/Simulation/SimulationJobOptions/share/heavyIons/postInclude.HijingPars.py @@ -15,35 +15,29 @@ topSequence = AlgSequence() from AthenaCommon.DetFlags import DetFlags if DetFlags.pileup.any_on(): - from MCTruthSimAlgs.MCTruthSimAlgsConf import MergeHijingPars - mergeHijingPars = MergeHijingPars() - index = 0 - for alg in topSequence: - index += 1 #count position - if 'MergeMcEventCollection' == alg.name(): - topSequence.insert(index, mergeHijingPars) + index = 0 + for alg in topSequence: + index += 1 #count position + if 'PileUpToolsAlg' in alg.name(): + from AthenaCommon.CfgGetter import getPublicTool + alg.PileUpTools+=[getPublicTool("MergeHijingParsTool")] + break + if 'MergeMcEventCollection' == alg.name(): + from MCTruthSimAlgs.MCTruthSimAlgsConf import MergeHijingPars + mergeHijingPars = MergeHijingPars() + topSequence.insert(index, mergeHijingPars) + break else: - try: - from TruthIO.TruthIOConf import PrintHijingPars - except: - from TruthExamples.TruthExamplesConf import PrintHijingPars - topSequence += PrintHijingPars() + try: + from TruthIO.TruthIOConf import PrintHijingPars + except: + from TruthExamples.TruthExamplesConf import PrintHijingPars + topSequence += PrintHijingPars() -## configure Athena for POOL persistency -if hasattr(topSequence, 'StreamHITS'): - outStream = topSequence.StreamHITS -elif hasattr(topSequence, 'StreamRDO'): - outStream = topSequence.StreamRDO -else: - ## temporary back-compatibility - outStreams = AlgSequence( "Streams" ) - if hasattr(outStreams, 'StreamHITS'): - outStream = outStreams.StreamHITS - elif hasattr(outStreams, 'StreamRDO'): - outStream = outStreams.StreamRDO - else: - #We should avoid creating the AthenaPoolOutputStream - #outside the core Sim/Digi python code - raise AttributeError("AthenaPoolOutputStream not found") -outStream.ItemList += [ "HijingEventParams#Hijing_event_params" ] +## configure Athena for POOL persistency +streamAlgs = ['StreamHITS','StreamRDO','StreamESD','StreamAOD'] +for stream in streamAlgs: + outStream = getattr(topSequence, stream, None) + if outStream is not None: + outStream.ItemList += [ "HijingEventParams#Hijing_event_params" ] diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py index 5e9a0769c8f9075bc4542771509e9e8375f1b0d8..237c241eaec7e64e1d10167509087692e3a6900a 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.AMSB.py @@ -40,11 +40,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() C1Mass = eval(simdict["AMSBC1Mass"]) N1Mass = eval(simdict["AMSBN1Mass"]) @@ -53,45 +53,7 @@ get_and_fix_PDGTABLE([(1000022, N1Mass, '~chi(0,1)', '0'), (1000024, C1Mass, '~c if doG4SimConfig: from G4AtlasApps.SimFlags import simFlags - def amsb_processlist(): - from G4AtlasApps import AtlasG4Eng - AtlasG4Eng.G4Eng.gbl.G4Commands().process.list() - - simFlags.InitFunctions.add_function("postInit", amsb_processlist) - - def amsb_setparams(): - from G4AtlasApps import AtlasG4Eng - from GaudiKernel.SystemOfUnits import GeV, ns - C1Mass = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBC1Mass"]) - N1Mass = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBN1Mass"]) - C1Lifetime = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["AMSBC1Lifetime"]) - - - AtlasG4Eng.G4Eng._ctrl.load("Charginos") - charginoPlus = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_plus_1") - charginoPlus.SetParticleMass(C1Mass) - if C1Lifetime == -1: - charginoPlus.Stable(True) - else: - charginoPlus.SetParticleLifeTime(C1Lifetime) - charginoPlus.Stable(False) - charginoPlus.AddDecayChannel("s_chi_plus_1", 1., "s_chi_0_1=pi+") - - charginoMinus = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_minus_1") - charginoMinus.SetParticleMass(C1Mass) - if C1Lifetime == -1: - charginoMinus.Stable(True) - else: - charginoMinus.SetParticleLifeTime(C1Lifetime) - charginoMinus.Stable(False) - charginoMinus.AddDecayChannel("s_chi_minus_1", 1., "s_chi_0_1=pi-") - - neutralino = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_0_1") - neutralino.SetParticleMass(N1Mass) - neutralino.Stable(True) - - - simFlags.InitFunctions.add_function("preInitPhysics", amsb_setparams) + simFlags.PhysicsOptions += ['CharginosPhysicsTool'] def amsb_applycalomctruthstrategy(): ## Applying the MCTruth strategies: add decays in the Calorimeter diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py index ab18508bf70e847a5c1d858e85ac4b2d9703b603..2c462a3ec9b32c631bdc2b38b1b40f558b3e91fa 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.GMSB.py @@ -18,18 +18,18 @@ def get_and_fix_PDGTABLE(replace): for r in replace: if l.find(r[1]) > -1: ll = l.split() - + if ll[0] == r[0] and ll[1] == r[1]: l = l[0:35] + ('%11.5E' % r[2]).strip().ljust(14) + l[49:] continue - + update.write(l) update.close() def load_files_for_GMSB_scenario(simdict): GMSBIndex = int(simdict["GMSBIndex"]) - + if GMSBIndex == 1: get_and_fix_PDGTABLE([('M', '1000022', eval(simdict["GMSBNeutralino"])), ('M', '1000039', eval(simdict.get("GMSBGravitino",'0')))]) @@ -54,14 +54,14 @@ def load_files_for_GMSB_scenario(simdict): ('M', '2000013', m_slepton ), ('M', '2000015', 2.50E+02 ), ('M', '1000023', 1.00E+04 ), \ ('M', '1000024', 1.00E+04 ), ('M', '1000025', -1.0E+04 ), ('M', '1000035', 1.00E+04 ), \ ('M', '1000037', 1.00E+04 ) ]) - + elif GMSBIndex == 4: get_and_fix_PDGTABLE([('M', '1000015', eval(simdict["GMSBStau"]))]) else: print 'GMSBIndex %i not supported' % GMSBIndex raise - + doG4SimConfig = True from AthenaCommon.AthenaCommonFlags import athenaCommonFlags import PyUtils.AthFile as af @@ -73,11 +73,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() assert "GMSBIndex" in simdict #if 2525 == simdict["GMSBIndex"]: @@ -89,7 +89,7 @@ if doG4SimConfig: def gmsb_processlist(): from G4AtlasApps import AtlasG4Eng AtlasG4Eng.G4Eng.gbl.G4Commands().process.list() - + simFlags.InitFunctions.add_function("postInit", gmsb_processlist) def gmsb_setparams(): @@ -98,57 +98,14 @@ if doG4SimConfig: ## Assuming that GMSBIndex is an int here... GMSBIndex = int(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBIndex"]) - - def modify_slepton_mass(name, mass): - slepton = AtlasG4Eng.G4Eng.gbl.ParticleDataModifier(name) - slepton.SetParticleMass(mass) - if GMSBIndex == 1: # generic neutralino to photon scenario + from G4AtlasApps.SimFlags import simFlags + simFlags.PhysicsOptions += ["GauginosPhysicsTool"] - GMSBNeutralino = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBNeutralino"]) - GMSBTime = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBLifeTime"]) - AtlasG4Eng.G4Eng.log.info("Generic GMSB neutralino to photon scenario (mass=%s MeV/time=%s ns)" % (GMSBNeutralino, GMSBTime)) - - AtlasG4Eng.G4Eng._ctrl.load("Gauginos") - NLsp=AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_chi_0_1") - NLsp.SetParticleMass(GMSBNeutralino) - NLsp.SetParticleLifeTime(GMSBTime) - NLsp.Stable(False) - NLsp.AddDecayChannel("s_chi_0_1",1.,"s_G=gamma") - - if AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.has_key("GMSBGravitino"): - GMSBGravitino = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBGravitino"]) - AtlasG4Eng.G4Eng.log.info("Adding gravitino mass (gravitino mass=%s keV)" % (GMSBGravitino*1E3)) - - Lsp=AtlasG4Eng.G4Eng.gbl.ParticleDataModifier("s_G") - Lsp.SetParticleMass(GMSBGravitino) - - del GMSBGravitino - - del GMSBNeutralino, GMSBTime - elif GMSBIndex == 2 or GMSBIndex == 3 or GMSBIndex == 4: # generic stau scenario - - GMSBStau = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration["GMSBStau"]) - AtlasG4Eng.G4Eng.log.info("Generic GMSB stau scenario (stau=%s MeV)" % GMSBStau) - - AtlasG4Eng.G4Eng._ctrl.load("Sleptons") - modify_slepton_mass("s_tau_plus_1", GMSBStau) - modify_slepton_mass("s_tau_minus_1", GMSBStau) - - if AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.has_key("GMSBSlepton"): - GMSBSlepton = eval(AtlasG4Eng.G4Eng.Dict_SpecialConfiguration.get("GMSBSlepton", None)) - AtlasG4Eng.G4Eng.log.info("Adding slepton mass to GMSB stau scenario (slepton=%s MeV)" % GMSBSlepton) - - modify_slepton_mass("s_mu_plus_R", GMSBSlepton) - modify_slepton_mass("s_mu_minus_R", GMSBSlepton) - modify_slepton_mass("s_e_plus_R", GMSBSlepton) - modify_slepton_mass("s_e_minus_R", GMSBSlepton) - - del GMSBSlepton - - del GMSBStau + from G4AtlasApps.SimFlags import simFlags + simFlags.PhysicsOptions += ["SleptonsPhysicsTool"] del GMSBIndex diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py index 221e3de9aae91e6e4b273332fc9ede358d8accbd..e1619727bad04a9fff91587290df4853238c63c7 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Monopole.py @@ -46,11 +46,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() assert "MASS" in simdict assert "GCHARGE" in simdict @@ -65,13 +65,14 @@ if doG4SimConfig: simFlags.EquationOfMotion.set_On() simFlags.EquationOfMotion.set_Value_and_Lock("MonopoleEquationOfMotion") simFlags.G4Stepper.set_Value_and_Lock('ClassicalRK4') + simFlags.PhysicsOptions += ["MonopolePhysicsTool"] - def monopole_setupg4(): - from G4AtlasApps import PyG4Atlas, AtlasG4Eng - AtlasG4Eng.G4Eng.load_Lib("Monopole") - simFlags.InitFunctions.add_function("preInitPhysics", monopole_setupg4) - - if (not hasattr(simFlags, 'UseV2UserActions') or not simFlags.UseV2UserActions(): + try: + # MT-compatible UserActions + from G4AtlasServices.G4AtlasServicesConfig import addAction + addAction("LooperKillerTool",['Step'],False) + addAction("HIPKillerTool",['Step'],False) + except: # this configures the non-MT UserActions try: from G4AtlasServices.G4AtlasUserActionConfig import UAStore diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py index 9d2c39d3d6aec5d0f93907972169a12176d3bafc..53e9a3f1b57d37dc6bc6f20d6881bc943d0abe5a 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Qball.py @@ -48,11 +48,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() assert "MASS" in simdict assert "CHARGE" in simdict @@ -67,18 +67,14 @@ if doG4SimConfig: simFlags.EquationOfMotion.set_On() simFlags.EquationOfMotion.set_Value_and_Lock("MonopoleEquationOfMotion") simFlags.G4Stepper.set_Value_and_Lock('ClassicalRK4') + simFlags.PhysicsOptions += ["MonopolePhysicsTool"] - def monopole_setupg4(): - from G4AtlasApps import PyG4Atlas, AtlasG4Eng - AtlasG4Eng.G4Eng.load_Lib("Monopole") - simFlags.InitFunctions.add_function("preInitPhysics", monopole_setupg4) - - if (hasattr(simFlags, 'UseV2UserActions') and simFlags.UseV2UserActions()): + try: # MT-compatible UserActions from G4AtlasServices.G4AtlasServicesConfig import addAction addAction("LooperKillerTool",['Step'],False) addAction("HIPKillerTool",['Step'],False) - else: + except: # this configures the non-MT UserActions try: from G4AtlasServices.G4AtlasUserActionConfig import UAStore diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py index 3c990b5ca9c1b4246ff91e095a9747e249dcfb3a..6246f780ac1160f00fd20f0edaaf4a655e5e10c8 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Quirks.py @@ -16,11 +16,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() quirk_mass = float(simdict["MASS"]) quirk_charge = float(simdict["CHARGE"]) @@ -48,9 +48,5 @@ if doG4SimConfig: f.write("0\n") f.close() - def load_quirks_lib(): - from G4AtlasApps import AtlasG4Eng - AtlasG4Eng.G4Eng.load_Lib("Quirks") - simFlags.InitFunctions.add_function("preInitPhysics", load_quirks_lib) - + simFlags.PhysicsOptions += ["QuirksPhysicsTool"] del quirk_firststring, quirk_maxboost, quirk_maxmerge, quirk_debugenabled, quirk_debugdist, quirk_debugsteps, doG4SimConfig, simdict, f, quirk_mass, quirk_charge, quirk_pdgid, quirk_stringforce diff --git a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py index a50c8b0b149b24bb07ba9b50e430874d2957ac01..791daa3ec89fdf908dbd280b58f665c1f402ad56 100644 --- a/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py +++ b/Simulation/SimulationJobOptions/share/specialConfig/preInclude.Rhadrons.py @@ -356,11 +356,11 @@ try: simdict = digitizationFlags.specialConfiguration.get_Value() doG4SimConfig = False else: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() except: - from G4AtlasApps import AtlasG4Eng - simdict = AtlasG4Eng.G4Eng.Dict_SpecialConfiguration + from G4AtlasApps.SimFlags import simFlags + simdict = simFlags.specialConfiguration.get_Value() ## Compulsory keys assert "MASS" in simdict @@ -379,10 +379,7 @@ if simdict.has_key("Mixing"): if doG4SimConfig: from G4AtlasApps.SimFlags import simFlags - def rhadrons_setupg4(): - from G4AtlasApps import PyG4Atlas, AtlasG4Eng - AtlasG4Eng.G4Eng.load_Lib("RHadrons") - simFlags.InitFunctions.add_function("preInitPhysics", rhadrons_setupg4) + simFlags.PhysicsOptions += ["RHadronsPhysicsTool"] # In case we want to use Pythia for decays in line... if simdict.has_key("DECAYS"):