15#include "Utility/Inform.h"
24 :
ElementBase(right), exit_face_slope_m(right.exit_face_slope_m), online_m(right.online_m) {}
27 :
ElementBase(name), exit_face_slope_m(0.0), RefPartBunch_m(nullptr), online_m(false) {
36 throw LogicalError(
"Component::trackBunch()",
"Called for component \"" +
getName() +
"\".");
78 *
gmsg <<
"not implemented:: file: " << __FILE__ <<
" line: " << __LINE__
79 <<
" function: " << __func__ << endl;
Defines the abstract interface for a single beamline component in the accelerator model.
ippl::Vector< T, Dim > Vector_t
virtual ElementType getType() const
Get element type std::string.
virtual bool applyToReferenceParticle(const Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B)
Apply to reference particle with position R and momemtum P.
virtual void trackBunch(PartBunch_t &bunch, const PartData &, bool revBeam, bool revTrack) const
Track a borrowed particle bunch through a non-standard component.
virtual void goOnline(const double &kineticEnergy)
virtual void trackMap(FVps< double, 6 > &map, const PartData &, bool revBeam, bool revTrack) const
Track a map.
static const std::vector< double > defaultAperture_m
virtual const ElementBase & getDesign() const
Return design element.
virtual bool apply(const std::shared_ptr< ParticleContainer_t > &pc)
Apply to all particles. Kernel launch moved inside the function.
virtual const std::string & getName() const
Get element name.
void setAperture(const ApertureType &type, const std::vector< double > &args)
virtual double getElementLength() const
Get design length.
bool isInsideTransverse(const Vector_t< double, 3 > &r) const