96 mass = proton_mass_c2;
149 if(kinEnergy <= 0.0) {
return cross; }
177 std::vector<G4DynamicParticle*>* fvect,
207 kinEnergy, cutEnergy, kinEnergy) == 0.0)
220 newDirection.rotateUz(direction);
228 /(targetMass + (
mass + kinEnergy)*(1.0 - cost));
231 if(trec > kinEnergy) { trec = kinEnergy; }
243 newDirection*sqrt(finalT*(2*
mass + finalT))).unit();
245 fvect->push_back(newdp);
const G4ParticleDefinition * theProton
G4double ComputeNuclearCrossSection(G4double CosThetaMin, G4double CosThetaMax)
G4hCoulombScatteringModel(const G4String &nam="eCoulombScattering")
static G4double GetNuclearMass(const G4double A, const G4double Z)
const std::vector< G4double > * GetEnergyCutsVector(size_t pcIdx) const
G4ThreeVector SampleSingleScattering(G4double CosThetaMin, G4double CosThetaMax, G4double elecRatio=0.0)
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
void DefineMaterial(const G4MaterialCutsCouple *)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
const std::vector< G4double > * pCuts
G4WentzelVIRelXSection * wokvi
G4ParticleDefinition * GetDefinition() const
void SetupParticle(const G4ParticleDefinition *)
G4NistManager * fNistManager
static G4NistManager * Instance()
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
G4double SetupKinematic(G4double kinEnergy, const G4Material *mat)
G4double SetupTarget(G4int Z, G4double cut=DBL_MAX)
const G4MaterialCutsCouple * currentCouple
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double GetMomentumSquare() const
G4IonTable * GetIonTable() const
const G4MaterialCutsCouple * CurrentCouple() const
const G4ParticleDefinition * particle
void ProposeNonIonizingEnergyDeposit(G4double anEnergyPart)
const G4ThreeVector & GetMomentumDirection() const
static G4Proton * Proton()
virtual ~G4hCoulombScatteringModel()
G4int SelectIsotopeNumber(const G4Element *)
G4ParticleChangeForGamma * fParticleChange
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
const G4Material * currentMaterial
static G4ProductionCutsTable * GetProductionCutsTable()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax)
static G4ParticleTable * GetParticleTable()
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4int currentMaterialIndex
G4double PolarAngleLimit() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4double ComputeElectronCrossSection(G4double CosThetaMin, G4double CosThetaMax)
G4double lowEnergyThreshold
void Initialise(const G4ParticleDefinition *, G4double CosThetaLim)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
void SetTargetMass(G4double value)
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4ParticleChangeForGamma * GetParticleChangeForGamma()