77 *
gmsg <<
"passed R, P, t, E, B arguments not used in PluginElement::apply" << endl;
92 rstart_m = std::hypot(xstart, ystart);
93 rend_m = std::hypot(xend, yend);
107 double x_close = 0.0;
123 double coeff2 = std::sqrt(1 + slope * slope);
124 double coeff1 = slope / coeff2;
125 double halfdist = dist / 2.0;
145 PartBunch_t* bunch,
int i,
const double tstep,
const double tangle) {
148 const double tmp = std::sqrt(
dot(bunch->
P(i), bunch->
P(i)));
150 double sWidth = lstep / std::sqrt(1 + 1 / tangle / tangle);
155 double k1, k2, tangle = 0.0;
156 if (
B_m == 0.0 && xp == 0.0) {
159 }
else if (
B_m == 0.0) {
164 tangle = std::abs(1 / k1);
165 }
else if (xp == 0.0) {
170 tangle = std::abs(1 / k2);
174 tangle = std::abs((k1 - k2) / (1 + k1 * k2));
188 PartBunch_t* bunch,
const int turnnumber,
const double t,
const double tstep) {
193 if (bunchClose ==
true) {
194 flag =
doCheck(bunch, turnnumber, t, tstep);
209 for (
int i = 0; i < 4; i++) {
ippl::Vector< T, Dim > Vector_t
Template PIC bunch: IPPL PicManager, shared field mesh/solver, and multiple particle containers.
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
virtual void goOnline(const double &kineticEnergy)
PartBunch_t * RefPartBunch_m
std::string getOutputFN() const
Get output filename.
OpenMode getOpenMode() const
static OpalData * getInstance()
OpenMode
Enum for writing to files.
Vector_t< double, Dim > P(size_t)
Do not use; throws (access momenta via ParticleContainer::P).
int checkPoint(const double &x, const double &y) const
Checks if coordinate is within element.
void setGeom(const double dist)
Sets geometry geom_m with element width dist.
virtual void getFieldExtend(double &zBegin, double &zEnd) const override
Return the field-support extent of the component.
virtual bool bends() const override
double C_m
Geometric lengths used in calculations.
virtual bool apply(const std::shared_ptr< ParticleContainer_t > &pc) override
void changeWidth(PartBunch_t *bunch, int i, const double tstep, const double tangle)
Change probe width depending on step size and angle of particle.
virtual void finalise() final
virtual void doSetGeom()
Virtual hook for setGeom.
virtual void doGoOffline()
Virtual hook for goOffline.
int numPassages_m
Number of turns (number of times save() method is called)
virtual bool doCheck(PartBunch_t *bunch, const int turnnumber, const double t, const double tstep)=0
Pure virtual hook for check.
virtual void doInitialise(PartBunch_t *)
Pure virtual hook for initialise.
bool finaliseCheck(PartBunch_t *bunch, bool flagNeedUpdate)
Finalise call after check.
virtual void doFinalise()
Virtual hook for finalise.
virtual void goOffline() final
bool preCheck(PartBunch_t *bunch)
Check if bunch is close to element.
double calculateIncidentAngle(double xp, double yp) const
Calculate angle of particle/bunch wrt to element.
double xstart_m
input geometry positions
virtual void initialise(PartBunch_t *bunch, double &startField, double &endField) override
Pure virtual implementation of Component.
void setDimensions(double xstart, double xend, double ystart, double yend)
Set dimensions and consistency checks.
std::unique_ptr< LossDataSink > lossDs_m
Pointer to Loss instance.
double getXStart() const
Member variable access.
bool check(PartBunch_t *bunch, const int turnnumber, const double t, const double tstep)
double rmin_m
radius closest to the origin
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) override
Apply to reference particle with position R and momemtum P.
constexpr double c
The velocity of light in m/s.
double getGamma(ippl::Vector< double, 3 > p)