76 :maxEnergyTransfer(
DBL_MAX),verbose(verb),isInitialised(false)
130 G4double kinEnergyFinal = kinEnergy;
135 kinEnergyFinal = 0.0;
137 kinEnergyFinal -= step*
ComputeDEDX(kinEnergy,part);
143 return kinEnergyFinal;
155 G4double kinEnergyFinal = kinEnergy;
162 kinEnergyFinal += step*
ComputeDEDX(kinEnergy,part);
168 return kinEnergyFinal;
184 if(x < 0.2) { res *= (1.0 + 0.5*x + x*x/3.0); }
185 else if(x < 0.9999) { res = -
G4Log(1.0 - x)*stepLength/x; }
202 if(!part || !mat || kinEnergy <
keV)
return false;
215 G4cout <<
"### G4EnergyLossForExtrapolator WARNING:index i= "
216 << i <<
" is out of table - NO extrapolation" <<
G4endl;
230 bg2 = tau * (tau + 2.0);
236 tmax = 2.0*
bg2*electron_mass_c2/(1.0 + 2.0*
gam*r + r*r);
249 G4cout <<
"### G4EnergyLossForExtrapolator::Initialisation" <<
G4endl;
291 G4cout <<
"### G4EnergyLossForExtrapolator Builds electron tables"
299 G4cout <<
"### G4EnergyLossForExtrapolator Builds positron tables"
307 G4cout <<
"### G4EnergyLossForExtrapolator Builds muon tables" <<
G4endl;
314 G4cout <<
"### G4EnergyLossForExtrapolator Builds proton tables"
348 G4cout <<
"### G4EnergyLossForExtrapolator WARNING:FindParticle fails to find "
424 mass = electron_mass_c2;
430 G4cout <<
"G4EnergyLossForExtrapolator::ComputeElectronDEDX for "
449 <<
" e(MeV)= " << e/
MeV
450 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
451 <<
" dedx(Mev.cm2/g)= "
482 G4cout <<
"G4EnergyLossForExtrapolator::ComputeMuonDEDX for "
504 <<
" e(MeV)= " << e/
MeV
505 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
530 G4cout <<
"G4EnergyLossForExtrapolator::ComputeProtonDEDX for "
549 <<
" e(MeV)= " << e/
MeV
550 <<
" dedx(Mev/cm)= " << dedx*
cm/
MeV
576 G4cout <<
"G4EnergyLossForExtrapolator::ComputeProtonDEDX for "
594 G4cout <<
"j= " << j <<
" e(MeV)= " << e/
MeV
595 <<
" xs(1/mm)= " << xs*
mm <<
G4endl;
void BuildRangeTable(const G4PhysicsTable *dedxTable, G4PhysicsTable *rangeTable, G4bool isIonisation=false)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
static G4MuonPlus * MuonPlus()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4LossTableManager * Instance()
const G4String & GetName() const
void push_back(G4PhysicsVector *)
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
G4double GetDensity() const
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
G4double GetElectronDensity() const
void PutValue(size_t index, G4double theValue)
static G4Proton * Proton()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
void BuildInverseRangeTable(const G4PhysicsTable *rangeTable, G4PhysicsTable *invRangeTable, G4bool isIonisation=false)
G4double Energy(size_t index) const
static size_t GetNumberOfMaterials()
G4double GetRadlen() const
G4double G4Log(G4double x)
static G4Positron * Positron()
G4double ComputeDEDX(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
G4double GetPDGMass() const
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
static G4ParticleTable * GetParticleTable()
void SetCurrentCouple(const G4MaterialCutsCouple *)
static G4MuonMinus * MuonMinus()
static G4Electron * Electron()
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
static const double eplus
G4double GetPDGCharge() const
void SetPolarAngleLimit(G4double)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)