Skip to content

proscrite/RaTag

Repository files navigation

RaTag — Radium Tagging analysis

Short summary

RaTag is a modular Python analysis package developed to process waveform data from the RITA setup (PMT + silicon alpha detector). It provides reproducible pipelines to: prepare runs (S1/S2 timing and transport properties), build alpha energy maps and calibrations, extract and fit recoil S2 areas (single- and multi-isotope modes), identify and fit X-ray S2 peaks for detector calibration (g_S2), and compute electron recombination fractions vs drift field.

Key ideas

  • Data model: Run, SetPmt, FrameProxy, and waveform dataclasses track provenance and enable lazy loading of large waveform files.
  • Pipelines: independent, composable stages (alpha calibration, preparation, recoil integration, X-ray classification, unified pipeline, recombination analysis) orchestrated by scripts/run_analysis.py.
  • Multi-isotope support: alpha tagging correlates silicon-detector frames with PMT frames via UIDs and computed isotope ranges.

Dependencies

See pyproject.toml for exact pins. The project requires Python 3.8+ and common scientific libs: numpy, scipy, matplotlib, pandas, lmfit, pytest.

Quick start / common commands

  1. Compute alpha energy maps (multi-isotope recommended first):
python RaTag/scripts/run_analysis.py configs/runXX_analysis.yaml --alphas-only
  1. Run the full pipeline (uses computed isotope ranges if available):
python RaTag/scripts/run_analysis.py configs/runXX_analysis.yaml
  1. Run only integration (assumes preparation done):
python RaTag/scripts/run_analysis.py configs/runXX_analysis.yaml --recoil-only
  1. Force refit of calibration/fits without regenerating energy maps:
python RaTag/scripts/run_analysis.py configs/runXX_analysis.yaml --alphas-only --force-refit

Useful flags

  • --prepare-only: estimate S1/S2 windows and transport properties only.
  • --xray-only: run X-ray classification stage only.
  • --only-unified: run the combined X-ray + S2 unified pipeline for efficiency.
  • --use-yaml-ranges: override computed isotope ranges with YAML-provided ranges.

Outputs and locations

  • Processed results and plots are saved under each run's processed_data/ directory (examples: spectrum_calibration/, {run_id}_s2_vs_drift.csv, {run_id}_recomb_factors.csv, PNG diagnostic plots).
  • Computed isotope ranges are stored as {run_id}_isotope_ranges.npz in processed_data/spectrum_calibration/ and reused by downstream stages.

Where to look next

  • RaTag/core/ for datatypes and default configs (integration, fitting, alpha peak definitions).
  • RaTag/scripts/run_analysis.py for the CLI and pipeline orchestration.

Configuration template

A ready-to-use configuration template is provided at RaTag/configs/run_analysis_template.yaml. Copy it and adapt the paths and parameters for your run (for example: cp RaTag/configs/run_analysis_template.yaml configs/run23_analysis.yaml).

Raw data layout (required)

The raw data directory for a run must follow the set organization expected by the pipelines. In short:

  • The root of a run contains one subdirectory per measurement set. Each set directory must be named with the pattern FieldScan_GateXXX_AnodeYYY (for example: FieldScan_Gate200_Anode350).
  • Inside each set directory place the waveform files for that set. For single-isotope runs the silicon detector files use the .ch4 naming conventions such as Ch4_noSCA and Ch4_SCA_ZZZ (these are silicon waveform files used by the alpha-analysis pipeline). PMT channel files live in the same set directory and follow your oscilloscope naming (e.g. ...Ch1.wfm or FastFrame files).

Important: the following directories are produced by the pipelines and should NOT be required in the raw data layout before running the analysis — they will be generated under the run root as the pipelines execute:

  • energy_maps/ (binary maps of alpha energies)
  • plots/ (collection of diagnostic PNGs)
  • processed_data/ (CSV/NPZ/json outputs such as {run_id}_isotope_ranges.npz, {run_id}_s2_vs_drift.csv, {run_id}_recomb_factors.csv)

Example raw run root (what your disk should look like before running pipelines):

/Volumes/KINGSTON/RaTag_data/RUN23_Ra224/
├─ FieldScan_Gate200_Anode350/
│  ├─ PMT_Ch1_file1.wfm
│  ├─ PMT_Ch1_file2.wfm
│  ├─ Ch4_noSCA/           # directory containing raw silicon waveform files (no SCA)
│  │  ├─ ...
│  └─ Ch4_SCA_001/         # directory containing SCA-processed silicon frames
│     ├─ ...
├─ FieldScan_Gate250_Anode400/
│  ├─ ...
└─ FieldScan_Gate.../

If your raw data is organized differently, the initialize_run logic (used by scripts/run_analysis.py) may be adapted, but the recommended convention above is what the pipelines expect by default.

About

RadiumTagging project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors