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.
Files changed (86) hide show
  1. reboost-0.8.4/PKG-INFO +82 -0
  2. {reboost-0.8.2 → reboost-0.8.4}/pyproject.toml +5 -8
  3. reboost-0.8.4/src/reboost/__main__.py +6 -0
  4. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/_version.py +3 -3
  5. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_hit.py +1 -1
  6. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/surface.py +2 -2
  7. reboost-0.8.4/src/reboost/optmap/__main__.py +6 -0
  8. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/convolve.py +5 -5
  9. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/evt.py +2 -2
  10. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/mapview.py +1 -1
  11. reboost-0.8.4/src/reboost/spms/__init__.py +10 -0
  12. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/spms/pe.py +8 -3
  13. reboost-0.8.4/src/reboost.egg-info/PKG-INFO +82 -0
  14. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/SOURCES.txt +2 -0
  15. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/requires.txt +2 -2
  16. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/hit_config.yaml +1 -1
  17. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/spms.yaml +1 -0
  18. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/test_build_hit.py +1 -0
  19. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/make_geom.py +1 -1
  20. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_surface.py +1 -1
  21. {reboost-0.8.2 → reboost-0.8.4}/tests/test_core.py +4 -4
  22. {reboost-0.8.2 → reboost-0.8.4}/tests/test_utils.py +2 -2
  23. reboost-0.8.2/PKG-INFO +0 -757
  24. reboost-0.8.2/src/reboost/spms/__init__.py +0 -5
  25. reboost-0.8.2/src/reboost.egg-info/PKG-INFO +0 -757
  26. {reboost-0.8.2 → reboost-0.8.4}/LICENSE +0 -0
  27. {reboost-0.8.2 → reboost-0.8.4}/README.md +0 -0
  28. {reboost-0.8.2 → reboost-0.8.4}/setup.cfg +0 -0
  29. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/__init__.py +0 -0
  30. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_evt.py +0 -0
  31. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/build_glm.py +0 -0
  32. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/cli.py +0 -0
  33. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/core.py +0 -0
  34. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/__init__.py +0 -0
  35. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/core.py +0 -0
  36. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/daq/utils.py +0 -0
  37. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/__init__.py +0 -0
  38. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/psd.py +0 -0
  39. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/hpge/utils.py +0 -0
  40. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/iterator.py +0 -0
  41. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/log_utils.py +0 -0
  42. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/__init__.py +0 -0
  43. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/functions.py +0 -0
  44. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/math/stats.py +0 -0
  45. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/__init__.py +0 -0
  46. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/cli.py +0 -0
  47. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/create.py +0 -0
  48. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/numba_pdg.py +0 -0
  49. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/optmap/optmap.py +0 -0
  50. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/profile.py +0 -0
  51. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/__init__.py +0 -0
  52. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/cluster.py +0 -0
  53. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/group.py +0 -0
  54. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/shape/reduction.py +0 -0
  55. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/units.py +0 -0
  56. {reboost-0.8.2 → reboost-0.8.4}/src/reboost/utils.py +0 -0
  57. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/dependency_links.txt +0 -0
  58. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/entry_points.txt +0 -0
  59. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/not-zip-safe +0 -0
  60. {reboost-0.8.2 → reboost-0.8.4}/src/reboost.egg-info/top_level.txt +0 -0
  61. {reboost-0.8.2 → reboost-0.8.4}/tests/conftest.py +0 -0
  62. {reboost-0.8.2 → reboost-0.8.4}/tests/evt/test_evt.py +0 -0
  63. {reboost-0.8.2 → reboost-0.8.4}/tests/glm/test_build_glm.py +0 -0
  64. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/args.yaml +0 -0
  65. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/basic.yaml +0 -0
  66. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/foward_only.yaml +0 -0
  67. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/geom.gdml +0 -0
  68. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/pars.yaml +0 -0
  69. {reboost-0.8.2 → reboost-0.8.4}/tests/hit/configs/reshape.yaml +0 -0
  70. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/gammas.mac +0 -0
  71. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/geometry.gdml +0 -0
  72. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/simulation/make_dt_map.jl +0 -0
  73. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_current.py +0 -0
  74. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_dt_heuristic.py +0 -0
  75. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_files/drift_time_maps.lh5 +0 -0
  76. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_files/internal_electron.lh5 +0 -0
  77. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_hpge_map.py +0 -0
  78. {reboost-0.8.2 → reboost-0.8.4}/tests/hpge/test_r90.py +0 -0
  79. {reboost-0.8.2 → reboost-0.8.4}/tests/spms/test_pe.py +0 -0
  80. {reboost-0.8.2 → reboost-0.8.4}/tests/test_cli.py +0 -0
  81. {reboost-0.8.2 → reboost-0.8.4}/tests/test_math.py +0 -0
  82. {reboost-0.8.2 → reboost-0.8.4}/tests/test_optmap.py +0 -0
  83. {reboost-0.8.2 → reboost-0.8.4}/tests/test_optmap_dets.gdml +0 -0
  84. {reboost-0.8.2 → reboost-0.8.4}/tests/test_profile.py +0 -0
  85. {reboost-0.8.2 → reboost-0.8.4}/tests/test_shape.py +0 -0
  86. {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
+ [![PyPI](https://img.shields.io/pypi/v/reboost?logo=pypi)](https://pypi.org/project/reboost/)
58
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/reboost.svg)](https://anaconda.org/conda-forge/reboost)
59
+ ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/legend-exp/reboost?logo=git)
60
+ [![GitHub Workflow Status](https://img.shields.io/github/checks-status/legend-exp/reboost/main?label=main%20branch&logo=github)](https://github.com/legend-exp/reboost/actions)
61
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
62
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
63
+ [![Codecov](https://img.shields.io/codecov/c/github/legend-exp/reboost?logo=codecov)](https://app.codecov.io/gh/legend-exp/reboost)
64
+ ![GitHub issues](https://img.shields.io/github/issues/legend-exp/reboost?logo=github)
65
+ ![GitHub pull requests](https://img.shields.io/github/issues-pr/legend-exp/reboost?logo=github)
66
+ ![License](https://img.shields.io/github/license/legend-exp/reboost)
67
+ [![Read the Docs](https://img.shields.io/readthedocs/reboost?logo=readthedocs)](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>=61.2",
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.file = "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.12.0",
42
- "legend-pygeom-tools >=0.0.11",
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"
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ from .cli import cli
4
+
5
+ if __name__ == "__main__":
6
+ cli()
@@ -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.2'
32
- __version_tuple__ = version_tuple = (0, 8, 2)
31
+ __version__ = version = '0.8.4'
32
+ __version_tuple__ = version_tuple = (0, 8, 4)
33
33
 
34
- __commit_id__ = commit_id = 'gc0299ec86'
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: legendhpges.make_hpge(pygeomtools.get_sensvol_metadata(OBJECTS.geometry, DETECTOR))
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: legendhpges.base.HPGe,
21
+ hpge: pygeomhpges.base.HPGe,
22
22
  det_pos: ArrayLike,
23
23
  *,
24
24
  surface_type: str | None = None,
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ from .cli import optical_cli
4
+
5
+ if __name__ == "__main__":
6
+ optical_cli()
@@ -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
- from legendoptics import fibers, lar, pen
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.shape[0])
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 = np.array(["all"])
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() if d.detector_type == "optical"]
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({"edep": units_conv_ak(edep, "keV"), "particle": particle})
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
+ [![PyPI](https://img.shields.io/pypi/v/reboost?logo=pypi)](https://pypi.org/project/reboost/)
58
+ [![conda-forge](https://img.shields.io/conda/vn/conda-forge/reboost.svg)](https://anaconda.org/conda-forge/reboost)
59
+ ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/legend-exp/reboost?logo=git)
60
+ [![GitHub Workflow Status](https://img.shields.io/github/checks-status/legend-exp/reboost/main?label=main%20branch&logo=github)](https://github.com/legend-exp/reboost/actions)
61
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
62
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
63
+ [![Codecov](https://img.shields.io/codecov/c/github/legend-exp/reboost?logo=codecov)](https://app.codecov.io/gh/legend-exp/reboost)
64
+ ![GitHub issues](https://img.shields.io/github/issues/legend-exp/reboost?logo=github)
65
+ ![GitHub pull requests](https://img.shields.io/github/issues-pr/legend-exp/reboost?logo=github)
66
+ ![License](https://img.shields.io/github/license/legend-exp/reboost)
67
+ [![Read the Docs](https://img.shields.io/readthedocs/reboost?logo=readthedocs)](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
@@ -4,8 +4,8 @@ numpy
4
4
  scipy
5
5
  numba>=0.60
6
6
  legend-pydataobj>=1.15.1
7
- legend-pygeom-optics>=0.12.0
8
- legend-pygeom-tools>=0.0.11
7
+ legend-pygeom-optics>=0.15.0
8
+ legend-pygeom-tools>=0.0.26
9
9
  legend-pygeom-hpges
10
10
  hist
11
11
  dbetto
@@ -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
- legendhpges.make_hpge(pygeomtools.get_sensvol_metadata(OBJECTS.geometry,OBJECTS.user_pars[DETECTOR].name),
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]
@@ -1,5 +1,6 @@
1
1
  objects:
2
2
  spms: "['S001', 'S002']"
3
+ optmap_test: reboost.spms.load_optmap_all(ARGS.optmap_path)
3
4
 
4
5
  processing_groups:
5
6
  - name: spms
@@ -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(
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- import legendhpges as hpges
4
3
  import numpy as np
5
4
  import pyg4ometry as pg4
5
+ import pygeomhpges as hpges
6
6
  from legendtestdata import LegendTestData
7
7
 
8
8
  ldata = LegendTestData()
@@ -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 = legendhpges.make_hpge(meta, registry=reg)
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"legendhpges.make_hpge(f'{path}.json',registry = OBJECTS.reg)"
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": "legendhpges.make_hpge(pygeomtools.get_sensvol"
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
- "legendhpges.make_hpge(pygeomtools.get_sensvol"
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()) == ["legendhpges", "pygeomtools"]
93
+ assert list(globals_dict.keys()) == ["pygeomhpges", "pygeomtools"]
94
94
 
95
95
 
96
96
  def test_merge_dicts():