Skip to main content

HDTV - Nuclear Spectrum Analysis

PyPI version codecov Codacy Badge

hdtv-spectrum-load-fit

HDTV is a nuclear spectrum and coincidence matrix analysis tool. It can load uncompressed (text), compressed, and ROOT spectra and 2D-matrices. It calibrates spectra, fits peaks with background with different models, and cuts matrices. HDTV is written in a mixture of C++ and Python, glued together using PyROOT.

Installation

HDTV requires CERN ROOT with working Python bindings.

pip install hdtv

If pip raises error: externally-managed-environment, you can install hdtv in a virtual environment, for example by using pipx:

pipx install hdtv --system-site-packages

If you use hdtv with a location-independent ROOT installation (i.e., you have to source <...>/thisroot.sh, e.g. in .bashrc or manually), you can leave out the --system-site-packages option.

Please note that the python package (wheel) does currently not include the compiled libraries required to run, as these depend on the root version, the python version, the compiler, and the moon phases. Instead, these are compiled automatically at first start, which requires certain build tools (see below).

Alternatively, the compilation can be triggered with

hdtv --rebuild-usr

for the current user; or with

hdtv --rebuild-sys

for all user (requires superuser privileges).

Requirements

To build and run HDTV, the following dependencies are required:

  • Python
    • Tested with 3.9, 3.10, 3.11, and 3.12
    • Python-dependencies are installed automatically when using pip/pipx
      • Packages: numpy scipy matplotlib prompt_toolkit>=3.0.14 uncertainties (when manually installed)
      • Packages for development & testing: docutils pytest pytest-cov
  • Cern ROOT 6
    • Tested with version 6.26 and higher
    • Needs to be compiled against the correct python version and with support for C++14 or higher.
    • In python, import ROOT must succeed.
    • System packages may be available on some systems, e.g. <tool> install root python3-root (More info)
  • cmake, gcc, g++ (or similar, in a somewhat modern version)
  • libx11-dev <tool> install libx11-6 libx11-dev

Usage with docker

With docker installed, build the image with:

git clone https://github.com/janmayer/hdtv.git
cd hdtv
docker build --tag hdtv .

On Linux and MacOS, no further installation is required and in the directory with your project you will be able to use HDTV with:

docker run -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix -v $(pwd):/work -it hdtv

When using SELinux, the additional argument --security-opt label=type:container_runtime_t is required (before -it).

On Windows, you will need to have an X-Server installed, for example with MobaXTerm, and be a bit more specific:

docker run -e DISPLAY=<your ip>:0.0 -v <full path to your files>:/work -it hdtv

e.g. docker run -e DISPLAY=192.168.178.21:0.0 -v D:\Project\Spectra:/work -it hdtv.

See also https://hub.docker.com/r/rootproject/root.

Documentation

For more information, including an overview of the available key bindings, refer to the documentation. A tutorial giving an introduction to HDTV and its basic features is also available.

Further installation topics

Run locally from source directory without installation

git clone https://github.com/janmayer/hdtv.git
cd hdtv
./bin/hdtv

Generate man pages:

cd doc/guide
make doc

Handling different ROOT versions

HDTV uses ROOT.gSystem.Load(libary) to load some critical components. These need to be compiled against the exact ROOT version imported in python. HDTV will try to automatically recompile the libraries for the current ROOT if the available ones cannot be loaded. This can also be forced with:

hdtv --rebuild-usr

When installed system-wide, the libraries can be recompiled once for all users with:

hdtv --rebuild-sys

This eliminates the need to reinstall HDTV after changes to the root installation.

Multiple Versions of ROOT can be used alongside, the correct library version will be chosen automatically.

Release files for hdtv 24.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hdtv 24.10
File Size Uploaded
hdtv-24.10.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for hdtv 24.10
File Interpreter ABI Platform
hdtv-24.10-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 2.0 MB

Release files / hdtv-24.10.tar.gz

Download URL hdtv-24.10.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
d58522084204062af096aa9c55a402eedab65a61f96ea518b11d6301d8de5874
BLAKE2b-256 checksum
How to use checksums
2efb26017cdbb42f22b736ed4e49e59eb6ed0eb186de6940c3fb2d1e7968bfd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release files / hdtv-24.10-py2.py3-none-any.whl

Download URL hdtv-24.10-py2.py3-none-any.whl
Size 928.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
00abd5908f477362420617c6d69bf7fdba8a1c06f05b37253442bde8b3b1691d
BLAKE2b-256 checksum
How to use checksums
2ee04a1606ef86b8263de199ed5582ce25f1dd0960d929406daf5e72570ec786
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.7

Release history Release notifications | RSS feed

This release

24.10 This release

2 release files

24.3

2 release files

24.1

2 release files

22.11

2 release files

22.4

2 release files

22.1

2 release files

21.4

2 release files

20.12

2 release files

20.11

2 release files

20.10

2 release files

20.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page