CHerenkov Air Shower Model
Project description
CHASM (CHerenkov Air Shower Model)
CHASM is a python package which leverages the universality of charged particles in an extensive air shower to produce a deterministic prediction of the Cherenkov light signal for a given shower profile and geometry. At samples throughout the domain of all shower development stages and altitudes, the angular and yield distributions of Cherenkov light have been calculated at an array of distances from a shower axis. Chasm accesses and interpolates between these distributions at runtime to produce the aggregate signal from the whole shower at user defined telescope locations.
Installation
To install from pip:
pip install CHASM-NuSpacesim
To install from source:
git clone https://github.com/ikepc1/CHASM_NuSpacesim
cd CHASM_NuSpacesim
python3 -m pip install -e .
Usage
CHASM has implementations of both upward and downward going shower axes in either flat planar or curved atmospheres. A shower profile can be defined either by Gaisser-Hillas parameters, or as an array of particle counts and at a corresponding array of depths. Cherenkov yield distributions can be sampled along the shower axis, or in a mesh of points surrounding the axis, at which charged particles are distributed according to the NKG lateral distribution. The first step is to create a simulation.
import CHASM as ch
sim = ch.ShowerSimulation()
Then add an axis. The origin of the coordinate system is where the axis meets the ground. It is defined by a polar angle, azimuthal angle, and keyword arguments for the ground level and whether to account for atmospheric curvature.
sim.add(ch.DownwardAxis(theta, phi, ground_level = 0., curved = False))
or
sim.add(ch.UpwardAxis(theta, phi, ground_level = 0., curved = False))
Then add a shower.
sim.add(ch.GHShower(X_max, N_max, X0, Lambda))
or
sim.add(ch.UserShower(X, N))
Now we add photon counters. Both spherical CORSIKA IACT style counters and flat counting apertures are available.
sim.add(ch.SphericalCounters(counter_vectors, counter_radius))
or
sim.add(ch.FlatCounters(counter_vectors, counter_radius))
Finally, we define the Cherenkov wavelength interval of interest.
sim.add(ch.Yield(min_l, max_l, N_bins = 1))
We can now run the simulation, and generate signals. The simulation's run method takes two keyword boolean flags, 'mesh' specifies whether to use mesh sampling around the shower axis, 'att' specifies whether to use atmospheric extinction along the travel paths of the light. The run method returns a ShowerSignal object, which contains the number of photons, their arrival times, their wavelengths, and vectors to their source points.
sig = sim.run(mesh = True)
CHASM can also write its output to the eventio format used by CORSIKA IACT. The function that does this takes ShowerSignal object and the target filename as arguments.
ch.write_ei_file(sig, 'filename.dat')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file CHASM_NuSpacesim-1.0.0.tar.gz
.
File metadata
- Download URL: CHASM_NuSpacesim-1.0.0.tar.gz
- Upload date:
- Size: 96.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cc3ae5cfcae6f2441276f7596fc72efb98ba3330ef81e1dc4cf1cab13f422d5 |
|
MD5 | 8e325dce4a06f59c0372c2659f5a1381 |
|
BLAKE2b-256 | 2b62311bae0549edd6b6edbff647b176f6820bef9980bffd40f00a1e1bcb83e4 |