File indexing completed on 2026-01-09 09:26:49
0001 import pytest
0002
0003 import acts
0004 import acts.examples
0005 from acts.examples.simulation import addParticleGun, EtaConfig, ParticleConfig
0006
0007
0008 class AssertCollectionExistsAlg(acts.examples.IAlgorithm):
0009 events_seen = 0
0010
0011 def __init__(self, collection, *args, **kwargs):
0012 self.collection = collection
0013 acts.examples.IAlgorithm.__init__(self, *args, **kwargs)
0014
0015 def execute(self, ctx):
0016 assert ctx.eventStore.exists(self.collection)
0017 self.events_seen += 1
0018 return acts.examples.ProcessCode.SUCCESS
0019
0020
0021 def test_navigator(conf_const, trk_geo):
0022
0023 with pytest.raises(ValueError):
0024 conf_const(acts.Navigator)
0025 with pytest.raises(ValueError):
0026 conf_const(acts.Navigator, trackingGeometry=None)
0027
0028 conf_const(acts.Navigator, trackingGeometry=trk_geo)
0029
0030
0031 def test_steppers(conf_const, trk_geo):
0032 with pytest.raises(TypeError):
0033 acts.examples.PropagationAlgorithm()
0034 with pytest.raises(ValueError):
0035 acts.examples.PropagationAlgorithm(level=acts.logging.INFO)
0036
0037 with pytest.raises(TypeError):
0038 acts.Propagator()
0039
0040 nav = acts.Navigator(trackingGeometry=trk_geo)
0041
0042 with pytest.raises(TypeError):
0043 acts.Propagator(navigator=nav)
0044
0045 for stepper in (acts.EigenStepper, acts.AtlasStepper):
0046 with pytest.raises(TypeError):
0047 stepper()
0048 s = stepper(acts.NullBField())
0049 assert s
0050
0051 seq = acts.examples.Sequencer(
0052 events=10, numThreads=1, logLevel=acts.logging.WARNING
0053 )
0054
0055 rnd = acts.examples.RandomNumbers(seed=42)
0056
0057 addParticleGun(
0058 seq,
0059 ParticleConfig(num=10, pdg=acts.PdgParticle.eMuon, randomizeCharge=True),
0060 EtaConfig(-4.0, 4.0),
0061 rnd=rnd,
0062 )
0063
0064 prop = acts.examples.ConcretePropagator(
0065 acts.Propagator(stepper=s, navigator=nav)
0066 )
0067
0068 trkParamExtractor = acts.examples.ParticleTrackParamExtractor(
0069 level=acts.logging.WARNING,
0070 inputParticles="particles_generated",
0071 outputTrackParameters="params_particles_generated",
0072 )
0073 seq.addAlgorithm(trkParamExtractor)
0074
0075 alg = conf_const(
0076 acts.examples.PropagationAlgorithm,
0077 level=acts.logging.WARNING,
0078 propagatorImpl=prop,
0079 inputTrackParameters="params_particles_generated",
0080 outputSummaryCollection="propagation_summary",
0081 sterileLogger=False,
0082 )
0083 seq.addAlgorithm(alg)
0084
0085 chkAlg = AssertCollectionExistsAlg(
0086 "propagation_summary", "chk_alg", level=acts.logging.WARNING
0087 )
0088 seq.addAlgorithm(chkAlg)
0089
0090 seq.run()
0091
0092 assert acts.StraightLineStepper()