4 #include <boost/numeric/ublas/matrix.hpp>
12 # define PS_Dim MomentState::maxsize // Set to 7; to include orbit.
39 const double Stripper_IonZ = 78.0/238.0,
40 Stripper_IonMass = 238.0,
41 Stripper_IonProton = 92.0,
43 Stripper_Para[] = {3.0, 20.0, 16.623e6},
45 Stripper_E0Para[] = {16.348e6, 1.00547, -0.10681},
47 Stripper_E1Para = 2.8874e-3,
49 Stripper_lambda = 5.5740,
51 Stripper_upara = 2.6903;
57 typedef ElementStripper self_t;
59 typedef typename base_t::state_t
state_t;
60 ElementStripper(
const Config& c)
66 const std::vector<double>& ChgState = c.
get<std::vector<double> >(
"IonChargeStates");
67 const std::vector<double>& NChg = c.
get<std::vector<double> >(
"NCharge");
68 if(ChgState.size()!=NChg.size())
69 throw std::runtime_error(
"charge stripper requires that IonChargeStates[] and NCharge[] have the same length");
71 virtual ~ElementStripper() {}
77 virtual const char*
type_name()
const {
return "stripper";}
81 void Stripper_GetMat(
const Config &conf,
85 #endif // CHG_STRIPPER_H
Base class for all simulated elements.
double length
Longitudual length of this element (added to StateBase::pos)
virtual const char * type_name() const =0
The abstract base class for all simulation state objects.
virtual void advance(StateBase &s)
Propogate the given State through this Element.
Associative configuration container.
virtual void assign(const ElementVoid *other)=0
detail::RT< T >::type get(const std::string &name) const
An Element which propagates the statistical moments of a bunch.