1 #ifndef CLASSIC_PluginElement_HH
2 #define CLASSIC_PluginElement_HH
8 template <
class T,
unsigned Dim>
34 virtual bool bends()
const override;
35 virtual void getDimensions(
double &zBegin,
double &zEnd)
const override;
38 virtual bool apply(
const size_t &i,
56 void setDimensions(
double xstart,
double xend,
double ystart,
double yend);
67 int checkPoint(
const double & x,
const double & y)
const;
73 void setGeom(
const double dist);
119 #endif // CLASSIC_PluginElement_HH
bool preCheck(PartBunchBase< double, 3 > *bunch)
Check if bunch is close to element.
double getXStart() const
Member variable access.
void operator=(const PluginElement &)=delete
bool finaliseCheck(PartBunchBase< double, 3 > *bunch, bool flagNeedUpdate)
Finalise call after check.
double calculateIncidentAngle(double xp, double yp) const
Calculate angle of particle/bunch wrt to element.
virtual void doGoOffline()
Virtual hook for goOffline.
Point geom_m[5]
actual geometry positions with adaptive width such that each particle hits element once per turn ...
virtual void finalise() final
double C_m
Geometric lengths used in calculations.
virtual bool doFinaliseCheck(PartBunchBase< double, 3 > *, bool flagNeedUpdate)
Virtual hook for finaliseCheck.
std::unique_ptr< LossDataSink > lossDs_m
Pointer to Loss instance.
virtual void goOffline() final
double rmin_m
radius closest to the origin
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
void changeWidth(PartBunchBase< double, 3 > *bunch, int i, const double tstep, const double tangle)
Change probe width depending on step size and angle of particle.
int numPassages_m
Number of turns (number of times save() method is called)
double xstart_m
input geometry positions
virtual bool bends() const override
virtual bool doPreCheck(PartBunchBase< double, 3 > *)
Virtual hook for preCheck.
std::string getOutputFN() const
Get output filename.
void setGeom(const double dist)
Sets geometry geom_m with element width dist.
virtual void doSetGeom()
Virtual hook for setGeom.
virtual void doInitialise(PartBunchBase< double, 3 > *bunch)
Pure virtual hook for initialise.
Interface for a single beam element.
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
Pure virtual implementation of Component.
void setOutputFN(std::string fn)
Set output filename.
virtual bool doCheck(PartBunchBase< double, 3 > *bunch, const int turnnumber, const double t, const double tstep)=0
Pure virtual hook for check.
int checkPoint(const double &x, const double &y) const
Checks if coordinate is within element.
bool check(PartBunchBase< double, 3 > *bunch, const int turnnumber, const double t, const double tstep)
virtual void getDimensions(double &zBegin, double &zEnd) const override
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
virtual void doFinalise()
Virtual hook for finalise.
void setDimensions(double xstart, double xend, double ystart, double yend)
Set dimensions and consistency checks.