10#ifndef IMPACTX_REFERENCE_PARTICLE_H
11#define IMPACTX_REFERENCE_PARTICLE_H
69 reset (
bool keep_mass=
false,
bool keep_charge=
false)
77 if (keep_mass) {
mass = old_mass; }
78 if (keep_charge) {
charge = old_charge; }
100 if (species_name ==
"electron") {
102 massE = m_e / MeV_inv_c2;
103 g_anomaly = 0.00115965218062;
104 }
else if (species_name ==
"positron") {
106 massE = m_e / MeV_inv_c2;
107 g_anomaly = 0.00115965218062;
108 }
else if (species_name ==
"proton") {
110 massE = m_p / MeV_inv_c2;
111 g_anomaly = 1.7928473446;
112 }
else if (species_name ==
"Hminus") {
114 massE = (m_p + 2.0 * m_e) / MeV_inv_c2;
115 g_anomaly = 1.7928473446;
119 throw std::runtime_error(
120 "Unknown species: '" + species_name +
121 "'. Known species: electron, positron, proton, Hminus. "
122 "For other species, set charge, mass, and gyromagnetic anomaly "
123 "individually via set_charge_qe(), set_mass_MeV(), and "
124 "set_gyromagnetic_anomaly()."
175 return ref_betagamma;
204 "set_mass_MeV: Mass cannot be zero!");
212 pz = std::sqrt(powi<2>(
pt) - 1.0_prt);
230 return ref_kin_energy;
245 "set_kin_energy_MeV: Set mass first!");
250 pz = std::sqrt(powi<2>(
pt) - 1.0_prt);
323 this->gyromagnetic_anomaly = gyromagnetic_anomaly_ref;
#define AMREX_ASSERT_WITH_MESSAGE(EX, MSG)
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex_particle_real ParticleReal
constexpr auto MeV_inv_c2_v
constexpr T powi(T x) noexcept
Definition CovarianceMatrixMath.H:25
Definition ReferenceParticle.H:33
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal qm_ratio_SI() const
Definition ReferenceParticle.H:307
amrex::ParticleReal px
momentum in x divided by m*c = beta_x*gamma [unitless]
Definition ReferenceParticle.H:39
amrex::ParticleReal y
vertical position y, in meters
Definition ReferenceParticle.H:36
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal beta_gamma() const
Definition ReferenceParticle.H:168
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_mass_MeV(amrex::ParticleReal const massE)
Definition ReferenceParticle.H:198
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal kin_energy_MeV() const
Definition ReferenceParticle.H:224
amrex::ParticleReal pt
energy, normalized by rest energy
Definition ReferenceParticle.H:42
amrex::ParticleReal py
momentum in y divided by m*c = beta_y*gamma [unitless]
Definition ReferenceParticle.H:40
amrex::SmallMatrix< amrex::ParticleReal, 6, 6, amrex::Order::F, 1 > map
linearized map
Definition ReferenceParticle.H:48
amrex::ParticleReal charge
reference charge, in C
Definition ReferenceParticle.H:44
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal rigidity_Tm() const
Definition ReferenceParticle.H:261
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_kin_energy_MeV(amrex::ParticleReal const kin_energy)
Definition ReferenceParticle.H:239
amrex::ParticleReal s
integrated orbit path length, in meters
Definition ReferenceParticle.H:34
amrex::ParticleReal z
longitudinal position z, in meters
Definition ReferenceParticle.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_gyromagnetic_anomaly(amrex::ParticleReal const gyromagnetic_anomaly_ref)
Definition ReferenceParticle.H:319
amrex::SmallMatrix< amrex::ParticleReal, 3, 6, amrex::Order::F, 1 > spin_coupling
linearized spin-orbit coupling matrix
Definition ReferenceParticle.H:49
amrex::ParticleReal pz
momentum in z divided by m*c = beta_z*gamma [unitless]
Definition ReferenceParticle.H:41
amrex::ParticleReal gyromagnetic_anomaly
anomalous magnetic moment [unitless]
Definition ReferenceParticle.H:45
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal mass_MeV() const
Definition ReferenceParticle.H:184
RefPart & set_species(std::string const &species_name)
Definition ReferenceParticle.H:89
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_charge_qe(amrex::ParticleReal const charge_qe)
Definition ReferenceParticle.H:292
amrex::SmallMatrix< amrex::ParticleReal, 3, 1, amrex::Order::F, 1 > spin_rotation_vector
reference spin rotation vector
Definition ReferenceParticle.H:50
amrex::ParticleReal mass
reference rest mass, in kg
Definition ReferenceParticle.H:43
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal charge_qe() const
Definition ReferenceParticle.H:278
amrex::ParticleReal x
horizontal position x, in meters
Definition ReferenceParticle.H:35
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal beta() const
Definition ReferenceParticle.H:152
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal gamma() const
Definition ReferenceParticle.H:140
amrex::ParticleReal t
clock time * c in meters
Definition ReferenceParticle.H:38
void reset(bool keep_mass=false, bool keep_charge=false)
Definition ReferenceParticle.H:69
amrex::ParticleReal sedge
value of s at entrance of the current beamline element
Definition ReferenceParticle.H:47
RefPart copy() const
Definition ReferenceParticle.H:58