22#ifndef OPAL_ORBITTHREADER_H
23#define OPAL_ORBITTHREADER_H
42 double s,
double maxDiffZBunch,
double t,
double dT,
StepSizeConfig stepSizes,
123 std::shared_ptr<Component>, elementPosition,
124 std::owner_less<std::shared_ptr<Component>>>
132 const IndexMap::value_t& activeSet,
const std::set<std::string>& visitedElements);
143 const std::set<std::shared_ptr<Component>>&
elements,
155 const IndexMap::value_t::value_type& element,
double position)
const {
std::list< BeamlineFieldElement > FieldList
ippl::Vector< T, Dim > Vector_t
std::set< std::shared_ptr< Component > > value_t
value_t getTouchingElements(const key_t &range) const
key_t getRange(const IndexMap::value_t::value_type &element, double position) const
const ReferencePathModel & getReferencePathModel() const
value_t query(key_t::first_type s, key_t::second_type ds)
void processElementRegister()
Vector_t< double, 3 > r_m
position of reference particle in lab coordinates
const ReferencePathModel & getReferencePathModel() const
Return the threader-owned reference-path model.
Vector_t< double, 3 > p_m
momentum of reference particle
void updateBoundingBoxWithCurrentPosition()
void checkElementLengths(const std::set< std::shared_ptr< Component > > &elements)
void registerElement(const IndexMap::value_t &elementSet, double, const Vector_t< double, 3 > &r, const Vector_t< double, 3 > &p)
double computeDriftLengthToBoundingBox(const std::set< std::shared_ptr< Component > > &elements, const Vector_t< double, 3 > &position, const Vector_t< double, 3 > &direction) const
void setDesignEnergy(FieldList &allElements, const std::set< std::string > &visitedElements)
IndexMap::value_t query(IndexMap::key_t::first_type step, IndexMap::key_t::second_type length)
ValueRange< double > pathLengthRange_m
BoundingBox getBoundingBox() const
ValueRange< long > stepRange_m
std::multimap< std::shared_ptr< Component >, elementPosition, std::owner_less< std::shared_ptr< Component > > > elementRegistry_m
double time_m
the simulated time
OpalBeamline & itsOpalBeamline_m
const PartData & reference_m
const ReferencePathModel & getActionRangeRegistrationModel() const
Return the action-range registration model.
BoundingBox globalBoundingBox_m
bool containsCavity(const IndexMap::value_t &activeSet)
void integrate(const IndexMap::value_t &activeSet, double maxDrift=10.0)
StepSizeConfig stepSizes_m
final position in path length
double getMaxDesignEnergy(const IndexMap::value_t &elementSet) const
IndexMap::value_t getTouchingElements(const IndexMap::key_t &range) const
IndexMap::key_t getRange(const IndexMap::value_t::value_type &element, double position) const
ReferencePathModel actionRangeRegistrationModel_m
double pathLength_m
position of reference particle in path length
void autophaseCavities(const IndexMap::value_t &activeSet, const std::set< std::string > &visitedElements)
void computeBoundingBox()
size_t loggingFrequency_m
Ordered collection of reference-path segments.
bool operator()(const elementPosition &a, const elementPosition &b) const