10#ifndef IMPACTX_ELEMENTS_MIXIN_ALIGNMENT_H
11#define IMPACTX_ELEMENTS_MIXIN_ALIGNMENT_H
79 template<
typename T_Real>
89 T_Real
const xc = x -
m_dx;
90 T_Real
const yc = y -
m_dy;
95 T_Real
const pxc = px;
96 T_Real
const pyc = py;
108 template<
typename T_Real>
115 T_Real
const sxc = sx;
116 T_Real
const syc = sy;
130 template<
typename T_Real>
148 T_Real
const pxc = px;
149 T_Real
const pyc = py;
161 template<
typename T_Real>
168 T_Real
const sxc = sx;
169 T_Real
const syc = sy;
242 A(1, 1) = cos_rotation; A(1, 3) = -sin_rotation;
243 A(3, 1) = sin_rotation; A(3, 3) = cos_rotation;
244 A(2, 2) = cos_rotation; A(2, 4) = -sin_rotation;
245 A(4, 2) = sin_rotation; A(4, 4) = cos_rotation;
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex_particle_real ParticleReal
__host__ __device__ std::pair< double, double > sincos(double x)
Definition alignment.H:25
amrex::SmallMatrix< amrex::ParticleReal, 6, 6, amrex::Order::F, 1 > Map6x6
Definition CovarianceMatrix.H:20
static constexpr __host__ __device__ SmallMatrix< T, NRows, NCols, ORDER, StartIndex > Identity() noexcept
__host__ __device__ SmallMatrix< T, NCols, NRows, ORDER, StartIndex > transpose() const
Definition ReferenceParticle.H:33
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void rotate_out(T_Real &AMREX_RESTRICT sx, T_Real &AMREX_RESTRICT sy) const
Definition alignment.H:163
amrex::ParticleReal m_dy
horizontal translation error [m]
Definition alignment.H:271
Alignment(Alignment &&)=default
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void rotate_in(T_Real &AMREX_RESTRICT sx, T_Real &AMREX_RESTRICT sy) const
Definition alignment.H:110
amrex::ParticleReal m_sin_rotation
rotation error in the transverse plane [rad]
Definition alignment.H:277
amrex::ParticleReal m_cos_rotation
std::sin(m_rotation)
Definition alignment.H:278
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void shift_out(T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_Real &AMREX_RESTRICT px, T_Real &AMREX_RESTRICT py) const
Definition alignment.H:132
void compute_constants(RefPart const &refpart)
Definition alignment.H:63
amrex::ParticleReal m_rotation
vertical translation error [m]
Definition alignment.H:272
static constexpr amrex::ParticleReal degree2rad
Definition alignment.H:30
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dy() const
Definition alignment.H:189
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal rotation() const
Definition alignment.H:199
amrex::ParticleReal m_dx
Definition alignment.H:270
Alignment(Alignment const &)=default
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dx() const
Definition alignment.H:179
AMREX_GPU_HOST AMREX_FORCE_INLINE Map6x6 rotate_aligned_map(Map6x6 const &R) const
Definition alignment.H:263
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool misaligned() const
Definition alignment.H:214
Alignment(amrex::ParticleReal dx, amrex::ParticleReal dy, amrex::ParticleReal rotation_degree)
Definition alignment.H:39
AMREX_GPU_HOST AMREX_FORCE_INLINE Map6x6 rotation_map() const
Definition alignment.H:237
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void shift_in(T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_Real &AMREX_RESTRICT px, T_Real &AMREX_RESTRICT py) const
Definition alignment.H:81
Alignment & operator=(Alignment const &)=default