249 G4double aheavy1 = 0.0, aheavy2 = 0.0;
251 G4double zheavy1_shell = 0.0, zheavy2_shell = 0.0;
253 G4double sasymm1 = 0.0, sasymm2 = 0.0, ssymm = 0.0, ysum = 0.0;
254 G4double ssymm_mode1 = 0.0, ssymm_mode2 = 0.0;
256 G4double wzasymm1_saddle, wzasymm2_saddle, wzsymm_saddle = 0.0;
257 G4double wzasymm1_scission = 0.0, wzasymm2_scission = 0.0, wzsymm_scission = 0.0;
258 G4double wzasymm1 = 0.0, wzasymm2 = 0.0, wzsymm = 0.0;
261 G4double z1mean = 0.0, z1width = 0.0;
265 G4double zsymm = 0.0, nsymm = 0.0, asymm = 0.0;
266 G4double n1mean = 0.0, n1width = 0.0;
269 G4double re1 = 0.0, re2 = 0.0, re3 = 0.0;
279 G4double a_levdens_heavy1 = 0.0, a_levdens_heavy2 = 0.0;
282 G4double epsilon_1_saddle = 0.0, epsilon0_1_saddle = 0.0;
283 G4double epsilon_2_saddle = 0.0, epsilon0_2_saddle = 0.0, epsilon_symm_saddle = 0.0;
284 G4double epsilon_1_scission = 0.0, epsilon0_1_scission = 0.0;
285 G4double epsilon_2_scission = 0.0, epsilon0_2_scission = 0.0;
286 G4double epsilon_symm_scission = 0.0;
288 G4double e_eff1_saddle = 0.0, e_eff2_saddle = 0.0;
289 G4int icz = 0, k = 0;
293 G4double ed1_low = 0.0, ed2_low = 0.0, ed1_high = 0.0, ed2_high = 0.0, ed1 = 0.0, ed2 = 0.0;
316 const G4double delta_u1_shell = -2.5;
319 const G4double delta_u2_shell = -5.5;
322 const G4double cz_asymm1_shell = 0.7;
324 const G4double cz_asymm2_shell = 0.08;
344 const G4double friction_factor = 1.0;
376 const G4int itest = 0;
378 G4double reps1 = 0.0, reps2 = 0.0, rn1_pol = 0.0;
387 const G4int maxCount = 500;
394 if ( (std::pow(z,2)/a < 25.0) || (n < nheavy2) || (e > 500.0) ) {
406 zheavy1_shell = ((nheavy1/
n) * z) - 0.8;
408 zheavy2_shell = ((nheavy2/
n) * z) - 0.8;
414 e_saddle_scission = (3.535 * std::pow(z,2)/a - 121.1) * friction_factor;
420 if (e_saddle_scission < 0.0) {
421 e_saddle_scission = 0.0;
435 if ( (std::pow(z,2))/a < 33.9186) {
436 masscurv = std::pow( 10.0,(-1.093364 + 0.082933 * (std::pow(z,2)/a)
437 - 0.0002602 * (std::pow(z,4)/std::pow(a,2))) );
439 masscurv = std::pow( 10.0,(3.053536 - 0.056477 * (std::pow(z,2)/a)
440 + 0.0002454 * (std::pow(z,4)/std::pow(a,2))) );
443 cz_symm = (8.0/std::pow(z,2)) * masscurv;
459 asymm = nsymm + zsymm;
461 zheavy1 = (cz_symm*zsymm + cz_asymm1_shell*zheavy1_shell)/(cz_symm + cz_asymm1_shell);
462 zheavy2 = (cz_symm*zsymm + cz_asymm2_shell*zheavy2_shell)/(cz_symm + cz_asymm2_shell);
465 nheavy1_eff = (zheavy1 + 0.8)*(n/z);
466 nheavy2_eff = (zheavy2 + 0.8)*(n/z);
467 aheavy1 = nheavy1_eff + zheavy1;
468 aheavy2 = nheavy2_eff + zheavy2;
474 a_levdens_heavy1 = aheavy1 / 8.0;
475 a_levdens_heavy2 = aheavy2 / 8.0;
476 gamma = a_levdens / (0.4 * (std::pow(a,1.3333)) );
477 gamma_heavy1 = ( a_levdens_heavy1 / (0.4 * (std::pow(aheavy1,1.3333)) ) ) * fgamma1;
478 gamma_heavy2 = a_levdens_heavy2 / (0.4 * (std::pow(aheavy2,1.3333)) );
482 cn =
umass(zsymm,(nsymm+1.),0.0) +
umass(zsymm,(nsymm-1.),0.0)
483 + 1.44 * (std::pow(zsymm,2))/
484 ( (std::pow(r_null,2)) *
485 ( std::pow((asymm+1.0),1.0/3.0) + std::pow((asymm-1.0),1.0/3.0) ) *
486 ( std::pow((asymm+1.0),1.0/3.0) + std::pow((asymm-1.0),1.0/3.0) ) )
487 - 2.0 *
umass(zsymm,nsymm,0.0)
488 - 1.44 * (std::pow(zsymm,2))/
489 ( ( 2.0 * r_null * (std::pow(asymm,1.0/3.0)) ) *
490 ( 2.0 * r_null * (std::pow(asymm,1.0/3.0)) ) );
493 delta_u1 = delta_u1_shell + (std::pow((zheavy1_shell-zheavy1),2))*cz_asymm1_shell;
495 delta_u2 = delta_u2_shell + (std::pow((zheavy2_shell-zheavy2),2))*cz_asymm2_shell;
498 Basym_1 = Bsym + std::pow((zheavy1-zsymm), 2) * cz_symm + delta_u1;
499 Basym_2 = Bsym + std::pow((zheavy2-zsymm), 2) * cz_symm + delta_u2;
500 if(Bsym < Basym_1 && Bsym < Basym_2) {
503 epsilon0_1_saddle = (e + e_zero_point - std::pow((zheavy1 - zsymm), 2) * cz_symm);
504 epsilon0_2_saddle = (e + e_zero_point - std::pow((zheavy2 - zsymm), 2) * cz_symm);
506 epsilon_1_saddle = epsilon0_1_saddle - delta_u1;
507 epsilon_2_saddle = epsilon0_2_saddle - delta_u2;
509 epsilon_symm_saddle = e + e_zero_point;
510 eexc1_saddle = epsilon_1_saddle;
511 eexc2_saddle = epsilon_2_saddle;
515 epsilon0_1_scission = (e + e_saddle_scission - std::pow((zheavy1 - zsymm), 2) * cz_symm) * aheavy1/a;
516 epsilon_1_scission = epsilon0_1_scission - delta_u1*(aheavy1/a);
518 epsilon0_2_scission = (e + e_saddle_scission - std::pow((zheavy2 - zsymm), 2) * cz_symm) * aheavy2/a;
519 epsilon_2_scission = epsilon0_2_scission - delta_u2*(aheavy2/a);
521 epsilon_symm_scission = e + e_saddle_scission;
522 }
else if (Basym_1 < Bsym && Basym_1 < Basym_2) {
525 epsilon_symm_saddle = (e + e_zero_point + delta_u1 + std::pow((zheavy1-zsymm), 2) * cz_symm);
526 epsilon0_2_saddle = (epsilon_symm_saddle - std::pow((zheavy2-zsymm), 2) * cz_symm);
527 epsilon_2_saddle = epsilon0_2_saddle - delta_u2;
528 epsilon0_1_saddle = e + e_zero_point + delta_u1;
529 epsilon_1_saddle = e + e_zero_point;
530 eexc1_saddle = epsilon_1_saddle;
531 eexc2_saddle = epsilon_2_saddle;
535 epsilon_symm_scission = (e + e_saddle_scission + std::pow((zheavy1-zsymm), 2) * cz_symm + delta_u1);
536 epsilon0_2_scission = (epsilon_symm_scission - std::pow((zheavy2-zsymm), 2) * cz_symm) * aheavy2/a;
537 epsilon_2_scission = epsilon0_2_scission - delta_u2*aheavy2/a;
538 epsilon0_1_scission = (e + e_saddle_scission + delta_u1) * aheavy1/a;
539 epsilon_1_scission = (e + e_saddle_scission) * aheavy1/a;
540 }
else if (Basym_2 < Bsym && Basym_2 < Basym_1) {
543 epsilon_symm_saddle = (e + e_zero_point + delta_u2 + std::pow((zheavy2-zsymm), 2) * cz_symm);
544 epsilon0_1_saddle = (epsilon_symm_saddle - std::pow((zheavy1-zsymm), 2) * cz_symm);
545 epsilon_1_saddle = epsilon0_1_saddle - delta_u1;
546 epsilon0_2_saddle = e + e_zero_point + delta_u2;
547 epsilon_2_saddle = e + e_zero_point;
548 eexc1_saddle = epsilon_1_saddle;
549 eexc2_saddle = epsilon_2_saddle;
553 epsilon_symm_scission = (e + e_saddle_scission + std::pow((zheavy2-zsymm), 2) * cz_symm + delta_u2);
554 epsilon0_1_scission = (epsilon_symm_scission - std::pow((zheavy1-zsymm), 2) * cz_symm) * aheavy1/a;
555 epsilon_1_scission = epsilon0_1_scission - delta_u1*aheavy1/a;
556 epsilon0_2_scission = (e + e_saddle_scission + delta_u2) * aheavy2/a;
557 epsilon_2_scission = (e + e_saddle_scission) * aheavy2/a;
562 if(epsilon_1_saddle < 0.0) epsilon_1_saddle = 0.0;
563 if(epsilon_2_saddle < 0.0) epsilon_2_saddle = 0.0;
564 if(epsilon0_1_saddle < 0.0) epsilon0_1_saddle = 0.0;
565 if(epsilon0_2_saddle < 0.0) epsilon0_2_saddle = 0.0;
566 if(epsilon_symm_saddle < 0.0) epsilon_symm_saddle = 0.0;
568 if(epsilon_1_scission < 0.0) epsilon_1_scission = 0.0;
569 if(epsilon_2_scission < 0.0) epsilon_2_scission = 0.0;
570 if(epsilon0_1_scission < 0.0) epsilon0_1_scission = 0.0;
571 if(epsilon0_2_scission < 0.0) epsilon0_2_scission = 0.0;
572 if(epsilon_symm_scission < 0.0) epsilon_symm_scission = 0.0;
578 e_eff1_saddle = epsilon0_1_saddle - delta_u1 * (std::exp((-epsilon_1_saddle*gamma)));
580 if (e_eff1_saddle > 0.0) {
581 wzasymm1_saddle = std::sqrt( (0.5) *
582 (std::sqrt(1.0/a_levdens*e_eff1_saddle)) /
583 (cz_asymm1_shell * std::exp((-epsilon_1_saddle*gamma)) + cz_symm) );
585 wzasymm1_saddle = 1.0;
588 e_eff2_saddle = epsilon0_2_saddle - delta_u2 * std::exp((-epsilon_2_saddle*gamma));
589 if (e_eff2_saddle > 0.0) {
590 wzasymm2_saddle = std::sqrt( (0.5 *
591 (std::sqrt(1.0/a_levdens*e_eff2_saddle)) /
592 (cz_asymm2_shell * std::exp((-epsilon_2_saddle*gamma)) + cz_symm) ) );
594 wzasymm2_saddle = 1.0;
597 if(e - e_zero_point > 0.0) {
598 wzsymm_saddle = std::sqrt( (0.5 *
599 (std::sqrt(1.0/a_levdens*(e+epsilon_symm_saddle))) / cz_symm ) );
613 wzsymm_scission = wzsymm_saddle;
615 if (e_saddle_scission == 0.0) {
616 wzasymm1_scission = wzasymm1_saddle;
617 wzasymm2_scission = wzasymm2_saddle;
619 if (nheavy1_eff > 75.0) {
620 wzasymm1_scission = (std::sqrt(21.0)) * z/a;
621 double RR = (70.0-28.0)/3.0*(z*z/a-35.0)+28.0;
623 wzasymm2_scission = std::sqrt(RR)*(z/a);
625 wzasymm2_scission = 0.0;
628 wzasymm1_scission = wzasymm1_saddle;
629 wzasymm2_scission = wzasymm2_saddle;
633 wzasymm1_scission =
max(wzasymm1_scission,wzasymm1_saddle);
634 wzasymm2_scission =
max(wzasymm2_scission,wzasymm2_saddle);
636 wzasymm1 = wzasymm1_scission * fwidth_asymm1;
637 wzasymm2 = wzasymm2_scission * fwidth_asymm2;
638 wzsymm = wzsymm_scission;
663 n1width = std::sqrt(0.5 * std::sqrt(1.0/a_levdens*(e + e_saddle_scission)) / cn + 1.35);
664 if ( (epsilon0_1_saddle - delta_u1*std::exp((-epsilon_1_saddle*gamma_heavy1))) < 0.0) {
667 sasymm1 = 2.0 * std::sqrt( a_levdens * (epsilon0_1_saddle -
668 delta_u1*(std::exp((-epsilon_1_saddle*gamma_heavy1))) ) );
671 if ( (epsilon0_2_saddle - delta_u2*std::exp((-epsilon_2_saddle*gamma_heavy2))) < 0.0) {
674 sasymm2 = 2.0 * std::sqrt( a_levdens * (epsilon0_2_saddle -
675 delta_u2*(std::exp((-epsilon_2_saddle*gamma_heavy2))) ) );
678 if (epsilon_symm_saddle > 0.0) {
679 ssymm = 2.0 * std::sqrt( a_levdens*(epsilon_symm_saddle) );
686 if (epsilon0_1_saddle < 0.0) {
687 yasymm1 = std::exp((sasymm1-ssymm)) * wzasymm1_saddle / wzsymm_saddle * 2.0;
690 ssymm_mode1 = 2.0 * std::sqrt( a_levdens*(epsilon0_1_saddle) );
691 yasymm1 = ( std::exp((sasymm1-ssymm)) - std::exp((ssymm_mode1 - ssymm)) )
692 * wzasymm1_saddle / wzsymm_saddle * 2.0;
695 if (epsilon0_2_saddle < 0.0) {
696 yasymm2 = std::exp((sasymm2-ssymm)) * wzasymm2_saddle / wzsymm_saddle * 2.0;
699 ssymm_mode2 = 2.0 * std::sqrt( a_levdens*(epsilon0_2_saddle) );
700 yasymm2 = ( std::exp((sasymm2-ssymm)) - std::exp((ssymm_mode2 - ssymm)) )
701 * wzasymm2_saddle / wzsymm_saddle * 2.0;
707 if ( (sasymm1 > -10.0) && (sasymm2 > -10.0) ) {
709 yasymm1 = std::exp(sasymm1) * wzasymm1_saddle * 2.0;
710 yasymm2 = std::exp(sasymm2) * wzasymm2_saddle * 2.0;
715 ysum = ysymm + yasymm1 + yasymm2;
717 ysymm = ysymm / ysum;
718 yasymm1 = yasymm1 / ysum;
719 yasymm2 = yasymm2 / ysum;
725 if ( (epsilon_symm_saddle < epsilon_1_saddle) && (epsilon_symm_saddle < epsilon_2_saddle) ) {
728 if (epsilon_1_saddle < epsilon_2_saddle) {
744 eexc_max =
max(eexc1_saddle, eexc2_saddle);
745 eexc_max =
max(eexc_max, e);
747 if ((
G4int)(z) % 2 == 0) {
748 r_e_o_max = 0.3 * (1.0 - 0.2 * (std::pow(z, 2)/a - std::pow(92.0, 2)/238.0));
749 e_pair = 2.0 * 12.0 / std::sqrt(a);
750 if(eexc_max > (e_crit + e_pair)) {
753 if(eexc_max < e_pair) {
756 r_e_o = std::pow((eexc_max - e_crit - e_pair)/e_crit, 2) * r_e_o_max;
782 }
else if (rmode < (ysymm + yasymm1)) {
794 }
else if (imode == 2) {
797 }
else if (imode == 3) {
814 while ( (z1<5.0) || (z2<5.0) ) {
842 re1 =
umass(z1,n1ucd,0.6) +
umass(z2,n2ucd,0.6) +
ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,2.0);
843 re2 =
umass(z1,n1ucd+1.,0.6) +
umass(z2,n2ucd-1.,0.6) +
ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,2.0);
844 re3 =
umass(z1,n1ucd+2.,0.6) +
umass(z2,n2ucd-2.,0.6) +
ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,2.0);
845 reps2 = (re1-2.0*re2+re3) / 2.0;
846 reps1 = re2 - re1 - reps2;
847 rn1_pol = - reps1 / (2.0 * reps2);
848 n1mean = n1ucd + rn1_pol;
850 n1mean = (z1 + 0.5) * n/z;
860 while (n1r < 5 || n2r < 5) {
864 i_inter =
int(n1r + 0.5);
865 n1r = double(i_inter);
874 ne_min = 0.095e0 * a - 20.4e0;
875 if (ne_min < 0) ne_min = 0.0;
876 ne_min = ne_min + e / 8.e0;
885 }
else if (a1 >= 80 && a1 < 110) {
886 ed1_low = (a1-80.)*20./30.;
887 }
else if (a1 >= 110 && a1 < 130) {
888 ed1_low = -(a1-110.)*20./20. + 20.;
889 }
else if (a1 >= 130) {
890 ed1_low = (a1-130.)*20./30.;
895 }
else if (a2 >= 80 && a2 < 110) {
896 ed2_low = (a2-80.)*20./30.;
897 }
else if (a2 >= 110 && a2 < 130) {
898 ed2_low = -(a2-110.)*20./20. + 20.;
899 }
else if (a2 >= 130) {
900 ed2_low = (a2-130.)*20./30.;
903 ed1_high = 20.0*a1/(a1+a2);
904 ed2_high = 20.0 - ed1_high;
905 ed1 = ed1_low*std::exp(-e/el) + ed1_high*(1-std::exp(-e/el));
906 ed2 = ed2_low*std::exp(-e/el) + ed2_high*(1-std::exp(-e/el));
910 e1 = e*a1/(a1+a2) + ed1;
911 e2 = e - e*a1/(a1+a2) + ed2;
922 if ( (icz == -1) || (a1 < 0.0) || (a2 < 0.0) ) {
936 asymm = nsymm + zsymm;
941 cz_symm = 8.0 / std::pow(z,2) * masscurv;
943 wzsymm = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cz_symm) ) ;
957 while ( (z1 < 5.0) || (z2 < 5.0) ) {
961 z1 =
gausshaz(kkk, z1mean, z1width);
977 cn =
umass(zsymm, nsymm+1.0, 0.0) +
umass(zsymm, nsymm-1.0, 0.0)
978 + 1.44 * std::pow(zsymm, 2)/
979 (std::pow(r_null, 2) * std::pow(std::pow(asymm+1.0, 1.0/3.0) + std::pow(asymm-1.0, 1.0/3.0), 2))
980 - 2.0 *
umass(zsymm, nsymm, 0.0) - 1.44 * std::pow(zsymm, 2) /
981 std::pow(r_null * 2.0 *std::pow(asymm, 1.0/3.0), 2);
984 n1width = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cn) + 1.35);
993 re1 =
umass(z1,n1ucd, 0.6) +
umass(z2,n2ucd, 0.6) +
ecoul(z1,n1ucd, 0.6,z2,n2ucd, 0.6,2.0);
994 re2 =
umass(z1,n1ucd+1.,0.6) +
umass(z2,n2ucd-1.,0.6) +
ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,2.0);
995 re3 =
umass(z1,n1ucd+2.,0.6) +
umass(z2,n2ucd-2.,0.6) +
ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,2.0);
996 reps2 = (re1-2.0*re2+re3) / 2.0;
997 reps1 = re2 - re1 - reps2;
998 rn1_pol = - reps1 / (2.0 * reps2);
999 n1mean = n1ucd + rn1_pol;
1005 n1r = (float)( (
int)(
gausshaz(k, n1mean,n1width)) );
1012 e2 = e - e*a1/(a1+a2);
G4double umass(G4double z, G4double n, G4double beta)
G4int max(G4int a, G4int b)
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
G4double gausshaz(int k, double xmoy, double sig)
G4double ecoul(G4double z1, G4double n1, G4double beta1, G4double z2, G4double n2, G4double beta2, G4double d)
void even_odd(G4double r_origin, G4double r_even_odd, G4int &i_out)