def getFatrasSimHitCreatorMS(name="ISF_FatrasSimHitCreatorMS", **kwargs): mergeable_collection_suffix = "_Fatras" mdt_bare_collection_name = "MDT_Hits" mdt_merger_input_property = "MDTHits" mdt_hits_collection_name = generate_mergeable_collection_name(mdt_bare_collection_name, mergeable_collection_suffix, mdt_merger_input_property) rpc_bare_collection_name = "RPC_Hits" rpc_merger_input_property = "RPCHits" rpc_hits_collection_name = generate_mergeable_collection_name(rpc_bare_collection_name, mergeable_collection_suffix, rpc_merger_input_property) tgc_bare_collection_name = "TGC_Hits" tgc_merger_input_property = "TGCHits" tgc_hits_collection_name = generate_mergeable_collection_name(tgc_bare_collection_name, mergeable_collection_suffix, tgc_merger_input_property) csc_bare_collection_name = "CSC_Hits" csc_merger_input_property = "CSCHits" csc_hits_collection_name = generate_mergeable_collection_name(csc_bare_collection_name, mergeable_collection_suffix, csc_merger_input_property) from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("Extrapolator" , getPublicTool('ISF_FatrasExtrapolator')) kwargs.setdefault("MDTCollectionName", mdt_hits_collection_name) kwargs.setdefault("RPCCollectionName", rpc_hits_collection_name) kwargs.setdefault("TGCCollectionName", tgc_hits_collection_name) kwargs.setdefault("CSCCollectionName", csc_hits_collection_name) from ISF_FatrasToolsMS.ISF_FatrasToolsMSConf import iFatras__SimHitCreatorMS return iFatras__SimHitCreatorMS(name, **kwargs )
def getFatrasMaterialEffectsEngine(name="ISF_FatrasMaterialEffectsEngine", **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper')) # energy loss kwargs.setdefault("EnergyLoss" , True) kwargs.setdefault("EnergyLossSampler" , getPublicTool('ISF_FatrasEnergyLossUpdator')) kwargs.setdefault("UseElectronSampler" , True) kwargs.setdefault("ElectronEnergyLossSampler" , getPublicTool('ISF_FatrasEnergyLossSamplerBetheHeitler')) kwargs.setdefault("CreateBremPhotons" , True) # multiple scattering kwargs.setdefault("MultipleScattering" , True) kwargs.setdefault("MultipleScatteringSampler" , getPublicTool('ISF_FatrasMultipleScatteringSamplerHighland')) # the properties given throuth the JobProperties interface kwargs.setdefault("MomentumCut" , FatrasTuningFlags.MomCutOffSec()) kwargs.setdefault("MinimumBremPhotonMomentum" , FatrasTuningFlags.MomCutOffSec()) # MCTruth Process Code kwargs.setdefault("BremProcessCode" , 3) # TODO: to be taken from central definition # the validation output kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("OutputPrefix", '[McME] - ') kwargs.setdefault("OutputPostfix", ' - ') kwargs.setdefault("OutputLevel", ISF_FatrasFlags.OutputLevelGeneral()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McMaterialEffectsEngine return iFatras__McMaterialEffectsEngine(name, **kwargs )
def getFatrasMultipleScatteringSamplerGeneralMixture(name="ISF_MultipleScatteringSamplerGeneralMixture", **kwargs): from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "TrkExRnd" ): simFlags.RandomSeedList.addSeed( "TrkExRnd" , 12412330, 37849324 ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , 'TrkExRnd' ) # TODO: read stream name "TrkExRnd" from Fatras jobProperties from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__MultipleScatteringSamplerGeneralMixture return iFatras__MultipleScatteringSamplerGeneralMixture(name, **kwargs )
def getFatrasEnergyLossSamplerBetheHeitler(name="ISF_FatrasEnergyLossSamplerBetheHeitler", **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ScaleFactor" , FatrasTuningFlags.BetheHeitlerScalor()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__EnergyLossSamplerBetheHeitler return iFatras__EnergyLossSamplerBetheHeitler(name, **kwargs )
def getFatrasMultipleScatteringUpdator(name="ISF_FatrasMultipleScatteringUpdator", **kwargs): from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "TrkExRnd" ): simFlags.RandomSeedList.addSeed( "TrkExRnd" , 12412330, 37849324 ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , 'TrkExRnd' ) # TODO: read stream name "TrkExRnd" from Fatras jobProperties kwargs.setdefault("GaussianMixtureModel" , FatrasTuningFlags.GaussianMixtureModel()) from TrkExTools.TrkExToolsConf import Trk__MultipleScatteringUpdator return Trk__MultipleScatteringUpdator(name, **kwargs )
def getFatrasEnergyLossUpdator(name="ISF_FatrasEnergyLossUpdator", **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("UsePDG_EnergyLossFormula", True) kwargs.setdefault("EnergyLossDistribution", 2) #kwargs.setdefault("EnergyLossUpdator" , getPublicTool('AtlasEnergyLossUpdator')) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McEnergyLossUpdator return iFatras__McEnergyLossUpdator(name, **kwargs )
def getFatrasG4HadIntProcessor(name="ISF_FatrasG4HadIntProcessor", **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode()) kwargs.setdefault("MomentumCut" , FatrasTuningFlags.MomCutOffSec()) from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__G4HadIntProcessor return iFatras__G4HadIntProcessor(name, **kwargs )
def getFatrasConversionCreator(name="ISF_FatrasConversionCreator", **kwargs): # Fatras Hadronic Interaction Processor # hadronic interaction creator from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("PhysicsProcessCode" , 14) # TODO: to be taken from central definition kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__PhotonConversionTool return iFatras__PhotonConversionTool(name, **kwargs )
def getFatrasHitCreatorTRT(name="ISF_FatrasHitCreatorTRT", **kwargs): bare_collection_name = "TRTUncompressedHits" mergeable_collection_suffix = "_Fatras" merger_input_property = "TRTUncompressedHits" hits_collection_name = generate_mergeable_collection_name(bare_collection_name, mergeable_collection_suffix, merger_input_property) from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("CollectionName" , hits_collection_name) from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__HitCreatorTRT return iFatras__HitCreatorTRT(name, **kwargs )
def getFatrasHitCreatorSCT(name="ISF_FatrasHitCreatorSCT", **kwargs): bare_collection_name = "SCT_Hits" mergeable_collection_suffix = "_Fatras" merger_input_property = "SCTHits" hits_collection_name = generate_mergeable_collection_name(bare_collection_name, mergeable_collection_suffix, merger_input_property) from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("IdHelperName" , 'SCT_ID') kwargs.setdefault("CollectionName" , hits_collection_name) kwargs.setdefault("UseConditionsSvc", False) from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__HitCreatorSilicon return iFatras__HitCreatorSilicon(name, **kwargs )
def getFatrasSimHitCreatorMS(name="ISF_FatrasSimHitCreatorMS", **kwargs): mergeable_collection_suffix = "_Fatras" region = 'MUON' mdt_bare_collection_name = "MDT_Hits" mdt_merger_input_property = "MDTHits" mdt_hits_collection_name = generate_mergeable_collection_name(mdt_bare_collection_name, mergeable_collection_suffix, mdt_merger_input_property, region) rpc_bare_collection_name = "RPC_Hits" rpc_merger_input_property = "RPCHits" rpc_hits_collection_name = generate_mergeable_collection_name(rpc_bare_collection_name, mergeable_collection_suffix, rpc_merger_input_property, region) tgc_bare_collection_name = "TGC_Hits" tgc_merger_input_property = "TGCHits" tgc_hits_collection_name = generate_mergeable_collection_name(tgc_bare_collection_name, mergeable_collection_suffix, tgc_merger_input_property, region) csc_bare_collection_name = "CSC_Hits" csc_merger_input_property = "CSCHits" csc_hits_collection_name = generate_mergeable_collection_name(csc_bare_collection_name, mergeable_collection_suffix, csc_merger_input_property, region) from G4AtlasApps.SimFlags import simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("Extrapolator" , getPublicTool('ISF_FatrasExtrapolator')) kwargs.setdefault("MDTCollectionName", mdt_hits_collection_name) kwargs.setdefault("RPCCollectionName", rpc_hits_collection_name) kwargs.setdefault("TGCCollectionName", tgc_hits_collection_name) kwargs.setdefault("CSCCollectionName", csc_hits_collection_name) from MuonTGRecTools.MuonTGRecToolsConf import Muon__MuonTGMeasurementTool MuonTGMeasurementTool = Muon__MuonTGMeasurementTool( name = 'MuonTGMeasurementTool', UseDSManager = True ) from AthenaCommon.AppMgr import ToolSvc ToolSvc += MuonTGMeasurementTool kwargs.setdefault("MeasurementTool", MuonTGMeasurementTool) from ISF_FatrasToolsMS.ISF_FatrasToolsMSConf import iFatras__SimHitCreatorMS return iFatras__SimHitCreatorMS(name, **kwargs )
def getFatrasParticleDecayHelper(name="ISF_FatrasParticleDecayHelper", **kwargs): from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasG4" ): simFlags.RandomSeedList.addSeed( "FatrasG4" , 23491234, 23470291 ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("G4RandomStreamName" , "FatrasG4") # TODO: read stream name "FatrasG4" from Fatras jobProperties kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("ParticleTruthSvc", simFlags.TruthStrategy.TruthServiceName()) kwargs.setdefault("PDGToG4ParticleConverter", getPublicTool('ISF_FatrasPdgG4Particle')) # the validation output kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) #kwargs.setdefault("G4RunManagerHelper" , getPublicTool('ISF_G4RunManagerHelper')) from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__G4ParticleDecayHelper return iFatras__G4ParticleDecayHelper(name, **kwargs )
def getFatrasParametricHadIntProcessor(name="ISF_FatrasParametricHadIntProcessor", **kwargs): from G4AtlasApps.SimFlags import simFlags # Fatras Hadronic Interaction Processor # hadronic interaction creator kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) kwargs.setdefault("HadronicInteractionScaleFactor" , FatrasTuningFlags.HadronicInteractionProbabilityScalor()) kwargs.setdefault("MinimumHadronicInitialEnergy" , FatrasTuningFlags.MomCutOffSec()) kwargs.setdefault("MinimumHadronicOutEnergy" , FatrasTuningFlags.MomCutOffSec()) kwargs.setdefault("HadronicInteractionValidation" , False) kwargs.setdefault("PhysicsProcessCode" , 121) # TODO: to be taken from central definition kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__HadIntProcessorParametric return iFatras__HadIntProcessorParametric(name, **kwargs )
def getPunchThroughTool(name="ISF_PunchThroughTool", **kwargs): from G4AtlasApps.SimFlags import SimFlags,simFlags kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FastCaloSimFlags.RandomStreamName() ) kwargs.setdefault("FilenameLookupTable" , "CaloPunchThroughParametrisation.root" ) kwargs.setdefault("PunchThroughInitiators" , [ 211 ] ) kwargs.setdefault("PunchThroughParticles" , [ 2212, 211, 22, 11, 13 ] ) kwargs.setdefault("DoAntiParticles" , [ False, True, False, True, True ] ) kwargs.setdefault("CorrelatedParticle" , [ 211, 2212, 11, 22, 0 ] ) kwargs.setdefault("FullCorrelationEnergy" , [ 100000., 100000., 100000., 100000., 0. ] ) kwargs.setdefault("MinEnergy" , [ 938.3, 135.6, 50., 50., 105.7 ] ) kwargs.setdefault("MaxNumParticles" , [ -1, -1, -1, -1, -1 ] ) kwargs.setdefault("EnergyFactor" , [ 1., 1., 1., 1., 1. ] ) kwargs.setdefault("BarcodeSvc" , getService('ISF_LegacyBarcodeService') ) kwargs.setdefault("EnvelopeDefSvc" , getService('AtlasGeometry_EnvelopeDefSvc') ) kwargs.setdefault("BeamPipeRadius" , 500. ) from ISF_PunchThroughTools.ISF_PunchThroughToolsConf import ISF__PunchThroughTool return ISF__PunchThroughTool(name, **kwargs )
def getG4TransportTool(name='ISFG4TransportTool', **kwargs): from G4AtlasApps.SimFlags import simFlags kwargs.setdefault('RandomGenerator', 'athena') kwargs.setdefault('RandomNumberService', simFlags.RandomSvc()) kwargs.setdefault('InputConverter', 'ISF_InputConverter') kwargs.setdefault('UserActionSvc', 'G4UA::ISFUserActionSvc') if hasattr(simFlags, 'RecordFlux') and simFlags.RecordFlux.statusOn: kwargs.setdefault('RecordFlux', simFlags.RecordFlux()) # Multi-threading settinggs from AthenaCommon.ConcurrencyFlags import jobproperties as concurrencyProps if concurrencyProps.ConcurrencyFlags.NumThreads() > 0: is_hive = True else: is_hive = False kwargs.setdefault('MultiThreading', is_hive) # Set commands for the G4AtlasAlg kwargs.setdefault("G4Commands", simFlags.G4Commands.get_Value()) return CfgMgr.iGeant4__G4TransportTool(name, **kwargs)
def getFatrasProcessSamplingTool(name="ISF_FatrasProcessSamplingTool", **kwargs): # random number service from G4AtlasApps.SimFlags import simFlags kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc()) # truth record kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) # decays kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper')) # photon conversion kwargs.setdefault("PhotonConversionTool" , getPublicTool('ISF_FatrasConversionCreator')) # hadronic interactions kwargs.setdefault("HadronicInteraction" , True) #kwargs.setdefault("HadronicInteractionProcessor", getPublicTool('ISF_FatrasParametricHadIntProcessor')) kwargs.setdefault("HadronicInteractionProcessor", getPublicTool('ISF_FatrasG4HadIntProcessor')) # the validation output kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__ProcessSamplingTool return iFatras__ProcessSamplingTool(name, **kwargs)
def getFatrasSimEngine(name="ISF_FatrasSimEngine", **kwargs): kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasSimHitCreatorID')) # TODO: G4 Tools can not be used at the same time as Geant4 inside ISF kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper')) # the filter setup kwargs.setdefault("TrackFilter" , getPublicTool('ISF_FatrasKinematicFilter')) kwargs.setdefault("NeutralFilter" , getPublicTool('ISF_FatrasKinematicFilter')) kwargs.setdefault("PhotonFilter" , getPublicTool('ISF_FatrasKinematicFilter')) # extrapolator - test setup kwargs.setdefault("Extrapolator" , getPublicTool('ISF_FatrasExEngine')) # kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) # set the output level # kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) # the validation kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) # random number service from G4AtlasApps.SimFlags import simFlags kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportEngine return iFatras__TransportEngine(name, **kwargs )
def getFatrasMaterialUpdator(name="ISF_FatrasMaterialUpdator", **kwargs): from G4AtlasApps.SimFlags import simFlags from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("ParticleBroker" , ISF_Flags.ParticleBroker()) kwargs.setdefault("TruthRecordSvc" , simFlags.TruthStrategy.TruthServiceName()) # hadronic interactions kwargs.setdefault("HadronicInteraction" , True) #kwargs.setdefault("HadronicInteractionProcessor", getPublicTool('ISF_FatrasParametricHadIntProcessor')) kwargs.setdefault("HadronicInteractionProcessor", getPublicTool('ISF_FatrasG4HadIntProcessor')) # enrgy loss kwargs.setdefault("EnergyLoss" , True) kwargs.setdefault("EnergyLossUpdator" , getPublicTool('ISF_FatrasEnergyLossUpdator')) # mutiple scattering kwargs.setdefault("MultipleScattering" , True) kwargs.setdefault("MultipleScatteringUpdator" , getPublicTool('ISF_FatrasMultipleScatteringUpdator')) # photon conversion kwargs.setdefault("PhotonConversionTool" , getPublicTool('ISF_FatrasConversionCreator')) # the validation output kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("BremPhotonValidation" , False) kwargs.setdefault("EnergyDepositValidation" , False) # the properties given throuth the JobProperties interface kwargs.setdefault("MomentumCut" , FatrasTuningFlags.MomCutOffSec()) kwargs.setdefault("MinimumBremPhotonMomentum" , FatrasTuningFlags.MomCutOffSec()) # kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper')) # MCTruth Process Code kwargs.setdefault("BremProcessCode" , 3) # TODO: to be taken from central definition kwargs.setdefault("TrackingGeometrySvc" , AtlasTrackingGeometrySvc) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McMaterialEffectsUpdator return iFatras__McMaterialEffectsUpdator(name, **kwargs )