19#ifndef CLASSIC_ABSBEAMLINE_VariableRFCavity_HH
20#define CLASSIC_ABSBEAMLINE_VariableRFCavity_HH
76 virtual bool apply(
const size_t& i,
const double& t,
119 virtual bool bends()
const override {
return false;}
146 virtual inline double getPhase(
double time)
const;
151 virtual inline double getWidth()
const;
155 virtual inline void setHeight(
double fullHeight);
157 virtual inline void setWidth(
double fullWidth);
164 virtual std::shared_ptr<AbstractTimeDependence>
getPhaseModel()
const;
169 virtual void setAmplitudeModel(std::shared_ptr<AbstractTimeDependence> time_dep);
171 virtual void setPhaseModel(std::shared_ptr<AbstractTimeDependence> time_dep);
173 virtual void setFrequencyModel(std::shared_ptr<AbstractTimeDependence> time_dep);
Interface for a single beam element.
Generates a field like E = a(t) * sin{2*pi * integral(f(tau),0,t) + q(t)} B = 0 where E0,...
std::shared_ptr< AbstractTimeDependence > frequencyTD_m
void initialise() const
Lookup the time dependencies and update.
StraightGeometry geometry
The cavity's geometry.
virtual void setHeight(double fullHeight)
Set the full height of the cavity.
virtual double getAmplitude(double time) const
Get the amplitude at a given time.
virtual void finalise() override
Finalise following tracking.
std::string amplitudeName_m
virtual void getDimensions(double &, double &) const override
Not used (does nothing)
virtual void setPhaseName(const std::string &phase)
Set the phase time dependence name.
virtual double getFrequency(double time) const
Get the frequency at a given time.
std::string frequencyName_m
virtual bool bends() const override
virtual double getWidth() const
virtual std::shared_ptr< AbstractTimeDependence > getFrequencyModel() const
VariableRFCavity()
Default constructor.
virtual double getLength() const
virtual void setAmplitudeName(const std::string &litude)
Set the amplitude time dependence name.
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
Calculate the field at the position of the i^th particle.
virtual void setPhaseModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Set the phase time dependence.
virtual ~VariableRFCavity()
Destructor does nothing.
virtual std::shared_ptr< AbstractTimeDependence > getAmplitudeModel() const
TimeDependenceCache frequencyCache_m
virtual double getHeight() const
virtual void setFrequencyModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Set the frequency time dependence.
virtual void setLength(double length)
Set the length of the cavity.
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
Calculate the field at a given position.
std::shared_ptr< AbstractTimeDependence > amplitudeTD_m
virtual double getPhase(double time) const
Get the phase at a given time.
virtual void accept(BeamlineVisitor &) const override
Apply visitor to RFCavity.
virtual void setFrequencyName(const std::string &frequency)
Set the frequency time dependence name.
virtual void setWidth(double fullWidth)
Set the full width of the cavity.
virtual std::shared_ptr< AbstractTimeDependence > getPhaseModel() const
virtual ElementBase * clone() const override
Inheritable deepcopy method.
virtual EMField & getField() override
Not implemented.
std::shared_ptr< AbstractTimeDependence > phaseTD_m
virtual StraightGeometry & getGeometry() override
Set the cavity geometry.
VariableRFCavity & operator=(const VariableRFCavity &)
Assignment operator; performs deepcopy on time-dependence models.
virtual void setAmplitudeModel(std::shared_ptr< AbstractTimeDependence > time_dep)
Set the amplitude (field gradient) time dependence.
A geometry representing a straight line.
Abstract base class for electromagnetic fields.