fix: Particle selector works on measurements, not simhits #3856
ci-bridge / CI Bridge / linux_test_examples
failed
Nov 13, 2024 in 12m 8s
GitLab CI: FAILED
This check triggered job acts/ci-bridge/45940004
in pipeline acts/ci-bridge/24419
Status: FAILED
Created at: 2024-11-13T11:48:22.071+01:00
Started at: 2024-11-13T12:13:29.391+01:00
Finished at: 2024-11-13T12:25:37.907+01:00
Details
Showing last 1419 out of 20561 total lines
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7b1f330>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7b1ed30>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
_______________ test_ckf_tracks_example[generic-truth_estimated] _______________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ckf_tracks_example_generi1')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c7918b80>
truthSmeared = False, truthEstimated = True
detector_config = DetectorConfig(detectorTuple=DetectorContextManager(detector=<acts.ActsPythonBindings._examples.GenericDetector
object...uilds/acts/ci-bridge/src/Examples/Algorithms/Digitization/share/default-smearing-config-generic.json'), name='generic')
@pytest.mark.parametrize(
"truthSmeared,truthEstimated",
[
[False, False],
[False, True],
[True, False],
],
ids=["full_seeding", "truth_estimated", "truth_smeared"],
)
@pytest.mark.slow
def test_ckf_tracks_example(
tmp_path, assert_root_hash, truthSmeared, truthEstimated, detector_config
):
csv = tmp_path / "csv"
assert not csv.exists()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
events = 100
s = Sequencer(events=events, numThreads=-1)
root_files = [
(
"performance_finding_ckf.root",
None,
),
(
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7a81eb0>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7a810f0>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
________________ test_ckf_tracks_example[generic-truth_smeared] ________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ckf_tracks_example_generi2')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c7918ae0>
truthSmeared = True, truthEstimated = False
detector_config = DetectorConfig(detectorTuple=DetectorContextManager(detector=<acts.ActsPythonBindings._examples.GenericDetector
object...uilds/acts/ci-bridge/src/Examples/Algorithms/Digitization/share/default-smearing-config-generic.json'), name='generic')
@pytest.mark.parametrize(
"truthSmeared,truthEstimated",
[
[False, False],
[False, True],
[True, False],
],
ids=["full_seeding", "truth_estimated", "truth_smeared"],
)
@pytest.mark.slow
def test_ckf_tracks_example(
tmp_path, assert_root_hash, truthSmeared, truthEstimated, detector_config
):
csv = tmp_path / "csv"
assert not csv.exists()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
events = 100
s = Sequencer(events=events, numThreads=-1)
root_files = [
(
"performance_finding_ckf.root",
None,
),
(
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7ad9af0>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7adad70>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
__________________ test_ckf_tracks_example[odd-full_seeding] ___________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ckf_tracks_example_odd_fu0')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c791a520>
truthSmeared = False, truthEstimated = False
detector_config = DetectorConfig(detectorTuple=OpenDataDetectorContextManager(detector=<acts.ActsPythonBindingsDD4hep.DD4hepDetector
obj...e=PosixPath('/builds/acts/ci-bridge/src/thirdparty/OpenDataDetector/config/odd-digi-smearing-config.json'), name='odd')
@pytest.mark.parametrize(
"truthSmeared,truthEstimated",
[
[False, False],
[False, True],
[True, False],
],
ids=["full_seeding", "truth_estimated", "truth_smeared"],
)
@pytest.mark.slow
def test_ckf_tracks_example(
tmp_path, assert_root_hash, truthSmeared, truthEstimated, detector_config
):
csv = tmp_path / "csv"
assert not csv.exists()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
events = 100
s = Sequencer(events=events, numThreads=-1)
root_files = [
(
"performance_finding_ckf.root",
None,
),
(
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7e646b0>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7e65ef0>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
_________________ test_ckf_tracks_example[odd-truth_estimated] _________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ckf_tracks_example_odd_tr0')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c7918d60>
truthSmeared = False, truthEstimated = True
detector_config = DetectorConfig(detectorTuple=OpenDataDetectorContextManager(detector=<acts.ActsPythonBindingsDD4hep.DD4hepDetector
obj...e=PosixPath('/builds/acts/ci-bridge/src/thirdparty/OpenDataDetector/config/odd-digi-smearing-config.json'), name='odd')
@pytest.mark.parametrize(
"truthSmeared,truthEstimated",
[
[False, False],
[False, True],
[True, False],
],
ids=["full_seeding", "truth_estimated", "truth_smeared"],
)
@pytest.mark.slow
def test_ckf_tracks_example(
tmp_path, assert_root_hash, truthSmeared, truthEstimated, detector_config
):
csv = tmp_path / "csv"
assert not csv.exists()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
events = 100
s = Sequencer(events=events, numThreads=-1)
root_files = [
(
"performance_finding_ckf.root",
None,
),
(
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7c4a870>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7c49cb0>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
__________________ test_ckf_tracks_example[odd-truth_smeared] __________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ckf_tracks_example_odd_tr1')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c791afc0>
truthSmeared = True, truthEstimated = False
detector_config = DetectorConfig(detectorTuple=OpenDataDetectorContextManager(detector=<acts.ActsPythonBindingsDD4hep.DD4hepDetector
obj...e=PosixPath('/builds/acts/ci-bridge/src/thirdparty/OpenDataDetector/config/odd-digi-smearing-config.json'), name='odd')
@pytest.mark.parametrize(
"truthSmeared,truthEstimated",
[
[False, False],
[False, True],
[True, False],
],
ids=["full_seeding", "truth_estimated", "truth_smeared"],
)
@pytest.mark.slow
def test_ckf_tracks_example(
tmp_path, assert_root_hash, truthSmeared, truthEstimated, detector_config
):
csv = tmp_path / "csv"
assert not csv.exists()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
events = 100
s = Sequencer(events=events, numThreads=-1)
root_files = [
(
"performance_finding_ckf.root",
None,
),
(
"trackstates_ckf.root",
"trackstates",
),
(
"tracksummary_ckf.root",
"tracksummary",
),
]
if not truthSmeared:
root_files += [
(
"performance_seeding.root",
None,
),
]
for rf, _ in root_files:
assert not (tmp_path / rf).exists()
from ckf_tracks import runCKFTracks
with detector_config.detectorTuple as (detector, trackingGeometry, decorators):
> runCKFTracks(
trackingGeometry,
decorators,
field=field,
outputCsv=True,
outputDir=tmp_path,
geometrySelection=detector_config.geometrySelection,
digiConfigFile=detector_config.digiConfigFile,
truthSmearedSeeded=truthSmeared,
truthEstimatedSeeded=truthEstimated,
s=s,
)
Examples/Python/tests/test_examples.py:1169:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/ckf_tracks.py:78: in runCKFTracks
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c7bdafb0>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 9, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c7bdb670>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
_________________________ test_full_chain_odd_example __________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_full_chain_odd_example0')
@pytest.mark.skipif(not dd4hepEnabled, reason="DD4hep not set up")
@pytest.mark.odd
@pytest.mark.slow
def test_full_chain_odd_example(tmp_path):
# This test literally only ensures that the full chain example can run without erroring out
# just to make sure it can build the odd
with getOpenDataDetector() as (detector, trackingGeometry, decorators):
pass
script = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "Python"
/ "full_chain_odd.py"
)
assert script.exists()
env = os.environ.copy()
env["ACTS_LOG_FAILURE_THRESHOLD"] = "ERROR"
try:
> subprocess.check_call(
[sys.executable, str(script), "-n1"],
cwd=tmp_path,
env=env,
stderr=subprocess.STDOUT,
)
Examples/Python/tests/test_examples.py:1218:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
popenargs = (['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1'],)
kwargs = {'cwd': PosixPath('/tmp/pytest-of-root/pytest-0/test_full_chain_odd_example0'), 'env': {'ACTS_LOG_FAILURE_THRESHOLD': ...", "head_ref":
"fix/particle-selector-no-simhits"}', 'CCACHE_DIR': '/builds/acts/ci-bridge/ccache', ...}, 'stderr': -2}
retcode = 1
cmd = ['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1']
def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute.
The arguments are the same as for the call function. Example:
check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
> raise CalledProcessError(retcode, cmd)
E subprocess.CalledProcessError: Command '['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-
bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1']' returned non-zero exit status 1.
../dependencies/lib/python3.12/subprocess.py:413: CalledProcessError
During handling of the above exception, another exception occurred:
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_full_chain_odd_example0')
@pytest.mark.skipif(not dd4hepEnabled, reason="DD4hep not set up")
@pytest.mark.odd
@pytest.mark.slow
def test_full_chain_odd_example(tmp_path):
# This test literally only ensures that the full chain example can run without erroring out
# just to make sure it can build the odd
with getOpenDataDetector() as (detector, trackingGeometry, decorators):
pass
script = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "Python"
/ "full_chain_odd.py"
)
assert script.exists()
env = os.environ.copy()
env["ACTS_LOG_FAILURE_THRESHOLD"] = "ERROR"
try:
subprocess.check_call(
[sys.executable, str(script), "-n1"],
cwd=tmp_path,
env=env,
stderr=subprocess.STDOUT,
)
except subprocess.CalledProcessError as e:
> print(e.output.decode("utf-8"))
E AttributeError: 'NoneType' object has no attribute 'decode'
Examples/Python/tests/test_examples.py:1225: AttributeError
__________________ test_full_chain_odd_example_pythia_geant4 ___________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_full_chain_odd_example_py0')
@pytest.mark.skipif(
not dd4hepEnabled or not geant4Enabled, reason="DD4hep and/or Geant4 not set up"
)
@pytest.mark.slow
def test_full_chain_odd_example_pythia_geant4(tmp_path):
# This test literally only ensures that the full chain example can run without erroring out
# just to make sure it can build the odd
with getOpenDataDetector() as (detector, trackingGeometry, decorators):
pass
script = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "Python"
/ "full_chain_odd.py"
)
assert script.exists()
env = os.environ.copy()
env["ACTS_LOG_FAILURE_THRESHOLD"] = "ERROR"
try:
> stdout = subprocess.check_output(
[
sys.executable,
str(script),
"-n1",
"--geant4",
"--ttbar",
"--ttbar-pu",
"50",
],
cwd=tmp_path,
env=env,
stderr=subprocess.STDOUT,
)
Examples/Python/tests/test_examples.py:1251:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../dependencies/lib/python3.12/subprocess.py:466: in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
input = None, capture_output = False, timeout = None, check = True
popenargs = (['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--
geant4', '--ttbar', '--ttbar-pu', ...],)
kwargs = {'cwd': PosixPath('/tmp/pytest-of-root/pytest-0/test_full_chain_odd_example_py0'), 'env': {'ACTS_LOG_FAILURE_THRESHOLD... "fix/particle-
selector-no-simhits"}', 'CCACHE_DIR': '/builds/acts/ci-bridge/ccache', ...}, 'stderr': -2, 'stdout': -1}
process = <Popen: returncode: 1 args: ['/builds/acts/ci-bridge/dependencies/bin/python...>
stdout = b'Warning in <TGeoMixture::ComputeDerivedQuantities>: Mixture PE: sum of weights is: 6\nDD4hep WARN ++ STD ... INFO
first = 0.796543\n11:23:33 Pythia8Gener INFO last = 0.888187\n'
stderr = None, retcode = 1
def run(*popenargs,
input=None, capture_output=False, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.
The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,
or pass capture_output=True to capture both.
If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.
If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.
There is an optional argument "input", allowing you to
pass bytes or a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.
By default, all communication is in bytes, and therefore any "input" should
be bytes, and the stdout and stderr will be bytes. If in text mode, any
"input" should be a string, and stdout and stderr will be strings decoded
according to locale encoding, or by "encoding" if set. Text mode is
triggered by setting any of text, encoding, errors or universal_newlines.
The other arguments are the same as for the Popen constructor.
"""
if input is not None:
if kwargs.get('stdin') is not None:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE
if capture_output:
if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:
raise ValueError('stdout and stderr arguments may not be used '
'with capture_output.')
kwargs['stdout'] = PIPE
kwargs['stderr'] = PIPE
with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired as exc:
process.kill()
if _mswindows:
# Windows accumulates the output in a single blocking
# read() call run on child threads, with the timeout
# being done in a join() on those threads. communicate()
# _after_ kill() is required to collect that and add it
# to the exception.
exc.stdout, exc.stderr = process.communicate()
else:
# POSIX _communicate already populated the output so
# far into the TimeoutExpired exception.
process.wait()
raise
except: # Including KeyboardInterrupt, communicate handled that.
process.kill()
# We don't call process.wait() as .__exit__ does that for us.
raise
retcode = process.poll()
if check and retcode:
> raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-
bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--geant4', '--ttbar', '--ttbar-pu', '50']' returned non-zero exit status 1.
../dependencies/lib/python3.12/subprocess.py:571: CalledProcessError
___________________________ test_ML_Ambiguity_Solver ___________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ML_Ambiguity_Solver0')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c79189a0>
@pytest.mark.skipif(not dd4hepEnabled, reason="DD4hep not set up")
@pytest.mark.skipif(not onnxEnabled, reason="ONNX plugin not enabled")
@pytest.mark.slow
def test_ML_Ambiguity_Solver(tmp_path, assert_root_hash):
# This test literally only ensures that the full chain example can run without erroring out
root_file = "performance_finding_ambiML.root"
output_dir = "odd_output"
assert not (tmp_path / root_file).exists()
# just to make sure it can build the odd
with getOpenDataDetector() as (detector, trackingGeometry, decorators):
pass
script = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "Python"
/ "full_chain_odd.py"
)
assert script.exists()
env = os.environ.copy()
env["ACTS_LOG_FAILURE_THRESHOLD"] = "ERROR"
try:
> subprocess.check_call(
[sys.executable, str(script), "-n1", "--ambi-solver", "ML"],
cwd=tmp_path,
env=env,
stderr=subprocess.STDOUT,
)
Examples/Python/tests/test_examples.py:1305:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
popenargs = (['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--
ambi-solver', 'ML'],)
kwargs = {'cwd': PosixPath('/tmp/pytest-of-root/pytest-0/test_ML_Ambiguity_Solver0'), 'env': {'ACTS_LOG_FAILURE_THRESHOLD': 'ER...", "head_ref":
"fix/particle-selector-no-simhits"}', 'CCACHE_DIR': '/builds/acts/ci-bridge/ccache', ...}, 'stderr': -2}
retcode = 1
cmd = ['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--ambi-
solver', 'ML']
def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute.
The arguments are the same as for the call function. Example:
check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
> raise CalledProcessError(retcode, cmd)
E subprocess.CalledProcessError: Command '['/builds/acts/ci-bridge/dependencies/bin/python3', '/builds/acts/ci-
bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--ambi-solver', 'ML']' returned non-zero exit status 1.
../dependencies/lib/python3.12/subprocess.py:413: CalledProcessError
During handling of the above exception, another exception occurred:
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_ML_Ambiguity_Solver0')
assert_root_hash = <function assert_root_hash.<locals>.fn at 0x7fb6c79189a0>
@pytest.mark.skipif(not dd4hepEnabled, reason="DD4hep not set up")
@pytest.mark.skipif(not onnxEnabled, reason="ONNX plugin not enabled")
@pytest.mark.slow
def test_ML_Ambiguity_Solver(tmp_path, assert_root_hash):
# This test literally only ensures that the full chain example can run without erroring out
root_file = "performance_finding_ambiML.root"
output_dir = "odd_output"
assert not (tmp_path / root_file).exists()
# just to make sure it can build the odd
with getOpenDataDetector() as (detector, trackingGeometry, decorators):
pass
script = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "Python"
/ "full_chain_odd.py"
)
assert script.exists()
env = os.environ.copy()
env["ACTS_LOG_FAILURE_THRESHOLD"] = "ERROR"
try:
subprocess.check_call(
[sys.executable, str(script), "-n1", "--ambi-solver", "ML"],
cwd=tmp_path,
env=env,
stderr=subprocess.STDOUT,
)
except subprocess.CalledProcessError as e:
> print(e.output.decode("utf-8"))
E AttributeError: 'NoneType' object has no attribute 'decode'
Examples/Python/tests/test_examples.py:1312: AttributeError
______________________________ test_gsf_debugger _______________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_gsf_debugger0')
def test_gsf_debugger(tmp_path):
path = (
Path(__file__).parent.parent.parent.parent
/ "Examples"
/ "Scripts"
/ "GsfDebugger"
)
scriptdir = (
Path(__file__).parent.parent.parent.parent / "Examples" / "Scripts" / "Python"
)
gsf_script = path / "make_gsf_verbose_log.py"
assert gsf_script.exists()
debugger = path / "src/main.py"
assert debugger.exists()
env = os.environ.copy()
env["PYTHONPATH"] = f"{scriptdir}:{env['PYTHONPATH']}"
gsf_result = subprocess.run(
[gsf_script], capture_output=True, cwd=tmp_path, env=env
)
logfile = tmp_path / "test.log"
with open(logfile, "w") as f:
f.write(gsf_result.stdout.decode("utf8"))
> assert gsf_result.returncode == 0
E assert 1 == 0
E + where 1 = CompletedProcess(args=[PosixPath('/builds/acts/ci-bridge/src/Examples/Scripts/GsfDebugger/make_gsf_verbose_log.py')],
returncode=1, stdout=b"11:23:48 Sequencer INFO Create Sequencer (single-threaded)\n11:23:48 Sequencer INFO Add Writer
'CsvTrackingGeometryWriter'\n11:23:48 Sequencer INFO Add Reader 'EventGenerator'\n11:23:48 Sequencer INFO -> OutputParticles
'particles_input':\n11:23:48 Sequencer INFO flat_set<SimParticle, detail::CompareParticleId, void>\n11:23:48 Sequencer INFO
-> OutputVertices 'vertices_input':\n11:23:48 Sequencer INFO flat_set<SimVertex, detail::CompareVertexId, void>\n11:23:48 Sequencer
INFO Key 'particles_input' aliased to 'particles'\n11:23:48 Sequencer INFO Key 'vertices_input' aliased to
'vertices_truth'\n11:23:48 ParticleSele DEBUG selection particle rho [0,inf)\n11:23:48 ParticleSele DEBUG selection particle |z|
[0,inf)\n11:23:48 ParticleSele DEBUG selection particle time [-inf,inf)\n11:23:48 ParticleSele DEBUG selection particle phi
[-inf,inf)\n11:23:48 ParticleSele DEBUG selection par...PE masks:\n- Core/include/Acts/TrackFitting/detail/GsfComponentMerging.hpp:88:
FLTUND: 1\n- Core/include/Acts/TrackFitting/detail/GsfComponentMerging.hpp:198: FLTUND: 1\n- Core/src/Vertexing/AdaptiveMultiVertexFinder.cpp:474:
FLTUND: 1\n- Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp:172: FLTUND: 1\n-
Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp:66: FLTUND: 1\n", stderr=b'Traceback (most recent call last):\n File
"/builds/acts/ci-bridge/src/Examples/Scripts/GsfDebugger/make_gsf_verbose_log.py", line 43, in <module>\n runTruthTrackingGsf(\n File
"/builds/acts/ci-bridge/src/Examples/Scripts/Python/truth_tracking_gsf.py", line 74, in runTruthTrackingGsf\n addFatras(\n File "/builds/acts/ci-
bridge/build/python/acts/examples/simulation.py", line 494, in addFatras\n addParticleSelection(\n File "/builds/acts/ci-
bridge/build/python/acts/examples/simulation.py", line 379, in addParticleSelection\n acts.examples.ParticleSelector(\n File "/builds/acts/ci-
bridge/build/python/acts/_adapter.py", line 41, in wrapped\n fn(self, cfg, *args, **_kwargs)\nValueError: Read handle
\'ParticleSelector.InputMeasPartMap\' cannot receive empty key\n').returncode
Examples/Python/tests/test_misc.py:54: AssertionError
__________________________ test_edm4hep_tracks_reader __________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_edm4hep_tracks_reader0')
@pytest.mark.edm4hep
@pytest.mark.skipif(not edm4hepEnabled, reason="EDM4hep is not set up")
def test_edm4hep_tracks_reader(tmp_path):
from acts.examples.edm4hep import EDM4hepTrackWriter, EDM4hepTrackReader
detector, trackingGeometry, decorators = acts.examples.GenericDetector.create()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
from truth_tracking_kalman import runTruthTrackingKalman
s = Sequencer(numThreads=1, events=10)
> runTruthTrackingKalman(
trackingGeometry,
field,
digiConfigFile=Path(
str(
Path(__file__).parent.parent.parent.parent
/ "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json"
)
),
outputDir=tmp_path,
s=s,
)
Examples/Python/tests/test_reader.py:395:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/truth_tracking_kalman.py:79: in runTruthTrackingKalman
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c448cd70>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 7, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c448ce30>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
_______________________ test_csv_multitrajectory_writer ________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_csv_multitrajectory_write0')
@pytest.mark.csv
def test_csv_multitrajectory_writer(tmp_path):
detector, trackingGeometry, decorators = GenericDetector.create()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
from truth_tracking_kalman import runTruthTrackingKalman
s = Sequencer(numThreads=1, events=10)
> runTruthTrackingKalman(
trackingGeometry,
field,
digiConfigFile=Path(
str(
Path(__file__).parent.parent.parent.parent
/ "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json"
)
),
outputDir=tmp_path,
s=s,
)
Examples/Python/tests/test_writer.py:377:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/truth_tracking_kalman.py:79: in runTruthTrackingKalman
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb66d50fb70>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 7, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb66d50e770>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
_____________________ test_edm4hep_multitrajectory_writer ______________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_edm4hep_multitrajectory_w0')
@pytest.mark.edm4hep
@pytest.mark.skipif(not edm4hepEnabled, reason="EDM4hep is not set up")
def test_edm4hep_multitrajectory_writer(tmp_path):
from acts.examples.edm4hep import EDM4hepMultiTrajectoryWriter
detector, trackingGeometry, decorators = GenericDetector.create()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
from truth_tracking_kalman import runTruthTrackingKalman
s = Sequencer(numThreads=1, events=10)
> runTruthTrackingKalman(
trackingGeometry,
field,
digiConfigFile=Path(
str(
Path(__file__).parent.parent.parent.parent
/ "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json"
)
),
outputDir=tmp_path,
s=s,
)
Examples/Python/tests/test_writer.py:575:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/truth_tracking_kalman.py:79: in runTruthTrackingKalman
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb68c3be770>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 7, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb68c3bdef0>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
__________________________ test_edm4hep_tracks_writer __________________________
tmp_path = PosixPath('/tmp/pytest-of-root/pytest-0/test_edm4hep_tracks_writer0')
@pytest.mark.edm4hep
@pytest.mark.skipif(not edm4hepEnabled, reason="EDM4hep is not set up")
def test_edm4hep_tracks_writer(tmp_path):
from acts.examples.edm4hep import EDM4hepTrackWriter
detector, trackingGeometry, decorators = GenericDetector.create()
field = acts.ConstantBField(acts.Vector3(0, 0, 2 * u.T))
from truth_tracking_kalman import runTruthTrackingKalman
s = Sequencer(numThreads=1, events=10)
> runTruthTrackingKalman(
trackingGeometry,
field,
digiConfigFile=Path(
str(
Path(__file__).parent.parent.parent.parent
/ "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json"
)
),
outputDir=tmp_path,
s=s,
)
Examples/Python/tests/test_writer.py:624:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Examples/Scripts/Python/truth_tracking_kalman.py:79: in runTruthTrackingKalman
addFatras(
../build/python/acts/examples/simulation.py:494: in addFatras
addParticleSelection(
../build/python/acts/examples/simulation.py:379: in addParticleSelection
acts.examples.ParticleSelector(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <acts.ActsPythonBindings._examples.ParticleSelector object at 0x7fb6c43f0c70>
args = ()
kwargs = {'inputMeasurementParticlesMap': '', 'inputParticles': 'particles_simulated', 'level': <Level.INFO: 2>, 'measurementsMin': 7, ...}
cfg = <acts.ActsPythonBindings._examples.ParticleSelector.Config object at 0x7fb6c43f33f0>
_kwargs = {'level': <Level.INFO: 2>}, k = 'outputParticles'
v = 'fatras_particles_postselected'
@functools.wraps(fn)
def wrapped(self, *args, **kwargs):
if len(args) > 0:
maybe_config = args[0]
if isinstance(maybe_config, inspect.unwrap(type(self).Config)):
# is already config, nothing to do here
fn(self, maybe_config, *args[1:], **kwargs)
return
if "config" in kwargs:
config = kwargs.pop("config")
fn(self, config, *args, **kwargs)
return
cfg = type(self).Config()
_kwargs = {}
for k, v in kwargs.items():
if isinstance(v, Path):
v = str(v)
if hasattr(cfg, k):
try:
setattr(cfg, k, v)
except TypeError as e:
raise RuntimeError(
"{}: Failed to set {}={}".format(type(cfg), k, v)
) from e
else:
_kwargs[k] = v
try:
> fn(self, cfg, *args, **_kwargs)
E ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
../build/python/acts/_adapter.py:41: ValueError
=============================== warnings summary ===============================
../dependencies/lib/cppyy/__init__.py:72
/builds/acts/ci-bridge/dependencies/lib/cppyy/__init__.py:72: SyntaxWarning: invalid escape sequence '\d'
if re.match('^libcppyy_backend\d+_\d+$', lib_name):
../dependencies/python/podio/EventStore.py:4
/builds/acts/ci-bridge/dependencies/python/podio/EventStore.py:4: FutureWarning: The EventStore based I/O model is deprecated and will be removed.
Switch to the Frame based model.
warnings.warn("The EventStore based I/O model is deprecated and will be removed. Switch to the Frame based model.",
Examples/Python/tests/test_examples.py::test_material_recording
Examples/Python/tests/test_reader.py::test_edm4hep_simhit_particle_reader
/builds/acts/ci-bridge/dependencies/lib/python3.12/multiprocessing/popen_fork.py:66: DeprecationWarning: This process (pid=934) is multi-threaded,
use of fork() may lead to deadlocks in the child.
self.pid = os.fork()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED Examples/Python/tests/test_examples.py::test_seeding - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_hashing_seeding - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty
key
FAILED Examples/Python/tests/test_examples.py::test_seeding_orthogonal - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive
empty key
FAILED Examples/Python/tests/test_examples.py::test_itk_seeding - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[generic-False-0.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[generic-False-1000.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[generic-True-0.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[generic-True-1000.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[odd-False-0.0] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap'
cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[odd-False-1000.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[odd-True-0.0] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap'
cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_kalman[odd-True-1000.0] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_gsf[generic] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot
receive empty key
FAILED Examples/Python/tests/test_examples.py::test_truth_tracking_gsf[odd] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot
receive empty key
FAILED Examples/Python/tests/test_examples.py::test_refitting[generic] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive
empty key
FAILED Examples/Python/tests/test_examples.py::test_refitting[odd] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive empty
key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[generic-full_seeding] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[generic-truth_estimated] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[generic-truth_smeared] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[odd-full_seeding] - ValueError: Read handle 'ParticleSelector.InputMeasPartMap'
cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[odd-truth_estimated] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_ckf_tracks_example[odd-truth_smeared] - ValueError: Read handle
'ParticleSelector.InputMeasPartMap' cannot receive empty key
FAILED Examples/Python/tests/test_examples.py::test_full_chain_odd_example - AttributeError: 'NoneType' object has no attribute 'decode'
FAILED Examples/Python/tests/test_examples.py::test_full_chain_odd_example_pythia_geant4 - subprocess.CalledProcessError: Command '['/builds/acts/ci-
bridge/dependencies/bin/python3', '/builds/acts/ci-bridge/src/Examples/Scripts/Python/full_chain_odd.py', '-n1', '--geant4', '--ttbar', '--ttbar-pu',
'50']' returned non-zero exit status 1.
FAILED Examples/Python/tests/test_examples.py::test_ML_Ambiguity_Solver - AttributeError: 'NoneType' object has no attribute 'decode'
FAILED Examples/Python/tests/test_misc.py::test_gsf_debugger - assert 1 == 0
+ where 1 = CompletedProcess(args=[PosixPath('/builds/acts/ci-bridge/src/Examples/Scripts/GsfDebugger/make_gsf_verbose_log.py')], returncode=1,
stdout=b"11:23:48 Sequencer INFO Create Sequencer (single-threaded)\n11:23:48 Sequencer INFO Add Writer
'CsvTrackingGeometryWriter'\n11:23:48 Sequencer INFO Add Reader 'EventGenerator'\n11:23:48 Sequencer INFO -> OutputParticles
'particles_input':\n11:23:48 Sequencer INFO flat_set<SimParticle, detail::CompareParticleId, void>\n11:23:48 Sequencer INFO
-> OutputVertices 'vertices_input':\n11:23:48 Sequencer INFO flat_set<SimVertex, detail::CompareVertexId, void>\n11:23:48 Sequencer
INFO Key 'particles_input' aliased to 'particles'\n11:23:48 Sequencer INFO Key 'vertices_input' aliased to
'vertices_truth'\n11:23:48 ParticleSele DEBUG selection particle rho [0,inf)\n11:23:48 ParticleSele DEBUG selection particle |z|
[0,inf)\n11:23:48 ParticleSele DEBUG selection particle time [-inf,inf)\n11:23:48 ParticleSele DEBUG selection particle phi
[-inf,inf)\n11:23:48 ParticleSele DEBUG selection par...PE masks:\n- Core/include/Acts/TrackFitting/detail/GsfComponentMerging.hpp:88:
FLTUND: 1\n- Core/include/Acts/TrackFitting/detail/GsfComponentMerging.hpp:198: FLTUND: 1\n- Core/src/Vertexing/AdaptiveMultiVertexFinder.cpp:474:
FLTUND: 1\n- Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp:172: FLTUND: 1\n-
Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp:66: FLTUND: 1\n", stderr=b'Traceback (most recent call last):\n File
"/builds/acts/ci-bridge/src/Examples/Scripts/GsfDebugger/make_gsf_verbose_log.py", line 43, in <module>\n runTruthTrackingGsf(\n File
"/builds/acts/ci-bridge/src/Examples/Scripts/Python/truth_tracking_gsf.py", line 74, in runTruthTrackingGsf\n addFatras(\n File "/builds/acts/ci-
bridge/build/python/acts/examples/simulation.py", line 494, in addFatras\n addParticleSelection(\n File "/builds/acts/ci-
bridge/build/python/acts/examples/simulation.py", line 379, in addParticleSelection\n acts.examples.ParticleSelector(\n File "/builds/acts/ci-
bridge/build/python/acts/_adapter.py", line 41, in wrapped\n fn(self, cfg, *args, **_kwargs)\nValueError: Read handle
\'ParticleSelector.InputMeasPartMap\' cannot receive empty key\n').returncode
FAILED Examples/Python/tests/test_reader.py::test_edm4hep_tracks_reader - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive
empty key
FAILED Examples/Python/tests/test_writer.py::test_csv_multitrajectory_writer - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot
receive empty key
FAILED Examples/Python/tests/test_writer.py::test_edm4hep_multitrajectory_writer - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot
receive empty key
FAILED Examples/Python/tests/test_writer.py::test_edm4hep_tracks_writer - ValueError: Read handle 'ParticleSelector.InputMeasPartMap' cannot receive
empty key
===== 30 failed, 215 passed, 4 deselected, 4 warnings in 588.97s (0:09:48) =====
section_end:1731497135:step_script
section_start:1731497135:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1731497136:cleanup_file_variables
ERROR: Job failed: exit code 1
Loading