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.0
e-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;
 
  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++) { 
 
  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];
 
 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)))); 
 
 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;
 
 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;
 
 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)) {
 
 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.;
 
 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.;
 
 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.;
 
 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;
 
 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;
 
 1854   densniv(a,zprf,ee,ef,&densf,bshell,bs,bk,&temp,
int(fiss->
optshp),
int(fiss->
optcol),defbet);
 
 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) {
 
 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)) { 
 
 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;
 
 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)) {
 
 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.0
e-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.0
e-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.0
e-02 * (y - 2.0
e-02*(i - 1));
 
 2862       bipolResult = bk[i] + (bk[i+1] - bk[i])/2.0
e-02 * (y - 2.0
e-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) < 1
e-5) {
 
 3275     x = (p[i] - p[i-1])*(y*100 - i) + p[i];
 
 3292   if(ii <= 0 || jj < 0) {
 
 3301     pace2=pace->
dm[ii][jj];
 
 3305   if(pace->
dm[ii][jj] == 0.) {
 
 3310       guet(&a, &z, &pace2);
 
 3311       pace2=pace2-ii*931.5;
 
 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.0
e-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.0
e-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.0
e-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;
 
 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);
 
 5089     gausshaz = v2*fac*sig+xmoy;
 
 5093     gausshaz=gset*sig+xmoy;
 
 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));
 
 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) {