2264{
2266
2267 if (Energy <= sLowEnergyLimit || ZZ >= 120) return 0.;
2268
2269 if(ZZ!=lastZ)
2270 {
2271 lastE = 0.;
2272 lastG = 0.;
2273 lastZ = ZZ;
2274
2275
2276 if(!cache[ZZ]){
2277 lastUsedCacheEl->J1 =
new G4double[nE];
2278 lastUsedCacheEl->J2 =
new G4double[nE];
2279 lastUsedCacheEl->J3 =
new G4double[nE];
2280 G4double Aa = nistmngr->GetAtomicMassAmu(ZZ);
2282 lastUsedCacheEl->F = GetFunctions(Aa,lastUsedCacheEl->J1,lastUsedCacheEl->J2,lastUsedCacheEl->J3);
2283 lastUsedCacheEl->H = alop*Aa*(1.-.072*
G4Log(Aa));
2284 lastUsedCacheEl->TH = ThresholdEnergy(ZZ,
N);
2285 cacheEl_t* new_el = new cacheEl_t(*lastUsedCacheEl);
2286 cache[ZZ] = new_el;
2287 }
2288 else
2289 {
2290 const cacheEl_t& el = *(cache[ZZ]);
2291 lastUsedCacheEl->F = el.
F;
2292 lastUsedCacheEl->TH = el.
TH;
2293 lastUsedCacheEl->H = el.
H;
2294 lastUsedCacheEl->J1 = el.
J1;
2295 lastUsedCacheEl->J2 = el.
J2;
2296 lastUsedCacheEl->J3 = el.
J3;
2297 }
2298 }
2299 else
2300 {
2301 if ( lastE == Energy ) return lastSig*millibarn;
2302 }
2303
2304
2305
2306 lastE=Energy;
2307
2308 if ( Energy <= lastUsedCacheEl->TH )
2309 {
2310 lastSig=0.;
2311 return 0.;
2312 }
2313
2315
2316 lastG=lE-lmel;
2319 if(lE<lEMa)
2320 {
2323 if(blast<0) blast=0;
2324 if(blast>=mLL) blast=mLL-1;
2325 shift-=blast;
2326 lastL=blast+1;
2327 G4double YNi=dlg1*lastUsedCacheEl->J1[blast]-lgoe*(lastUsedCacheEl->J2[blast]+lastUsedCacheEl->J2[blast]-lastUsedCacheEl->J3[blast]/lastE);
2328 G4double YNj=dlg1*lastUsedCacheEl->J1[lastL]-lgoe*(lastUsedCacheEl->J2[lastL]+lastUsedCacheEl->J2[lastL]-lastUsedCacheEl->J3[lastL]/lastE);
2329 lastSig= YNi+shift*(YNj-YNi);
2330 if(lastSig>YNj)lastSig=YNj;
2331 }
2332 else
2333 {
2334 lastL=mLL;
2335
2336 G4double term1=lastUsedCacheEl->J1[mLL]+lastUsedCacheEl->H*HighEnergyJ1(lE);
2337
2338 G4double term2=lastUsedCacheEl->J2[mLL]+lastUsedCacheEl->H*HighEnergyJ2(lE, Energy);
2339
2341 G4double term3=lastUsedCacheEl->J3[mLL]+lastUsedCacheEl->H*HighEnergyJ3(lE, En2);
2342
2343 lastSig=dlg1*term1-lgoe*(term2+term2-term3/lastE);
2344 }
2345
2346 if(lastSig<0.) lastSig = 0.;
2347
2348 return lastSig*millibarn;
2349}
G4double G4Log(G4double x)
G4double GetKineticEnergy() const