18 #ifndef CLASSIC_TravelingWave_HH
19 #define CLASSIC_TravelingWave_HH
48 virtual double getPhase()
const override = 0;
50 virtual void setPhasem(
double phase)
override;
56 virtual double getAutoPhaseEstimate(
const double& E0,
const double& t0,
const double& q,
const double& m)
override;
68 virtual bool bends()
const override;
70 virtual void goOnline(
const double& kineticEnergy)
override;
76 virtual void getDimensions(
double& zBegin,
double& zEnd)
const override;
81 double&
end)
const override;
103 inline double getdE(
const int& i,
105 const std::vector<double>& t,
107 const std::vector<std::pair<double, double> >& F)
const;
109 inline double getdT(
const int& i,
111 const std::vector<double>& E,
112 const std::vector<std::pair<double, double> >& F,
113 const double mass)
const;
115 inline double getdA(
const int& i,
117 const std::vector<double>& t,
119 const std::vector<std::pair<double, double> >& F)
const;
121 inline double getdB(
const int& i,
123 const std::vector<double>& t,
125 const std::vector<std::pair<double, double> >& F)
const;
132 const std::vector<double>& t,
134 const std::vector<std::pair<double, double> >& F)
const {
142 const std::vector<double>& E,
143 const std::vector<std::pair<double, double> >& F,
144 const double mass)
const {
145 double gamma1 = 1. + (19. * E[i-1] + 1. * E[i]) / (20. * mass);
146 double gamma2 = 1. + (17. * E[i-1] + 3. * E[i]) / (20. * mass);
147 double gamma3 = 1. + (15. * E[i-1] + 5. * E[i]) / (20. * mass);
148 double gamma4 = 1. + (13. * E[i-1] + 7. * E[i]) / (20. * mass);
149 double gamma5 = 1. + (11. * E[i-1] + 9. * E[i]) / (20. * mass);
150 double gamma6 = 1. + (9. * E[i-1] + 11. * E[i]) / (20. * mass);
151 double gamma7 = 1. + (7. * E[i-1] + 13. * E[i]) / (20. * mass);
152 double gamma8 = 1. + (5. * E[i-1] + 15. * E[i]) / (20. * mass);
153 double gamma9 = 1. + (3. * E[i-1] + 17. * E[i]) / (20. * mass);
154 double gamma10 = 1. + (1. * E[i-1] + 19. * E[i]) / (20. * mass);
155 return (F[I].first - F[I-1].first) *
156 (1. /
std::sqrt(1. - 1. / (gamma1 * gamma1)) +
157 1. /
std::sqrt(1. - 1. / (gamma2 * gamma2)) +
158 1. /
std::sqrt(1. - 1. / (gamma3 * gamma3)) +
159 1. /
std::sqrt(1. - 1. / (gamma4 * gamma4)) +
160 1. /
std::sqrt(1. - 1. / (gamma5 * gamma5)) +
161 1. /
std::sqrt(1. - 1. / (gamma6 * gamma6)) +
162 1. /
std::sqrt(1. - 1. / (gamma7 * gamma7)) +
163 1. /
std::sqrt(1. - 1. / (gamma8 * gamma8)) +
164 1. /
std::sqrt(1. - 1. / (gamma9 * gamma9)) +
170 const std::vector<double>& t,
172 const std::vector<std::pair<double, double> >& F)
const {
173 double dt = t[i] - t[i-1];
181 const std::vector<double>& t,
183 const std::vector<std::pair<double, double> >& F)
const {
184 double dt = t[i] - t[i-1];
222 #endif // CLASSIC_TravelingWave_HH
Tps< T > sqrt(const Tps< T > &x)
Square root.
constexpr double c
The velocity of light in m/s.
void setNumCells(int NumCells)
constexpr double two_pi
The value of .
double getdA(const int &i, const int &I, const std::vector< double > &t, const double &phi, const std::vector< std::pair< double, double > > &F) const
virtual void goOffline() override
Vektor< double, 3 > Vector_t
virtual void goOnline(const double &kineticEnergy) override
virtual CoordinateSystemTrafo getEdgeToEnd() const override
virtual double getFrequency() const override=0
Get RF frequency.
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
virtual bool bends() const override
virtual ElementType getType() const override
Get element type std::string.
double getdT(const int &i, const int &I, const std::vector< double > &E, const std::vector< std::pair< double, double > > &F, const double mass) const
clearpage the user may choose between constant or variable radius This model includes fringe fields begin
constexpr double pi
The value of .
double mappedStartExitField_m
virtual double getAutoPhaseEstimate(const double &E0, const double &t0, const double &q, const double &m) override
virtual CoordinateSystemTrafo getEdgeToBegin() const override
virtual bool isInside(const Vector_t &r) const override
virtual void getDimensions(double &zBegin, double &zEnd) const override
virtual double getPhase() const override=0
Get RF phase.
virtual double getAmplitude() const override=0
Get RF amplitude.
virtual void setPhasem(double phase) override
if write to the Free Software Temple MA USA Also add information on how to contact you by electronic and paper mail If the program is make it output a short notice like this when it starts in an interactive mode
virtual void finalise() override
virtual void accept(BeamlineVisitor &) const override
Apply visitor to TravelingWave.
Tps< T > cos(const Tps< T > &x)
Cosine.
virtual double getElementLength() const override
Get design length.
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
virtual void getElementDimensions(double &begin, double &end) const override
Tps< T > sin(const Tps< T > &x)
Sine.
void setMode(double mode)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
double getdB(const int &i, const int &I, const std::vector< double > &t, const double &phi, const std::vector< std::pair< double, double > > &F) const
double getdE(const int &i, const int &I, const std::vector< double > &t, const double &phi, const std::vector< std::pair< double, double > > &F) const
void operator=(const TravelingWave &)