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 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 getFatrasStaticPropagator(name="ISF_FatrasStaticPropagator", **kwargs): kwargs.setdefault("Propagator", getPublicTool('ISF_FatrasPropagator')) # configure output formatting kwargs.setdefault("OutputPrefix", '[SP] - ') kwargs.setdefault("OutputPostfix", ' - ') kwargs.setdefault("OutputLevel", ISF_FatrasFlags.OutputLevelGeneral()) from TrkExEngine.TrkExEngineConf import Trk__PropagationEngine as StaticPropagator return StaticPropagator(name, **kwargs)
def getFatrasSimHitCreatorID(name="ISF_FatrasSimHitCreatorID", **kwargs): kwargs.setdefault("PixelHitCreator" , getPublicTool('ISF_FatrasHitCreatorPixel')) kwargs.setdefault("SctHitCreator" , getPublicTool('ISF_FatrasHitCreatorSCT')) kwargs.setdefault("TrtHitCreator" , getPublicTool('ISF_FatrasHitCreatorTRT')) kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__SimHitCreatorID return iFatras__SimHitCreatorID(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 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 getFatrasSimulatorToolST(name="ISF_FatrasSimulatorToolST", **kwargs): kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) # set the output level kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) # register Fatras random number stream if not already registered from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ): simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 ) return CfgMgr.ISF__FatrasSimTool(name, **kwargs)
def getFatrasStaticExtrapolator(name="ISF_FatrasStaticExEngine", **kwargs): # give the tools it needs kwargs.setdefault("PropagationEngine", getPublicTool('ISF_FatrasStaticPropagator')) kwargs.setdefault("MaterialEffectsEngine", getPublicTool('ISF_FatrasMaterialEffectsEngine')) kwargs.setdefault("NavigationEngine", getPublicTool('ISF_FatrasStaticNavigationEngine')) # configure output formatting kwargs.setdefault("OutputPrefix", '[SE] - ') kwargs.setdefault("OutputPostfix", ' - ') kwargs.setdefault("OutputLevel", ISF_FatrasFlags.OutputLevelGeneral()) from TrkExEngine.TrkExEngineConf import Trk__StaticEngine return Trk__StaticEngine(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 getFatrasStaticNavigationEngine(name="ISF_FatrasStaticNavigationEngine", **kwargs): #give the tools it needs from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc kwargs.setdefault("PropagationEngine", getPublicTool('ISF_FatrasStaticPropagator')) kwargs.setdefault("MaterialEffectsEngine", getPublicTool('ISF_FatrasMaterialEffectsEngine')) kwargs.setdefault("TrackingGeometry", AtlasTrackingGeometrySvc.TrackingGeometryName) # configure output formatting kwargs.setdefault("OutputPrefix", '[SN] - ') kwargs.setdefault("OutputPostfix", ' - ') kwargs.setdefault("OutputLevel", ISF_FatrasFlags.OutputLevelGeneral()) from TrkExEngine.TrkExEngineConf import Trk__StaticNavigationEngine return Trk__StaticNavigationEngine(name, **kwargs)
def getFatrasExEngine(name="ISF_FatrasExEngine", **kwargs): # load the tracking geometry service from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc # assign the tools kwargs.setdefault("ExtrapolationEngines" , [ getPublicTool('ISF_FatrasStaticExEngine') ] ) kwargs.setdefault("TrackingGeometrySvc" , AtlasTrackingGeometrySvc) kwargs.setdefault("PropagationEngine" , getPublicTool('ISF_FatrasStaticPropagator')) # configure output formatting kwargs.setdefault("OutputPrefix" , '[ME] - ') kwargs.setdefault("OutputPostfix" , ' - ') kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) from TrkExEngine.TrkExEngineConf import Trk__ExtrapolationEngine return Trk__ExtrapolationEngine(name="ISF_FatrasExEngine", **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 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 getFatrasSimServiceID(name="ISF_FatrasSimSvc", **kwargs): kwargs.setdefault("Identifier" , "Fatras") kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) # set the output level kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) # register Fatras random number stream if not already registered from G4AtlasApps.SimFlags import simFlags if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ): simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 ) from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc return iFatras__FatrasSimSvc(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 getFatrasSimTool(name="ISF_FatrasSimTool", **kwargs): kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasSimHitCreatorID')) kwargs.setdefault("SimHitCreatorMS" , getPublicTool('ISF_FatrasSimHitCreatorMS')) # TODO: G4 Tools can not be used at the same time as Geant4 inside ISF kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper')) kwargs.setdefault("ParticleHelper" , getPublicTool('ISF_ParticleHelper')) # 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_FatrasExtrapolator')) # kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) # set the output level kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) kwargs.setdefault("ValidationOutput" , ISF_Flags.ValidationMode()) # random number service from G4AtlasApps.SimFlags import simFlags kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc()) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportTool return iFatras__TransportTool(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 )