15#ifndef ABSBEAMLINE_VerticalFFAMagnet_H
16#define ABSBEAMLINE_VerticalFFAMagnet_H
51 inline bool apply(
const std::shared_ptr<ParticleContainer_t>& pc);
101 inline bool bends()
const {
return false; }
211 const double mm = 1000.;
227 std::shared_ptr<ParticleContainer_t> pc =
RefPartBunch_m->getParticleContainer();
228 auto Rview = pc->
R.getView();
229 auto Pview = pc->P.getView();
232 return apply(R, P, t, E, B);
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
Template PIC bunch: IPPL PicManager, shared field mesh/solver, and multiple particle containers.
Abstract base class for accelerator geometry classes.
The magnetic field of a multipole.
PartBunch_t * RefPartBunch_m
Abstract base class for electromagnetic fields.
Vector_t< double, Dim > R(size_t)
Do not use; throws (access positions via ParticleContainer::R).
A geometry representing a straight line.
void setBBLength(double bbLength)
ElementBase * clone() const
endfieldmodel::EndFieldModel * getEndField() const
void accept(BeamlineVisitor &visitor) const
VerticalFFAMagnet & operator=(const VerticalFFAMagnet &rhs)
void setWidth(double width)
double getFieldIndex() const
size_t getMaxOrder() const
std::vector< std::vector< double > > getDfCoefficients() const
std::unique_ptr< endfieldmodel::EndFieldModel > endField_m
void calculateDfCoefficients()
BGeometryBase & getGeometry()
void setMaxOrder(size_t maxOrder)
std::vector< std::vector< double > > dfCoefficients_m
double getPositiveVerticalExtent() const
double getNegativeVerticalExtent() const
StraightGeometry straightGeometry_m
double getBBLength() const
void getFieldExtend(double &, double &) const
void setNegativeVerticalExtent(double negativeExtent)
void setFieldIndex(double index)
bool getFieldValue(const Vector_t< double, 3 > &R, Vector_t< double, 3 > &B) const
void setEndField(endfieldmodel::EndFieldModel *endField)
void setPositiveVerticalExtent(double positiveExtent)
bool apply(const std::shared_ptr< ParticleContainer_t > &pc)