1 #ifndef BEAMSTRIPPINGPHYSICS_HH
2 #define BEAMSTRIPPINGPHYSICS_HH
21 #include <gsl/gsl_math.h>
22 #include <gsl/gsl_rng.h>
24 template <
class T,
unsigned Dim>
42 const std::pair<Vector_t, double> &boundingSphere,
43 size_t numParticlesInSimulation = 0);
45 virtual const std::string
getType()
const;
64 double a1,
double a2,
double a3,
double a4,
double a5,
double a6);
80 bool includeFluctuations =
true)
const {
return false;}
131 #endif //BEAMSTRIPPINGPHYSICS_HH
Interface for basic beam line object.
std::unique_ptr< LossDataSink > lossDs_m
static const double csCoefDouble_Hminus[3][9]
static const double csCoefSingle_Hplus_Chebyshev[11]
void crossSection(const Vector_t &R, double Eng)
void apply(PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere, size_t numParticlesInSimulation=0)
Interface for a Cyclotron.
static const double csCoefSingleCapt_H[3][9]
static const double csCoefDouble_Hplus_Chebyshev[11]
static const double csCoefSingle_Hminus[3][9]
virtual const std::string getType() const
virtual const std::string & getName() const
Get element name.
void setCyclotron(Cyclotron *cycl)
bool stillAlive(PartBunchBase< double, 3 > *bunch)
void secondaryParticles(PartBunchBase< double, 3 > *bunch, size_t &i, bool pdead_LS)
static const double csCoefSingle_Hplus[3][9]
unsigned rediffusedStat_m
unsigned bunchToMatStat_m
static const double csCoefProtonProduction_H2plus_Tabata[11]
static const double csCoefH3plusProduction_H2plus_Tabata[7]
double csAnalyticFunctionNakai(double Eng, double Eth, int &i)
bool lorentzStripping(double &gamma, double &E)
static const double csCoefSingleLoss_H[3][9]
ElementBase::ElementType bstpshape_m
unsigned int getNumEntered()
static const double csCoefDouble_Hminus_Chebyshev[11]
void transformToHminus(PartBunchBase< double, 3 > *bunch, size_t &i)
void doPhysics(PartBunchBase< double, 3 > *bunch)
size_t getParticlesInMat()
static const double csCoefDouble_Hplus[3][9]
void transformToH3plus(PartBunchBase< double, 3 > *bunch, size_t &i)
void transformToProton(PartBunchBase< double, 3 > *bunch, size_t &i)
bool gasStripping(double &deltas)
static const double csCoefProtonProduction_H_Tabata[9]
bool computeEnergyLoss(Vector_t &P, const double deltat, bool includeFluctuations=true) const
static const double csCoefHminusProduction_H_Tabata[13]
ElementBase * element_ref_m
BeamStrippingPhysics(const std::string &name, ElementBase *element)
double csChebyshevFitting(double Eng, double Emin, double Emax)
static const double csCoefHydrogenProduction_H2plus_Chebyshev[11]
unsigned stoppedPartStat_m
static const double csCoefSingle_Hminus_Chebyshev[11]
void transformToHydrogen(PartBunchBase< double, 3 > *bunch, size_t &i)
double csAnalyticFunctionTabata(double Eng, double Eth, double a1, double a2, double a3, double a4, double a5, double a6)