18#ifndef OPAL_BEAMLINE_H
19#define OPAL_BEAMLINE_H
35class ParticleMatterInteractionHandler;
67 const double&,
const double&,
const double& kineticEnergy,
const bool& nomonitors =
false);
89 void print(Inform&)
const;
106 double startField = 0.0;
107 double endField = 0.0;
108 std::shared_ptr<T> elptr(
dynamic_cast<T*
>(element.clone()));
112 if (elptr->isElementPositionSet())
113 startField = elptr->getElementPosition();
115 elptr->initialise(bunch, startField, endField);
141 return comp->getCSTrafoGlobal2Local().transformTo(r);
146 return comp->getCSTrafoGlobal2Local().transformFrom(r);
151 return comp->getCSTrafoGlobal2Local().rotateTo(r);
156 return comp->getCSTrafoGlobal2Local().rotateFrom(r);
160 const std::shared_ptr<Component>& comp)
const {
161 return comp->getCSTrafoGlobal2Local();
169 const std::shared_ptr<Component>& comp)
const {
170 return comp->getMisalignment();
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
ippl::Vector< T, Dim > Vector_t
std::list< ClassicField > FieldList
FieldList getElementByType(ElementType)
Vector_t< double, 3 > rotateToLocalCS(const std::shared_ptr< Component > &comp, const Vector_t< double, 3 > &r) const
void positionElementRelative(std::shared_ptr< ElementBase >)
CoordinateSystemTrafo getMisalignment(const std::shared_ptr< Component > &comp) const
void merge(OpalBeamline &rhs)
ParticleMatterInteractionHandler * getParticleMatterInteractionHandler(const unsigned int &)
unsigned long getFieldAt(const unsigned int &, const Vector_t< double, 3 > &, const long &, const double &, Vector_t< double, 3 > &, Vector_t< double, 3 > &)
Vector_t< double, 3 > transformTo(const Vector_t< double, 3 > &r) const
Vector_t< double, 3 > transformFromLocalCS(const std::shared_ptr< Component > &comp, const Vector_t< double, 3 > &r) const
CoordinateSystemTrafo coordTransformationTo_m
double getEnd(const Vector_t< double, 3 > &) const
Vector_t< double, 3 > rotateTo(const Vector_t< double, 3 > &r) const
void print(Inform &) const
Vector_t< double, 3 > transformToLocalCS(const std::shared_ptr< Component > &comp, const Vector_t< double, 3 > &r) const
std::set< std::shared_ptr< Component > > getElements(const Vector_t< double, 3 > &x)
void switchElements(const double &, const double &, const double &kineticEnergy, const bool &nomonitors=false)
Vector_t< double, 3 > transformFrom(const Vector_t< double, 3 > &r) const
void visit(const T &, BeamlineVisitor &, PartBunch_t *)
double getStart(const Vector_t< double, 3 > &) const
CoordinateSystemTrafo getCSTrafoLab2Local() const
BoundaryGeometry * getBoundaryGeometry(const unsigned int &)
Vector_t< double, 3 > rotateFromLocalCS(const std::shared_ptr< Component > &comp, const Vector_t< double, 3 > &r) const
Vector_t< double, 3 > rotateFrom(const Vector_t< double, 3 > &r) const
void swap(OpalBeamline &rhs)