/* 1. fragment is spherical */
/* 2. fragment is spherical */
/* N appr. 86 */
/* 2. fragment is spherical */
/* 1. fragment is spherical */
3515{
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
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;
3599
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;
3607
3608 G4double n1r = 0.0, n2r = 0.0, a1r = 0.0, a2r = 0.0, n1 = 0.0, n2 = 0.0;
3609
3610 G4double zsymm = 0.0, nsymm = 0.0, asymm = 0.0;
3611 G4double n1mean = 0.0, n2mean, n1width;
3613
3615
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;
3620
3622
3623
3625
3626
3628
3629 G4double a_levdens_light1 = 0.0, a_levdens_light2 = 0.0;
3630 G4double a_levdens_heavy1 = 0.0, a_levdens_heavy2 = 0.0;
3632
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;
3638
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;
3646
3650
3651 G4double ekinr1 = 0.0, ekinr2 = 0.0;
3652 G4int icz = 0, k = 0;
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3665
3667
3668 const G4double delta_u1_shell = -2.65;
3669
3670
3671 const G4double delta_u2_shell = -3.8;
3672
3673
3675
3677
3678 const G4double cz_asymm1_shell = 0.7;
3679
3680 const G4double cz_asymm2_shell = 0.15;
3681
3682 const G4double fwidth_asymm1 = 0.63;
3683
3684 const G4double fwidth_asymm2 = 0.97;
3685
3686
3688
3690
3692
3694
3696
3698
3700
3701 const G4double friction_factor = 1.0;
3702
3703
3704
3706
3708
3710
3712
3714
3716
3718
3720
3722
3724
3726
3728
3730
3732
3734
3736
3738
3740
3741 G4double r_e_o = 0.0, r_e_o_exp = 0.0;
3742
3744
3746
3748
3750
3752
3753
3754
3756
3758
3759 const G4int nzpol = 1;
3760
3761 const G4int itest = 0;
3762
3763
3764 G4double reps1 = 0.0, reps2 = 0.0, rn1_pol = 0.0;
3765
3767
3768
3769
3770
3771 if(itest == 1) {
3775 }
3776
3777
3779
3780 k = 0;
3781 icz = 0;
3782 if ( (std::pow(z,2)/a < 25.0) || (n < nheavy2) || (e > 500.0) ) {
3783 icz = -1;
3784
3785 goto milledeux;
3786 }
3787
3788 nlight1 =
n - nheavy1;
3789 nlight2 =
n - nheavy2;
3790
3791
3792
3793
3794
3795
3796 zheavy1_shell = ((nheavy1/
n) * z) - ((a/
n) * cpol1);
3797 zheavy2_shell = ((nheavy2/
n) * z) - ((a/
n) * cpol2);
3798
3799 e_saddle_scission =
3800 (-24.0 + 0.02227 * (std::pow(z,2))/(std::pow(a,0.33333)) ) * friction_factor;
3801
3802
3803
3804
3805 if (e_saddle_scission > 0.) {
3806 e_saddle_scission = e_saddle_scission;
3807 }
3808 else {
3809 e_saddle_scission = 0.;
3810 }
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
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))) );
3825 } else {
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))) );
3828 }
3829
3830 cz_symm = (8.0/std::pow(z,2)) * masscurv;
3831
3832 if(itest == 1) {
3834 }
3835
3836 if (cz_symm < 0) {
3837 icz = -1;
3838
3839 goto milledeux;
3840 }
3841
3842
3843 zsymm = z/2.0;
3845 asymm = nsymm + zsymm;
3846
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);
3849
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;
3854
3855 zlight1 = z - zheavy1;
3856
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;
3864
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)) );
3873
3874 cz_asymm1_saddle = cz_asymm1_shell + cz_symm;
3875 cz_asymm2_saddle = cz_asymm2_shell + cz_symm;
3876
3877
3878
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)) ) );
3888
3889
3890 delta_u1 = delta_u1_shell + (std::pow((zheavy1_shell-zheavy1),2))*cz_asymm1_shell;
3891
3892 delta_u2 = delta_u2_shell + (std::pow((zheavy2_shell-zheavy2),2))*cz_asymm2_shell;
3893
3894
3895
3896
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;
3900
3901 if (itest == 1) {
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;
3911 }
3912
3913
3914
3915
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;
3919 if (itest == 1) {
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;
3923 }
3924
3925
3926 dueff =
min(epot_mode1_saddle,epot_mode2_saddle);
3927 dueff =
min(dueff,epot_symm_saddle);
3928 dueff = dueff - epot_symm_saddle;
3929
3930 eld = e + dueff + e_zero_point;
3931
3932 if (itest == 1) {
3935 G4cout <<
"check e_zero_point = " << e_zero_point <<
G4endl;
3937 }
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947 eheavy1 = e * aheavy1 / a;
3948 eheavy2 = e * aheavy2 / a;
3949 elight1 = e * alight1 / a;
3950 elight2 = e * alight2 / a;
3951
3952 epsilon0_1_saddle = eld - e_zero_point - epot0_mode1_saddle;
3953
3954 epsilon0_2_saddle = eld - e_zero_point - epot0_mode2_saddle;
3955
3956
3957 epsilon_1_saddle = eld - e_zero_point - epot_mode1_saddle;
3958
3959 epsilon_2_saddle = eld - e_zero_point - epot_mode2_saddle;
3960
3961 epsilon_symm_saddle = eld - e_zero_point - epot_symm_saddle;
3962
3963
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);
3968
3969
3970
3971
3972 epsilon0_1_scission = eld + e_saddle_scission - epot0_mode1_saddle;
3973
3974 epsilon0_2_scission = eld + e_saddle_scission - epot0_mode2_saddle;
3975
3976
3977 epsilon_1_scission = eld + e_saddle_scission - epot_mode1_saddle;
3978
3979 epsilon_2_scission = eld+ e_saddle_scission - epot_mode2_saddle;
3980
3981 epsilon_symm_scission = eld + e_saddle_scission - epot_symm_saddle;
3982
3983
3984
3985
3986 e_eff1_saddle = epsilon0_1_saddle - delta_u1 * (std::exp((-epsilon_1_saddle*gamma)));
3987
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) ) );
3992 }
3993 else {
3994 wzasymm1_saddle = 1.0;
3995 }
3996
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) ) );
4002 }
4003 else {
4004 wzasymm2_saddle = 1.0;
4005 }
4006
4007 if (eld > e_zero_point) {
4008 if ( (eld + epsilon_symm_saddle) < 0.0) {
4009 G4cout <<
"<e> eld + epsilon_symm_saddle < 0" <<
G4endl;
4010 }
4011 wzsymm_saddle = std::sqrt( (0.5 *
4012 (std::sqrt(1.0/a_levdens*(eld+epsilon_symm_saddle))) / cz_symm ) );
4013 } else {
4014 wzsymm_saddle = 1.0;
4015 }
4016
4017 if (itest == 1) {
4018 G4cout <<
"wz1(saddle) = " << wzasymm1_saddle <<
G4endl;
4019 G4cout <<
"wz2(saddle) = " << wzasymm2_saddle <<
G4endl;
4020 G4cout <<
"wzsymm(saddle) = " << wzsymm_saddle <<
G4endl;
4021 }
4022
4023
4024
4025
4026 wzsymm_scission = wzsymm_saddle;
4027
4028 if (e_saddle_scission == 0.0) {
4029
4030 wzasymm1_scission = wzasymm1_saddle;
4031 wzasymm2_scission = wzasymm2_saddle;
4032
4033 }
4034 else {
4035
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;
4039 }
4040 else {
4041 wzasymm1_scission = wzasymm1_saddle;
4042 wzasymm2_scission = wzasymm2_saddle;
4043 }
4044
4045 }
4046
4047 wzasymm1_scission =
max(wzasymm1_scission,wzasymm1_saddle);
4048 wzasymm2_scission =
max(wzasymm2_scission,wzasymm2_saddle);
4049
4050 wzasymm1 = wzasymm1_scission * fwidth_asymm1;
4051 wzasymm2 = wzasymm2_scission * fwidth_asymm2;
4052 wzsymm = wzsymm_scission;
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065 wasymm = wzsymm * a/z;
4066 waheavy1 = wzasymm1 * a/z;
4067 waheavy2 = wzasymm2 * a/z;
4068
4069 wasymm_saddle = wzsymm_saddle * a/z;
4070 waheavy1_saddle = wzasymm1_saddle * a/z;
4071 waheavy2_saddle = wzasymm2_saddle * a/z;
4072
4073 if (itest == 1) {
4077 }
4078
4079
4080 if ( (epsilon0_1_saddle - delta_u1*std::exp((-epsilon_1_saddle*gamma_heavy1))) < 0.0) {
4081 sasymm1 = -10.0;
4082 }
4083 else {
4084 sasymm1 = 2.0 * std::sqrt( a_levdens * (epsilon0_1_saddle -
4085 delta_u1*(std::exp((-epsilon_1_saddle*gamma_heavy1))) ) );
4086 }
4087
4088 if ( (epsilon0_2_saddle - delta_u2*std::exp((-epsilon_2_saddle*gamma_heavy2))) < 0.0) {
4089 sasymm2 = -10.0;
4090 }
4091 else {
4092 sasymm2 = 2.0 * std::sqrt( a_levdens * (epsilon0_2_saddle -
4093 delta_u2*(std::exp((-epsilon_2_saddle*gamma_heavy2))) ) );
4094 }
4095
4096 if (epsilon_symm_saddle > 0.0) {
4097 ssymm = 2.0 * std::sqrt( a_levdens*(epsilon_symm_saddle) );
4098 }
4099 else {
4100 ssymm = -10.0;
4101 }
4102
4103 if (ssymm > -10.0) {
4104 ysymm = 1.0;
4105
4106 if (epsilon0_1_saddle < 0.0) {
4107
4108 yasymm1 = std::exp((sasymm1-ssymm)) * wzasymm1_saddle / wzsymm_saddle * 2.0;
4109
4110 }
4111 else {
4112
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;
4116 }
4117
4118 if (epsilon0_2_saddle < 0.0) {
4119
4120 yasymm2 = std::exp((sasymm2-ssymm)) * wzasymm2_saddle / wzsymm_saddle * 2.0;
4121
4122 }
4123 else {
4124
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;
4128 }
4129
4130
4131
4132 }
4133 else {
4134 if ( (sasymm1 > -10.0) && (sasymm2 > -10.0) ) {
4135 ysymm = 0.0;
4136 yasymm1 = std::exp(sasymm1) * wzasymm1_saddle * 2.0;
4137 yasymm2 = std::exp(sasymm2) * wzasymm2_saddle * 2.0;
4138 }
4139 }
4140
4141
4142 ysum = ysymm + yasymm1 + yasymm2;
4143 if (ysum > 0.0) {
4144 ysymm = ysymm / ysum;
4145 yasymm1 = yasymm1 / ysum;
4146 yasymm2 = yasymm2 / ysum;
4147 yasymm = yasymm1 + yasymm2;
4148 }
4149 else {
4150 ysymm = 0.0;
4151 yasymm1 = 0.0;
4152 yasymm2 = 0.0;
4153
4154 if ( (epsilon_symm_saddle < epsilon_1_saddle) && (epsilon_symm_saddle < epsilon_2_saddle) ) {
4155 ysymm = 1.0;
4156 }
4157 else {
4158 if (epsilon_1_saddle < epsilon_2_saddle) {
4159 yasymm1 = 1.0;
4160 }
4161 else {
4162 yasymm2 = 1.0;
4163 }
4164 }
4165 }
4166
4167 if (itest == 1) {
4171 }
4172
4173
4174
4175
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) {
4179 r_e_o_exp = -307.0;
4180 r_e_o = std::pow(10.0,r_e_o_exp);
4181 }
4182 else {
4183 r_e_o = std::pow(10.0,r_e_o_exp);
4184 }
4185 }
4186 else {
4187 r_e_o = 0.0;
4188 }
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202 do {
4204
4205
4206
4207 if (rmode < yasymm1) {
4208 imode = 1;
4209 } else if ( (rmode > yasymm1) && (rmode < (yasymm1+yasymm2)) ) {
4210 imode = 2;
4211 } else if ( (rmode > yasymm1) && (rmode > (yasymm1+yasymm2)) ) {
4212 imode = 3;
4213 }
4214 } while(imode == 0);
4215
4216
4217
4218
4219 if (imode == 1) {
4220 z1mean = zheavy1;
4221 z1width = wzasymm1;
4222 }
4223 if (imode == 2) {
4224 z1mean = zheavy2;
4225 z1width = wzasymm2;
4226 }
4227 if (imode == 3) {
4228 z1mean = zsymm;
4229 z1width = wzsymm;
4230 }
4231
4232 if (itest == 1) {
4237 }
4238
4239
4240 z1 = 1.0;
4241 z2 = 1.0;
4242 while ( (z1<5.0) || (z2<5.0) ) {
4243
4244
4246 z2 = z - z1;
4247 }
4248 if (itest == 1) {
4252 }
4253
4254
4255
4256
4257
4258 z2 = z - z1;
4259
4260
4261 if (imode == 1) {
4262 n1mean = (z1 + cpol1 * a/
n) * n/z;
4263 }
4264 if (imode == 2) {
4265 n1mean = (z1 + cpol2 * a/
n) * n/z;
4266 }
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283 if (imode == 3) {
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;
4293 }
4294
4295 n2mean =
n - n1mean;
4296 z2mean = z - z1mean;
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308 n1r = n1mean;
4309 n2r = n2mean;
4310 a1r = n1r + z1;
4311 a2r = n2r + z2;
4312
4313 if (imode == 1) { ;
4314
4315 e_scission =
max(epsilon_1_scission,1.0);
4316 if (n1mean > (n * 0.5) ) {
4317
4318 beta1 = 0.0;
4319 beta2 = 0.6;
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;
4323 }
4324 else {
4325
4326 beta1 = 0.6;
4327 beta2 = 0.0;
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;
4331 }
4332 }
4333
4334 if (imode == 2) {
4335
4336 e_scission =
max(epsilon_2_scission,1.0);
4337 if (n1mean > (n * 0.5) ) {
4338
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;
4345 }
4346 else {
4347
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;
4354 }
4355 }
4356
4357 if (imode == 3) {
4358
4359
4360
4361
4362
4363
4364
4365 beta = 0.177963 + 0.0153241 * zsymm - 0.000162037 * zsymm*zsymm;
4366 beta1 = 0.177963 + 0.0153241 * z1 - 0.000162037 * z1*z1;
4367
4368 e_defo1 =
umass(z1,n1r,beta1) -
umass(z1,n1r,0.0);
4369 beta2 = 0.177963 + 0.0153241 * z2 - 0.000162037 * z2*z2;
4370
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);
4376
4377 e_scission =
max((epsilon_symm_scission - e_asym),1.0);
4378
4379 e1exc = e_scission * a1r / a + e_defo1;
4380 e2exc = e_scission * a2r / a + e_defo2;
4381 }
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
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;
4408
4409
4410
4411
4412
4413
4414
4415 n1width=std::sqrt( (0.5 * (std::sqrt(1.0/a_levdens*(e_scission)))/cn) );
4416 n1width=
max(n1width, sigzmin);
4417
4418
4419 n1r = 1.0;
4420 n2r = 1.0;
4421 while ( (n1r<5.0) || (n2r<5.0) ) {
4422
4423
4424 n1r =
gausshaz(k, n1mean, n1width);
4426 }
4427
4428 if (itest == 1) {
4430 }
4431 n1r = (float)( (int)((n1r+0.5)) );
4433
4435
4436 z1 = (float)(i_help);
4437 z2 = z - z1;
4438
4439 a1r = z1 + n1r;
4440 a2r = z2 + n2r;
4441 }
4442
4443 if (imode == 3) {
4444
4445 if (nzpol > 0.0) {
4446
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;
4456
4457
4458
4459
4460
4461
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)) );
4464
4465
4466 a1r = z1 + n1mean;
4467 a1r = (float)((int)((a1r+0.5)));
4468 a2r = a - a1r;
4469
4470
4471
4474 z1ucd = z/a * a1r;
4475 z2ucd = z/a * a2r;
4476
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);
4483
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;
4488 if (itest == 1) {
4490 }
4491
4492
4494 if (itest == 1) {
4496 }
4498
4499 z1 = (float)(i_help);
4500 z2 = (float)((int)( (z - z1 + 0.5)) );
4501
4502 n1r = a1r - z1;
4504 }
4505 else {
4506
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;
4514
4515
4516
4517
4518
4519
4520
4521 n1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cn) );
4522 n1width=
max(n1width, sigzmin);
4523
4524
4525
4526
4527 n1r =
gausshaz(k, n1mean, n1width);
4528 n1r = (float)( (int)((n1r+0.5)) );
4530
4532
4533 z1 = (float)(i_help);
4534 z2 = z - z1;
4535
4536 a1r = z1 + n1r;
4537 a2r = z2 + n2r;
4538
4539 }
4540 }
4541
4542 if (itest == 1) {
4549 }
4550
4551
4552
4553 e1exc_sigma = 5.5;
4554 e2exc_sigma = 5.5;
4555
4556 neufcentquatrevingtsept:
4557
4558
4559
4560
4561 e1final =
gausshaz(k, e1exc, e1exc_sigma);
4562 e2final =
gausshaz(k, e2exc, e2exc_sigma);
4563 if ( (e1final < 0.0) || (e2final < 0.0) ) goto neufcentquatrevingtsept;
4564 if (itest == 1) {
4567 }
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586 n1 = n1r;
4587 n2 = n2r;
4588 a1 = n1 + z1;
4589 a2 = n2 + z2;
4590 e1 = e1final;
4591 e2 = e2final;
4592
4593
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 );
4597
4598 ekinr1 = tker * a2 / a;
4599
4600 ekinr2 = tker * a1 / a;
4601
4602 v1 = std::sqrt( (ekinr1/a1) ) * 1.3887;
4603 v2 = std::sqrt( (ekinr2/a2) ) * 1.3887;
4604
4605 if (itest == 1) {
4608 }
4609
4610 milledeux:
4611
4612
4613
4614
4615 if ( (icz == -1) || (a1 < 0.0) || (a2 < 0.0) ) {
4616
4617
4618
4619
4620
4621 if (itest == 1) {
4623 }
4624
4626
4627 zsymm = z / 2.0;
4629 asymm = nsymm + zsymm;
4630
4631 a_levdens = a / xlevdens;
4632
4633 masscurv = 2.0;
4634 cz_symm = 8.0 / std::pow(z,2) * masscurv;
4635
4636 wzsymm = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cz_symm) ) ;
4637
4638 if (itest == 1) {
4641 }
4642
4643 z1mean = zsymm;
4644 z1width = wzsymm;
4645
4646
4647 z1 = 1.0;
4648 z2 = 1.0;
4649 while ( (z1 < 5.0) || (z2 < 5.0) ) {
4650
4651
4652 z1 =
gausshaz(kkk, z1mean, z1width);
4653 z2 = z - z1;
4654 }
4655
4656 if (itest == 1) {
4659 }
4660 if (itest == 1) {
4664 }
4665
4666
4667
4668
4669
4670
4671
4672
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;
4686
4687 if (itest == 1) {
4690 }
4691
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;
4696
4697
4698 n1width = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cn) );
4699
4700 if (itest == 1) {
4703 }
4704
4705
4706
4707
4708 n1r = (float)( (
int)(
gausshaz(k, n1mean,n1width)) );
4710
4711 a1 = z1 + n1r;
4712 a2 = z2 + n2r;
4713
4714 e1 = e*a1/(a1+a2);
4715 e2 = e - e*a1/(a1+a2);
4716 if (itest == 1) {
4719 }
4720
4721 }
4722
4723 if (itest == 1) {
4730 }
4731
4732
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 );
4736
4737 ekin1 = tker * a2 / a;
4738
4739 ekin2 = tker * a1 / a;
4740
4741 v1 = std::sqrt( (ekin1/a1) ) * 1.3887;
4742 v2 = std::sqrt( (ekin2/a2) ) * 1.3887;
4743
4744 if (itest == 1) {
4748 }
4749}
void even_odd(G4double r_origin, G4double r_even_odd, G4int &i_out)
G4double gausshaz(int k, double xmoy, double sig)
G4int max(G4int a, G4int b)
G4int min(G4int a, G4int b)
G4double umass(G4double z, G4double n, G4double beta)