78 {0.03377,0.16940,0.38069,0.61931,0.83060,0.96623};
80 {0.08566,0.18038,0.23396,0.23396,0.18038,0.08566};
87 lowestKinEnergy(0.1*
CLHEP::GeV),
88 minThreshold(0.9*
CLHEP::keV)
122 cc = CLHEP::classic_electr_radius/
rmass ;
123 coeff = 16.*CLHEP::fine_structure_const*
cc*
cc/3. ;
138 for(
G4int i=1; i<93; ++i) {
172 cut = std::min(cut, kineticEnergy);
175 const G4double* theAtomicNumDensityVector =
182 dedx += loss*theAtomicNumDensityVector[i];
185 dedx = std::max(dedx, 0.);
196 static const G4int k2 = 5;
201 if (kkk > 8) { kkk = 8; }
202 else if (kkk < 1) { kkk = 1; }
206 for(
G4int l=0; l<kkk; ++l) {
207 for(
G4int i=0; i<6; ++i) {
214 loss *= hhh*totalEnergy;
227 static const G4int k2 = 4;
230 if(cut >= tkin)
return cross;
238 if(kkk > 8) { kkk = 8; }
239 else if (kkk < 1) { kkk = 1; }
243 for(
G4int l=0; l<kkk; ++l) {
244 for(
G4int i=0; i<6; ++i) {
265 if(gammaEnergy > tkin) {
return dxsection; }
273 if(iz < 1) { iz = 1; }
274 else if(iz > 92) { iz = 92; }
290 G4double fn =
G4Log(rab1/(dnstar*(CLHEP::electron_mass_c2+rab0*rab1))*
292 fn = std::max(fn, 0.);
296 if(gammaEnergy < epmax1) {
299 (CLHEP::electron_mass_c2+rab0*rab2)));
300 fe = std::max(
fe, 0.);
303 dxsection =
coeff*(1.-v*(1. - 0.75*v))*
Z*(fn*
Z +
fe)/gammaEnergy;
304 dxsection = std::max(dxsection, 0.0);
319 G4double tmax = std::min(maxEnergy, kineticEnergy);
320 G4double cut = std::min(cutEnergy, kineticEnergy);
322 if (cut >= tmax)
return cross;
325 if(tmax < kineticEnergy) {
334 std::vector<G4DynamicParticle*>* vdp,
342 G4double tmax = std::min(kineticEnergy, maxEnergy);
343 G4double tmin = std::min(kineticEnergy, minEnergy);
345 if(tmin >= tmax)
return;
376 vdp->push_back(gamma);
381 std::sqrt(kineticEnergy*(kineticEnergy + 2.0*
mass));
384 const G4double finalE = kineticEnergy - gEnergy;
393 vdp->push_back(newdp);
std::vector< const G4Element * > G4ElementVector
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
size_t GetNumberOfElements() const
const G4double * GetAtomicNumDensityVector() const
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *) override
G4MuBremsstrahlungModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="MuBrem")
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy) override
void SetParticle(const G4ParticleDefinition *)
static const G4double xgi[6]
virtual G4double ComputeDMicroscopicCrossSection(G4double tkin, G4double Z, G4double gammaEnergy)
static const G4double wgi[6]
G4double ComputeMicroscopicCrossSection(G4double tkin, G4double Z, G4double cut)
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy) override
G4ParticleDefinition * theGamma
G4ParticleChangeForLoss * fParticleChange
void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel) override
G4double ComputMuBremLoss(G4double Z, G4double tkin, G4double cut)
G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *, G4double) override
const G4ParticleDefinition * particle
G4double GetA27(G4int Z) const
G4double GetZ13(G4double Z) const
static G4NistManager * Instance()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void SetProposedMomentumDirection(const G4ThreeVector &dir)
G4double GetPDGMass() const
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
G4VEmAngularDistribution * GetAngularDistribution()
std::vector< G4EmElementSelector * > * GetElementSelectors()
G4double HighEnergyLimit() const
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
void SetAngularDistribution(G4VEmAngularDistribution *)
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
G4double SecondaryThreshold() const
G4ParticleChangeForLoss * GetParticleChangeForLoss()
void ProposeTrackStatus(G4TrackStatus status)