26 #ifndef CLASSIC_Cyclotron_HH
27 #define CLASSIC_Cyclotron_HH
127 virtual void getDimensions(
double& zBegin,
double& zEnd)
const;
134 void setRfPhi(std::vector<double> f);
135 virtual std::vector<double>
getRfPhi()
const;
138 virtual std::vector<double>
getRfFrequ()
const;
162 virtual std::vector<double>
getEScale()
const;
164 void setTrimCoils(
const std::vector<TrimCoil*>& trimcoils);
170 virtual double getMinR()
const;
172 virtual double getMaxR()
const;
175 virtual double getMinZ()
const;
177 virtual double getMaxZ()
const;
194 virtual void apply(
const double&
rad,
const double& z,
195 const double& tet_rad,
double& br,
196 double& bt,
double& bz);
204 virtual bool bends()
const;
206 virtual double getRmax()
const;
207 virtual double getRmin()
const;
210 const double& tet_rad,
215 void read(
const double& scaleFactor);
223 void applyTrimCoil (
const double r,
const double z,
const double tet_rad,
double& br,
double& bz);
225 void applyTrimCoil_m(
const double r,
const double z,
const double tet_rad,
double* br,
double* bz);
230 double gutdf5d(
double* f,
double dx,
const int kor,
const int krl,
const int lpr);
232 void initR(
double rmin,
double dr,
int nrad);
250 std::vector< std::vector<double> >
rffc_m;
252 std::vector< std::vector<double> >
rfvc_m;
307 #endif // CLASSIC_Cyclotron_HH
std::vector< double > dbr_m
void setPHIinit(double phiinit)
std::vector< double > rffrequ_m
virtual double getFMHighE() const
void setFieldMapFN(const std::string &fmapfn)
void setCyclHarm(double h)
void getFieldFromFile_Carbon(const double &scaleFactor)
void setPZinit(double zinit)
T rad(T x)
Convert degrees to radians.
std::vector< TrimCoil * > trimcoils_m
int idx(int irad, int ktet)
void setEScale(std::vector< double > bs)
void read(const double &scaleFactor)
void setPRinit(double prinit)
std::vector< Fieldmap > RFfields_m
virtual void initialise(PartBunchBase< double, 3 > *bunch, double &startField, double &endField)
std::vector< double > dbrtt_m
void getFieldFromFile_Ring(const double &scaleFactor)
void setRfPhi(std::vector< double > f)
void setSymmetry(double symmetry)
void setRfFrequ(std::vector< double > f)
virtual std::string getFieldMapFN() const
std::vector< double > dbrrr_m
std::vector< double > g3_m
unsigned int getNumberOfTrimcoils() const
void setTrimCoilThreshold(double)
virtual double getPRinit() const
std::unique_ptr< LossDataSink > lossDs_m
std::vector< bool > superpose_m
virtual bool bends() const
virtual double getSlices() const =0
Get number of slices.
void setZinit(double zinit)
virtual double getRmax() const
void getFieldFromFile_Synchrocyclotron(const double &scaleFactor)
void setRFVCoeffFN(std::vector< std::string > rfv_coeff_fn)
BFieldType getBFieldType() const
virtual std::vector< bool > getSuperpose() const
std::vector< double > escale_m
virtual double getRmin() const
virtual double getRinit() const
std::vector< std::string > RFfilename_m
std::vector< double > dbrr_m
bool interpolate(const double &rad, const double &tet_rad, double &br, double &bt, double &bz)
std::vector< double > dbttt_m
void setCyclotronType(const std::string &type)
double gutdf5d(double *f, double dx, const int kor, const int krl, const int lpr)
std::vector< double > f3_m
void setBScale(double bs)
virtual bool getSpiralFlag() const
void setFMHighE(double e)
std::vector< double > f2_m
virtual double getZinit() const
virtual double getMaxZ() const
std::vector< std::vector< double > > rfvc_m
void setSpiralFlag(bool spiral_flag)
void setTrimCoils(const std::vector< TrimCoil * > &trimcoils)
void writeOutputFieldFiles()
void setSuperpose(std::vector< bool > flag)
virtual double getSymmetry() const
virtual double getStepsize() const =0
Get stepsize.
void operator=(const Cyclotron &)=delete
void initR(double rmin, double dr, int nrad)
const std::string & getCyclotronType() const
std::vector< double > rarr_m
void applyTrimCoil(const double r, const double z, const double tet_rad, double &br, double &bz)
Apply trim coils (calculate field contributions) with smooth field transition.
virtual double getMaxR() const
virtual double getTrimCoilThreshold() const
double trimCoilThreshold_m
std::vector< std::vector< double > > rffc_m
std::vector< std::string > RFVCoeff_fn_m
std::vector< double > dbt_m
virtual bool apply(const size_t &id, const double &t, Vector_t &E, Vector_t &B)
virtual std::vector< double > getEScale() const
void setRfFieldMapFN(std::vector< std::string > rffmapfn)
void setRinit(double rinit)
virtual std::vector< double > getRfPhi() const
std::vector< double > bfld_m
virtual double getCyclHarm() const
std::vector< double > rfvrequ_m
virtual double getMinR() const
void applyTrimCoil_m(const double r, const double z, const double tet_rad, double *br, double *bz)
Apply trim coils (calculate field contributions)
virtual void getDimensions(double &zBegin, double &zEnd) const
std::vector< double > dbrrt_m
virtual double getPHIinit() const
constexpr double e
The value of .
std::vector< double > dbrt_m
virtual double getBScale() const
std::vector< double > rfphi_m
void getFieldFromFile_AVFEQ(const double &scaleFactor)
virtual ElementType getType() const
Get element type std::string.
void setRFFCoeffFN(std::vector< std::string > rff_coeff_fn)
Interface for a single beam element.
std::vector< double > dbtt_m
void checkInitialReferenceParticle(double refR, double refTheta, double refZ)
void getFieldFromFile_CYCIAE(const double &scaleFactor)
void getFieldFromFile_BandRF(const double &scaleFactor)
virtual std::vector< double > getRfFrequ() const
virtual double getPZinit() const
std::vector< std::string > RFFCoeff_fn_m
void getFieldFromFile_FFA(const double &scaleFactor)
virtual double getFMLowE() const
virtual void accept(BeamlineVisitor &) const
Apply visitor to Cyclotron.
virtual double getMinZ() const