#include <G4ElectroNuclearCrossSection.hh>
|
| G4ElectroNuclearCrossSection () |
|
virtual | ~G4ElectroNuclearCrossSection () |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat) |
|
G4double | GetEquivalentPhotonEnergy () |
|
G4double | GetVirtualFactor (G4double nu, G4double Q2) |
|
G4double | GetEquivalentPhotonQ2 (G4double nu) |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0) |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0) |
|
virtual G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual G4int | GetVerboseLevel () const |
|
virtual void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
const G4String & | GetName () const |
|
◆ G4ElectroNuclearCrossSection()
G4ElectroNuclearCrossSection::G4ElectroNuclearCrossSection |
( |
| ) |
|
Definition at line 2180 of file G4ElectroNuclearCrossSection.cc.
2188 for (
G4int i=0;i<120;i++)
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4VCrossSectionDataSet(const G4String &nam="")
static G4NistManager * Instance()
cacheEl_t * lastUsedCacheEl
std::vector< cacheEl_t * > cache
static const char * Default_Name()
◆ ~G4ElectroNuclearCrossSection()
G4ElectroNuclearCrossSection::~G4ElectroNuclearCrossSection |
( |
| ) |
|
|
virtual |
Definition at line 2195 of file G4ElectroNuclearCrossSection.cc.
2197 std::vector<cacheEl_t*>::iterator it =
cache.begin();
2198 while ( it !=
cache.end() )
2201 delete[] (*it)->J1; (*it)->J1 = 0;
2202 delete[] (*it)->J2; (*it)->J2 = 0;
2203 delete[] (*it)->J3; (*it)->J3 = 0;
cacheEl_t * lastUsedCacheEl
std::vector< cacheEl_t * > cache
◆ CrossSectionDescription()
void G4ElectroNuclearCrossSection::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 2243 of file G4ElectroNuclearCrossSection.cc.
2245 outFile <<
"G4ElectroNuclearCrossSection provides the total inelastic\n" 2246 <<
"cross section for e- and e+ interactions with nuclei. The\n" 2247 <<
"cross sections are retrieved from a table which is\n" 2248 <<
"generated using the equivalent photon approximation. In\n" 2249 <<
"this approximation real gammas are produced from the virtual\n" 2250 <<
"ones generated at the electromagnetic vertex. This cross\n" 2251 <<
"section set is valid for incident electrons and positrons at\n" 2252 <<
"all energies.\n";
◆ Default_Name()
static const char* G4ElectroNuclearCrossSection::Default_Name |
( |
| ) |
|
|
inlinestatic |
◆ DFun()
Definition at line 2226 of file G4ElectroNuclearCrossSection.cc.
static const G4double reg
static const G4double shd
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double poc
static const G4double pos
static const G4double lmel
◆ Fun()
Definition at line 2233 of file G4ElectroNuclearCrossSection.cc.
G4double HighEnergyJ2(G4double lE, G4double E)
G4double HighEnergyJ1(G4double lE)
G4double HighEnergyJ3(G4double lE, G4double E2)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
◆ GetElementCrossSection()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 2261 of file G4ElectroNuclearCrossSection.cc.
2265 if (Energy<=
EMi)
return 0.;
2306 if ( Energy <= lastUsedCacheEl->TH )
2320 G4int blast=
static_cast<int>(shift);
2321 if(blast<0) blast=0;
2322 if(blast>=
mLL) blast=
mLL-1;
2328 if(lastSig>YNj)lastSig=YNj;
2341 lastSig=dlg1*term1-lgoe*(term2+term2-term3/
lastE);
2344 if(lastSig<0.) lastSig = 0.;
static const G4double alop
G4double HighEnergyJ2(G4double lE, G4double E)
static const G4double lEMa
G4double HighEnergyJ1(G4double lE)
G4double GetKineticEnergy() const
G4double HighEnergyJ3(G4double lE, G4double E2)
static const G4double dlnE
static const G4double EMi
G4int GetFunctions(G4double a, G4double *x, G4double *y, G4double *z)
cacheEl_t * lastUsedCacheEl
static const G4double lEMi
G4double G4Log(G4double x)
std::vector< cacheEl_t * > cache
static const double millibarn
G4double ThresholdEnergy(G4int Z, G4int N)
G4double GetAtomicMassAmu(const G4String &symb) const
static const G4double lmel
◆ GetEquivalentPhotonEnergy()
G4double G4ElectroNuclearCrossSection::GetEquivalentPhotonEnergy |
( |
| ) |
|
Definition at line 2428 of file G4ElectroNuclearCrossSection.cc.
2430 if(
lastSig <= 0.0) {
return 0.0; }
2439 if(Y[i] < 0.0) { Y[i] = 0.0; }
2447 if(
lastSig <= 0.0) {
return 0.0; }
2452 if (ris < Y[
lastL]) {
2455 while (ris > Yj && j < lastL) {
2461 phLE =
lEMi + (j1 + (ris-Yi)/(Yj-Yi) )*
dlnE;
2463 if (lastL <
mLL)
G4cerr <<
"**G4EleNucCS::GetEfPhE:L=" << lastL <<
",S=" 2470 G4cerr <<
"***G4ElectroNuclearCS::GetEquPhotE:N=" <<
currentN <<
",Z=" 2471 <<
currentZ <<
", lpE" << phLE <<
">leE" << lastLE <<
",Sig=" 2474 if(lastLE<7.2) phLE=
G4Log(
G4Exp(lastLE)-.511);
static const G4double dlnE
G4double SolveTheEquation(G4double f)
cacheEl_t * lastUsedCacheEl
static const G4double lEMi
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double lmel
G4GLOB_DLL std::ostream G4cerr
◆ GetEquivalentPhotonQ2()
Definition at line 2507 of file G4ElectroNuclearCrossSection.cc.
2509 if(
lastG <= 0.0 ||
lastE <= 0.0) {
return 0.; }
2510 if(
lastSig <= 0.0) {
return 0.0; }
2533 while(cond&&cntTry<maxTry)
2536 Q2=Qi2*(ePy+1./(
G4Exp(R*LyQa2-(1.-R)*Uy)-Fy));
static const G4double mel2
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
◆ GetFunctions()
Definition at line 2379 of file G4ElectroNuclearCrossSection.cc.
2383 if(a<=.9999 || a>238.49)
2385 G4cout<<
"***G4ElectroNuclearCrossSection::GetFunctions: A="<<
a<<
"(?). No CS returned!"<<
G4endl;
2393 if(std::abs(
a-
A[i])<.0005)
2406 for(k=1; k<
nN; k++)
if(
a<
A[k])
break;
2415 xx[q]=xi+(
P0[k][q]-xi)*b;
2417 yy[q]=yi+(
P1[k][q]-yi)*b;
2419 zz[q]=zi+(
P2[k][q]-zi)*b;
2422 if(
LL[k1]<r) r=
LL[k1];
static const G4double * P1[nN]
static const G4double * P0[nN]
G4GLOB_DLL std::ostream G4cout
static const G4double A[nN]
static const G4int LL[nN]
static const G4double * P2[nN]
◆ GetVirtualFactor()
Definition at line 2551 of file G4ElectroNuclearCrossSection.cc.
2553 if(nu <= 0.0 || Q2 <= 0.0) {
return 0.0; }
2567 return (1.-x)*ef/GD/GD;
static const G4double clK0
static const G4double blK0
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double Q02
◆ HighEnergyJ1()
Definition at line 2211 of file G4ElectroNuclearCrossSection.cc.
static const G4double lEMa
static const G4double reg
static const G4double lEMa2
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double ele
◆ HighEnergyJ2()
Definition at line 2216 of file G4ElectroNuclearCrossSection.cc.
static const G4double le1
static const G4double cd1
static const G4double ele1
static const G4double EMa
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double poc
◆ HighEnergyJ3()
Definition at line 2221 of file G4ElectroNuclearCrossSection.cc.
static const G4double hab
static const G4double EMa2
static const G4double leh
static const G4double cd2
static const G4double ele2
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
◆ IsElementApplicable()
◆ SolveTheEquation()
Definition at line 2481 of file G4ElectroNuclearCrossSection.cc.
2487 if(
x>topLim)
x=topLim;
2496 G4cerr<<
"*G4ElNCS::SolveTheEq:*Correction*"<<i<<
",d="<<d<<
",x="<<
x<<
">lE="<<lastLE<<
",f="<<
f 2500 if(std::abs(d)<
eps)
break;
2501 if(i+1>=imax)
G4cerr<<
"*G4ElNucCS::SolveTheEq:"<<i+2<<
">"<<imax<<
"->Use bigger max. ln(eE)=" G4double DFun(G4double x)
static const G4double eps
static const G4double lEMa
static const G4double phte
static const G4double EMa
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double lmel
G4GLOB_DLL std::ostream G4cerr
◆ ThresholdEnergy()
Definition at line 2350 of file G4ElectroNuclearCrossSection.cc.
2355 if(Aa<1)
return infEn;
2356 else if(Aa==1)
return 134.9766;
static G4double GetNuclearMass(const G4double A, const G4double Z)
static const G4double infEn
static bool IsInStableTable(const G4double A, const G4double Z)
◆ cache
std::vector<cacheEl_t*> G4ElectroNuclearCrossSection::cache |
|
private |
◆ currentN
G4int G4ElectroNuclearCrossSection::currentN |
|
private |
◆ currentZ
G4int G4ElectroNuclearCrossSection::currentZ |
|
private |
◆ lastE
G4double G4ElectroNuclearCrossSection::lastE |
|
private |
◆ lastG
G4double G4ElectroNuclearCrossSection::lastG |
|
private |
◆ lastL
G4int G4ElectroNuclearCrossSection::lastL |
|
private |
◆ lastSig
G4double G4ElectroNuclearCrossSection::lastSig |
|
private |
◆ lastUsedCacheEl
cacheEl_t* G4ElectroNuclearCrossSection::lastUsedCacheEl |
|
private |
◆ lastZ
G4int G4ElectroNuclearCrossSection::lastZ |
|
private |
◆ mNeut
const G4double G4ElectroNuclearCrossSection::mNeut |
|
private |
◆ mProt
const G4double G4ElectroNuclearCrossSection::mProt |
|
private |
◆ nistmngr
The documentation for this class was generated from the following files: