9 #include <boost/numeric/ublas/matrix.hpp>
10 #include <boost/numeric/ublas/io.hpp>
14 #include "constants.h"
17 # define SampleFreqDefault 80.5e6
42 = std::numeric_limits<double>::quiet_NaN();
59 std::ostream& operator<<(std::ostream&,
const Particle&);
92 PS_X, PS_PX, PS_Y, PS_PY, PS_S, PS_PS,
99 typedef boost::numeric::ublas::vector<double,
100 boost::numeric::ublas::bounded_array<double, maxsize>
103 typedef boost::numeric::ublas::matrix<double,
104 boost::numeric::ublas::row_major,
105 boost::numeric::ublas::bounded_array<double, maxsize*maxsize>
110 virtual void show(std::ostream& strm,
int level)
const;
115 std::vector<Particle> real;
116 std::vector<vector_t> moment0;
117 std::vector<matrix_t> moment1;
118 std::vector<matrix_t> transmat;
120 vector_t moment0_env, moment0_rms;
121 matrix_t moment1_env;
123 double last_caviphi0;
133 for(
size_t i=0; i<real.size(); i++) real[i].recalc();
138 inline size_t size()
const {
return real.size(); }
150 typedef state_t::matrix_t value_t;
155 void get_misalign(
const state_t& ST,
const Particle& real, value_t& M, value_t& IM)
const;
157 unsigned get_flag(
const Config& c,
const std::string&
name,
const unsigned& def_value);
176 virtual void show(std::ostream& strm,
int level)
const;
179 std::vector<Particle> last_real_in, last_real_out;
182 std::vector<value_t> misalign, misalign_inv;
185 double dx, dy, pitch, yaw, roll;
195 state_t::matrix_t scratch;
198 #endif // FLAME_MOMENT_H
double gamma
Gamma for ion. (dependent)
virtual bool check_cache(const state_t &S) const
virtual bool getArray(unsigned idx, ArrayInfo &Info)
Introspect named parameter of the derived class.
Base class for all simulated elements.
double IonW
Total energy. (dependent)
double IonEk
Kinetic energy.
virtual void show(std::ostream &strm, int level) const
The abstract base class for all simulation state objects.
virtual void advance(StateBase &s)
Propogate the given State through this Element.
double phis
Absolute synchrotron phase [rad].
virtual bool check_backward(const state_t &S) const
Check input state for backward propagation.
double SampleFreq
Sampling frequency [Hz].
Associative configuration container.
virtual void recompute_matrix(state_t &ST)
recalculate 'transfer' taking into consideration the provided input state
Used with StateBase::getArray() to describe a single parameter.
virtual void assign(const ElementVoid *other)=0
virtual void assign(const StateBase &other)
const std::string name
Name of this element (unique in its Machine)
double dx
constituents of misalign
double Brho() const
Magnetic rigidity.
bool skipcache
If set, check_cache() will always return false.
size_t size() const
of charge states
std::vector< value_t > transfer
final transfer matricies
double beta
Beta for ion. (dependent)
double bg
Beta*gamma. (dependent)
virtual void show(std::ostream &strm, int level) const
virtual MomentState * clone() const
double SampleIonK
Sample rate; different RF Cavity due to RF frequenies. (dependent)
void resize_cache(const state_t &ST)
An Element which propagates the statistical moments of a bunch.
double SampleLambda
Sampling distance [m].