Skip to content
Snippets Groups Projects
Commit f63c3272 authored by Robert Harrington's avatar Robert Harrington Committed by Graeme Stewart
Browse files

changes to allow split simulation of hard scatter and pileup (ISF_FatrasServices-00-02-14)

2015-06-22 Robert Harrington <roberth@cern.ch>
	* ISF_FatrasServicesConfig(Db).py:
	- added pileup hit creators
	- modified existing ISF_FatrasPileupSimTool to use new
	ISF_FatrasPileupSimHitCreatorID,
	- modified ISF_FatrasPileupSimSvc to use ISF_FatrasPileupSimTool for ID
	* tagging as ISF_FatrasServices-00-02-14

2015-06-15 Sharka Todorova <sarka.todorova@cern.ch>
	* remove (I)PhotonConversionSampler ( duplicating (I(PhotonConversionTool
	* tagging as ISF_FatrasServices-00-02-13

2015-06-12 Sharka Todorova <sarka.todorova@cern.ch>
	* update for 'old' extrapolation
	* tagging as ISF_FatrasServices-00-02-12

2015-06-05 Sharka Todorova <sarka.todorova@cern.ch>
	* cleanup of duplicate eloss tools
	* tagging as ISF_FatrasServices-00-02-11

...
(Long ChangeLog diff - truncated)
parent 3f6c0124
No related branches found
No related tags found
No related merge requests found
...@@ -28,14 +28,13 @@ ...@@ -28,14 +28,13 @@
namespace ISF { namespace ISF {
class IParticleFilter; class IParticleFilter;
class IParticleProcessor;
class ISFParticle; class ISFParticle;
class ITruthSvc; class ITruthSvc;
} }
namespace iFatras { namespace iFatras {
class ITransportTool;
/** @class FatrasSimSvc /** @class FatrasSimSvc
@author Andreas.Salzburger -at- cern.ch @author Andreas.Salzburger -at- cern.ch
...@@ -67,7 +66,8 @@ namespace iFatras { ...@@ -67,7 +66,8 @@ namespace iFatras {
FatrasSimSvc(); FatrasSimSvc();
/** Track Creation & transport */ /** Track Creation & transport */
ToolHandle<iFatras::ITransportTool> m_simulationTool; //!< Pointer to the transport AlgTool ToolHandle<ISF::IParticleProcessor> m_IDsimulationTool; //!< Pointer to the transport AlgTool
ToolHandle<ISF::IParticleProcessor> m_simulationTool; //!< Pointer to the transport AlgTool
ToolHandle<ISF::IParticleFilter> m_particleFilter; //!< the particle filter concerning kinematic cuts, etc. ToolHandle<ISF::IParticleFilter> m_particleFilter; //!< the particle filter concerning kinematic cuts, etc.
}; };
......
...@@ -20,7 +20,6 @@ use AtlasDetDescr AtlasDetDescr-* DetectorDescription ...@@ -20,7 +20,6 @@ use AtlasDetDescr AtlasDetDescr-* DetectorDescription
# private use statements # private use statements
private private
use StoreGate StoreGate-* Control use StoreGate StoreGate-* Control
use ISF_FatrasInterfaces ISF_FatrasInterfaces-* Simulation/ISF/ISF_Fatras
use ISF_Event ISF_Event-* Simulation/ISF/ISF_Core use ISF_Event ISF_Event-* Simulation/ISF/ISF_Core
public public
...@@ -29,6 +28,6 @@ apply_pattern component_library ...@@ -29,6 +28,6 @@ apply_pattern component_library
apply_pattern declare_python_modules files="*.py" apply_pattern declare_python_modules files="*.py"
# use the following to compile with debug information # use the following to compile with debug information
#private private
#macro cppdebugflags '$(cppdebugflags_s)' #macro cppdebugflags '$(cppdebugflags_s)'
#macro_remove componentshr_linkopts "-Wl,-s" #macro_remove componentshr_linkopts "-Wl,-s"
...@@ -71,6 +71,16 @@ def initialiseCoolDataBaseFolder(): ...@@ -71,6 +71,16 @@ def initialiseCoolDataBaseFolder():
#HACK: CoolDataBaseFolder may not be set at this point! Is this right? -KG #HACK: CoolDataBaseFolder may not be set at this point! Is this right? -KG
return CoolDataBaseFolder return CoolDataBaseFolder
######################################################################################
# validation & process sampling
def getFatrasPhysicsValidationTool(name="ISF_FatrasPhysicsValidationTool", **kwargs):
kwargs.setdefault("ValidationStreamName", "ISFFatras")
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__PhysicsValidationTool
return iFatras__PhysicsValidationTool(name, **kwargs)
################################################################################# #################################################################################
# The Geometry Builder # The Geometry Builder
################################################################################# #################################################################################
...@@ -80,11 +90,14 @@ def getInDetTrackingGeometryBuilder(name="ISF_InDetTrackingGeometryBuilder", **k ...@@ -80,11 +90,14 @@ def getInDetTrackingGeometryBuilder(name="ISF_InDetTrackingGeometryBuilder", **k
kwargs.setdefault("namePrefix" , 'Fatras') kwargs.setdefault("namePrefix" , 'Fatras')
kwargs.setdefault("setLayerAssociation" , False) kwargs.setdefault("setLayerAssociation" , False)
#kwargs.setdefault("VolumeEnclosureOuterR" , 1148.) ### HACK: Cannot set via imput arguments. Is this right?? -kg #kwargs.setdefault("VolumeEnclosureOuterR" , 1148.) ### HACK: Cannot set via imput arguments. Is this right?? -kg
if not TrkDetFlags.SLHC_Geometry() : if TrkDetFlags.ISF_FatrasCustomGeometry() :
kwargs.setdefault("buildTrtStrawLayers" , True) from ISF_FatrasDetDescrTools.CustomInDetTrackingGeometryBuilder import CustomInDetTrackingGeometryBuilder as IDGeometryBuilder
from InDetTrackingGeometry.ConfiguredInDetTrackingGeometryBuilder import ConfiguredInDetTrackingGeometryBuilder as IDGeometryBuilder
else : else :
from InDetTrackingGeometry.ConfiguredSLHC_InDetTrackingGeometryBuilder import ConfiguredSLHC_InDetTrackingGeometryBuilder as IDGeometryBuilder if not TrkDetFlags.SLHC_Geometry() :
kwargs.setdefault("buildTrtStrawLayers" , True)
from InDetTrackingGeometry.ConfiguredInDetTrackingGeometryBuilder import ConfiguredInDetTrackingGeometryBuilder as IDGeometryBuilder
else :
from InDetTrackingGeometry.ConfiguredSLHC_InDetTrackingGeometryBuilder import ConfiguredSLHC_InDetTrackingGeometryBuilder as IDGeometryBuilder
t = IDGeometryBuilder(name, **kwargs ) t = IDGeometryBuilder(name, **kwargs )
t.VolumeEnclosureOuterR = 1148. t.VolumeEnclosureOuterR = 1148.
#t.EnvelopeDefinitionSvc = 'ISF_EnvelopeDefSvc' #t.EnvelopeDefinitionSvc = 'ISF_EnvelopeDefSvc'
...@@ -159,7 +172,8 @@ def getFatrasTrackingGeometrySvc(name="ISF_FatrasTrackingGeometrySvc", **kwargs) ...@@ -159,7 +172,8 @@ def getFatrasTrackingGeometrySvc(name="ISF_FatrasTrackingGeometrySvc", **kwargs)
def getFatrasNavigator(name="ISF_FatrasNavigator", **kwargs): def getFatrasNavigator(name="ISF_FatrasNavigator", **kwargs):
# the Navigator (needed for several instances) # the Navigator (needed for several instances)
kwargs.setdefault("TrackingGeometrySvc" , getService('ISF_FatrasTrackingGeometrySvc')) from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc
kwargs.setdefault("TrackingGeometrySvc" , AtlasTrackingGeometrySvc)#getService('ISF_FatrasTrackingGeometrySvc'))
from TrkExTools.TrkExToolsConf import Trk__Navigator from TrkExTools.TrkExToolsConf import Trk__Navigator
return Trk__Navigator(name, **kwargs ) return Trk__Navigator(name, **kwargs )
...@@ -176,13 +190,35 @@ def getFatrasChargedPropagator(name="ISF_FatrasChargedPropagator", **kwargs): ...@@ -176,13 +190,35 @@ def getFatrasChargedPropagator(name="ISF_FatrasChargedPropagator", **kwargs):
#from TrkExSTEP_Propagator.TrkExSTEP_PropagatorConf import Trk__STEP_Propagator as ChargedPropagator #from TrkExSTEP_Propagator.TrkExSTEP_PropagatorConf import Trk__STEP_Propagator as ChargedPropagator
#return ChargedPropagator(name, **kwargs ) #return ChargedPropagator(name, **kwargs )
###################################################################################### # Propagators for the Extrapolation Engine
# validation & process sampling # load the RungeKutta Propagator
def getFatrasPhysicsValidationTool(name="ISF_FatrasPhysicsValidationTool", **kwargs): def getFatrasPropagator(name="ISF_FatrasPropagator", **kwargs):
kwargs.setdefault("ValidationStreamName", "ISFFatras") from TrkExRungeKuttaPropagator.TrkExRungeKuttaPropagatorConf import Trk__RungeKuttaPropagator as RungeKuttaPropagator
return RungeKuttaPropagator(name, **kwargs)
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__PhysicsValidationTool
return iFatras__PhysicsValidationTool(name, **kwargs) # from the Propagator create a Propagation engine to handle path length
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)
# load the static navigation engine
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)
################################################################################ ################################################################################
...@@ -197,22 +233,15 @@ def getFatrasPdgG4Particle(name="ISF_FatrasPdgG4Particle", **kwargs): ...@@ -197,22 +233,15 @@ def getFatrasPdgG4Particle(name="ISF_FatrasPdgG4Particle", **kwargs):
from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__PDGToG4Particle from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__PDGToG4Particle
return iFatras__PDGToG4Particle(name, **kwargs ) return iFatras__PDGToG4Particle(name, **kwargs )
def getFatrasParticleDecayer(name="ISF_FatrasParticleDecayer", **kwargs):
kwargs.setdefault("PDGToG4ParticleConverter", getPublicTool('ISF_FatrasPdgG4Particle'))
#kwargs.setdefault("G4RunManagerHelper" , getPublicTool('ISF_G4RunManagerHelper'))
from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__G4ParticleDecayCreator
return iFatras__G4ParticleDecayCreator(name, **kwargs )
def getFatrasParticleDecayHelper(name="ISF_FatrasParticleDecayHelper", **kwargs): def getFatrasParticleDecayHelper(name="ISF_FatrasParticleDecayHelper", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
simFlags.RandomSeedList.addSeed( "FatrasG4" , 23491234, 23470291 ) if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasG4" ):
simFlags.RandomSeedList.addSeed( "FatrasG4" , 23491234, 23470291 )
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("G4RandomStreamName" , "FatrasG4") # TODO: read stream name "FatrasG4" from Fatras jobProperties kwargs.setdefault("G4RandomStreamName" , "FatrasG4") # TODO: read stream name "FatrasG4" from Fatras jobProperties
kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc')) kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc'))
kwargs.setdefault("ParticleTruthSvc", ISF_Flags.TruthService.get_Value()) kwargs.setdefault("ParticleTruthSvc", ISF_Flags.TruthService.get_Value())
kwargs.setdefault("ParticleDecayer" , getPublicTool('ISF_FatrasParticleDecayer'))
kwargs.setdefault("PDGToG4ParticleConverter", getPublicTool('ISF_FatrasPdgG4Particle')) kwargs.setdefault("PDGToG4ParticleConverter", getPublicTool('ISF_FatrasPdgG4Particle'))
# the validation output # the validation output
kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode()) kwargs.setdefault("ValidationMode" , ISF_Flags.ValidationMode())
...@@ -239,7 +268,7 @@ def getFatrasG4HadIntProcessor(name="ISF_FatrasG4HadIntProcessor", **kwargs): ...@@ -239,7 +268,7 @@ def getFatrasG4HadIntProcessor(name="ISF_FatrasG4HadIntProcessor", **kwargs):
kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value()) kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value())
kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool'))
kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode()) kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode())
kwargs.setdefault("MinEnergyCut" , FatrasTuningFlags.MomCutOffSec()) kwargs.setdefault("MomentumCut" , FatrasTuningFlags.MomCutOffSec())
from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__G4HadIntProcessor from ISF_FatrasToolsG4.ISF_FatrasToolsG4Conf import iFatras__G4HadIntProcessor
return iFatras__G4HadIntProcessor(name, **kwargs ) return iFatras__G4HadIntProcessor(name, **kwargs )
...@@ -264,41 +293,61 @@ def getFatrasParametricHadIntProcessor(name="ISF_FatrasParametricHadIntProcessor ...@@ -264,41 +293,61 @@ def getFatrasParametricHadIntProcessor(name="ISF_FatrasParametricHadIntProcessor
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__HadIntProcessorParametric from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__HadIntProcessorParametric
return iFatras__HadIntProcessorParametric(name, **kwargs ) return iFatras__HadIntProcessorParametric(name, **kwargs )
# (iv) photon conversion
def getFatrasConversionCreator(name="ISF_FatrasConversionCreator", **kwargs):
# Fatras Hadronic Interaction Processor
# hadronic interaction creator
from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc'))
kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value())
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 getFatrasProcessSamplingTool(name="ISF_FatrasProcessSamplingTool", **kwargs): def getFatrasProcessSamplingTool(name="ISF_FatrasProcessSamplingTool", **kwargs):
# random number service # random number service
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc()) kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc())
# truth record
kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value())
# 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 from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__ProcessSamplingTool
return iFatras__ProcessSamplingTool(name, **kwargs) return iFatras__ProcessSamplingTool(name, **kwargs)
# #
# (ii) Energy Loss # (ii) Energy Loss
# - Ionization and Bremstrahlung loss # - Ionization and Bremstrahlung loss
# - assing the Bethe-Heitler Eloss updator
def getFatrasBetheHeitlerEnergyLossUpdator(name="ISF_FatrasBetheHeitlerEnergyLossUpdator", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("ScaleFactor" , FatrasTuningFlags.BetheHeitlerScalor())
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McBetheHeitlerEnergyLossUpdator
return iFatras__McBetheHeitlerEnergyLossUpdator(name, **kwargs )
def getFatrasEnergyLossUpdator(name="ISF_FatrasEnergyLossUpdator", **kwargs): def getFatrasEnergyLossUpdator(name="ISF_FatrasEnergyLossUpdator", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("ElectronEnergyLossUpdator" , getPublicTool('ISF_FatrasBetheHeitlerEnergyLossUpdator')) #kwargs.setdefault("EnergyLossUpdator" , getPublicTool('AtlasEnergyLossUpdator'))
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McEnergyLossUpdator from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McEnergyLossUpdator
return iFatras__McEnergyLossUpdator(name, **kwargs ) return iFatras__McEnergyLossUpdator(name, **kwargs )
# #
# (iii) Multiple scattering # (iii) Multiple scattering
def getFatrasMultipleScatteringUpdator(name="ISF_FatrasMultipleScatteringUpdator", **kwargs): def getFatrasMultipleScatteringUpdator(name="ISF_FatrasMultipleScatteringUpdator", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
simFlags.RandomSeedList.addSeed( "TrkExRnd" , 12412330, 37849324 ) if not simFlags.RandomSeedList.checkForExistingSeed( "TrkExRnd" ):
simFlags.RandomSeedList.addSeed( "TrkExRnd" , 12412330, 37849324 )
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , 'TrkExRnd' ) # TODO: read stream name "TrkExRnd" from Fatras jobProperties kwargs.setdefault("RandomStreamName" , 'TrkExRnd' ) # TODO: read stream name "TrkExRnd" from Fatras jobProperties
kwargs.setdefault("GaussianMixtureModel" , FatrasTuningFlags.GaussianMixtureModel()) kwargs.setdefault("GaussianMixtureModel" , FatrasTuningFlags.GaussianMixtureModel())
...@@ -306,26 +355,37 @@ def getFatrasMultipleScatteringUpdator(name="ISF_FatrasMultipleScatteringUpdator ...@@ -306,26 +355,37 @@ def getFatrasMultipleScatteringUpdator(name="ISF_FatrasMultipleScatteringUpdator
from TrkExTools.TrkExToolsConf import Trk__MultipleScatteringUpdator from TrkExTools.TrkExToolsConf import Trk__MultipleScatteringUpdator
return Trk__MultipleScatteringUpdator(name, **kwargs ) return Trk__MultipleScatteringUpdator(name, **kwargs )
# (iv) photon conversion def getFatrasMultipleScatteringSamplerHighland(name="ISF_MultipleScatteringSamplerHighland", **kwargs):
def getFatrasConversionCreator(name="ISF_FatrasConversionCreator", **kwargs):
# Fatras Hadronic Interaction Processor
# hadronic interaction creator
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) if not simFlags.RandomSeedList.checkForExistingSeed( "TrkExRnd" ):
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) simFlags.RandomSeedList.addSeed( "TrkExRnd" , 12412330, 37849324 )
kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc')) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value()) kwargs.setdefault("RandomStreamName" , 'TrkExRnd' ) # TODO: read stream name "TrkExRnd" from Fatras jobProperties
kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__MultipleScatteringSamplerHighland
kwargs.setdefault("PhysicsProcessCode" , 14) # TODO: to be taken from central definition return iFatras__MultipleScatteringSamplerHighland(name, **kwargs )
kwargs.setdefault('ValidationMode' , ISF_Flags.ValidationMode())
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__PhotonConversionTool def getFatrasMultipleScatteringSamplerGaussianMixture(name="ISF_MultipleScatteringSamplerGaussianMixture", **kwargs):
return iFatras__PhotonConversionTool(name, **kwargs ) from G4AtlasApps.SimFlags import SimFlags,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__MultipleScatteringSamplerGaussianMixture
return iFatras__MultipleScatteringSamplerGaussianMixture(name, **kwargs )
def getFatrasMultipleScatteringSamplerGeneralMixture(name="ISF_MultipleScatteringSamplerGeneralMixture", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,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 )
# Combining all in the MaterialEffectsUpdator # Combining all in the MaterialEffectsUpdator
def getFatrasMaterialUpdator(name="ISF_FatrasMaterialUpdator", **kwargs): def getFatrasMaterialUpdator(name="ISF_FatrasMaterialUpdator", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName()) kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc')) kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc'))
...@@ -352,13 +412,44 @@ def getFatrasMaterialUpdator(name="ISF_FatrasMaterialUpdator", **kwargs): ...@@ -352,13 +412,44 @@ def getFatrasMaterialUpdator(name="ISF_FatrasMaterialUpdator", **kwargs):
# #
kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool')) kwargs.setdefault("PhysicsValidationTool" , getPublicTool('ISF_FatrasPhysicsValidationTool'))
kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool'))
kwargs.setdefault("ParticleDecayer" , getPublicTool('ISF_FatrasParticleDecayer')) kwargs.setdefault("ParticleDecayHelper" , getPublicTool('ISF_FatrasParticleDecayHelper'))
# MCTruth Process Code # MCTruth Process Code
kwargs.setdefault("BremProcessCode" , 3) # TODO: to be taken from central definition kwargs.setdefault("BremProcessCode" , 3) # TODO: to be taken from central definition
kwargs.setdefault("TrackingGeometrySvc" , AtlasTrackingGeometrySvc)
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McMaterialEffectsUpdator from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__McMaterialEffectsUpdator
return iFatras__McMaterialEffectsUpdator(name, **kwargs ) return iFatras__McMaterialEffectsUpdator(name, **kwargs )
def getFatrasMaterialEffectsEngine(name="ISF_FatrasMaterialEffectsEngine", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
kwargs.setdefault("RandomStreamName" , ISF_FatrasFlags.RandomStreamName())
kwargs.setdefault("ParticleBroker" , getService('ISF_ParticleBrokerSvc'))
kwargs.setdefault("TruthRecordSvc" , ISF_Flags.TruthService.get_Value())
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("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): def getFatrasSTEP_Propagator(name="ISF_FatrasSTEP_Propagator", **kwargs):
kwargs.setdefault("MomentumCutOff" , FatrasTuningFlags.MomCutOffSec() ) kwargs.setdefault("MomentumCutOff" , FatrasTuningFlags.MomCutOffSec() )
kwargs.setdefault("SimulationMode" , True ) kwargs.setdefault("SimulationMode" , True )
...@@ -387,6 +478,33 @@ def getFatrasExtrapolator(name="ISF_FatrasExtrapolator", **kwargs): ...@@ -387,6 +478,33 @@ def getFatrasExtrapolator(name="ISF_FatrasExtrapolator", **kwargs):
#from TrkExTools.TrkExToolsConf import Trk__Extrapolator as Extrapolator #from TrkExTools.TrkExToolsConf import Trk__Extrapolator as Extrapolator
#return Extrapolator(name, **kwargs ) #return Extrapolator(name, **kwargs )
# load the Static ExtrapolationEngine
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 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 )
################################################################################ ################################################################################
# HIT CREATION SECTION # HIT CREATION SECTION
...@@ -425,6 +543,18 @@ def getFatrasHitCreatorTRT(name="ISF_FatrasHitCreatorTRT", **kwargs): ...@@ -425,6 +543,18 @@ def getFatrasHitCreatorTRT(name="ISF_FatrasHitCreatorTRT", **kwargs):
from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__HitCreatorTRT from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__HitCreatorTRT
return iFatras__HitCreatorTRT(name, **kwargs ) return iFatras__HitCreatorTRT(name, **kwargs )
def getFatrasPileupHitCreatorPixel(name="ISF_FatrasPileupHitCreatorPixel", **kwargs):
kwargs.setdefault("CollectionName" , 'PileupPixelHits')
return getFatrasHitCreatorPixel(name, **kwargs)
def getFatrasPileupHitCreatorSCT(name="ISF_FatrasPileupHitCreatorSCT", **kwargs):
kwargs.setdefault("CollectionName" , 'PileupSCT_Hits')
return getFatrasHitCreatorSCT(name, **kwargs)
def getFatrasPileupHitCreatorTRT(name="ISF_FatrasPileupHitCreatorTRT", **kwargs):
kwargs.setdefault("CollectionName" , 'PileupTRTUncompressedHits')
return getFatrasHitCreatorTRT(name, **kwargs)
################################################################################ ################################################################################
# TRACK CREATION SECTION # TRACK CREATION SECTION
################################################################################ ################################################################################
...@@ -437,6 +567,12 @@ def getFatrasSimHitCreatorID(name="ISF_FatrasSimHitCreatorID", **kwargs): ...@@ -437,6 +567,12 @@ def getFatrasSimHitCreatorID(name="ISF_FatrasSimHitCreatorID", **kwargs):
from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__SimHitCreatorID from ISF_FatrasToolsID.ISF_FatrasToolsIDConf import iFatras__SimHitCreatorID
return iFatras__SimHitCreatorID(name, **kwargs ) return iFatras__SimHitCreatorID(name, **kwargs )
def getFatrasPileupSimHitCreatorID(name="ISF_FatrasPileupSimHitCreatorID", **kwargs):
kwargs.setdefault("PixelHitCreator" , getPublicTool('ISF_FatrasPileupHitCreatorPixel'))
kwargs.setdefault("SctHitCreator" , getPublicTool('ISF_FatrasPileupHitCreatorSCT'))
kwargs.setdefault("TrtHitCreator" , getPublicTool('ISF_FatrasPileupHitCreatorTRT'))
return getFatrasSimHitCreatorID(name, **kwargs )
def getFatrasSimHitCreatorMS(name="ISF_FatrasSimHitCreatorMS", **kwargs): def getFatrasSimHitCreatorMS(name="ISF_FatrasSimHitCreatorMS", **kwargs):
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() ) kwargs.setdefault("RandomNumberService" , simFlags.RandomSvc() )
...@@ -472,7 +608,7 @@ def getFatrasSimTool(name="ISF_FatrasSimTool", **kwargs): ...@@ -472,7 +608,7 @@ def getFatrasSimTool(name="ISF_FatrasSimTool", **kwargs):
kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool')) kwargs.setdefault("ProcessSamplingTool" , getPublicTool('ISF_FatrasProcessSamplingTool'))
# set the output level # set the output level
kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral()) kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral())
kwargs.setdefault('ValidationOutput' , ISF_Flags.ValidationMode()) kwargs.setdefault("ValidationOutput" , ISF_Flags.ValidationMode())
# random number service # random number service
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc()) kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc())
...@@ -480,23 +616,61 @@ def getFatrasSimTool(name="ISF_FatrasSimTool", **kwargs): ...@@ -480,23 +616,61 @@ def getFatrasSimTool(name="ISF_FatrasSimTool", **kwargs):
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportTool from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportTool
return iFatras__TransportTool(name, **kwargs ) return iFatras__TransportTool(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,simFlags
kwargs.setdefault( "RandomNumberService", simFlags.RandomSvc())
from ISF_FatrasTools.ISF_FatrasToolsConf import iFatras__TransportEngine
return iFatras__TransportEngine(name, **kwargs )
def getFatrasSimServiceID(name="ISF_FatrasSimSvc", **kwargs): def getFatrasSimServiceID(name="ISF_FatrasSimSvc", **kwargs):
kwargs.setdefault("Identifier" , "Fatras") kwargs.setdefault("Identifier" , "Fatras")
kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimTool'))
kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool'))
# set the output level
kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral())
# set the output level
kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral())
# register Fatras random number stream if not already registered # register Fatras random number stream if not already registered
from G4AtlasApps.SimFlags import SimFlags,simFlags from G4AtlasApps.SimFlags import SimFlags,simFlags
if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ): if not simFlags.RandomSeedList.checkForExistingSeed( "FatrasRnd" ):
simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 ) simFlags.RandomSeedList.addSeed( "FatrasRnd", 81234740, 23474923 )
from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc from ISF_FatrasServices.ISF_FatrasServicesConf import iFatras__FatrasSimSvc
return iFatras__FatrasSimSvc(name, **kwargs ) return iFatras__FatrasSimSvc(name, **kwargs )
def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs): def getFatrasNewExtrapolationSimServiceID(name="ISF_FatrasNewExtrapolationSimSvc", **kwargs):
kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasNewExtrapolationSimTool')) kwargs.setdefault("Identifier" , "Fatras")
return getFatrasSimServiceID(name, **kwargs ) kwargs.setdefault("IDSimulationTool" , getPublicTool('ISF_FatrasSimEngine'))
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,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 getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs): def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs):
kwargs.setdefault("EnableGeoIDOverride" , True ) kwargs.setdefault("EnableGeoIDOverride" , True )
...@@ -504,29 +678,11 @@ def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs): ...@@ -504,29 +678,11 @@ def getFatrasGeoIDFixSimServiceID(name="ISF_FatrasGeoIDFixSimSvc", **kwargs):
kwargs.setdefault("GeoIDOverride" , 3 ) # ISF::fAtlasCalo kwargs.setdefault("GeoIDOverride" , 3 ) # ISF::fAtlasCalo
return getFatrasSimServiceID(name, **kwargs ) return getFatrasSimServiceID(name, **kwargs )
def getFatrasNewExtrapolationSimTool(name="ISF_FatrasNewExtrapolationSimTool", **kwargs):
# add your custom configuration of the SimTool here
# NB: only the 'delta' to the normal SimTool configuration needs to be configured here, eg:
# kwargs.setdefault("SimHitCreatorMS" , '' )
# kwargs.setdefault("SimHitCreatorID" , 'ISF_FatrasNewExtrapolationSimHitCreatorID' )
# ..
return getFatrasSimTool(name, **kwargs )
def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs): def getFatrasPileupSimTool(name="ISF_FatrasPileupSimTool", **kwargs):
## MB: Turn off track hit creation kwargs.setdefault("SimHitCreatorID" , getPublicTool('ISF_FatrasPileupSimHitCreatorID'))
kwargs.setdefault("TurnOffHitCreation" , True) return getFatrasSimTool(name, **kwargs)
return getFatrasSimTool( name, **kwargs )
def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs): def getFatrasPileupSimServiceID(name="ISF_FatrasPileupSimSvc", **kwargs):
kwargs.setdefault("Identifier" , "Fatras") kwargs.setdefault("IDSimulationTool", getPublicTool('ISF_FatrasPileupSimTool'))
kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasPileupSimTool')) kwargs.setdefault("SimulationTool" , getPublicTool('ISF_FatrasSimTool'))
# set the output level return getFatrasSimServiceID(name, **kwargs)
kwargs.setdefault("OutputLevel" , ISF_FatrasFlags.OutputLevelGeneral())
# register Fatras random number stream if not already registered
from G4AtlasApps.SimFlags import SimFlags,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 )
...@@ -15,38 +15,53 @@ from AthenaCommon.Constants import * # FATAL,ERROR etc. ...@@ -15,38 +15,53 @@ from AthenaCommon.Constants import * # FATAL,ERROR etc.
import AthenaCommon.SystemOfUnits as Units import AthenaCommon.SystemOfUnits as Units
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getInDetTrackingGeometryBuilder", "ISF_InDetTrackingGeometryBuilder") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getInDetTrackingGeometryBuilder", "ISF_InDetTrackingGeometryBuilder")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasCaloTrackingGeometryBuilder", "ISF_FatrasCaloTrackingGeometryBuilder") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasCaloTrackingGeometryBuilder", "ISF_FatrasCaloTrackingGeometryBuilder")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMuonTrackingGeometryBuilder", "ISF_FatrasMuonTrackingGeometryBuilder") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMuonTrackingGeometryBuilder", "ISF_FatrasMuonTrackingGeometryBuilder")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasGeometryBuilder", "ISF_FatrasGeometryBuilder") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasGeometryBuilder", "ISF_FatrasGeometryBuilder")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNavigator", "ISF_FatrasNavigator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNavigator", "ISF_FatrasNavigator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasChargedPropagator", "ISF_FatrasChargedPropagator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasChargedPropagator", "ISF_FatrasChargedPropagator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSTEP_Propagator", "ISF_FatrasSTEP_Propagator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSTEP_Propagator", "ISF_FatrasSTEP_Propagator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasG4HadIntProcessor", "ISF_FatrasG4HadIntProcessor") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPropagator", "ISF_FatrasPropagator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasParametricHadIntProcessor", "ISF_FatrasParametricHadIntProcessor") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasStaticPropagator", "ISF_FatrasStaticPropagator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasBetheHeitlerEnergyLossUpdator", "ISF_FatrasBetheHeitlerEnergyLossUpdator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasStaticNavigationEngine", "ISF_FatrasStaticNavigationEngine")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasEnergyLossUpdator", "ISF_FatrasEnergyLossUpdator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasG4HadIntProcessor", "ISF_FatrasG4HadIntProcessor")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMultipleScatteringUpdator", "ISF_FatrasMultipleScatteringUpdator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasParametricHadIntProcessor", "ISF_FatrasParametricHadIntProcessor")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPhysicsValidationTool", "ISF_FatrasPhysicsValidationTool") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasBetheHeitlerEnergyLossUpdator", "ISF_FatrasBetheHeitlerEnergyLossUpdator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasProcessSamplingTool", "ISF_FatrasProcessSamplingTool") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasEnergyLossUpdator", "ISF_FatrasEnergyLossUpdator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMaterialUpdator" , "ISF_FatrasMaterialUpdator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasEnergyLossSamplerBetheHeitler", "ISF_FatrasEnergyLossSamplerBetheHeitler")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasExtrapolator", "ISF_FatrasExtrapolator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasEnergyLossSamplerBetheBloch", "ISF_FatrasEnergyLossSamplerBetheBloch")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasConversionCreator", "ISF_FatrasConversionCreator") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMultipleScatteringUpdator", "ISF_FatrasMultipleScatteringUpdator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorPixel", "ISF_FatrasHitCreatorPixel") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMultipleScatteringSamplerHighland", "ISF_FatrasMultipleScatteringSamplerHighland")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorSCT", "ISF_FatrasHitCreatorSCT") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMultipleScatteringSamplerGaussianMixture", "ISF_FatrasMultipleScatteringSamplerGaussianMixture")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorTRT", "ISF_FatrasHitCreatorTRT") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMultipleScatteringSamplerGeneralMixture", "ISF_FatrasMultipleScatteringSamplerGeneralMixture")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimHitCreatorMS", "ISF_FatrasSimHitCreatorMS") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPhysicsValidationTool", "ISF_FatrasPhysicsValidationTool")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimHitCreatorID", "ISF_FatrasSimHitCreatorID") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasProcessSamplingTool", "ISF_FatrasProcessSamplingTool")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPdgG4Particle", "ISF_FatrasPdgG4Particle") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMaterialUpdator" , "ISF_FatrasMaterialUpdator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasParticleDecayer", "ISF_FatrasParticleDecayer") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasExtrapolator", "ISF_FatrasExtrapolator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasParticleDecayHelper", "ISF_FatrasParticleDecayHelper") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasMaterialEffectsEngine", "ISF_FatrasMaterialEffectsEngine")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasKinematicFilter", "ISF_FatrasKinematicFilter") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasStaticExtrapolator", "ISF_FatrasStaticExEngine")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimTool", "ISF_FatrasSimTool") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasExEngine", "ISF_FatrasExEngine")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimTool", "ISF_FatrasNewExtrapolationSimTool") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasConversionCreator", "ISF_FatrasConversionCreator")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimTool", "ISF_FatrasPileupSimTool") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorPixel", "ISF_FatrasHitCreatorPixel")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getG4RunManagerHelper", "ISF_G4RunManagerHelper") addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorSCT", "ISF_FatrasHitCreatorSCT")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasHitCreatorTRT", "ISF_FatrasHitCreatorTRT")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimHitCreatorMS", "ISF_FatrasSimHitCreatorMS")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimHitCreatorID", "ISF_FatrasSimHitCreatorID")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPdgG4Particle", "ISF_FatrasPdgG4Particle")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasParticleDecayHelper", "ISF_FatrasParticleDecayHelper")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasKinematicFilter", "ISF_FatrasKinematicFilter")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimTool", "ISF_FatrasSimTool")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimEngine", "ISF_FatrasSimEngine")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimTool", "ISF_FatrasPileupSimTool")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getG4RunManagerHelper", "ISF_G4RunManagerHelper")
addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasTrackingGeometrySvc", "ISF_FatrasTrackingGeometrySvc") addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasTrackingGeometrySvc", "ISF_FatrasTrackingGeometrySvc")
addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimServiceID", "ISF_FatrasSimSvc") addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasSimServiceID", "ISF_FatrasSimSvc")
addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimServiceID", "ISF_FatrasNewExtrapolationSimSvc") addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasNewExtrapolationSimServiceID", "ISF_FatrasNewExtrapolationSimSvc")
addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimServiceID", "ISF_FatrasPileupSimSvc") addService("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimServiceID", "ISF_FatrasPileupSimSvc")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorPixel", "ISF_FatrasPileupHitCreatorPixel")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorSCT", "ISF_FatrasPileupHitCreatorSCT")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupHitCreatorTRT", "ISF_FatrasPileupHitCreatorTRT")
addTool("ISF_FatrasServices.ISF_FatrasServicesConfig.getFatrasPileupSimHitCreatorID", "ISF_FatrasPileupSimHitCreatorID")
...@@ -16,15 +16,17 @@ ...@@ -16,15 +16,17 @@
#include "ISF_Interfaces/ITruthSvc.h" #include "ISF_Interfaces/ITruthSvc.h"
#include "ISF_Interfaces/IParticleFilter.h" #include "ISF_Interfaces/IParticleFilter.h"
#include "ISF_Event/ISFParticle.h" #include "ISF_Event/ISFParticle.h"
#include "ISF_FatrasInterfaces/ITransportTool.h" #include "ISF_Interfaces/IParticleProcessor.h"
/** Constructor **/ /** Constructor **/
iFatras::FatrasSimSvc::FatrasSimSvc(const std::string& name, ISvcLocator* svc) : iFatras::FatrasSimSvc::FatrasSimSvc(const std::string& name, ISvcLocator* svc) :
BaseSimulationSvc(name, svc), BaseSimulationSvc(name, svc),
m_IDsimulationTool(""),
m_simulationTool(""), m_simulationTool(""),
m_particleFilter("") m_particleFilter("")
{ {
// retrieve the simulation tool and the transport tool // retrieve the simulation tool and the transport tool
declareProperty("IDSimulationTool", m_IDsimulationTool);
declareProperty("SimulationTool", m_simulationTool); declareProperty("SimulationTool", m_simulationTool);
declareProperty("ParticleFilter", m_particleFilter); declareProperty("ParticleFilter", m_particleFilter);
} }
...@@ -37,8 +39,11 @@ StatusCode iFatras::FatrasSimSvc::initialize() ...@@ -37,8 +39,11 @@ StatusCode iFatras::FatrasSimSvc::initialize()
{ {
ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ..."); ATH_MSG_INFO ( m_screenOutputPrefix << "Initializing ...");
// retrieve simulation tool // retrieve simulation tool
if ( retrieveTool<iFatras::ITransportTool>(m_simulationTool).isFailure() ) if ( retrieveTool<ISF::IParticleProcessor>(m_IDsimulationTool).isFailure() )
return StatusCode::FAILURE; return StatusCode::FAILURE;
// retrieve simulation tool
if ( retrieveTool<ISF::IParticleProcessor>(m_simulationTool).isFailure() )
return StatusCode::FAILURE;
// retrieve particle filter // retrieve particle filter
if ( !m_particleFilter.empty() && retrieveTool<ISF::IParticleFilter>(m_particleFilter).isFailure()) if ( !m_particleFilter.empty() && retrieveTool<ISF::IParticleFilter>(m_particleFilter).isFailure())
return StatusCode::FAILURE; return StatusCode::FAILURE;
...@@ -78,7 +83,7 @@ StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isp) ...@@ -78,7 +83,7 @@ StatusCode iFatras::FatrasSimSvc::simulate(const ISF::ISFParticle& isp)
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
/** Process Particle from particle broker */ /** Process Particle from particle broker */
ISF::ISFParticle* newIsp = m_simulationTool->process(isp); ISF::ISFParticle* newIsp = (isp.nextGeoID()==AtlasDetDescr::fAtlasID) ? m_IDsimulationTool->process(isp) : m_simulationTool->process(isp);
ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation created : " << ( newIsp ? "" : "no") << " new particle"); ATH_MSG_VERBOSE( m_screenOutputPrefix << "Simulation created : " << ( newIsp ? "" : "no") << " new particle");
if (newIsp) { if (newIsp) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment