Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

2 watching

Forks

Latest commit

 

History

45 Commits

Folders and files

Repository files navigation

Polarized X-ray analysis of an optically read out gaseous TPC prototype

This repository contains the reconstruction and analysis code for the November 2024 polarized X-ray measurement performed with an optically read out gaseous time projection chamber prototype at INAF-IAPS.

The detector used Ar/CF4 60/40 at approximately 1000 mbar, with 440 V across each GEM, 2.5 kV/cm transfer fields, and a 1 kV/cm drift field. Optical readout used an ORCA-Quest camera and a 25 mm EHD F/0.85 lens. Measurements were taken at two detector orientations separated by a clockwise rotation of 90 +/- 1 degrees.

Repository contents

Path Purpose
Analyzer.cxx, Analyzer.h Track reconstruction and direction estimation.
INAF_dir_MP.cxx Multiprocessing driver that reads CYGNO Events trees and writes reduced track_info trees.
configs/directionality/ Organized reconstruction templates and fixed ROI configurations.
analysis/stokes_modulation.py Final four-sample event-Stokes analysis and cosine-two cross-check.
analysis/stokes_modulation_config.json Current polarized-sample configuration.
analysis/review_cd109_control.py Unpolarized Cd-109 data-quality review.
spectra-CdTe/ CdTe energy calibration and polarized-line fraction analysis.
docs/README.md Documentation index.
docs/measurement_and_analysis_overview.md Current measurement and result summary.
docs/paper_readiness.md Frozen scope, limitations, and final writing inputs.
analysis/make_paper_figures.py Reproducible vector-PDF paper figures.

Legacy example programs, diffusion utilities, parameter scans, pixel-rotation studies, and the old ROOT modulation-fitting scripts have been removed because they are not part of the retained analysis chain.

Data availability

Raw and reduced ROOT data, MCA spectra, reference PDFs, manuscript files, and generated figures/results are intentionally excluded from Git. Source code, analysis configurations, tests, and scientific Markdown are versioned.

The final local analysis expects the reconstructed cluster files:

Reco/INAF_Ar_2ndreco_0deg.root
Reco/INAF_Ar_2ndreco_90deg.root
Reco/109Cd_ArCF4.root

and the four final polarized directionality files under:

directionality_circle/0deg_low_circle_r75/
directionality_circle/90deg_low_circle_r75/
directionality_circle/0deg_high_circle_r75/
directionality_circle/90deg_high_circle_r75/

The valid run selections are:

  • 0deg: 23934--24291;
  • 90deg: 24294--24701.

This removes duplicated 0deg run 24291 and pedestal run 24293 from the reconstructed 90deg file.

Reconstruction

The reconstruction requires CERN ROOT, including TProcessExecutor and TSpectrum.

Compile with:

g++ Analyzer.cxx INAF_dir_MP.cxx -O3 -o INAF_MP \
  $(root-config --libs --cflags) -lSpectrum

Copy and edit configs/directionality/directionality_template.txt, then run:

./INAF_MP configs/directionality/directionality_template.txt

Directionality configurations are organized under configs/directionality/. For the four-position-cut cross-check, the user runs:

bash ./run_directionality_position_crosscheck.sh

The launcher accepts one or more configuration filenames when only a subset should be reconstructed. See the position-cut report for the geometry definitions and examples.

Current analysis chain

The Python analysis requires NumPy, SciPy, Matplotlib, awkward, and uproot. Run the final four-sample polarized analysis with:

python3 analysis/stokes_modulation.py

It reads the common-circle outputs, calculates event Stokes parameters, propagates covariance, applies the measured CdTe line fractions, performs the first-order 0deg/90deg additive decomposition, and makes an independent Poisson cosine-two fit.

Review the unpolarized Cd-109 reconstructed clusters with:

python3 analysis/review_cd109_control.py

Estimate the CdTe line fractions with:

python3 spectra-CdTe/line_purity.py

Run all Python tests with:

cd analysis
python3 -m unittest discover -s . -p 'test_*.py'
cd ../spectra-CdTe
python3 -m unittest discover -s . -p 'test_*.py'

Build the frozen vector-PDF paper figure set with:

python3 analysis/make_paper_figures.py

See analysis/README.md for analysis details and the measurement overview for the current physics result. The paper-readiness document records the frozen limitations and final collaboration inputs for writing.

CdTe source characterization

The former standalone spettri-CdTe checkout has been flattened into this repository. Its original remote was fiorotto8/spettri-CdTe, at commit d4a06a9 before flattening. Local analysis changes were retained.

The current paper analysis is line_purity.py. The older PyROOT scripts are retained for provenance and diagnostic plots:

cd spectra-CdTe
python3 line_purity.py

The measured MCA inputs and generated spectra are ignored by Git.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages