25 description_m(right.description_m),
28 filename_m(right.filename_m),
29 informed_m(right.informed_m),
34 for (
const std::shared_ptr<mslang::Base> obj: right.
holes_m) {
35 holes_m.emplace_back(obj->clone());
71 const double z =
R(2);
97 double frac = -
R(2) / P(2) * recpgamma;
154 *gmsg <<
"* Finalize flexible collimator " <<
getName() <<
endl;
169 std::ofstream omsg(
"errormsg.txt", std::ios_base::app);
205 "Couldn't parse input file");
209 if (
holes_m.size() == 0)
return;
211 for (std::shared_ptr<mslang::Base> & it:
holes_m) {
212 it->computeBoundingBox();
215 std::shared_ptr<mslang::Base> &first = holes_m.front();
225 for (
const std::shared_ptr<mslang::Base> & it: holes_m) {
233 double width = urc[0] - llc[0];
234 double height = urc[1] - llc[1];
236 llc[0] -= 1
e-3 * width;
237 urc[0] += 1
e-3 * width;
238 llc[1] -= 1
e-3 * height;
239 urc[1] += 1
e-3 * height;
252 std::ofstream out(
"data/" + baseFilename +
"_quadtree.gpl");
256 out.open(
"data/" + baseFilename +
"_holes.gpl");
257 for (
const std::shared_ptr<mslang::Base> &obj:
holes_m) {
258 obj->writeGnuplot(out);
virtual ParticleMatterInteractionHandler * getParticleMatterInteraction() const
ParticleAttrib< Vector_t > P
virtual ~FlexibleCollimator()
constexpr double e
The value of .
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
bool isInside(const Vector_t &X) const
virtual const std::string & getName() const
Get element name.
virtual void getDimensions(double &zBegin, double &zEnd) const override
static std::string typeset_msg(const std::string &msg, const std::string &title)
virtual void accept(BeamlineVisitor &) const override
Apply visitor to FlexibleCollimator.
std::vector< std::shared_ptr< mslang::Base > > holes_m
bool isStopped(const Vector_t &R, const Vector_t &P, double recpgamma)
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
ParticleMatterInteractionHandler * parmatint_m
virtual ElementBase::ElementType getType() const override
Get element type std::string.
virtual void finalise() override
void setDescription(const std::string &desc)
std::unique_ptr< LossDataSink > lossDs_m
void writeHolesAndQuadtree(const std::string &baseFilename) const
virtual double getElementLength() const
Get design length.
constexpr double c
The velocity of light in m/s.
virtual bool applyToReferenceParticle(const Vector_t &R, const Vector_t &P, const double &t, Vector_t &E, Vector_t &B) override
PartBunchBase< double, 3 > * RefPartBunch_m
virtual void goOnline(const double &kineticEnergy) override
std::list< std::shared_ptr< Base > > objects_m
Tps< T > sqrt(const Tps< T > &x)
Square root.
ParticleAttrib< double > dt
virtual void apply(std::vector< std::shared_ptr< Base >> &bfuncs)=0
void writeGnuplot(std::ostream &out) const
virtual void visitFlexibleCollimator(const FlexibleCollimator &)=0
Apply the algorithm to a flexible collimator.
virtual bool checkCollimator(PartBunchBase< double, 3 > *bunch, const int turnnumber, const double t, const double tstep)
Inform & level3(Inform &inf)
bool isInsideTransverse(const Vector_t &r, double f=1) const
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField) override
bool isInside(const Vector_t &R) const
Interface for a single beam element.
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B) override
bool parse(std::string str, Function *&fun)
T::PETE_Expr_t::PETE_Return_t min(const PETE_Expr< T > &expr, NDIndex< D > &loc)
virtual void goOffline() override
Inform & endl(Inform &inf)