22#ifndef OPAL_ORBITTHREADER_H
23#define OPAL_ORBITTHREADER_H
56 double position)
const;
131 return imap_m.query(pathLength, length);
136 double position)
const {
137 return imap_m.getRange(element, position);
142 return imap_m.getTouchingElements(range);
ippl::Vector< T, Dim > Vector_t
std::list< ClassicField > FieldList
std::set< std::shared_ptr< Component > > value_t
void processElementRegister()
Vector_t< double, 3 > r_m
position of reference particle in lab coordinates
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
double time_m
the simulated time
OpalBeamline & itsOpalBeamline_m
std::multimap< std::string, elementPosition > elementRegistry_m
const PartData & reference_m
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
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
OrbitThreader(const PartData &ref, const Vector_t< double, 3 > &r, const Vector_t< double, 3 > &p, double s, double maxDiffZBunch, double t, double dT, StepSizeConfig stepSizes, OpalBeamline &bl)
bool operator()(const elementPosition &a, const elementPosition &b) const