20 #ifndef SCATTERINGPHYSICS_H
21 #define SCATTERINGPHYSICS_H
28 #include <gsl/gsl_rng.h>
37 template <
class T,
unsigned Dim>
64 bool enableRutherford,
69 const std::pair<Vector_t, double>& boundingSphere)
override;
71 virtual const std::string
getType()
const override;
75 virtual double getTime()
override;
76 virtual std::string
getName()
override;
86 bool includeFluctuations =
true)
const override;
102 const std::pair<Vector_t, double>& boundingSphere);
107 const PART& particle,
bool pdead =
false);
211 return "ScatteringPhysics";
214 #endif //SCATTERINGPHYSICS_H
IpplTimings::TimerRef DegraderDestroyTimer_m
void copyFromBunch(PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere)
ScatteringPhysics(const std::string &name, ElementBase *element, std::string &mat, bool enableRutherford, double lowEnergyThr)
virtual size_t getParticlesInMat() override
std::unique_ptr< LossDataSink > lossDs_m
void addBackToBunch(PartBunchBase< double, 3 > *bunch)
void setTimeStepForLeavingParticles()
void deleteParticleFromLocalVector()
void computeCoulombScattering(Vector_t &R, Vector_t &P, double dt)
virtual void apply(PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere) override
void applyRotation(Vector_t &P, Vector_t &R, double xplane, double thetacou)
ElementBase * element_ref_m
void addParticleBackToBunch(PartBunchBase< double, 3 > *bunch, const PART &particle, bool pdead=false)
virtual const std::string & getName() const
Get element name.
Timing::TimerRef TimerRef
unsigned int bunchToMatStat_m
virtual unsigned int getNumEntered() override
unsigned int totalPartsInMat_m
virtual bool computeEnergyLoss(PartBunchBase< double, 3 > *bunch, Vector_t &P, const double deltat, bool includeFluctuations=true) const override
void calcStat(double Eng)
unsigned int stoppedPartStat_m
std::vector< PART > locParts_m
unsigned int rediffusedStat_m
virtual bool stillActive() override
void configureMaterialParameters()
The material of the collimator.
virtual double getTime() override
void applyRandomRotation(Vector_t &P, double theta0)
IpplTimings::TimerRef DegraderLoopTimer_m
void computeInteraction(PartBunchBase< double, 3 > *bunch)
virtual unsigned getRediffused() override
IpplTimings::TimerRef DegraderApplyTimer_m
virtual std::string getName() override
virtual const std::string getType() const override
virtual void print(Inform &os) override