36#include "G4InclAblaDataFile.hh"
53 varntp =
new G4VarNtp();
118 G4double alrem = 0.0, berem = 0.0, garem = 0.0;
125 for(
G4int init_i = 0; init_i < 4; init_i++) {
126 csdir1[init_i] = 0.0;
127 csdir2[init_i] = 0.0;
129 pfis_rem[init_i] = 0.0;
130 pf1_rem[init_i] = 0.0;
131 for(
G4int init_j = 0; init_j < 4; init_j++) {
132 R[init_i][init_j] = 0.0;
136 G4double plab1 = 0.0, gam1 = 0.0, eta1 = 0.0;
137 G4double plab2 = 0.0, gam2 = 0.0, eta2 = 0.0;
144 G4int mempaw = 0, memiv = 0;
166 G4int lma_pf1 = 0, lmi_pf1 = 0;
167 G4int lma_pf2 = 0, lmi_pf2 = 0;
170 G4double cst = 0.0, sst = 0.0, csf = 0.0, ssf = 0.0;
172 G4double zf = 0.0, af = 0.0, mtota = 0.0, pleva = 0.0, pxeva = 0.0, pyeva = 0.0;
174 G4int inum = eventnumber;
196 G4double pcorem = std::sqrt(erecrem*(erecrem +2.*938.2796*nucleusA));
199 if(esrem >= 1.0e-3) {
200 evapora(zprf,aprf,ee,jprf, &zf, &af, &mtota, &pleva, &pxeva, &pyeva, &ff, &inttype, &inum);
220 trem = double(erecrem);
221 remmass =
pace2(aprf,zprf) + aprf*uma - zprf*melec;
225 G4double gamrem = (remmass + trem)/remmass;
226 G4double etrem = std::sqrt(trem*(trem + 2.0*remmass))/remmass;
232 remmass =
pace2(aprf,zprf) + aprf*uma - zprf*melec+double(esrem);
235 mglms(aprf,zprf,0,&el);
236 remmass = zprf*fmp + (aprf-zprf)*fmn + el +
double(esrem);
238 gamrem = std::sqrt(std::pow(pcorem,2) + std::pow(remmass,2))/remmass;
240 etrem = pcorem/remmass;
243 alrem = pxrem/pcorem;
245 berem = pyrem/pcorem;
247 garem = pzrem/pcorem;
262 for(
G4int iloc = 1; iloc <= volant->
iv; iloc++) {
266 mglms(
double(volant->
acv[iloc]),
double(volant->
zpcv[iloc]),0,&el);
268 masse = volant->
zpcv[iloc]*fmp + (volant->
acv[iloc] - volant->
zpcv[iloc])*fmn + el;
270 bil_e = bil_e + std::sqrt(std::pow(volant->
pcv[iloc],2) + std::pow(masse,2));
272 bil_px = bil_px + volant->
pcv[iloc]*(volant->
xcv[iloc]);
273 bil_py = bil_py + volant->
pcv[iloc]*(volant->
ycv[iloc]);
274 bil_pz = bil_pz + volant->
pcv[iloc]*(volant->
zcv[iloc]);
280 if(volant->
iv != 0) {
281 if(verboseLevel > 2) {
282 G4cout <<
"varntp->ntrack = " << varntp->ntrack <<
G4endl;
283 G4cout <<
"1st Translab: Adding indices from " << ndec <<
" to " << volant->
iv <<
G4endl;
285 nopart = varntp->ntrack - 1;
286 translab(gamrem,etrem,csrem,nopart,ndec);
287 if(verboseLevel > 2) {
289 G4cout <<
"varntp->ntrack = " << varntp->ntrack <<
G4endl;
292 nbpevap = volant->
iv;
305 fissionDistri(af,zf,ee,aff1,zff1,eff1,v1,aff2,zff2,eff2,v2);
308 G4int na_f = int(std::floor(af + 0.5));
309 G4int nz_f = int(std::floor(zf + 0.5));
310 varntp->izfis = nz_f;
311 varntp->iafis = na_f;
312 G4int na_pf1 = int(std::floor(aff1 + 0.5));
313 G4int nz_pf1 = int(std::floor(zff1 + 0.5));
314 G4int na_pf2 = int(std::floor(aff2 + 0.5));
315 G4int nz_pf2 = int(std::floor(zff2 + 0.5));
317 if((na_f != (na_pf1+na_pf2)) || (nz_f != (nz_pf1+nz_pf2))) {
318 if(verboseLevel > 2) {
319 G4cout <<
"problemes arrondis dans la fission " <<
G4endl;
321 G4cout << af <<
" , " << zf <<
" , " << aff1 <<
" , " << zff1 <<
" , " << aff2 <<
" , " << zff2 <<
G4endl;
323 G4cout << na_f <<
" , " << nz_f <<
" , " << na_pf1 <<
" , " << nz_pf1 <<
" , " << na_pf2 <<
" , " << nz_pf2 <<
G4endl;
333 varntp->estfis = ee + ef;
346 G4double massef = zf*fmp + (af - zf)*fmn + el + ee + ef;
348 mglms(
double(aff1),
double(zff1),0,&el);
350 G4double masse1 = zff1*fmp + (aff1-zff1)*fmn + el + eff1;
352 mglms(aff2,zff2,0,&el);
354 G4double masse2 = zff2*fmp + (aff2 - zff2)*fmn + el + eff2;
357 G4double b = massef - masse1 - masse2;
360 if(verboseLevel > 2) {
362 G4cout << inum<<
" , " << af<<
" , " <<zf<<
" , " <<massef<<
" , " <<aff1<<
" , " <<zff1<<
" , " <<masse1<<
" , " <<aff2<<
" , " <<zff2<<
" , " << masse2 <<
G4endl;
365 G4double t1 = b*(b + 2.0*masse2)/(2.0*massef);
367 G4double p1 = std::sqrt(t1*(t1 + 2.0*masse1));
372 ctet1 = 2.0*rndm - 1.0;
374 phi1 = rndm*2.0*3.141592654;
377 G4double peva = std::pow(pxeva,2) + std::pow(pyeva,2) + std::pow(pleva,2);
378 G4double gamfis = std::sqrt(std::pow(massef,2) + peva)/massef;
380 peva = std::sqrt(peva);
389 sitet = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2))/peva;
394 G4double siphi = pyeva/(sitet*peva);
395 G4double csphi = pxeva/(sitet*peva);
397 R[1][1] = cstet*csphi;
399 R[1][3] = sitet*csphi;
400 R[2][1] = cstet*siphi;
402 R[2][3] = sitet*siphi;
420 if((zff1 <= 0.0) || (aff1 <= 0.0) || (aff1 < zff1)) {
421 if(verboseLevel > 2) {
422 G4cout <<
"zf = " << zf <<
" af = " << af <<
"ee = " << ee <<
"zff1 = " << zff1 <<
"aff1 = " << aff1 <<
G4endl;
427 epf1_in = double(eff1);
433 G4double zf1, af1, malpha1, ffpleva1, ffpxeva1, ffpyeva1;
435 evapora(zff1, aff1, epf1_out, 0.0, &zf1, &af1, &malpha1, &ffpleva1,
436 &ffpxeva1, &ffpyeva1, &ff1, &ftype1, &inum);
439 volant->
iv = volant->
iv + 1;
442 volant->
acv[volant->
iv] = af1;
443 volant->
zpcv[volant->
iv] = zf1;
444 if(verboseLevel > 2) {
445 G4cout <<
"Added fission fragment: a = " << volant->
acv[volant->
iv] <<
" z = " << volant->
zpcv[volant->
iv] <<
G4endl;
447 peva = std::sqrt(std::pow(ffpxeva1,2) + std::pow(ffpyeva1,2) + std::pow(ffpleva1,2));
449 volant->
pcv[volant->
iv] = peva;
451 volant->
xcv[volant->
iv] = ffpxeva1/peva;
452 volant->
ycv[volant->
iv] = ffpyeva1/peva;
453 volant->
zcv[volant->
iv] = ffpleva1/peva;
456 volant->
xcv[volant->
iv] = 1.0;
457 volant->
ycv[volant->
iv] = 0.0;
458 volant->
zcv[volant->
iv] = 0.0;
466 for(
G4int iloc = nbpevap + 1; iloc <= volant->
iv; iloc++) {
469 masse = volant->
zpcv[iloc]*fmp + (volant->
acv[iloc] - volant->
zpcv[iloc])*fmn + el;
471 bil1_e = bil1_e + std::sqrt(std::pow(volant->
pcv[iloc],2) + std::pow(masse,2));
473 bil1_px = bil1_px + volant->
pcv[iloc]*(volant->
xcv[iloc]);
474 bil1_py = bil1_py + volant->
pcv[iloc]*(volant->
ycv[iloc]);
475 bil1_pz = bil1_pz + volant->
pcv[iloc]*(volant->
zcv[iloc]);
480 translabpf(masse1,t1,p1,ctet1,phi1,gamfis,etfis,R,&plab1,&gam1,&eta1,csdir1);
483 if(verboseLevel > 2) {
484 G4cout <<
"2nd Translab (pf1 evap): Adding indices from " << nbpevap+1 <<
" to " << volant->
iv <<
G4endl;
486 nopart = varntp->ntrack - 1;
487 translab(gam1,eta1,csdir1,nopart,nbpevap+1);
488 if(verboseLevel > 2) {
489 G4cout <<
"After translab call... varntp->ntrack = " << varntp->ntrack <<
G4endl;
493 lmi_pf1 = nopart + nbpevap + 1;
494 lma_pf1 = nopart + volant->
iv;
495 nbpevap = volant->
iv;
500 if((zff2 <= 0.0) || (aff2 <= 0.0) || (aff2 <= zff2)) {
501 if(verboseLevel > 2) {
502 G4cout << zf <<
" " << af <<
" " << ee <<
" " << zff2 <<
" " << aff2 <<
G4endl;
513 G4double zf2, af2, malpha2, ffpleva2, ffpxeva2, ffpyeva2;
515 evapora(zff2,aff2,epf2_out,0.0,&zf2,&af2,&malpha2,&ffpleva2,
516 &ffpxeva2,&ffpyeva2,&ff2,&ftype2,&inum);
518 volant->
iv = volant->
iv + 1;
519 volant->
acv[volant->
iv] = af2;
520 volant->
zpcv[volant->
iv] = zf2;
521 if(verboseLevel > 2) {
522 G4cout <<
"Added fission fragment: a = " << volant->
acv[volant->
iv] <<
" z = " << volant->
zpcv[volant->
iv] <<
G4endl;
524 peva = std::sqrt(std::pow(ffpxeva2,2) + std::pow(ffpyeva2,2) + std::pow(ffpleva2,2));
526 volant->
pcv[volant->
iv] = peva;
529 volant->
xcv[volant->
iv] = ffpxeva2/peva;
530 volant->
ycv[volant->
iv] = ffpyeva2/peva;
531 volant->
zcv[volant->
iv] = ffpleva2/peva;
534 volant->
xcv[volant->
iv] = 1.0;
535 volant->
ycv[volant->
iv] = 0.0;
536 volant->
zcv[volant->
iv] = 0.0;
544 for(
G4int iloc = nbpevap + 1; iloc <= volant->
iv; iloc++) {
546 masse = volant->
zpcv[iloc]*fmp + (volant->
acv[iloc] - volant->
zpcv[iloc])*fmn + el;
547 bil2_e = bil2_e + std::sqrt(std::pow(volant->
pcv[iloc],2) + std::pow(masse,2));
549 bil2_px = bil2_px + volant->
pcv[iloc]*(volant->
xcv[iloc]);
550 bil2_py = bil2_py + volant->
pcv[iloc]*(volant->
ycv[iloc]);
551 bil2_pz = bil2_pz + volant->
pcv[iloc]*(volant->
zcv[iloc]);
559 assert(std::fabs(ctet2) <= 1.0);
561 phi2 =
dmod(phi1+3.141592654,6.283185308);
563 G4double p2 = std::sqrt(t2*(t2+2.0*masse2));
569 translabpf(masse2,t2,p2,ctet2,phi2,gamfis,etfis,R,&plab2,&gam2,&eta2,csdir2);
573 if(verboseLevel > 2) {
574 G4cout <<
"3rd Translab (pf2 evap): Adding indices from " << nbpevap+1 <<
" to " << volant->
iv <<
G4endl;
576 nopart = varntp->ntrack - 1;
577 translab(gam2,eta2,csdir2,nopart,nbpevap+1);
578 lmi_pf2 = nopart + nbpevap + 1;
579 lma_pf2 = nopart + volant->
iv;
585 for(
G4int iloc = 1; iloc <= 3; iloc++) {
586 pfis_rem[iloc] = 0.0;
589 lorab(gamfis,etfis,massef,pfis_rem,&efis_rem,pfis_trav);
590 rotab(R,pfis_trav,pfis_rem);
592 stet1 = std::sqrt(1.0 - std::pow(ctet1,2));
594 pf1_rem[1] = p1*stet1*std::cos(phi1);
595 pf1_rem[2] = p1*stet1*std::sin(phi1);
596 pf1_rem[3] = p1*ctet1;
598 lorab(gamfis,etfis,masse1+t1,pf1_rem,&e1_rem,pfis_trav);
599 rotab(R,pfis_trav,pf1_rem);
601 stet2 = std::sqrt(1.0 - std::pow(ctet2,2));
602 assert(std::pow(ctet2,2) >= 0.0);
603 assert(std::pow(ctet2,2) <= 1.0);
608 pf2_rem[1] = p2*stet2*std::cos(phi2);
609 pf2_rem[2] = p2*stet2*std::sin(phi2);
610 pf2_rem[3] = p2*ctet2;
611 lorab(gamfis,etfis,masse2+t2,pf2_rem,&e2_rem,pfis_trav);
612 rotab(R,pfis_trav,pf2_rem);
614 bil_e = remmass - efis_rem - bil_e;
615 bil_px = bil_px + pfis_rem[1];
616 bil_py = bil_py + pfis_rem[2];
617 bil_pz = bil_pz + pfis_rem[3];
625 if((lma_pf1-lmi_pf1) != 0) {
626 G4double bil_e_pf1 = e1_rem - epf1_out;
630 for(
G4int ipf1 = lmi_pf1; ipf1 <= lma_pf1; ipf1++) {
631 bil_e_pf1 = bil_e_pf1 - (std::pow(varntp->plab[ipf1],2) + std::pow(varntp->enerj[ipf1],2))/(2.0*(varntp->enerj[ipf1]));
632 cst = std::cos(varntp->tetlab[ipf1]/57.2957795);
633 sst = std::sin(varntp->tetlab[ipf1]/57.2957795);
634 csf = std::cos(varntp->philab[ipf1]/57.2957795);
635 ssf = std::sin(varntp->philab[ipf1]/57.2957795);
636 bil_px_pf1 = bil_px_pf1 - varntp->plab[ipf1]*sst*csf;
637 bil_py_pf1 = bil_py_pf1 - varntp->plab[ipf1]*sst*ssf;
638 bil_pz_pf1 = bil_pz_pf1 - varntp->plab[ipf1]*cst;
642 if((lma_pf2-lmi_pf2) != 0) {
643 G4double bil_e_pf2 = e2_rem - epf2_out;
647 for(
G4int ipf2 = lmi_pf2; ipf2 <= lma_pf2; ipf2++) {
648 bil_e_pf2 = bil_e_pf2 - (std::pow(varntp->plab[ipf2],2) + std::pow(varntp->enerj[ipf2],2))/(2.0*(varntp->enerj[ipf2]));
649 G4double cst = std::cos(varntp->tetlab[ipf2]/57.2957795);
650 G4double sst = std::sin(varntp->tetlab[ipf2]/57.2957795);
651 G4double csf = std::cos(varntp->philab[ipf2]/57.2957795);
652 G4double ssf = std::sin(varntp->philab[ipf2]/57.2957795);
653 bil_px_pf2 = bil_px_pf2 - varntp->plab[ipf2]*sst*csf;
654 bil_py_pf2 = bil_py_pf2 - varntp->plab[ipf2]*sst*ssf;
655 bil_pz_pf2 = bil_pz_pf2 - varntp->plab[ipf2]*cst;
662 if(verboseLevel > 2) {
663 G4cout <<
"4th Translab: Adding indices from " << memiv <<
" to " << volant->
iv <<
G4endl;
665 translab(gamrem,etrem,csrem,mempaw,memiv);
673 if(verboseLevel > 2) {
676 volant->
iv = volant->
iv + 1;
677 volant->
acv[volant->
iv] = af;
678 volant->
zpcv[volant->
iv] = zf;
679 G4double peva = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2)+std::pow(pleva,2));
681 volant->
pcv[volant->
iv] = peva;
683 volant->
xcv[volant->
iv] = pxeva/peva;
684 volant->
ycv[volant->
iv] = pyeva/peva;
685 volant->
zcv[volant->
iv] = pleva/peva;
688 volant->
xcv[volant->
iv] = 1.0;
689 volant->
ycv[volant->
iv] = 0.0;
690 volant->
zcv[volant->
iv] = 0.0;
696 trem = double(erecrem);
708 for(
G4int j = 1; j <= volant->
iv; j++) {
709 if(volant->
acv[j] == 0) {
710 if(verboseLevel > 2) {
715 if(volant->
acv[j] > 0) {
716 assert(volant->
acv[j] != 0);
719 fmcv = volant->
zpcv[j]*fmp + (volant->
acv[j] - volant->
zpcv[j])*fmn + el;
720 e_evapo = e_evapo + std::sqrt(std::pow(volant->
pcv[j],2) + std::pow(fmcv,2));
730 G4double gamrem = std::sqrt(std::pow(pcorem,2)+std::pow(remmass,2))/remmass;
734 if(verboseLevel > 2) {
735 G4cout <<
"5th Translab (no fission): Adding indices from " << 1 <<
" to " << volant->
iv <<
G4endl;
737 nopart = varntp->ntrack - 1;
738 translab(gamrem,etrem,csrem,nopart,1);
926 if(verboseLevel > 3) {
945 G4InclAblaDataFile *dataInterface =
new G4InclAblaDataFile();
946 if(dataInterface->readData() ==
true) {
947 if(verboseLevel > 0) {
948 G4cout <<
"G4Abla: Datafiles read successfully." <<
G4endl;
955 for(
int z = 0; z < 98; z++) {
956 for(
int n = 0; n < 154; n++) {
957 ecld->
ecfnz[n][z] = 0.e0;
958 ec2sub->
ecnz[n][z] = dataInterface->getEcnz(n,z);
959 ecld->
ecgnz[n][z] = dataInterface->getEcnz(n,z);
960 ecld->
alpha[n][z] = dataInterface->getAlpha(n,z);
961 ecld->
vgsld[n][z] = dataInterface->getVgsld(n,z);
965 for(
int z = 0; z < 500; z++) {
966 for(
int a = 0; a < 500; a++) {
967 pace->
dm[z][a] = dataInterface->getPace2(z,a);
971 delete dataInterface;
978 G4double ponq = 0.0, dn = 0.0, n = 0.0, dz = 0.0;
980 if(((std::fabs(bet)-1.15) < 0) || ((std::fabs(bet)-1.15) == 0)) {
984 if((std::fabs(bet)-1.15) > 0) {
990 dz = std::fabs(z - 82.0);
992 dn = std::fabs(n-126.e0);
995 dn = std::fabs(n - 82.0);
998 bet = 0.022 + 0.003*dn + 0.005*dz;
1000 sig = 25.0*std::pow(bet,2) * sig;
1003 ponq = (u - ucr)/dcr;
1011 (*qr) = 1.0/(1.0 + std::exp(ponq)) * (sig - 1.0) + 1.0;
1025 G4int a1 = 0, z1 = 0;
1026 G4double xv = 0.0, xs = 0.0, xc = 0.0, xa = 0.0;
1031 if ((a <= 0.01) || (z < 0.01)) {
1036 xs = 17.23*std::pow(a,(2.0/3.0));
1039 xc = 0.7*z*(z-1.0)*std::pow((a-1.0),(-1.e0/3.e0));
1046 xa = 23.6*(std::pow((a-2.0*z),2)/a);
1047 (*el) = xv+xs+xc+xa;
1074 if ( (a1 <= 0) || (z1 <= 0) || ((a1-z1) <= 0) ) {
1084 (*el) =
eflmac(a1,z1,0,refopt4);
1088 (*el) = (*el) + ec2sub->
ecnz[a1-z1][z1];
1108 G4double x = 0.0, v = 0.0, dx = 0.0;
1110 const G4int alpha2Size = 37;
1112 G4double alpha2[alpha2Size] = {0.0, 2.5464e0, 2.4944e0, 2.4410e0, 2.3915e0, 2.3482e0,
1113 2.3014e0, 2.2479e0, 2.1982e0, 2.1432e0, 2.0807e0, 2.0142e0, 1.9419e0,
1114 1.8714e0, 1.8010e0, 1.7272e0, 1.6473e0, 1.5601e0, 1.4526e0, 1.3164e0,
1115 1.1391e0, 0.9662e0, 0.8295e0, 0.7231e0, 0.6360e0, 0.5615e0, 0.4953e0,
1116 0.4354e0, 0.3799e0, 0.3274e0, 0.2779e0, 0.2298e0, 0.1827e0, 0.1373e0,
1117 0.0901e0, 0.0430e0, 0.0000e0};
1130 v = (x - 0.3)/dx + 1.0;
1141 return(alpha2[index] + (alpha2[index+1] - alpha2[index]) / dx * ( x - (0.3e0 + dx*(index-1))));
1156 G4double aa = 0.0, zz = 0.0, i = 0.0;
1161 i = double(a-2*z) / aa;
1165 fissilityResult = std::pow(zz,2) / aa /50.8830e0 / (1.0e0 - 1.7826e0 * std::pow(i,2));
1170 fissilityResult = std::pow(zz,2) / aa * std::pow((49.22e0*(1.e0 - 0.3803e0*std::pow(i,2) - 20.489e0*std::pow(i,4))),(-1));
1175 fissilityResult = std::pow(zz,2) / aa /(48.e0*(1.e0 - 17.22e0*std::pow(i,4)));
1178 return fissilityResult;
1192 G4int ff = (*ff_par);
1193 G4int inttype = (*inttype_par);
1194 G4int inum = (*inum_par);
1288 static G4int sortie = 0;
1289 static G4double epsiln = 0.0, probp = 0.0, probn = 0.0, proba = 0.0, ptotl = 0.0, e = 0.0;
1290 static G4double sn = 0.0, sbp = 0.0, sba = 0.0, x = 0.0, amoins = 0.0, zmoins = 0.0;
1291 G4double ecn = 0.0, ecp = 0.0,eca = 0.0, bp = 0.0, ba = 0.0;
1294 static G4int itest = 0;
1297 static G4int k = 0, j = 0, il = 0;
1299 static G4double ctet1 = 0.0, stet1 = 0.0, phi1 = 0.0;
1300 static G4double sbfis = 0.0, rnd = 0.0;
1304 static G4int irndm = 0;
1306 static G4double pc = 0.0, malpha = 0.0;
1331 direct(zf,af,ee,jprf,&probp,&probn,&proba,&probf,&ptotl,
1332 &sn,&sbp,&sba,&ecn,&ecp,&eca,&bp,&ba,inttype,inum,itest);
1337 assert((eca+ba) >= 0);
1338 assert((ecp+bp) >= 0);
1351 barfit(k,k+j,il,&sbfis,&segs,&selmax);
1366 if ((sortie == 1) || (ptotl == 0.e0)) {
1367 e =
dmin1(sn,sbp,sba);
1369 if(verboseLevel > 2) {
1370 G4cout <<
"erreur a la sortie evapora,e>1.e30,af=" << af <<
" zf=" << zf <<
G4endl;
1380 else if (sbp == e) {
1384 else if (sba == e) {
1401 x = double(
haz(1))*ptotl;
1417 assert((std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) >= 0);
1418 pc = std::sqrt(std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) * 3.72834e3;
1423 volant->
iv = volant->
iv + 1;
1424 volant->
acv[volant->
iv] = 4.;
1425 volant->
zpcv[volant->
iv] = 2.;
1426 volant->
pcv[volant->
iv] = pc;
1428 else if (x < proba+probp) {
1436 assert((std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) >= 0);
1437 pc = std::sqrt(std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) * 9.3827e2;
1441 volant->
iv = volant->
iv + 1;
1442 volant->
acv[volant->
iv] = 1.0;
1443 volant->
zpcv[volant->
iv] = 1.;
1444 volant->
pcv[volant->
iv] = pc;
1446 else if (x < proba+probp+probn) {
1454 assert((std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) >= 0);
1455 pc = std::sqrt(std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) * 9.3956e2;
1460 volant->
iv = volant->
iv + 1;
1461 volant->
acv[volant->
iv] = 1.;
1462 volant->
zpcv[volant->
iv] = 0.;
1463 volant->
pcv[volant->
iv] = pc;
1484 G4cout <<
"sn,sbp,sba,ef" << sn <<
"," << sbp <<
"," << sba <<
"," << ef <<
G4endl;
1485 G4cout <<
"probn,probp,proba,probf,ptotl " <<
","<< probn <<
","<< probp <<
","<< proba <<
","<< probf <<
","<< ptotl <<
G4endl;
1495 mtota = mtota + malpha;
1499 ctet1 = 2.0*rnd - 1.0;
1501 phi1 = rnd*2.0*3.141592654;
1502 stet1 = std::sqrt(1.0 - std::pow(ctet1,2));
1504 volant->
xcv[volant->
iv] = stet1*std::cos(phi1);
1505 volant->
ycv[volant->
iv] = stet1*std::sin(phi1);
1506 volant->
zcv[volant->
iv] = ctet1;
1507 pxeva = pxeva - pc * volant->
xcv[volant->
iv];
1508 pyeva = pyeva - pc * volant->
ycv[volant->
iv];
1509 pleva = pleva - pc * ctet1;
1514 if ((af < 2.5) || (ff == 1)) {
1522 (*mtota_par) = mtota;
1523 (*pleva_par) = pleva;
1524 (*pxeva_par) = pxeva;
1525 (*pyeva_par) = pyeva;
1527 (*inttype_par) = inttype;
1622 static G4int afp = 0;
1645 static G4double hbar = 6.582122e-22;
1647 static G4int il = 0;
1648 static G4int imaxwell = 0;
1649 static G4int in = 0;
1650 static G4int iz = 0;
1695 if (fiss->
bet <= 1.0e-16) {
1718 mglw(a-1.0,zprf,&ma1z);
1719 mglw(a-1.0,zprf-1.0,&ma1z1);
1720 mglw(a-4.0,zprf-2.0,&ma4z2);
1730 sa = ma4z2 - maz - 28.29688;
1739 bp = 1.44*(zprf - 1.0)/(2.1*std::pow((a - 1.0),(1.0/3.0)) + 0.0);
1752 ba = 2.88*(zprf - 2.0)/(2.2*std::pow((a - 4.0),(1.0/3.0)) + 0.0);
1761 if (fiss->
ifis > 0) {
1770 barfit(k,k+j,il,&sbfis,&segs,&selmax);
1775 fb->
efa[j][k] = double(sbfis) - ecld->
ecgnz[j][k];
1779 fb->
efa[j][k] = double(sbfis);
1789 if (fb->
efa[j][k] < 0.0) {
1790 if(verboseLevel > 2) {
1793 fb->
efa[j][k] = 0.0;
1832 bshell = ecld->
ecfnz[in][iz];
1854 densniv(a,zprf,ee,ef,&densf,bshell,bs,bk,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
1862 bshell = ecld->
ecgnz[in][iz-1] - ecld->
vgsld[in][iz-1];
1863 defbet = 1.5 * (ecld->
alpha[in][iz-1]);
1866 densniv(a-1.0,zprf-1.0e0,ee,sbp,&densp, bshell,1.e0,1.e0,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
1870 if (imaxwell == 1) {
1885 ecp=std::sqrt(rnd)*(eer-sbp);
1889 if((ecp+sbp) > eer) {
1908 bshell = ecld->
ecgnz[in-1][iz] - ecld->
vgsld[in-1][iz];
1909 defbet = 1.5e0 * (ecld->
alpha[in-1][iz]);
1912 densniv(a-1.0,zprf,ee,sn,&densn,bshell, 1.e0,1.e0,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
1915 if (imaxwell == 1) {
1931 ecn = std::sqrt(rnd)*(eer-sn);
1941 if((ecn + sn) <= eer) {
1955 if ((in >= 3) && (iz >= 3)) {
1956 bshell = ecld->
ecgnz[in-2][iz-2] - ecld->
vgsld[in-2][iz-2];
1957 defbet = 1.5 * (ecld->
alpha[in-2][iz-2]);
1960 densniv(a-4.0,zprf-2.0e0,ee,sba,&densa,bshell,1.e0,1.e0,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
1964 if (imaxwell == 1) {
1978 eca=std::sqrt(rnd)*(eer-sba);
1982 if((eca+sba) > eer) {
2015 if ((a < 50.e0) || (ee > edyn)) {
2020 bshell = ecld->
ecgnz[in][iz] - ecld->
vgsld[in][iz];
2021 defbet = 1.5e0 * (ecld->
alpha[in][iz]);
2024 densniv(a,zprf,ee,0.0e0,&densg,bshell,1.e0,1.e0,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
2028 if ( densg > 0.e0) {
2031 gp = (std::pow(a,(2.0/3.0))/fiss->
akap)*densp/densg/pi*std::pow(pt,2);
2032 gn = (std::pow(a,(2.0/3.0))/fiss->
akap)*densn/densg/pi*std::pow(nt,2);
2033 ga = (std::pow(a,(2.0/3.0))/fiss->
akap)*densa/densg/pi*2.0*std::pow(at,2);
2034 gf = densf/densg/pi/2.0*ft;
2045 G4cout <<
"gn,gp,ga,gf " << gn <<
","<< gp <<
","<< ga <<
","<< gf <<
G4endl;
2049 if(verboseLevel > 2) {
2050 G4cout <<
"direct: densg <= 0.e0 " << a <<
","<< zprf <<
","<< ee <<
G4endl;
2054 gsum = ga + gp + gn;
2093 ra = densa*2.0/densn*std::pow((at/nt),2);
2099 rn = densn/densp*std::pow((nt/pt),2);
2101 ra = densa*2.0/densp*std::pow((at/pt),2);
2111 if (fiss->
bet <= 1.0e-16) {
2115 else if (sbf > 0.0e0) {
2131 wfex = (tauc - tsum)/ts1;
2137 wf = std::exp( -wfex);
2145 if(verboseLevel > 2) {
2146 G4cout <<
"tsum,wf,cf " << tsum <<
","<< wf <<
","<< cf <<
G4endl;
2153 dconst = 12.0/std::sqrt(a);
2160 dconst = dconst*parc;
2165 if ((ee <= 17.e0) && (fiss->
optles == 1) && (iz >= 90) && (in >= 134)) {
2167 gngf = std::pow(a,(2.0/3.0))*tconst/10.0*std::exp((ef-sn+dconst)/tconst);
2190 assert(gn > 0 || (gf != 0 && cf != 0));
2207 denomi = rp+rn+ra+rf;
2225 assert(std::fabs(probf) <= 1.0);
2233 probp = probp * (wf + (1.e0-wf)/(1.e0-probf));
2234 probn = probn * (wf + (1.e0-wf)/(1.e0-probf));
2235 proba = proba * (wf + (1.e0-wf)/(1.e0-probf));
2242 ptotl = probp+probn+proba+probf;
2250 (*probp_par) = probp;
2251 (*probn_par) = probn;
2252 (*proba_par) = proba;
2253 (*probf_par) = probf;
2254 (*ptotl_par) = ptotl;
2343 G4double pi6 = std::pow(3.1415926535,2) / 6.0;
2351 pa = (ald->
av)*a + (ald->
as)*std::pow(a,(2.e0/3.e0)) + (ald->
ak)*std::pow(a,(1.e0/3.e0));
2354 pa = (ald->
av)*a + (ald->
as)*bs*std::pow(a,(2.e0/3.e0)) + (ald->
ak)*bk*std::pow(a,(1.e0/3.e0));
2357 fp = 0.01377937231e0 * std::pow(a,(5.e0/3.e0)) * (1.e0 + defbet/3.e0);
2367 if (esous > 1.0e30) {
2390 deltpp = -0.25e0* std::pow((delta0/std::sqrt(a)),2) * pa /pi6 + 2.e0*delta0/std::sqrt(a);
2395 e = e - delta0/std::sqrt(a);
2400 e = e - 2.0*delta0/std::sqrt(a);
2420 ponfe = -2.5*pa*e*std::pow(a,(-4.0/3.0));
2422 if (ponfe < -700.0) {
2425 fe = 1.0 - std::exp(ponfe);
2428 he = 1.0 - std::pow((1.0 - e/ecr),2);
2436 ecor = e + deltau*
fe + deltpp*he;
2447 y1 = std::sqrt(pa*ecor);
2449 for(
int j = 0; j < 5; j++) {
2450 y2 = pa*ecor*(1.e0-std::exp(-y1));
2460 (*dens) = std::exp(y0*ecor)/ (std::pow((std::pow(ecor,3)*y0),0.5)*std::pow((1.0-0.5*y0*ecor*std::exp(-y1)),0.5))* std::exp(y1)*(1.0-std::exp(-y1))*0.1477045;
2463 y11 = std::sqrt(pa*ecor1);
2465 for(
int j = 0; j < 7; j++) {
2466 y21 = pa*ecor1*(1.0-std::exp(-y11));
2468 y11 = std::sqrt(y21);
2474 (*dens) = (*dens)*std::pow((y01/y0),1.5);
2475 (*temp) = (*temp)*std::pow((y01/y0),1.5);
2479 ponniv = 2.0*std::sqrt(pa*ecor);
2481 if (ponniv > 700.0) {
2486 (*dens) = std::pow(pa,(-0.25e0))*std::pow(ecor,(-1.25e0))*std::exp(ponniv) * 0.1477045e0;
2488 (*temp) = std::sqrt(ecor/pa);
2497 qrot(z,a,defbet,sig,ecor,&qr);
2503 (*dens) = (*dens) * qr;
2514 G4double nms = 0.0, ims = 0.0, ksims = 0.0, xms = 0.0, ums = 0.0;
2517 ims = (nms-zms)/ams;
2518 ksims= 50.15e0 * (1.- 1.78 * std::pow(ims,2));
2519 xms = std::pow(zms,2) / (ams * ksims);
2520 ums = 0.368e0-5.057e0*xms+8.93e0*std::pow(xms,2)-8.71*std::pow(xms,3);
2521 return(0.7322e0*std::pow(zms,2)/std::pow(ams,(0.333333e0))*std::pow(10.e0,ums));
2537 for(
int i = 2; i < n; i++) {
2538 pl[i] = ((2*double(i+1) - 3.0)*x*pl[i-1] - (
double(i+1) - 2.0)*pl[i-2])/(double(i+1)-1.0);
2564 G4double z = 0.0, n = 0.0, a = 0.0, av = 0.0, as = 0.0;
2565 G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b1 = 0.0, b3 = 0.0;
2566 G4double f = 0.0, ca = 0.0, w = 0.0, dp = 0.0, dn = 0.0, dpn = 0.0, efl = 0.0;
2567 G4double rmac = 0.0, bs = 0.0, h = 0.0, r0 = 0.0, kf = 0.0, ks = 0.0;
2568 G4double kv = 0.0, rp = 0.0, ay = 0.0, aden = 0.0, x0 = 0.0, y0 = 0.0;
2569 G4double mh = 0.0, mn = 0.0, esq = 0.0, ael = 0.0, i = 0.0;
2570 G4double pi = 3.141592653589793238e0;
2635 dn = rmac*bs/std::pow(n,(1.0/3.0));
2636 dp = rmac*bs/std::pow(z,(1.0/3.0));
2637 dpn = h/bs/std::pow(a,(2.0/3.0));
2640 c1 = 3.0/5.0*esq/r0;
2644 c4 = 5.0/4.0*std::pow((3.0/(2.0*pi)),(2.0/3.0)) * c1;
2652 kf = std::pow((9.0*pi*z/(4.0*a)),(1.0/3.0))/r0;
2656 f = -1.0/8.0*rp*rp*esq/std::pow(r0,3) * (145.0/48.0 - 327.0/2880.0*std::pow(kf,2) * std::pow(rp,2) + 1527.0/1209600.0*std::pow(kf,4) * std::pow(rp,4));
2659 x0 = r0 * std::pow(a,(1.0/3.0)) / ay;
2660 y0 = r0 * std::pow(a,(1.0/3.0)) / aden;
2662 b1 = 1.0 - 3.0/(std::pow(x0,2)) + (1.0 + x0) * (2.0 + 3.0/x0 + 3.0/std::pow(x0,2)) * std::exp(-2.0*x0);
2664 b3 = 1.0 - 5.0/std::pow(y0,2) * (1.0 - 15.0/(8.0*y0) + 21.0/(8.0 * std::pow(y0,3))
2665 - 3.0/4.0 * (1.0 + 9.0/(2.0*y0) + 7.0/std::pow(y0,2)
2666 + 7.0/(2.0 * std::pow(y0,3))) * std::exp(-2.0*y0));
2670 efl = -1.0 * av*(1.0 - kv*i*i)*a + as*(1.0 - ks*i*i)*b1 * std::pow(a,(2.0/3.0)) + a0
2671 + c1*z*z*b3/std::pow(a,(1.0/3.0)) - c4*std::pow(z,(4.0/3.0))/std::pow(a,(1.e0/3.e0))
2672 +
f*std::pow(z,2)/a -ca*(n-z) - ael * std::pow(z,(2.39e0));
2674 if ((in == iz) && (
mod(in,2) == 1) && (
mod(iz,2) == 1)) {
2676 efl = efl + w*(
utilabs(i)+1.e0/a);
2685 if ((
mod(in,2) == 1) && (
mod(iz,2) == 1)) {
2688 if (
mod(in,2) == 1) {
2691 if (
mod(iz,2) == 1) {
2698 eflmacResult = (0.5*(dn + dp) - 0.5*dpn);
2704 return eflmacResult;
2714 double para = 0.0, parz = 0.0;
2730 (*del) = -12.0/std::sqrt(a);
2734 (*del) = 12.0/std::sqrt(a);
2746 G4double n1 = 0.0, n2 = 0.0, n3 = 0.0;
2783 if (bet/(std::sqrt(2.0)*10.0*(homega/6.582122)) <= 1.0) {
2784 tauResult = std::log(10.0*ef/t)/(bet*1.0e21);
2788 tauResult = std::log(10.0*ef/t)/ (2.0*std::pow((10.0*homega/6.582122),2))*(bet*1.0e-21);
2801 G4double rel = bet/(20.0*homega/6.582122);
2802 G4double cramResult = std::sqrt(1.0 + std::pow(rel,2)) - rel;
2805 if (cramResult > 1.0) {
2828 const int bsbkSize = 54;
2830 G4double bk[bsbkSize] = {0.0, 1.00000,1.00087,1.00352,1.00799,1.01433,1.02265,1.03306,
2831 1.04576,1.06099,1.07910,1.10056,1.12603,1.15651,1.19348,
2832 1.23915,1.29590,1.35951,1.41013,1.44103,1.46026,1.47339,
2833 1.48308,1.49068,1.49692,1.50226,1.50694,1.51114,1.51502,
2834 1.51864,1.52208,1.52539,1.52861,1.53177,1.53490,1.53803,
2835 1.54117,1.54473,1.54762,1.55096,1.55440,1.55798,1.56173,
2836 1.56567,1.56980,1.57413,1.57860,1.58301,1.58688,1.58688,
2837 1.58688,1.58740,1.58740, 0.0};
2839 G4double bs[bsbkSize] = {0.0, 1.00000,1.00086,1.00338,1.00750,1.01319,
2840 1.02044,1.02927,1.03974,
2841 1.05195,1.06604,1.08224,1.10085,1.12229,1.14717,1.17623,1.20963,
2842 1.24296,1.26532,1.27619,1.28126,1.28362,1.28458,1.28477,1.28450,
2843 1.28394,1.28320,1.28235,1.28141,1.28042,1.27941,1.27837,1.27732,
2844 1.27627,1.27522,1.27418,1.27314,1.27210,1.27108,1.27006,1.26906,
2845 1.26806,1.26707,1.26610,1.26514,1.26418,1.26325,1.26233,1.26147,
2846 1.26147,1.26147,1.25992,1.25992, 0.0};
2848 i =
idint(y/(2.0e-02)) + 1;
2852 if(verboseLevel > 2) {
2853 G4cout <<
"G4Abla error: index i = " << i <<
" is greater than array size permits." <<
G4endl;
2859 bipolResult = bs[i] + (bs[i+1] - bs[i])/2.0e-02 * (y - 2.0e-02*(i - 1));
2862 bipolResult = bk[i] + (bk[i+1] - bk[i])/2.0e-02 * (y - 2.0e-02*(i - 1));
2939 for(
G4int init_i = 0; init_i < 7; init_i++) {
2943 for(
G4int init_i = 0; init_i < 10; init_i++) {
2947 G4double a = 0.0, z = 0.0, amin = 0.0, amax = 0.0, amin2 = 0.0;
2948 G4double amax2 = 0.0, aa = 0.0, zz = 0.0, bfis = 0.0;
2949 G4double bfis0 = 0.0, ell = 0.0, el = 0.0, egs = 0.0, el80 = 0.0, el20 = 0.0;
2950 G4double elmax = 0.0, sel80 = 0.0, sel20 = 0.0, x = 0.0, y = 0.0, q = 0.0, qa = 0.0, qb = 0.0;
2951 G4double aj = 0.0, ak = 0.0, a1 = 0.0, a2 = 0.0;
2953 G4int i = 0, j = 0, k = 0, m = 0;
2956 G4double emncof[4][5] = {{-9.01100e+2,-1.40818e+3, 2.77000e+3,-7.06695e+2, 8.89867e+2},
2957 {1.35355e+4,-2.03847e+4, 1.09384e+4,-4.86297e+3,-6.18603e+2},
2958 {-3.26367e+3, 1.62447e+3, 1.36856e+3, 1.31731e+3, 1.53372e+2},
2959 {7.48863e+3,-1.21581e+4, 5.50281e+3,-1.33630e+3, 5.05367e-2}};
2961 G4double elmcof[4][5] = {{1.84542e+3,-5.64002e+3, 5.66730e+3,-3.15150e+3, 9.54160e+2},
2962 {-2.24577e+3, 8.56133e+3,-9.67348e+3, 5.81744e+3,-1.86997e+3},
2963 {2.79772e+3,-8.73073e+3, 9.19706e+3,-4.91900e+3, 1.37283e+3},
2964 {-3.01866e+1, 1.41161e+3,-2.85919e+3, 2.13016e+3,-6.49072e+2}};
2966 G4double emxcof[4][6] = {{9.43596e4,-2.241997e5,2.223237e5,-1.324408e5,4.68922e4,-8.83568e3},
2967 {-1.655827e5,4.062365e5,-4.236128e5,2.66837e5,-9.93242e4,1.90644e4},
2968 {1.705447e5,-4.032e5,3.970312e5,-2.313704e5,7.81147e4,-1.322775e4},
2969 {-9.274555e4,2.278093e5,-2.422225e5,1.55431e5,-5.78742e4,9.97505e3}};
2971 G4double elzcof[7][7] = {{5.11819909e+5,-1.30303186e+6, 1.90119870e+6,-1.20628242e+6, 5.68208488e+5, 5.48346483e+4,-2.45883052e+4},
2972 {-1.13269453e+6, 2.97764590e+6,-4.54326326e+6, 3.00464870e+6, -1.44989274e+6,-1.02026610e+5, 6.27959815e+4},
2973 {1.37543304e+6,-3.65808988e+6, 5.47798999e+6,-3.78109283e+6, 1.84131765e+6, 1.53669695e+4,-6.96817834e+4},
2974 {-8.56559835e+5, 2.48872266e+6,-4.07349128e+6, 3.12835899e+6, -1.62394090e+6, 1.19797378e+5, 4.25737058e+4},
2975 {3.28723311e+5,-1.09892175e+6, 2.03997269e+6,-1.77185718e+6, 9.96051545e+5,-1.53305699e+5,-1.12982954e+4},
2976 {4.15850238e+4, 7.29653408e+4,-4.93776346e+5, 6.01254680e+5, -4.01308292e+5, 9.65968391e+4,-3.49596027e+3},
2977 {-1.82751044e+5, 3.91386300e+5,-3.03639248e+5, 1.15782417e+5, -4.24399280e+3,-6.11477247e+3, 3.66982647e+2}};
2979 const G4int sizex = 5;
2980 const G4int sizey = 6;
2981 const G4int sizez = 4;
2983 G4double egscof[sizey][sizey][sizez];
2985 G4double egs1[sizey][sizex] = {{1.927813e5, 7.666859e5, 6.628436e5, 1.586504e5,-7.786476e3},
2986 {-4.499687e5,-1.784644e6,-1.546968e6,-4.020658e5,-3.929522e3},
2987 {4.667741e5, 1.849838e6, 1.641313e6, 5.229787e5, 5.928137e4},
2988 {-3.017927e5,-1.206483e6,-1.124685e6,-4.478641e5,-8.682323e4},
2989 {1.226517e5, 5.015667e5, 5.032605e5, 2.404477e5, 5.603301e4},
2990 {-1.752824e4,-7.411621e4,-7.989019e4,-4.175486e4,-1.024194e4}};
2992 G4double egs2[sizey][sizex] = {{-6.459162e5,-2.903581e6,-3.048551e6,-1.004411e6,-6.558220e4},
2993 {1.469853e6, 6.564615e6, 6.843078e6, 2.280839e6, 1.802023e5},
2994 {-1.435116e6,-6.322470e6,-6.531834e6,-2.298744e6,-2.639612e5},
2995 {8.665296e5, 3.769159e6, 3.899685e6, 1.520520e6, 2.498728e5},
2996 {-3.302885e5,-1.429313e6,-1.512075e6,-6.744828e5,-1.398771e5},
2997 {4.958167e4, 2.178202e5, 2.400617e5, 1.167815e5, 2.663901e4}};
2999 G4double egs3[sizey][sizex] = {{3.117030e5, 1.195474e6, 9.036289e5, 6.876190e4,-6.814556e4},
3000 {-7.394913e5,-2.826468e6,-2.152757e6,-2.459553e5, 1.101414e5},
3001 {7.918994e5, 3.030439e6, 2.412611e6, 5.228065e5, 8.542465e3},
3002 {-5.421004e5,-2.102672e6,-1.813959e6,-6.251700e5,-1.184348e5},
3003 {2.370771e5, 9.459043e5, 9.026235e5, 4.116799e5, 1.001348e5},
3004 {-4.227664e4,-1.738756e5,-1.795906e5,-9.292141e4,-2.397528e4}};
3006 G4double egs4[sizey][sizex] = {{-1.072763e5,-5.973532e5,-6.151814e5, 7.371898e4, 1.255490e5},
3007 {2.298769e5, 1.265001e6, 1.252798e6,-2.306276e5,-2.845824e5},
3008 {-2.093664e5,-1.100874e6,-1.009313e6, 2.705945e5, 2.506562e5},
3009 {1.274613e5, 6.190307e5, 5.262822e5,-1.336039e5,-1.115865e5},
3010 {-5.715764e4,-2.560989e5,-2.228781e5,-3.222789e3, 1.575670e4},
3011 {1.189447e4, 5.161815e4, 4.870290e4, 1.266808e4, 2.069603e3}};
3013 for(i = 0; i < sizey; i++) {
3014 for(j = 0; j < sizex; j++) {
3019 egscof[i][j][0] = egs1[i][j];
3020 egscof[i][j][1] = egs2[i][j];
3021 egscof[i][j][2] = egs3[i][j];
3022 egscof[i][j][3] = egs4[i][j];
3027 if (iz < 19 || iz > 111) {
3031 if(iz > 102 && il > 0) {
3038 amin= 1.2e0*z + 0.01e0*z*z;
3039 amax= 5.8e0*z - 0.024e0*z*z;
3041 if(a < amin || a > amax) {
3053 for(i = 0; i < 7; i++) {
3054 for(j = 0; j < 7; j++) {
3055 bfis0=bfis0+elzcof[j][i]*pz[i]*pa[j];
3069 amin2 = 1.4e0*z + 0.009e0*z*z;
3070 amax2 = 20.e0 + 3.0e0*z;
3072 if((a < amin2-5.e0 || a > amax2+10.e0) && il > 0) {
3082 for(i = 0; i < 4; i++) {
3083 for(j = 0; j < 5; j++) {
3086 el80 = el80 + elmcof[i][j]*pz[j]*pa[i];
3087 el20 = el20 + emncof[i][j]*pz[j]*pa[i];
3098 for(i = 0; i < 4; i++) {
3099 for(j = 0; j < 6; j++) {
3102 elmax = elmax + emxcof[i][j]*pz[j]*pa[i];
3114 x = sel20/(*selmax);
3116 y = sel80/(*selmax);
3121 q = 0.2/(std::pow(sel20,2)*std::pow(sel80,2)*(sel20-sel80));
3122 qa = q*(4.0*std::pow(sel80,3) - std::pow(sel20,3));
3123 qb = -q*(4.0*std::pow(sel80,2) - std::pow(sel20,2));
3124 bfis = bfis*(1.0 + qa*std::pow(el,2) + qb*std::pow(el,3));
3128 aj = (-20.0*std::pow(x,5) + 25.e0*std::pow(x,4) - 4.0)*std::pow((y-1.0),2)*y*y;
3129 ak = (-20.0*std::pow(y,5) + 25.0*std::pow(y,4) - 1.0) * std::pow((x-1.0),2)*x*x;
3130 q = 0.2/(std::pow((y-x)*((1.0-x)*(1.0-y)*x*y),2));
3131 qa = q*(aj*y - ak*x);
3132 qb = -q*(aj*(2.0*y + 1.0) - ak*(2.0*x + 1.0));
3134 a1 = 4.0*std::pow(z,5) - 5.0*std::pow(z,4) + 1.0;
3135 a2 = qa*(2.e0*z + 1.e0);
3136 bfis=bfis*(a1 + (z - 1.e0)*(a2 + qb*z)*z*z*(z - 1.e0));
3143 if(el > (*selmax)) {
3149 if(el > (*selmax)) {
3153 for(k = 0; k < 4; k++) {
3154 for(l = 0; l < 6; l++) {
3155 for(m = 0; m < 5; m++) {
3157 egs = egs + egscof[l][m][k]*pz[l]*pa[k]*pl[2*m];
3204 return (-1.0*T*std::log(
haz(k)));
3211 return (E*std::exp(-E));
3217 return (1.0 - (E + 1.0) * std::exp(-E));
3228 const int pSize = 101;
3233 static G4int itest = 0;
3246 for(i = 1; i <= 99; i++) {
3248 x1 = x - (
f(x) - double(i)/100.0)/
fd(x);
3250 if (std::fabs(
f(x) -
double(i)/100.0) < 1e-5) {
3275 x = (p[i] - p[i-1])*(y*100 - i) + p[i];
3292 if(ii <= 0 || jj < 0) {
3305 if(pace->
dm[ii][jj] == 0.) {
3331 const G4int qrows = 50;
3332 const G4int qcols = 70;
3334 for(
G4int init_i = 0; init_i < qrows; init_i++) {
3335 for(
G4int init_j = 0; init_j < qcols; init_j++) {
3336 q[init_i][init_j] = 0.0;
3377 G4double aux=1.+(9.*xjj/4./qq/x13);
3379 G4double ee4=avol*xx+asur*(std::pow(xx,.666))+ac*x13+azer;
3380 G4double tota = ee1 + ee2 + ee3 + ee4;
3381 find = 939.55*xneu+938.77*zz - tota;
3425 G4double r_in = 0.0, r_rest = 0.0, r_help = 0.0;
3431 r_in = r_origin + 0.5;
3432 r_floor = (float)((
int)(r_in));
3433 if (r_even_odd < 0.001) {
3434 i_out = (int)(r_floor);
3437 r_rest = r_in - r_floor;
3438 r_middle = r_floor + 0.5;
3439 n_floor = (int)(r_floor);
3440 if (n_floor%2 == 0) {
3442 r_help = r_middle + (r_rest - 0.5) * (1.0 - r_even_odd);
3446 r_help = r_middle + (r_rest - 0.5) * (1.0 + r_even_odd);
3448 i_out = (int)(r_help);
3464 G4double xcom = 0.0, xvs = 0.0, xe = 0.0;
3468 alpha = ( std::sqrt(5.0/(4.0*pi)) ) * beta;
3471 xcom = 1.0 - 1.7826 * ((a - 2.0*z)/a)*((a - 2.0*z)/a);
3474 xvs = - xcom * ( 15.4941 * a -
3475 17.9439 * std::pow(a,0.66667) * (1.0+0.4*alpha*alpha) );
3477 xe = z*z * (0.7053/(std::pow(a,0.33333)) * (1.0-0.2*alpha*alpha) - 1.1529/a);
3504 dtot = r0 * ( std::pow((z1+n1),0.33333) * (1.0+(2.0/3.0)*beta1)
3505 + std::pow((z2+n2),0.33333) * (1.0+(2.0/3.0)*beta2) ) + d;
3506 ecoul = z1 * z2 * 1.44 / dtot;
3590 G4double nlight1 = 0.0, nlight2 = 0.0;
3591 G4double aheavy1 = 0.0,alight1 = 0.0, aheavy2 = 0.0, alight2 = 0.0;
3592 G4double eheavy1 = 0.0, elight1 = 0.0, eheavy2 = 0.0, elight2 = 0.0;
3593 G4double zheavy1_shell = 0.0, zheavy2_shell = 0.0;
3594 G4double zlight1 = 0.0, zlight2 = 0.0;
3596 G4double sasymm1 = 0.0, sasymm2 = 0.0, ssymm = 0.0, ysum = 0.0, yasymm = 0.0;
3597 G4double ssymm_mode1 = 0.0, ssymm_mode2 = 0.0;
3598 G4double cz_asymm1_saddle = 0.0, cz_asymm2_saddle = 0.0;
3600 G4double wzasymm1_saddle, wzasymm2_saddle, wzsymm_saddle = 0.0;
3601 G4double wzasymm1_scission = 0.0, wzasymm2_scission = 0.0, wzsymm_scission = 0.0;
3602 G4double wzasymm1 = 0.0, wzasymm2 = 0.0, wzsymm = 0.0;
3603 G4double nlight1_eff = 0.0, nlight2_eff = 0.0;
3606 G4double z1mean = 0.0, z2mean = 0.0, z1width = 0.0, za1width = 0.0;
3608 G4double n1r = 0.0, n2r = 0.0, a1r = 0.0, a2r = 0.0, n1 = 0.0, n2 = 0.0;
3610 G4double zsymm = 0.0, nsymm = 0.0, asymm = 0.0;
3611 G4double n1mean = 0.0, n2mean, n1width;
3616 G4double re1 = 0.0, re2 = 0.0, re3 = 0.0;
3618 G4double n1ucd = 0.0, n2ucd = 0.0, z1ucd = 0.0, z2ucd = 0.0;
3619 G4double beta = 0.0, beta1 = 0.0, beta2 = 0.0;
3629 G4double a_levdens_light1 = 0.0, a_levdens_light2 = 0.0;
3630 G4double a_levdens_heavy1 = 0.0, a_levdens_heavy2 = 0.0;
3633 G4double epsilon_1_saddle = 0.0, epsilon0_1_saddle = 0.0;
3634 G4double epsilon_2_saddle = 0.0, epsilon0_2_saddle = 0.0, epsilon_symm_saddle = 0.0;
3635 G4double epsilon_1_scission = 0.0, epsilon0_1_scission = 0.0;
3636 G4double epsilon_2_scission = 0.0, epsilon0_2_scission = 0.0;
3637 G4double epsilon_symm_scission = 0.0;
3639 G4double e_eff1_saddle = 0.0, e_eff2_saddle = 0.0;
3640 G4double epot0_mode1_saddle = 0.0, epot0_mode2_saddle = 0.0, epot0_symm_saddle = 0.0;
3641 G4double epot_mode1_saddle = 0.0, epot_mode2_saddle = 0.0, epot_symm_saddle = 0.0;
3642 G4double e_defo = 0.0, e_defo1 = 0.0, e_defo2 = 0.0, e_scission = 0.0, e_asym = 0.0;
3644 G4double e1exc_sigma = 0.0, e2exc_sigma = 0.0;
3645 G4double e1final = 0.0, e2final = 0.0;
3651 G4double ekinr1 = 0.0, ekinr2 = 0.0;
3652 G4int icz = 0, k = 0;
3668 const G4double delta_u1_shell = -2.65;
3671 const G4double delta_u2_shell = -3.8;
3678 const G4double cz_asymm1_shell = 0.7;
3680 const G4double cz_asymm2_shell = 0.15;
3682 const G4double fwidth_asymm1 = 0.63;
3684 const G4double fwidth_asymm2 = 0.97;
3701 const G4double friction_factor = 1.0;
3741 G4double r_e_o = 0.0, r_e_o_exp = 0.0;
3759 const G4int nzpol = 1;
3761 const G4int itest = 0;
3764 G4double reps1 = 0.0, reps2 = 0.0, rn1_pol = 0.0;
3782 if ( (std::pow(z,2)/a < 25.0) || (n < nheavy2) || (e > 500.0) ) {
3788 nlight1 = n - nheavy1;
3789 nlight2 = n - nheavy2;
3796 zheavy1_shell = ((nheavy1/n) * z) - ((a/n) * cpol1);
3797 zheavy2_shell = ((nheavy2/n) * z) - ((a/n) * cpol2);
3800 (-24.0 + 0.02227 * (std::pow(z,2))/(std::pow(a,0.33333)) ) * friction_factor;
3805 if (e_saddle_scission > 0.) {
3806 e_saddle_scission = e_saddle_scission;
3809 e_saddle_scission = 0.;
3822 if ( (std::pow(z,2))/a < 34.0) {
3823 masscurv = std::pow( 10.0,(-1.093364 + 0.082933 * (std::pow(z,2)/a)
3824 - 0.0002602 * (std::pow(z,4)/std::pow(a,2))) );
3826 masscurv = std::pow( 10.0,(3.053536 - 0.056477 * (std::pow(z,2)/a)
3827 + 0.0002454 * (std::pow(z,4)/std::pow(a,2))) );
3830 cz_symm = (8.0/std::pow(z,2)) * masscurv;
3845 asymm = nsymm + zsymm;
3847 zheavy1 = (cz_symm*zsymm + cz_asymm1_shell*zheavy1_shell)/(cz_symm + cz_asymm1_shell);
3848 zheavy2 = (cz_symm*zsymm + cz_asymm2_shell*zheavy2_shell)/(cz_symm + cz_asymm2_shell);
3850 nheavy1_eff = (zheavy1 + (a/n * cpol1))*(n/z);
3851 nheavy2_eff = (zheavy2 + (a/n * cpol2))*(n/z);
3852 nlight1_eff = n - nheavy1_eff;
3853 nlight2_eff = n - nheavy2_eff;
3855 zlight1 = z - zheavy1;
3857 zlight2 = z - zheavy2;
3858 aheavy1 = nheavy1_eff + zheavy1;
3859 aheavy2 = nheavy2_eff + zheavy2;
3860 aheavy1_mean = aheavy1;
3861 aheavy2_mean = aheavy2;
3862 alight1 = nlight1_eff + zlight1;
3863 alight2 = nlight2_eff + zlight2;
3865 a_levdens = a / xlevdens;
3866 a_levdens_heavy1 = aheavy1 / xlevdens;
3867 a_levdens_heavy2 = aheavy2 / xlevdens;
3868 a_levdens_light1 = alight1 / xlevdens;
3869 a_levdens_light2 = alight2 / xlevdens;
3870 gamma = a_levdens / (0.4 * (std::pow(a,1.3333)) );
3871 gamma_heavy1 = ( a_levdens_heavy1 / (0.4 * (std::pow(aheavy1,1.3333)) ) ) * fgamma1;
3872 gamma_heavy2 = a_levdens_heavy2 / (0.4 * (std::pow(aheavy2,1.3333)) );
3874 cz_asymm1_saddle = cz_asymm1_shell + cz_symm;
3875 cz_asymm2_saddle = cz_asymm2_shell + cz_symm;
3879 cn =
umass(zsymm,(nsymm+1.),0.0) +
umass(zsymm,(nsymm-1.),0.0)
3880 + 1.44 * (std::pow(zsymm,2))/
3881 ( (std::pow(r_null,2)) *
3882 ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) *
3883 ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) )
3884 - 2.0 *
umass(zsymm,nsymm,0.0)
3885 - 1.44 * (std::pow(zsymm,2))/
3886 ( ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) *
3887 ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) );
3890 delta_u1 = delta_u1_shell + (std::pow((zheavy1_shell-zheavy1),2))*cz_asymm1_shell;
3892 delta_u2 = delta_u2_shell + (std::pow((zheavy2_shell-zheavy2),2))*cz_asymm2_shell;
3897 epot0_mode1_saddle = (std::pow((zheavy1-zsymm),2)) * cz_symm;
3898 epot0_mode2_saddle = (std::pow((zheavy2-zsymm),2)) * cz_symm;
3899 epot0_symm_saddle = 0.0;
3906 G4cout <<
"check epot0_mode1_saddle = " << epot0_mode1_saddle <<
G4endl;
3907 G4cout <<
"check epot0_mode2_saddle = " << epot0_mode2_saddle <<
G4endl;
3908 G4cout <<
"check epot0_symm_saddle = " << epot0_symm_saddle <<
G4endl;
3916 epot_mode1_saddle = epot0_mode1_saddle + delta_u1;
3917 epot_mode2_saddle = epot0_mode2_saddle + delta_u2;
3918 epot_symm_saddle = epot0_symm_saddle;
3920 G4cout <<
"check epot_mode1_saddle = " << epot_mode1_saddle <<
G4endl;
3921 G4cout <<
"check epot_mode2_saddle = " << epot_mode2_saddle <<
G4endl;
3922 G4cout <<
"check epot_symm_saddle = " << epot_symm_saddle <<
G4endl;
3926 dueff =
min(epot_mode1_saddle,epot_mode2_saddle);
3927 dueff =
min(dueff,epot_symm_saddle);
3928 dueff = dueff - epot_symm_saddle;
3930 eld = e + dueff + e_zero_point;
3935 G4cout <<
"check e_zero_point = " << e_zero_point <<
G4endl;
3947 eheavy1 = e * aheavy1 / a;
3948 eheavy2 = e * aheavy2 / a;
3949 elight1 = e * alight1 / a;
3950 elight2 = e * alight2 / a;
3952 epsilon0_1_saddle = eld - e_zero_point - epot0_mode1_saddle;
3954 epsilon0_2_saddle = eld - e_zero_point - epot0_mode2_saddle;
3957 epsilon_1_saddle = eld - e_zero_point - epot_mode1_saddle;
3959 epsilon_2_saddle = eld - e_zero_point - epot_mode2_saddle;
3961 epsilon_symm_saddle = eld - e_zero_point - epot_symm_saddle;
3964 eexc1_saddle = epsilon_1_saddle;
3965 eexc2_saddle = epsilon_2_saddle;
3966 eexc_max =
max(eexc1_saddle,eexc2_saddle);
3967 eexc_max =
max(eexc_max,eld);
3972 epsilon0_1_scission = eld + e_saddle_scission - epot0_mode1_saddle;
3974 epsilon0_2_scission = eld + e_saddle_scission - epot0_mode2_saddle;
3977 epsilon_1_scission = eld + e_saddle_scission - epot_mode1_saddle;
3979 epsilon_2_scission = eld+ e_saddle_scission - epot_mode2_saddle;
3981 epsilon_symm_scission = eld + e_saddle_scission - epot_symm_saddle;
3986 e_eff1_saddle = epsilon0_1_saddle - delta_u1 * (std::exp((-epsilon_1_saddle*gamma)));
3988 if (e_eff1_saddle > 0.0) {
3989 wzasymm1_saddle = std::sqrt( (0.5 *
3990 (std::sqrt(1.0/a_levdens*e_eff1_saddle)) /
3991 (cz_asymm1_shell * std::exp((-epsilon_1_saddle*gamma)) + cz_symm) ) );
3994 wzasymm1_saddle = 1.0;
3997 e_eff2_saddle = epsilon0_2_saddle - delta_u2 * (std::exp((-epsilon_2_saddle*gamma)));
3998 if (e_eff2_saddle > 0.0) {
3999 wzasymm2_saddle = std::sqrt( (0.5 *
4000 (std::sqrt(1.0/a_levdens*e_eff2_saddle)) /
4001 (cz_asymm2_shell * std::exp((-epsilon_2_saddle*gamma)) + cz_symm) ) );
4004 wzasymm2_saddle = 1.0;
4007 if (eld > e_zero_point) {
4008 if ( (eld + epsilon_symm_saddle) < 0.0) {
4009 G4cout <<
"<e> eld + epsilon_symm_saddle < 0" <<
G4endl;
4011 wzsymm_saddle = std::sqrt( (0.5 *
4012 (std::sqrt(1.0/a_levdens*(eld+epsilon_symm_saddle))) / cz_symm ) );
4014 wzsymm_saddle = 1.0;
4018 G4cout <<
"wz1(saddle) = " << wzasymm1_saddle <<
G4endl;
4019 G4cout <<
"wz2(saddle) = " << wzasymm2_saddle <<
G4endl;
4020 G4cout <<
"wzsymm(saddle) = " << wzsymm_saddle <<
G4endl;
4026 wzsymm_scission = wzsymm_saddle;
4028 if (e_saddle_scission == 0.0) {
4030 wzasymm1_scission = wzasymm1_saddle;
4031 wzasymm2_scission = wzasymm2_saddle;
4036 if (nheavy1_eff > 75.0) {
4037 wzasymm1_scission = (std::sqrt(21.0)) * z/a;
4038 wzasymm2_scission = (std::sqrt (
max( (70.0-28.0)/3.0*(z*z/a-35.0)+28.,0.0 )) ) * z/a;
4041 wzasymm1_scission = wzasymm1_saddle;
4042 wzasymm2_scission = wzasymm2_saddle;
4047 wzasymm1_scission =
max(wzasymm1_scission,wzasymm1_saddle);
4048 wzasymm2_scission =
max(wzasymm2_scission,wzasymm2_saddle);
4050 wzasymm1 = wzasymm1_scission * fwidth_asymm1;
4051 wzasymm2 = wzasymm2_scission * fwidth_asymm2;
4052 wzsymm = wzsymm_scission;
4065 wasymm = wzsymm * a/z;
4066 waheavy1 = wzasymm1 * a/z;
4067 waheavy2 = wzasymm2 * a/z;
4069 wasymm_saddle = wzsymm_saddle * a/z;
4070 waheavy1_saddle = wzasymm1_saddle * a/z;
4071 waheavy2_saddle = wzasymm2_saddle * a/z;
4080 if ( (epsilon0_1_saddle - delta_u1*std::exp((-epsilon_1_saddle*gamma_heavy1))) < 0.0) {
4084 sasymm1 = 2.0 * std::sqrt( a_levdens * (epsilon0_1_saddle -
4085 delta_u1*(std::exp((-epsilon_1_saddle*gamma_heavy1))) ) );
4088 if ( (epsilon0_2_saddle - delta_u2*std::exp((-epsilon_2_saddle*gamma_heavy2))) < 0.0) {
4092 sasymm2 = 2.0 * std::sqrt( a_levdens * (epsilon0_2_saddle -
4093 delta_u2*(std::exp((-epsilon_2_saddle*gamma_heavy2))) ) );
4096 if (epsilon_symm_saddle > 0.0) {
4097 ssymm = 2.0 * std::sqrt( a_levdens*(epsilon_symm_saddle) );
4103 if (ssymm > -10.0) {
4106 if (epsilon0_1_saddle < 0.0) {
4108 yasymm1 = std::exp((sasymm1-ssymm)) * wzasymm1_saddle / wzsymm_saddle * 2.0;
4113 ssymm_mode1 = 2.0 * std::sqrt( a_levdens*(epsilon0_1_saddle) );
4114 yasymm1 = ( std::exp((sasymm1-ssymm)) - std::exp((ssymm_mode1 - ssymm)) )
4115 * wzasymm1_saddle / wzsymm_saddle * 2.0;
4118 if (epsilon0_2_saddle < 0.0) {
4120 yasymm2 = std::exp((sasymm2-ssymm)) * wzasymm2_saddle / wzsymm_saddle * 2.0;
4125 ssymm_mode2 = 2.0 * std::sqrt( a_levdens*(epsilon0_2_saddle) );
4126 yasymm2 = ( std::exp((sasymm2-ssymm)) - std::exp((ssymm_mode2 - ssymm)) )
4127 * wzasymm2_saddle / wzsymm_saddle * 2.0;
4134 if ( (sasymm1 > -10.0) && (sasymm2 > -10.0) ) {
4136 yasymm1 = std::exp(sasymm1) * wzasymm1_saddle * 2.0;
4137 yasymm2 = std::exp(sasymm2) * wzasymm2_saddle * 2.0;
4142 ysum = ysymm + yasymm1 + yasymm2;
4144 ysymm = ysymm / ysum;
4145 yasymm1 = yasymm1 / ysum;
4146 yasymm2 = yasymm2 / ysum;
4147 yasymm = yasymm1 + yasymm2;
4154 if ( (epsilon_symm_saddle < epsilon_1_saddle) && (epsilon_symm_saddle < epsilon_2_saddle) ) {
4158 if (epsilon_1_saddle < epsilon_2_saddle) {
4176 if ((
int)(z) % 2 == 0) {
4177 r_e_o_exp = -0.017 * (e_saddle_scission + eld) * (e_saddle_scission + eld);
4178 if ( r_e_o_exp < -307.0) {
4180 r_e_o = std::pow(10.0,r_e_o_exp);
4183 r_e_o = std::pow(10.0,r_e_o_exp);
4207 if (rmode < yasymm1) {
4209 }
else if ( (rmode > yasymm1) && (rmode < (yasymm1+yasymm2)) ) {
4211 }
else if ( (rmode > yasymm1) && (rmode > (yasymm1+yasymm2)) ) {
4214 }
while(imode == 0);
4242 while ( (z1<5.0) || (z2<5.0) ) {
4262 n1mean = (z1 + cpol1 * a/n) * n/z;
4265 n1mean = (z1 + cpol2 * a/n) * n/z;
4286 re1 =
umass(z1,n1ucd,0.6) +
umass(z2,n2ucd,0.6) +
ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,d);
4287 re2 =
umass(z1,n1ucd+1.,0.6) +
umass(z2,n2ucd-1.,0.6) +
ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,d);
4288 re3 =
umass(z1,n1ucd+2.,0.6) +
umass(z2,n2ucd-2.,0.6) +
ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,d);
4289 eps2 = (re1-2.0*re2+re3) / 2.0;
4290 eps1 = re2 - re1 - eps2;
4291 dn1_pol = - eps1 / (2.0 * eps2);
4292 n1mean = n1ucd + dn1_pol;
4295 n2mean = n - n1mean;
4296 z2mean = z - z1mean;
4315 e_scission =
max(epsilon_1_scission,1.0);
4316 if (n1mean > (n * 0.5) ) {
4320 e1exc = epsilon_1_scission * a1r / a;
4321 e_defo =
umass(z2,n2r,beta2) -
umass(z2,n2r,0.0);
4322 e2exc = epsilon_1_scission * a2r / a + e_defo;
4328 e_defo =
umass(z1,n1r,beta1) -
umass(z1,n1r,0.0);
4329 e1exc = epsilon_1_scission * a1r / a + e_defo;
4330 e2exc = epsilon_1_scission * a2r / a;
4336 e_scission =
max(epsilon_2_scission,1.0);
4337 if (n1mean > (n * 0.5) ) {
4339 beta1 = (n1r - nheavy2) * 0.034 + 0.3;
4340 e_defo =
umass(z1,n1r,beta1) -
umass(z1,n1r,0.0);
4341 e1exc = epsilon_2_scission * a1r / a + e_defo;
4342 beta2 = 0.6 - beta1;
4343 e_defo =
umass(z2,n2r,beta2) -
umass(z2,n2r,0.0);
4344 e2exc = epsilon_2_scission * a2r / a + e_defo;
4348 beta2 = (n2r - nheavy2) * 0.034 + 0.3;
4349 e_defo =
umass(z2,n2r,beta2) -
umass(z2,n2r,0.0);
4350 e2exc = epsilon_2_scission * a2r / a + e_defo;
4351 beta1 = 0.6 - beta2;
4352 e_defo =
umass(z1,n1r,beta1) -
umass(z1,n1r,0.0);
4353 e1exc = epsilon_2_scission * a1r / a + e_defo;
4365 beta = 0.177963 + 0.0153241 * zsymm - 0.000162037 * zsymm*zsymm;
4366 beta1 = 0.177963 + 0.0153241 * z1 - 0.000162037 * z1*z1;
4368 e_defo1 =
umass(z1,n1r,beta1) -
umass(z1,n1r,0.0);
4369 beta2 = 0.177963 + 0.0153241 * z2 - 0.000162037 * z2*z2;
4371 e_defo2 =
umass(z2,n2r,beta2) -
umass(z2,n2r,0.0);
4372 e_asym =
umass(z1 , n1r, beta1) +
umass(z2, n2r ,beta2)
4373 +
ecoul(z1,n1r,beta1,z2,n2r,beta2,2.0)
4374 - 2.0 *
umass(zsymm,nsymm,beta)
4375 -
ecoul(zsymm,nsymm,beta,zsymm,nsymm,beta,2.0);
4377 e_scission =
max((epsilon_symm_scission - e_asym),1.0);
4379 e1exc = e_scission * a1r / a + e_defo1;
4380 e2exc = e_scission * a2r / a + e_defo2;
4400 if ( (imode == 1) || (imode == 2) ) {
4401 cn=(
umass(z1,n1mean+1.,beta1) +
umass(z1,n1mean-1.,beta1)
4402 +
umass(z2,n2mean+1.,beta2) +
umass(z2,n2mean-1.,beta2)
4403 +
ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0)
4404 +
ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0)
4405 - 2.0 *
ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
4406 - 2.0 *
umass(z1, n1mean, beta1)
4407 - 2.0 *
umass(z2, n2mean, beta2) ) * 0.5;
4415 n1width=std::sqrt( (0.5 * (std::sqrt(1.0/a_levdens*(e_scission)))/cn) );
4416 n1width=
max(n1width, sigzmin);
4421 while ( (n1r<5.0) || (n2r<5.0) ) {
4424 n1r =
gausshaz(k, n1mean, n1width);
4431 n1r = (float)( (
int)((n1r+0.5)) );
4436 z1 = (float)(i_help);
4447 cz = (
umass(z1-1., n1mean+1.,beta1)
4448 +
umass(z2+1., n2mean-1.,beta1)
4449 +
umass(z1+1., n1mean-1.,beta2)
4450 +
umass(z2 - 1., n2mean + 1.,beta2)
4451 +
ecoul(z1-1.,n1mean+1.,beta1,z2+1.,n2mean-1.,beta2,2.0)
4452 +
ecoul(z1+1.,n1mean-1.,beta1,z2-1.,n2mean+1.,beta2,2.0)
4453 - 2.0 *
ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
4454 - 2.0 *
umass(z1, n1mean,beta1)
4455 - 2.0 *
umass(z2, n2mean,beta2) ) * 0.5;
4462 za1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cz) );
4463 za1width=std::sqrt( (
max((za1width*za1width-(1.0/12.0)),0.1)) );
4467 a1r = (float)((
int)((a1r+0.5)));
4477 re1 =
umass(z1ucd-1.,n1ucd+1.,beta1) +
umass(z2ucd+1.,n2ucd-1.,beta2)
4478 +
ecoul(z1ucd-1.,n1ucd+1.,beta1,z2ucd+1.,n2ucd-1.,beta2,d);
4479 re2 =
umass(z1ucd,n1ucd,beta1) +
umass(z2ucd,n2ucd,beta2)
4480 +
ecoul(z1ucd,n1ucd,beta1,z2ucd,n2ucd,beta2,d);
4481 re3 =
umass(z1ucd+1.,n1ucd-1.,beta1) +
umass(z2ucd-1.,n2ucd+1.,beta2) +
4482 +
ecoul(z1ucd+1.,n1ucd-1.,beta1,z2ucd-1.,n2ucd+1.,beta2,d);
4484 eps2 = (re1-2.0*re2+re3) / 2.0;
4485 eps1 = (re3 - re1)/2.0;
4486 dn1_pol = - eps1 / (2.0 * eps2);
4487 z1 = z1ucd + dn1_pol;
4499 z1 = (float)(i_help);
4500 z2 = (float)((
int)( (z - z1 + 0.5)) );
4507 cn = (
umass(z1, n1mean+1.,beta1) +
umass(z1, n1mean-1., beta1)
4508 +
umass(z2, n2mean+1.,beta2) +
umass(z2, n2mean-1., beta2)
4509 +
ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0)
4510 +
ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0)
4511 - 2.0 *
ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
4512 - 2.0 *
umass(z1, n1mean, 0.6)
4513 - 2.0 *
umass(z2, n2mean, 0.6) ) * 0.5;
4521 n1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cn) );
4522 n1width=
max(n1width, sigzmin);
4527 n1r =
gausshaz(k, n1mean, n1width);
4528 n1r = (float)( (
int)((n1r+0.5)) );
4533 z1 = (float)(i_help);
4556 neufcentquatrevingtsept:
4561 e1final =
gausshaz(k, e1exc, e1exc_sigma);
4562 e2final =
gausshaz(k, e2exc, e2exc_sigma);
4563 if ( (e1final < 0.0) || (e2final < 0.0) )
goto neufcentquatrevingtsept;
4594 tker = (z1 * z2 * 1.44) /
4595 ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) +
4596 r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 );
4598 ekinr1 = tker * a2 / a;
4600 ekinr2 = tker * a1 / a;
4602 v1 = std::sqrt( (ekinr1/a1) ) * 1.3887;
4603 v2 = std::sqrt( (ekinr2/a2) ) * 1.3887;
4615 if ( (icz == -1) || (a1 < 0.0) || (a2 < 0.0) ) {
4629 asymm = nsymm + zsymm;
4631 a_levdens = a / xlevdens;
4634 cz_symm = 8.0 / std::pow(z,2) * masscurv;
4636 wzsymm = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cz_symm) ) ;
4649 while ( (z1 < 5.0) || (z2 < 5.0) ) {
4652 z1 =
gausshaz(kkk, z1mean, z1width);
4675 re1 =
umass(z1,n1ucd,0.6) +
umass(z2,n2ucd,0.6) +
4676 ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,2.0);
4677 re2 =
umass(z1,n1ucd+1.,0.6) +
umass(z2,n2ucd-1.,0.6) +
4678 ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,2.0);
4679 re3 =
umass(z1,n1ucd+2.,0.6) +
umass(z2,n2ucd-2.,0.6) +
4680 ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,2.0);
4681 reps2 = (re1-2.0*re2+re3)/2.0;
4682 reps1 = re2 - re1 -reps2;
4683 rn1_pol = -reps1/(2.0*reps2);
4684 n1mean = n1ucd + rn1_pol;
4685 n2mean = n - n1mean;
4692 cn = (
umass(z1,n1mean+1.,0.0) +
umass(z1,n1mean-1.,0.0) +
4693 +
umass(z2,n2mean+1.,0.0) +
umass(z2,n2mean-1.,0.0)
4694 - 2.0 *
umass(z1,n1mean,0.0) +
4695 - 2.0 *
umass(z2,n2mean,0.0) ) * 0.5;
4698 n1width = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cn) );
4708 n1r = (float)( (
int)(
gausshaz(k, n1mean,n1width)) );
4715 e2 = e - e*a1/(a1+a2);
4733 tker = (z1 * z2 * 1.44) /
4734 ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) +
4735 r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 );
4737 ekin1 = tker * a2 / a;
4739 ekin2 = tker * a1 / a;
4741 v1 = std::sqrt( (ekin1/a1) ) * 1.3887;
4742 v2 = std::sqrt( (ekin2/a2) ) * 1.3887;
4781 G4double sitet = std::sqrt(std::pow(csrem[1],2)+std::pow(csrem[2],2));
4782 G4double cstet = 0.0, siphi = 0.0, csphi = 0.0;
4784 for(
G4int init_i = 0; init_i < 4; init_i++) {
4785 for(
G4int init_j = 0; init_j < 4; init_j++) {
4786 R[init_i][init_j] = 0.0;
4790 if(sitet > 1.0e-6) {
4792 siphi = csrem[2]/sitet;
4793 csphi = csrem[1]/sitet;
4795 R[1][1] = cstet*csphi;
4797 R[1][3] = sitet*csphi;
4798 R[2][1] = cstet*siphi;
4800 R[2][3] = sitet*siphi;
4825 for(
G4int init_i = 0; init_i < 4; init_i++) {
4826 plabi[init_i] = 0.0;
4827 plabf[init_i] = 0.0;
4830 for(
G4int i = ndec; i <= volant->
iv; i++) {
4832 varntp->ntrack = varntp->ntrack + 1;
4834 if(verboseLevel > 2) {
4835 G4cout <<
"Error: Particles with A = 0 Z = 0 detected! " <<
G4endl;
4839 if(varntp->ntrack >= VARNTPSIZE) {
4840 if(verboseLevel > 2) {
4841 G4cout <<
"Error! Output data structure not big enough!" <<
G4endl;
4844 varntp->avv[intp] =
nint(volant->
acv[i]);
4845 varntp->zvv[intp] =
nint(volant->
zpcv[i]);
4846 varntp->itypcasc[intp] = 0;
4848 if (varntp->avv[intp] == -1) {
4854 mglms(
double(volant->
acv[i]),
double(volant->
zpcv[i]),0, &el);
4856 masse = volant->
zpcv[i]*938.27 + (volant->
acv[i] - volant->
zpcv[i])*939.56 + el;
4859 er = std::sqrt(std::pow(volant->
pcv[i],2) + std::pow(masse,2));
4861 plabi[1] = volant->
pcv[i]*(volant->
xcv[i]);
4862 plabi[2] = volant->
pcv[i]*(volant->
ycv[i]);
4863 plabi[3] = er*etrem + gamrem*(volant->
pcv[i])*(volant->
zcv[i]);
4865 ptrav2 = std::pow(plabi[1],2) + std::pow(plabi[2],2) + std::pow(plabi[3],2);
4867 varntp->plab[intp] = std::sqrt(ptrav2);
4868 varntp->enerj[intp] = std::sqrt(ptrav2 + std::pow(masse,2)) - masse;
4871 for(
G4int j = 1; j <= 3; j++) {
4873 for(
G4int k = 1; k <= 3; k++) {
4874 plabf[j] = plabf[j] + R[k][j]*plabi[k];
4878 volant->
pcv[i] = varntp->plab[intp];
4879 ptrav2 = std::sqrt(std::pow(plabf[1],2) + std::pow(plabf[2],2) + std::pow(plabf[3],2));
4880 if(ptrav2 >= 1.0e-6) {
4881 volant->
xcv[i] = plabf[1]/ptrav2;
4882 volant->
ycv[i] = plabf[2]/ptrav2;
4883 volant->
zcv[i] = plabf[3]/ptrav2;
4886 volant->
xcv[i] = 1.0;
4887 volant->
ycv[i] = 0.0;
4888 volant->
zcv[i] = 0.0;
4891 if(varntp->plab[intp] >= 1.0e-6) {
4892 bidon = plabf[3]/(varntp->plab[intp]);
4900 varntp->tetlab[intp] = std::acos(bidon);
4901 sitet = std::sin(varntp->tetlab[intp]);
4902 varntp->philab[intp] = std::atan2(plabf[2],plabf[1]);
4903 varntp->tetlab[intp] = varntp->tetlab[intp]*57.2957795;
4904 varntp->philab[intp] = varntp->philab[intp]*57.2957795;
4907 varntp->tetlab[intp] = 90.0;
4908 varntp->philab[intp] = 0.0;
4935 G4double sitet = std::sqrt(1.0 - std::pow(ctet1,2));
4939 for(
G4int init_i = 0; init_i < 4; init_i++) {
4940 plabi[init_i] = 0.0;
4941 plabf[init_i] = 0.0;
4945 plabi[1] = p1*sitet*std::cos(phi1);
4946 plabi[2] = p1*sitet*std::sin(phi1);
4947 plabi[3] = er*etrem + gamrem*p1*ctet1;
4950 for(
G4int j = 1; j <= 3; j++) {
4952 for(
G4int k = 1; k <= 3; k++) {
4954 plabf[j] = plabf[j] + R[k][j]*plabi[k];
4959 (*plab1) = std::pow(plabf[1],2) + std::pow(plabf[2],2) + std::pow(plabf[3],2);
4960 (*gam1) = std::sqrt(std::pow(masse1,2) + (*plab1))/masse1;
4961 (*plab1) = std::sqrt((*plab1));
4962 (*eta1) = (*plab1)/masse1;
4964 if((*plab1) <= 1.0e-6) {
4970 for(
G4int i = 1; i <= 3; i++) {
4971 csdir[i] = plabf[i]/(*plab1);
4988 (*eout) = gam*ein + eta*pin[3];
4989 pout[3] = eta*ein + gam*pin[3];
4999 for(
G4int i = 1; i <= 3; i++) {
5001 for(
G4int j = 1; j <= 3; j++) {
5003 pout[i] = pout[i] + R[j][i]*pin[j];
5021 const G4int pSize = 110;
5023 static G4long ix = 0, i = 0;
5024 static G4double x = 0.0, y = 0.0, a = 0.0,
haz = 0.0;
5041 ix = int(y * 100 + 43543000);
5042 if(
mod(ix,2) == 0) {
5053 for(
G4int i = 0; i < pSize; i++) {
5076 static G4int iset = 0;
5081 v1 = 2.0*
haz(k) - 1.0;
5082 v2 = 2.0*
haz(k) - 1.0;
5083 r = std::pow(v1,2) + std::pow(v2,2);
5086 fac = std::sqrt(-2.*std::log(r)/r);
5147 fractpart = std::modf(number, &intpart);
5152 if(fractpart < 0.5) {
5153 return int(std::floor(number));
5156 return int(std::ceil(number));
5160 if(fractpart < -0.5) {
5161 return int(std::floor(number));
5164 return int(std::ceil(number));
5168 return int(std::floor(number));
5177 mylocaltime = localtime(&mytime);
5180 return(mylocaltime->tm_hour*60*60 + mylocaltime->tm_min*60 + mylocaltime->tm_sec);
5190 return (a - (a/b)*b);
5200 return (a - (a/b)*b);
5212 value = double(std::ceil(a));
5215 value = double(std::floor(a));
5226 value = int(std::ceil(a));
5229 value = int(std::floor(a));
5237 G4double valueCeil = int(std::ceil(value));
5238 G4double valueFloor = int(std::floor(value));
5240 if(std::fabs(value - valueCeil) < std::fabs(value - valueFloor)) {
5241 return int(valueCeil);
5244 return int(valueFloor);
5250 if(a < b && a < c) {
5253 if(b < a && b < c) {
5256 if(c < a && c < b) {
G4DLLIMPORT std::ostream G4cout
G4double eflmac(G4int ia, G4int iz, G4int flag, G4int optshp)
G4double tau(G4double bet, G4double homega, G4double ef, G4double t)
G4double fmaxhaz(G4double T)
void even_odd(G4double r_origin, G4double r_even_odd, G4int &i_out)
void rotab(G4double R[4][4], G4double pin[4], G4double pout[4])
G4int nint(G4double number)
void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1, G4double phi1, G4double gamrem, G4double etrem, G4double R[][4], G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[])
G4double pace2(G4double a, G4double z)
void mglw(G4double a, G4double z, G4double *el)
G4double dmin1(G4double a, G4double b, G4double c)
G4int mod(G4int a, G4int b)
void fissionDistri(G4double &a, G4double &z, G4double &e, G4double &a1, G4double &z1, G4double &e1, G4double &v1, G4double &a2, G4double &z2, G4double &e2, G4double &v2)
void parite(G4double n, G4double *par)
void lorab(G4double gam, G4double eta, G4double ein, G4double pin[], G4double *eout, G4double pout[])
void translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec)
G4double cram(G4double bet, G4double homega)
G4double bfms67(G4double zms, G4double ams)
void mglms(G4double a, G4double z, G4int refopt4, G4double *el)
void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax)
G4double gausshaz(int k, double xmoy, double sig)
G4double dint(G4double a)
G4int idnint(G4double value)
void appariem(G4double a, G4double z, G4double *del)
G4double spdef(G4int a, G4int z, G4int optxfis)
void qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr)
G4double utilabs(G4double a)
void breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy, G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ, G4int eventnumber)
void direct(G4double zprf, G4double a, G4double ee, G4double jprf, G4double *probp_par, G4double *probn_par, G4double *proba_par, G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sba_par, G4double *ecn_par, G4double *ecp_par, G4double *eca_par, G4double *bp_par, G4double *ba_par, G4int inttype, G4int inum, G4int itest)
void standardRandom(G4double *rndm, G4long *seed)
void lpoly(G4double x, G4int n, G4double pl[])
void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, G4double *zf_par, G4double *af_par, G4double *mtota_par, G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par, G4int *ff_par, G4int *inttype_par, G4int *inum_par)
G4int max(G4int a, G4int b)
G4int min(G4int a, G4int b)
void guet(G4double *x_par, G4double *z_par, G4double *find_par)
G4double ecoul(G4double z1, G4double n1, G4double beta1, G4double z2, G4double n2, G4double beta2, G4double d)
G4double expohaz(G4int k, G4double T)
G4double bipol(int iflag, G4double y)
G4double umass(G4double z, G4double n, G4double beta)
G4double fissility(G4int a, G4int z, G4int optxfis)
void densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk, G4double *temp, G4int optshp, G4int optcol, G4double defbet)
G4double dmod(G4double a, G4double b)
G4double ecnz[EC2SUBROWS][EC2SUBCOLS]
G4double vgsld[ECLDROWS][ECLDCOLS]
G4double ecfnz[ECLDROWS][ECLDCOLS]
G4double alpha[ECLDROWS][ECLDCOLS]
G4double ecgnz[ECLDROWS][ECLDCOLS]
G4double efa[FBCOLS][FBROWS]
G4double dm[PACESIZEROWS][PACESIZECOLS]
G4double zpcv[VOLANTSIZE]
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)