34 : component_m(nullptr),
35 componentPosition_m(0.),
36 componentOrientation_m(0.),
38 startOrientation_m(0.),
40 endOrientation_m(0.) {}
43 : component_m(nullptr),
44 componentPosition_m(0.),
45 componentOrientation_m(0.),
47 startOrientation_m(0.),
49 endOrientation_m(0.) {
83 return normProd >= 0. && posProd >= 0.;
94 return normProd > 0. && posProd > 0.;
126 double startRadius = 0.99
129 double endRadius = 0.99
132 std::vector<Vector_t<double, 3>> bb;
158 for (
size_t i = 0; i < virtualBB.size(); ++i) {
166 bool hasBefore =
false;
167 bool hasAfter =
false;
168 for (
size_t i = 0; i < virtualBB.size(); ++i) {
170 hasAfter = hasAfter || phiVirtualORS.
isPastEndPlane(virtualBB[i]);
173 if (hasBefore && hasAfter)
return true;
ippl::Vector< T, Dim > Vector_t
virtual bool apply(const std::shared_ptr< ParticleContainer_t > &pc)
Apply to all particles. Kernel launch moved inside the function.
virtual ElementBase * clone() const =0
Return clone.
Component placement handler in ring geometry.
Vector_t< double, 3 > getStartPosition() const
RingSection & operator=(const RingSection &sec)
Vector_t< double, 3 > componentOrientation_m
void rotateToCyclCoordinates(Vector_t< double, 3 > &vec) const
void setEndPosition(Vector_t< double, 3 > pos)
Vector_t< double, 3 > getEndPosition() const
bool getFieldValue(const Vector_t< double, 3 > &pos, const Vector_t< double, 3 > ¢roid, const double &t, Vector_t< double, 3 > &E, Vector_t< double, 3 > &B) const
Vector_t< double, 3 > & normalise(Vector_t< double, 3 > &vector) const
void setStartNormal(Vector_t< double, 3 > orientation)
Vector_t< double, 3 > getEndNormal() const
Vector_t< double, 3 > getStartNormal() const
std::vector< Vector_t< double, 3 > > getVirtualBoundingBox() const
void rotateToTCoordinates(Vector_t< double, 3 > &vec) const
bool isOnOrPastStartPlane(const Vector_t< double, 3 > &pos) const
bool doesOverlap(double phiStart, double phiEnd) const
Vector_t< double, 3 > endPosition_m
void updateComponentOrientation()
void setEndNormal(Vector_t< double, 3 > orientation)
Vector_t< double, 3 > startOrientation_m
void setStartPosition(Vector_t< double, 3 > pos)
void rotate_back(Vector_t< double, 3 > &vector) const
Vector_t< double, 3 > componentPosition_m
bool isPastEndPlane(const Vector_t< double, 3 > &pos) const
void rotate(Vector_t< double, 3 > &vector) const
Vector_t< double, 3 > startPosition_m
Vector_t< double, 3 > endOrientation_m