3__doc__ =
"New configuration for the ISF_FatrasSimTool"
5from AthenaCommon.Logging
import logging
6from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory
import CompFactory
8from ISF_Algorithms.CollectionMergerConfig
import CollectionMergerCfg
9from ISF_Tools.ISF_ToolsConfig
import ParticleHelperCfg
10from ISF_Services.ISF_ServicesConfig
import (
11 ATLFAST_ParticleBrokerSvcCfg, TruthServiceCfg
13from ISF_Geant4Tools.ISF_Geant4ToolsConfig
import G4RunManagerHelperCfg
14from RngComps.RngCompsConfig
import dSFMT, AthRNGSvcCfg
17 seed =
'TrkExRnd OFFSET 0 12412330 37849324'
22 return AthRNGSvcCfg(flags)
26 seed =
'FatrasRnd OFFSET 0 81234740 23474923'
38 """Return ISF_FatrasHitCreatorPixel configured with ComponentAccumulator"""
39 mlog = logging.getLogger(name)
40 mlog.debug('Start configuration')
42 bare_collection_name = "PixelHits"
43 mergeable_collection_suffix = "_Fatras"
44 merger_input_property = "PixelHits"
47 result, hits_collection_name = CollectionMergerCfg(flags,
49 mergeable_collection_suffix,
50 merger_input_property,
53 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
54 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
55 kwargs.setdefault("IdHelperName", 'PixelID')
56 kwargs.setdefault("CollectionName", hits_collection_name)
58 kwargs.setdefault("ConditionsTool", "")
59 kwargs.setdefault("UseConditionsTool", False)
61 result.setPrivateTools(CompFactory.iFatras.HitCreatorSilicon(name=name, **kwargs))
65def fatrasHitCreatorSCTCfg(flags, name="ISF_FatrasHitCreatorSCT", **kwargs):
66 """Return ISF_FatrasHitCreatorSCT configured with ComponentAccumulato
r"""
67 mlog = logging.getLogger(name)
68 mlog.debug('Start configuration')
70 bare_collection_name = "SCT_Hits"
71 mergeable_collection_suffix = "_Fatras"
72 merger_input_property = "SCTHits"
75 result, hits_collection_name = CollectionMergerCfg(flags,
77 mergeable_collection_suffix,
78 merger_input_property,
81 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
82 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
83 kwargs.setdefault("IdHelperName", 'SCT_ID')
84 kwargs.setdefault("CollectionName", hits_collection_name)
86 kwargs.setdefault("ConditionsTool", "")
87 kwargs.setdefault("UseConditionsTool", False)
89 result.setPrivateTools(CompFactory.iFatras.HitCreatorSilicon(name=name, **kwargs))
93def fatrasHitCreatorTRTCfg(flags, name="ISF_FatrasHitCreatorTRT", **kwargs):
94 """Return ISF_FatrasHitCreatorTRT configured with ComponentAccumulato
r"""
95 mlog = logging.getLogger(name)
96 mlog.debug('Start configuration')
98 bare_collection_name = "TRTUncompressedHits"
99 mergeable_collection_suffix = "_Fatras"
100 merger_input_property = "TRTUncompressedHits"
103 result, hits_collection_name = CollectionMergerCfg(flags,
104 bare_collection_name,
105 mergeable_collection_suffix,
106 merger_input_property,
109 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
110 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
111 kwargs.setdefault("CollectionName", hits_collection_name)
113 kwargs.setdefault("StrawStatusSummaryTool", "")
114 result.setPrivateTools(CompFactory.iFatras.HitCreatorTRT(name=name, **kwargs))
118def fatrasPileupHitCreatorPixelCfg(flags, name="ISF_FatrasPileupHitCreatorPixel", **kwargs):
119 """Return ISF_FatrasHitCreatorPixel configured for pileup with ComponentAccumulato
r"""
120 kwargs.setdefault("CollectionName", "PileupPixelHits")
121 return fatrasHitCreatorPixelCfg(flags, name, **kwargs)
124def fatrasPileupHitCreatorSCTCfg(flags, name="ISF_FatrasPileupHitCreatorSCT", **kwargs):
125 """Return ISF_FatrasHitCreatorSCT configured for pileup with ComponentAccumulato
r"""
126 kwargs.setdefault("CollectionName", "PileupSCT_Hits")
127 return fatrasHitCreatorSCTCfg(flags, name, **kwargs)
130def fatrasPileupHitCreatorTRTCfg(flags, name="ISF_FatrasPileupHitCreatorTRT", **kwargs):
131 """Return ISF_FatrasHitCreatorTRT configured with ComponentAccumulato
r"""
132 kwargs.setdefault("CollectionName", "PileupTRTUncompressedHits")
133 return fatrasHitCreatorTRTCfg(flags, name, **kwargs)
136################################################################################
137# TRACK CREATION SECTION
138################################################################################
139def fatrasSimHitCreatorIDCfg(flags, name="ISF_FatrasSimHitCreatorID", **kwargs):
140 """Return ISF_FatrasSimHitCreatorID configured with ComponentAccumulato
r"""
142 mlog = logging.getLogger(name)
143 mlog.debug('Start configuration')
145 result = ComponentAccumulator()
146 kwargs.setdefault("PixelHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasHitCreatorPixelCfg(flags))))
147 kwargs.setdefault("SctHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasHitCreatorSCTCfg(flags))))
148 kwargs.setdefault("TrtHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasHitCreatorTRTCfg(flags))))
149 kwargs.setdefault("OutputLevel", flags.Exec.OutputLevel)
150 result.setPrivateTools(CompFactory.iFatras.SimHitCreatorID(name=name, **kwargs))
154def fatrasPileupSimHitCreatorIDCfg(flags, name="ISF_FatrasPileupSimHitCreatorID", **kwargs):
155 """Return ISF_FatrasSimHitCreatorID configured for pileup with ComponentAccumulato
r"""
157 mlog = logging.getLogger(name)
158 mlog.debug('Start configuration')
160 result = ComponentAccumulator()
161 kwargs.setdefault("PixelHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasPileupHitCreatorPixelCfg(flags))))
162 kwargs.setdefault("SctHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasPileupHitCreatorSCTCfg(flags))))
163 kwargs.setdefault("TrtHitCreator", result.addPublicTool(result.popToolsAndMerge(fatrasPileupHitCreatorTRTCfg(flags))))
164 return fatrasSimHitCreatorIDCfg(flags, name, **kwargs)
167def fatrasSimHitCreatorMSCfg(flags, name="ISF_FatrasSimHitCreatorMS", **kwargs):
168 """Return ISF_FatrasSimHitCreatorMS configured with ComponentAccumulato
r"""
170 mlog = logging.getLogger(name)
171 mlog.debug('Start configuration')
174 result = ComponentAccumulator()
175 mergeable_collection_suffix = "_Fatras"
178 mdt_bare_collection_name="MDT_Hits"
179 mdt_merger_input_property="MDTHits"
180 mdt_result, mdt_hits_collection_name = CollectionMergerCfg(flags,
181 mdt_bare_collection_name,
182 mergeable_collection_suffix,
183 mdt_merger_input_property,
185 result.merge(mdt_result)
187 rpc_bare_collection_name="RPC_Hits"
188 rpc_merger_input_property="RPCHits"
189 rpc_result, rpc_hits_collection_name = CollectionMergerCfg(flags,
190 rpc_bare_collection_name,
191 mergeable_collection_suffix,
192 rpc_merger_input_property,
194 result.merge(rpc_result)
196 tgc_bare_collection_name="TGC_Hits"
197 tgc_merger_input_property="TGCHits"
198 tgc_result, tgc_hits_collection_name = CollectionMergerCfg(flags,
199 tgc_bare_collection_name,
200 mergeable_collection_suffix,
201 tgc_merger_input_property,
203 result.merge(tgc_result)
205 csc_hits_collection_name = ""
206 if flags.Detector.EnableCSC:
207 csc_bare_collection_name="CSC_Hits"
208 csc_merger_input_property="CSCHits"
209 csc_result, csc_hits_collection_name = CollectionMergerCfg(flags,
210 csc_bare_collection_name,
211 mergeable_collection_suffix,
212 csc_merger_input_property,
214 result.merge(csc_result)
216 stgc_hits_collection_name = ""
217 if flags.Detector.EnablesTGC:
218 stgc_bare_collection_name="sTGC_Hits"
219 stgc_merger_input_property="sTGCHits"
220 stgc_result, stgc_hits_collection_name = CollectionMergerCfg(flags,
221 stgc_bare_collection_name,
222 mergeable_collection_suffix,
223 stgc_merger_input_property,
225 result.merge(stgc_result)
227 mm_hits_collection_name = ""
228 if flags.Detector.EnableMM:
229 mm_bare_collection_name="MM_Hits"
230 mm_merger_input_property="MMHits"
231 mm_result, mm_hits_collection_name = CollectionMergerCfg(flags,
232 mm_bare_collection_name,
233 mergeable_collection_suffix,
234 mm_merger_input_property,
236 result.merge(mm_result)
238 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
239 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
241 kwargs.setdefault("Extrapolator" , result.addPublicTool(result.popToolsAndMerge(fatrasExtrapolatorCfg(flags))))
243 kwargs.setdefault("MDTCollectionName", mdt_hits_collection_name)
244 kwargs.setdefault("RPCCollectionName", rpc_hits_collection_name)
245 kwargs.setdefault("TGCCollectionName", tgc_hits_collection_name)
246 kwargs.setdefault("CSCCollectionName", csc_hits_collection_name)
247 kwargs.setdefault("sTGCCollectionName", stgc_hits_collection_name)
248 kwargs.setdefault("MMCollectionName", mm_hits_collection_name)
250 Muon__MuonTGMeasurementTool = CompFactory.Muon.MuonTGMeasurementTool
251 muon_tgmeasurement_tool = Muon__MuonTGMeasurementTool(name='MuonTGMeasurementTool',
253 kwargs.setdefault("MeasurementTool", muon_tgmeasurement_tool)
255 result.setPrivateTools(CompFactory.iFatras.SimHitCreatorMS(name=name, **kwargs))
259def fatrasPdgG4ParticleCfg(flags, name="ISF_FatrasPdgG4Particle", **kwargs):
260 mlog = logging.getLogger(name)
261 mlog.debug('Start configuration')
263 result = ComponentAccumulator()
265 result.setPrivateTools(CompFactory.iFatras.PDGToG4Particle(name=name, **kwargs))
268######################################################################################
269# validation & process sampling
270######################################################################################
273def fatrasPhysicsValidationToolCfg(flags, name="ISF_FatrasPhysicsValidationTool", **kwargs):
274 mlog = logging.getLogger(name)
275 mlog.debug('Start configuration')
277 result = ComponentAccumulator()
278 kwargs.setdefault("ValidationStreamName", "ISFFatras")
280 result.setPrivateTools(CompFactory.iFatras.PhysicsValidationTool(name=name, **kwargs))
284def fatrasParticleDecayHelperCfg(flags, name="ISF_FatrasParticleDecayHelper", **kwargs):
285 mlog = logging.getLogger(name)
286 mlog.debug('Start configuration')
288 result = ComponentAccumulator()
290 seed = 'FatrasG4 OFFSET 0 23491234 23470291'
291 result.merge(dSFMT(seed))
292 kwargs.setdefault("RandomNumberService", result.getService("AtDSFMTGenSvc"))
293 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
294 kwargs.setdefault("G4RandomStreamName", flags.Sim.Fatras.G4RandomStreamName)
295 kwargs.setdefault("ValidationMode", flags.Sim.ISF.ValidationMode)
296 if flags.Sim.ISF.ValidationMode:
297 kwargs.setdefault("PhysicsValidationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPhysicsValidationToolCfg(flags))))
299 if "ParticleBroker" not in kwargs:
300 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
302 if "TruthRecordSvc" not in kwargs:
303 kwargs.setdefault("ParticleTruthSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
305 kwargs.setdefault("PDGToG4ParticleConverter", result.addPublicTool(result.popToolsAndMerge(fatrasPdgG4ParticleCfg(flags))))
306 kwargs.setdefault("G4RunManagerHelper", result.addPublicTool(result.popToolsAndMerge(G4RunManagerHelperCfg(flags))))
307 result.setPrivateTools(CompFactory.iFatras.G4ParticleDecayHelper(name=name, **kwargs))
311################################################################################
313################################################################################
314# the definition of an extrapolator (to be cleaned up)
316def fatrasEnergyLossUpdatorCfg(flags, name="ISF_FatrasEnergyLossUpdator", **kwargs):
317 mlog = logging.getLogger(name)
318 mlog.debug('Start configuration')
320 result = ComponentAccumulator()
322 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
323 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
325 kwargs.setdefault("UsePDG_EnergyLossFormula", True)
326 kwargs.setdefault("EnergyLossDistribution", 2)
328 from TrkConfig.AtlasExtrapolatorToolsConfig import AtlasEnergyLossUpdatorCfg
329 kwargs.setdefault("EnergyLossUpdator", result.popToolsAndMerge(AtlasEnergyLossUpdatorCfg(flags)))
331 result.setPrivateTools(CompFactory.iFatras.McEnergyLossUpdator(name=name, **kwargs))
335# Combining all in the MaterialEffectsUpdator
336def fatrasMaterialUpdatorCfg(flags, name="ISF_FatrasMaterialUpdator", **kwargs):
337 mlog = logging.getLogger(name)
338 mlog.debug('Start configuration')
340 result = ComponentAccumulator()
342 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
343 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
344 if "ParticleBroker" not in kwargs:
345 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
347 if "TruthRecordSvc" not in kwargs:
348 kwargs.setdefault("TruthRecordSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
350 # @TODO retire once migration to TrackingGeometry conditions data is complete
351 if not flags.Sim.ISF.UseTrackingGeometryCond:
352 if 'TrackingGeometrySvc' not in kwargs:
353 from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg
354 kwargs.setdefault("TrackingGeometrySvc", result.getPrimaryAndMerge(TrackingGeometrySvcCfg(flags)))
355 kwargs.setdefault("TrackingGeometryReadKey", '')
357 if 'TrackingGeometryReadKey' not in kwargs:
358 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
359 acc = TrackingGeometryCondAlgCfg(flags)
360 geom_cond_key = acc.getPrimary().TrackingGeometryWriteKey
362 kwargs.setdefault("TrackingGeometryReadKey", geom_cond_key)
364 # hadronic interactions
365 kwargs.setdefault("HadronicInteraction", True)
367 kwargs.setdefault("HadronicInteractionProcessor", result.addPublicTool(result.popToolsAndMerge(fatrasG4HadIntProcessorCfg(flags))))
370 kwargs.setdefault("EnergyLoss", True)
371 kwargs.setdefault("EnergyLossUpdator", result.addPublicTool(result.popToolsAndMerge(fatrasEnergyLossUpdatorCfg(flags))))
374 kwargs.setdefault("MultipleScattering", True)
375 from TrkConfig.AtlasExtrapolatorToolsConfig import fatrasMultipleScatteringUpdatorCfg
376 kwargs.setdefault("MultipleScatteringUpdator", result.addPublicTool(result.popToolsAndMerge(fatrasMultipleScatteringUpdatorCfg(flags))))
379 kwargs.setdefault("PhotonConversionTool", result.addPublicTool(result.popToolsAndMerge(fatrasConversionCreatorCfg(flags))))
381 # the validation output
382 kwargs.setdefault("ValidationMode", flags.Sim.ISF.ValidationMode)
383 kwargs.setdefault("BremPhotonValidation", False)
384 kwargs.setdefault("EnergyDepositValidation", False)
386 kwargs.setdefault("MomentumCut", flags.Sim.Fatras.MomCutOffSec)
387 kwargs.setdefault("MinimumBremPhotonMomentum", flags.Sim.Fatras.MomCutOffSec)
389 if flags.Sim.ISF.ValidationMode:
390 kwargs.setdefault("PhysicsValidationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPhysicsValidationToolCfg(flags))))
392 kwargs.setdefault("ProcessSamplingTool", result.addPublicTool(result.popToolsAndMerge(fatrasProcessSamplingToolCfg(flags))))
394 kwargs.setdefault("ParticleDecayHelper", result.addPublicTool(result.popToolsAndMerge(fatrasParticleDecayHelperCfg(flags))))
396 # MCTruth Process Code
397 kwargs.setdefault("BremProcessCode", 3) # TODO: to be taken from central definition
399 result.setPrivateTools(CompFactory.iFatras.McMaterialEffectsUpdator(name=name, **kwargs))
403def fatrasExtrapolatorCfg(flags, name="ISF_FatrasExtrapolator", **kwargs):
404 mlog = logging.getLogger(name)
405 mlog.debug('Start configuration')
407 result = ComponentAccumulator()
409 # Charged Transport Tool
411 from TrkConfig.AtlasExtrapolatorToolsConfig import FastSimNavigatorCfg
412 kwargs.setdefault("Navigator", result.addPublicTool(result.popToolsAndMerge(FastSimNavigatorCfg(flags))))
414 kwargs.setdefault("MaterialEffectsUpdators", [result.addPublicTool(result.popToolsAndMerge(fatrasMaterialUpdatorCfg(flags)))])
416 from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
417 kwargs.setdefault("Propagators",
418 [result.addPublicTool(result.popToolsAndMerge(RungeKuttaPropagatorCfg(flags, name="ISF_FatrasChargedPropagator")))])
420 from TrkConfig.TrkExSTEP_PropagatorConfig import fatrasSTEP_PropagatorCfg
421 kwargs.setdefault("STEP_Propagator", result.addPublicTool(result.popToolsAndMerge(fatrasSTEP_PropagatorCfg(flags))))
423 # Fatras specific: stop the trajectory
424 kwargs.setdefault("StopWithNavigationBreak", True)
425 kwargs.setdefault("StopWithUpdateKill", True)
426 kwargs.setdefault("RobustSampling", True)
427 kwargs.setdefault("ResolveMuonStation", True)
428 kwargs.setdefault("UseMuonMatApproximation", True)
430 result.setPrivateTools(CompFactory.Trk.TimedExtrapolator(name=name, **kwargs))
434################################################################################
435# SIMULATION TOOL and SERVICE
436################################################################################
437def fatrasKinematicFilterCfg(flags, name="ISF_FatrasKinematicFilter", **kwargs):
438 mlog = logging.getLogger(name)
439 mlog.debug('Start configuration')
441 result = ComponentAccumulator()
443 kwargs.setdefault("MaxEtaSymmetric", 10.)
444 kwargs.setdefault("MinMomentum", flags.Sim.Fatras.MomCutOffSec)
446 result.setPrivateTools(CompFactory.ISF.KinematicParticleFilter(name=name, **kwargs))
450def fatrasConversionCreatorCfg(flags, name="ISF_FatrasConversionCreator", **kwargs):
451 mlog = logging.getLogger(name)
452 mlog.debug('Start configuration')
454 result = ComponentAccumulator()
456 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
457 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
459 if "ParticleBroker" not in kwargs:
460 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
462 if "TruthRecordSvc" not in kwargs:
463 kwargs.setdefault("TruthRecordSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
465 if flags.Sim.ISF.ValidationMode:
466 kwargs.setdefault("PhysicsValidationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPhysicsValidationToolCfg(flags))))
468 kwargs.setdefault("PhysicsProcessCode", 14) # TODO: to be taken from central definition
469 kwargs.setdefault("ValidationMode", flags.Sim.ISF.ValidationMode)
471 result.setPrivateTools(CompFactory.iFatras.PhotonConversionTool(name=name, **kwargs))
475def fatrasG4HadIntProcessorCfg(flags, name="ISF_FatrasG4HadIntProcessor", **kwargs):
476 mlog = logging.getLogger(name)
477 mlog.debug('Start configuration')
479 result = ComponentAccumulator()
481 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
482 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
484 if "ParticleBroker" not in kwargs:
485 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
487 if "TruthRecordSvc" not in kwargs:
488 kwargs.setdefault("TruthRecordSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
490 kwargs.setdefault("MomentumCut", flags.Sim.Fatras.MomCutOffSec)
492 kwargs.setdefault("G4RunManagerHelper", result.addPublicTool(result.popToolsAndMerge(G4RunManagerHelperCfg(flags))))
494 result.setPrivateTools(CompFactory.iFatras.G4HadIntProcessor(name=name, **kwargs))
498# Fatras Hadronic Interaction Processor
499def fatrasParametricHadIntProcessorCfg(flags, name="ISF_FatrasParametricHadIntProcessor", **kwargs):
500 mlog = logging.getLogger(name)
501 mlog.debug('Start configuration')
503 result = ComponentAccumulator()
505 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
506 kwargs.setdefault("RandomStreamName", flags.Sim.Fatras.RandomStreamName)
508 if "ParticleBroker" not in kwargs:
509 kwargs.setdefault("ParticleBroker", result.getPrimaryAndMerge(ATLFAST_ParticleBrokerSvcCfg(flags)))
511 if "TruthRecordSvc" not in kwargs:
512 kwargs.setdefault("TruthRecordSvc", result.getPrimaryAndMerge(TruthServiceCfg(flags)))
514 kwargs.setdefault("HadronicInteractionScaleFactor", flags.Sim.Fatras.HadronIntProb)
515 kwargs.setdefault("MinimumHadronicInitialEnergy", flags.Sim.Fatras.MomCutOffSec)
516 kwargs.setdefault("MinimumHadronicOutEnergy", flags.Sim.Fatras.MomCutOffSec)
517 kwargs.setdefault("HadronicInteractionValidation", False)
518 kwargs.setdefault("PhysicsProcessCode", 121) # TODO: to be taken from central definition
519 kwargs.setdefault("ValidationMode", flags.Sim.ISF.ValidationMode)
520 if flags.Sim.ISF.ValidationMode:
521 kwargs.setdefault("PhysicsValidationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPhysicsValidationToolCfg(flags))))
522 result.setPrivateTools(CompFactory.iFatras.HadIntProcessorParametric(name, **kwargs))
526def fatrasProcessSamplingToolCfg(flags, name="ISF_FatrasProcessSamplingTool", **kwargs):
527 mlog = logging.getLogger(name)
528 mlog.debug('Start configuration')
529 result = ComponentAccumulator()
530 result.setPrivateTools(CompFactory.iFatras.ProcessSamplingTool(name=name, **kwargs))
534def fatrasTransportToolCfg(flags, name="ISF_FatrasSimTool", **kwargs):
535 mlog = logging.getLogger(name)
536 mlog.debug('Start configuration')
538 result = ComponentAccumulator()
540 if "SimHitCreatorID" not in kwargs:
541 kwargs.setdefault("SimHitCreatorID", result.addPublicTool(result.popToolsAndMerge(fatrasSimHitCreatorIDCfg(flags))))
543 kwargs.setdefault("SimHitCreatorMS", result.addPublicTool(result.popToolsAndMerge(fatrasSimHitCreatorMSCfg(flags))))
545 kwargs.setdefault("ParticleDecayHelper", result.addPublicTool(result.popToolsAndMerge(fatrasParticleDecayHelperCfg(flags))))
547 kwargs.setdefault("ParticleHelper", result.addPublicTool(result.popToolsAndMerge(ParticleHelperCfg(flags))))
549 publicKinFilter = result.addPublicTool(result.popToolsAndMerge(fatrasKinematicFilterCfg(flags)))
550 kwargs.setdefault("TrackFilter", publicKinFilter)
551 kwargs.setdefault("NeutralFilter", publicKinFilter)
552 kwargs.setdefault("PhotonFilter", publicKinFilter)
554 kwargs.setdefault("Extrapolator", result.addPublicTool(result.popToolsAndMerge(fatrasExtrapolatorCfg(flags))))
556 if flags.Sim.ISF.ValidationMode:
557 kwargs.setdefault("PhysicsValidationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPhysicsValidationToolCfg(flags))))
559 kwargs.setdefault("ProcessSamplingTool", result.addPublicTool(result.popToolsAndMerge(fatrasProcessSamplingToolCfg(flags))))
561 kwargs.setdefault("OutputLevel", flags.Exec.OutputLevel)
562 kwargs.setdefault("ValidationOutput", flags.Sim.ISF.ValidationMode)
564 kwargs.setdefault("RandomNumberService", result.getPrimaryAndMerge(FatrasRndSvcCfg(flags)))
566 result.setPrivateTools(CompFactory.iFatras.TransportTool(name=name, **kwargs))
570def fatrasPileupSimToolCfg(flags, name="ISF_FatrasPileupSimTool", **kwargs):
571 mlog = logging.getLogger(name)
572 mlog.debug('Start configuration')
574 result = ComponentAccumulator()
576 kwargs.setdefault("SimHitCreatorID", result.addPublicTool(result.popToolsAndMerge(fatrasPileupSimHitCreatorIDCfg(flags))))
578 result.setPrivateTools(result.popToolsAndMerge(fatrasTransportToolCfg(flags, name, **kwargs)))
584def fatrasSimulatorToolSTCfg(flags, name="ISF_FatrasSimulatorToolST", **kwargs):
585 mlog = logging.getLogger(name)
586 mlog.debug('Start configuration')
588 result = ComponentAccumulator()
590 if "IDSimulationTool" not in kwargs or "SimulationTool" not in kwargs:
591 publicTransportTool = result.addPublicTool(result.popToolsAndMerge(fatrasTransportToolCfg(flags, **kwargs)))
592 kwargs.setdefault("IDSimulationTool", publicTransportTool)
593 kwargs.setdefault("SimulationTool", publicTransportTool)
595 result.setPrivateTools(CompFactory.ISF.FatrasSimTool(name, **kwargs))
599def fatrasPileupSimulatorToolSTCfg(flags, name="ISF_FatrasPileupSimulatorToolST", **kwargs):
600 mlog = logging.getLogger(name)
601 mlog.debug('Start configuration')
603 result = ComponentAccumulator()
605 kwargs.setdefault("IDSimulationTool", result.addPublicTool(result.popToolsAndMerge(fatrasPileupSimToolCfg(flags))))
606 kwargs.setdefault("SimulationTool", result.addPublicTool(result.popToolsAndMerge(fatrasTransportToolCfg(flags))))
608 result.setPrivateTools(result.popToolsAndMerge(fatrasSimulatorToolSTCfg(flags, name, **kwargs)))
613def fatrasSimServiceIDCfg(flags, name="ISF_FatrasSimSvc", **kwargs):
614 mlog = logging.getLogger(name)
615 mlog.debug('Start configuration')
617 result = ComponentAccumulator()
618 kwargs.setdefault("Identifier", "Fatras")
619 kwargs.setdefault("SimulatorTool", result.addPublicTool(result.popToolsAndMerge(fatrasSimulatorToolSTCfg(flags))))
620 result.addService(CompFactory.ISF.LegacySimSvc(name, **kwargs), primary = True)
624def fatrasPileupSimServiceIDCfg(flags, name="ISF_FatrasPileupSimSvc", **kwargs):
625 mlog = logging.getLogger(name)
626 mlog.debug('Start configuration')
628 toolAcc = ComponentAccumulator()
629 kwargs.setdefault("SimulatorTool", toolAcc.addPublicTool(toolAcc.popToolsAndMerge(fatrasPileupSimulatorToolSTCfg(flags))))
630 result = fatrasSimServiceIDCfg(flags, name, **kwargs)
631 result.merge(toolAcc)
635if __name__ == "__main__":
636 from AthenaConfiguration.AllConfigFlags import initConfigFlags
637 from AthenaCommon.Logging import log
638 from AthenaCommon.Constants import DEBUG
639 from AthenaConfiguration.TestDefaults import defaultTestFiles
643 flags = initConfigFlags()
644 flags.Input.isMC = True
645 flags.Input.Files = defaultTestFiles.HITS_RUN2
646 flags.Exec.MaxEvents = 3
650 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
651 acc = MainServicesCfg(flags)
652 acc.popToolsAndMerge(fatrasTransportToolCfg(flags))
654 print("INFO_FatrasConfig: Dumping config flags")
656 print("INFO_FatrasConfig: Print config details")
657 acc.printConfig(withDetails=True, summariseProps=True)
658 acc.store(open('fatrassimtool.pkl', 'wb'))
663 # Success should be 0
664 sys.exit(not sc.isSuccess())
fatrasHitCreatorPixelCfg(flags, name="ISF_FatrasHitCreatorPixel", **kwargs)
HIT CREATION SECTION.