Skip to main content

Python library containing tools for dealing with conversions between particle energy and rigidity

Project description

ParticleRigidityCalculationTools

A set of Python functions for processing and converting data in units of particle kinetic energy to units of particle rigidity (typically expressed in GV; gigavolts) and vice versa. This is frequently done in the field of solar system radiation physics.

Installation

To install from pypi, run

sudo pip3 install ParticleRigidityCalculationTools

Alternatively, you can install directly from the Github repository.

To do this you can first clone the repository, and then from the cloned respository, run

sudo python setup.py install

Usage

For all the functions contained in this module, kinetic energy is always expressed in MeV (megaelectronvolts), and rigidity is always expressed in terms of GV (gigavolts) unless otherwise stated.

General Conversion Functions

To convert particle kinetic energy to rigidity, use the convertParticleEnergyToRigidity function.

Particle kinetic energies can be supplied as a float, int, list, NumPy array or Pandas Series. Particle mass in atomic units should also be supplied, as well as the particle charge in atomic units, as particle rigidity is dependent on these quantities.

For instance, to calculate particle rigidities for several kinetic energies at once you can first define a list of particle kinetic energies:

import ParticleRigidityCalculationTools as PRCT

particleKineticEnergyInMeV = [250.0, 578.5, 1056.8, 5123.9]

and then running

PRCT.convertParticleEnergyToRigidity(particleKineticEnergyInMeV, particleMassAU = 1.0, particleChargeAU = 1.0)

will give the corresponding rigidities for a proton with kinetic energies of 250.0 MeV, 578.5 MeV, 1056.8 MeV and 5123.9 MeV respectively:

0    0.729134
1    1.191740
2    1.760670
3    5.989121

note that the output to this function, as with all rigidity calculation functions in this module is a Pandas Series.

To perform the opposite calculation, calculating kinetic energies from a list of rigidities, you can use the convertParticleRigidityToEnergy function, which uses exactly the same input format but using input rigidities instead of energies. Using the output from the previous function:

outputtedRigiditiesSeries = PRCT.convertParticleEnergyToRigidity(particleKineticEnergyInMeV, particleMassAU = 1.0, particleChargeAU = 1.0)

we can get back the original set of proton kinetic energies with

PRCT.convertParticleRigidityToEnergy(outputtedRigiditiesSeries,particleMassAU=1.0,particleChargeAU=1.0)

which returns

0     250.0
1     578.5
2    1056.8
3    5123.9

as a Pandas Series.

When not using protons, you can either directly input the particle mass from tabulated values or use the getAtomicMass function to get tabulated average mass values for a particle with a particular atomic number. For instance, for an alpha particle/helium ion:

alphaParticleAtomicNumber = 2

PRCT.getAtomicMass(alphaParticleAtomicNumber)

returns

4.0

The particle charge for all functions in this module is identical to the particle atomic number.

Spectrum Conversion Functions

A user might not necessarily want to just convert individual numbers between units of rigidity and energy, they might also want to convert a kinetic energy distribution or rigidity distribution. This might usually be expressed in the form of $\frac{dN}{dE}$ or $\frac{dN}{dR}$, where E and R are particle kinetic energy and rigidity respectively, and where both quantities are expressed in terms of kinetic energy and rigidity respectively. As there is a one-to-one relationship between kinetic energy and rigidity, it is possible to analytically convert between these two quantities using $\frac{dN}{dR} = \frac{dN}{dE} \times \frac{dE}{dR}$, where $\frac{dR}{dE}$ can be calculated using the definition of the magnetic rigidity of a particle.

Tools are available in this module to perform all of this process automatically. The function convertParticleEnergySpecToRigiditySpec can be used to convert kinetic energy distributions into rigidity distributions, for example:

energyValuesInMeV = [1000,2000,3000,4000,5000]
energyDistributionValues = [1,0.5,0.2,0.1,0.01]

PRCT.convertParticleEnergySpecToRigiditySpec(energyValuesInMeV,energyDistributionValues,particleMassAU = 1.0,particleChargeAU = 1.0)

returns

   Rigidity  Rigidity distribution values
0  1.696038                    875.025647
1  2.784437                    473.822152
2  3.824870                    194.241037
3  4.848317                     98.178407
4  5.863678                      9.874384

as a Pandas DataFrame.

The function convertParticleRigiditySpecToEnergySpec can be used to perform the opposite operation, converting particle rigidity to kinetic energy. For example,

rigiditySpec = PRCT.convertParticleEnergySpecToRigiditySpec(energyValuesInMeV,energyDistributionValues,particleMassAU = 1,particleChargeAU = 1)

PRCT.convertParticleRigiditySpecToEnergySpec(rigiditySpec["Rigidity"],rigiditySpec["Rigidity distribution values"],particleMassAU = 1,particleChargeAU = 1)

returns

   Energy  Energy distribution values
0  1000.0                        1.00
1  2000.0                        0.50
2  3000.0                        0.20
3  4000.0                        0.10
4  5000.0                        0.01

the original kinetic energies and distribution values that were used for the energy distribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ParticleRigidityCalculationTools-1.5.2.tar.gz (5.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file ParticleRigidityCalculationTools-1.5.2.tar.gz.

File metadata

File hashes

Hashes for ParticleRigidityCalculationTools-1.5.2.tar.gz
Algorithm Hash digest
SHA256 efce9e8bff8377a4379662011451d62ee5cb70dfb6672248aba23017f2ad602b
MD5 701fcb702c2cab9b8d193ef0787a6d3a
BLAKE2b-256 b90f0d68c1ccd105acb9e79d7d3c622503cbda8c326056fa0b67742fd448f6c9

See more details on using hashes here.

File details

Details for the file ParticleRigidityCalculationTools-1.5.2-py3.8.egg.

File metadata

File hashes

Hashes for ParticleRigidityCalculationTools-1.5.2-py3.8.egg
Algorithm Hash digest
SHA256 161e039159e529941cb4059685174fef3590d2a8c16ea09c0c797268f01760a7
MD5 03128d25102a138579454e34cbbef85e
BLAKE2b-256 dd5cae9c72ad0b2e1abe533a16d6c8f0252fe131ce9e4d5d6f0d4318101d92c0

See more details on using hashes here.

File details

Details for the file ParticleRigidityCalculationTools-1.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ParticleRigidityCalculationTools-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7e48962511f1d61e913ecdd4d2c49bc8b4fa1da221bfa8ab784806b7b37438f7
MD5 99449b202fb23460aa62c9dec1c600cb
BLAKE2b-256 9f57c08cafce11b1b94d34524f2457287b192f8745a06b75aa304515bef15b18

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page