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 getFatrasSTEP_Propagator(name="ISF_FatrasSTEP_Propagator", **kwargs): kwargs.setdefault("MomentumCutOff" , FatrasTuningFlags.MomCutOffSec() ) kwargs.setdefault("SimulationMode" , True ) kwargs.setdefault("SimMatEffUpdator" , getPublicTool('ISF_FatrasMaterialUpdator') ) # the step propagaor from TrkExSTEP_Propagator.TrkExSTEP_PropagatorConf import Trk__STEP_Propagator as StepPropagator return StepPropagator(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 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 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 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 )
def getFatrasKinematicFilter(name="ISF_FatrasKinematicFilter", **kwargs): kwargs.setdefault("MaxEtaSymmetric" , 10.) kwargs.setdefault("MinMomentum" , FatrasTuningFlags.MomCutOffSec()) from ISF_Tools.ISF_ToolsConf import ISF__KinematicParticleFilter return ISF__KinematicParticleFilter(name, **kwargs )