20 #ifndef SCATTERINGPHYSICS_HH
21 #define SCATTERINGPHYSICS_HH
28 #include <gsl/gsl_rng.h>
37 template <
class T,
unsigned Dim>
71 bool enableRutherford,
76 const std::pair<Vector_t, double>& boundingSphere);
78 virtual const std::string
getType()
const;
93 bool includeFluctuations =
true)
const;
109 const std::pair<Vector_t, double>& boundingSphere);
218 return "ScatteringPhysics";
virtual const std::string & getName() const
Get element name.
ElementBase * element_ref_m
virtual bool checkHit(const Vector_t &R)=0
void addBackToBunch(PartBunchBase< double, 3 > *bunch)
virtual bool computeEnergyLoss(PartBunchBase< double, 3 > *bunch, Vector_t &P, const double deltat, bool includeFluctuations=true) const
void configureMaterialParameters()
The material of the collimator.
virtual bool stillActive()
void setTimeStepForLeavingParticles()
ElementBase::ElementType collshape_m
void copyFromBunch(PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere)
void calcStat(double Eng)
std::string collshapeStr_m
virtual void apply(PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere)
unsigned int bunchToMatStat_m
void deleteParticleFromLocalVector()
IpplTimings::TimerRef DegraderLoopTimer_m
virtual unsigned getRediffused()
void applyRotation(Vector_t &P, Vector_t &R, double xplane, double thetacou)
ScatteringPhysics(const std::string &name, ElementBase *element, std::string &mat, bool enableRutherford, double lowEnergyThr)
virtual size_t getParticlesInMat()
void computeInteraction(PartBunchBase< double, 3 > *bunch)
unsigned int totalPartsInMat_m
void applyRandomRotation(Vector_t &P, double theta0)
void computeCoulombScattering(Vector_t &R, Vector_t &P, double dt)
std::unique_ptr< InsideTester > hitTester_m
virtual const std::string getType() const
virtual std::string getName()
std::vector< PART > locParts_m
unsigned int rediffusedStat_m
IpplTimings::TimerRef DegraderApplyTimer_m
unsigned int stoppedPartStat_m
IpplTimings::TimerRef DegraderDestroyTimer_m
virtual unsigned int getNumEntered()
virtual void print(Inform &os)
std::unique_ptr< LossDataSink > lossDs_m
Timing::TimerRef TimerRef