#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 |
( |
| ) |
|
Definition at line 2180 of file G4ElectroNuclearCrossSection.cc.
References G4NistManager::Instance().
2181 currentN(0), currentZ(0), lastZ(0),
2188 for (
G4int i=0;i<120;i++)
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4VCrossSectionDataSet(const G4String &nam="")
static G4NistManager * Instance()
static const char * Default_Name()
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() )
2200 delete[] (*it)->J1; (*it)->J1 = 0;
2201 delete[] (*it)->J2; (*it)->J2 = 0;
2202 delete[] (*it)->J3; (*it)->J3 = 0;
void G4ElectroNuclearCrossSection::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 2242 of file G4ElectroNuclearCrossSection.cc.
2244 outFile <<
"G4ElectroNuclearCrossSection provides the total inelastic\n"
2245 <<
"cross section for e- and e+ interactions with nuclei. The\n"
2246 <<
"cross sections are retrieved from a table which is\n"
2247 <<
"generated using the equivalent photon approximation. In\n"
2248 <<
"this approximation real gammas are produced from the virtual\n"
2249 <<
"ones generated at the electromagnetic vertex. This cross\n"
2250 <<
"section set is valid for incident electrons and positrons at\n"
2251 <<
"all energies.\n";
static const char* G4ElectroNuclearCrossSection::Default_Name |
( |
| ) |
|
|
inlinestatic |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 2260 of file G4ElectroNuclearCrossSection.cc.
References cacheEl_t::F, G4NistManager::GetAtomicMassAmu(), G4DynamicParticle::GetKineticEnergy(), cacheEl_t::H, cacheEl_t::J1, cacheEl_t::J2, cacheEl_t::J3, python.hepunit::MeV, python.hepunit::millibarn, N, and cacheEl_t::TH.
Referenced by G4ElectroVDNuclearModel::ApplyYourself().
2264 if (Energy<=EMi)
return 0.;
2279 lastUsedCacheEl->
F = GetFunctions(Aa,lastUsedCacheEl->
J1,lastUsedCacheEl->
J2,lastUsedCacheEl->
J3);
2280 lastUsedCacheEl->
H = alop*Aa*(1.-.072*std::log(Aa));
2281 lastUsedCacheEl->
TH = ThresholdEnergy(ZZ, N);
2288 lastUsedCacheEl->
F = el.
F;
2289 lastUsedCacheEl->
TH = el.
TH;
2290 lastUsedCacheEl->
H = el.
H;
2291 lastUsedCacheEl->
J1 = el.
J1;
2292 lastUsedCacheEl->
J2 = el.
J2;
2293 lastUsedCacheEl->
J3 = el.
J3;
2298 if ( lastE == Energy )
return lastSig*
millibarn;
2305 if ( Energy <= lastUsedCacheEl->TH )
2319 G4int blast=
static_cast<int>(shift);
2320 if(blast<0) blast=0;
2321 if(blast>=mL) blast=mL-1;
2324 G4double YNi=dlg1*lastUsedCacheEl->
J1[blast]-lgoe*(lastUsedCacheEl->
J2[blast]+lastUsedCacheEl->
J2[blast]-lastUsedCacheEl->
J3[blast]/lastE);
2325 G4double YNj=dlg1*lastUsedCacheEl->
J1[lastL]-lgoe*(lastUsedCacheEl->
J2[lastL]+lastUsedCacheEl->
J2[lastL]-lastUsedCacheEl->
J3[lastL]/lastE);
2326 lastSig= YNi+shift*(YNj-YNi);
2327 if(lastSig>YNj)lastSig=YNj;
2333 G4double term1=lastUsedCacheEl->
J1[mL]+lastUsedCacheEl->
H*HighEnergyJ1(lE);
2335 G4double term2=lastUsedCacheEl->
J2[mL]+lastUsedCacheEl->
H*HighEnergyJ2(lE, Energy);
2338 G4double term3=lastUsedCacheEl->
J3[mL]+lastUsedCacheEl->
H*HighEnergyJ3(lE, En2);
2340 lastSig=dlg1*term1-lgoe*(term2+term2-term3/lastE);
2343 if(lastSig<0.) lastSig = 0.;
G4double GetKineticEnergy() const
G4double GetAtomicMassAmu(const G4String &symb) const
G4double G4ElectroNuclearCrossSection::GetEquivalentPhotonEnergy |
( |
| ) |
|
Definition at line 2427 of file G4ElectroNuclearCrossSection.cc.
References cacheEl_t::F, G4cerr, G4endl, G4UniformRand, cacheEl_t::H, cacheEl_t::J1, cacheEl_t::J2, and cacheEl_t::J3.
Referenced by G4ElectroVDNuclearModel::ApplyYourself().
2429 if(lastSig <= 0.0) {
return 0.0; }
2436 for (
G4int i=lastUsedCacheEl->
F;i<=lastL;i++) {
2437 Y[i] = dlg1*lastUsedCacheEl->
J1[i]-lgoe*(lastUsedCacheEl->
J2[i]+lastUsedCacheEl->
J2[i]-lastUsedCacheEl->
J3[i]/lastE);
2438 if(Y[i] < 0.0) { Y[i] = 0.0; }
2442 if(lastSig>0.99*Y[lastL] && lastL<mL && Y[lastL]<1.E-30)
2444 G4cerr <<
"*HP*G4ElNucCS::GetEqPhotE:S=" << lastSig <<
">" << Y[lastL]
2445 <<
",l=" << lastL <<
">" << mL <<
G4endl;
2446 if(lastSig <= 0.0) {
return 0.0; }
2451 if (ris < Y[lastL]) {
2452 G4int j = lastUsedCacheEl->
F;
2454 while (ris > Yj && j < lastL) {
2460 phLE = lEMi + (j1 + (ris-Yi)/(Yj-Yi) )*dlnE;
2462 if (lastL < mL)
G4cerr <<
"**G4EleNucCS::GetEfPhE:L=" << lastL <<
",S="
2463 << lastSig <<
",Y=" << Y[lastL] <<
G4endl;
2464 G4double f = (ris-Y[lastL])/lastUsedCacheEl->
H;
2465 phLE=SolveTheEquation(f);
2469 G4cerr <<
"***G4ElectroNuclearCS::GetEquPhotE:N=" << currentN <<
",Z="
2470 << currentZ <<
", lpE" << phLE <<
">leE" << lastLE <<
",Sig="
2471 << lastSig <<
",rndSig=" << ris <<
",Beg=" << lastUsedCacheEl->
F <<
",End="
2472 << lastL <<
",Y=" << Y[lastL] <<
G4endl;
2473 if(lastLE<7.2) phLE=std::log(std::exp(lastLE)-.511);
2476 return std::exp(phLE);
G4GLOB_DLL std::ostream G4cerr
The documentation for this class was generated from the following files: