89 lowEnergyLimit = 0*
eV;
90 recoilThreshold = 0.*
eV;
93 currentMaterialIndex = -1;
111 currentMaterialIndex = -1;
119 isInitialised =
true;
138 if(kinEnergy < lowEnergyLimit)
return cross;
153 std::vector<G4DynamicParticle*>* fvect,
162 if(kinEnergy < lowEnergyLimit)
return;
170 kinEnergy,cutEnergy,kinEnergy);
180 if(cross == 0.0) {
return; }
192 if(trec > kinEnergy) { trec = kinEnergy; }
198 tcut=
std::min(tcut,(*pCuts)[currentMaterialIndex]);
209 G4double plab = sqrt(finalT*(finalT + 2.0*mass));
213 fvect->push_back(newdp);
214 }
else if(trec > 0.0) {
220 if(finalT <= lowEnergyLimit) {
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
const std::vector< G4double > * GetEnergyCutsVector(size_t pcIdx) const
G4double GetKineticEnergy() const
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
G4eSingleCoulombScatteringModel(const G4String &nam="eSingleCoulombScattering")
G4double GetMom2Lab() const
G4ParticleDefinition * GetDefinition() const
G4double GetTotalCross() const
static G4NistManager * Instance()
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4IonTable * GetIonTable() const
const G4MaterialCutsCouple * CurrentCouple() const
void ProposeNonIonizingEnergyDeposit(G4double anEnergyPart)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const G4ThreeVector & GetMomentumDirection() const
Hep3Vector & rotateUz(const Hep3Vector &)
G4double NuclearCrossSection()
G4int SelectIsotopeNumber(const G4Element *)
void DefineMaterial(const G4MaterialCutsCouple *)
static G4ProductionCutsTable * GetProductionCutsTable()
void SetupParticle(const G4ParticleDefinition *)
static G4ParticleTable * GetParticleTable()
virtual ~G4eSingleCoulombScatteringModel()
G4double PolarAngleLimit() const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4ThreeVector GetNewDirection()
void SetupKinematic(G4double kinEnergy, G4double Z)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax)