177 std::vector<G4DynamicParticle*>* fvect,
194 kinEnergy,cutEnergy,kinEnergy);
205 if(cross == 0.0) {
return; }
210 G4double cost = sqrt(1.0 - sint*sint);
222 G4double momCM = gam*(ptot - bet*e1);
225 G4double pxCM = momCM*sint*cos(phi);
226 G4double pyCM = momCM*sint*sin(phi);
230 G4LorentzVector v1(pxCM , pyCM, gam*(pzCM + bet*eCM), gam*(eCM + bet*pzCM));
259 fvect->push_back(newdp);
260 }
else if(trec > 0.0) {
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4int currentMaterialIndex
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) final
static G4ParticleTable * GetParticleTable()
static constexpr double keV
G4int SelectIsotopeNumber(const G4Element *)
const G4ThreeVector & GetMomentumDirection() const
const G4MaterialCutsCouple * currentCouple
G4IonTable * GetIonTable() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void SetupParticle(const G4ParticleDefinition *)
Hep3Vector & rotateUz(const Hep3Vector &)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
const G4ParticleDefinition * particle
std::vector< G4EmElementSelector * > * GetElementSelectors()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax) final
void ProposeNonIonizingEnergyDeposit(G4double anEnergyPart)
G4double NuclearCrossSection(G4int, G4int)
G4ScreeningMottCrossSection * Mottcross
G4ParticleDefinition * GetDefinition() const
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
void DefineMaterial(const G4MaterialCutsCouple *)
G4ParticleChangeForGamma * fParticleChange
virtual ~G4eSingleCoulombScatteringModel()
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
static constexpr double twopi
static G4double GetNuclearMass(const G4double A, const G4double Z)
static constexpr double eV
G4eSingleCoulombScatteringModel(const G4String &nam="eSingleCoulombScat")
const G4MaterialCutsCouple * CurrentCouple() const
G4NuclearFormfactorType NuclearFormfactorType() const
G4double GetKineticEnergy() const
const std::vector< G4double > * pCuts
G4double GetScatteringAngle(G4int, G4int)
G4double GetTotalMomentum() const
const G4Material * currentMaterial
CLHEP::HepLorentzVector G4LorentzVector
G4double GetTotalEnergy() const
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
void SetupKinematic(G4double kinEnergy, G4double Z)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4NistManager * fNistManager
static G4EmParameters * Instance()
const G4Element * currentElement
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) final
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel) final
static G4NistManager * Instance()