reboost 0.8.2__tar.gz → 0.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reboost-0.8.4/PKG-INFO +82 -0
- {reboost-0.8.2 → reboost-0.8.4}/pyproject.toml +5 -8
- reboost-0.8.4/src/reboost/__main__.py +6 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/_version.py +3 -3
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_hit.py +1 -1
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/surface.py +2 -2
- reboost-0.8.4/src/reboost/optmap/__main__.py +6 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/convolve.py +5 -5
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/evt.py +2 -2
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/mapview.py +1 -1
- reboost-0.8.4/src/reboost/spms/__init__.py +10 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/spms/pe.py +8 -3
- reboost-0.8.4/src/reboost.egg-info/PKG-INFO +82 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/SOURCES.txt +2 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/requires.txt +2 -2
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/hit_config.yaml +1 -1
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/spms.yaml +1 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/test_build_hit.py +1 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/make_geom.py +1 -1
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_surface.py +1 -1
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_core.py +4 -4
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_utils.py +2 -2
- reboost-0.8.2/PKG-INFO +0 -757
- reboost-0.8.2/src/reboost/spms/__init__.py +0 -5
- reboost-0.8.2/src/reboost.egg-info/PKG-INFO +0 -757
- {reboost-0.8.2 → reboost-0.8.4}/LICENSE +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/README.md +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/setup.cfg +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_evt.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_glm.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/cli.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/core.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/core.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/utils.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/psd.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/utils.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/iterator.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/log_utils.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/functions.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/stats.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/cli.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/create.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/numba_pdg.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/optmap.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/profile.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/__init__.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/cluster.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/group.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/reduction.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/units.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost/utils.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/dependency_links.txt +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/entry_points.txt +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/not-zip-safe +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/top_level.txt +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/conftest.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/evt/test_evt.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/glm/test_build_glm.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/args.yaml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/basic.yaml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/foward_only.yaml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/geom.gdml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/pars.yaml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/reshape.yaml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/gammas.mac +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/geometry.gdml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/make_dt_map.jl +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_current.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_dt_heuristic.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_files/drift_time_maps.lh5 +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_files/internal_electron.lh5 +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_hpge_map.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_r90.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/spms/test_pe.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_cli.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_math.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_optmap.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_optmap_dets.gdml +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_profile.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_shape.py +0 -0
- {reboost-0.8.2 → reboost-0.8.4}/tests/test_units.py +0 -0
reboost-0.8.4/PKG-INFO
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reboost
|
|
3
|
+
Version: 0.8.4
|
|
4
|
+
Summary: New LEGEND Monte-Carlo simulation post-processing
|
|
5
|
+
Author-email: Manuel Huber <info@manuelhu.de>, Toby Dixon <toby.dixon.23@ucl.ac.uk>, Luigi Pertoldi <gipert@pm.me>
|
|
6
|
+
Maintainer: The LEGEND Collaboration
|
|
7
|
+
License-Expression: GPL-3.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/legend-exp/reboost
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/legend-exp/reboost/issues
|
|
10
|
+
Project-URL: Discussions, https://github.com/legend-exp/reboost/discussions
|
|
11
|
+
Project-URL: Changelog, https://github.com/legend-exp/reboost/releases
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: POSIX
|
|
16
|
+
Classifier: Operating System :: Unix
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: hdf5plugin
|
|
25
|
+
Requires-Dist: colorlog
|
|
26
|
+
Requires-Dist: numpy
|
|
27
|
+
Requires-Dist: scipy
|
|
28
|
+
Requires-Dist: numba>=0.60
|
|
29
|
+
Requires-Dist: legend-pydataobj>=1.15.1
|
|
30
|
+
Requires-Dist: legend-pygeom-optics>=0.15.0
|
|
31
|
+
Requires-Dist: legend-pygeom-tools>=0.0.26
|
|
32
|
+
Requires-Dist: legend-pygeom-hpges
|
|
33
|
+
Requires-Dist: hist
|
|
34
|
+
Requires-Dist: dbetto
|
|
35
|
+
Requires-Dist: particle
|
|
36
|
+
Requires-Dist: pandas
|
|
37
|
+
Requires-Dist: matplotlib
|
|
38
|
+
Requires-Dist: pygama
|
|
39
|
+
Requires-Dist: pyg4ometry
|
|
40
|
+
Provides-Extra: all
|
|
41
|
+
Requires-Dist: reboost[docs,test]; extra == "all"
|
|
42
|
+
Provides-Extra: docs
|
|
43
|
+
Requires-Dist: furo; extra == "docs"
|
|
44
|
+
Requires-Dist: myst-parser; extra == "docs"
|
|
45
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
46
|
+
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
47
|
+
Provides-Extra: test
|
|
48
|
+
Requires-Dist: pre-commit; extra == "test"
|
|
49
|
+
Requires-Dist: pytest>=6.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
51
|
+
Requires-Dist: legend-pygeom-hpges; extra == "test"
|
|
52
|
+
Requires-Dist: pylegendtestdata>=0.6; extra == "test"
|
|
53
|
+
Dynamic: license-file
|
|
54
|
+
|
|
55
|
+
# reboost
|
|
56
|
+
|
|
57
|
+
[](https://pypi.org/project/reboost/)
|
|
58
|
+
[](https://anaconda.org/conda-forge/reboost)
|
|
59
|
+

|
|
60
|
+
[](https://github.com/legend-exp/reboost/actions)
|
|
61
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
62
|
+
[](https://github.com/psf/black)
|
|
63
|
+
[](https://app.codecov.io/gh/legend-exp/reboost)
|
|
64
|
+

|
|
65
|
+

|
|
66
|
+

|
|
67
|
+
[](https://reboost.readthedocs.io)
|
|
68
|
+
|
|
69
|
+
_reboost_ is a package to post-process
|
|
70
|
+
[remage](https://remage.readthedocs.io/en/stable/) simulations. Post processing
|
|
71
|
+
is the step of applying a detector response model to the (idealised) _remage_ /
|
|
72
|
+
_Geant4_ simulations to ''boost" them allowing comparison to data.
|
|
73
|
+
|
|
74
|
+
_reboost_ provides tools to:
|
|
75
|
+
|
|
76
|
+
- apply a HPGe detector response model to the simulations,
|
|
77
|
+
- dedicated tools to generate optical maps,
|
|
78
|
+
- functionality to control the full post-processing chain with configuration
|
|
79
|
+
files.
|
|
80
|
+
|
|
81
|
+
For more information see our dedicated
|
|
82
|
+
[documentation](https://reboost.readthedocs.io/en/stable/)!
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
|
-
"setuptools>=
|
|
3
|
+
"setuptools>=77",
|
|
4
4
|
"setuptools_scm[toml]>=7"
|
|
5
5
|
]
|
|
6
6
|
build-backend = "setuptools.build_meta"
|
|
@@ -17,11 +17,11 @@ maintainers = [
|
|
|
17
17
|
{ name = "The LEGEND Collaboration" },
|
|
18
18
|
]
|
|
19
19
|
readme = "README.md"
|
|
20
|
-
license
|
|
20
|
+
license = "GPL-3.0"
|
|
21
|
+
license-files = ["LICENSE"]
|
|
21
22
|
classifiers = [
|
|
22
23
|
"Intended Audience :: Developers",
|
|
23
24
|
"Intended Audience :: Science/Research",
|
|
24
|
-
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
25
25
|
"Operating System :: MacOS",
|
|
26
26
|
"Operating System :: POSIX",
|
|
27
27
|
"Operating System :: Unix",
|
|
@@ -38,8 +38,8 @@ dependencies = [
|
|
|
38
38
|
"scipy",
|
|
39
39
|
"numba >=0.60",
|
|
40
40
|
"legend-pydataobj >=1.15.1",
|
|
41
|
-
"legend-pygeom-optics >=0.
|
|
42
|
-
"legend-pygeom-tools >=0.0.
|
|
41
|
+
"legend-pygeom-optics >=0.15.0",
|
|
42
|
+
"legend-pygeom-tools >=0.0.26",
|
|
43
43
|
"legend-pygeom-hpges",
|
|
44
44
|
"hist",
|
|
45
45
|
"dbetto",
|
|
@@ -87,9 +87,6 @@ reboost = "reboost.cli:cli"
|
|
|
87
87
|
[tool.setuptools]
|
|
88
88
|
include-package-data = true
|
|
89
89
|
zip-safe = false
|
|
90
|
-
license-files = [
|
|
91
|
-
"LICENSE",
|
|
92
|
-
]
|
|
93
90
|
|
|
94
91
|
[tool.setuptools.package-dir]
|
|
95
92
|
"" = "src"
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.8.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 8,
|
|
31
|
+
__version__ = version = '0.8.4'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 8, 4)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g974fc1b03'
|
|
@@ -42,7 +42,7 @@ A :func:`build_hit` to parse the following configuration file:
|
|
|
42
42
|
# iteration of the for loop over input tables (i.e. detectors)
|
|
43
43
|
detector_objects:
|
|
44
44
|
# The following assumes that the detector metadata is stored in the GDML file
|
|
45
|
-
pyobj:
|
|
45
|
+
pyobj: pygeomhpges.make_hpge(pygeomtools.get_sensvol_metadata(OBJECTS.geometry, DETECTOR))
|
|
46
46
|
phyvol: OBJECTS.geometry.physical_volume_dict[DETECTOR]
|
|
47
47
|
drift_time_map: lgdo.lh5.read(DETECTOR, ARGS.dtmap_file)
|
|
48
48
|
|
|
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|
|
3
3
|
import logging
|
|
4
4
|
|
|
5
5
|
import awkward as ak
|
|
6
|
-
import legendhpges
|
|
7
6
|
import numba
|
|
8
7
|
import numpy as np
|
|
8
|
+
import pygeomhpges
|
|
9
9
|
from lgdo import VectorOfVectors
|
|
10
10
|
from lgdo.types import LGDO
|
|
11
11
|
from numpy.typing import ArrayLike
|
|
@@ -18,7 +18,7 @@ def distance_to_surface(
|
|
|
18
18
|
positions_x: VectorOfVectors,
|
|
19
19
|
positions_y: VectorOfVectors,
|
|
20
20
|
positions_z: VectorOfVectors,
|
|
21
|
-
hpge:
|
|
21
|
+
hpge: pygeomhpges.base.HPGe,
|
|
22
22
|
det_pos: ArrayLike,
|
|
23
23
|
*,
|
|
24
24
|
surface_type: str | None = None,
|
|
@@ -4,14 +4,14 @@ import logging
|
|
|
4
4
|
from typing import NamedTuple
|
|
5
5
|
|
|
6
6
|
import awkward as ak
|
|
7
|
-
import legendoptics.scintillate as sc
|
|
8
7
|
import numba
|
|
9
8
|
import numpy as np
|
|
10
|
-
|
|
9
|
+
import pygeomoptics.scintillate as sc
|
|
11
10
|
from lgdo import lh5
|
|
12
11
|
from lgdo.types import Histogram
|
|
13
12
|
from numba import njit
|
|
14
13
|
from numpy.typing import NDArray
|
|
14
|
+
from pygeomoptics import fibers, lar, pen
|
|
15
15
|
|
|
16
16
|
from .numba_pdg import numba_pdgid_funcs
|
|
17
17
|
|
|
@@ -32,7 +32,7 @@ class OptmapForConvolve(NamedTuple):
|
|
|
32
32
|
|
|
33
33
|
def open_optmap(optmap_fn: str) -> OptmapForConvolve:
|
|
34
34
|
dets = lh5.ls(optmap_fn, "/channels/")
|
|
35
|
-
detidx = np.arange(0, dets
|
|
35
|
+
detidx = np.arange(0, len(dets))
|
|
36
36
|
|
|
37
37
|
optmap_all = lh5.read("/all/prob", optmap_fn)
|
|
38
38
|
assert isinstance(optmap_all, Histogram)
|
|
@@ -61,14 +61,14 @@ def open_optmap(optmap_fn: str) -> OptmapForConvolve:
|
|
|
61
61
|
raise ValueError(msg)
|
|
62
62
|
else:
|
|
63
63
|
detidx = np.array([OPTMAP_ANY_CH])
|
|
64
|
-
dets =
|
|
64
|
+
dets = ["all"]
|
|
65
65
|
|
|
66
66
|
# check the exponent from the optical map file
|
|
67
67
|
if "_hitcounts_exp" in lh5.ls(optmap_fn):
|
|
68
68
|
msg = "found _hitcounts_exp which is not supported any more"
|
|
69
69
|
raise RuntimeError(msg)
|
|
70
70
|
|
|
71
|
-
dets = [d.replace("/channels/", "") for d in dets]
|
|
71
|
+
dets = np.array([d.replace("/channels/", "") for d in dets])
|
|
72
72
|
|
|
73
73
|
return OptmapForConvolve(dets, detidx, optmap_edges, ow)
|
|
74
74
|
|
|
@@ -131,9 +131,9 @@ def get_optical_detectors_from_geom(geom_fn) -> dict[int, str]:
|
|
|
131
131
|
import pygeomtools
|
|
132
132
|
|
|
133
133
|
geom_registry = pyg4ometry.gdml.Reader(geom_fn).getRegistry()
|
|
134
|
-
detectors = pygeomtools.get_all_sensvols(geom_registry)
|
|
134
|
+
detectors = pygeomtools.get_all_sensvols(geom_registry, type_filter="optical")
|
|
135
135
|
return OrderedDict(
|
|
136
|
-
[(d.uid, name) for name, d in detectors.items()
|
|
136
|
+
[(d.uid, d.ntuple_name if d.ntuple_name else name) for name, d in detectors.items()]
|
|
137
137
|
)
|
|
138
138
|
|
|
139
139
|
|
|
@@ -95,7 +95,7 @@ def _read_data(
|
|
|
95
95
|
histogram_choice: str = "prob",
|
|
96
96
|
) -> tuple[tuple[NDArray], NDArray]:
|
|
97
97
|
histogram = histogram_choice if histogram_choice != "prob_unc_rel" else "prob"
|
|
98
|
-
detid = f"channels/{detid}" if detid != all and not detid.startswith("channels/") else detid
|
|
98
|
+
detid = f"channels/{detid}" if detid != "all" and not detid.startswith("channels/") else detid
|
|
99
99
|
|
|
100
100
|
optmap_all = lh5.read(f"/{detid}/{histogram}", optmap_fn)
|
|
101
101
|
optmap_edges = tuple([b.edges for b in optmap_all.binning])
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from .pe import detected_photoelectrons, emitted_scintillation_photons, load_optmap, load_optmap_all
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"detected_photoelectrons",
|
|
7
|
+
"emitted_scintillation_photons",
|
|
8
|
+
"load_optmap",
|
|
9
|
+
"load_optmap_all",
|
|
10
|
+
]
|
|
@@ -140,8 +140,8 @@ def detected_photoelectrons(
|
|
|
140
140
|
"""
|
|
141
141
|
hits = ak.Array(
|
|
142
142
|
{
|
|
143
|
-
"num_scint_ph": num_scint_ph,
|
|
144
|
-
"particle": particle,
|
|
143
|
+
"num_scint_ph": units_conv_ak(num_scint_ph, "dimensionless"),
|
|
144
|
+
"particle": units_conv_ak(particle, "dimensionless"),
|
|
145
145
|
"time": units_conv_ak(time, "ns"),
|
|
146
146
|
"xloc": units_conv_ak(xloc, "m"),
|
|
147
147
|
"yloc": units_conv_ak(yloc, "m"),
|
|
@@ -171,7 +171,12 @@ def emitted_scintillation_photons(
|
|
|
171
171
|
material
|
|
172
172
|
scintillating material name.
|
|
173
173
|
"""
|
|
174
|
-
hits = ak.Array(
|
|
174
|
+
hits = ak.Array(
|
|
175
|
+
{
|
|
176
|
+
"edep": units_conv_ak(edep, "keV"),
|
|
177
|
+
"particle": units_conv_ak(particle, "dimensionless"),
|
|
178
|
+
}
|
|
179
|
+
)
|
|
175
180
|
|
|
176
181
|
scint_mat_params = convolve._get_scint_params(material)
|
|
177
182
|
ph = convolve.iterate_stepwise_depositions_scintillate(hits, scint_mat_params)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reboost
|
|
3
|
+
Version: 0.8.4
|
|
4
|
+
Summary: New LEGEND Monte-Carlo simulation post-processing
|
|
5
|
+
Author-email: Manuel Huber <info@manuelhu.de>, Toby Dixon <toby.dixon.23@ucl.ac.uk>, Luigi Pertoldi <gipert@pm.me>
|
|
6
|
+
Maintainer: The LEGEND Collaboration
|
|
7
|
+
License-Expression: GPL-3.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/legend-exp/reboost
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/legend-exp/reboost/issues
|
|
10
|
+
Project-URL: Discussions, https://github.com/legend-exp/reboost/discussions
|
|
11
|
+
Project-URL: Changelog, https://github.com/legend-exp/reboost/releases
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: POSIX
|
|
16
|
+
Classifier: Operating System :: Unix
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: hdf5plugin
|
|
25
|
+
Requires-Dist: colorlog
|
|
26
|
+
Requires-Dist: numpy
|
|
27
|
+
Requires-Dist: scipy
|
|
28
|
+
Requires-Dist: numba>=0.60
|
|
29
|
+
Requires-Dist: legend-pydataobj>=1.15.1
|
|
30
|
+
Requires-Dist: legend-pygeom-optics>=0.15.0
|
|
31
|
+
Requires-Dist: legend-pygeom-tools>=0.0.26
|
|
32
|
+
Requires-Dist: legend-pygeom-hpges
|
|
33
|
+
Requires-Dist: hist
|
|
34
|
+
Requires-Dist: dbetto
|
|
35
|
+
Requires-Dist: particle
|
|
36
|
+
Requires-Dist: pandas
|
|
37
|
+
Requires-Dist: matplotlib
|
|
38
|
+
Requires-Dist: pygama
|
|
39
|
+
Requires-Dist: pyg4ometry
|
|
40
|
+
Provides-Extra: all
|
|
41
|
+
Requires-Dist: reboost[docs,test]; extra == "all"
|
|
42
|
+
Provides-Extra: docs
|
|
43
|
+
Requires-Dist: furo; extra == "docs"
|
|
44
|
+
Requires-Dist: myst-parser; extra == "docs"
|
|
45
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
46
|
+
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
47
|
+
Provides-Extra: test
|
|
48
|
+
Requires-Dist: pre-commit; extra == "test"
|
|
49
|
+
Requires-Dist: pytest>=6.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
51
|
+
Requires-Dist: legend-pygeom-hpges; extra == "test"
|
|
52
|
+
Requires-Dist: pylegendtestdata>=0.6; extra == "test"
|
|
53
|
+
Dynamic: license-file
|
|
54
|
+
|
|
55
|
+
# reboost
|
|
56
|
+
|
|
57
|
+
[](https://pypi.org/project/reboost/)
|
|
58
|
+
[](https://anaconda.org/conda-forge/reboost)
|
|
59
|
+

|
|
60
|
+
[](https://github.com/legend-exp/reboost/actions)
|
|
61
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
62
|
+
[](https://github.com/psf/black)
|
|
63
|
+
[](https://app.codecov.io/gh/legend-exp/reboost)
|
|
64
|
+

|
|
65
|
+

|
|
66
|
+

|
|
67
|
+
[](https://reboost.readthedocs.io)
|
|
68
|
+
|
|
69
|
+
_reboost_ is a package to post-process
|
|
70
|
+
[remage](https://remage.readthedocs.io/en/stable/) simulations. Post processing
|
|
71
|
+
is the step of applying a detector response model to the (idealised) _remage_ /
|
|
72
|
+
_Geant4_ simulations to ''boost" them allowing comparison to data.
|
|
73
|
+
|
|
74
|
+
_reboost_ provides tools to:
|
|
75
|
+
|
|
76
|
+
- apply a HPGe detector response model to the simulations,
|
|
77
|
+
- dedicated tools to generate optical maps,
|
|
78
|
+
- functionality to control the full post-processing chain with configuration
|
|
79
|
+
files.
|
|
80
|
+
|
|
81
|
+
For more information see our dedicated
|
|
82
|
+
[documentation](https://reboost.readthedocs.io/en/stable/)!
|
|
@@ -2,6 +2,7 @@ LICENSE
|
|
|
2
2
|
README.md
|
|
3
3
|
pyproject.toml
|
|
4
4
|
src/reboost/__init__.py
|
|
5
|
+
src/reboost/__main__.py
|
|
5
6
|
src/reboost/_version.py
|
|
6
7
|
src/reboost/build_evt.py
|
|
7
8
|
src/reboost/build_glm.py
|
|
@@ -31,6 +32,7 @@ src/reboost/math/__init__.py
|
|
|
31
32
|
src/reboost/math/functions.py
|
|
32
33
|
src/reboost/math/stats.py
|
|
33
34
|
src/reboost/optmap/__init__.py
|
|
35
|
+
src/reboost/optmap/__main__.py
|
|
34
36
|
src/reboost/optmap/cli.py
|
|
35
37
|
src/reboost/optmap/convolve.py
|
|
36
38
|
src/reboost/optmap/create.py
|
|
@@ -13,7 +13,7 @@ processing_groups:
|
|
|
13
13
|
meta: dbetto.AttrsDict(pygeomtools.get_sensvol_metadata(OBJECTS.geometry,
|
|
14
14
|
OBJECTS.user_pars[DETECTOR].name ))
|
|
15
15
|
pyobj:
|
|
16
|
-
|
|
16
|
+
pygeomhpges.make_hpge(pygeomtools.get_sensvol_metadata(OBJECTS.geometry,OBJECTS.user_pars[DETECTOR].name),
|
|
17
17
|
registry = OBJECTS.reg)
|
|
18
18
|
phyvol: OBJECTS.geometry.physicalVolumeDict[OBJECTS.user_pars[DETECTOR].name]
|
|
19
19
|
det_pars: OBJECTS.user_pars[DETECTOR]
|
|
@@ -333,6 +333,7 @@ def test_spms(test_gen_lh5_scint, tmptestdir):
|
|
|
333
333
|
m.create_probability()
|
|
334
334
|
m.write_lh5(map_file, "channels/S001", "overwrite_file")
|
|
335
335
|
m.write_lh5(map_file, "channels/S002", "write_safe")
|
|
336
|
+
m.write_lh5(map_file, "all", "write_safe")
|
|
336
337
|
|
|
337
338
|
outfile = f"{tmptestdir}/spms_hit.lh5"
|
|
338
339
|
reboost.build_hit(
|
|
@@ -4,10 +4,10 @@ import awkward as ak
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
import pyg4ometry
|
|
6
6
|
import pytest
|
|
7
|
-
from legendhpges import make_hpge
|
|
8
7
|
from legendtestdata import LegendTestData
|
|
9
8
|
from lgdo import types
|
|
10
9
|
from lgdo.types import VectorOfVectors
|
|
10
|
+
from pygeomhpges import make_hpge
|
|
11
11
|
|
|
12
12
|
from reboost.hpge.surface import distance_to_surface, get_surface_response
|
|
13
13
|
|
|
@@ -4,9 +4,9 @@ import json
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
import awkward as ak
|
|
7
|
-
import legendhpges
|
|
8
7
|
import numpy as np
|
|
9
8
|
import pyg4ometry as pg4
|
|
9
|
+
import pygeomhpges
|
|
10
10
|
import pygeomtools
|
|
11
11
|
import pytest
|
|
12
12
|
from dbetto import AttrsDict
|
|
@@ -27,7 +27,7 @@ def test_data_configs():
|
|
|
27
27
|
def make_gdml(test_data_configs):
|
|
28
28
|
reg = pg4.geant4.Registry()
|
|
29
29
|
meta = f"{test_data_configs}/C99000A.json"
|
|
30
|
-
hpge =
|
|
30
|
+
hpge = pygeomhpges.make_hpge(meta, registry=reg)
|
|
31
31
|
|
|
32
32
|
world_s = pg4.geant4.solid.Orb("World_s", 20, registry=reg, lunit="cm")
|
|
33
33
|
world_l = pg4.geant4.LogicalVolume(world_s, "G4_Galactic", "World", registry=reg)
|
|
@@ -116,7 +116,7 @@ def test_get_objects(test_data_configs, make_gdml):
|
|
|
116
116
|
# get legend-test data
|
|
117
117
|
# check if we can make a HPGe
|
|
118
118
|
path = test_data_configs + r"/{DETECTOR}"
|
|
119
|
-
expression = f"
|
|
119
|
+
expression = f"pygeomhpges.make_hpge(f'{path}.json',registry = OBJECTS.reg)"
|
|
120
120
|
assert reboost.core.evaluate_object(expression, {"DETECTOR": "C99000A", "OBJECTS": objects})
|
|
121
121
|
|
|
122
122
|
# test construction of the global objects
|
|
@@ -144,7 +144,7 @@ def test_get_objects(test_data_configs, make_gdml):
|
|
|
144
144
|
# test getting detector objects
|
|
145
145
|
expressions = {
|
|
146
146
|
"meta": "pygeomtools.get_sensvol_metadata(OBJECTS.geometry, DETECTOR)",
|
|
147
|
-
"hpge": "
|
|
147
|
+
"hpge": "pygeomhpges.make_hpge(pygeomtools.get_sensvol"
|
|
148
148
|
"_metadata(OBJECTS.geometry, DETECTOR),registry = OBJECTS.reg,name=ARGS.name)",
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -84,13 +84,13 @@ def test_get_function_string():
|
|
|
84
84
|
|
|
85
85
|
# try a more compliated expression
|
|
86
86
|
expression = (
|
|
87
|
-
"
|
|
87
|
+
"pygeomhpges.make_hpge(pygeomtools.get_sensvol"
|
|
88
88
|
"_metadata(OBJECTS.geometry, DETECTOR),registry = OBJECT.reg,name=ARGS.name)"
|
|
89
89
|
)
|
|
90
90
|
|
|
91
91
|
func_string, globals_dict = get_function_string(expression)
|
|
92
92
|
|
|
93
|
-
assert list(globals_dict.keys()) == ["
|
|
93
|
+
assert list(globals_dict.keys()) == ["pygeomhpges", "pygeomtools"]
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
def test_merge_dicts():
|