Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/abla/src/G4Abla.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/hadronic/models/abla/src/G4Abla.cc (Version 11.3.0) and /processes/hadronic/models/abla/src/G4Abla.cc (Version 10.6)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // ABLAXX statistical de-excitation model          26 // ABLAXX statistical de-excitation model
 27 // Jose Luis Rodriguez, UDC (translation from  <<  27 // Jose Luis Rodriguez, GSI (translation from ABLA07 and contact person)
 28 // Pekka Kaitaniemi, HIP (initial translation      28 // Pekka Kaitaniemi, HIP (initial translation of ablav3p)
 29 // Aleksandra Kelic, GSI (ABLA07 code)             29 // Aleksandra Kelic, GSI (ABLA07 code)
 30 // Davide Mancusi, CEA (contact person INCL)       30 // Davide Mancusi, CEA (contact person INCL)
 31 // Aatos Heikkinen, HIP (project coordination)     31 // Aatos Heikkinen, HIP (project coordination)
 32 //                                                 32 //
 33                                                    33 
                                                   >>  34 #define ABLAXX_IN_GEANT4_MODE 1
                                                   >>  35 
 34 #include "globals.hh"                              36 #include "globals.hh"
 35 #include <cmath>                               << 
 36 #include <memory>                              << 
 37 #include <time.h>                                  37 #include <time.h>
                                                   >>  38 #include <cmath>
 38                                                    39 
 39 #include "G4Abla.hh"                               40 #include "G4Abla.hh"
 40 #include "G4AblaDataDefs.hh"                   << 
 41 #include "G4AblaDataFile.hh"                       41 #include "G4AblaDataFile.hh"
 42 #include "G4AblaRandom.hh"                         42 #include "G4AblaRandom.hh"
 43                                                <<  43 #ifdef ABLAXX_IN_GEANT4_MODE
 44 G4Abla::G4Abla(G4VarNtp* aVarntp)              <<  44 G4Abla::G4Abla(G4Volant *aVolant, G4VarNtp *aVarntp)
 45 {                                              <<  45 #else
 46     verboseLevel = 0;                          <<  46 G4Abla::G4Abla(G4INCL::Config *config, G4Volant *aVolant, G4VarNtp *aVarntp)
 47     ilast = 0;                                 <<  47 #endif
 48     varntp = static_cast<G4VarNtp*>(aVarntp);  <<  48 {
 49                                                <<  49 #ifndef ABLAXX_IN_GEANT4_MODE
 50     verboseLevel = 0;                          <<  50   theConfig = config;
 51     gammaemission = 0; // 0 presaddle, 1 posts <<  51 #endif
 52     T_freeze_out_in = T_freeze_out = 0.;       <<  52   verboseLevel = 0;
 53     Ainit = 0;                                 <<  53   ilast = 0;
 54     Zinit = 0;                                 <<  54   volant = aVolant; // ABLA internal particle data
 55     Sinit = 0;                                 <<  55   volant->iv = 0;
 56     IEV_TAB_SSC = 0;                           <<  56   varntp = aVarntp; // Output data structure
 57                                                <<  57   varntp->ntrack = 0;
 58     ald = std::make_unique<G4Ald>();           <<  58  
 59     ec2sub = std::make_unique<G4Ec2sub>();     <<  59   verboseLevel = 0;
 60     ecld = std::make_unique<G4Ecld>();         <<  60   gammaemission= 0;// 0 presaddle, 1 postsaddle
 61     masses = std::make_unique<G4Mexp>();       <<  61   T_freeze_out = 0.;
 62     fb = std::make_unique<G4Fb>();             <<  62   Ainit=0;
 63     fiss = std::make_unique<G4Fiss>();         <<  63   Zinit=0;
 64     opt = std::make_unique<G4Opt>();           <<  64   Sinit=0;
                                                   >>  65 
                                                   >>  66   pace = new G4Pace();
                                                   >>  67   ald = new G4Ald();
                                                   >>  68   eenuc = new G4Eenuc();
                                                   >>  69   ec2sub = new G4Ec2sub();
                                                   >>  70   ecld = new G4Ecld();
                                                   >>  71   masses = new G4Mexp();
                                                   >>  72   fb = new G4Fb();
                                                   >>  73   fiss = new G4Fiss();
                                                   >>  74   opt = new G4Opt();
                                                   >>  75 }
                                                   >>  76 
                                                   >>  77 void G4Abla::setVerboseLevel(G4int level)
                                                   >>  78 {
                                                   >>  79   verboseLevel = level;
                                                   >>  80 }
                                                   >>  81 
                                                   >>  82 G4Abla::~G4Abla()
                                                   >>  83 {
                                                   >>  84   delete pace;
                                                   >>  85   delete ald;
                                                   >>  86   delete eenuc;
                                                   >>  87   delete ec2sub;
                                                   >>  88   delete ecld;
                                                   >>  89   delete masses;
                                                   >>  90   delete fb;
                                                   >>  91   delete fiss;
                                                   >>  92   delete opt;
 65 }                                                  93 }
 66                                                    94 
 67 void G4Abla::setVerboseLevel(G4int level) { ve << 
 68                                                << 
 69 // Main interface to the evaporation without l     95 // Main interface to the evaporation without lambda evaporation
 70 void G4Abla::DeexcitationAblaxx(G4int nucleusA <<  96 void G4Abla::DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber)
 71                                 G4int nucleusZ << 
 72                                 G4double excit << 
 73                                 G4double angul << 
 74                                 G4double momX, << 
 75                                 G4double momY, << 
 76                                 G4double momZ, << 
 77                                 G4int eventnum << 
 78 {                                                  97 {
 79     DeexcitationAblaxx(nucleusA, nucleusZ, exc <<  98  DeexcitationAblaxx(nucleusA,nucleusZ,excitationEnergy,angularMomentum,momX,momY,momZ,eventnumber,0);
 80 }                                                  99 }
 81                                                   100 
 82 // Main interface to the evaporation with lamb    101 // Main interface to the evaporation with lambda emission
 83 void G4Abla::DeexcitationAblaxx(G4int nucleusA << 102 void G4Abla::DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber, G4int nucleusS)
 84                                 G4int nucleusZ << 103 {
 85                                 G4double excit << 104 
 86                                 G4double angul << 105   const G4double amu = 931.4940; //  MeV/C^2
 87                                 G4double momX, << 106   const G4double C = 29.9792458; // cm/ns
 88                                 G4double momY, << 107 
 89                                 G4double momZ, << 108   SetParametersG4(nucleusZ, nucleusA);
 90                                 G4int eventnum << 109 
 91                                 G4int nucleusS << 110   mult10:
 92 {                                              << 111   G4int IS = 0;
 93                                                << 112 
 94     const G4double amu = 931.4940; //  MeV/C^2 << 113   if(nucleusS>0)nucleusS=0;// S=1 from INCL ????
 95     const G4double C = 29.9792458; // cm/ns    << 114 
 96                                                << 115   G4int NbLam0 = std::abs(nucleusS);
 97     SetParametersG4(nucleusZ, nucleusA);       << 116 
 98                                                << 117   Ainit=-1*nucleusA;
 99 mult10:                                        << 118   Zinit=-1*nucleusZ;
100     G4int IS = 0;                              << 119   Sinit=-1*nucleusS;
101                                                << 120 
102     varntp->clear(); // Clean up an initialize << 121   G4double aff = 0.0;
103                                                << 122   G4double zff = 0.0;
104     if (nucleusS > 0)                          << 123   G4int ZFP1 = 0, AFP1 = 0, AFPIMF = 0, ZFPIMF = 0, ZFP2 = 0, AFP2 = 0, SFP1 = 0, SFP2 = 0, SFPIMF = 0;
105         nucleusS = 0; // S=1 from INCL ????    << 124   G4double vx_eva = 0.0, vy_eva = 0.0, vz_eva = 0.0;  
106                                                << 125   G4double VX_PREF=0.,VY_PREF=0.,VZ_PREF=00,VP1X,VP1Y,VP1Z,VXOUT,VYOUT,VZOUT,V_CM[3],VFP1_CM[3],VFP2_CM[3],VIMF_CM[3],VX2OUT,VY2OUT,VZ2OUT;
107     G4int NbLam0 = std::abs(nucleusS);         << 126   G4double zf = 0.0, af = 0.0, mtota = 0.0, tkeimf = 0.0, jprf0=0.;
108                                                << 127   G4int ff = 0,afpnew=0,zfpnew=0,aprfp=0,zprfp=0,IOUNSTABLE=0,ILOOP=0,IEV_TAB=0,IEV_TAB_TEMP=0;
109     Ainit = -1 * nucleusA;                     << 128   G4int fimf = 0,INMIN=0,INMAX=0;
110     Zinit = -1 * nucleusZ;                     << 129   G4int ftype=0;//,ftype1=0;
111     Sinit = -1 * nucleusS;                     << 130   G4int inum = eventnumber;
112                                                << 131   G4int inttype = 0;
113     G4double aff = 0.0;                        << 132   opt->optimfallowed=1;
114     G4double zff = 0.0;                        << 133 
115     G4int ZFP1 = 0, AFP1 = 0, AFPIMF = 0, ZFPI << 134   if(fiss->zt>56){
116     G4double vx_eva = 0.0, vy_eva = 0.0, vz_ev << 135   fiss->ifis = 1;
117     G4double VX_PREF = 0., VY_PREF = 0., VZ_PR << 136   }else {
118              VFP2_CM[3], VIMF_CM[3], VX2OUT, V << 137   fiss->ifis = 0;
119     G4double zf = 0.0, af = 0.0, mtota = 0.0,  << 138   }
120     G4int ff = 0, afpnew = 0, zfpnew = 0, aprf << 139 
121           IEV_TAB_TEMP = 0;                    << 140   if(NbLam0>0){
122     G4int fimf = 0, INMIN = 0, INMAX = 0;      << 141    opt->nblan0 = NbLam0;
123     G4int ftype = 0; //,ftype1=0;              << 142   }
124     G4int inum = eventnumber;                  << 143   
125     G4int inttype = 0;                         << 144   G4double aprf = (G4double) nucleusA;
126     opt->optimfallowed = 1;                    << 145   G4double zprf = (G4double) nucleusZ;
127                                                << 146   G4double ee = excitationEnergy;
128     if (fiss->zt > 56)                         << 147   G4double jprf = angularMomentum; // actually root-mean-squared
129     {                                          << 148 
130         fiss->ifis = 1;                        << 149   G4double pxrem = momX;
131     }                                          << 150   G4double pyrem = momY;
132     else                                       << 151   G4double pzrem = momZ;
133     {                                          << 152   G4double zimf,aimf;
134         fiss->ifis = 0;                        << 153 
135     }                                          << 154   volant->clear(); // Clean up an initialize ABLA output.
136                                                << 155   varntp->clear(); // Clean up an initialize ABLA output.
137     if (NbLam0 > 0)                            << 156   varntp->ntrack = 0;
138     {                                          << 157   varntp->kfis = 0;
139         opt->nblan0 = NbLam0;                  << 158   volant->iv = 0;
140     }                                          << 159   gammaemission=0;
141                                                << 160   G4double T_init=0.,T_diff=0.,a_tilda=0.,a_tilda_BU=0., EE_diff=0., EINCL=0., A_FINAL=0., Z_FINAL=0., E_FINAL=0.;
142     G4double aprf = (G4double)nucleusA;        << 161 
143     G4double zprf = (G4double)nucleusZ;        << 162   G4double A_diff=0.,ASLOPE1,ASLOPE2,A_ACC,ABU_SLOPE, ABU_SUM=0., AMEM=0., ZMEM=0., EMEM=0., JMEM=0., PX_BU_SUM = 0.0, PY_BU_SUM = 0.0, PZ_BU_SUM = 0.0, ETOT_SUM=0., P_BU_SUM=0., ZBU_SUM=0.,Z_Breakup_sum=0.,A_Breakup,Z_Breakup,N_Breakup,G_SYMM,CZ,Sigma_Z,Z_Breakup_Mean,ZTEMP=0.,ATEMP=0.;
144     G4double ee = excitationEnergy;            << 163 
145     G4double jprf = angularMomentum; // actual << 164   G4double ETOT_PRF=0.0,PXPRFP=0.,PYPRFP=0.,PZPRFP=0.,PPRFP=0., VX1_BU=0., VY1_BU=0., VZ1_BU=0., VBU2=0., GAMMA_REL=1.0, Eexc_BU_SUM=0., VX_BU_SUM = 0., VY_BU_SUM =0.,VZ_BU_SUM =0., E_tot_BU=0.,EKIN_BU=0.,ZIMFBU=0., AIMFBU=0., ZFFBU=0., AFFBU=0., AFBU=0., ZFBU=0., EEBU=0.,TKEIMFBU=0.,vx_evabu=0.,vy_evabu=0.,vz_evabu=0., Bvalue_BU=0.,P_BU=0.,ETOT_BU=1.,PX_BU=0.,PY_BU=0.,PZ_BU=0.,VX2_BU=0.,VY2_BU=0.,VZ2_BU=0.;
146                                                << 165 
147     G4double pxrem = momX;                     << 166   G4int ABU_DIFF,ZBU_DIFF,NBU_DIFF;
148     G4double pyrem = momY;                     << 167   G4int INEWLOOP = 0, ILOOPBU=0;
149     G4double pzrem = momZ;                     << 168 
150     G4double zimf, aimf;                       << 169   G4double BU_TAB_TEMP[200][6], BU_TAB_TEMP1[200][6]; 
151                                                << 170   G4double EV_TAB_TEMP[200][6],EV_TEMP[200][6];
152     gammaemission = 0;                         << 171   G4int IMEM_BU[200], IMEM=0;
153     G4double T_init = 0., T_diff = 0., a_tilda << 172 
154              Z_FINAL = 0., E_FINAL = 0.;       << 173  if(nucleusA<1){
155                                                << 174   std::cout << "Error - Remnant with a mass number A below 1." << std::endl;
156     G4double A_diff = 0., ASLOPE1, ASLOPE2, A_ << 175  //INCL_ERROR("Remnant with a mass number A below 1.");
157              PX_BU_SUM = 0.0, PY_BU_SUM = 0.0, << 176  return;
158              Z_Breakup_sum = 0., A_Breakup, Z_ << 177  }
159              ATEMP = 0.;                       << 178 
160                                                << 179   for(G4int j=0;j<3;j++){
161     G4double ETOT_PRF = 0.0, PXPRFP = 0., PYPR << 180    V_CM[j]=0.;
162              VBU2 = 0., GAMMA_REL = 1.0, Eexc_ << 181    VFP1_CM[j]=0.;
163              E_tot_BU = 0., EKIN_BU = 0., ZIMF << 182    VFP2_CM[j]=0.;
164              EEBU = 0., TKEIMFBU = 0., vx_evab << 183    VIMF_CM[j]=0.;
165              ETOT_BU = 1., PX_BU = 0., PY_BU = << 184   }
166                                                << 185 
167     G4int ABU_DIFF, ZBU_DIFF, NBU_DIFF;        << 186    for(G4int I1=0;I1<200;I1++){
168     G4int INEWLOOP = 0, ILOOPBU = 0;           << 187        for(G4int I2 = 0;I2<12;I2++)
169                                                << 188         BU_TAB[I1][I2] = 0.0;
170     G4double BU_TAB_TEMP[indexpart][6], BU_TAB << 189        for(G4int I2 = 0;I2<6;I2++){
171     G4double EV_TAB_TEMP[indexpart][6], EV_TEM << 190         BU_TAB_TEMP[I1][I2] = 0.0;
172     G4int IMEM_BU[indexpart], IMEM = 0;        << 191         BU_TAB_TEMP1[I1][I2] = 0.0;
173                                                << 192         EV_TAB_TEMP[I1][I2] = 0.0;
174     if (nucleusA < 1)                          << 193         EV_TAB[I1][I2] = 0.0;
175     {                                          << 194         EV_TAB_SSC[I1][I2] = 0.0;
176         std::cout << "Error - Remnant with a m << 195         EV_TEMP[I1][I2] = 0.0;
177         // INCL_ERROR("Remnant with a mass num << 196        }
178         return;                                << 197    }
179     }                                          << 198 
                                                   >> 199   G4int idebug = 0;
                                                   >> 200   if(idebug == 1) {
                                                   >> 201     zprf =   81.;
                                                   >> 202     aprf =   201.;
                                                   >> 203 //    ee =   86.5877686;
                                                   >> 204     ee = 100.0;
                                                   >> 205     jprf =   10.;
                                                   >> 206     zf =   0.;
                                                   >> 207     af =   0.;
                                                   >> 208     mtota =   0.;
                                                   >> 209     ff =  1;
                                                   >> 210     inttype =  0;
                                                   >> 211     //inum =  2;
                                                   >> 212   }
                                                   >> 213 //
                                                   >> 214       G4double AAINCL = aprf;
                                                   >> 215       G4double ZAINCL = zprf;
                                                   >> 216       EINCL = ee;
                                                   >> 217 //
                                                   >> 218 // Velocity after the first stage of reaction (INCL)
                                                   >> 219 // For coupling with INCL, comment the lines below, and use output
                                                   >> 220 // of INCL as pxincl, pyincl,pzincl
                                                   >> 221 //
                                                   >> 222       G4double pincl = std::sqrt(pxrem*pxrem + pyrem*pyrem + pzrem*pzrem);
                                                   >> 223 // PPRFP is in MeV/c
                                                   >> 224       G4double ETOT_incl = std::sqrt(pincl*pincl + (AAINCL * amu)*(AAINCL * amu));
                                                   >> 225       G4double VX_incl = C * pxrem / ETOT_incl;
                                                   >> 226       G4double VY_incl = C * pyrem / ETOT_incl;
                                                   >> 227       G4double VZ_incl = C * pzrem / ETOT_incl;
                                                   >> 228 //
                                                   >> 229 // Multiplicity in the break-up event
                                                   >> 230       G4int  IMULTBU = 0;
                                                   >> 231       G4int  IMULTIFR = 0;
                                                   >> 232       G4int  I_Breakup=0;
                                                   >> 233       G4int  NbLamprf= 0;
                                                   >> 234            IEV_TAB = 0;
                                                   >> 235 /*
                                                   >> 236 C     Set maximum temperature for sequential decay (evaporation)
                                                   >> 237 C     Remove additional energy by simultaneous break up
                                                   >> 238 C                          (vaporisation or multi-fragmentation)
                                                   >> 239 
                                                   >> 240 C     Idea: If the temperature of the projectile spectator exceeds
                                                   >> 241 c           the limiting temperature T_freeze_out, the additional
                                                   >> 242 C           energy which is present in the spectator is used for
                                                   >> 243 C           a stage of simultaneous break up. It is either the
                                                   >> 244 C           simultaneous emission of a gaseous phase or the simultaneous
                                                   >> 245 C           emission of several intermediate-mass fragments. Only one
                                                   >> 246 C           piece of the projectile spectator (assumed to be the largest
                                                   >> 247 C           one) is kept track.
                                                   >> 248 
                                                   >> 249 C        MVR, KHS, October 2001
                                                   >> 250 C        KHS, AK 2007 - Masses from the power low; slope parameter dependent on
                                                   >> 251 C                      energy  per nucleon; symmtery-energy coeff. dependent on
                                                   >> 252 C                      energy per nucleon.
                                                   >> 253 
                                                   >> 254 c       Clear BU_TAB (array of multifragmentation products)
                                                   >> 255 */
                                                   >> 256         if(T_freeze_out_in >= 0.0){
                                                   >> 257           T_freeze_out = T_freeze_out_in;
                                                   >> 258         }else{
                                                   >> 259          T_freeze_out = max(9.33*std::exp(-0.00282*AAINCL),5.5);
                                                   >> 260 //         ! See: J. Natowitz et al, PRC65 (2002) 034618
                                                   >> 261 //        T_freeze_out=DMAX1(9.0D0*DEXP(-0.001D0*AAABRA),
                                                   >> 262 //     &                     5.5D0)
                                                   >> 263         }
                                                   >> 264 //
                                                   >> 265         a_tilda = ald->av*aprf + ald->as*std::pow(aprf,2.0/3.0) + ald->ak*std::pow(aprf,1.0/3.0);
                                                   >> 266 
                                                   >> 267         T_init = std::sqrt(EINCL/a_tilda);
                                                   >> 268 
                                                   >> 269         T_diff = T_init - T_freeze_out;
180                                                   270 
181     for (G4int j = 0; j < 3; j++)              << 271         if(T_diff>0.1 && zprf>2. && (aprf-zprf)>0.){
182     {                                          << 272         // T_Diff is set to be larger than 0.1 MeV in order to avoid strange cases for which
183         V_CM[j] = 0.;                          << 273         // T_Diff is of the order of 1.e-3 and less.
184         VFP1_CM[j] = 0.;                       << 
185         VFP2_CM[j] = 0.;                       << 
186         VIMF_CM[j] = 0.;                       << 
187     }                                          << 
188                                                << 
189     for (G4int I1 = 0; I1 < indexpart; I1++)   << 
190     {                                          << 
191         for (G4int I2 = 0; I2 < 12; I2++)      << 
192             BU_TAB[I1][I2] = 0.0;              << 
193         for (G4int I2 = 0; I2 < 6; I2++)       << 
194         {                                      << 
195             BU_TAB_TEMP[I1][I2] = 0.0;         << 
196             BU_TAB_TEMP1[I1][I2] = 0.0;        << 
197             EV_TAB_TEMP[I1][I2] = 0.0;         << 
198             EV_TAB[I1][I2] = 0.0;              << 
199             EV_TAB_SSC[I1][I2] = 0.0;          << 
200             EV_TEMP[I1][I2] = 0.0;             << 
201         }                                      << 
202     }                                          << 
203                                                << 
204     G4int idebug = 0;                          << 
205     if (idebug == 1)                           << 
206     {                                          << 
207         zprf = 81.;                            << 
208         aprf = 201.;                           << 
209         //    ee =   86.5877686;               << 
210         ee = 100.0;                            << 
211         jprf = 10.;                            << 
212         zf = 0.;                               << 
213         af = 0.;                               << 
214         mtota = 0.;                            << 
215         ff = 1;                                << 
216         inttype = 0;                           << 
217         // inum =  2;                          << 
218     }                                          << 
219     //                                         << 
220     G4double AAINCL = aprf;                    << 
221     G4double ZAINCL = zprf;                    << 
222     EINCL = ee;                                << 
223     //                                         << 
224     // Velocity after the first stage of react << 
225     // For coupling with INCL, comment the lin << 
226     // of INCL as pxincl, pyincl,pzincl        << 
227     //                                         << 
228     G4double pincl = std::sqrt(pxrem * pxrem + << 
229     // PPRFP is in MeV/c                       << 
230     G4double ETOT_incl = std::sqrt(pincl * pin << 
231     G4double VX_incl = C * pxrem / ETOT_incl;  << 
232     G4double VY_incl = C * pyrem / ETOT_incl;  << 
233     G4double VZ_incl = C * pzrem / ETOT_incl;  << 
234     //                                         << 
235     // Multiplicity in the break-up event      << 
236     G4int IMULTBU = 0;                         << 
237     G4int IMULTIFR = 0;                        << 
238     G4int I_Breakup = 0;                       << 
239     G4int NbLamprf = 0;                        << 
240     IEV_TAB = 0;                               << 
241                                                << 
242     /*                                         << 
243     C     Set maximum temperature for sequenti << 
244     C     Remove additional energy by simultan << 
245     C                          (vaporisation o << 
246                                                << 
247     C     Idea: If the temperature of the proj << 
248     c           the limiting temperature T_fre << 
249     C           energy which is present in the << 
250     C           a stage of simultaneous break  << 
251     C           simultaneous emission of a gas << 
252     C           emission of several intermedia << 
253     C           piece of the projectile specta << 
254     C           one) is kept track.            << 
255                                                << 
256     C        MVR, KHS, October 2001            << 
257     C        KHS, AK 2007 - Masses from the po << 
258     on C                      energy  per nucl << 
259     dependent on C                      energy << 
260                                                << 
261     c       Clear BU_TAB (array of multifragme << 
262     */                                         << 
263     if (T_freeze_out_in >= 0.0)                << 
264     {                                          << 
265         T_freeze_out = T_freeze_out_in;        << 
266     }                                          << 
267     else                                       << 
268     {                                          << 
269         T_freeze_out = max(9.33 * std::exp(-0. << 
270         //         ! See: J. Natowitz et al, P << 
271         //        T_freeze_out=DMAX1(9.0D0*DEX << 
272         //     &                     5.5D0)    << 
273     }                                          << 
274     //                                         << 
275     a_tilda = ald->av * aprf + ald->as * std:: << 
276                                                << 
277     T_init = std::sqrt(EINCL / a_tilda);       << 
278                                                << 
279     T_diff = T_init - T_freeze_out;            << 
280                                                << 
281     if (T_diff > 0.1 && zprf > 2. && (aprf - z << 
282     {                                          << 
283         // T_Diff is set to be larger than 0.1 << 
284         // for which T_Diff is of the order of << 
285         varntp->kfis = 10;                        274         varntp->kfis = 10;
286                                                   275 
287         for (G4int i = 0; i < 5; i++)          << 276         for(G4int i=0;i<5;i++){
288         {                                      << 277             EE_diff = EINCL - a_tilda * T_freeze_out*T_freeze_out;
289             EE_diff = EINCL - a_tilda * T_free << 278 //            Energy removed 10*5/T_init per nucleon removed in simultaneous breakup
290             //            Energy removed 10*5/ << 279 //            adjusted to frag. xsections 238U (1AGeV) + Pb data, KHS Dec. 2005
291             //            simultaneous breakup << 280 // This should maybe be re-checked, in a meanwhile several things in break-up description
292             //            (1AGeV) + Pb data, K << 281 // have changed (AK).
293             // This should maybe be re-checked << 
294             // break-up description have chang << 
295                                                   282 
296             A_diff = dint(EE_diff / (8.0 * 5.0    283             A_diff = dint(EE_diff / (8.0 * 5.0 / T_freeze_out));
297                                                   284 
298             if (A_diff > AAINCL)               << 285             if(A_diff>AAINCL) A_diff = AAINCL;
299                 A_diff = AAINCL;               << 
300                                                   286 
301             A_FINAL = AAINCL - A_diff;            287             A_FINAL = AAINCL - A_diff;
302                                                   288 
303             a_tilda =                          << 289             a_tilda = ald->av*A_FINAL + ald->as*std::pow(A_FINAL,2.0/3.0) + ald->ak*std::pow(A_FINAL,1.0/3.0);
304                 ald->av * A_FINAL + ald->as *  << 290             E_FINAL = a_tilda * T_freeze_out*T_freeze_out;
305             E_FINAL = a_tilda * T_freeze_out * << 
306                                                << 
307             if (A_FINAL < 4.0)                 << 
308             { // To avoid numerical problems   << 
309                 EE_diff = EINCL - E_FINAL;     << 
310                 A_FINAL = 1.0;                 << 
311                 Z_FINAL = 1.0;                 << 
312                 E_FINAL = 0.0;                 << 
313                 goto mul4325;                  << 
314             }                                  << 
315         }                                      << 
316     mul4325:                                   << 
317         // The idea is similar to Z determinat << 
318         // partner is not fixed by the A/Z of  << 
319         // from Gaussian Z_FINAL_MEAN = dint(z << 
320                                                << 
321         Z_FINAL = dint(zprf * A_FINAL / (aprf) << 
322                                                << 
323         if (E_FINAL < 0.0)                     << 
324             E_FINAL = 0.0;                     << 
325                                                << 
326         aprf = A_FINAL;                        << 
327         zprf = Z_FINAL;                        << 
328         ee = E_FINAL;                          << 
329                                                << 
330         A_diff = AAINCL - aprf;                << 
331                                                << 
332         // Creation of multifragmentation prod << 
333         if (A_diff <= 1.0)                     << 
334         {                                      << 
335             aprf = AAINCL;                     << 
336             zprf = ZAINCL;                     << 
337             ee = EINCL;                        << 
338             IMULTIFR = 0;                      << 
339             goto mult7777;                     << 
340         }                                      << 
341         else if (A_diff > 1.0)                 << 
342         {                                      << 
343                                                << 
344             A_ACC = 0.0;                       << 
345             // Energy-dependence of the slope  << 
346             // to exp. data (see e.g. Sfienti  << 
347             ASLOPE1 = -2.400; // e*/a=7   -2.4 << 
348             ASLOPE2 = -1.200; // e*/a=3   -1.2 << 
349                                                << 
350             a_tilda = ald->av * AAINCL + ald-> << 
351                                                << 
352             E_FINAL = a_tilda * T_freeze_out * << 
353                                                << 
354             ABU_SLOPE = (ASLOPE1 - ASLOPE2) /  << 
355                                                << 
356             // Botvina et al, PRC 74 (2006) 04 << 
357             //          ABU_SLOPE = 5.57489D0- << 
358             //     &    0.3552D0*(E_FINAL/AAAB << 
359             //     &    7.268D-4*(E_FINAL/AAAB << 
360             // They fit with A**(-tau) and her << 
361             //          ABU_SLOPE = ABU_SLOPE* << 
362                                                << 
363             //           ABU_SLOPE = -2.60D0   << 
364             //          print*,ABU_SLOPE,(E_FI << 
365                                                << 
366             if (ABU_SLOPE > -1.01)             << 
367                 ABU_SLOPE = -1.01;             << 
368                                                << 
369             I_Breakup = 0;                     << 
370             Z_Breakup_sum = Z_FINAL;           << 
371             ABU_SUM = 0.0;                     << 
372             ZBU_SUM = 0.0;                     << 
373                                                << 
374             for (G4int i = 0; i < 100; i++)    << 
375             {                                  << 
376                 IS = 0;                        << 
377             mult4326:                          << 
378                 A_Breakup = dint(G4double(IPOW << 
379                 // Power law with exponent ABU << 
380                 IS = IS + 1;                   << 
381                 if (IS > 100)                  << 
382                 {                              << 
383                     std::cout << "WARNING: IPO << 
384                                  "CALCULATING  << 
385                               << A_Breakup <<  << 
386                     goto mult10;               << 
387                 }                              << 
388                                                << 
389                 if (A_Breakup > AAINCL)        << 
390                     goto mult4326;             << 
391                                                << 
392                 if (A_Breakup <= 0.0)          << 
393                 {                              << 
394                     std::cout << "A_BREAKUP <= << 
395                     goto mult10;               << 
396                 }                              << 
397                                                   291 
398                 A_ACC = A_ACC + A_Breakup;     << 292             if(A_FINAL<4.0){  // To avoid numerical problems
                                                   >> 293               EE_diff = EINCL - E_FINAL;
                                                   >> 294               A_FINAL = 1.0;
                                                   >> 295               Z_FINAL = 1.0;
                                                   >> 296               E_FINAL = 0.0;
                                                   >> 297               goto mul4325;
                                                   >> 298             }
                                                   >> 299         }
                                                   >> 300         mul4325:
                                                   >> 301 // The idea is similar to Z determination of multifragment - Z of "heavy" partner is not
                                                   >> 302 // fixed by the A/Z of the prefragment, but randomly picked from Gaussian
                                                   >> 303          // Z_FINAL_MEAN = dint(zprf * A_FINAL / (aprf));
                                                   >> 304 
                                                   >> 305           Z_FINAL = dint(zprf * A_FINAL / (aprf));
                                                   >> 306 
                                                   >> 307           if(E_FINAL<0.0) E_FINAL = 0.0;
                                                   >> 308 
                                                   >> 309           aprf = A_FINAL;
                                                   >> 310           zprf = Z_FINAL;
                                                   >> 311           ee = E_FINAL;
                                                   >> 312 
                                                   >> 313           A_diff = AAINCL - aprf;
                                                   >> 314 
                                                   >> 315 // Creation of multifragmentation products by breakup
                                                   >> 316           if(A_diff<=1.0){
                                                   >> 317            aprf = AAINCL;
                                                   >> 318            zprf = ZAINCL;
                                                   >> 319            ee = EINCL;
                                                   >> 320            IMULTIFR = 0;
                                                   >> 321            goto mult7777;
                                                   >> 322           }else if(A_diff>1.0){
                                                   >> 323 
                                                   >> 324           A_ACC = 0.0;
                                                   >> 325 // Energy-dependence of the slope parameter, acc. to A. Botvina, fits also to exp. data (see
                                                   >> 326 // e.g. Sfienti et al, NPA 2007)
                                                   >> 327           ASLOPE1 = -2.400;  // e*/a=7   -2.4
                                                   >> 328           ASLOPE2 = -1.200;  // e*/a=3   -1.2
                                                   >> 329 
                                                   >> 330           a_tilda = ald->av*AAINCL + ald->as*std::pow(AAINCL,2.0/3.0) + ald->ak*std::pow(AAINCL,1.0/3.0);
                                                   >> 331 
                                                   >> 332           E_FINAL = a_tilda * T_freeze_out*T_freeze_out;
                                                   >> 333 
                                                   >> 334           ABU_SLOPE = (ASLOPE1-ASLOPE2)/4.0*(E_FINAL/AAINCL)+
                                                   >> 335                      ASLOPE1-(ASLOPE1-ASLOPE2)*7.0/4.0;
                                                   >> 336 
                                                   >> 337 // Botvina et al, PRC 74 (2006) 044609, fig. 5 for B0=18 MeV
                                                   >> 338 //          ABU_SLOPE = 5.57489D0-2.08149D0*(E_FINAL/AAABRA)+
                                                   >> 339 //     &    0.3552D0*(E_FINAL/AAABRA)**2-0.024927D0*(E_FINAL/AAABRA)**3+
                                                   >> 340 //     &    7.268D-4*(E_FINAL/AAABRA)**4
                                                   >> 341 // They fit with A**(-tau) and here is done A**(tau)
                                                   >> 342 //          ABU_SLOPE = ABU_SLOPE*(-1.D0)
                                                   >> 343 
                                                   >> 344 //           ABU_SLOPE = -2.60D0
                                                   >> 345 //          print*,ABU_SLOPE,(E_FINAL/AAABRA)
                                                   >> 346 
                                                   >> 347           if(ABU_SLOPE > -1.01) ABU_SLOPE = -1.01;
                                                   >> 348 
                                                   >> 349           I_Breakup = 0;
                                                   >> 350           Z_Breakup_sum = Z_FINAL;
                                                   >> 351           ABU_SUM = 0.0;
                                                   >> 352           ZBU_SUM = 0.0;
                                                   >> 353 
                                                   >> 354           for(G4int i=0;i<100;i++){
                                                   >> 355              IS = 0;
                                                   >> 356              mult4326:
                                                   >> 357              A_Breakup = dint(G4double(IPOWERLIMHAZ(ABU_SLOPE,1,idnint(A_diff))));
                                                   >> 358                   // Power law with exponent ABU_SLOPE
                                                   >> 359              IS = IS +1;
                                                   >> 360              if(IS>100){
                                                   >> 361              std::cout << "WARNING: IPOWERLIMHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING A_BREAKUP IN Rn07.FOR. NEW EVENT WILL BE DICED: " << A_Breakup << std::endl;
                                                   >> 362              goto mult10;
                                                   >> 363              }
399                                                   364 
400                 if (A_ACC <= A_diff)           << 365              if(A_Breakup>AAINCL) goto mult4326;
401                 {                              << 
402                                                   366 
403                     Z_Breakup_Mean = dint(A_Br << 367              if(A_Breakup<=0.0){
                                                   >> 368               std::cout << "A_BREAKUP <= 0 " << std::endl;
                                                   >> 369               goto mult10;
                                                   >> 370              }
404                                                   371 
405                     Z_Breakup_sum = Z_Breakup_ << 372             A_ACC = A_ACC + A_Breakup;
406                     //                         << 
407                     // See G.A. Souliotis et a << 
408                     G_SYMM = 34.2281 - 5.14037 << 
409                     if (E_FINAL / AAINCL < 2.0 << 
410                         G_SYMM = 25.0;         << 
411                     if (E_FINAL / AAINCL > 4.0 << 
412                         G_SYMM = 15.0;         << 
413                                                << 
414                     //             G_SYMM = 23 << 
415                                                << 
416                     G_SYMM = 25.0; // 25       << 
417                     CZ = 2.0 * G_SYMM * 4.0 /  << 
418                     // 2*CZ=d^2(Esym)/dZ^2, Es << 
419                     // gamma = 23.6D0 is the s << 
420                     G4int IIS = 0;             << 
421                     Sigma_Z = std::sqrt(T_free << 
422                                                << 
423                     IS = 0;                    << 
424                 mult4333:                      << 
425                     Z_Breakup = dint(G4double( << 
426                     IS = IS + 1;               << 
427                     //                         << 
428                     if (IS > 100)              << 
429                     {                          << 
430                         std::cout << "WARNING: << 
431                                      "CALCULAT << 
432                                      "DICED: " << 
433                                   << A_Breakup << 
434                         goto mult10;           << 
435                     }                          << 
436                                                << 
437                     if (Z_Breakup < 0.0)       << 
438                         goto mult4333;         << 
439                     if ((A_Breakup - Z_Breakup << 
440                         goto mult4333;         << 
441                     if ((A_Breakup - Z_Breakup << 
442                         goto mult4333;         << 
443                                                << 
444                     if (Z_Breakup >= ZAINCL)   << 
445                     {                          << 
446                         IIS = IIS + 1;         << 
447                         if (IIS > 10)          << 
448                         {                      << 
449                             std::cout << "Z_BR << 
450                                          "BE R << 
451                                       << std:: << 
452                             goto mult10;       << 
453                         }                      << 
454                         goto mult4333;         << 
455                     }                          << 
456                                                   373 
457                     //     *** Find the limits << 374             if(A_ACC<=A_diff){
458                     isostab_lim(idnint(Z_Break << 
459                     //        INMIN = MAX(1,IN << 
460                     if (Z_Breakup > 2.0)       << 
461                     {                          << 
462                         if (idnint(A_Breakup - << 
463                         {                      << 
464                             //             PRI << 
465                             //     & IDNINT(Z_ << 
466                             goto mult4343;     << 
467                         }                      << 
468                     }                          << 
469                                                   375 
470                 mult4343:                      << 376               Z_Breakup_Mean = dint(A_Breakup * ZAINCL / AAINCL);
471                                                   377 
472                     // We consider all product << 378               Z_Breakup_sum = Z_Breakup_sum + Z_Breakup_Mean;
473                     //               I_Breakup << 379 //
                                                   >> 380 // See G.A. Souliotis et al, PRC 75 (2007) 011601R (Fig. 2)
                                                   >> 381               G_SYMM = 34.2281 - 5.14037 * E_FINAL/AAINCL;
                                                   >> 382               if(E_FINAL/AAINCL < 2.0) G_SYMM = 25.0;
                                                   >> 383               if(E_FINAL/AAINCL > 4.0) G_SYMM = 15.0;
                                                   >> 384 
                                                   >> 385 //             G_SYMM = 23.6;
                                                   >> 386 
                                                   >> 387               G_SYMM = 25.0;      //25
                                                   >> 388               CZ = 2.0 * G_SYMM * 4.0 / A_Breakup;
                                                   >> 389               // 2*CZ=d^2(Esym)/dZ^2, Esym=Gamma*(A-2Z)**2/A
                                                   >> 390                // gamma = 23.6D0 is the symmetry-energy coefficient
                                                   >> 391               G4int IIS = 0;
                                                   >> 392               Sigma_Z = std::sqrt(T_freeze_out/CZ);
                                                   >> 393 
                                                   >> 394               IS = 0;
                                                   >> 395               mult4333:
                                                   >> 396               Z_Breakup =  dint( G4double(gausshaz(1,Z_Breakup_Mean,Sigma_Z)));
                                                   >> 397               IS = IS +1;
                                                   >> 398 //
                                                   >> 399               if(IS>100){
                                                   >> 400                std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING Z_BREAKUP IN Rn07.FOR. NEW EVENT WILL BE DICED: " << A_Breakup << " " << Z_Breakup << std::endl;
                                                   >> 401                goto mult10;
                                                   >> 402               }
                                                   >> 403 
                                                   >> 404              if(Z_Breakup<0.0 ) goto mult4333;
                                                   >> 405              if((A_Breakup-Z_Breakup)<0.0) goto mult4333;
                                                   >> 406              if((A_Breakup-Z_Breakup)==0.0 && Z_Breakup!=1.0) goto mult4333;
                                                   >> 407 
                                                   >> 408              if(Z_Breakup>=ZAINCL){
                                                   >> 409                IIS = IIS + 1;
                                                   >> 410                  if(IIS > 10){
                                                   >> 411                    std::cout << "Z_BREAKUP RESAMPLED MORE THAN 10 TIMES; EVENT WILL BE RESAMPLED AGAIN " << std::endl;
                                                   >> 412                    goto mult10;
                                                   >> 413                  }
                                                   >> 414                goto mult4333;
                                                   >> 415              }
474                                                   416 
475                     N_Breakup = A_Breakup - Z_ << 417 //     *** Find the limits that fragment is bound :
476                     BU_TAB[I_Breakup][0] = din << 418         isostab_lim(idnint(Z_Breakup),&INMIN,&INMAX);
477                     BU_TAB[I_Breakup][1] = din << 419 //        INMIN = MAX(1,INMIN-2)
478                     ABU_SUM = ABU_SUM + BU_TAB << 420         if(Z_Breakup > 2.0){
479                     ZBU_SUM = ZBU_SUM + BU_TAB << 421           if(idnint(A_Breakup-Z_Breakup)<INMIN || idnint(A_Breakup-Z_Breakup)>(INMAX+5)){
480                     //                         << 422 //             PRINT*,'N_Breakup >< NMAX',
481                     // Break-up products are g << 423 //     &      IDNINT(Z_Breakup),IDNINT(A_Breakup-Z_Breakup),INMIN,INMAX
482                     BU_TAB[I_Breakup][3] = 0.0 << 424             goto mult4343;
483                     I_Breakup = I_Breakup + 1; << 425           }
484                     IMULTBU = IMULTBU + 1;     << 426         }
485                 }                              << 427 
486                 else                           << 428   mult4343:
487                 {                              << 429 
488                     //     There are A_DIFF -  << 430 // We consider all products, also nucleons created in the break-up
489                     //     not end up in multi << 431 //               I_Breakup = I_Breakup + 1;// moved below
490                     //     of the Monte-Carlo  << 432 
491                     //     of the fragments ac << 433                N_Breakup = A_Breakup - Z_Breakup;
492                     //            print*,'Defi << 434                BU_TAB[I_Breakup][0] = dint(Z_Breakup);    // Mass of break-up product
493                                                << 435                BU_TAB[I_Breakup][1] = dint(A_Breakup);    // Z of break-up product
494                     goto mult4327;             << 436                ABU_SUM = ABU_SUM + BU_TAB[i][1];
495                 } // if(A_ACC<=A_diff)         << 437                ZBU_SUM = ZBU_SUM + BU_TAB[i][0];
496             }     // for                       << 438 //
497                   // mult4327:                 << 439 // Break-up products are given zero angular momentum (simplification)
498                   // IMULTIFR = 1;             << 440                BU_TAB[I_Breakup][3] = 0.0;
499         }         //  if(A_diff>1.0)           << 441                I_Breakup = I_Breakup + 1;
500     mult4327:                                  << 442                IMULTBU = IMULTBU + 1;
501         IMULTIFR = 1;                          << 443            }else{
502                                                << 444 //     There are A_DIFF - A_ACC nucleons lost by breakup, but they do not end up in multifragmentation products.
503         // "Missing" A and Z picked from the p << 445 //     This is a deficiency of the Monte-Carlo method applied above to determine the sizes of the fragments
504         ABU_DIFF = idnint(ABU_SUM + aprf - AAI << 446 //     according to the power law.
505         ZBU_DIFF = idnint(ZBU_SUM + zprf - ZAI << 447 //            print*,'Deficiency',IDNINT(A_DIFF-A_ACC)
506         NBU_DIFF = idnint((ABU_SUM - ZBU_SUM)  << 448 
507         //                                     << 449              goto mult4327;
508         if (IMULTBU > 200)                     << 450            }// if(A_ACC<=A_diff)
509             std::cout << "WARNING - MORE THAN  << 451           }//for
                                                   >> 452           //mult4327:
                                                   >> 453           //IMULTIFR = 1;
                                                   >> 454           } //  if(A_diff>1.0)
                                                   >> 455           mult4327:
                                                   >> 456           IMULTIFR = 1;
                                                   >> 457 
                                                   >> 458 // "Missing" A and Z picked from the power law:
                                                   >> 459         ABU_DIFF = idnint(ABU_SUM+aprf-AAINCL);
                                                   >> 460         ZBU_DIFF = idnint(ZBU_SUM+zprf-ZAINCL);
                                                   >> 461         NBU_DIFF = idnint((ABU_SUM-ZBU_SUM)+(aprf-zprf)-(AAINCL-ZAINCL));
                                                   >> 462 //
                                                   >> 463         if(IMULTBU > 200)
                                                   >> 464         std::cout << "WARNING - MORE THAN 200 BU " << IMULTBU  << std::endl;
510                                                   465 
511         if (IMULTBU < 1)                       << 466         if(IMULTBU < 1)
512             std::cout << "WARNING - LESS THAN  << 467         std::cout << "WARNING - LESS THAN 1 BU " << IMULTBU << std::endl; 
513         //,AABRA,ZABRA,IDNINT(APRF),IDNINT(ZPR << 468          //,AABRA,ZABRA,IDNINT(APRF),IDNINT(ZPRF),ABU_DIFF,ZBU_DIFF
514                                                   469 
515         G4int IPROBA = 0;                         470         G4int IPROBA = 0;
516         for (G4int i = 0; i < IMULTBU; i++)    << 471         for(G4int i=0;i<IMULTBU;i++)
517             IMEM_BU[i] = 0;                    << 472         IMEM_BU[i] = 0;
518                                                   473 
519         while (NBU_DIFF != 0 && ZBU_DIFF != 0) << 474         while(NBU_DIFF!=0 && ZBU_DIFF!=0){
520         {                                      << 475 // (APRF,ZPRF) is also inlcuded in this game, as from time to time the program
521             // (APRF,ZPRF) is also inlcuded in << 476 // is entering into endless loop, as it can not find proper nucleus for adapting A and Z.
522             // program is entering into endles << 477          IS = 0;
523             // nucleus for adapting A and Z.   << 478          mult5555:    
524             IS = 0;                            << 479          G4double RHAZ = G4AblaRandom::flat()*G4double(IMULTBU);
525         mult5555:                              << 480          IPROBA = IPROBA + 1;
526             G4double RHAZ = G4AblaRandom::flat << 481          IS = IS + 1;
527             IPROBA = IPROBA + 1;               << 482          if(IS>100){
528             IS = IS + 1;                       << 483           std::cout << "WARNING: HAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING N_BREAKUP IN Rn07.FOR. NEW EVENT WILL BE DICED." << std::endl; 
529             if (IS > 100)                      << 484           goto mult10;
530             {                                  << 485          }
531                 std::cout << "WARNING: HAZ CAL << 486           G4int IEL = G4int(RHAZ);
532                              "N_BREAKUP IN Rn0 << 487           if(IMEM_BU[IEL]==1) goto mult5555;
533                           << std::endl;        << 488     if(!(IEL<200))std::cout << "5555:" << IEL << RHAZ << IMULTBU << std::endl; 
534                 goto mult10;                   << 489            if(IEL<0)std::cout << "5555:"<< IEL << RHAZ << IMULTBU << std::endl; 
535             }                                  << 490            if(IEL<=IMULTBU){
536             G4int IEL = G4int(RHAZ);           << 491             N_Breakup = dint(BU_TAB[IEL][1]-BU_TAB[IEL][0] - DSIGN(1.0,G4double(NBU_DIFF)));
537             if (IMEM_BU[IEL] == 1)             << 492             }else if(IEL>IMULTBU){
538                 goto mult5555;                 << 493             N_Breakup = dint(aprf - zprf - DSIGN(1.0,G4double(NBU_DIFF)));
539             if (!(IEL < 200))                  << 494             }
540                 std::cout << "5555:" << IEL << << 495             if(N_Breakup<0.0){
541             if (IEL < 0)                       << 496              IMEM_BU[IEL] = 1;
542                 std::cout << "5555:" << IEL << << 497              goto mult5555;
543             if (IEL <= IMULTBU)                << 498             }
544             {                                  << 499              if(IEL<=IMULTBU){
545                 N_Breakup = dint(BU_TAB[IEL][1 << 500              ZTEMP = dint(BU_TAB[IEL][0] - DSIGN(1.0,G4double(ZBU_DIFF)));
546             }                                  << 501              }else if(IEL>IMULTBU){
547             else if (IEL > IMULTBU)            << 502              ZTEMP = dint(zprf - DSIGN(1.0,G4double(ZBU_DIFF)));
548             {                                  << 503              }
549                 N_Breakup = dint(aprf - zprf - << 504               if(ZTEMP<0.0){
550             }                                  << 505                IMEM_BU[IEL] = 1;
551             if (N_Breakup < 0.0)               << 506                goto mult5555;
552             {                                  << 507               }
553                 IMEM_BU[IEL] = 1;              << 508               if(ZTEMP<1.0 && N_Breakup<1.0){
554                 goto mult5555;                 << 509                IMEM_BU[IEL] = 1;
555             }                                  << 510                goto mult5555;
556             if (IEL <= IMULTBU)                << 511               }
557             {                                  << 512 // Nuclei with A=Z and Z>1 are allowed in this stage, as otherwise,
558                 ZTEMP = dint(BU_TAB[IEL][0] -  << 513 // for more central collisions there is not enough mass which can be
559             }                                  << 514 // shufeled in order to conserve A and Z. These are mostly nuclei with
560             else if (IEL > IMULTBU)            << 515 // Z=2 and in less extent 3, 4 or 5.
561             {                                  << 516 //             IF(ZTEMP.GT.1.D0 .AND. N_Breakup.EQ.0.D0) THEN
562                 ZTEMP = dint(zprf - DSIGN(1.0, << 517 //              GOTO 5555
563             }                                  << 518 //             ENDIF
564             if (ZTEMP < 0.0)                   << 519             if(IEL<=IMULTBU){
565             {                                  << 520             BU_TAB[IEL][0] = dint(ZTEMP);
566                 IMEM_BU[IEL] = 1;              << 521             BU_TAB[IEL][1] = dint(ZTEMP + N_Breakup);
567                 goto mult5555;                 << 522             }else if(IEL>IMULTBU){
568             }                                  << 523             zprf = dint(ZTEMP);
569             if (ZTEMP < 1.0 && N_Breakup < 1.0 << 524             aprf = dint(ZTEMP + N_Breakup);
570             {                                  << 525             }
571                 IMEM_BU[IEL] = 1;              << 526           NBU_DIFF = NBU_DIFF - ISIGN(1,NBU_DIFF);
572                 goto mult5555;                 << 527           ZBU_DIFF = ZBU_DIFF - ISIGN(1,ZBU_DIFF);
573             }                                  << 528         }// while
574             // Nuclei with A=Z and Z>1 are all << 
575             // for more central collisions the << 
576             // shufeled in order to conserve A << 
577             // Z=2 and in less extent 3, 4 or  << 
578             //             IF(ZTEMP.GT.1.D0 .A << 
579             //              GOTO 5555          << 
580             //             ENDIF               << 
581             if (IEL <= IMULTBU)                << 
582             {                                  << 
583                 BU_TAB[IEL][0] = dint(ZTEMP);  << 
584                 BU_TAB[IEL][1] = dint(ZTEMP +  << 
585             }                                  << 
586             else if (IEL > IMULTBU)            << 
587             {                                  << 
588                 zprf = dint(ZTEMP);            << 
589                 aprf = dint(ZTEMP + N_Breakup) << 
590             }                                  << 
591             NBU_DIFF = NBU_DIFF - ISIGN(1, NBU << 
592             ZBU_DIFF = ZBU_DIFF - ISIGN(1, ZBU << 
593         } // while                             << 
594                                                   529 
595         IPROBA = 0;                               530         IPROBA = 0;
596         for (G4int i = 0; i < IMULTBU; i++)    << 531         for(G4int i=0;i<IMULTBU;i++)
597             IMEM_BU[i] = 0;                    << 532         IMEM_BU[i] = 0;
598                                                   533 
599         if (NBU_DIFF != 0 && ZBU_DIFF == 0)    << 534         if(NBU_DIFF != 0 && ZBU_DIFF == 0){
600         {                                      << 535          while(NBU_DIFF > 0 || NBU_DIFF < 0){
601             while (NBU_DIFF > 0 || NBU_DIFF <  << 536          IS = 0;
602             {                                  << 537          mult5556:    
603                 IS = 0;                        << 538          G4double RHAZ = G4AblaRandom::flat()*G4double(IMULTBU);
604             mult5556:                          << 539          IS = IS + 1;
605                 G4double RHAZ = G4AblaRandom:: << 540          if(IS>100){
606                 IS = IS + 1;                   << 541           std::cout << "WARNING: HAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING N_BREAKUP IN Rn07.FOR. NEW EVENT WILL BE DICED." << std::endl; 
607                 if (IS > 100)                  << 542           goto mult10;
608                 {                              << 543          }
609                     std::cout << "WARNING: HAZ << 544          G4int IEL = G4int(RHAZ);
610                                  "N_BREAKUP IN << 545          if(IMEM_BU[IEL]==1) goto mult5556;
611                               << std::endl;    << 546 //         IPROBA = IPROBA + 1;
612                     goto mult10;               << 547          if(IPROBA>IMULTBU+1 && NBU_DIFF>0){
613                 }                              << 548          std::cout << "###',IPROBA,IMULTBU,NBU_DIFF,ZBU_DIFF,T_freeze_out" << std::endl; 
614                 G4int IEL = G4int(RHAZ);       << 549          IPROBA = IPROBA + 1;
615                 if (IMEM_BU[IEL] == 1)         << 550            if(IEL<=IMULTBU){
616                     goto mult5556;             << 551             BU_TAB[IEL][1] = dint(BU_TAB[IEL][1]-G4double(NBU_DIFF));
617                 //         IPROBA = IPROBA + 1 << 552            }else{ if(IEL>IMULTBU)
618                 if (IPROBA > IMULTBU + 1 && NB << 553             aprf = dint(aprf - G4double(NBU_DIFF));
619                 {                              << 554            }
620                     std::cout << "###',IPROBA, << 555          goto mult5432;
621                     IPROBA = IPROBA + 1;       << 556          }
622                     if (IEL <= IMULTBU)        << 557    if(!(IEL<200))std::cout << "5556:" << IEL << RHAZ << IMULTBU << std::endl; 
623                     {                          << 558            if(IEL<0)std::cout << "5556:"<< IEL << RHAZ << IMULTBU << std::endl; 
624                         BU_TAB[IEL][1] = dint( << 559            if(IEL<=IMULTBU){
625                     }                          << 560             N_Breakup = dint(BU_TAB[IEL][1]-BU_TAB[IEL][0] - DSIGN(1.0,G4double(NBU_DIFF)));
626                     else                       << 561             }else if(IEL>IMULTBU){
627                     {                          << 562             N_Breakup = dint(aprf - zprf - DSIGN(1.0,G4double(NBU_DIFF)));
628                         if (IEL > IMULTBU)     << 563             }
629                             aprf = dint(aprf - << 564             if(N_Breakup<0.0){
630                     }                          << 565              IMEM_BU[IEL] = 1;
631                     goto mult5432;             << 566              goto mult5556;
632                 }                              << 567             }
633                 if (!(IEL < 200))              << 568             if(IEL<=IMULTBU){
634                     std::cout << "5556:" << IE << 569              ATEMP = dint(BU_TAB[IEL][0] + N_Breakup);
635                 if (IEL < 0)                   << 570              }else if(IEL>IMULTBU){
636                     std::cout << "5556:" << IE << 571              ATEMP = dint(zprf + N_Breakup);
637                 if (IEL <= IMULTBU)            << 572              }
638                 {                              << 573              if((ATEMP - N_Breakup)<1.0 && N_Breakup<1.0){
639                     N_Breakup = dint(BU_TAB[IE << 574               IMEM_BU[IEL] = 1;
640                 }                              << 575               goto mult5556;
641                 else if (IEL > IMULTBU)        << 576              }
642                 {                              << 577 //             IF((ATEMP - N_Breakup).GT.1.D0 .AND.
643                     N_Breakup = dint(aprf - zp << 578 //     &        N_Breakup.EQ.0.D0) THEN
644                 }                              << 579 //              IMEM_BU(IEL) = 1
645                 if (N_Breakup < 0.0)           << 580 //              GOTO 5556
646                 {                              << 581 //             ENDIF
647                     IMEM_BU[IEL] = 1;          << 582              if(IEL<=IMULTBU)
648                     goto mult5556;             << 583              BU_TAB[IEL][1] = dint(BU_TAB[IEL][0] + N_Breakup);
649                 }                              << 584              else if(IEL>IMULTBU)
650                 if (IEL <= IMULTBU)            << 585              aprf = dint(zprf + N_Breakup);
651                 {                              << 586 //
652                     ATEMP = dint(BU_TAB[IEL][0 << 587            NBU_DIFF = NBU_DIFF - ISIGN(1,NBU_DIFF);
653                 }                              << 588          }//while(NBU_DIFF > 0 || NBU_DIFF < 0)
654                 else if (IEL > IMULTBU)        << 
655                 {                              << 
656                     ATEMP = dint(zprf + N_Brea << 
657                 }                              << 
658                 if ((ATEMP - N_Breakup) < 1.0  << 
659                 {                              << 
660                     IMEM_BU[IEL] = 1;          << 
661                     goto mult5556;             << 
662                 }                              << 
663                 //             IF((ATEMP - N_B << 
664                 //     &        N_Breakup.EQ.0 << 
665                 //              IMEM_BU(IEL) = << 
666                 //              GOTO 5556      << 
667                 //             ENDIF           << 
668                 if (IEL <= IMULTBU)            << 
669                     BU_TAB[IEL][1] = dint(BU_T << 
670                 else if (IEL > IMULTBU)        << 
671                     aprf = dint(zprf + N_Break << 
672                 //                             << 
673                 NBU_DIFF = NBU_DIFF - ISIGN(1, << 
674             } // while(NBU_DIFF > 0 || NBU_DIF << 
675                                                << 
676             IPROBA = 0;                        << 
677             for (G4int i = 0; i < IMULTBU; i++ << 
678                 IMEM_BU[i] = 0;                << 
679         }                                      << 
680         else                                   << 
681         { // if(NBU_DIFF != 0 && ZBU_DIFF == 0 << 
682             if (ZBU_DIFF != 0 && NBU_DIFF == 0 << 
683             {                                  << 
684                 while (ZBU_DIFF > 0 || ZBU_DIF << 
685                 {                              << 
686                     IS = 0;                    << 
687                 mult5557:                      << 
688                     G4double RHAZ = G4AblaRand << 
689                     IS = IS + 1;               << 
690                     if (IS > 100)              << 
691                     {                          << 
692                         std::cout << "WARNING: << 
693                                      "N_BREAKU << 
694                                   << std::endl << 
695                         goto mult10;           << 
696                     }                          << 
697                     G4int IEL = G4int(RHAZ);   << 
698                     if (IMEM_BU[IEL] == 1)     << 
699                         goto mult5557;         << 
700                     // IPROBA = IPROBA + 1;    << 
701                     if (IPROBA > IMULTBU + 1 & << 
702                     {                          << 
703                         std::cout << "###',IPR << 
704                         IPROBA = IPROBA + 1;   << 
705                         if (IEL <= IMULTBU)    << 
706                         {                      << 
707                             N_Breakup = dint(B << 
708                             BU_TAB[IEL][0] = d << 
709                             BU_TAB[IEL][1] = d << 
710                         }                      << 
711                         else                   << 
712                         {                      << 
713                             if (IEL > IMULTBU) << 
714                             {                  << 
715                                 N_Breakup = ap << 
716                                 zprf = dint(zp << 
717                                 aprf = dint(zp << 
718                             }                  << 
719                         }                      << 
720                         goto mult5432;         << 
721                     }                          << 
722                     if (!(IEL < 200))          << 
723                         std::cout << "5557:" < << 
724                     if (IEL < 0)               << 
725                         std::cout << "5557:" < << 
726                     if (IEL <= IMULTBU)        << 
727                     {                          << 
728                         N_Breakup = dint(BU_TA << 
729                         ZTEMP = dint(BU_TAB[IE << 
730                     }                          << 
731                     else if (IEL > IMULTBU)    << 
732                     {                          << 
733                         N_Breakup = dint(aprf  << 
734                         ZTEMP = dint(zprf - DS << 
735                     }                          << 
736                     ATEMP = dint(ZTEMP + N_Bre << 
737                     if (ZTEMP < 0.0)           << 
738                     {                          << 
739                         IMEM_BU[IEL] = 1;      << 
740                         goto mult5557;         << 
741                     }                          << 
742                     if ((ATEMP - ZTEMP) < 0.0) << 
743                     {                          << 
744                         IMEM_BU[IEL] = 1;      << 
745                         goto mult5557;         << 
746                     }                          << 
747                     if ((ATEMP - ZTEMP) < 1.0  << 
748                     {                          << 
749                         IMEM_BU[IEL] = 1;      << 
750                         goto mult5557;         << 
751                     }                          << 
752                     if (IEL <= IMULTBU)        << 
753                     {                          << 
754                         BU_TAB[IEL][0] = dint( << 
755                         BU_TAB[IEL][1] = dint( << 
756                     }                          << 
757                     else                       << 
758                     {                          << 
759                         if (IEL > IMULTBU)     << 
760                         {                      << 
761                             zprf = dint(ZTEMP) << 
762                             aprf = dint(ZTEMP  << 
763                         }                      << 
764                     }                          << 
765                     ZBU_DIFF = ZBU_DIFF - ISIG << 
766                 } // while                     << 
767             }     // if(ZBU_DIFF != 0 && NBU_D << 
768         }         // if(NBU_DIFF != 0 && ZBU_D << 
769                                                << 
770     mult5432:                                  << 
771         // Looking for the heaviest fragment a << 
772         // and "giving" excitation energy to f << 
773         ZMEM = 0.0;                            << 
774                                                << 
775         for (G4int i = 0; i < IMULTBU; i++)    << 
776         {                                      << 
777             // For particles with Z>2 we calcu << 
778             // temperature.                    << 
779             //  For particels with Z<3 we assu << 
780             //  temperature results in kinetic << 
781             //  distribution with T=Tfreeze-ou << 
782             if (BU_TAB[i][0] > 2.0)            << 
783             {                                  << 
784                 a_tilda_BU = ald->av * BU_TAB[ << 
785                              ald->ak * std::po << 
786                 BU_TAB[i][2] = a_tilda_BU * T_ << 
787             }                                  << 
788             else                               << 
789             {                                  << 
790                 BU_TAB[i][2] = 0.0;            << 
791             }                                  << 
792             //                                 << 
793             if (BU_TAB[i][0] > ZMEM)           << 
794             {                                  << 
795                 IMEM = i;                      << 
796                 ZMEM = BU_TAB[i][0];           << 
797                 AMEM = BU_TAB[i][1];           << 
798                 EMEM = BU_TAB[i][2];           << 
799                 JMEM = BU_TAB[i][3];           << 
800             }                                  << 
801         } // for IMULTBU                       << 
802                                                   589 
803         if (zprf < ZMEM)                       << 590         IPROBA = 0;
804         {                                      << 591         for(G4int i=0;i<IMULTBU;i++)
805             BU_TAB[IMEM][0] = zprf;            << 592         IMEM_BU[i] = 0;
806             BU_TAB[IMEM][1] = aprf;            << 593 
807             BU_TAB[IMEM][2] = ee;              << 594         }else{// if(NBU_DIFF != 0 && ZBU_DIFF == 0)
808             BU_TAB[IMEM][3] = jprf;            << 595           if(ZBU_DIFF != 0 && NBU_DIFF == 0){
809             zprf = ZMEM;                       << 596             while(ZBU_DIFF > 0 || ZBU_DIFF < 0){
810             aprf = AMEM;                       << 597              IS = 0;
811             aprfp = idnint(aprf);              << 598              mult5557:    
812             zprfp = idnint(zprf);              << 599              G4double RHAZ = G4AblaRandom::flat()*G4double(IMULTBU);
813             ee = EMEM;                         << 600              IS = IS + 1;
814             jprf = JMEM;                       << 601              if(IS>100){
815         }                                      << 602               std::cout << "WARNING: HAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING N_BREAKUP IN Rn07.FOR. NEW EVENT WILL BE DICED." << std::endl; 
                                                   >> 603               goto mult10;
                                                   >> 604              }
                                                   >> 605              G4int IEL = G4int(RHAZ);
                                                   >> 606              if(IMEM_BU[IEL]==1) goto mult5557;
                                                   >> 607              //IPROBA = IPROBA + 1;
                                                   >> 608              if(IPROBA>IMULTBU+1 && ZBU_DIFF>0){
                                                   >> 609              std::cout << "###',IPROBA,IMULTBU,NBU_DIFF,ZBU_DIFF,T_freeze_out" << std::endl; 
                                                   >> 610              IPROBA = IPROBA + 1;
                                                   >> 611              if(IEL<=IMULTBU){
                                                   >> 612                N_Breakup = dint(BU_TAB[IEL][1]-BU_TAB[IEL][0]);
                                                   >> 613                BU_TAB[IEL][0] = dint(BU_TAB[IEL][0] - G4double(ZBU_DIFF));
                                                   >> 614                BU_TAB[IEL][1] = dint(BU_TAB[IEL][0] + N_Breakup);
                                                   >> 615              }else{ 
                                                   >> 616                  if(IEL>IMULTBU){
                                                   >> 617                   N_Breakup = aprf - zprf;
                                                   >> 618                   zprf = dint(zprf - G4double(ZBU_DIFF));
                                                   >> 619                   aprf = dint(zprf + N_Breakup);
                                                   >> 620                  }
                                                   >> 621              }
                                                   >> 622           goto mult5432;
                                                   >> 623           }
                                                   >> 624      if(!(IEL<200))std::cout << "5557:" << IEL << RHAZ << IMULTBU << std::endl; 
                                                   >> 625            if(IEL<0)std::cout << "5557:"<< IEL << RHAZ << IMULTBU << std::endl; 
                                                   >> 626            if(IEL<=IMULTBU){
                                                   >> 627             N_Breakup = dint(BU_TAB[IEL][1]-BU_TAB[IEL][0]);
                                                   >> 628             ZTEMP = dint(BU_TAB[IEL][0] - DSIGN(1.0,G4double(ZBU_DIFF)));
                                                   >> 629            }else if(IEL>IMULTBU){
                                                   >> 630             N_Breakup = dint(aprf - zprf);
                                                   >> 631             ZTEMP = dint(zprf - DSIGN(1.0,G4double(ZBU_DIFF)));
                                                   >> 632            }
                                                   >> 633             ATEMP = dint(ZTEMP + N_Breakup);
                                                   >> 634             if(ZTEMP<0.0){
                                                   >> 635              IMEM_BU[IEL] = 1;
                                                   >> 636              goto mult5557;
                                                   >> 637             }
                                                   >> 638             if((ATEMP-ZTEMP)<0.0){
                                                   >> 639              IMEM_BU[IEL] = 1;
                                                   >> 640              goto mult5557;
                                                   >> 641             }
                                                   >> 642             if((ATEMP-ZTEMP)<1.0 && ZTEMP<1.0){
                                                   >> 643              IMEM_BU[IEL] = 1;
                                                   >> 644              goto mult5557;
                                                   >> 645             }
                                                   >> 646              if(IEL<=IMULTBU){
                                                   >> 647                BU_TAB[IEL][0] = dint(ZTEMP);
                                                   >> 648                BU_TAB[IEL][1] = dint(ZTEMP + N_Breakup);
                                                   >> 649              }else{ 
                                                   >> 650                  if(IEL>IMULTBU){
                                                   >> 651                   zprf = dint(ZTEMP);
                                                   >> 652                   aprf = dint(ZTEMP + N_Breakup);
                                                   >> 653                  }
                                                   >> 654              } 
                                                   >> 655             ZBU_DIFF = ZBU_DIFF - ISIGN(1,ZBU_DIFF);
                                                   >> 656             }//while
                                                   >> 657           }//if(ZBU_DIFF != 0 && NBU_DIFF == 0)
                                                   >> 658         }// if(NBU_DIFF != 0 && ZBU_DIFF == 0)
                                                   >> 659 
                                                   >> 660         mult5432:
                                                   >> 661 // Looking for the heaviest fragment among all multifragmentation events, and
                                                   >> 662 // "giving" excitation energy to fragments
                                                   >> 663          ZMEM = 0.0;
                                                   >> 664 
                                                   >> 665          for(G4int i =0;i<IMULTBU;i++){
                                                   >> 666 //For particles with Z>2 we calculate excitation energy from freeze-out temperature.
                                                   >> 667 // For particels with Z<3 we assume that they form a gas, and that temperature results
                                                   >> 668 // in kinetic energy (which is sampled from Maxwell distribution with T=Tfreeze-out)
                                                   >> 669 // and not excitation energy.
                                                   >> 670            if(BU_TAB[i][0]>2.0){
                                                   >> 671             a_tilda_BU = ald->av*BU_TAB[i][1] + ald->as*std::pow(BU_TAB[i][1],2.0/3.0) + ald->ak*std::pow(BU_TAB[i][1],1.0/3.0);
                                                   >> 672             BU_TAB[i][2] = a_tilda_BU * T_freeze_out*T_freeze_out; // E* of break-up product
                                                   >> 673            }else{
                                                   >> 674             BU_TAB[i][2] = 0.0;
                                                   >> 675            }
                                                   >> 676 //
                                                   >> 677            if(BU_TAB[i][0] > ZMEM){
                                                   >> 678             IMEM = i;
                                                   >> 679             ZMEM = BU_TAB[i][0];
                                                   >> 680             AMEM = BU_TAB[i][1];
                                                   >> 681             EMEM = BU_TAB[i][2];
                                                   >> 682             JMEM = BU_TAB[i][3];
                                                   >> 683            }
                                                   >> 684          }//for IMULTBU
                                                   >> 685 
                                                   >> 686          if(zprf < ZMEM){
                                                   >> 687           BU_TAB[IMEM][0] = zprf;
                                                   >> 688           BU_TAB[IMEM][1] = aprf;
                                                   >> 689           BU_TAB[IMEM][2] = ee;
                                                   >> 690           BU_TAB[IMEM][3] = jprf;
                                                   >> 691           zprf =  ZMEM;
                                                   >> 692           aprf =  AMEM;
                                                   >> 693           aprfp = idnint(aprf);
                                                   >> 694           zprfp = idnint(zprf);
                                                   >> 695           ee   =  EMEM;
                                                   >> 696           jprf =  JMEM;
                                                   >> 697          }
816                                                   698 
817         //     Just for checking:              << 699 //     Just for checking:
818         ABU_SUM = aprf;                           700         ABU_SUM = aprf;
819         ZBU_SUM = zprf;                           701         ZBU_SUM = zprf;
820         for (G4int i = 0; i < IMULTBU; i++)    << 702         for(G4int i = 0;i<IMULTBU;i++){
821         {                                      << 703          ABU_SUM = ABU_SUM + BU_TAB[i][1];
822             ABU_SUM = ABU_SUM + BU_TAB[i][1];  << 704          ZBU_SUM = ZBU_SUM + BU_TAB[i][0];
823             ZBU_SUM = ZBU_SUM + BU_TAB[i][0];  << 
824         }                                         705         }
825         ABU_DIFF = idnint(ABU_SUM - AAINCL);   << 706         ABU_DIFF = idnint(ABU_SUM-AAINCL);
826         ZBU_DIFF = idnint(ZBU_SUM - ZAINCL);   << 707         ZBU_DIFF = idnint(ZBU_SUM-ZAINCL);
827         //                                     << 708 //
828         if (ABU_DIFF != 0 || ZBU_DIFF != 0)    << 709         if(ABU_DIFF!=0 || ZBU_DIFF!=0)
829             std::cout << "Problem of mass in B << 710          std::cout << "Problem of mass in BU " << ABU_DIFF << " " << ZBU_DIFF << std::endl;
830         PX_BU_SUM = 0.0;                          711         PX_BU_SUM = 0.0;
831         PY_BU_SUM = 0.0;                          712         PY_BU_SUM = 0.0;
832         PZ_BU_SUM = 0.0;                          713         PZ_BU_SUM = 0.0;
833         // Momenta of break-up products are ca << 714 // Momenta of break-up products are calculated. They are all given in the rest frame
834         // rest frame of the primary prefragme << 715 // of the primary prefragment (i.e. after incl):
835         // *********************************** << 716 // Goldhaber model ****************************************
836         AMOMENT(AAINCL, aprf, 1, &PXPRFP, &PYP << 717 // "Heavy" residue
837         PPRFP = std::sqrt(PXPRFP * PXPRFP + PY << 718         AMOMENT(AAINCL,aprf,1,&PXPRFP,&PYPRFP,&PZPRFP);
838         // *********************************** << 719         PPRFP = std::sqrt(PXPRFP*PXPRFP + PYPRFP*PYPRFP + PZPRFP*PZPRFP);
839         // PPRFP is in MeV/c                   << 720 // ********************************************************
840         ETOT_PRF = std::sqrt(PPRFP * PPRFP + ( << 721 // PPRFP is in MeV/c
                                                   >> 722         ETOT_PRF = std::sqrt(PPRFP*PPRFP + (aprf * amu)*(aprf * amu));
841         VX_PREF = C * PXPRFP / ETOT_PRF;          723         VX_PREF = C * PXPRFP / ETOT_PRF;
842         VY_PREF = C * PYPRFP / ETOT_PRF;          724         VY_PREF = C * PYPRFP / ETOT_PRF;
843         VZ_PREF = C * PZPRFP / ETOT_PRF;          725         VZ_PREF = C * PZPRFP / ETOT_PRF;
844                                                   726 
845         // Contribution from Coulomb repulsion << 727 // Contribution from Coulomb repulsion ********************
846         tke_bu(zprf, aprf, ZAINCL, AAINCL, &VX << 728         tke_bu(zprf,aprf,ZAINCL,AAINCL,&VX1_BU,&VY1_BU,&VZ1_BU);
847                                                   729 
848         // Lorentz kinematics                  << 730 // Lorentz kinematics
849         //        VX_PREF = VX_PREF + VX1_BU   << 731 //        VX_PREF = VX_PREF + VX1_BU
850         //        VY_PREF = VY_PREF + VY1_BU   << 732 //        VY_PREF = VY_PREF + VY1_BU
851         //        VZ_PREF = VZ_PREF + VZ1_BU   << 733 //        VZ_PREF = VZ_PREF + VZ1_BU
852         // Lorentz transformation              << 734 // Lorentz transformation
853         lorentz_boost(VX1_BU, VY1_BU, VZ1_BU,  << 735         lorentz_boost(VX1_BU,VY1_BU,VZ1_BU,
                                                   >> 736                 VX_PREF,VY_PREF,VZ_PREF,
                                                   >> 737                 &VXOUT,&VYOUT,&VZOUT);
854                                                   738 
855         VX_PREF = VXOUT;                          739         VX_PREF = VXOUT;
856         VY_PREF = VYOUT;                          740         VY_PREF = VYOUT;
857         VZ_PREF = VZOUT;                          741         VZ_PREF = VZOUT;
858                                                   742 
859         // Total momentum: Goldhaber + Coulomb << 743 // Total momentum: Goldhaber + Coulomb
860         VBU2 = VX_PREF * VX_PREF + VY_PREF * V << 744         VBU2 = VX_PREF*VX_PREF + VY_PREF*VY_PREF + VZ_PREF*VZ_PREF;
861         GAMMA_REL = std::sqrt(1.0 - VBU2 / (C  << 745         GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
862         ETOT_PRF = aprf * amu / GAMMA_REL;        746         ETOT_PRF = aprf * amu / GAMMA_REL;
863         PXPRFP = ETOT_PRF * VX_PREF / C;          747         PXPRFP = ETOT_PRF * VX_PREF / C;
864         PYPRFP = ETOT_PRF * VY_PREF / C;          748         PYPRFP = ETOT_PRF * VY_PREF / C;
865         PZPRFP = ETOT_PRF * VZ_PREF / C;          749         PZPRFP = ETOT_PRF * VZ_PREF / C;
866                                                   750 
867         // *********************************** << 751 // ********************************************************
868         //  Momentum: Total width of abrasion  << 752 //  Momentum: Total width of abrasion and breakup assumed to be given 
869         //  by Fermi momenta of nucleons       << 753 //  by Fermi momenta of nucleons
870         // *********************************** << 754 // *****************************************
871                                                   755 
872         PX_BU_SUM = PXPRFP;                       756         PX_BU_SUM = PXPRFP;
873         PY_BU_SUM = PYPRFP;                       757         PY_BU_SUM = PYPRFP;
874         PZ_BU_SUM = PZPRFP;                       758         PZ_BU_SUM = PZPRFP;
875                                                   759 
876         Eexc_BU_SUM = ee;                         760         Eexc_BU_SUM = ee;
877         Bvalue_BU = eflmac(idnint(aprf), idnin << 761         Bvalue_BU = eflmac(idnint(aprf),idnint(zprf),1,0);
878                                                   762 
879         for (I_Breakup = 0; I_Breakup < IMULTB << 763         for(I_Breakup=0;I_Breakup<IMULTBU;I_Breakup++){
880         {                                      << 764 //       For bu products:
881             //       For bu products:          << 765           Bvalue_BU = Bvalue_BU + eflmac(idnint(BU_TAB[I_Breakup][1]), idnint(BU_TAB[I_Breakup][0]),1,0);
882             Bvalue_BU = Bvalue_BU + eflmac(idn << 766           Eexc_BU_SUM = Eexc_BU_SUM + BU_TAB[I_Breakup][2];
883             Eexc_BU_SUM = Eexc_BU_SUM + BU_TAB << 767 
884                                                << 768           AMOMENT(AAINCL,BU_TAB[I_Breakup][1],1,&PX_BU,&PY_BU,&PZ_BU);
885             AMOMENT(AAINCL, BU_TAB[I_Breakup][ << 769           P_BU = std::sqrt(PX_BU*PX_BU + PY_BU*PY_BU + PZ_BU*PZ_BU);
886             P_BU = std::sqrt(PX_BU * PX_BU + P << 770 // *******************************************************
887             // ******************************* << 771 //        PPRFP is in MeV/c
888             //        PPRFP is in MeV/c        << 772           ETOT_BU = std::sqrt(P_BU*P_BU + (BU_TAB[I_Breakup][1]*amu)*(BU_TAB[I_Breakup][1]*amu));
889             ETOT_BU = std::sqrt(P_BU * P_BU +  << 773           BU_TAB[I_Breakup][4] = C * PX_BU / ETOT_BU;    // Velocity in x
890             BU_TAB[I_Breakup][4] = C * PX_BU / << 774           BU_TAB[I_Breakup][5] = C * PY_BU / ETOT_BU;    // Velocity in y
891             BU_TAB[I_Breakup][5] = C * PY_BU / << 775           BU_TAB[I_Breakup][6] = C * PZ_BU / ETOT_BU;    // Velocity in z
892             BU_TAB[I_Breakup][6] = C * PZ_BU / << 776 //        Contribution from Coulomb repulsion:
893             //        Contribution from Coulom << 777           tke_bu(BU_TAB[I_Breakup][0],BU_TAB[I_Breakup][1],ZAINCL,AAINCL,&VX2_BU,&VY2_BU,&VZ2_BU);
894             tke_bu(BU_TAB[I_Breakup][0], BU_TA << 778 // Lorentz kinematics
895             // Lorentz kinematics              << 779 //          BU_TAB(I_Breakup,5) = BU_TAB(I_Breakup,5) + VX2_BU ! velocity change by Coulomb repulsion
896             //          BU_TAB(I_Breakup,5) =  << 780 //          BU_TAB(I_Breakup,6) = BU_TAB(I_Breakup,6) + VY2_BU
897             //          change by Coulomb repu << 781 //          BU_TAB(I_Breakup,7) = BU_TAB(I_Breakup,7) + VZ2_BU
898             //          BU_TAB(I_Breakup,6) +  << 782 // Lorentz transformation
899             //          BU_TAB(I_Breakup,7) +  << 783           lorentz_boost(VX2_BU,VY2_BU,VZ2_BU,
900             // Lorentz transformation          << 784                 BU_TAB[I_Breakup][4],BU_TAB[I_Breakup][5],BU_TAB[I_Breakup][6],
901             lorentz_boost(VX2_BU,              << 785                 &VXOUT,&VYOUT,&VZOUT);
902                           VY2_BU,              << 786 
903                           VZ2_BU,              << 787           BU_TAB[I_Breakup][4] = VXOUT;
904                           BU_TAB[I_Breakup][4] << 788           BU_TAB[I_Breakup][5] = VYOUT;
905                           BU_TAB[I_Breakup][5] << 789           BU_TAB[I_Breakup][6] = VZOUT;
906                           BU_TAB[I_Breakup][6] << 790 
907                           &VXOUT,              << 791 // Total momentum: Goldhaber + Coulomb
908                           &VYOUT,              << 792           VBU2 = BU_TAB[I_Breakup][4]*BU_TAB[I_Breakup][4] +
909                           &VZOUT);             << 793                  BU_TAB[I_Breakup][5]*BU_TAB[I_Breakup][5] +
910                                                << 794                  BU_TAB[I_Breakup][6]*BU_TAB[I_Breakup][6];
911             BU_TAB[I_Breakup][4] = VXOUT;      << 795           GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
912             BU_TAB[I_Breakup][5] = VYOUT;      << 796           ETOT_BU = BU_TAB[I_Breakup][1]*amu/GAMMA_REL;
913             BU_TAB[I_Breakup][6] = VZOUT;      << 797           PX_BU = ETOT_BU * BU_TAB[I_Breakup][4] / C;
914                                                << 798           PY_BU = ETOT_BU * BU_TAB[I_Breakup][5] / C;
915             // Total momentum: Goldhaber + Cou << 799           PZ_BU = ETOT_BU * BU_TAB[I_Breakup][6] / C;
916             VBU2 = BU_TAB[I_Breakup][4] * BU_T << 800 
917                    BU_TAB[I_Breakup][6] * BU_T << 801           PX_BU_SUM = PX_BU_SUM + PX_BU;
918             GAMMA_REL = std::sqrt(1.0 - VBU2 / << 802           PY_BU_SUM = PY_BU_SUM + PY_BU;
919             ETOT_BU = BU_TAB[I_Breakup][1] * a << 803           PZ_BU_SUM = PZ_BU_SUM + PZ_BU;
920             PX_BU = ETOT_BU * BU_TAB[I_Breakup << 804 
921             PY_BU = ETOT_BU * BU_TAB[I_Breakup << 805          }//for I_Breakup
922             PZ_BU = ETOT_BU * BU_TAB[I_Breakup << 806 
923                                                << 807 //   In the frame of source (i.e. prefragment after abrasion or INCL)
924             PX_BU_SUM = PX_BU_SUM + PX_BU;     << 808         P_BU_SUM = std::sqrt(PX_BU_SUM*PX_BU_SUM + PY_BU_SUM*PY_BU_SUM +
925             PY_BU_SUM = PY_BU_SUM + PY_BU;     << 809                    PZ_BU_SUM*PZ_BU_SUM);
926             PZ_BU_SUM = PZ_BU_SUM + PZ_BU;     << 810 // ********************************************************
927                                                << 811 // PPRFP is in MeV/c
928         } // for I_Breakup                     << 812         ETOT_SUM = std::sqrt(P_BU_SUM*P_BU_SUM +
929                                                << 813                    (AAINCL * amu)*(AAINCL * amu));
930         //   In the frame of source (i.e. pref << 
931         P_BU_SUM = std::sqrt(PX_BU_SUM * PX_BU << 
932         // *********************************** << 
933         // PPRFP is in MeV/c                   << 
934         ETOT_SUM = std::sqrt(P_BU_SUM * P_BU_S << 
935                                                   814 
936         VX_BU_SUM = C * PX_BU_SUM / ETOT_SUM;     815         VX_BU_SUM = C * PX_BU_SUM / ETOT_SUM;
937         VY_BU_SUM = C * PY_BU_SUM / ETOT_SUM;     816         VY_BU_SUM = C * PY_BU_SUM / ETOT_SUM;
938         VZ_BU_SUM = C * PZ_BU_SUM / ETOT_SUM;     817         VZ_BU_SUM = C * PZ_BU_SUM / ETOT_SUM;
939                                                   818 
940         // Lorentz kinematics - DM 17/5/2010   << 819 // Lorentz kinematics - DM 17/5/2010
941         //        VX_PREF = VX_PREF - VX_BU_SU << 820 //        VX_PREF = VX_PREF - VX_BU_SUM
942         //        VY_PREF = VY_PREF - VY_BU_SU << 821 //        VY_PREF = VY_PREF - VY_BU_SUM
943         //        VZ_PREF = VZ_PREF - VZ_BU_SU << 822 //        VZ_PREF = VZ_PREF - VZ_BU_SUM
944         // Lorentz transformation              << 823 // Lorentz transformation
945         lorentz_boost(-VX_BU_SUM, -VY_BU_SUM,  << 824         lorentz_boost(-VX_BU_SUM,-VY_BU_SUM,-VZ_BU_SUM,
                                                   >> 825                 VX_PREF,VY_PREF,VZ_PREF,
                                                   >> 826                 &VXOUT,&VYOUT,&VZOUT);
946                                                   827 
947         VX_PREF = VXOUT;                          828         VX_PREF = VXOUT;
948         VY_PREF = VYOUT;                          829         VY_PREF = VYOUT;
949         VZ_PREF = VZOUT;                          830         VZ_PREF = VZOUT;
950                                                   831 
951         VBU2 = VX_PREF * VX_PREF + VY_PREF * V << 832         VBU2 = VX_PREF*VX_PREF + VY_PREF*VY_PREF + VZ_PREF*VZ_PREF;
952         GAMMA_REL = std::sqrt(1.0 - VBU2 / (C  << 833         GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
953         ETOT_PRF = aprf * amu / GAMMA_REL;        834         ETOT_PRF = aprf * amu / GAMMA_REL;
954         PXPRFP = ETOT_PRF * VX_PREF / C;          835         PXPRFP = ETOT_PRF * VX_PREF / C;
955         PYPRFP = ETOT_PRF * VY_PREF / C;          836         PYPRFP = ETOT_PRF * VY_PREF / C;
956         PZPRFP = ETOT_PRF * VZ_PREF / C;          837         PZPRFP = ETOT_PRF * VZ_PREF / C;
957                                                   838 
958         PX_BU_SUM = 0.0;                          839         PX_BU_SUM = 0.0;
959         PY_BU_SUM = 0.0;                          840         PY_BU_SUM = 0.0;
960         PZ_BU_SUM = 0.0;                          841         PZ_BU_SUM = 0.0;
961                                                   842 
962         PX_BU_SUM = PXPRFP;                       843         PX_BU_SUM = PXPRFP;
963         PY_BU_SUM = PYPRFP;                       844         PY_BU_SUM = PYPRFP;
964         PZ_BU_SUM = PZPRFP;                       845         PZ_BU_SUM = PZPRFP;
965         E_tot_BU = ETOT_PRF;                      846         E_tot_BU = ETOT_PRF;
966                                                   847 
967         EKIN_BU = aprf * amu / GAMMA_REL - apr    848         EKIN_BU = aprf * amu / GAMMA_REL - aprf * amu;
968                                                   849 
969         for (I_Breakup = 0; I_Breakup < IMULTB << 850         for(I_Breakup=0;I_Breakup<IMULTBU;I_Breakup++){
970         {                                      << 851 // Lorentz kinematics - DM 17/5/2010
971             // Lorentz kinematics - DM 17/5/20 << 852 //         BU_TAB(I_Breakup,5) = BU_TAB(I_Breakup,5) - VX_BU_SUM
972             //         BU_TAB(I_Breakup,5) = B << 853 //         BU_TAB(I_Breakup,6) = BU_TAB(I_Breakup,6) - VY_BU_SUM
973             //         BU_TAB(I_Breakup,6) = B << 854 //         BU_TAB(I_Breakup,7) = BU_TAB(I_Breakup,7) - VZ_BU_SUM
974             //         BU_TAB(I_Breakup,7) = B << 855 // Lorentz transformation
975             // Lorentz transformation          << 856           lorentz_boost(-VX_BU_SUM,-VY_BU_SUM,-VZ_BU_SUM,
976             lorentz_boost(-VX_BU_SUM,          << 857                 BU_TAB[I_Breakup][4],BU_TAB[I_Breakup][5],BU_TAB[I_Breakup][6],
977                           -VY_BU_SUM,          << 858                 &VXOUT,&VYOUT,&VZOUT);
978                           -VZ_BU_SUM,          << 859 
979                           BU_TAB[I_Breakup][4] << 860           BU_TAB[I_Breakup][4] = VXOUT;
980                           BU_TAB[I_Breakup][5] << 861           BU_TAB[I_Breakup][5] = VYOUT;
981                           BU_TAB[I_Breakup][6] << 862           BU_TAB[I_Breakup][6] = VZOUT;
982                           &VXOUT,              << 863 
983                           &VYOUT,              << 864           VBU2 = BU_TAB[I_Breakup][4]*BU_TAB[I_Breakup][4] +
984                           &VZOUT);             << 865                  BU_TAB[I_Breakup][5]*BU_TAB[I_Breakup][5] +
985                                                << 866                  BU_TAB[I_Breakup][6]*BU_TAB[I_Breakup][6];
986             BU_TAB[I_Breakup][4] = VXOUT;      << 867           GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
987             BU_TAB[I_Breakup][5] = VYOUT;      << 868 
988             BU_TAB[I_Breakup][6] = VZOUT;      << 869           ETOT_BU = BU_TAB[I_Breakup][1]*amu/GAMMA_REL;
989                                                << 870 
990             VBU2 = BU_TAB[I_Breakup][4] * BU_T << 871           EKIN_BU = EKIN_BU + BU_TAB[I_Breakup][1] * amu /
991                    BU_TAB[I_Breakup][6] * BU_T << 872                     GAMMA_REL - BU_TAB[I_Breakup][1] * amu;
992             GAMMA_REL = std::sqrt(1.0 - VBU2 / << 873 
993                                                << 874           PX_BU = ETOT_BU * BU_TAB[I_Breakup][4] / C;
994             ETOT_BU = BU_TAB[I_Breakup][1] * a << 875           PY_BU = ETOT_BU * BU_TAB[I_Breakup][5] / C;
995                                                << 876           PZ_BU = ETOT_BU * BU_TAB[I_Breakup][6] / C;
996             EKIN_BU = EKIN_BU + BU_TAB[I_Break << 877           E_tot_BU = E_tot_BU + ETOT_BU;
997                                                << 878 
998             PX_BU = ETOT_BU * BU_TAB[I_Breakup << 879           PX_BU_SUM = PX_BU_SUM + PX_BU;
999             PY_BU = ETOT_BU * BU_TAB[I_Breakup << 880           PY_BU_SUM = PY_BU_SUM + PY_BU;
1000             PZ_BU = ETOT_BU * BU_TAB[I_Breaku << 881           PZ_BU_SUM = PZ_BU_SUM + PZ_BU;
1001             E_tot_BU = E_tot_BU + ETOT_BU;    << 882         }// for I_Breakup
1002                                               << 883 
1003             PX_BU_SUM = PX_BU_SUM + PX_BU;    << 884         if(std::abs(PX_BU_SUM)>10. || std::abs(PY_BU_SUM)>10. ||
1004             PY_BU_SUM = PY_BU_SUM + PY_BU;    << 885          std::abs(PZ_BU_SUM)>10.){
1005             PZ_BU_SUM = PZ_BU_SUM + PZ_BU;    << 886 
1006         } // for I_Breakup                    << 887 //   In the frame of source (i.e. prefragment after INCL)
1007                                               << 888         P_BU_SUM = std::sqrt(PX_BU_SUM*PX_BU_SUM + PY_BU_SUM*PY_BU_SUM +
1008         if (std::abs(PX_BU_SUM) > 10. || std: << 889                   PZ_BU_SUM*PZ_BU_SUM);
1009         {                                     << 890 // ********************************************************
1010                                               << 891 // PPRFP is in MeV/c
1011             //   In the frame of source (i.e. << 892         ETOT_SUM = std::sqrt(P_BU_SUM*P_BU_SUM +
1012             P_BU_SUM = std::sqrt(PX_BU_SUM *  << 893                   (AAINCL * amu)*(AAINCL * amu));
1013             // ****************************** << 894 
1014             // PPRFP is in MeV/c              << 895         VX_BU_SUM = C * PX_BU_SUM / ETOT_SUM;
1015             ETOT_SUM = std::sqrt(P_BU_SUM * P << 896         VY_BU_SUM = C * PY_BU_SUM / ETOT_SUM;
1016                                               << 897         VZ_BU_SUM = C * PZ_BU_SUM / ETOT_SUM;
1017             VX_BU_SUM = C * PX_BU_SUM / ETOT_ << 898 
1018             VY_BU_SUM = C * PY_BU_SUM / ETOT_ << 899 // Lorentz kinematics
1019             VZ_BU_SUM = C * PZ_BU_SUM / ETOT_ << 900 //        VX_PREF = VX_PREF - VX_BU_SUM
1020                                               << 901 //        VY_PREF = VY_PREF - VY_BU_SUM
1021             // Lorentz kinematics             << 902 //        VZ_PREF = VZ_PREF - VZ_BU_SUM
1022             //        VX_PREF = VX_PREF - VX_ << 903 // Lorentz transformation
1023             //        VY_PREF = VY_PREF - VY_ << 904         lorentz_boost(-VX_BU_SUM,-VY_BU_SUM,-VZ_BU_SUM,
1024             //        VZ_PREF = VZ_PREF - VZ_ << 905                 VX_PREF,VY_PREF,VZ_PREF,
1025             // Lorentz transformation         << 906                 &VXOUT,&VYOUT,&VZOUT);
1026             lorentz_boost(-VX_BU_SUM, -VY_BU_ << 
1027                                               << 
1028             VX_PREF = VXOUT;                  << 
1029             VY_PREF = VYOUT;                  << 
1030             VZ_PREF = VZOUT;                  << 
1031                                               << 
1032             VBU2 = VX_PREF * VX_PREF + VY_PRE << 
1033             GAMMA_REL = std::sqrt(1.0 - VBU2  << 
1034             ETOT_PRF = aprf * amu / GAMMA_REL << 
1035             PXPRFP = ETOT_PRF * VX_PREF / C;  << 
1036             PYPRFP = ETOT_PRF * VY_PREF / C;  << 
1037             PZPRFP = ETOT_PRF * VZ_PREF / C;  << 
1038                                               << 
1039             PX_BU_SUM = 0.0;                  << 
1040             PY_BU_SUM = 0.0;                  << 
1041             PZ_BU_SUM = 0.0;                  << 
1042                                               << 
1043             PX_BU_SUM = PXPRFP;               << 
1044             PY_BU_SUM = PYPRFP;               << 
1045             PZ_BU_SUM = PZPRFP;               << 
1046             E_tot_BU = ETOT_PRF;              << 
1047                                               << 
1048             EKIN_BU = aprf * amu / GAMMA_REL  << 
1049                                               << 
1050             for (I_Breakup = 0; I_Breakup < I << 
1051             {                                 << 
1052                 // Lorentz kinematics - DM 17 << 
1053                 //         BU_TAB(I_Breakup,5 << 
1054                 //         BU_TAB(I_Breakup,6 << 
1055                 //         BU_TAB(I_Breakup,7 << 
1056                 // Lorentz transformation     << 
1057                 lorentz_boost(-VX_BU_SUM,     << 
1058                               -VY_BU_SUM,     << 
1059                               -VZ_BU_SUM,     << 
1060                               BU_TAB[I_Breaku << 
1061                               BU_TAB[I_Breaku << 
1062                               BU_TAB[I_Breaku << 
1063                               &VXOUT,         << 
1064                               &VYOUT,         << 
1065                               &VZOUT);        << 
1066                                               << 
1067                 BU_TAB[I_Breakup][4] = VXOUT; << 
1068                 BU_TAB[I_Breakup][5] = VYOUT; << 
1069                 BU_TAB[I_Breakup][6] = VZOUT; << 
1070                                               << 
1071                 VBU2 = BU_TAB[I_Breakup][4] * << 
1072                        BU_TAB[I_Breakup][6] * << 
1073                 GAMMA_REL = std::sqrt(1.0 - V << 
1074                                               << 
1075                 ETOT_BU = BU_TAB[I_Breakup][1 << 
1076                                               << 
1077                 EKIN_BU = EKIN_BU + BU_TAB[I_ << 
1078                                               << 
1079                 PX_BU = ETOT_BU * BU_TAB[I_Br << 
1080                 PY_BU = ETOT_BU * BU_TAB[I_Br << 
1081                 PZ_BU = ETOT_BU * BU_TAB[I_Br << 
1082                 E_tot_BU = E_tot_BU + ETOT_BU << 
1083                                               << 
1084                 PX_BU_SUM = PX_BU_SUM + PX_BU << 
1085                 PY_BU_SUM = PY_BU_SUM + PY_BU << 
1086                 PZ_BU_SUM = PZ_BU_SUM + PZ_BU << 
1087             } // for I_Breakup                << 
1088         }     // if DABS(PX_BU_SUM).GT.10.d0  << 
1089           //                                  << 
1090         //      Find the limits that fragment << 
1091         //      LCPs and for nuclei with A=Z, << 
1092         //      decay:                        << 
1093                                               << 
1094         INEWLOOP = 0;                         << 
1095         for (G4int i = 0; i < IMULTBU; i++)   << 
1096         {                                     << 
1097             if (BU_TAB[i][0] < 3.0 || BU_TAB[ << 
1098             {                                 << 
1099                 unstable_nuclei(idnint(BU_TAB << 
1100                                 idnint(BU_TAB << 
1101                                 &afpnew,      << 
1102                                 &zfpnew,      << 
1103                                 IOUNSTABLE,   << 
1104                                 BU_TAB[i][4], << 
1105                                 BU_TAB[i][5], << 
1106                                 BU_TAB[i][6], << 
1107                                 &VP1X,        << 
1108                                 &VP1Y,        << 
1109                                 &VP1Z,        << 
1110                                 BU_TAB_TEMP,  << 
1111                                 &ILOOP);      << 
1112                                               << 
1113                 if (IOUNSTABLE > 0)           << 
1114                 {                             << 
1115                     // Properties of "heavy f << 
1116                     BU_TAB[i][1] = G4double(a << 
1117                     BU_TAB[i][0] = G4double(z << 
1118                     BU_TAB[i][4] = VP1X;      << 
1119                     BU_TAB[i][5] = VP1Y;      << 
1120                     BU_TAB[i][6] = VP1Z;      << 
1121                                               << 
1122                     // Properties of "light"  << 
1123                     for (int IJ = 0; IJ < ILO << 
1124                     {                         << 
1125                         BU_TAB[IMULTBU + INEW << 
1126                         BU_TAB[IMULTBU + INEW << 
1127                         BU_TAB[IMULTBU + INEW << 
1128                         BU_TAB[IMULTBU + INEW << 
1129                         BU_TAB[IMULTBU + INEW << 
1130                         BU_TAB[IMULTBU + INEW << 
1131                         BU_TAB[IMULTBU + INEW << 
1132                     } // for ILOOP            << 
1133                                               << 
1134                     INEWLOOP = INEWLOOP + ILO << 
1135                                               << 
1136                 } // if IOUNSTABLE.GT.0       << 
1137             }     // if BU_TAB[I_Breakup][0]< << 
1138         }         // for IMULTBU              << 
1139                                                  907 
1140         // Increased array of BU_TAB          << 908         VX_PREF = VXOUT;
                                                   >> 909         VY_PREF = VYOUT;
                                                   >> 910         VZ_PREF = VZOUT;
                                                   >> 911 
                                                   >> 912         VBU2 = VX_PREF*VX_PREF + VY_PREF*VY_PREF + VZ_PREF*VZ_PREF;
                                                   >> 913         GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
                                                   >> 914         ETOT_PRF = aprf * amu / GAMMA_REL;
                                                   >> 915         PXPRFP = ETOT_PRF * VX_PREF / C;
                                                   >> 916         PYPRFP = ETOT_PRF * VY_PREF / C;
                                                   >> 917         PZPRFP = ETOT_PRF * VZ_PREF / C;
                                                   >> 918 
                                                   >> 919         PX_BU_SUM = 0.0;
                                                   >> 920         PY_BU_SUM = 0.0;
                                                   >> 921         PZ_BU_SUM = 0.0;
                                                   >> 922 
                                                   >> 923         PX_BU_SUM = PXPRFP;
                                                   >> 924         PY_BU_SUM = PYPRFP;
                                                   >> 925         PZ_BU_SUM = PZPRFP;
                                                   >> 926         E_tot_BU = ETOT_PRF;
                                                   >> 927 
                                                   >> 928         EKIN_BU = aprf * amu / GAMMA_REL - aprf * amu;
                                                   >> 929 
                                                   >> 930          for(I_Breakup=0;I_Breakup<IMULTBU;I_Breakup++){
                                                   >> 931 // Lorentz kinematics - DM 17/5/2010
                                                   >> 932 //         BU_TAB(I_Breakup,5) = BU_TAB(I_Breakup,5) - VX_BU_SUM
                                                   >> 933 //         BU_TAB(I_Breakup,6) = BU_TAB(I_Breakup,6) - VY_BU_SUM
                                                   >> 934 //         BU_TAB(I_Breakup,7) = BU_TAB(I_Breakup,7) - VZ_BU_SUM
                                                   >> 935 // Lorentz transformation
                                                   >> 936           lorentz_boost(-VX_BU_SUM,-VY_BU_SUM,-VZ_BU_SUM,
                                                   >> 937                 BU_TAB[I_Breakup][4],BU_TAB[I_Breakup][5],BU_TAB[I_Breakup][6],
                                                   >> 938                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 939 
                                                   >> 940           BU_TAB[I_Breakup][4] = VXOUT;
                                                   >> 941           BU_TAB[I_Breakup][5] = VYOUT;
                                                   >> 942           BU_TAB[I_Breakup][6] = VZOUT;
                                                   >> 943 
                                                   >> 944           VBU2 = BU_TAB[I_Breakup][4]*BU_TAB[I_Breakup][4] +
                                                   >> 945                  BU_TAB[I_Breakup][5]*BU_TAB[I_Breakup][5] +
                                                   >> 946                  BU_TAB[I_Breakup][6]*BU_TAB[I_Breakup][6];
                                                   >> 947           GAMMA_REL = std::sqrt(1.0 - VBU2 / (C*C));
                                                   >> 948 
                                                   >> 949           ETOT_BU = BU_TAB[I_Breakup][1]*amu/GAMMA_REL;
                                                   >> 950 
                                                   >> 951           EKIN_BU = EKIN_BU + BU_TAB[I_Breakup][1] * amu /
                                                   >> 952                     GAMMA_REL - BU_TAB[I_Breakup][1] * amu;
                                                   >> 953 
                                                   >> 954           PX_BU = ETOT_BU * BU_TAB[I_Breakup][4] / C;
                                                   >> 955           PY_BU = ETOT_BU * BU_TAB[I_Breakup][5] / C;
                                                   >> 956           PZ_BU = ETOT_BU * BU_TAB[I_Breakup][6] / C;
                                                   >> 957           E_tot_BU = E_tot_BU + ETOT_BU;
                                                   >> 958 
                                                   >> 959           PX_BU_SUM = PX_BU_SUM + PX_BU;
                                                   >> 960           PY_BU_SUM = PY_BU_SUM + PY_BU;
                                                   >> 961           PZ_BU_SUM = PZ_BU_SUM + PZ_BU;
                                                   >> 962          }// for I_Breakup
                                                   >> 963         }// if DABS(PX_BU_SUM).GT.10.d0
                                                   >> 964 //
                                                   >> 965 //      Find the limits that fragment is bound - only done for neutrons and LCPs and for
                                                   >> 966 //      nuclei with A=Z, for other nuclei it will be done after decay:
                                                   >> 967 
                                                   >> 968          INEWLOOP = 0;
                                                   >> 969          for(G4int i=0;i<IMULTBU;i++){
                                                   >> 970           if(BU_TAB[i][0]<3.0 || BU_TAB[i][0]==BU_TAB[i][1]){
                                                   >> 971             unstable_nuclei(idnint(BU_TAB[i][1]),idnint(BU_TAB[i][0]), &afpnew,&zfpnew,IOUNSTABLE,
                                                   >> 972             BU_TAB[i][4], BU_TAB[i][5], BU_TAB[i][6],
                                                   >> 973             &VP1X,&VP1Y,&VP1Z,BU_TAB_TEMP,&ILOOP);
                                                   >> 974 
                                                   >> 975             if(IOUNSTABLE>0){
                                                   >> 976 // Properties of "heavy fragment":
                                                   >> 977              BU_TAB[i][1] = G4double(afpnew);
                                                   >> 978              BU_TAB[i][0] = G4double(zfpnew);
                                                   >> 979              BU_TAB[i][4] = VP1X;
                                                   >> 980              BU_TAB[i][5] = VP1Y;
                                                   >> 981              BU_TAB[i][6] = VP1Z;
                                                   >> 982 
                                                   >> 983 //Properties of "light" fragments:
                                                   >> 984              for(int IJ=0;IJ<ILOOP;IJ++){
                                                   >> 985               BU_TAB[IMULTBU+INEWLOOP+IJ][0] = BU_TAB_TEMP[IJ][0];
                                                   >> 986               BU_TAB[IMULTBU+INEWLOOP+IJ][1] = BU_TAB_TEMP[IJ][1];
                                                   >> 987               BU_TAB[IMULTBU+INEWLOOP+IJ][4] = BU_TAB_TEMP[IJ][2];
                                                   >> 988               BU_TAB[IMULTBU+INEWLOOP+IJ][5] = BU_TAB_TEMP[IJ][3];
                                                   >> 989               BU_TAB[IMULTBU+INEWLOOP+IJ][6] = BU_TAB_TEMP[IJ][4];
                                                   >> 990               BU_TAB[IMULTBU+INEWLOOP+IJ][2] = 0.0;
                                                   >> 991               BU_TAB[IMULTBU+INEWLOOP+IJ][3] = 0.0;
                                                   >> 992              }// for ILOOP
                                                   >> 993 
                                                   >> 994              INEWLOOP = INEWLOOP + ILOOP;
                                                   >> 995 
                                                   >> 996             }// if IOUNSTABLE.GT.0
                                                   >> 997           }//if BU_TAB[I_Breakup][0]<3.0
                                                   >> 998          }// for IMULTBU
                                                   >> 999 
                                                   >> 1000 // Increased array of BU_TAB
1141         IMULTBU = IMULTBU + INEWLOOP;            1001         IMULTBU = IMULTBU + INEWLOOP;
1142         // Evaporation from multifragmentatio << 1002 // Evaporation from multifragmentation products
1143         opt->optimfallowed = 1; //  IMF is al << 1003         opt->optimfallowed = 1;  //  IMF is allowed
1144         fiss->ifis = 0;         //  fission i << 1004         fiss->ifis = 0;          //  fission is not allowed
1145         gammaemission = 0;                    << 1005         gammaemission=0;
1146         ILOOPBU = 0;                             1006         ILOOPBU = 0;
1147                                                  1007 
1148         //  Arrays for lambda emission from b << 1008 //  Arrays for lambda emission from breakup fragments
1149         G4double* problamb;                   << 1009          G4double * problamb;
1150         problamb = new G4double[IMULTBU];     << 1010          problamb = new G4double[IMULTBU];
1151         G4double sumN = aprf - zprf;          << 1011          G4double sumN = aprf - zprf;
1152         for (G4int i = 0; i < IMULTBU; i++)   << 1012          for(G4int i=0;i<IMULTBU;i++)sumN=sumN+BU_TAB[i][1]-BU_TAB[i][0];
1153             sumN = sumN + BU_TAB[i][1] - BU_T << 1013 
1154                                               << 1014          for(G4int i=0;i<IMULTBU;i++){
1155         for (G4int i = 0; i < IMULTBU; i++)   << 1015          problamb[i] = (BU_TAB[i][1]-BU_TAB[i][0])/sumN;
1156         {                                     << 1016          }
1157             problamb[i] = (BU_TAB[i][1] - BU_ << 1017          G4int * Nblamb;
1158         }                                     << 1018          Nblamb = new G4int[IMULTBU];
1159         G4int* Nblamb;                        << 1019          for(G4int i=0;i<IMULTBU;i++)Nblamb[i] = 0;
1160         Nblamb = new G4int[IMULTBU];          << 1020          for(G4int j=0;j<NbLam0;){
1161         for (G4int i = 0; i < IMULTBU; i++)   << 1021           G4double probtotal = (aprf - zprf)/sumN;
1162             Nblamb[i] = 0;                    << 1022           G4double ran =  G4AblaRandom::flat();
1163         for (G4int j = 0; j < NbLam0;)        << 1023 //   Lambdas in the heavy breakup fragment
1164         {                                     << 1024           if(ran <= probtotal){
1165             G4double probtotal = (aprf - zprf << 1025            NbLamprf++;
1166             G4double ran = G4AblaRandom::flat << 1026            goto directlamb0;
1167             //   Lambdas in the heavy breakup << 1027           }
1168             if (ran <= probtotal)             << 1028           for(G4int i=0;i<IMULTBU;i++){
1169             {                                 << 1029 //   Lambdas in the light breakup residues
1170                 NbLamprf++;                   << 1030            if(probtotal < ran && ran <= probtotal+problamb[i]){
1171                 goto directlamb0;             << 1031            Nblamb[i] = Nblamb[i] + 1;
1172             }                                 << 1032            goto directlamb0;
1173             for (G4int i = 0; i < IMULTBU; i+ << 1033            }
1174             {                                 << 1034            probtotal = probtotal + problamb[i];
1175                 //   Lambdas in the light bre << 1035           }
1176                 if (probtotal < ran && ran <= << 1036           directlamb0:
1177                 {                             << 1037           j++;
1178                     Nblamb[i] = Nblamb[i] + 1 << 1038          }
1179                     goto directlamb0;         << 1039 //
1180                 }                             << 1040          for(G4int i=0;i<IMULTBU;i++){
1181                 probtotal = probtotal + probl << 1041           EEBU = BU_TAB[i][2];
1182             }                                 << 1042           BU_TAB[i][10] = BU_TAB[i][6];
1183         directlamb0:                          << 1043           G4double jprfbu = BU_TAB[i][9];
1184             j++;                              << 1044           if(BU_TAB[i][0]>2.0){
1185         }                                     << 1045            G4int nbl = Nblamb[i];
1186         //                                    << 1046            evapora(BU_TAB[i][0],BU_TAB[i][1],&EEBU,0.0, &ZFBU, &AFBU, &mtota, &vz_evabu, &vx_evabu,&vy_evabu, &ff, &fimf, &ZIMFBU, &AIMFBU,&TKEIMFBU, &jprfbu, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&nbl);
1187         for (G4int i = 0; i < IMULTBU; i++)   << 1047 
1188         {                                     << 1048            Nblamb[i] = nbl;
1189             EEBU = BU_TAB[i][2];              << 1049            BU_TAB[i][9] = jprfbu;
1190             BU_TAB[i][10] = BU_TAB[i][6];     << 1050 
1191             G4double jprfbu = BU_TAB[i][9];   << 1051 //Velocities of evaporated particles (in the frame of the primary prefragment)
1192             if (BU_TAB[i][0] > 2.0)           << 1052                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1193             {                                 << 1053                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1194                 G4int nbl = Nblamb[i];        << 1054                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1195                 evapora(BU_TAB[i][0],         << 1055                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1196                         BU_TAB[i][1],         << 1056 //Lorentz kinematics
1197                         &EEBU,                << 1057 //                 DO IK = 3, 5, 1
1198                         0.0,                  << 1058 //                 EV_TAB(IJ+IEV_TAB,IK) = EV_TEMP(IJ,IK) + BU_TAB(I,IK+2)
1199                         &ZFBU,                << 1059 //                 ENDDO
1200                         &AFBU,                << 1060 // Lorentz transformation
1201                         &mtota,               << 1061                lorentz_boost(BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1202                         &vz_evabu,            << 1062                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1203                         &vx_evabu,            << 1063                 &VXOUT,&VYOUT,&VZOUT);
1204                         &vy_evabu,            << 1064                EV_TAB[IJ+IEV_TAB][2] = VXOUT;
1205                         &ff,                  << 1065                EV_TAB[IJ+IEV_TAB][3] = VYOUT;
1206                         &fimf,                << 1066                EV_TAB[IJ+IEV_TAB][4] = VZOUT;
1207                         &ZIMFBU,              << 1067                }
1208                         &AIMFBU,              << 1068                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1209                         &TKEIMFBU,            << 1069 
1210                         &jprfbu,              << 1070 //All velocities in the frame of the "primary" prefragment (after INC)
1211                         &inttype,             << 1071 // Lorentz kinematics
1212                         &inum,                << 1072 //                BU_TAB(I,5) = BU_TAB(I,5) + VX_EVABU
1213                         EV_TEMP,              << 1073 //                BU_TAB(I,6) = BU_TAB(I,6) + VY_EVABU
1214                         &IEV_TAB_TEMP,        << 1074 //                BU_TAB(I,7) = BU_TAB(I,7) + VZ_EVABU
1215                         &nbl);                << 1075 // Lorentz transformation
1216                                               << 1076                lorentz_boost(vx_evabu,vy_evabu,vz_evabu,
1217                 Nblamb[i] = nbl;              << 1077                 BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1218                 BU_TAB[i][9] = jprfbu;        << 1078                 &VXOUT,&VYOUT,&VZOUT);
1219                                               << 1079                BU_TAB[i][4] = VXOUT;
1220                 // Velocities of evaporated p << 1080                BU_TAB[i][5] = VYOUT;
1221                 // prefragment)               << 1081                BU_TAB[i][6] = VZOUT;
1222                 for (G4int IJ = 0; IJ < IEV_T << 1082 
1223                 {                             << 1083                if(fimf==0){
1224                     EV_TAB[IJ + IEV_TAB][0] = << 1084                  BU_TAB[i][7] = dint(ZFBU);
1225                     EV_TAB[IJ + IEV_TAB][1] = << 1085                  BU_TAB[i][8] = dint(AFBU);
1226                     EV_TAB[IJ + IEV_TAB][5] = << 1086                  BU_TAB[i][11]= nbl;
1227                     // Lorentz kinematics     << 1087                }// if fimf==0
1228                     //                  DO IK << 1088 
1229                     //                  EV_TA << 1089                if(fimf==1){
1230                     //                  BU_TA << 1090 //            PRINT*,'IMF EMISSION FROM BU PRODUCTS'
1231                     //  Lorentz transformatio << 1091 // IMF emission: Heavy partner is not allowed to fission or to emitt IMF.
1232                     lorentz_boost(BU_TAB[i][4 << 1092                //double FEE = EEBU;
1233                                   BU_TAB[i][5 << 1093                G4int FFBU1 = 0;
1234                                   BU_TAB[i][6 << 1094                G4int FIMFBU1 = 0;
1235                                   EV_TEMP[IJ] << 1095                opt->optimfallowed = 0;  //  IMF is not allowed
1236                                   EV_TEMP[IJ] << 1096                fiss->ifis = 0;          //  fission is not allowed
1237                                   EV_TEMP[IJ] << 1097 // Velocities of IMF and partner: 1 denotes partner, 2 denotes IMF
1238                                   &VXOUT,     << 1098                G4double EkinR1 = TKEIMFBU * AIMFBU / (AFBU+AIMFBU);
1239                                   &VYOUT,     << 1099                G4double EkinR2 = TKEIMFBU * AFBU / (AFBU+AIMFBU);
1240                                   &VZOUT);    << 1100                G4double V1 = std::sqrt(EkinR1/AFBU) * 1.3887;
1241                     EV_TAB[IJ + IEV_TAB][2] = << 1101                G4double V2 = std::sqrt(EkinR2/AIMFBU) * 1.3887;
1242                     EV_TAB[IJ + IEV_TAB][3] = << 1102                G4double VZ1_IMF = (2.0 * G4AblaRandom::flat() - 1.0) * V1;
1243                     EV_TAB[IJ + IEV_TAB][4] = << 1103                G4double VPERP1 = std::sqrt(V1*V1 - VZ1_IMF*VZ1_IMF);
1244                 }                             << 1104                G4double ALPHA1 = G4AblaRandom::flat() * 2. * 3.142;
1245                 IEV_TAB = IEV_TAB + IEV_TAB_T << 1105                G4double VX1_IMF = VPERP1 * std::sin(ALPHA1);
                                                   >> 1106                G4double VY1_IMF = VPERP1 * std::cos(ALPHA1);
                                                   >> 1107                G4double VX2_IMF = - VX1_IMF / V1 * V2;
                                                   >> 1108                G4double VY2_IMF = - VY1_IMF / V1 * V2;
                                                   >> 1109                G4double VZ2_IMF = - VZ1_IMF / V1 * V2;
                                                   >> 1110 
                                                   >> 1111                G4double EEIMFP = EEBU * AFBU /(AFBU + AIMFBU);
                                                   >> 1112                G4double EEIMF = EEBU * AIMFBU /(AFBU + AIMFBU);
                                                   >> 1113 
                                                   >> 1114 // Decay of heavy partner
                                                   >> 1115      G4double IINERTTOT = 0.40 * 931.490 * 1.160*1.160 *( std::pow(AIMFBU,5.0/3.0) + std::pow(AFBU,5.0/3.0)) + 931.490 * 1.160*1.160*AIMFBU*AFBU/(AIMFBU+AFBU)*(std::pow(AIMFBU,1./3.) + std::pow(AFBU,1./3.))*(std::pow(AIMFBU,1./3.) + std::pow(AFBU,1./3.));
                                                   >> 1116 
                                                   >> 1117      G4double JPRFHEAVY = BU_TAB[i][9] * 0.4 * 931.49 * 1.16*1.16 * std::pow(AFBU,5.0/3.0) / IINERTTOT;
                                                   >> 1118      G4double JPRFLIGHT = BU_TAB[i][9] * 0.4 * 931.49 * 1.16*1.16 * std::pow(AIMFBU,5.0/3.0) / IINERTTOT;
                                                   >> 1119 
                                                   >> 1120 // Lorentz kinematics
                                                   >> 1121 //           BU_TAB(I,5) = BU_TAB(I,5) + VX1_IMF
                                                   >> 1122 //           BU_TAB(I,6) = BU_TAB(I,6) + VY1_IMF
                                                   >> 1123 //           BU_TAB(I,7) = BU_TAB(I,7) + VZ1_IMF
                                                   >> 1124 // Lorentz transformation
                                                   >> 1125                lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
                                                   >> 1126                 BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
                                                   >> 1127                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 1128                BU_TAB[i][4] = VXOUT;
                                                   >> 1129                BU_TAB[i][5] = VYOUT;
                                                   >> 1130                BU_TAB[i][6] = VZOUT;
                                                   >> 1131 
                                                   >> 1132      G4double vx1ev_imf=0., vy1ev_imf=0., vz1ev_imf=0., zdummy=0., adummy=0., tkedummy=0.,jprf1=0.;
                                                   >> 1133 
                                                   >> 1134  //  Lambda particles 
                                                   >> 1135       G4int NbLamH=0;
                                                   >> 1136       G4int NbLamimf=0;
                                                   >> 1137       G4double pbH = (AFBU-ZFBU) / (AFBU-ZFBU+AIMFBU-ZIMFBU); 
                                                   >> 1138       for(G4int j=0;j<nbl;j++){
                                                   >> 1139        if(G4AblaRandom::flat()<pbH){
                                                   >> 1140         NbLamH++;
                                                   >> 1141        }else{
                                                   >> 1142         NbLamimf++;
                                                   >> 1143        }
                                                   >> 1144       }
                                                   >> 1145 // Decay of IMF's partner:
                                                   >> 1146                evapora(ZFBU,AFBU,&EEIMFP,JPRFHEAVY, &ZFFBU, &AFFBU, &mtota,  &vz1ev_imf, &vx1ev_imf,&vy1ev_imf, &FFBU1, &FIMFBU1, &zdummy, &adummy,&tkedummy, &jprf1, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamH);
1246                                                  1147 
1247                 // All velocities in the fram << 1148                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1248                 //  Lorentz kinematics        << 1149                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1249                 //                 BU_TAB(I,5 << 1150                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1250                 //                 BU_TAB(I,6 << 1151                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1251                 //                 BU_TAB(I,7 << 1152 //Lorentz kinematics
1252                 //  Lorentz transformation    << 1153 //                 DO IK = 3, 5, 1
1253                 lorentz_boost(                << 1154 //                 EV_TAB(IJ+IEV_TAB,IK) = EV_TEMP(IJ,IK) + BU_TAB(I,IK+2)
1254                     vx_evabu, vy_evabu, vz_ev << 1155 //                 ENDDO
1255                 BU_TAB[i][4] = VXOUT;         << 1156 // Lorentz transformation
1256                 BU_TAB[i][5] = VYOUT;         << 1157                lorentz_boost(BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1257                 BU_TAB[i][6] = VZOUT;         << 1158                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1258                                               << 1159                 &VXOUT,&VYOUT,&VZOUT);
1259                 if (fimf == 0)                << 1160                EV_TAB[IJ+IEV_TAB][2] = VXOUT;
1260                 {                             << 1161                EV_TAB[IJ+IEV_TAB][3] = VYOUT;
1261                     BU_TAB[i][7] = dint(ZFBU) << 1162                EV_TAB[IJ+IEV_TAB][4] = VZOUT;
1262                     BU_TAB[i][8] = dint(AFBU) << 1163                }
1263                     BU_TAB[i][11] = nbl;      << 1164                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1264                 } // if fimf==0               << 1165 
1265                                               << 1166                BU_TAB[i][7] = dint(ZFFBU);
1266                 if (fimf == 1)                << 1167                BU_TAB[i][8] = dint(AFFBU);
1267                 {                             << 1168                BU_TAB[i][11]= NbLamH;
1268                     //            PRINT*,'IMF << 1169 //Lorentz kinematics
1269                     // IMF emission: Heavy pa << 1170 //           BU_TAB(I,5) = BU_TAB(I,5) + vx1ev_imf
1270                     // IMF.                   << 1171 //           BU_TAB(I,6) = BU_TAB(I,6) + vy1ev_imf
1271                     // double FEE = EEBU;     << 1172 //           BU_TAB(I,7) = BU_TAB(I,7) + vz1ev_imf
1272                     G4int FFBU1 = 0;          << 1173                lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
1273                     G4int FIMFBU1 = 0;        << 1174                 BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1274                     opt->optimfallowed = 0; / << 1175                 &VXOUT,&VYOUT,&VZOUT);
1275                     fiss->ifis = 0;         / << 1176                BU_TAB[i][4] = VXOUT;
1276                     // Velocities of IMF and  << 1177                BU_TAB[i][5] = VYOUT;
1277                     G4double EkinR1 = TKEIMFB << 1178                BU_TAB[i][6] = VZOUT;
1278                     G4double EkinR2 = TKEIMFB << 1179 // For IMF - fission and IMF emission are not allowed
1279                     G4double V1 = std::sqrt(E << 1180               G4int FFBU2 = 0;
1280                     G4double V2 = std::sqrt(E << 1181               G4int FIMFBU2 = 0;
1281                     G4double VZ1_IMF = (2.0 * << 1182               opt->optimfallowed = 0;  //  IMF is not allowed
1282                     G4double VPERP1 = std::sq << 1183               fiss->ifis = 0;          //  fission is not allowed
1283                     G4double ALPHA1 = G4AblaR << 1184 // Decay of IMF
1284                     G4double VX1_IMF = VPERP1 << 1185               G4double zffimf, affimf,zdummy1, adummy1, tkedummy1, jprf2, vx2ev_imf, vy2ev_imf, vz2ev_imf;
1285                     G4double VY1_IMF = VPERP1 << 1186 
1286                     G4double VX2_IMF = -VX1_I << 1187               evapora(ZIMFBU,AIMFBU,&EEIMF,JPRFLIGHT, &zffimf, &affimf, &mtota, &vz2ev_imf, &vx2ev_imf,&vy2ev_imf, &FFBU2, &FIMFBU2, &zdummy1, &adummy1,&tkedummy1, &jprf2, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamimf);
1287                     G4double VY2_IMF = -VY1_I << 1188 
1288                     G4double VZ2_IMF = -VZ1_I << 1189                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1289                                               << 1190                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1290                     G4double EEIMFP = EEBU *  << 1191                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1291                     G4double EEIMF = EEBU * A << 1192                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1292                                               << 1193 //Lorentz kinematics
1293                     // Decay of heavy partner << 1194 //            EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + BU_TAB(I,5) +VX2_IMF
1294                     G4double IINERTTOT =      << 1195 //            EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + BU_TAB(I,6) +VY2_IMF
1295                         0.40 * 931.490 * 1.16 << 1196 //            EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + BU_TAB(I,7) +VZ2_IMF
1296                         931.490 * 1.160 * 1.1 << 1197 // Lorentz transformation
1297                             (std::pow(AIMFBU, << 1198                lorentz_boost(BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1298                             (std::pow(AIMFBU, << 1199                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1299                                               << 1200                 &VXOUT,&VYOUT,&VZOUT);
1300                     G4double JPRFHEAVY =      << 1201                lorentz_boost(VX2_IMF,VY2_IMF,VZ2_IMF,
1301                         BU_TAB[i][9] * 0.4 *  << 1202                 VXOUT,VYOUT,VZOUT,
1302                     G4double JPRFLIGHT =      << 1203                 &VX2OUT,&VY2OUT,&VZ2OUT);
1303                         BU_TAB[i][9] * 0.4 *  << 1204                EV_TAB[IJ+IEV_TAB][2] = VX2OUT;
1304                                               << 1205                EV_TAB[IJ+IEV_TAB][3] = VY2OUT;
1305                     // Lorentz kinematics     << 1206                EV_TAB[IJ+IEV_TAB][4] = VZ2OUT;
1306                     //           BU_TAB(I,5)  << 1207                }
1307                     //           BU_TAB(I,6)  << 1208                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1308                     //           BU_TAB(I,7)  << 1209 
1309                     // Lorentz transformation << 1210                BU_TAB[IMULTBU+ILOOPBU][0] = BU_TAB[i][0];
1310                     lorentz_boost(            << 1211                BU_TAB[IMULTBU+ILOOPBU][1] = BU_TAB[i][1];
1311                         VX1_IMF, VY1_IMF, VZ1 << 1212                BU_TAB[IMULTBU+ILOOPBU][2] = BU_TAB[i][2];
1312                     BU_TAB[i][4] = VXOUT;     << 1213                BU_TAB[IMULTBU+ILOOPBU][3] = BU_TAB[i][3];
1313                     BU_TAB[i][5] = VYOUT;     << 1214                BU_TAB[IMULTBU+ILOOPBU][7] = dint(zffimf);
1314                     BU_TAB[i][6] = VZOUT;     << 1215                BU_TAB[IMULTBU+ILOOPBU][8] = dint(affimf);
1315                                               << 1216                BU_TAB[IMULTBU+ILOOPBU][11]= NbLamimf;
1316                     G4double vx1ev_imf = 0.,  << 1217 // Lorentz transformation
1317                              jprf1 = 0.;      << 1218                lorentz_boost(VX2_IMF,VY2_IMF,VZ2_IMF,
1318                                               << 1219                 BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1319                     //  Lambda particles      << 1220                 &VXOUT,&VYOUT,&VZOUT);
1320                     G4int NbLamH = 0;         << 1221                lorentz_boost(vx2ev_imf,vy2ev_imf,vz2ev_imf,
1321                     G4int NbLamimf = 0;       << 1222                 VXOUT,VYOUT,VZOUT,
1322                     G4double pbH = (AFBU - ZF << 1223                 &VX2OUT,&VY2OUT,&VZ2OUT);
1323                     for (G4int j = 0; j < nbl << 1224                BU_TAB[IMULTBU+ILOOPBU][4] = VX2OUT;
1324                     {                         << 1225                BU_TAB[IMULTBU+ILOOPBU][5] = VY2OUT;
1325                         if (G4AblaRandom::fla << 1226                BU_TAB[IMULTBU+ILOOPBU][6] = VZ2OUT;
1326                         {                     << 1227                ILOOPBU = ILOOPBU + 1;
1327                             NbLamH++;         << 1228                }// if fimf==1
1328                         }                     << 1229 
1329                         else                  << 1230           } else {// if BU_TAB(I,1).GT.2.D0
1330                         {                     << 1231       //BU_TAB[i][0] = BU_TAB[i][0];
1331                             NbLamimf++;       << 1232       //BU_TAB[i][1] = BU_TAB[i][1];
1332                         }                     << 1233       //BU_TAB[i][2] = BU_TAB[i][2];
1333                     }                         << 1234       //BU_TAB[i][3] = BU_TAB[i][3];
1334                     // Decay of IMF's partner << 1235            BU_TAB[i][7] = BU_TAB[i][0];
1335                     evapora(ZFBU,             << 1236            BU_TAB[i][8] = BU_TAB[i][1];
1336                             AFBU,             << 1237            //BU_TAB[i][4] = BU_TAB[i][4];
1337                             &EEIMFP,          << 1238            //BU_TAB[i][5] = BU_TAB[i][5];
1338                             JPRFHEAVY,        << 1239            //BU_TAB[i][6] = BU_TAB[i][6];
1339                             &ZFFBU,           << 1240            BU_TAB[i][11]= Nblamb[i];
1340                             &AFFBU,           << 1241           }// if BU_TAB(I,1).GT.2.D0
1341                             &mtota,           << 1242          }// for IMULTBU
1342                             &vz1ev_imf,       << 
1343                             &vx1ev_imf,       << 
1344                             &vy1ev_imf,       << 
1345                             &FFBU1,           << 
1346                             &FIMFBU1,         << 
1347                             &zdummy,          << 
1348                             &adummy,          << 
1349                             &tkedummy,        << 
1350                             &jprf1,           << 
1351                             &inttype,         << 
1352                             &inum,            << 
1353                             EV_TEMP,          << 
1354                             &IEV_TAB_TEMP,    << 
1355                             &NbLamH);         << 
1356                                               << 
1357                     for (G4int IJ = 0; IJ < I << 
1358                     {                         << 
1359                         EV_TAB[IJ + IEV_TAB][ << 
1360                         EV_TAB[IJ + IEV_TAB][ << 
1361                         EV_TAB[IJ + IEV_TAB][ << 
1362                         // Lorentz kinematics << 
1363                         //                  D << 
1364                         //                  E << 
1365                         //                  B << 
1366                         //  Lorentz transform << 
1367                         lorentz_boost(BU_TAB[ << 
1368                                       BU_TAB[ << 
1369                                       BU_TAB[ << 
1370                                       EV_TEMP << 
1371                                       EV_TEMP << 
1372                                       EV_TEMP << 
1373                                       &VXOUT, << 
1374                                       &VYOUT, << 
1375                                       &VZOUT) << 
1376                         EV_TAB[IJ + IEV_TAB][ << 
1377                         EV_TAB[IJ + IEV_TAB][ << 
1378                         EV_TAB[IJ + IEV_TAB][ << 
1379                     }                         << 
1380                     IEV_TAB = IEV_TAB + IEV_T << 
1381                                               << 
1382                     BU_TAB[i][7] = dint(ZFFBU << 
1383                     BU_TAB[i][8] = dint(AFFBU << 
1384                     BU_TAB[i][11] = NbLamH;   << 
1385                     // Lorentz kinematics     << 
1386                     //            BU_TAB(I,5) << 
1387                     //            BU_TAB(I,6) << 
1388                     //            BU_TAB(I,7) << 
1389                     lorentz_boost(vx1ev_imf,  << 
1390                                   vy1ev_imf,  << 
1391                                   vz1ev_imf,  << 
1392                                   BU_TAB[i][4 << 
1393                                   BU_TAB[i][5 << 
1394                                   BU_TAB[i][6 << 
1395                                   &VXOUT,     << 
1396                                   &VYOUT,     << 
1397                                   &VZOUT);    << 
1398                     BU_TAB[i][4] = VXOUT;     << 
1399                     BU_TAB[i][5] = VYOUT;     << 
1400                     BU_TAB[i][6] = VZOUT;     << 
1401                     // For IMF - fission and  << 
1402                     G4int FFBU2 = 0;          << 
1403                     G4int FIMFBU2 = 0;        << 
1404                     opt->optimfallowed = 0; / << 
1405                     fiss->ifis = 0;         / << 
1406                                             / << 
1407                     G4double zffimf, affimf,  << 
1408                                               << 
1409                     evapora(ZIMFBU,           << 
1410                             AIMFBU,           << 
1411                             &EEIMF,           << 
1412                             JPRFLIGHT,        << 
1413                             &zffimf,          << 
1414                             &affimf,          << 
1415                             &mtota,           << 
1416                             &vz2ev_imf,       << 
1417                             &vx2ev_imf,       << 
1418                             &vy2ev_imf,       << 
1419                             &FFBU2,           << 
1420                             &FIMFBU2,         << 
1421                             &zdummy1,         << 
1422                             &adummy1,         << 
1423                             &tkedummy1,       << 
1424                             &jprf2,           << 
1425                             &inttype,         << 
1426                             &inum,            << 
1427                             EV_TEMP,          << 
1428                             &IEV_TAB_TEMP,    << 
1429                             &NbLamimf);       << 
1430                                               << 
1431                     for (G4int IJ = 0; IJ < I << 
1432                     {                         << 
1433                         EV_TAB[IJ + IEV_TAB][ << 
1434                         EV_TAB[IJ + IEV_TAB][ << 
1435                         EV_TAB[IJ + IEV_TAB][ << 
1436                         // Lorentz kinematics << 
1437                         //             EV_TAB << 
1438                         //             +VX2_I << 
1439                         //             BU_TAB << 
1440                         //             EV_TEM << 
1441                         //  Lorentz transform << 
1442                         lorentz_boost(BU_TAB[ << 
1443                                       BU_TAB[ << 
1444                                       BU_TAB[ << 
1445                                       EV_TEMP << 
1446                                       EV_TEMP << 
1447                                       EV_TEMP << 
1448                                       &VXOUT, << 
1449                                       &VYOUT, << 
1450                                       &VZOUT) << 
1451                         lorentz_boost(VX2_IMF << 
1452                         EV_TAB[IJ + IEV_TAB][ << 
1453                         EV_TAB[IJ + IEV_TAB][ << 
1454                         EV_TAB[IJ + IEV_TAB][ << 
1455                     }                         << 
1456                     IEV_TAB = IEV_TAB + IEV_T << 
1457                                               << 
1458                     BU_TAB[IMULTBU + ILOOPBU] << 
1459                     BU_TAB[IMULTBU + ILOOPBU] << 
1460                     BU_TAB[IMULTBU + ILOOPBU] << 
1461                     BU_TAB[IMULTBU + ILOOPBU] << 
1462                     BU_TAB[IMULTBU + ILOOPBU] << 
1463                     BU_TAB[IMULTBU + ILOOPBU] << 
1464                     BU_TAB[IMULTBU + ILOOPBU] << 
1465                     // Lorentz transformation << 
1466                     lorentz_boost(            << 
1467                         VX2_IMF, VY2_IMF, VZ2 << 
1468                     lorentz_boost(vx2ev_imf,  << 
1469                     BU_TAB[IMULTBU + ILOOPBU] << 
1470                     BU_TAB[IMULTBU + ILOOPBU] << 
1471                     BU_TAB[IMULTBU + ILOOPBU] << 
1472                     ILOOPBU = ILOOPBU + 1;    << 
1473                 } // if fimf==1               << 
1474             }                                 << 
1475             else                              << 
1476             { // if BU_TAB(I,1).GT.2.D0       << 
1477               // BU_TAB[i][0] = BU_TAB[i][0]; << 
1478                 // BU_TAB[i][1] = BU_TAB[i][1 << 
1479                 // BU_TAB[i][2] = BU_TAB[i][2 << 
1480                 // BU_TAB[i][3] = BU_TAB[i][3 << 
1481                 BU_TAB[i][7] = BU_TAB[i][0];  << 
1482                 BU_TAB[i][8] = BU_TAB[i][1];  << 
1483                 // BU_TAB[i][4] = BU_TAB[i][4 << 
1484                 // BU_TAB[i][5] = BU_TAB[i][5 << 
1485                 // BU_TAB[i][6] = BU_TAB[i][6 << 
1486                 BU_TAB[i][11] = Nblamb[i];    << 
1487             } // if BU_TAB(I,1).GT.2.D0       << 
1488         }     // for IMULTBU                  << 
1489                                                  1243 
1490         IMULTBU = IMULTBU + ILOOPBU;          << 1244          IMULTBU = IMULTBU + ILOOPBU;
1491         //                                    << 1245 //
1492         // RESOLVE UNSTABLE NUCLEI            << 1246 // RESOLVE UNSTABLE NUCLEI
1493         //                                    << 1247 //
1494         INEWLOOP = 0;                         << 1248       INEWLOOP = 0;
1495         ABU_SUM = 0.0;                        << 1249       ABU_SUM = 0.0;
1496         ZBU_SUM = 0.0;                        << 1250       ZBU_SUM = 0.0;
1497         //                                    << 1251 //
1498         for (G4int i = 0; i < IMULTBU; i++)   << 1252       for(G4int i=0;i<IMULTBU;i++){
1499         {                                     << 1253        ABU_SUM = ABU_SUM + BU_TAB[i][8];
1500             ABU_SUM = ABU_SUM + BU_TAB[i][8]; << 1254        ZBU_SUM = ZBU_SUM + BU_TAB[i][7];
1501             ZBU_SUM = ZBU_SUM + BU_TAB[i][7]; << 1255        unstable_nuclei(idnint(BU_TAB[i][8]),idnint(BU_TAB[i][7]), &afpnew,&zfpnew,IOUNSTABLE,
1502             unstable_nuclei(idnint(BU_TAB[i][ << 1256             BU_TAB[i][4], BU_TAB[i][5], BU_TAB[i][6],
1503                             idnint(BU_TAB[i][ << 1257             &VP1X,&VP1Y,&VP1Z,BU_TAB_TEMP1,&ILOOP);
1504                             &afpnew,          << 1258 
1505                             &zfpnew,          << 1259 //From now on, all neutrons and LCP created in above subroutine are part of the
1506                             IOUNSTABLE,       << 1260 // BU_TAB array (see below - Properties of "light" fragments). Therefore,
1507                             BU_TAB[i][4],     << 1261 // NEVA, PEVA ... are not needed any more in the break-up stage.
1508                             BU_TAB[i][5],     << 1262 
1509                             BU_TAB[i][6],     << 1263          if(IOUNSTABLE>0){
1510                             &VP1X,            << 1264 // Properties of "heavy fragment":
1511                             &VP1Y,            << 1265             ABU_SUM = ABU_SUM + G4double(afpnew) - BU_TAB[i][8];
1512                             &VP1Z,            << 1266             ZBU_SUM = ZBU_SUM + G4double(zfpnew) - BU_TAB[i][7];
1513                             BU_TAB_TEMP1,     << 1267              BU_TAB[i][8] = G4double(afpnew);
1514                             &ILOOP);          << 1268              BU_TAB[i][7] = G4double(zfpnew);
1515                                               << 1269              BU_TAB[i][4] = VP1X;
1516             // From now on, all neutrons and  << 1270              BU_TAB[i][5] = VP1Y;
1517             // of the                         << 1271              BU_TAB[i][6] = VP1Z;
1518             //  BU_TAB array (see below - Pro << 1272 
1519             //  NEVA, PEVA ... are not needed << 1273 //Properties of "light" fragments:
1520                                               << 1274              for(G4int IJ=0;IJ<ILOOP;IJ++){
1521             if (IOUNSTABLE > 0)               << 1275               BU_TAB[IMULTBU+INEWLOOP+IJ][7] = BU_TAB_TEMP1[IJ][0];
1522             {                                 << 1276               BU_TAB[IMULTBU+INEWLOOP+IJ][8] = BU_TAB_TEMP1[IJ][1];
1523                 // Properties of "heavy fragm << 1277               BU_TAB[IMULTBU+INEWLOOP+IJ][4] = BU_TAB_TEMP1[IJ][2];
1524                 ABU_SUM = ABU_SUM + G4double( << 1278               BU_TAB[IMULTBU+INEWLOOP+IJ][5] = BU_TAB_TEMP1[IJ][3];
1525                 ZBU_SUM = ZBU_SUM + G4double( << 1279               BU_TAB[IMULTBU+INEWLOOP+IJ][6] = BU_TAB_TEMP1[IJ][4];
1526                 BU_TAB[i][8] = G4double(afpne << 1280               BU_TAB[IMULTBU+INEWLOOP+IJ][2] = 0.0;
1527                 BU_TAB[i][7] = G4double(zfpne << 1281               BU_TAB[IMULTBU+INEWLOOP+IJ][3] = 0.0;
1528                 BU_TAB[i][4] = VP1X;          << 1282               BU_TAB[IMULTBU+INEWLOOP+IJ][0] = BU_TAB[i][0];
1529                 BU_TAB[i][5] = VP1Y;          << 1283               BU_TAB[IMULTBU+INEWLOOP+IJ][1] = BU_TAB[i][1];
1530                 BU_TAB[i][6] = VP1Z;          << 1284               BU_TAB[IMULTBU+INEWLOOP+IJ][11] = BU_TAB[i][11];
1531                                               << 1285               ABU_SUM = ABU_SUM + BU_TAB[IMULTBU+INEWLOOP+IJ][8];
1532                 // Properties of "light" frag << 1286               ZBU_SUM = ZBU_SUM + BU_TAB[IMULTBU+INEWLOOP+IJ][7];
1533                 for (G4int IJ = 0; IJ < ILOOP << 1287              }// for ILOOP
1534                 {                             << 1288 
1535                     BU_TAB[IMULTBU + INEWLOOP << 1289              INEWLOOP = INEWLOOP + ILOOP;
1536                     BU_TAB[IMULTBU + INEWLOOP << 1290          }// if(IOUNSTABLE>0)
1537                     BU_TAB[IMULTBU + INEWLOOP << 1291       }// for IMULTBU unstable
1538                     BU_TAB[IMULTBU + INEWLOOP << 
1539                     BU_TAB[IMULTBU + INEWLOOP << 
1540                     BU_TAB[IMULTBU + INEWLOOP << 
1541                     BU_TAB[IMULTBU + INEWLOOP << 
1542                     BU_TAB[IMULTBU + INEWLOOP << 
1543                     BU_TAB[IMULTBU + INEWLOOP << 
1544                     BU_TAB[IMULTBU + INEWLOOP << 
1545                     ABU_SUM = ABU_SUM + BU_TA << 
1546                     ZBU_SUM = ZBU_SUM + BU_TA << 
1547                 } // for ILOOP                << 
1548                                               << 
1549                 INEWLOOP = INEWLOOP + ILOOP;  << 
1550             } // if(IOUNSTABLE>0)             << 
1551         }     // for IMULTBU unstable         << 
1552                                                  1292 
1553         // Increased array of BU_TAB          << 1293 // Increased array of BU_TAB
1554         IMULTBU = IMULTBU + INEWLOOP;            1294         IMULTBU = IMULTBU + INEWLOOP;
1555                                                  1295 
1556         // Transform all velocities into the  << 1296 // Transform all velocities into the rest frame of the projectile
1557         lorentz_boost(VX_incl, VY_incl, VZ_in << 1297         lorentz_boost(VX_incl,VY_incl,VZ_incl,
                                                   >> 1298                 VX_PREF,VY_PREF,VZ_PREF,
                                                   >> 1299                 &VXOUT,&VYOUT,&VZOUT);
1558         VX_PREF = VXOUT;                         1300         VX_PREF = VXOUT;
1559         VY_PREF = VYOUT;                         1301         VY_PREF = VYOUT;
1560         VZ_PREF = VZOUT;                         1302         VZ_PREF = VZOUT;
1561                                                  1303 
1562         for (G4int i = 0; i < IMULTBU; i++)   << 1304         for(G4int i=0;i<IMULTBU;i++){
1563         {                                     << 1305          lorentz_boost(VX_incl,VY_incl,VZ_incl,
1564             lorentz_boost(VX_incl, VY_incl, V << 1306                 BU_TAB[i][4],BU_TAB[i][5],BU_TAB[i][6],
1565             BU_TAB[i][4] = VXOUT;             << 1307                 &VXOUT,&VYOUT,&VZOUT);
1566             BU_TAB[i][5] = VYOUT;             << 1308          BU_TAB[i][4] = VXOUT;
1567             BU_TAB[i][6] = VZOUT;             << 1309          BU_TAB[i][5] = VYOUT;
1568         }                                     << 1310          BU_TAB[i][6] = VZOUT;
1569         for (G4int i = 0; i < IEV_TAB; i++)   << 1311         }
1570         {                                     << 1312         for(G4int i=0;i<IEV_TAB;i++){
1571             lorentz_boost(VX_incl, VY_incl, V << 1313          lorentz_boost(VX_incl,VY_incl,VZ_incl,
1572             EV_TAB[i][2] = VXOUT;             << 1314                 EV_TAB[i][2],EV_TAB[i][3],EV_TAB[i][4],
1573             EV_TAB[i][3] = VYOUT;             << 1315                 &VXOUT,&VYOUT,&VZOUT);
1574             EV_TAB[i][4] = VZOUT;             << 1316          EV_TAB[i][2] = VXOUT;
1575         }                                     << 1317          EV_TAB[i][3] = VYOUT;
1576         if (IMULTBU > 200)                    << 1318          EV_TAB[i][4] = VZOUT;
1577             std::cout << "IMULTBU>200 " << IM << 1319         }
1578         delete[] problamb;                    << 
1579         delete[] Nblamb;                      << 
1580     } // if(T_diff>0.1)                       << 
1581       // End of multi-fragmentation           << 
1582 mult7777:                                     << 
1583                                               << 
1584     // Start basic de-excitation of fragments << 
1585     aprfp = idnint(aprf);                     << 
1586     zprfp = idnint(zprf);                     << 
1587                                               << 
1588     if (IMULTIFR == 0)                        << 
1589     {                                         << 
1590         // These momenta are in the frame of  << 
1591         // direct kinematics)                 << 
1592         VX_PREF = VX_incl;                    << 
1593         VY_PREF = VY_incl;                    << 
1594         VZ_PREF = VZ_incl;                    << 
1595     }                                         << 
1596     // Lambdas after multi-fragmentation      << 
1597     if (IMULTIFR == 1)                        << 
1598     {                                         << 
1599         NbLam0 = NbLamprf;                    << 
1600     }                                         << 
1601     //                                        << 
1602     // CALL THE EVAPORATION SUBROUTINE        << 
1603     //                                        << 
1604     opt->optimfallowed = 1; //  IMF is allowe << 
1605     fiss->ifis = 1;         //  fission is al << 
1606     fimf = 0;                                 << 
1607     ff = 0;                                   << 
1608                                                  1320 
1609     // To spare computing time; these events  << 
1610     //      IF(ZPRFP.LE.2.AND.ZPRFP.LT.APRFP) << 
1611     if (zprfp <= 2 && zprfp < aprfp)          << 
1612     {                                         << 
1613         zf = zprf;                            << 
1614         af = aprf;                            << 
1615         ee = 0.0;                             << 
1616         ff = 0;                               << 
1617         fimf = 0;                             << 
1618         ftype = 0;                            << 
1619         aimf = 0.0;                           << 
1620         zimf = 0.0;                           << 
1621         tkeimf = 0.0;                         << 
1622         vx_eva = 0.0;                         << 
1623         vy_eva = 0.0;                         << 
1624         vz_eva = 0.0;                         << 
1625         jprf0 = jprf;                         << 
1626         goto a1972;                           << 
1627     }                                         << 
1628                                                  1321 
1629     //      if(ZPRFP.LE.2.AND.ZPRFP.EQ.APRFP) << 1322         if(IMULTBU>200)std::cout << "IMULTBU>200 " << IMULTBU << std::endl;
1630     if (zprfp <= 2 && zprfp == aprfp)         << 1323         }// if(T_diff>0.1)
1631     {                                         << 1324 // End of multi-fragmentation
1632         unstable_nuclei(aprfp,                << 1325       mult7777:
1633                         zprfp,                << 1326 
1634                         &afpnew,              << 1327   // std::cout << "hola 100" << std::endl;
1635                         &zfpnew,              << 1328 
1636                         IOUNSTABLE,           << 1329 // Start basic de-excitation of fragments
1637                         VX_PREF,              << 1330       aprfp = idnint(aprf);
1638                         VY_PREF,              << 1331       zprfp = idnint(zprf);
1639                         VZ_PREF,              << 1332      
1640                         &VP1X,                << 1333       if(IMULTIFR == 0){
1641                         &VP1Y,                << 1334 // These momenta are in the frame of the projectile (or target in case of direct kinematics)
1642                         &VP1Z,                << 1335        VX_PREF = VX_incl;
1643                         EV_TAB_TEMP,          << 1336        VY_PREF = VY_incl;
1644                         &ILOOP);              << 1337        VZ_PREF = VZ_incl;
1645         af = G4double(afpnew);                << 1338       }
1646         zf = G4double(zfpnew);                << 1339 // Lambdas after multi-fragmentation
1647         VX_PREF = VP1X;                       << 1340       if(IMULTIFR == 1){
1648         VY_PREF = VP1Y;                       << 1341        NbLam0 = NbLamprf;
1649         VZ_PREF = VP1Z;                       << 1342       }
1650         for (G4int I = 0; I < ILOOP; I++)     << 1343 //
1651         {                                     << 1344 // CALL THE EVAPORATION SUBROUTINE
1652             for (G4int IJ = 0; IJ < 6; IJ++)  << 1345 //
1653                 EV_TAB[I + IEV_TAB][IJ] = EV_ << 1346       opt->optimfallowed = 1; //  IMF is allowed
1654         }                                     << 1347       fiss->ifis = 1;         //  fission is allowed
                                                   >> 1348       fimf=0;
                                                   >> 1349       ff=0;
                                                   >> 1350 
                                                   >> 1351 // To spare computing time; these events in any case cannot decay
                                                   >> 1352 //      IF(ZPRFP.LE.2.AND.ZPRFP.LT.APRFP)THEN FIXME: <= or <
                                                   >> 1353       if(zprfp<=2 && zprfp<aprfp){
                                                   >> 1354        zf = zprf;
                                                   >> 1355        af = aprf;
                                                   >> 1356        ee = 0.0;
                                                   >> 1357        ff = 0;
                                                   >> 1358        fimf = 0;
                                                   >> 1359        ftype = 0;
                                                   >> 1360        aimf = 0.0;
                                                   >> 1361        zimf = 0.0;
                                                   >> 1362        tkeimf = 0.0;
                                                   >> 1363        vx_eva = 0.0;
                                                   >> 1364        vy_eva = 0.0;
                                                   >> 1365        vz_eva = 0.0;
                                                   >> 1366        jprf0 = jprf;
                                                   >> 1367        goto a1972;
                                                   >> 1368        }
                                                   >> 1369 
                                                   >> 1370 //      if(ZPRFP.LE.2.AND.ZPRFP.EQ.APRFP)
                                                   >> 1371       if(zprfp<=2 && zprfp==aprfp){
                                                   >> 1372        unstable_nuclei(aprfp,zprfp,&afpnew,&zfpnew,IOUNSTABLE,
                                                   >> 1373        VX_PREF, VY_PREF, VZ_PREF,
                                                   >> 1374        &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
                                                   >> 1375          af = G4double(afpnew);
                                                   >> 1376          zf = G4double(zfpnew);
                                                   >> 1377          VX_PREF = VP1X;
                                                   >> 1378          VY_PREF = VP1Y;
                                                   >> 1379          VZ_PREF = VP1Z;
                                                   >> 1380          for(G4int I = 0;I<ILOOP;I++){
                                                   >> 1381           for(G4int IJ = 0; IJ<6; IJ++)
                                                   >> 1382            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
                                                   >> 1383          }
1655         IEV_TAB = IEV_TAB + ILOOP;               1384         IEV_TAB = IEV_TAB + ILOOP;
1656         ee = 0.0;                                1385         ee = 0.0;
1657         ff = 0;                                  1386         ff = 0;
1658         fimf = 0;                                1387         fimf = 0;
1659         ftype = 0;                               1388         ftype = 0;
1660         aimf = 0.0;                              1389         aimf = 0.0;
1661         zimf = 0.0;                              1390         zimf = 0.0;
1662         tkeimf = 0.0;                            1391         tkeimf = 0.0;
1663         vx_eva = 0.0;                            1392         vx_eva = 0.0;
1664         vy_eva = 0.0;                            1393         vy_eva = 0.0;
1665         vz_eva = 0.0;                            1394         vz_eva = 0.0;
1666         jprf0 = jprf;                            1395         jprf0 = jprf;
1667         goto a1972;                           << 1396        goto a1972;
1668     }                                         << 1397        }
1669                                                  1398 
1670     //      IF(ZPRFP.EQ.APRFP)THEN            << 1399 //      IF(ZPRFP.EQ.APRFP)THEN
1671     if (zprfp == aprfp)                       << 1400       if(zprfp==aprfp){
1672     {                                         << 1401        unstable_nuclei(aprfp,zprfp,&afpnew,&zfpnew,IOUNSTABLE,
1673         unstable_nuclei(aprfp,                << 1402        VX_PREF, VY_PREF, VZ_PREF,
1674                         zprfp,                << 1403        &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
1675                         &afpnew,              << 1404          af = G4double(afpnew);
1676                         &zfpnew,              << 1405          zf = G4double(zfpnew);
1677                         IOUNSTABLE,           << 1406          VX_PREF = VP1X;
1678                         VX_PREF,              << 1407          VY_PREF = VP1Y;
1679                         VY_PREF,              << 1408          VZ_PREF = VP1Z;
1680                         VZ_PREF,              << 1409          for(G4int I = 0;I<ILOOP;I++){
1681                         &VP1X,                << 1410           for(G4int IJ = 0; IJ<6; IJ++)
1682                         &VP1Y,                << 1411            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
1683                         &VP1Z,                << 1412          }
1684                         EV_TAB_TEMP,          << 
1685                         &ILOOP);              << 
1686         af = G4double(afpnew);                << 
1687         zf = G4double(zfpnew);                << 
1688         VX_PREF = VP1X;                       << 
1689         VY_PREF = VP1Y;                       << 
1690         VZ_PREF = VP1Z;                       << 
1691         for (G4int I = 0; I < ILOOP; I++)     << 
1692         {                                     << 
1693             for (G4int IJ = 0; IJ < 6; IJ++)  << 
1694                 EV_TAB[I + IEV_TAB][IJ] = EV_ << 
1695         }                                     << 
1696         IEV_TAB = IEV_TAB + ILOOP;               1413         IEV_TAB = IEV_TAB + ILOOP;
1697         ee = 0.0;                                1414         ee = 0.0;
1698         ff = 0;                                  1415         ff = 0;
1699         fimf = 0;                                1416         fimf = 0;
1700         ftype = 0;                               1417         ftype = 0;
1701         aimf = 0.0;                              1418         aimf = 0.0;
1702         zimf = 0.0;                              1419         zimf = 0.0;
1703         tkeimf = 0.0;                            1420         tkeimf = 0.0;
1704         vx_eva = 0.0;                            1421         vx_eva = 0.0;
1705         vy_eva = 0.0;                            1422         vy_eva = 0.0;
1706         vz_eva = 0.0;                            1423         vz_eva = 0.0;
1707         jprf0 = jprf;                            1424         jprf0 = jprf;
1708         goto a1972;                           << 1425        goto a1972;
1709     }                                         << 1426       }
1710     //                                        << 1427 //
1711     evapora(zprf,                             << 1428       evapora(zprf,aprf,&ee,jprf, &zf, &af, &mtota, &vz_eva, &vx_eva, &vy_eva, &ff, &fimf, &zimf, &aimf,&tkeimf, &jprf0, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLam0);
1712             aprf,                             << 1429 //
1713             &ee,                              << 1430                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1714             jprf,                             << 1431                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1715             &zf,                              << 1432                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1716             &af,                              << 1433                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1717             &mtota,                           << 1434 //
1718             &vz_eva,                          << 1435 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
1719             &vx_eva,                          << 1436 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
1720             &vy_eva,                          << 1437 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
1721             &ff,                              << 1438 // Lorentz transformation
1722             &fimf,                            << 1439                lorentz_boost(VX_PREF,VY_PREF,VZ_PREF,
1723             &zimf,                            << 1440                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1724             &aimf,                            << 1441                 &VXOUT,&VYOUT,&VZOUT);
1725             &tkeimf,                          << 1442                EV_TAB[IJ+IEV_TAB][2] = VXOUT;
1726             &jprf0,                           << 1443                EV_TAB[IJ+IEV_TAB][3] = VYOUT;
1727             &inttype,                         << 1444                EV_TAB[IJ+IEV_TAB][4] = VZOUT;
1728             &inum,                            << 1445                }
1729             EV_TEMP,                          << 1446                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1730             &IEV_TAB_TEMP,                    << 1447 
1731             &NbLam0);                         << 1448       a1972:
1732     //                                        << 1449 
1733     for (G4int IJ = 0; IJ < IEV_TAB_TEMP; IJ+ << 1450 // vi_pref - velocity of the prefragment; vi_eva - recoil due to evaporation
1734     {                                         << 1451       lorentz_boost(VX_PREF,VY_PREF,VZ_PREF,
1735         EV_TAB[IJ + IEV_TAB][0] = EV_TEMP[IJ] << 1452       vx_eva,vy_eva,vz_eva,
1736         EV_TAB[IJ + IEV_TAB][1] = EV_TEMP[IJ] << 1453       &VXOUT,&VYOUT,&VZOUT);
1737         EV_TAB[IJ + IEV_TAB][5] = EV_TEMP[IJ] << 1454       V_CM[0] = VXOUT;
1738         //                                    << 1455       V_CM[1] = VYOUT;
1739         //               EV_TAB(IJ+IEV_TAB,3) << 1456       V_CM[2] = VZOUT;
1740         //               EV_TAB(IJ+IEV_TAB,4) << 1457 //
1741         //               EV_TAB(IJ+IEV_TAB,5) << 1458       if(ff == 0 && fimf == 0){
1742         // Lorentz transformation             << 1459 // Evaporation of neutrons and LCP; no IMF, no fission
1743         lorentz_boost(                        << 1460       ftype = 0;
1744             VX_PREF, VY_PREF, VZ_PREF, EV_TEM << 1461       ZFP1 = idnint(zf);
1745         EV_TAB[IJ + IEV_TAB][2] = VXOUT;      << 1462       AFP1 = idnint(af);
1746         EV_TAB[IJ + IEV_TAB][3] = VYOUT;      << 1463       SFP1 = NbLam0;
1747         EV_TAB[IJ + IEV_TAB][4] = VZOUT;      << 1464       AFPIMF = 0;
1748     }                                         << 1465       ZFPIMF = 0;
1749     IEV_TAB = IEV_TAB + IEV_TAB_TEMP;         << 1466       SFPIMF = 0;
1750                                               << 1467       ZFP2 = 0;
1751 a1972:                                        << 1468       AFP2 = 0;
1752                                               << 1469       SFP2 = 0;
1753     // vi_pref - velocity of the prefragment; << 1470       VFP1_CM[0] = V_CM[0];
1754     lorentz_boost(VX_PREF, VY_PREF, VZ_PREF,  << 1471       VFP1_CM[1] = V_CM[1];
1755     V_CM[0] = VXOUT;                          << 1472       VFP1_CM[2] = V_CM[2];
1756     V_CM[1] = VYOUT;                          << 1473        for(G4int j=0;j<3;j++){
1757     V_CM[2] = VZOUT;                          << 1474         VIMF_CM[j] = 0.0;
1758     //                                        << 1475         VFP2_CM[j] = 0.0;
1759     if (ff == 0 && fimf == 0)                 << 1476        }
1760     {                                         << 1477       }
1761         // Evaporation of neutrons and LCP; n << 1478 //
1762         ftype = 0;                            << 1479       if(ff == 1 && fimf == 0) ftype = 1;     // fission
1763         ZFP1 = idnint(zf);                    << 1480       if(ff == 0 && fimf == 1) ftype = 2;     // IMF emission
1764         AFP1 = idnint(af);                    << 1481 //
1765         SFP1 = NbLam0;                        << 1482 // AFP,ZFP IS THE FINAL FRAGMENT IF NO FISSION OR IMF EMISSION OCCURS
1766         AFPIMF = 0;                           << 1483 // IN CASE OF FISSION IT IS THE NUCLEUS THAT UNDERGOES FISSION OR IMF
1767         ZFPIMF = 0;                           << 1484 //
1768         SFPIMF = 0;                           << 1485 
1769         ZFP2 = 0;                             << 1486 //***************** FISSION ***************************************
1770         AFP2 = 0;                             << 1487 //
1771         SFP2 = 0;                             << 1488     if(ftype == 1){
1772         VFP1_CM[0] = V_CM[0];                 << 1489     varntp->kfis = 1;
1773         VFP1_CM[1] = V_CM[1];                 << 1490     if(NbLam0>0)varntp->kfis = 20;
1774         VFP1_CM[2] = V_CM[2];                 << 1491    //   ftype1=0;
1775         for (G4int j = 0; j < 3; j++)         << 1492 
1776         {                                     << 1493       G4int IEV_TAB_FIS = 0,imode=0;
1777             VIMF_CM[j] = 0.0;                 << 1494 
1778             VFP2_CM[j] = 0.0;                 << 1495       G4double vx1_fission=0.,vy1_fission=0.,vz1_fission=0.;
1779         }                                     << 1496       G4double vx2_fission=0.,vy2_fission=0.,vz2_fission=0.;
1780     }                                         << 1497       G4double vx_eva_sc=0.,vy_eva_sc=0.,vz_eva_sc=0.;
1781     //                                        << 1498 
1782     if (ff == 1 && fimf == 0)                 << 1499       fission(af,zf,ee,jprf0,
1783         ftype = 1; // fission                 << 1500           &vx1_fission,&vy1_fission,&vz1_fission,
1784     if (ff == 0 && fimf == 1)                 << 1501           &vx2_fission,&vy2_fission,&vz2_fission,
1785         ftype = 2; // IMF emission            << 1502           &ZFP1,&AFP1,&SFP1,&ZFP2,&AFP2,&SFP2,&imode,
1786                    //                         << 1503           &vx_eva_sc,&vy_eva_sc,&vz_eva_sc,EV_TEMP,&IEV_TAB_FIS,&NbLam0);
1787     // AFP,ZFP IS THE FINAL FRAGMENT IF NO FI << 1504 
1788     // IN CASE OF FISSION IT IS THE NUCLEUS T << 1505                for(G4int IJ = 0; IJ< IEV_TAB_FIS;IJ++){ 
1789     //                                        << 1506                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1790                                               << 1507                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1791     //***************** FISSION ************* << 1508                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1792     //                                        << 1509 // Lorentz kinematics
1793     if (ftype == 1)                           << 1510 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
1794     {                                         << 1511 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
1795         varntp->kfis = 1;                     << 1512 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
1796         if (NbLam0 > 0)                       << 1513 // Lorentz transformation
1797             varntp->kfis = 20;                << 1514                lorentz_boost(V_CM[0],V_CM[1],V_CM[2],
1798         //   ftype1=0;                        << 1515                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1799                                               << 1516                 &VXOUT,&VYOUT,&VZOUT);
1800         G4int IEV_TAB_FIS = 0, imode = 0;     << 1517                EV_TAB[IJ+IEV_TAB][2] = VXOUT;
1801                                               << 1518                EV_TAB[IJ+IEV_TAB][3] = VYOUT;
1802         G4double vx1_fission = 0., vy1_fissio << 1519                EV_TAB[IJ+IEV_TAB][4] = VZOUT;
1803         G4double vx2_fission = 0., vy2_fissio << 1520                }
1804         G4double vx_eva_sc = 0., vy_eva_sc =  << 1521                IEV_TAB = IEV_TAB + IEV_TAB_FIS;
1805                                               << 1522 
1806         fission(af,                           << 1523     //  if(imode==1) ftype1 = 1;    // S1 mode
1807                 zf,                           << 1524     //  if(imode==2) ftype1 = 2;    // S2 mode
1808                 ee,                           << 1525 
1809                 jprf0,                        << 1526       AFPIMF = 0;
1810                 &vx1_fission,                 << 1527       ZFPIMF = 0;
1811                 &vy1_fission,                 << 1528       SFPIMF = 0;
1812                 &vz1_fission,                 << 1529 
1813                 &vx2_fission,                 << 1530 // VX_EVA_SC,VY_EVA_SC,VZ_EVA_SC - recoil due to particle emisison
1814                 &vy2_fission,                 << 1531 // between saddle and scission
1815                 &vz2_fission,                 << 1532 // Lorentz kinematics
1816                 &ZFP1,                        << 1533 //        VFP1_CM(1) = V_CM(1) + VX1_FISSION + VX_EVA_SC ! Velocity of FF1 in x
1817                 &AFP1,                        << 1534 //        VFP1_CM(2) = V_CM(2) + VY1_FISSION + VY_EVA_SC ! Velocity of FF1 in y
1818                 &SFP1,                        << 1535 //        VFP1_CM(3) = V_CM(3) + VZ1_FISSION + VZ_EVA_SC ! Velocity of FF1 in x
1819                 &ZFP2,                        << 1536         lorentz_boost(vx1_fission,vy1_fission,vz1_fission,
1820                 &AFP2,                        << 1537                 V_CM[0],V_CM[1],V_CM[2],
1821                 &SFP2,                        << 1538                 &VXOUT,&VYOUT,&VZOUT);
1822                 &imode,                       << 1539         lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
1823                 &vx_eva_sc,                   << 1540                 VXOUT,VYOUT,VZOUT,
1824                 &vy_eva_sc,                   << 1541                 &VX2OUT,&VY2OUT,&VZ2OUT);
1825                 &vz_eva_sc,                   << 
1826                 EV_TEMP,                      << 
1827                 &IEV_TAB_FIS,                 << 
1828                 &NbLam0);                     << 
1829                                               << 
1830         for (G4int IJ = 0; IJ < IEV_TAB_FIS;  << 
1831         {                                     << 
1832             EV_TAB[IJ + IEV_TAB][0] = EV_TEMP << 
1833             EV_TAB[IJ + IEV_TAB][1] = EV_TEMP << 
1834             EV_TAB[IJ + IEV_TAB][5] = EV_TEMP << 
1835             // Lorentz kinematics             << 
1836             //               EV_TAB(IJ+IEV_TA << 
1837             //               EV_TAB(IJ+IEV_TA << 
1838             //               EV_TAB(IJ+IEV_TA << 
1839             // Lorentz transformation         << 
1840             lorentz_boost(                    << 
1841                 V_CM[0], V_CM[1], V_CM[2], EV << 
1842             EV_TAB[IJ + IEV_TAB][2] = VXOUT;  << 
1843             EV_TAB[IJ + IEV_TAB][3] = VYOUT;  << 
1844             EV_TAB[IJ + IEV_TAB][4] = VZOUT;  << 
1845         }                                     << 
1846         IEV_TAB = IEV_TAB + IEV_TAB_FIS;      << 
1847                                               << 
1848         //  if(imode==1) ftype1 = 1;    // S1 << 
1849         //  if(imode==2) ftype1 = 2;    // S2 << 
1850                                               << 
1851         AFPIMF = 0;                           << 
1852         ZFPIMF = 0;                           << 
1853         SFPIMF = 0;                           << 
1854                                               << 
1855         // VX_EVA_SC,VY_EVA_SC,VZ_EVA_SC - re << 
1856         // between saddle and scission        << 
1857         // Lorentz kinematics                 << 
1858         //        VFP1_CM(1) = V_CM(1) + VX1_ << 
1859         //        in x VFP1_CM(2) = V_CM(2) + << 
1860         //        FF1 in y VFP1_CM(3) = V_CM( << 
1861         //        of FF1 in x                 << 
1862         lorentz_boost(vx1_fission, vy1_fissio << 
1863         lorentz_boost(vx_eva_sc, vy_eva_sc, v << 
1864         VFP1_CM[0] = VX2OUT;                     1542         VFP1_CM[0] = VX2OUT;
1865         VFP1_CM[1] = VY2OUT;                     1543         VFP1_CM[1] = VY2OUT;
1866         VFP1_CM[2] = VZ2OUT;                     1544         VFP1_CM[2] = VZ2OUT;
1867                                                  1545 
1868         // Lorentz kinematics                 << 1546 // Lorentz kinematics
1869         //        VFP2_CM(1) = V_CM(1) + VX2_ << 1547 //        VFP2_CM(1) = V_CM(1) + VX2_FISSION + VX_EVA_SC ! Velocity of FF2 in x
1870         //        in x VFP2_CM(2) = V_CM(2) + << 1548 //        VFP2_CM(2) = V_CM(2) + VY2_FISSION + VY_EVA_SC ! Velocity of FF2 in y
1871         //        FF2 in y VFP2_CM(3) = V_CM( << 1549 //        VFP2_CM(3) = V_CM(3) + VZ2_FISSION + VZ_EVA_SC ! Velocity of FF2 in x
1872         //        of FF2 in x                 << 1550         lorentz_boost(vx2_fission,vy2_fission,vz2_fission,
1873         lorentz_boost(vx2_fission, vy2_fissio << 1551                 V_CM[0],V_CM[1],V_CM[2],
1874         lorentz_boost(vx_eva_sc, vy_eva_sc, v << 1552                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 1553         lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
                                                   >> 1554                 VXOUT,VYOUT,VZOUT,
                                                   >> 1555                 &VX2OUT,&VY2OUT,&VZ2OUT);
1875         VFP2_CM[0] = VX2OUT;                     1556         VFP2_CM[0] = VX2OUT;
1876         VFP2_CM[1] = VY2OUT;                     1557         VFP2_CM[1] = VY2OUT;
1877         VFP2_CM[2] = VZ2OUT;                     1558         VFP2_CM[2] = VZ2OUT;
1878                                                  1559 
1879         //************** IMF EMISSION         << 1560 //************** IMF EMISSION ************************************************
1880         //*********************************** << 1561 //
1881         //                                    << 1562     }else if(ftype == 2){
1882     }                                         << 1563 // IMF emission: Heavy partner is allowed to fission and to emitt IMF, but ONLY once.
1883     else if (ftype == 2)                      << 1564       G4int FF11 = 0;
1884     {                                         << 1565       G4int FIMF11 = 0;
1885         // IMF emission: Heavy partner is all << 1566       opt->optimfallowed = 1;  //  IMF is allowed
1886         // ONLY once.                         << 1567       fiss->ifis = 1;          //  fission is allowed
1887         G4int FF11 = 0;                       << 1568 //  Lambda particles 
1888         G4int FIMF11 = 0;                     << 1569       G4int NbLamH=0;
1889         opt->optimfallowed = 1; //  IMF is al << 1570       G4int NbLamimf=0;
1890         fiss->ifis = 1;         //  fission i << 1571       G4double pbH = (af-zf) / (af-zf+aimf-zimf);
1891                                 //  Lambda pa << 1572       //double pbL = aimf / (af+aimf);  
1892         G4int NbLamH = 0;                     << 1573       for(G4int i=0;i<NbLam0;i++){
1893         G4int NbLamimf = 0;                   << 1574        if(G4AblaRandom::flat()<pbH){
1894         G4double pbH = (af - zf) / (af - zf + << 1575         NbLamH++;
1895         // double pbL = aimf / (af+aimf);     << 1576        }else{
1896         for (G4int i = 0; i < NbLam0; i++)    << 1577         NbLamimf++;
1897         {                                     << 1578        }
1898             if (G4AblaRandom::flat() < pbH)   << 1579       }
1899             {                                 << 1580 //
1900                 NbLamH++;                     << 1581 //  Velocities of IMF and partner: 1 denotes partner, 2 denotes IMF
1901             }                                 << 1582       G4double EkinR1 = tkeimf * aimf / (af+aimf);
1902             else                              << 1583       G4double EkinR2 = tkeimf * af / (af+aimf);
1903             {                                 << 1584       G4double V1 = std::sqrt(EkinR1/af) * 1.3887;
1904                 NbLamimf++;                   << 1585       G4double V2 = std::sqrt(EkinR2/aimf) * 1.3887;
1905             }                                 << 1586       G4double VZ1_IMF = (2.0 * G4AblaRandom::flat() - 1.0) * V1;
1906         }                                     << 1587       G4double VPERP1 = std::sqrt(V1*V1 - VZ1_IMF*VZ1_IMF);
1907         //                                    << 1588       G4double ALPHA1 = G4AblaRandom::flat() * 2. * 3.142;
1908         //  Velocities of IMF and partner: 1  << 1589       G4double VX1_IMF = VPERP1 * std::sin(ALPHA1);
1909         G4double EkinR1 = tkeimf * aimf / (af << 1590       G4double VY1_IMF = VPERP1 * std::cos(ALPHA1);
1910         G4double EkinR2 = tkeimf * af / (af + << 1591       G4double VX2_IMF = - VX1_IMF / V1 * V2;
1911         G4double V1 = std::sqrt(EkinR1 / af)  << 1592       G4double VY2_IMF = - VY1_IMF / V1 * V2;
1912         G4double V2 = std::sqrt(EkinR2 / aimf << 1593       G4double VZ2_IMF = - VZ1_IMF / V1 * V2;
1913         G4double VZ1_IMF = (2.0 * G4AblaRando << 1594 
1914         G4double VPERP1 = std::sqrt(V1 * V1 - << 1595       G4double EEIMFP = ee * af /(af + aimf);
1915         G4double ALPHA1 = G4AblaRandom::flat( << 1596       G4double EEIMF = ee * aimf /(af + aimf);
1916         G4double VX1_IMF = VPERP1 * std::sin( << 1597 
1917         G4double VY1_IMF = VPERP1 * std::cos( << 1598 // Decay of heavy partner
1918         G4double VX2_IMF = -VX1_IMF / V1 * V2 << 1599      G4double IINERTTOT = 0.40 * 931.490 * 1.160*1.160 *( std::pow(aimf,5.0/3.0) + std::pow(af,5.0/3.0)) + 931.490 * 1.160*1.160*aimf*af/(aimf+af)*(std::pow(aimf,1./3.) + std::pow(af,1./3.))*(std::pow(aimf,1./3.) + std::pow(af,1./3.));
1919         G4double VY2_IMF = -VY1_IMF / V1 * V2 << 1600 
1920         G4double VZ2_IMF = -VZ1_IMF / V1 * V2 << 1601      G4double JPRFHEAVY = jprf0 * 0.4 * 931.49 * 1.16*1.16 * std::pow(af,5.0/3.0) / IINERTTOT;
1921                                               << 1602      G4double JPRFLIGHT = jprf0 * 0.4 * 931.49 * 1.16*1.16 * std::pow(aimf,5.0/3.0) / IINERTTOT;
1922         G4double EEIMFP = ee * af / (af + aim << 1603      if(af<2.0) std::cout << "RN117-4,AF,ZF,EE,JPRFheavy" << std::endl;
1923         G4double EEIMF = ee * aimf / (af + ai << 1604 
1924                                               << 1605      G4double vx1ev_imf=0., vy1ev_imf=0., vz1ev_imf=0., zdummy=0., adummy=0., tkedummy=0.,jprf1=0.;
1925         // Decay of heavy partner             << 1606 
1926         G4double IINERTTOT = 0.40 * 931.490 * << 1607      evapora(zf,af,&EEIMFP,JPRFHEAVY, &zff, &aff, &mtota, &vz1ev_imf, &vx1ev_imf,&vy1ev_imf, &FF11, &FIMF11, &zdummy, &adummy,&tkedummy, &jprf1, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamH);
1927                              931.490 * 1.160  << 1608 
1928                                  (std::pow(ai << 1609                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1929                                  (std::pow(ai << 1610                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1930                                               << 1611                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1931         G4double JPRFHEAVY = jprf0 * 0.4 * 93 << 1612                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1932         G4double JPRFLIGHT = jprf0 * 0.4 * 93 << 1613 //
1933         if (af < 2.0)                         << 1614 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
1934             std::cout << "RN117-4,AF,ZF,EE,JP << 1615 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
1935                                               << 1616 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
1936         G4double vx1ev_imf = 0., vy1ev_imf =  << 1617 // Lorentz transformation
1937                                               << 1618                lorentz_boost(V_CM[0],V_CM[1],V_CM[2],
1938         evapora(zf,                           << 1619                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1939                 af,                           << 1620                 &VXOUT,&VYOUT,&VZOUT);
1940                 &EEIMFP,                      << 1621                lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
1941                 JPRFHEAVY,                    << 1622                 VXOUT,VYOUT,VZOUT,
1942                 &zff,                         << 1623                 &VX2OUT,&VY2OUT,&VZ2OUT);
1943                 &aff,                         << 1624                EV_TAB[IJ+IEV_TAB][2] = VX2OUT;
1944                 &mtota,                       << 1625                EV_TAB[IJ+IEV_TAB][3] = VY2OUT;
1945                 &vz1ev_imf,                   << 1626                EV_TAB[IJ+IEV_TAB][4] = VZ2OUT;
1946                 &vx1ev_imf,                   << 1627                }
1947                 &vy1ev_imf,                   << 1628                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1948                 &FF11,                        << 1629 
1949                 &FIMF11,                      << 1630 // For IMF - fission and IMF emission are not allowed
1950                 &zdummy,                      << 1631      G4int FF22 = 0;
1951                 &adummy,                      << 1632      G4int FIMF22 = 0;
1952                 &tkedummy,                    << 1633       opt->optimfallowed = 0; //  IMF is not allowed
1953                 &jprf1,                       << 1634       fiss->ifis = 0;         //  fission is not allowed
1954                 &inttype,                     << 1635 
1955                 &inum,                        << 1636 // Decay of IMF
1956                 EV_TEMP,                      << 1637      G4double zffimf, affimf,zdummy1=0., adummy1=0., tkedummy1=0.,jprf2,vx2ev_imf,vy2ev_imf,
1957                 &IEV_TAB_TEMP,                << 1638     vz2ev_imf;
1958                 &NbLamH);                     << 1639 
1959                                               << 1640      evapora(zimf,aimf,&EEIMF,JPRFLIGHT, &zffimf, &affimf, &mtota, &vz2ev_imf, &vx2ev_imf,&vy2ev_imf, &FF22, &FIMF22, &zdummy1, &adummy1,&tkedummy1, &jprf2, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamimf);
1960         for (G4int IJ = 0; IJ < IEV_TAB_TEMP; << 1641 
1961         {                                     << 1642                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
1962             EV_TAB[IJ + IEV_TAB][0] = EV_TEMP << 1643                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
1963             EV_TAB[IJ + IEV_TAB][1] = EV_TEMP << 1644                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
1964             EV_TAB[IJ + IEV_TAB][5] = EV_TEMP << 1645                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
1965             //                                << 1646 //
1966             //               EV_TAB(IJ+IEV_TA << 1647 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
1967             //               EV_TAB(IJ+IEV_TA << 1648 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
1968             //               EV_TAB(IJ+IEV_TA << 1649 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
1969             // Lorentz transformation         << 1650 // Lorentz transformation
1970             lorentz_boost(                    << 1651                lorentz_boost(V_CM[0],V_CM[1],V_CM[2],
1971                 V_CM[0], V_CM[1], V_CM[2], EV << 1652                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
1972             lorentz_boost(vx1ev_imf, vy1ev_im << 1653                 &VXOUT,&VYOUT,&VZOUT);
1973             EV_TAB[IJ + IEV_TAB][2] = VX2OUT; << 1654                lorentz_boost(VX2_IMF,VY2_IMF,VZ2_IMF,
1974             EV_TAB[IJ + IEV_TAB][3] = VY2OUT; << 1655                 VXOUT,VYOUT,VZOUT,
1975             EV_TAB[IJ + IEV_TAB][4] = VZ2OUT; << 1656                 &VX2OUT,&VY2OUT,&VZ2OUT);
1976         }                                     << 1657                EV_TAB[IJ+IEV_TAB][2] = VX2OUT;
1977         IEV_TAB = IEV_TAB + IEV_TAB_TEMP;     << 1658                EV_TAB[IJ+IEV_TAB][3] = VY2OUT;
1978                                               << 1659                EV_TAB[IJ+IEV_TAB][4] = VZ2OUT;
1979         // For IMF - fission and IMF emission << 1660                }
1980         G4int FF22 = 0;                       << 1661                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
1981         G4int FIMF22 = 0;                     << 1662 // As IMF is not allowed to emit IMF, adummy1=zdummy1=0
1982         opt->optimfallowed = 0; //  IMF is no << 1663 
1983         fiss->ifis = 0;         //  fission i << 1664       AFPIMF = idnint(affimf);
1984                                               << 1665       ZFPIMF = idnint(zffimf);
1985         // Decay of IMF                       << 1666       SFPIMF = NbLamimf;
1986         G4double zffimf, affimf, zdummy1 = 0. << 1667 
1987                                               << 1668 // vi1_imf, vi2_imf - velocities of imf and partner from TKE;
1988         evapora(zimf,                         << 1669 // vi1ev_imf, vi2_imf - recoil of partner and imf due to evaporation
1989                 aimf,                         << 1670 // Lorentz kinematics - DM 18/5/2010
1990                 &EEIMF,                       << 1671 //        VIMF_CM(1) = V_CM(1) + VX2_IMF + VX2EV_IMF
1991                 JPRFLIGHT,                    << 1672 //        VIMF_CM(2) = V_CM(2) + VY2_IMF + VY2EV_IMF
1992                 &zffimf,                      << 1673 //        VIMF_CM(3) = V_CM(3) + VZ2_IMF + VZ2EV_IMF
1993                 &affimf,                      << 1674         lorentz_boost(VX2_IMF,VY2_IMF,VZ2_IMF,
1994                 &mtota,                       << 1675                 V_CM[0],V_CM[1],V_CM[2],
1995                 &vz2ev_imf,                   << 1676                 &VXOUT,&VYOUT,&VZOUT);
1996                 &vx2ev_imf,                   << 1677         lorentz_boost(vx2ev_imf,vy2ev_imf,vz2ev_imf,
1997                 &vy2ev_imf,                   << 1678                 VXOUT,VYOUT,VZOUT,
1998                 &FF22,                        << 1679                 &VX2OUT,&VY2OUT,&VZ2OUT);
1999                 &FIMF22,                      << 
2000                 &zdummy1,                     << 
2001                 &adummy1,                     << 
2002                 &tkedummy1,                   << 
2003                 &jprf2,                       << 
2004                 &inttype,                     << 
2005                 &inum,                        << 
2006                 EV_TEMP,                      << 
2007                 &IEV_TAB_TEMP,                << 
2008                 &NbLamimf);                   << 
2009                                               << 
2010         for (G4int IJ = 0; IJ < IEV_TAB_TEMP; << 
2011         {                                     << 
2012             EV_TAB[IJ + IEV_TAB][0] = EV_TEMP << 
2013             EV_TAB[IJ + IEV_TAB][1] = EV_TEMP << 
2014             EV_TAB[IJ + IEV_TAB][5] = EV_TEMP << 
2015             //                                << 
2016             //               EV_TAB(IJ+IEV_TA << 
2017             //               EV_TAB(IJ+IEV_TA << 
2018             //               EV_TAB(IJ+IEV_TA << 
2019             // Lorentz transformation         << 
2020             lorentz_boost(                    << 
2021                 V_CM[0], V_CM[1], V_CM[2], EV << 
2022             lorentz_boost(VX2_IMF, VY2_IMF, V << 
2023             EV_TAB[IJ + IEV_TAB][2] = VX2OUT; << 
2024             EV_TAB[IJ + IEV_TAB][3] = VY2OUT; << 
2025             EV_TAB[IJ + IEV_TAB][4] = VZ2OUT; << 
2026         }                                     << 
2027         IEV_TAB = IEV_TAB + IEV_TAB_TEMP;     << 
2028         // As IMF is not allowed to emit IMF, << 
2029                                               << 
2030         AFPIMF = idnint(affimf);              << 
2031         ZFPIMF = idnint(zffimf);              << 
2032         SFPIMF = NbLamimf;                    << 
2033                                               << 
2034         // vi1_imf, vi2_imf - velocities of i << 
2035         // vi1ev_imf, vi2_imf - recoil of par << 
2036         // Lorentz kinematics - DM 18/5/2010  << 
2037         //        VIMF_CM(1) = V_CM(1) + VX2_ << 
2038         //        VIMF_CM(2) = V_CM(2) + VY2_ << 
2039         //        VIMF_CM(3) = V_CM(3) + VZ2_ << 
2040         lorentz_boost(VX2_IMF, VY2_IMF, VZ2_I << 
2041         lorentz_boost(vx2ev_imf, vy2ev_imf, v << 
2042         VIMF_CM[0] = VX2OUT;                     1680         VIMF_CM[0] = VX2OUT;
2043         VIMF_CM[1] = VY2OUT;                     1681         VIMF_CM[1] = VY2OUT;
2044         VIMF_CM[2] = VZ2OUT;                     1682         VIMF_CM[2] = VZ2OUT;
2045         // Lorentz kinematics                 << 1683 // Lorentz kinematics 
2046         //       VFP1_CM(1) = V_CM(1) + VX1_I << 1684 //       VFP1_CM(1) = V_CM(1) + VX1_IMF + VX1EV_IMF
2047         //       VFP1_CM(2) = V_CM(2) + VY1_I << 1685 //       VFP1_CM(2) = V_CM(2) + VY1_IMF + VY1EV_IMF
2048         //       VFP1_CM(3) = V_CM(3) + VZ1_I << 1686 //       VFP1_CM(3) = V_CM(3) + VZ1_IMF + VZ1EV_IMF
2049         lorentz_boost(VX1_IMF, VY1_IMF, VZ1_I << 1687         lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
2050         lorentz_boost(vx1ev_imf, vy1ev_imf, v << 1688                 V_CM[0],V_CM[1],V_CM[2],
                                                   >> 1689                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 1690         lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
                                                   >> 1691                 VXOUT,VYOUT,VZOUT,
                                                   >> 1692                 &VX2OUT,&VY2OUT,&VZ2OUT);
2051         VFP1_CM[0] = VX2OUT;                     1693         VFP1_CM[0] = VX2OUT;
2052         VFP1_CM[1] = VY2OUT;                     1694         VFP1_CM[1] = VY2OUT;
2053         VFP1_CM[2] = VZ2OUT;                     1695         VFP1_CM[2] = VZ2OUT;
2054                                                  1696 
2055         if (FF11 == 0 && FIMF11 == 0)         << 1697       if(FF11==0 && FIMF11==0){
2056         {                                     << 1698 // heavy partner deexcites by emission of light particles
2057             // heavy partner deexcites by emi << 1699       AFP1 = idnint(aff);
2058             AFP1 = idnint(aff);               << 1700       ZFP1 = idnint(zff);
2059             ZFP1 = idnint(zff);               << 1701       SFP1 = NbLamH;
2060             SFP1 = NbLamH;                    << 1702       ZFP2 = 0;
2061             ZFP2 = 0;                         << 1703       AFP2 = 0;
2062             AFP2 = 0;                         << 1704       SFP2 = 0;
2063             SFP2 = 0;                         << 1705       ftype = 2;
2064             ftype = 2;                        << 1706       AFPIMF = idnint(affimf);
2065             AFPIMF = idnint(affimf);          << 1707       ZFPIMF = idnint(zffimf);
2066             ZFPIMF = idnint(zffimf);          << 1708       SFPIMF = NbLamimf;
2067             SFPIMF = NbLamimf;                << 1709         for(G4int I=0;I<3;I++)
2068             for (G4int I = 0; I < 3; I++)     << 1710          VFP2_CM[I] = 0.0;
2069                 VFP2_CM[I] = 0.0;             << 1711 
2070         }                                     << 1712 
2071         else if (FF11 == 1 && FIMF11 == 0)    << 1713       } else if(FF11==1 && FIMF11==0){
2072         {                                     << 1714 // Heavy partner fissions
2073             // Heavy partner fissions         << 1715       varntp->kfis = 1;
2074             varntp->kfis = 1;                 << 1716       if(NbLam0>0)varntp->kfis = 20;
2075             if (NbLam0 > 0)                   << 1717 //
2076                 varntp->kfis = 20;            << 1718       opt->optimfallowed = 0; //  IMF is not allowed
2077             //                                << 1719       fiss->ifis = 0;         //  fission is not allowed
2078             opt->optimfallowed = 0; //  IMF i << 1720 //
2079             fiss->ifis = 0;         //  fissi << 1721       zf = zff;
2080                                     //        << 1722       af = aff;
2081             zf = zff;                         << 1723       ee = EEIMFP;
2082             af = aff;                         << 1724     //  ftype1=0;
2083             ee = EEIMFP;                      << 1725       ftype=21;
2084             //  ftype1=0;                     << 1726 
2085             ftype = 21;                       << 1727       G4int IEV_TAB_FIS = 0,imode=0;
2086                                               << 1728 
2087             G4int IEV_TAB_FIS = 0, imode = 0; << 1729       G4double vx1_fission=0.,vy1_fission=0.,vz1_fission=0.;
2088                                               << 1730       G4double vx2_fission=0.,vy2_fission=0.,vz2_fission=0.;
2089             G4double vx1_fission = 0., vy1_fi << 1731       G4double vx_eva_sc=0.,vy_eva_sc=0.,vz_eva_sc=0.;
2090             G4double vx2_fission = 0., vy2_fi << 1732 
2091             G4double vx_eva_sc = 0., vy_eva_s << 1733       fission(af,zf,ee,jprf1,
2092                                               << 1734           &vx1_fission,&vy1_fission,&vz1_fission,
2093             fission(af,                       << 1735           &vx2_fission,&vy2_fission,&vz2_fission,
2094                     zf,                       << 1736           &ZFP1,&AFP1,&SFP1,&ZFP2,&AFP2,&SFP2,&imode,
2095                     ee,                       << 1737           &vx_eva_sc,&vy_eva_sc,&vz_eva_sc,EV_TEMP,&IEV_TAB_FIS,&NbLamH);
2096                     jprf1,                    << 1738 
2097                     &vx1_fission,             << 1739                for(int IJ = 0; IJ< IEV_TAB_FIS;IJ++){ 
2098                     &vy1_fission,             << 1740                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
2099                     &vz1_fission,             << 1741                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
2100                     &vx2_fission,             << 1742                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
2101                     &vy2_fission,             << 1743 // Lorentz kinematics
2102                     &vz2_fission,             << 1744 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
2103                     &ZFP1,                    << 1745 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
2104                     &AFP1,                    << 1746 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
2105                     &SFP1,                    << 1747 // Lorentz transformation
2106                     &ZFP2,                    << 1748                lorentz_boost(VFP1_CM[0],VFP1_CM[1],VFP1_CM[2],
2107                     &AFP2,                    << 1749                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
2108                     &SFP2,                    << 1750                 &VXOUT,&VYOUT,&VZOUT);
2109                     &imode,                   << 1751                EV_TAB[IJ+IEV_TAB][2] = VXOUT;
2110                     &vx_eva_sc,               << 1752                EV_TAB[IJ+IEV_TAB][3] = VYOUT;
2111                     &vy_eva_sc,               << 1753                EV_TAB[IJ+IEV_TAB][4] = VZOUT;
2112                     &vz_eva_sc,               << 1754                }
2113                     EV_TEMP,                  << 1755                IEV_TAB = IEV_TAB + IEV_TAB_FIS;
2114                     &IEV_TAB_FIS,             << 1756 
2115                     &NbLamH);                 << 1757     //  if(imode==1) ftype1 = 1;    // S1 mode
2116                                               << 1758     //  if(imode==2) ftype1 = 2;    // S2 mode
2117             for (int IJ = 0; IJ < IEV_TAB_FIS << 1759 
2118             {                                 << 1760 // Lorentz kinematics
2119                 EV_TAB[IJ + IEV_TAB][0] = EV_ << 1761 //        VFP1_CM(1) = V_CM(1) + VX1_IMF + VX1EV_IMF + VX1_FISSION +
2120                 EV_TAB[IJ + IEV_TAB][1] = EV_ << 1762 //     &               VX_EVA_SC ! Velocity of FF1 in x
2121                 EV_TAB[IJ + IEV_TAB][5] = EV_ << 1763 //        VFP1_CM(2) = V_CM(2) + VY1_IMF + VY1EV_IMF + VY1_FISSION +
2122                 // Lorentz kinematics         << 1764 //     &               VY_EVA_SC ! Velocity of FF1 in y
2123                 //               EV_TAB(IJ+IE << 1765 //        VFP1_CM(3) = V_CM(3) + VZ1_IMF + VZ1EV_IMF + VZ1_FISSION +
2124                 //               EV_TAB(IJ+IE << 1766 //     &               VZ_EVA_SC ! Velocity of FF1 in x
2125                 //               EV_TAB(IJ+IE << 1767         lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
2126                 // Lorentz transformation     << 1768                 V_CM[0],V_CM[1],V_CM[2],
2127                 lorentz_boost(VFP1_CM[0],     << 1769                 &VXOUT,&VYOUT,&VZOUT);
2128                               VFP1_CM[1],     << 1770         lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
2129                               VFP1_CM[2],     << 1771                 VXOUT,VYOUT,VZOUT,
2130                               EV_TEMP[IJ][2], << 1772                 &VX2OUT,&VY2OUT,&VZ2OUT);
2131                               EV_TEMP[IJ][3], << 1773         lorentz_boost(vx1_fission,vy1_fission,vz1_fission,
2132                               EV_TEMP[IJ][4], << 1774                 VX2OUT,VY2OUT,VZ2OUT,
2133                               &VXOUT,         << 1775                 &VXOUT,&VYOUT,&VZOUT);
2134                               &VYOUT,         << 1776         lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
2135                               &VZOUT);        << 1777                 VXOUT,VYOUT,VZOUT,
2136                 EV_TAB[IJ + IEV_TAB][2] = VXO << 1778                 &VX2OUT,&VY2OUT,&VZ2OUT);
2137                 EV_TAB[IJ + IEV_TAB][3] = VYO << 1779         VFP1_CM[0] = VX2OUT;
2138                 EV_TAB[IJ + IEV_TAB][4] = VZO << 1780         VFP1_CM[1] = VY2OUT;
2139             }                                 << 1781         VFP1_CM[2] = VZ2OUT;
2140             IEV_TAB = IEV_TAB + IEV_TAB_FIS;  << 
2141                                                  1782 
2142             //  if(imode==1) ftype1 = 1;    / << 1783 // Lorentz kinematics
2143             //  if(imode==2) ftype1 = 2;    / << 1784 //        VFP2_CM(1) = V_CM(1) + VX1_IMF + VX1EV_IMF + VX2_FISSION +
                                                   >> 1785 //     &               VX_EVA_SC ! Velocity of FF2 in x
                                                   >> 1786 //        VFP2_CM(2) = V_CM(2) + VY1_IMF + VY1EV_IMF + VY2_FISSION +
                                                   >> 1787 //     &               VY_EVA_SC ! Velocity of FF2 in y
                                                   >> 1788 //        VFP2_CM(3) = V_CM(3) + VZ1_IMF + VZ1EV_IMF + VZ2_FISSION +
                                                   >> 1789 //     &               VZ_EVA_SC ! Velocity of FF2 in x
                                                   >> 1790         lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
                                                   >> 1791                 V_CM[0],V_CM[1],V_CM[2],
                                                   >> 1792                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 1793         lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
                                                   >> 1794                 VXOUT,VYOUT,VZOUT,
                                                   >> 1795                 &VX2OUT,&VY2OUT,&VZ2OUT);
                                                   >> 1796         lorentz_boost(vx2_fission,vy2_fission,vz2_fission,
                                                   >> 1797                 VX2OUT,VY2OUT,VZ2OUT,
                                                   >> 1798                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 1799         lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
                                                   >> 1800                 VXOUT,VYOUT,VZOUT,
                                                   >> 1801                 &VX2OUT,&VY2OUT,&VZ2OUT);
                                                   >> 1802         VFP2_CM[0] = VX2OUT;
                                                   >> 1803         VFP2_CM[1] = VY2OUT;
                                                   >> 1804         VFP2_CM[2] = VZ2OUT;
2144                                                  1805 
2145             // Lorentz kinematics             << 1806       } else if(FF11==0 && FIMF11==1){
2146             //        VFP1_CM(1) = V_CM(1) +  << 1807 // Heavy partner emits imf, consequtive imf emission or fission is not allowed
2147             //     &               VX_EVA_SC  << 1808       opt->optimfallowed = 0; //  IMF is not allowed
2148             //        VFP1_CM(2) = V_CM(2) +  << 1809       fiss->ifis = 0;         //  fission is not allowed
2149             //     &               VY_EVA_SC  << 1810 //
2150             //        VFP1_CM(3) = V_CM(3) +  << 1811       zf = zff;
2151             //     &               VZ_EVA_SC  << 1812       af = aff;
2152             lorentz_boost(VX1_IMF, VY1_IMF, V << 1813       ee = EEIMFP;
2153             lorentz_boost(vx1ev_imf, vy1ev_im << 1814       aimf = adummy;
2154             lorentz_boost(vx1_fission, vy1_fi << 1815       zimf = zdummy;
2155             lorentz_boost(vx_eva_sc, vy_eva_s << 1816       tkeimf = tkedummy;
2156             VFP1_CM[0] = VX2OUT;              << 1817       FF11 = 0;
2157             VFP1_CM[1] = VY2OUT;              << 1818       FIMF11 = 0;
2158             VFP1_CM[2] = VZ2OUT;              << 1819       ftype = 22;
2159                                               << 1820 //  Lambda particles 
2160             // Lorentz kinematics             << 1821       G4int NbLamH1=0;
2161             //        VFP2_CM(1) = V_CM(1) +  << 1822       G4int NbLamimf1=0;
2162             //     &               VX_EVA_SC  << 1823       G4double pbH1 = (af-zf) / (af-zf+aimf-zimf); 
2163             //        VFP2_CM(2) = V_CM(2) +  << 1824       for(G4int i=0;i<NbLamH;i++){
2164             //     &               VY_EVA_SC  << 1825        if(G4AblaRandom::flat()<pbH1){
2165             //        VFP2_CM(3) = V_CM(3) +  << 1826         NbLamH1++;
2166             //     &               VZ_EVA_SC  << 1827        }else{
2167             lorentz_boost(VX1_IMF, VY1_IMF, V << 1828         NbLamimf1++;
2168             lorentz_boost(vx1ev_imf, vy1ev_im << 1829        }
2169             lorentz_boost(vx2_fission, vy2_fi << 1830       }
2170             lorentz_boost(vx_eva_sc, vy_eva_s << 1831 //
2171             VFP2_CM[0] = VX2OUT;              << 1832 // Velocities of IMF and partner: 1 denotes partner, 2 denotes IMF
2172             VFP2_CM[1] = VY2OUT;              << 1833       EkinR1 = tkeimf * aimf / (af+aimf);
2173             VFP2_CM[2] = VZ2OUT;              << 1834       EkinR2 = tkeimf * af / (af+aimf);
2174         }                                     << 1835       V1 = std::sqrt(EkinR1/af) * 1.3887;
2175         else if (FF11 == 0 && FIMF11 == 1)    << 1836       V2 = std::sqrt(EkinR2/aimf) * 1.3887;
2176         {                                     << 1837       G4double VZ1_IMFS = (2.0 * G4AblaRandom::flat() - 1.0) * V1;
2177             // Heavy partner emits imf, conse << 1838              VPERP1 = std::sqrt(V1*V1 - VZ1_IMFS*VZ1_IMFS);
2178             // allowed                        << 1839              ALPHA1 = G4AblaRandom::flat() * 2. * 3.142;
2179             opt->optimfallowed = 0; //  IMF i << 1840       G4double VX1_IMFS = VPERP1 * std::sin(ALPHA1);
2180             fiss->ifis = 0;         //  fissi << 1841       G4double VY1_IMFS = VPERP1 * std::cos(ALPHA1);
2181                                     //        << 1842       G4double VX2_IMFS = - VX1_IMFS / V1 * V2;
2182             zf = zff;                         << 1843       G4double VY2_IMFS = - VY1_IMFS / V1 * V2;
2183             af = aff;                         << 1844       G4double VZ2_IMFS = - VZ1_IMFS / V1 * V2;
2184             ee = EEIMFP;                      << 1845 
2185             aimf = adummy;                    << 1846              EEIMFP = ee * af /(af + aimf);
2186             zimf = zdummy;                    << 1847              EEIMF = ee * aimf /(af + aimf);
2187             tkeimf = tkedummy;                << 1848 
2188             FF11 = 0;                         << 1849 // Decay of heavy partner
2189             FIMF11 = 0;                       << 1850       IINERTTOT = 0.40 * 931.490 * 1.160*1.160 *( std::pow(aimf,5.0/3.0) + std::pow(af,5.0/3.0)) + 931.490 * 1.160*1.160*aimf*af/(aimf+af)*(std::pow(aimf,1./3.) + std::pow(af,1./3.))*(std::pow(aimf,1./3.) + std::pow(af,1./3.));
2190             ftype = 22;                       << 1851 
2191             //  Lambda particles              << 1852       JPRFHEAVY = jprf1 * 0.4 * 931.49 * 1.16*1.16 * std::pow(af,5.0/3.0) / IINERTTOT;
2192             G4int NbLamH1 = 0;                << 1853       JPRFLIGHT = jprf1 * 0.4 * 931.49 * 1.16*1.16 * std::pow(aimf,5.0/3.0) / IINERTTOT;
2193             G4int NbLamimf1 = 0;              << 1854 
2194             G4double pbH1 = (af - zf) / (af - << 1855      G4double zffs=0.,affs=0.,vx1ev_imfs=0.,vy1ev_imfs=0.,vz1ev_imfs=0.,jprf3=0.;
2195             for (G4int i = 0; i < NbLamH; i++ << 1856 
2196             {                                 << 1857      evapora(zf,af,&EEIMFP,JPRFHEAVY, &zffs, &affs, &mtota, &vz1ev_imfs, &vx1ev_imfs,&vy1ev_imfs, &FF11, &FIMF11, &zdummy, &adummy,&tkedummy, &jprf3, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamH1);
2197                 if (G4AblaRandom::flat() < pb << 1858 
2198                 {                             << 1859                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
2199                     NbLamH1++;                << 1860                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
2200                 }                             << 1861                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
2201                 else                          << 1862                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
2202                 {                             << 1863 //
2203                     NbLamimf1++;              << 1864 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
2204                 }                             << 1865 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
2205             }                                 << 1866 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
2206             //                                << 1867 // Lorentz transformation
2207             // Velocities of IMF and partner: << 1868                lorentz_boost(VFP1_CM[0],VFP1_CM[1],VFP1_CM[2],
2208             EkinR1 = tkeimf * aimf / (af + ai << 1869                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
2209             EkinR2 = tkeimf * af / (af + aimf << 1870                 &VXOUT,&VYOUT,&VZOUT);
2210             V1 = std::sqrt(EkinR1 / af) * 1.3 << 1871                lorentz_boost(vx1ev_imfs,vy1ev_imfs,vz1ev_imfs,
2211             V2 = std::sqrt(EkinR2 / aimf) * 1 << 1872                 VXOUT,VYOUT,VZOUT,
2212             G4double VZ1_IMFS = (2.0 * G4Abla << 1873                 &VX2OUT,&VY2OUT,&VZ2OUT);
2213             VPERP1 = std::sqrt(V1 * V1 - VZ1_ << 1874                EV_TAB[IJ+IEV_TAB][2] = VX2OUT;
2214             ALPHA1 = G4AblaRandom::flat() * 2 << 1875                EV_TAB[IJ+IEV_TAB][3] = VY2OUT;
2215             G4double VX1_IMFS = VPERP1 * std: << 1876                EV_TAB[IJ+IEV_TAB][4] = VZ2OUT;
2216             G4double VY1_IMFS = VPERP1 * std: << 1877                }
2217             G4double VX2_IMFS = -VX1_IMFS / V << 1878                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
2218             G4double VY2_IMFS = -VY1_IMFS / V << 1879 
2219             G4double VZ2_IMFS = -VZ1_IMFS / V << 1880 // For IMF - fission and IMF emission are not allowed
2220                                               << 1881       opt->optimfallowed = 0; //  IMF is not allowed
2221             EEIMFP = ee * af / (af + aimf);   << 1882       fiss->ifis = 0;         //  fission is not allowed
2222             EEIMF = ee * aimf / (af + aimf);  << 1883 //
2223                                               << 1884       FF22 = 0;
2224             // Decay of heavy partner         << 1885       FIMF22 = 0;
2225             IINERTTOT = 0.40 * 931.490 * 1.16 << 1886 // Decay of "second" IMF
2226                         931.490 * 1.160 * 1.1 << 1887      G4double zffimfs=0.,affimfs=0.,vx2ev_imfs=0.,vy2ev_imfs=0.,vz2ev_imfs=0.,jprf4=0.;
2227                             (std::pow(aimf, 1 << 1888 
2228                             (std::pow(aimf, 1 << 1889      evapora(zimf,aimf,&EEIMF,JPRFLIGHT, &zffimfs, &affimfs, &mtota, &vz2ev_imfs, &vx2ev_imfs,&vy2ev_imfs, &FF22, &FIMF22, &zdummy1, &adummy1,&tkedummy1, &jprf4, &inttype, &inum,EV_TEMP,&IEV_TAB_TEMP,&NbLamimf1);
2229                                               << 1890 
2230             JPRFHEAVY = jprf1 * 0.4 * 931.49  << 1891                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
2231             JPRFLIGHT = jprf1 * 0.4 * 931.49  << 1892                EV_TAB[IJ+IEV_TAB][0] = EV_TEMP[IJ][0];
2232                                               << 1893                EV_TAB[IJ+IEV_TAB][1] = EV_TEMP[IJ][1];
2233             G4double zffs = 0., affs = 0., vx << 1894                EV_TAB[IJ+IEV_TAB][5] = EV_TEMP[IJ][5];
2234                                               << 1895 //
2235             evapora(zf,                       << 1896 //               EV_TAB(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
2236                     af,                       << 1897 //               EV_TAB(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
2237                     &EEIMFP,                  << 1898 //               EV_TAB(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
2238                     JPRFHEAVY,                << 1899 // Lorentz transformation
2239                     &zffs,                    << 1900                lorentz_boost(VFP1_CM[0],VFP1_CM[1],VFP1_CM[2],
2240                     &affs,                    << 1901                 EV_TEMP[IJ][2],EV_TEMP[IJ][3],EV_TEMP[IJ][4],
2241                     &mtota,                   << 1902                 &VXOUT,&VYOUT,&VZOUT);
2242                     &vz1ev_imfs,              << 1903                lorentz_boost(vx2ev_imfs,vy2ev_imfs,vz2ev_imfs,
2243                     &vx1ev_imfs,              << 1904                 VXOUT,VYOUT,VZOUT,
2244                     &vy1ev_imfs,              << 1905                 &VX2OUT,&VY2OUT,&VZ2OUT);
2245                     &FF11,                    << 1906                EV_TAB[IJ+IEV_TAB][2] = VX2OUT;
2246                     &FIMF11,                  << 1907                EV_TAB[IJ+IEV_TAB][3] = VY2OUT;
2247                     &zdummy,                  << 1908                EV_TAB[IJ+IEV_TAB][4] = VZ2OUT;
2248                     &adummy,                  << 1909                }
2249                     &tkedummy,                << 1910                IEV_TAB = IEV_TAB + IEV_TAB_TEMP;
2250                     &jprf3,                   << 1911 
2251                     &inttype,                 << 1912       AFP1 = idnint(affs);
2252                     &inum,                    << 1913       ZFP1 = idnint(zffs);
2253                     EV_TEMP,                  << 1914       SFP1 = NbLamH1;
2254                     &IEV_TAB_TEMP,            << 1915       ZFP2 = idnint(zffimfs);
2255                     &NbLamH1);                << 1916       AFP2 = idnint(affimfs);
2256                                               << 1917       SFP2 = NbLamimf1;
2257             for (G4int IJ = 0; IJ < IEV_TAB_T << 1918 
2258             {                                 << 1919 // Velocity of final heavy residue
2259                 EV_TAB[IJ + IEV_TAB][0] = EV_ << 1920 // Lorentz kinematics 
2260                 EV_TAB[IJ + IEV_TAB][1] = EV_ << 1921 //       VFP1_CM(1) = V_CM(1) + VX1_IMF + VX1EV_IMF
2261                 EV_TAB[IJ + IEV_TAB][5] = EV_ << 1922 //       VFP1_CM(2) = V_CM(2) + VY1_IMF + VY1EV_IMF
2262                 //                            << 1923 //       VFP1_CM(3) = V_CM(3) + VZ1_IMF + VZ1EV_IMF
2263                 //               EV_TAB(IJ+IE << 1924         lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
2264                 //               EV_TAB(IJ+IE << 1925                 V_CM[0],V_CM[1],V_CM[2],
2265                 //               EV_TAB(IJ+IE << 1926                 &VXOUT,&VYOUT,&VZOUT);
2266                 // Lorentz transformation     << 1927                lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
2267                 lorentz_boost(VFP1_CM[0],     << 1928                 VXOUT,VYOUT,VZOUT,
2268                               VFP1_CM[1],     << 1929                 &VX2OUT,&VY2OUT,&VZ2OUT);
2269                               VFP1_CM[2],     << 1930                lorentz_boost(VX1_IMFS,VY1_IMFS,VZ1_IMFS,
2270                               EV_TEMP[IJ][2], << 1931                 VX2OUT,VY2OUT,VZ2OUT,
2271                               EV_TEMP[IJ][3], << 1932                 &VXOUT,&VYOUT,&VZOUT);
2272                               EV_TEMP[IJ][4], << 1933                lorentz_boost(vx1ev_imfs,vy1ev_imfs,vz1ev_imfs,
2273                               &VXOUT,         << 1934                 VXOUT,VYOUT,VZOUT,
2274                               &VYOUT,         << 1935                 &VX2OUT,&VY2OUT,&VZ2OUT);
2275                               &VZOUT);        << 1936         VFP1_CM[0] = VX2OUT;
2276                 lorentz_boost(vx1ev_imfs, vy1 << 1937         VFP1_CM[1] = VY2OUT;
2277                 EV_TAB[IJ + IEV_TAB][2] = VX2 << 1938         VFP1_CM[2] = VZ2OUT;
2278                 EV_TAB[IJ + IEV_TAB][3] = VY2 << 
2279                 EV_TAB[IJ + IEV_TAB][4] = VZ2 << 
2280             }                                 << 
2281             IEV_TAB = IEV_TAB + IEV_TAB_TEMP; << 
2282                                                  1939 
2283             // For IMF - fission and IMF emis << 1940 // Velocity of the second IMF
2284             opt->optimfallowed = 0; //  IMF i << 1941 // Lorentz kinematics 
2285             fiss->ifis = 0;         //  fissi << 1942 //       VFP1_CM(1) = V_CM(1) + VX1_IMF + VX1EV_IMF
2286                                     //        << 1943 //       VFP1_CM(2) = V_CM(2) + VY1_IMF + VY1EV_IMF
2287             FF22 = 0;                         << 1944 //       VFP1_CM(3) = V_CM(3) + VZ1_IMF + VZ1EV_IMF
2288             FIMF22 = 0;                       << 1945         lorentz_boost(VX1_IMF,VY1_IMF,VZ1_IMF,
2289             // Decay of "second" IMF          << 1946                 V_CM[0],V_CM[1],V_CM[2],
2290             G4double zffimfs = 0., affimfs =  << 1947                 &VXOUT,&VYOUT,&VZOUT);
2291                                               << 1948                lorentz_boost(vx1ev_imf,vy1ev_imf,vz1ev_imf,
2292             evapora(zimf,                     << 1949                 VXOUT,VYOUT,VZOUT,
2293                     aimf,                     << 1950                 &VX2OUT,&VY2OUT,&VZ2OUT);
2294                     &EEIMF,                   << 1951                lorentz_boost(VX2_IMFS,VY2_IMFS,VZ2_IMFS,
2295                     JPRFLIGHT,                << 1952                 VX2OUT,VY2OUT,VZ2OUT,
2296                     &zffimfs,                 << 1953                 &VXOUT,&VYOUT,&VZOUT);
2297                     &affimfs,                 << 1954                lorentz_boost(vx2ev_imfs,vy2ev_imfs,vz2ev_imfs,
2298                     &mtota,                   << 1955                 VXOUT,VYOUT,VZOUT,
2299                     &vz2ev_imfs,              << 1956                 &VX2OUT,&VY2OUT,&VZ2OUT);
2300                     &vx2ev_imfs,              << 1957         VFP2_CM[0] = VX2OUT;
2301                     &vy2ev_imfs,              << 1958         VFP2_CM[1] = VY2OUT;
2302                     &FF22,                    << 1959         VFP2_CM[2] = VZ2OUT;
2303                     &FIMF22,                  << 1960       }//second decay
2304                     &zdummy1,                 << 1961     }// if(ftype == 2)
2305                     &adummy1,                 << 
2306                     &tkedummy1,               << 
2307                     &jprf4,                   << 
2308                     &inttype,                 << 
2309                     &inum,                    << 
2310                     EV_TEMP,                  << 
2311                     &IEV_TAB_TEMP,            << 
2312                     &NbLamimf1);              << 
2313                                               << 
2314             for (G4int IJ = 0; IJ < IEV_TAB_T << 
2315             {                                 << 
2316                 EV_TAB[IJ + IEV_TAB][0] = EV_ << 
2317                 EV_TAB[IJ + IEV_TAB][1] = EV_ << 
2318                 EV_TAB[IJ + IEV_TAB][5] = EV_ << 
2319                 //                            << 
2320                 //               EV_TAB(IJ+IE << 
2321                 //               EV_TAB(IJ+IE << 
2322                 //               EV_TAB(IJ+IE << 
2323                 // Lorentz transformation     << 
2324                 lorentz_boost(VFP1_CM[0],     << 
2325                               VFP1_CM[1],     << 
2326                               VFP1_CM[2],     << 
2327                               EV_TEMP[IJ][2], << 
2328                               EV_TEMP[IJ][3], << 
2329                               EV_TEMP[IJ][4], << 
2330                               &VXOUT,         << 
2331                               &VYOUT,         << 
2332                               &VZOUT);        << 
2333                 lorentz_boost(vx2ev_imfs, vy2 << 
2334                 EV_TAB[IJ + IEV_TAB][2] = VX2 << 
2335                 EV_TAB[IJ + IEV_TAB][3] = VY2 << 
2336                 EV_TAB[IJ + IEV_TAB][4] = VZ2 << 
2337             }                                 << 
2338             IEV_TAB = IEV_TAB + IEV_TAB_TEMP; << 
2339                                                  1962 
2340             AFP1 = idnint(affs);              << 1963 // Only evaporation of light particles
2341             ZFP1 = idnint(zffs);              << 1964     if(ftype!=1 && ftype!=21){
2342             SFP1 = NbLamH1;                   << 
2343             ZFP2 = idnint(zffimfs);           << 
2344             AFP2 = idnint(affimfs);           << 
2345             SFP2 = NbLamimf1;                 << 
2346                                               << 
2347             // Velocity of final heavy residu << 
2348             // Lorentz kinematics             << 
2349             //       VFP1_CM(1) = V_CM(1) + V << 
2350             //       VFP1_CM(2) = V_CM(2) + V << 
2351             //       VFP1_CM(3) = V_CM(3) + V << 
2352             lorentz_boost(VX1_IMF, VY1_IMF, V << 
2353             lorentz_boost(vx1ev_imf, vy1ev_im << 
2354             lorentz_boost(VX1_IMFS, VY1_IMFS, << 
2355             lorentz_boost(vx1ev_imfs, vy1ev_i << 
2356             VFP1_CM[0] = VX2OUT;              << 
2357             VFP1_CM[1] = VY2OUT;              << 
2358             VFP1_CM[2] = VZ2OUT;              << 
2359                                               << 
2360             // Velocity of the second IMF     << 
2361             // Lorentz kinematics             << 
2362             //       VFP1_CM(1) = V_CM(1) + V << 
2363             //       VFP1_CM(2) = V_CM(2) + V << 
2364             //       VFP1_CM(3) = V_CM(3) + V << 
2365             lorentz_boost(VX1_IMF, VY1_IMF, V << 
2366             lorentz_boost(vx1ev_imf, vy1ev_im << 
2367             lorentz_boost(VX2_IMFS, VY2_IMFS, << 
2368             lorentz_boost(vx2ev_imfs, vy2ev_i << 
2369             VFP2_CM[0] = VX2OUT;              << 
2370             VFP2_CM[1] = VY2OUT;              << 
2371             VFP2_CM[2] = VZ2OUT;              << 
2372         } // second decay                     << 
2373     }     // if(ftype == 2)                   << 
2374                                               << 
2375     // Only evaporation of light particles    << 
2376     if (ftype != 1 && ftype != 21)            << 
2377     {                                         << 
2378                                               << 
2379         // ----------- RESOLVE UNSTABLE NUCLE << 
2380         IOUNSTABLE = 0;                       << 
2381                                               << 
2382         unstable_nuclei(AFP1,                 << 
2383                         ZFP1,                 << 
2384                         &afpnew,              << 
2385                         &zfpnew,              << 
2386                         IOUNSTABLE,           << 
2387                         VFP1_CM[0],           << 
2388                         VFP1_CM[1],           << 
2389                         VFP1_CM[2],           << 
2390                         &VP1X,                << 
2391                         &VP1Y,                << 
2392                         &VP1Z,                << 
2393                         EV_TAB_TEMP,          << 
2394                         &ILOOP);              << 
2395                                               << 
2396         if (IOUNSTABLE == 1)                  << 
2397         {                                     << 
2398             AFP1 = afpnew;                    << 
2399             ZFP1 = zfpnew;                    << 
2400             VFP1_CM[0] = VP1X;                << 
2401             VFP1_CM[1] = VP1Y;                << 
2402             VFP1_CM[2] = VP1Z;                << 
2403             for (G4int I = 0; I < ILOOP; I++) << 
2404             {                                 << 
2405                 for (G4int IJ = 0; IJ < 5; IJ << 
2406                     EV_TAB[I + IEV_TAB][IJ] = << 
2407             }                                 << 
2408             IEV_TAB = IEV_TAB + ILOOP;        << 
2409         }                                     << 
2410                                                  1965 
2411         if (ftype > 1)                        << 1966 // ----------- RESOLVE UNSTABLE NUCLEI
2412         {                                     << 1967       IOUNSTABLE=0;
2413             IOUNSTABLE = 0;                   << 
2414                                               << 
2415             unstable_nuclei(AFPIMF,           << 
2416                             ZFPIMF,           << 
2417                             &afpnew,          << 
2418                             &zfpnew,          << 
2419                             IOUNSTABLE,       << 
2420                             VIMF_CM[0],       << 
2421                             VIMF_CM[1],       << 
2422                             VIMF_CM[2],       << 
2423                             &VP1X,            << 
2424                             &VP1Y,            << 
2425                             &VP1Z,            << 
2426                             EV_TAB_TEMP,      << 
2427                             &ILOOP);          << 
2428                                               << 
2429             if (IOUNSTABLE == 1)              << 
2430             {                                 << 
2431                 AFPIMF = afpnew;              << 
2432                 ZFPIMF = zfpnew;              << 
2433                 VIMF_CM[0] = VP1X;            << 
2434                 VIMF_CM[1] = VP1Y;            << 
2435                 VIMF_CM[2] = VP1Z;            << 
2436                 for (G4int I = 0; I < ILOOP;  << 
2437                 {                             << 
2438                     for (G4int IJ = 0; IJ < 5 << 
2439                         EV_TAB[I + IEV_TAB][I << 
2440                 }                             << 
2441                 IEV_TAB = IEV_TAB + ILOOP;    << 
2442             }                                 << 
2443                                                  1968 
2444             if (ftype > 2)                    << 1969       unstable_nuclei(AFP1,ZFP1,&afpnew,&zfpnew,IOUNSTABLE,
2445             {                                 << 1970        VFP1_CM[0],VFP1_CM[1],VFP1_CM[2],
2446                 IOUNSTABLE = 0;               << 1971        &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
2447                                               << 1972 
2448                 unstable_nuclei(AFP2,         << 1973       if(IOUNSTABLE==1){
2449                                 ZFP2,         << 1974       AFP1 = afpnew;
2450                                 &afpnew,      << 1975       ZFP1 = zfpnew;
2451                                 &zfpnew,      << 1976       VFP1_CM[0] = VP1X;
2452                                 IOUNSTABLE,   << 1977       VFP1_CM[1] = VP1Y;
2453                                 VFP2_CM[0],   << 1978       VFP1_CM[2] = VP1Z;
2454                                 VFP2_CM[1],   << 1979          for(G4int I = 0;I<ILOOP;I++){
2455                                 VFP2_CM[2],   << 1980           for(G4int IJ = 0; IJ<5; IJ++)
2456                                 &VP1X,        << 1981            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
2457                                 &VP1Y,        << 1982          }
2458                                 &VP1Z,        << 1983         IEV_TAB = IEV_TAB + ILOOP;
2459                                 EV_TAB_TEMP,  << 1984       }
2460                                 &ILOOP);      << 
2461                                               << 
2462                 if (IOUNSTABLE == 1)          << 
2463                 {                             << 
2464                     AFP2 = afpnew;            << 
2465                     ZFP2 = zfpnew;            << 
2466                     VFP2_CM[0] = VP1X;        << 
2467                     VFP2_CM[1] = VP1Y;        << 
2468                     VFP2_CM[2] = VP1Z;        << 
2469                     for (G4int I = 0; I < ILO << 
2470                     {                         << 
2471                         for (G4int IJ = 0; IJ << 
2472                             EV_TAB[I + IEV_TA << 
2473                     }                         << 
2474                     IEV_TAB = IEV_TAB + ILOOP << 
2475                 }                             << 
2476             } // ftype>2                      << 
2477         }     // ftype>1                      << 
2478     }                                         << 
2479                                                  1985 
2480     // For the case of fission:               << 1986       if(ftype>1){
2481     if (ftype == 1 || ftype == 21)            << 1987        IOUNSTABLE=0;
2482     {                                         << 
2483         // ----------- RESOLVE UNSTABLE NUCLE << 
2484         IOUNSTABLE = 0;                       << 
2485         // ----------- Fragment 1             << 
2486         unstable_nuclei(AFP1,                 << 
2487                         ZFP1,                 << 
2488                         &afpnew,              << 
2489                         &zfpnew,              << 
2490                         IOUNSTABLE,           << 
2491                         VFP1_CM[0],           << 
2492                         VFP1_CM[1],           << 
2493                         VFP1_CM[2],           << 
2494                         &VP1X,                << 
2495                         &VP1Y,                << 
2496                         &VP1Z,                << 
2497                         EV_TAB_TEMP,          << 
2498                         &ILOOP);              << 
2499                                               << 
2500         if (IOUNSTABLE == 1)                  << 
2501         {                                     << 
2502             AFP1 = afpnew;                    << 
2503             ZFP1 = zfpnew;                    << 
2504             VFP1_CM[0] = VP1X;                << 
2505             VFP1_CM[1] = VP1Y;                << 
2506             VFP1_CM[2] = VP1Z;                << 
2507             for (G4int I = 0; I < ILOOP; I++) << 
2508             {                                 << 
2509                 for (G4int IJ = 0; IJ < 5; IJ << 
2510                     EV_TAB[I + IEV_TAB][IJ] = << 
2511             }                                 << 
2512             IEV_TAB = IEV_TAB + ILOOP;        << 
2513         }                                     << 
2514                                                  1988 
2515         IOUNSTABLE = 0;                       << 1989        unstable_nuclei(AFPIMF,ZFPIMF,&afpnew,&zfpnew,IOUNSTABLE,
2516         // ----------- Fragment 2             << 1990         VIMF_CM[0],VIMF_CM[1],VIMF_CM[2],
2517         unstable_nuclei(AFP2,                 << 1991         &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
2518                         ZFP2,                 << 1992 
2519                         &afpnew,              << 1993         if(IOUNSTABLE==1){
2520                         &zfpnew,              << 1994         AFPIMF = afpnew;
2521                         IOUNSTABLE,           << 1995         ZFPIMF = zfpnew;
2522                         VFP2_CM[0],           << 1996         VIMF_CM[0] = VP1X;
2523                         VFP2_CM[1],           << 1997         VIMF_CM[1] = VP1Y;
2524                         VFP2_CM[2],           << 1998         VIMF_CM[2] = VP1Z;
2525                         &VP1X,                << 1999          for(G4int I = 0;I<ILOOP;I++){
2526                         &VP1Y,                << 2000           for(G4int IJ = 0; IJ<5; IJ++)
2527                         &VP1Z,                << 2001            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
2528                         EV_TAB_TEMP,          << 2002          }
2529                         &ILOOP);              << 2003         IEV_TAB = IEV_TAB + ILOOP;
2530                                               << 
2531         if (IOUNSTABLE == 1)                  << 
2532         {                                     << 
2533             AFP2 = afpnew;                    << 
2534             ZFP2 = zfpnew;                    << 
2535             VFP2_CM[0] = VP1X;                << 
2536             VFP2_CM[1] = VP1Y;                << 
2537             VFP2_CM[2] = VP1Z;                << 
2538             for (G4int I = 0; I < ILOOP; I++) << 
2539             {                                 << 
2540                 for (G4int IJ = 0; IJ < 5; IJ << 
2541                     EV_TAB[I + IEV_TAB][IJ] = << 
2542             }                                 << 
2543             IEV_TAB = IEV_TAB + ILOOP;        << 
2544         }                                        2004         }
2545                                                  2005 
2546         if (ftype == 21)                      << 2006        if(ftype>2){
2547         {                                     << 2007         IOUNSTABLE=0;
2548             IOUNSTABLE = 0;                   << 2008 
2549             // ----------- Fragment IMF       << 2009         unstable_nuclei(AFP2,ZFP2,&afpnew,&zfpnew,IOUNSTABLE,
2550             unstable_nuclei(AFPIMF,           << 2010         VFP2_CM[0],VFP2_CM[1],VFP2_CM[2],
2551                             ZFPIMF,           << 2011         &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
2552                             &afpnew,          << 2012 
2553                             &zfpnew,          << 2013         if(IOUNSTABLE==1){
2554                             IOUNSTABLE,       << 2014         AFP2 = afpnew;
2555                             VIMF_CM[0],       << 2015         ZFP2 = zfpnew;
2556                             VIMF_CM[1],       << 2016         VFP2_CM[0] = VP1X;
2557                             VIMF_CM[2],       << 2017         VFP2_CM[1] = VP1Y;
2558                             &VP1X,            << 2018         VFP2_CM[2] = VP1Z;
2559                             &VP1Y,            << 2019          for(G4int I = 0;I<ILOOP;I++){
2560                             &VP1Z,            << 2020           for(G4int IJ = 0; IJ<5; IJ++)
2561                             EV_TAB_TEMP,      << 2021            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
2562                             &ILOOP);          << 2022          }
2563                                               << 2023          IEV_TAB = IEV_TAB + ILOOP;
2564             if (IOUNSTABLE == 1)              << 2024         }
2565             {                                 << 2025        }// ftype>2
2566                 AFPIMF = afpnew;              << 2026       }// ftype>1
2567                 ZFPIMF = zfpnew;              << 
2568                 VIMF_CM[0] = VP1X;            << 
2569                 VIMF_CM[1] = VP1Y;            << 
2570                 VIMF_CM[2] = VP1Z;            << 
2571                 for (G4int I = 0; I < ILOOP;  << 
2572                 {                             << 
2573                     for (G4int IJ = 0; IJ < 5 << 
2574                         EV_TAB[I + IEV_TAB][I << 
2575                 }                             << 
2576                 IEV_TAB = IEV_TAB + ILOOP;    << 
2577             }                                 << 
2578         } // ftype=21                         << 
2579     }                                            2027     }
2580                                                  2028 
2581     // Cross check                            << 2029 
2582     if ((ftype == 1 || ftype == 21) && (AFP2  << 2030 // For the case of fission:
2583     {                                         << 2031     if(ftype==1 || ftype==21){
2584         std::cout << "ZFP1:" << ZFP1 << std:: << 2032 // ----------- RESOLVE UNSTABLE NUCLEI
2585         std::cout << "AFP1:" << AFP1 << std:: << 2033       IOUNSTABLE=0;
2586         std::cout << "ZFP2:" << ZFP2 << std:: << 2034 // ----------- Fragment 1
2587         std::cout << "AFP2:" << AFP2 << std:: << 2035       unstable_nuclei(AFP1,ZFP1,&afpnew,&zfpnew,IOUNSTABLE,
2588     }                                         << 2036        VFP1_CM[0],VFP1_CM[1],VFP1_CM[2],
2589                                               << 2037        &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
2590     //     Put heavy residues in the EV_TAB a << 2038 
2591     EV_TAB[IEV_TAB][0] = ZFP1;                << 2039       if(IOUNSTABLE==1){
2592     EV_TAB[IEV_TAB][1] = AFP1;                << 2040       AFP1 = afpnew;
2593     EV_TAB[IEV_TAB][5] = SFP1;                << 2041       ZFP1 = zfpnew;
2594     EV_TAB[IEV_TAB][2] = VFP1_CM[0];          << 2042       VFP1_CM[0] = VP1X;
2595     EV_TAB[IEV_TAB][3] = VFP1_CM[1];          << 2043       VFP1_CM[1] = VP1Y;
2596     EV_TAB[IEV_TAB][4] = VFP1_CM[2];          << 2044       VFP1_CM[2] = VP1Z;
2597     IEV_TAB = IEV_TAB + 1;                    << 2045          for(G4int I = 0;I<ILOOP;I++){
2598                                               << 2046           for(G4int IJ = 0; IJ<5; IJ++)
2599     if (AFP2 > 0)                             << 2047            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
2600     {                                         << 2048          }
2601         EV_TAB[IEV_TAB][0] = ZFP2;            << 2049         IEV_TAB = IEV_TAB + ILOOP;
2602         EV_TAB[IEV_TAB][1] = AFP2;            << 2050       }
2603         EV_TAB[IEV_TAB][5] = SFP2;            << 2051 
2604         EV_TAB[IEV_TAB][2] = VFP2_CM[0];      << 2052       IOUNSTABLE=0;
2605         EV_TAB[IEV_TAB][3] = VFP2_CM[1];      << 2053 // ----------- Fragment 2
2606         EV_TAB[IEV_TAB][4] = VFP2_CM[2];      << 2054       unstable_nuclei(AFP2,ZFP2,&afpnew,&zfpnew,IOUNSTABLE,
2607         IEV_TAB = IEV_TAB + 1;                << 2055        VFP2_CM[0],VFP2_CM[1],VFP2_CM[2],
2608     }                                         << 2056        &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
2609                                               << 2057 
2610     if (AFPIMF > 0)                           << 2058       if(IOUNSTABLE==1){
2611     {                                         << 2059       AFP2 = afpnew;
2612         EV_TAB[IEV_TAB][0] = ZFPIMF;          << 2060       ZFP2 = zfpnew;
2613         EV_TAB[IEV_TAB][1] = AFPIMF;          << 2061       VFP2_CM[0] = VP1X;
2614         EV_TAB[IEV_TAB][5] = SFPIMF;          << 2062       VFP2_CM[1] = VP1Y;
2615         EV_TAB[IEV_TAB][2] = VIMF_CM[0];      << 2063       VFP2_CM[2] = VP1Z;
2616         EV_TAB[IEV_TAB][3] = VIMF_CM[1];      << 2064          for(G4int I = 0;I<ILOOP;I++){
2617         EV_TAB[IEV_TAB][4] = VIMF_CM[2];      << 2065           for(G4int IJ = 0; IJ<5; IJ++)
2618         IEV_TAB = IEV_TAB + 1;                << 2066            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
                                                   >> 2067          }
                                                   >> 2068         IEV_TAB = IEV_TAB + ILOOP;
                                                   >> 2069       }
                                                   >> 2070 
                                                   >> 2071        if(ftype==21){
                                                   >> 2072        IOUNSTABLE=0;
                                                   >> 2073 // ----------- Fragment IMF
                                                   >> 2074        unstable_nuclei(AFPIMF,ZFPIMF,&afpnew,&zfpnew,IOUNSTABLE,
                                                   >> 2075         VIMF_CM[0],VIMF_CM[1],VIMF_CM[2],
                                                   >> 2076         &VP1X,&VP1Y,&VP1Z,EV_TAB_TEMP,&ILOOP);
                                                   >> 2077 
                                                   >> 2078         if(IOUNSTABLE==1){
                                                   >> 2079         AFPIMF = afpnew;
                                                   >> 2080         ZFPIMF = zfpnew;
                                                   >> 2081         VIMF_CM[0] = VP1X;
                                                   >> 2082         VIMF_CM[1] = VP1Y;
                                                   >> 2083         VIMF_CM[2] = VP1Z;
                                                   >> 2084          for(G4int I = 0;I<ILOOP;I++){
                                                   >> 2085           for(G4int IJ = 0; IJ<5; IJ++)
                                                   >> 2086            EV_TAB[I+IEV_TAB][IJ] = EV_TAB_TEMP[I][IJ];
                                                   >> 2087          }
                                                   >> 2088         IEV_TAB = IEV_TAB + ILOOP;
                                                   >> 2089         }
                                                   >> 2090        }// ftype=21
2619     }                                            2091     }
2620     // Put the array of particles in the root << 2092 
2621     FillData(IMULTBU, IEV_TAB);               << 2093 // Cross check
2622     return;                                   << 2094       if((ftype == 1 ||  ftype == 21) && (AFP2<=0 || AFP1<=0 || ZFP2<=0 || ZFP1<=0)){
                                                   >> 2095        std::cout << "ZFP1:" << ZFP1 << std::endl;
                                                   >> 2096        std::cout << "AFP1:" << AFP1 << std::endl;
                                                   >> 2097        std::cout << "ZFP2:" << ZFP2 << std::endl;
                                                   >> 2098        std::cout << "AFP2:" << AFP2 << std::endl;
                                                   >> 2099       }
                                                   >> 2100 
                                                   >> 2101 //     Put heavy residues in the EV_TAB array
                                                   >> 2102        EV_TAB[IEV_TAB][0] = ZFP1;
                                                   >> 2103        EV_TAB[IEV_TAB][1] = AFP1;
                                                   >> 2104        EV_TAB[IEV_TAB][5] = SFP1;
                                                   >> 2105        EV_TAB[IEV_TAB][2] = VFP1_CM[0];
                                                   >> 2106        EV_TAB[IEV_TAB][3] = VFP1_CM[1];
                                                   >> 2107        EV_TAB[IEV_TAB][4] = VFP1_CM[2];
                                                   >> 2108        IEV_TAB = IEV_TAB + 1;
                                                   >> 2109 
                                                   >> 2110        if(AFP2>0){
                                                   >> 2111        EV_TAB[IEV_TAB][0] = ZFP2;
                                                   >> 2112        EV_TAB[IEV_TAB][1] = AFP2;
                                                   >> 2113        EV_TAB[IEV_TAB][5] = SFP2;
                                                   >> 2114        EV_TAB[IEV_TAB][2] = VFP2_CM[0];
                                                   >> 2115        EV_TAB[IEV_TAB][3] = VFP2_CM[1];
                                                   >> 2116        EV_TAB[IEV_TAB][4] = VFP2_CM[2];
                                                   >> 2117        IEV_TAB = IEV_TAB + 1;
                                                   >> 2118        }
                                                   >> 2119 
                                                   >> 2120        if(AFPIMF>0){
                                                   >> 2121        EV_TAB[IEV_TAB][0] = ZFPIMF;
                                                   >> 2122        EV_TAB[IEV_TAB][1] = AFPIMF;
                                                   >> 2123        EV_TAB[IEV_TAB][5] = SFPIMF;
                                                   >> 2124        EV_TAB[IEV_TAB][2] = VIMF_CM[0];
                                                   >> 2125        EV_TAB[IEV_TAB][3] = VIMF_CM[1];
                                                   >> 2126        EV_TAB[IEV_TAB][4] = VIMF_CM[2];
                                                   >> 2127        IEV_TAB = IEV_TAB + 1;
                                                   >> 2128        }
                                                   >> 2129 // Put the array of particles in the root file of INCL
                                                   >> 2130    FillData(IMULTBU,IEV_TAB);
                                                   >> 2131    return;
2623 }                                                2132 }
2624                                                  2133 
2625 // Evaporation code                              2134 // Evaporation code
2626 void G4Abla::initEvapora()                       2135 void G4Abla::initEvapora()
2627 {                                                2136 {
2628                                                  2137 
2629     //     40 C                       BFPRO,S << 2138  //     40  C                       BFPRO,SNPRO,SPPRO,SHELL                         
2630     //     41 C                               << 2139   //     41 C                                                                       
2631     //     42 C     AP,ZP,AT,ZT   - PROJECTIL << 2140   //     42 C     AP,ZP,AT,ZT   - PROJECTILE AND TARGET MASSES                      
2632     //     43 C     EAP,BETA      - BEAM ENER << 2141   //     43 C     EAP,BETA      - BEAM ENERGY PER NUCLEON, V/C                      
2633     //     44 C     BMAXNUC       - MAX. IMPA << 2142   //     44 C     BMAXNUC       - MAX. IMPACT PARAMETER FOR NUCL. REAC.             
2634     //     45 C     CRTOT,CRNUC   - TOTAL AND << 2143   //     45 C     CRTOT,CRNUC   - TOTAL AND NUCLEAR REACTION CROSS SECTION          
2635     //     46 C     R_0,R_P,R_T,  - RADIUS PA << 2144   //     46 C     R_0,R_P,R_T,  - RADIUS PARAMETER, PROJECTILE+ TARGET RADII        
2636     //     47 C     IMAX,IRNDM,PI - MAXIMUM N << 2145   //     47 C     IMAX,IRNDM,PI - MAXIMUM NUMBER OF EVENTS, DUMMY, 3.141...         
2637     //     48 C     BFPRO         - FISSION B << 2146   //     48 C     BFPRO         - FISSION BARRIER OF THE PROJECTILE                 
2638     //     49 C     SNPRO         - NEUTRON S << 2147   //     49 C     SNPRO         - NEUTRON SEPARATION ENERGY OF THE PROJECTILE       
2639     //     PROJECTILE 50  C     SPPRO         << 2148   //     50 C     SPPRO         - PROTON    "           "   "    "   "              
2640     //     51 C     SHELL         - GROUND ST << 2149   //     51 C     SHELL         - GROUND STATE SHELL CORRECTION                     
2641     //     52                                 << 2150   //     52 C---------------------------------------------------------------------  
2642     //     C--------------------------------- << 2151   //     53 C                                                                       
2643     //     53 C                               << 2152   //     54 C     ENERGIES WIDTHS AND CROSS SECTIONS FOR EM EXCITATION              
2644     //     54 C     ENERGIES WIDTHS AND CROSS << 2153   //     55 C     COMMON /EMDPAR/ EGDR,EGQR,FWHMGDR,FWHMGQR,CREMDE1,CREMDE2,        
2645     //     55 C     COMMON /EMDPAR/ EGDR,EGQR << 2154   //     56 C                     AE1,BE1,CE1,AE2,BE2,CE2,SR1,SR2,XR                
2646     //     56 C                     AE1,BE1,C << 2155   //     57 C                                                                       
2647     //     57 C                               << 2156   //     58 C     EGDR,EGQR       - MEAN ENERGY OF GDR AND GQR                      
2648     //     58 C     EGDR,EGQR       - MEAN EN << 2157   //     59 C     FWHMGDR,FWHMGQR - FWHM OF GDR, GQR                                
2649     //     59 C     FWHMGDR,FWHMGQR - FWHM OF << 2158   //     60 C     CREMDE1,CREMDE2 - EM CROSS SECTION FOR E1 AND E2                  
2650     //     60 C     CREMDE1,CREMDE2 - EM CROS << 2159   //     61 C     AE1,BE1,CE1     - ARRAYS TO CALCULATE                             
2651     //     61 C     AE1,BE1,CE1     - ARRAYS  << 2160   //     62 C     AE2,BE2,CE2     - THE EXCITATION ENERGY AFTER E.M. EXC.           
2652     //     62 C     AE2,BE2,CE2     - THE EXC << 2161   //     63 C     SR1,SR2,XR      - WITH MONTE CARLO                                
2653     //     63 C     SR1,SR2,XR      - WITH MO << 2162   //     64 C---------------------------------------------------------------------  
2654     //     64                                 << 2163   //     65 C                                                                       
2655     //     C--------------------------------- << 2164   //     66 C     DEFORMATIONS AND G.S. SHELL EFFECTS                               
2656     //     65 C                               << 2165   //     67 C     COMMON /ECLD/   ECGNZ,ECFNZ,VGSLD,ALPHA                           
2657     //     66 C     DEFORMATIONS AND G.S. SHE << 2166   //     68 C                                                                       
2658     //     67 C     COMMON /ECLD/   ECGNZ,ECF << 2167   //     69 C     ECGNZ - GROUND STATE SHELL CORR. FRLDM FOR A SPHERICAL G.S.       
2659     //     68 C                               << 2168   //     70 C     ECFNZ - SHELL CORRECTION FOR THE SADDLE POINT (NOW: == 0)         
2660     //     69 C     ECGNZ - GROUND STATE SHEL << 2169   //     71 C     VGSLD - DIFFERENCE BETWEEN DEFORMED G.S. AND LDM VALUE            
2661     //     G.S.                               << 2170   //     72 C     ALPHA - ALPHA GROUND STATE DEFORMATION (THIS IS NOT BETA2!)       
2662     //     70 C     ECFNZ - SHELL CORRECTION  << 2171   //     73 C             BETA2 = SQRT(5/(4PI)) * ALPHA                             
2663     //     71 C     VGSLD - DIFFERENCE BETWEE << 2172   //     74 C---------------------------------------------------------------------  
2664     //     72 C     ALPHA - ALPHA GROUND STAT << 2173   //     75 C                                                                       
2665     //     BETA2!) 73 C             BETA2 = S << 2174   //     76 C     ARRAYS FOR EXCITATION ENERGY BY STATISTICAL HOLE ENERY MODEL      
2666     //     C--------------------------------- << 2175   //     77 C     COMMON /EENUC/  SHE, XHE                                          
2667     //     75 C                               << 2176   //     78 C                                                                       
2668     //     76 C     ARRAYS FOR EXCITATION ENE << 2177   //     79 C     SHE, XHE - ARRAYS TO CALCULATE THE EXC. ENERGY AFTER              
2669     //     MODEL 77 C     COMMON /EENUC/  SHE << 2178   //     80 C                ABRASION BY THE STATISTICAL HOLE ENERGY MODEL          
2670     //     XHE - ARRAYS TO CALCULATE THE EXC. << 2179   //     81 C---------------------------------------------------------------------  
2671     //     THE STATISTICAL HOLE ENERGY MODEL  << 2180   //     82 C                                                                       
2672     //     C--------------------------------- << 2181   //     83 C     G.S. SHELL EFFECT                                                 
2673     //     82 C                               << 2182   //     84 C     COMMON /EC2SUB/ ECNZ                                              
2674     //     83 C     G.S. SHELL EFFECT         << 2183   //     85 C                                                                       
2675     //     84 C     COMMON /EC2SUB/ ECNZ      << 2184   //     86 C     ECNZ G.S. SHELL EFFECT FOR THE MASSES (IDENTICAL TO ECGNZ)        
2676     //     85 C                               << 2185   //     87 C---------------------------------------------------------------------  
2677     //     86 C     ECNZ G.S. SHELL EFFECT FO << 2186   //       
2678     //     87                                 << 2187 
2679     //     C--------------------------------- << 2188   G4double MN = 939.5653301;   
2680     //                                        << 2189   G4double MP = 938.7829835;                             
2681                                               << 2190 
2682     G4double MN = 939.5653301;                << 2191 #ifdef ABLAXX_IN_GEANT4_MODE
2683     G4double MP = 938.7829835;                << 2192   G4AblaDataFile *dataInterface = new G4AblaDataFile();
2684                                               << 2193 #else
2685     G4AblaDataFile* dataInterface = new G4Abl << 2194   G4AblaDataFile *dataInterface = new G4AblaDataFile(theConfig);
2686     if (dataInterface->readData() == true)    << 2195 #endif
2687     {                                         << 2196   if(dataInterface->readData() == true) {
2688         if (verboseLevel > 0)                 << 2197     if(verboseLevel > 0) {
2689         {                                     << 2198       // G4cout <<"G4Abla: Datafiles read successfully." << G4endl;
2690             // G4cout <<"G4Abla: Datafiles re << 2199     }
2691         }                                     << 2200   }
2692     }                                         << 2201   else {
2693     else                                      << 2202     //    G4Exception("ERROR: Failed to read datafiles.");
2694     {                                         << 2203   }
2695         //    G4Exception("ERROR: Failed to r << 2204   
2696     }                                         << 2205   for(G4int z = 0; z < 99; z++) { //do 30  z = 0,98,1                                                 
2697                                               << 2206     for(G4int n = 0; n < 154; n++) { //do 31  n = 0,153,1                                              
2698     for (G4int z = 0; z < 99; z++)            << 2207       ecld->ecfnz[n][z] = 0.e0;
2699     { // do 30  z = 0,98,1                    << 2208       ec2sub->ecnz[n][z] = dataInterface->getEcnz(n,z);
2700         for (G4int n = 0; n < 154; n++)       << 2209       ecld->ecgnz[n][z] = dataInterface->getEcnz(n,z);
2701         { // do 31  n = 0,153,1               << 2210       ecld->alpha[n][z] = dataInterface->getAlpha(n,z);
2702             ecld->ecfnz[n][z] = 0.e0;         << 2211       ecld->vgsld[n][z] = dataInterface->getVgsld(n,z);
2703             ec2sub->ecnz[n][z] = dataInterfac << 2212       ecld->rms[n][z] = dataInterface->getRms(n,z);
2704             ecld->ecgnz[n][z] = dataInterface << 2213     }
2705             ecld->alpha[n][z] = dataInterface << 2214   }
2706             ecld->vgsld[n][z] = dataInterface << 2215 
2707             ecld->rms[n][z] = dataInterface-> << 2216   for(G4int z = 0; z < 137; z++){                                                  
2708         }                                     << 2217     for(G4int n = 0; n < 251; n++){  
2709     }                                         << 2218       ecld->beta2[n][z] = dataInterface->getBeta2(n,z);
2710                                               << 2219       ecld->beta4[n][z] = dataInterface->getBeta4(n,z);
2711     for (G4int iz = 0; iz < zcolsbeta; iz++)  << 2220     }
2712         for (G4int in = 0; in < nrowsbeta; in << 2221   }
2713         {                                     << 2222 
2714             ecld->beta2[in][iz] = dataInterfa << 2223   for(G4int z = 0; z < 500; z++) {
2715             ecld->beta4[in][iz] = dataInterfa << 2224     for(G4int a = 0; a < 500; a++) {
2716         }                                     << 2225       pace->dm[z][a] = dataInterface->getPace2(z,a);
2717                                               << 2226     }
2718     G4double mfrldm[lprows][lpcols];          << 2227   }
2719     // For 2 < Z < 12 we take "experimental"  << 2228 
2720     // calculated Read FRLDM tables           << 2229 
2721     for (G4int i = 1; i < lpcols; i++)        << 2230 
2722     {                                         << 2231   G4double mfrldm[154][13];
2723         for (G4int j = 1; j < lprows; j++)    << 2232 // For 2 < Z < 12 we take "experimental" shell corrections instead of calculated
2724         {                                     << 2233 // Read FRLDM tables
2725             if (dataInterface->getMexpID(j, i << 2234   for(G4int i=1;i<13;i++){
2726             {                                 << 2235    for(G4int j=1;j<154;j++){
2727                 masses->mexpiop[j][i] = 1;    << 2236       if(dataInterface->getMexpID(j,i)==1){
2728             }                                 << 2237        masses->mexpiop[j][i]=1;  
2729             else                              << 2238       }else{
2730             {                                 << 2239        masses->mexpiop[j][i]=0;
2731                 masses->mexpiop[j][i] = 0;    << 2240       } 
2732             }                                 << 2241 // LD masses (even-odd effect is later considered according to Ignatyuk)
2733             // LD masses (even-odd effect is  << 2242       if(i==0 && j==0)
2734             if (i == 0 && j == 0)             << 2243        mfrldm[j][i] = 0.;
2735                 mfrldm[j][i] = 0.;            << 2244       else
2736             else                              << 2245        mfrldm[j][i] = MP*i+MN*j+eflmac(i+j,i,1,0);
2737                 mfrldm[j][i] = MP * i + MN *  << 2246    }
2738         }                                     << 2247   }
2739     }                                         << 2248 
2740                                               << 2249   G4double e0=0.;
2741     for (G4int i = 0; i < lpcols; i++)        << 2250   for(G4int i=1;i<13;i++){
2742         for (G4int j = 0; j < lprows; j++)    << 2251    for(G4int j=1;j<154;j++){
2743             masses->massexp[j][i] = dataInter << 2252       masses->bind[j][i]=0.;
2744                                               << 2253       if(masses->mexpiop[j][i]==1){
2745     G4double e0 = 0.;                         << 2254         if(j<3){
2746     for (G4int i = 1; i < lpcols; i++)        << 2255 
2747     {                                         << 2256           ec2sub->ecnz[j][i] = 0.0;
2748         for (G4int j = 1; j < lprows; j++)    << 2257           ecld->ecgnz[j][i] = ec2sub->ecnz[j][i];
2749         {                                     << 2258           masses->bind[j][i] = dataInterface->getMexp(j,i)-MP*i -MN*j;
2750             masses->bind[j][i] = 0.;          << 2259           ecld->vgsld[j][i]=0.;
2751             if (masses->mexpiop[j][i] == 1)   << 2260 
2752             {                                 << 2261           e0=0.;
2753                 if (j < 30)                   << 2262         }else{
2754                 {                             << 2263 // For these nuclei, we take "experimental" ground-state shell corrections
2755                                               << 2264 //
2756                     ec2sub->ecnz[j][i] = 0.0; << 2265 // Parametrization of CT model by Ignatyuk; note that E0 is shifted to correspond
2757                     ecld->ecgnz[j][i] = ec2su << 2266 // to pairing shift in Fermi-gas model (there, energy is shifted taking odd-odd nuclei as bassis)
2758                     masses->bind[j][i] = data << 2267               G4double para=0.;
2759                     ecld->vgsld[j][i] = 0.;   << 2268               parite(j+i,&para);
2760                                               << 2269                 if(para<0.0){
2761                     e0 = 0.;                  << 2270 // e-o, o-e
                                                   >> 2271                  e0 =  0.285+11.17*std::pow(j+i,-0.464) -0.390-0.00058*(j+i);
                                                   >> 2272                 }else{
                                                   >> 2273                   G4double parz=0.;
                                                   >> 2274                   parite(i,&parz);
                                                   >> 2275                   if (parz>0.0){
                                                   >> 2276 // e-e
                                                   >> 2277                    e0 = 22.34*std::pow(j+i,-0.464)-0.235;
                                                   >> 2278                   }else{
                                                   >> 2279 // o-o
                                                   >> 2280                    e0 = 0.0;
                                                   >> 2281                   }
                                                   >> 2282                 }
                                                   >> 2283 //
                                                   >> 2284                 if((j==i)&&mod(j,2)==1&&mod(i,2)==1){
                                                   >> 2285                  e0 = e0 - 30.0*(1.0/G4double(j+i));
2762                 }                                2286                 }
2763                 else                          << 
2764                 {                             << 
2765                     // For these nuclei, we t << 
2766                     // corrections            << 
2767                     //                        << 
2768                     // Parametrization of CT  << 
2769                     // correspond to pairing  << 
2770                     // shifted taking odd-odd << 
2771                     G4double para = 0.;       << 
2772                     parite(j + i, &para);     << 
2773                     if (para < 0.0)           << 
2774                     {                         << 
2775                         // e-o, o-e           << 
2776                         e0 = 0.285 + 11.17 *  << 
2777                     }                         << 
2778                     else                      << 
2779                     {                         << 
2780                         G4double parz = 0.;   << 
2781                         parite(i, &parz);     << 
2782                         if (parz > 0.0)       << 
2783                         {                     << 
2784                             // e-e            << 
2785                             e0 = 22.34 * std: << 
2786                         }                     << 
2787                         else                  << 
2788                         {                     << 
2789                             // o-o            << 
2790                             //                << 
2791                             //                << 
2792                             e0 = 0.0;         << 
2793                         }                     << 
2794                     }                         << 
2795                     //                        << 
2796                     if ((j == i) && mod(j, 2) << 
2797                     {                         << 
2798                         e0 = e0 - 30.0 * (1.0 << 
2799                     }                         << 
2800                                                  2287 
2801                     G4double delta_tot = ec2s << 2288             G4double delta_tot = ec2sub->ecnz[j][i] - ecld->vgsld[j][i];
2802                     ec2sub->ecnz[j][i] = data << 2289             ec2sub->ecnz[j][i] = dataInterface->getMexp(j,i) - (mfrldm[j][i] - e0);
2803                                                  2290 
2804                     ecld->vgsld[j][i] = max(0 << 2291             ecld->vgsld[j][i] = max(0.0,ec2sub->ecnz[j][i] - delta_tot);
2805                     ecld->ecgnz[j][i] = ec2su << 2292             ecld->ecgnz[j][i] = ec2sub->ecnz[j][i];
2806                                                  2293 
2807                 } // if j                     << 2294         }//if j
2808             }     // if mexpiop               << 2295      }//if mexpiop
2809         }                                     << 2296    }
2810     }                                         << 2297   }
2811     //                                        << 2298 //
2812     delete dataInterface;                     << 2299   delete dataInterface;
2813 }                                                2300 }
2814                                                  2301 
2815 void G4Abla::SetParametersG4(G4int z, G4int a    2302 void G4Abla::SetParametersG4(G4int z, G4int a)
2816 {                                                2303 {
2817     // A and Z for the target                 << 2304   //A and Z for the target
2818     fiss->at = a;                             << 2305   fiss->at = a;
2819     fiss->zt = z;                             << 2306   fiss->zt = z;
2820                                               << 2307 
2821     // switch-fission.1=on.0=off              << 2308   // shell+pairing.0-1-2-3 for IMFs
2822     fiss->ifis = 1;                           << 2309   opt->optshpimf = 0;
2823                                               << 2310 
2824     // shell+pairing.0-1-2-3                  << 2311   //collective enhancement switched on 1 or off 0 in densn (qr=val or =1.)
2825     fiss->optshp = 3;                         << 2312   fiss->optcol = 1;
2826     if (fiss->zt < 84 && fiss->zt > 60)       << 2313   if(fiss->zt<83 && fiss->zt>56){
2827         fiss->optshp = 1;                     << 2314   fiss->optshp = 1;
2828                                               << 2315   }
2829     // optemd =0,1  0 no emd, 1 incl. emd     << 2316   if(fiss->zt<=56){  
2830     opt->optemd = 1;                          << 2317   fiss->optcol = 0;
2831     // read(10,*,iostat=io) dum(10),optcha    << 2318   fiss->optshp = 3;
2832     opt->optcha = 1;                          << 2319   }
2833                                               << 
2834     // shell+pairing.0-1-2-3 for IMFs         << 
2835     opt->optshpimf = 0;                       << 
2836     opt->optimfallowed = 1;                   << 
2837                                               << 
2838     // collective enhancement switched on 1 o << 
2839     fiss->optcol = 1;                         << 
2840     if (fiss->zt <= 28)                       << 
2841     {                                         << 
2842         fiss->optcol = 0;                     << 
2843         fiss->optshp = 0;                     << 
2844         opt->optshpimf = 1;                   << 
2845     }                                         << 
2846     else if (fiss->zt <= 58)                  << 
2847     {                                         << 
2848         fiss->optcol = 0;                     << 
2849         fiss->optshp = 1;                     << 
2850         opt->optshpimf = 3;                   << 
2851     }                                         << 
2852     // collective enhancement parameters      << 
2853     fiss->ucr = 40.;                          << 
2854     fiss->dcr = 10.;                          << 
2855                                               << 
2856     // switch for temperature constant model  << 
2857     fiss->optct = 1;                          << 
2858                                               << 
2859     ald->optafan = 0;                         << 
2860                                               << 
2861     // nuclear.viscosity.(beta)               << 
2862     fiss->bet = 4.5;                          << 
2863     fiss->bethyp = 28.0;                      << 
2864     fiss->optxfis = 3;                        << 
2865                                               << 
2866     // Level density parameters               << 
2867     ald->av = 0.0730;                         << 
2868     ald->as = 0.0950;                         << 
2869     ald->ak = 0.0000;                         << 
2870                                               << 
2871     // Multi-fragmentation                    << 
2872     T_freeze_out_in = -6.5;                   << 
2873 }                                                2320 }
2874                                                  2321 
2875 void G4Abla::SetParameters()                     2322 void G4Abla::SetParameters()
2876 {                                                2323 {
2877     /*                                        << 2324 /*
2878     C     IFIS =   INTEGER SWITCH FOR FISSION << 2325 C     IFIS =   INTEGER SWITCH FOR FISSION
2879     C     OPTSHP = INTEGER SWITCH FOR SHELL C << 2326 C     OPTSHP = INTEGER SWITCH FOR SHELL CORRECTION IN MASSES/ENERGY
2880     C            =0 NO MICROSCOPIC CORRECTION << 2327 C            =0 NO MICROSCOPIC CORRECTIONS IN MASSES AND ENERGY
2881     C            =1 SHELL , NO PAIRING CORREC << 2328 C            =1 SHELL , NO PAIRING CORRECTION
2882     C            =2 PAIRING, NO SHELL CORRECT << 2329 C            =2 PAIRING, NO SHELL CORRECTION
2883     C            =3 SHELL AND PAIRING CORRECT << 2330 C            =3 SHELL AND PAIRING CORRECTION IN MASSES AND ENERGY
2884     C     OPTCOL =0,1 COLLECTIVE ENHANCEMENT  << 2331 C     OPTCOL =0,1 COLLECTIVE ENHANCEMENT SWITCHED ON 1 OR OFF 0 IN DENSN
2885     C     OPTAFAN=0,1 SWITCH FOR AF/AN = 1 IN << 2332 C     OPTAFAN=0,1 SWITCH FOR AF/AN = 1 IN DENSNIV 0 AF/AN>1 1 AF/AN=1
2886     C     BET  =  REAL    REDUCED FRICTION CO << 2333 C     BET  =  REAL    REDUCED FRICTION COEFFICIENT / 10**(+21) S**(-1)
2887     C     OPTXFIS= INTEGER 0,1,2 FOR MYERS &  << 2334 C     OPTXFIS= INTEGER 0,1,2 FOR MYERS & SWIATECKI, DAHLINGER, ANDREYEV
2888     C              FISSILITY PARAMETER.       << 2335 C              FISSILITY PARAMETER.
2889     C                                         << 2336 C
2890     C     NUCLEAR LEVEL DENSITIES:            << 2337 C     NUCLEAR LEVEL DENSITIES:
2891     C     AV     = REAL KOEFFICIENTS FOR CALC << 2338 C     AV     = REAL KOEFFICIENTS FOR CALCULATION OF A(TILDE)
2892     C     AS     = REAL LEVEL DENSITY PARAMET << 2339 C     AS     = REAL LEVEL DENSITY PARAMETER
2893     C     AK     = REAL                       << 2340 C     AK     = REAL
2894     */                                        << 2341 */
2895                                               << 2342 
2896     // switch-fission.1=on.0=off              << 2343   // switch-fission.1=on.0=off
2897     fiss->ifis = 1;                           << 2344   fiss->ifis = 1;
2898                                               << 2345 
2899     // shell+pairing.0-1-2-3                  << 2346   // shell+pairing.0-1-2-3
2900     fiss->optshp = 3;                         << 2347   fiss->optshp = 3; 
2901     if (fiss->zt < 84 && fiss->zt > 56)       << 2348   if(fiss->zt<84 && fiss->zt>56)
2902         fiss->optshp = 1;                     << 2349   fiss->optshp = 1;
2903                                               << 2350 
2904     // optemd =0,1  0 no emd, 1 incl. emd     << 2351   // optemd =0,1  0 no emd, 1 incl. emd                                
2905     opt->optemd = 1;                          << 2352   opt->optemd = 1;
2906     // read(10,*,iostat=io) dum(10),optcha    << 2353   // read(10,*,iostat=io) dum(10),optcha                               
2907     opt->optcha = 1;                          << 2354   opt->optcha = 1;
2908                                               << 2355 
2909     // shell+pairing.0-1-2-3 for IMFs         << 2356   // shell+pairing.0-1-2-3 for IMFs
2910     opt->optshpimf = 0;                       << 2357   opt->optshpimf = 0;
2911     opt->optimfallowed = 1;                   << 2358   opt->optimfallowed = 1;
2912                                               << 2359 
2913     // nuclear.viscosity.(beta)               << 2360   // nuclear.viscosity.(beta)
2914     fiss->bet = 4.5;                          << 2361   fiss->bet = 4.5;
2915                                               << 2362 
2916     // collective enhancement switched on 1 o << 2363   //collective enhancement switched on 1 or off 0 in densn (qr=val or =1.)
2917     fiss->optcol = 1;                         << 2364   fiss->optcol = 1;
2918     if (fiss->zt <= 56)                       << 2365   if(fiss->zt<=56){  
2919     {                                         << 2366   fiss->optcol = 0;
2920         fiss->optcol = 0;                     << 2367   fiss->optshp = 3;
2921         fiss->optshp = 3;                     << 2368   }
2922     }                                         << 2369   //collective enhancement parameters
2923     // collective enhancement parameters      << 2370   fiss->ucr = 40.;
2924     fiss->ucr = 40.;                          << 2371   fiss->dcr = 10.;
2925     fiss->dcr = 10.;                          << 2372 
2926                                               << 2373   // switch for temperature constant model (CTM)
2927     // switch for temperature constant model  << 2374   fiss->optct = 1;
2928     fiss->optct = 1;                          << 2375 
2929                                               << 2376   ald->optafan = 0;
2930     ald->optafan = 0;                         << 2377 
2931                                               << 2378   ald->av = 0.0730;
2932     ald->av = 0.0730;                         << 2379   ald->as = 0.0950;
2933     ald->as = 0.0950;                         << 2380   ald->ak = 0.0000;
2934     ald->ak = 0.0000;                         << 2381 
2935                                               << 2382   fiss->optxfis = 3;
2936     fiss->optxfis = 3;                        << 2383 
2937                                               << 2384 // Multi-fragmentation
2938     // Multi-fragmentation                    << 2385   T_freeze_out_in = -6.5;
2939     T_freeze_out_in = -6.5;                   << 2386 
2940 }                                             << 2387 }
2941                                               << 2388 
2942 void G4Abla::mglw(G4double a, G4double z, G4d << 2389 void G4Abla::mglw(G4double a, G4double z, G4double *el)
2943 {                                             << 2390 {
2944     // MODEL DE LA GOUTTE LIQUIDE DE C. F. WE << 2391   // MODEL DE LA GOUTTE LIQUIDE DE C. F. WEIZSACKER.
2945     // USUALLY AN OBSOLETE OPTION             << 2392   // USUALLY AN OBSOLETE OPTION
2946                                               << 2393 
2947     G4double xv = 0.0, xs = 0.0, xc = 0.0, xa << 2394   G4double xv = 0.0, xs = 0.0, xc = 0.0, xa = 0.0;                                   
2948                                               << 2395 
2949     if ((a <= 0.01) || (z < 0.01))            << 2396   if ((a <= 0.01) || (z < 0.01)) {
2950     {                                         << 2397     (*el) = 1.0e38;
2951         (*el) = 1.0e38;                       << 2398   }
2952     }                                         << 2399   else {
2953     else                                      << 2400     xv = -15.56*a;
2954     {                                         << 2401     xs = 17.23*std::pow(a,(2.0/3.0));
2955         xv = -15.56 * a;                      << 2402 
2956         xs = 17.23 * std::pow(a, (2.0 / 3.0)) << 2403     if (a > 1.0) {
2957                                               << 2404       xc = 0.7*z*(z-1.0)*std::pow((a-1.0),(-1.e0/3.e0));
2958         if (a > 1.0)                          << 2405     }
2959         {                                     << 2406     else {
2960             xc = 0.7 * z * (z - 1.0) * std::p << 2407       xc = 0.0;
2961         }                                     << 2408     }
2962         else                                  << 2409   }
2963         {                                     << 2410 
2964             xc = 0.0;                         << 2411   xa = 23.6*(std::pow((a-2.0*z),2)/a);
2965         }                                     << 2412   (*el) = xv+xs+xc+xa;
2966     }                                         << 2413   return; 
2967                                               << 2414 }
2968     xa = 23.6 * (std::pow((a - 2.0 * z), 2) / << 2415 
2969     (*el) = xv + xs + xc + xa;                << 2416 void G4Abla::mglms(G4double a, G4double z, G4int refopt4, G4double *el)
                                                   >> 2417 {
                                                   >> 2418   // USING FUNCTION EFLMAC(IA,IZ,0)                                    
                                                   >> 2419   // 
                                                   >> 2420   // REFOPT4 = 0 : WITHOUT MICROSCOPIC CORRECTIONS                     
                                                   >> 2421   // REFOPT4 = 1 : WITH SHELL CORRECTION                               
                                                   >> 2422   // REFOPT4 = 2 : WITH PAIRING CORRECTION                             
                                                   >> 2423   // REFOPT4 = 3 : WITH SHELL- AND PAIRING CORRECTION                  
                                                   >> 2424 
                                                   >> 2425   //   1839 C-----------------------------------------------------------------------
                                                   >> 2426   //   1840 C     A1       LOCAL    MASS NUMBER (INTEGER VARIABLE OF A)             
                                                   >> 2427   //   1841 C     Z1       LOCAL    NUCLEAR CHARGE (INTEGER VARIABLE OF Z)          
                                                   >> 2428   //   1842 C     REFOPT4           OPTION, SPECIFYING THE MASS FORMULA (SEE ABOVE) 
                                                   >> 2429   //   1843 C     A                 MASS NUMBER                                     
                                                   >> 2430   //   1844 C     Z                 NUCLEAR CHARGE                                  
                                                   >> 2431   //   1845 C     DEL               PAIRING CORRECTION                              
                                                   >> 2432   //   1846 C     EL                BINDING ENERGY                                  
                                                   >> 2433   //   1847 C     ECNZ( , )         TABLE OF SHELL CORRECTIONS                      
                                                   >> 2434   //   1848 C-----------------------------------------------------------------------
                                                   >> 2435   //   1849 C                                                                       
                                                   >> 2436   G4int a1 = idnint(a);
                                                   >> 2437   G4int z1 = idnint(z);
                                                   >> 2438   G4int n1 = a1-z1;
                                                   >> 2439 
                                                   >> 2440   if ( (a1 <= 0) || (z1 <= 0) || ((a1-z1) <= 0) )  { //then 
                                                   >> 2441     // modif pour recuperer une masse p et n correcte:
                                                   >> 2442     (*el) = 1.e38;
2970     return;                                      2443     return;
2971 }                                             << 2444     //    goto mglms50;
2972                                               << 2445   }
2973 void G4Abla::mglms(G4double a, G4double z, G4 << 2446   else {
2974 {                                             << 2447     // binding energy incl. pairing contr. is calculated from                
2975     // USING FUNCTION EFLMAC(IA,IZ,0)         << 2448     // function eflmac                                                       
2976     //                                        << 2449     (*el) = eflmac(a1,z1,0,refopt4);
2977     // REFOPT4 = 0 : WITHOUT MICROSCOPIC CORR << 2450 
2978     // REFOPT4 = 1 : WITH SHELL CORRECTION    << 2451     if (refopt4 > 0) {
2979     // REFOPT4 = 2 : WITH PAIRING CORRECTION  << 2452       if (refopt4 != 2) {
2980     // REFOPT4 = 3 : WITH SHELL- AND PAIRING  << 2453   (*el) = (*el) + ec2sub->ecnz[a1-z1][z1];
2981                                               << 2454       }
2982     //   1839                                 << 
2983     //   C----------------------------------- << 
2984     //   1840 C     A1       LOCAL    MASS NU << 
2985     //   1841 C     Z1       LOCAL    NUCLEAR << 
2986     //   1842 C     REFOPT4           OPTION, << 
2987     //   ABOVE) 1843  C     A                 << 
2988     //   NUCLEAR CHARGE 1845  C     DEL       << 
2989     //   C     EL                BINDING ENER << 
2990     //   SHELL CORRECTIONS 1848               << 
2991     //   C----------------------------------- << 
2992     //   1849 C                               << 
2993     G4int a1 = idnint(a);                     << 
2994     G4int z1 = idnint(z);                     << 
2995     G4int n1 = a1 - z1;                       << 
2996                                               << 
2997     if ((a1 <= 0) || (z1 <= 0) || ((a1 - z1)  << 
2998     { // then                                 << 
2999         // modif pour recuperer une masse p e << 
3000         (*el) = 1.e38;                        << 
3001         return;                               << 
3002         //    goto mglms50;                   << 
3003     }                                            2455     }
3004     else                                      << 2456     
3005     {                                         << 2457     if(z1>=90){
3006         // binding energy incl. pairing contr << 2458       if(n1<=145){
3007         // function eflmac                    << 2459          (*el) = (*el) + (12.552-0.1436*z1);
3008         (*el) = eflmac(a1, z1, 0, refopt4);   << 2460       }else{
3009                                               << 2461         if(n1>145&&n1<=152){
3010         if (refopt4 > 0)                      << 2462          (*el) = (*el) + ((152.4-1.77*z1)+(-0.972+0.0113*z1)*n1);
3011         {                                     << 
3012             if (refopt4 != 2)                 << 
3013             {                                 << 
3014                 (*el) = (*el) + ec2sub->ecnz[ << 
3015             }                                 << 
3016         }                                     << 
3017                                               << 
3018         if (z1 >= 90)                         << 
3019         {                                     << 
3020             if (n1 <= 145)                    << 
3021             {                                 << 
3022                 (*el) = (*el) + (12.552 - 0.1 << 
3023             }                                 << 
3024             else                              << 
3025             {                                 << 
3026                 if (n1 > 145 && n1 <= 152)    << 
3027                 {                             << 
3028                     (*el) = (*el) + ((152.4 - << 
3029                 }                             << 
3030             }                                 << 
3031         }                                        2463         }
                                                   >> 2464       } 
3032     }                                            2465     }
3033     return;                                   << 2466 
                                                   >> 2467   }
                                                   >> 2468   return;
3034 }                                                2469 }
3035                                                  2470 
3036 G4double G4Abla::spdef(G4int a, G4int z, G4in    2471 G4double G4Abla::spdef(G4int a, G4int z, G4int optxfis)
3037 {                                                2472 {
3038                                                  2473 
3039     // INPUT:  A,Z,OPTXFIS MASS AND CHARGE OF << 2474   // INPUT:  A,Z,OPTXFIS MASS AND CHARGE OF A NUCLEUS,                     
3040     // OPTION FOR FISSILITY                   << 2475   // OPTION FOR FISSILITY                                          
3041     // OUTPUT: SPDEF                          << 2476   // OUTPUT: SPDEF                                                         
3042                                               << 2477 
3043     // ALPHA2 SADDLE POINT DEF. COHEN&SWIATEC << 2478   // ALPHA2 SADDLE POINT DEF. COHEN&SWIATECKI ANN.PHYS. 22 (1963) 406      
3044     // RANGING FROM FISSILITY X=0.30 TO X=1.0 << 2479   // RANGING FROM FISSILITY X=0.30 TO X=1.00 IN STEPS OF 0.02              
3045                                               << 2480 
3046     G4int index = 0;                          << 2481   G4int index = 0;
3047     G4double x = 0.0, v = 0.0, dx = 0.0;      << 2482   G4double x = 0.0, v = 0.0, dx = 0.0;
3048                                               << 2483 
3049     const G4int alpha2Size = 37;              << 2484   const G4int alpha2Size = 37;
3050     // The value 0.0 at alpha2[0] added by PK << 2485   // The value 0.0 at alpha2[0] added by PK.
3051     G4double alpha2[alpha2Size] = { 0.0,      << 2486   G4double alpha2[alpha2Size] = {0.0, 2.5464e0, 2.4944e0, 2.4410e0, 2.3915e0, 2.3482e0,
3052                                     2.1982e0, << 2487          2.3014e0, 2.2479e0, 2.1982e0, 2.1432e0, 2.0807e0, 2.0142e0, 1.9419e0,
3053                                     1.6473e0, << 2488          1.8714e0, 1.8010e0, 1.7272e0, 1.6473e0, 1.5601e0, 1.4526e0, 1.3164e0,
3054                                     0.6360e0, << 2489          1.1391e0, 0.9662e0, 0.8295e0, 0.7231e0, 0.6360e0, 0.5615e0, 0.4953e0,
3055                                     0.1827e0, << 2490          0.4354e0, 0.3799e0, 0.3274e0, 0.2779e0, 0.2298e0, 0.1827e0, 0.1373e0,
                                                   >> 2491          0.0901e0, 0.0430e0, 0.0000e0};
                                                   >> 2492 
                                                   >> 2493   dx = 0.02;
                                                   >> 2494   x  = fissility(a,z,0,0.,0.,optxfis);
                                                   >> 2495 
                                                   >> 2496   v  = (x - 0.3)/dx + 1.0;
                                                   >> 2497   index = idnint(v);
                                                   >> 2498 
                                                   >> 2499   if (index < 1) {
                                                   >> 2500     return(alpha2[1]);
                                                   >> 2501   }
                                                   >> 2502 
                                                   >> 2503   if (index == 36) {                                             
                                                   >> 2504     return(alpha2[36]); 
                                                   >> 2505   }
                                                   >> 2506   else {
                                                   >> 2507     return(alpha2[index] + (alpha2[index+1] - alpha2[index]) / dx * ( x - (0.3e0 + dx*(index-1))));
                                                   >> 2508   }                                                       
3056                                                  2509 
3057     dx = 0.02;                                << 2510   return alpha2[0]; // The algorithm is not supposed to reach this point.
3058     x = fissility(a, z, 0, 0., 0., optxfis);  << 
3059                                               << 
3060     v = (x - 0.3) / dx + 1.0;                 << 
3061     index = idnint(v);                        << 
3062                                               << 
3063     if (index < 1)                            << 
3064     {                                         << 
3065         return (alpha2[1]);                   << 
3066     }                                         << 
3067                                               << 
3068     if (index == 36)                          << 
3069     {                                         << 
3070         return (alpha2[36]);                  << 
3071     }                                         << 
3072     else                                      << 
3073     {                                         << 
3074         return (alpha2[index] + (alpha2[index << 
3075     }                                         << 
3076                                               << 
3077     return alpha2[0]; // The algorithm is not << 
3078 }                                                2511 }
3079                                                  2512 
3080 G4double G4Abla::fissility(G4int a, G4int z,     2513 G4double G4Abla::fissility(G4int a, G4int z, G4int ny, G4double sn, G4double slam, G4int optxfis)
3081 {                                                2514 {
3082     // CALCULATION OF FISSILITY PARAMETER     << 2515   // CALCULATION OF FISSILITY PARAMETER                                 
3083     //                                        << 2516   // 
3084     // INPUT: A,Z INTEGER MASS & CHARGE OF NU << 2517   // INPUT: A,Z INTEGER MASS & CHARGE OF NUCLEUS                        
3085     // OPTXFIS = 0 : MYERS, SWIATECKI         << 2518   // OPTXFIS = 0 : MYERS, SWIATECKI                              
3086     //           1 : DAHLINGER                << 2519   //           1 : DAHLINGER                                     
3087     //           2 : ANDREYEV                 << 2520   //           2 : ANDREYEV                                      
3088                                               << 2521 
3089     G4double aa = 0.0, zz = 0.0, i = 0.0, z2a << 2522   G4double aa = 0.0, zz = 0.0, i = 0.0,z2a,C_S,R,W,G,G1,G2,A_CC;
3090     G4double fissilityResult = 0.0;           << 2523   G4double fissilityResult = 0.0;
3091                                               << 2524 
3092     aa = G4double(a);                         << 2525   aa = G4double(a);
3093     zz = G4double(z);                         << 2526   zz = G4double(z);
3094     i = G4double(a - 2 * z) / aa;             << 2527   i  = G4double(a-2*z) / aa;
3095     z2a = zz * zz / aa - ny * (1115. - 939. + << 2528   z2a= zz*zz/aa-ny*(1115.-939.+sn-slam)/(0.7053*std::pow(a,2./3.));
3096                                               << 2529 
3097     // myers & swiatecki droplet modell       << 2530   // myers & swiatecki droplet modell                        
3098     if (optxfis == 0)                         << 2531   if (optxfis == 0) { //then                                            
3099     { // then                                 << 2532     fissilityResult = std::pow(zz,2) / aa /50.8830e0 / (1.0e0 - 1.7826e0 * std::pow(i,2));
3100         fissilityResult = std::pow(zz, 2) / a << 2533   }
3101     }                                         << 2534 
3102                                               << 2535   if (optxfis == 1) {
3103     if (optxfis == 1)                         << 2536     // dahlinger fit:                                          
3104     {                                         << 2537     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));
3105         // dahlinger fit:                     << 2538   }
3106         fissilityResult = std::pow(zz, 2) / a << 2539 
3107                           std::pow((49.22e0 * << 2540   if (optxfis == 2) {
3108     }                                         << 2541     // dubna fit:                                              
3109                                               << 2542     fissilityResult = std::pow(zz,2) / aa  /(48.e0*(1.e0 - 17.22e0*std::pow(i,4)));
3110     if (optxfis == 2)                         << 2543   }
3111     {                                         << 2544 
3112         // dubna fit:                         << 2545   if (optxfis == 3) {
3113         fissilityResult = std::pow(zz, 2) / a << 2546 //  Fissiilty is calculated according to FRLDM, see Sierk, PRC 1984.
3114     }                                         << 2547          C_S = 21.13 * (1.0 - 2.3*i*i);
3115                                               << 2548          R = 1.16 * std::pow(aa,1.0/3.0);
3116     if (optxfis == 3)                         << 2549          W = 0.704/R;
3117     {                                         << 2550          G1 = 1.0 - 15.0/8.0*W+21.0/8.0*W*W*W;
3118         //  Fissiilty is calculated according << 2551          G2 = 1.0 + 9.0/2.0*W + 7.0*W*W + 7.0/2.0*W*W*W;
3119         C_S = 21.13 * (1.0 - 2.3 * i * i);    << 2552          G = 1.0 - 5.0*W*W*(G1 - 3.0/4.0*G2*std::exp(-2.0/W));
3120         R = 1.16 * std::pow(aa, 1.0 / 3.0);   << 2553          A_CC = 3.0/5.0 * 1.44 * G / 1.16;
3121         W = 0.704 / R;                        << 2554          fissilityResult = z2a * A_CC/(2.0*C_S);
3122         G1 = 1.0 - 15.0 / 8.0 * W + 21.0 / 8. << 2555   }
3123         G2 = 1.0 + 9.0 / 2.0 * W + 7.0 * W *  << 2556 
3124         G = 1.0 - 5.0 * W * W * (G1 - 3.0 / 4 << 2557   if (fissilityResult > 1.0) {
3125         A_CC = 3.0 / 5.0 * 1.44 * G / 1.16;   << 2558     fissilityResult = 1.0;
3126         fissilityResult = z2a * A_CC / (2.0 * << 2559   }
3127     }                                         << 2560 
3128                                               << 2561   if (fissilityResult < 0.0) {
3129     if (fissilityResult > 1.0)                << 2562     fissilityResult = 0.0;
3130     {                                         << 2563   }
3131         fissilityResult = 1.0;                << 2564 
3132     }                                         << 2565   return fissilityResult;
3133                                               << 2566 }
3134     if (fissilityResult < 0.0)                << 2567 
3135     {                                         << 2568 void G4Abla::evapora(G4double zprf, G4double aprf, G4double *ee_par, G4double jprf_par,G4double *zf_par, G4double *af_par, G4double *mtota_par,G4double *vleva_par, G4double *vxeva_par, G4double *vyeva_par,
3136         fissilityResult = 0.0;                << 2569 G4int *ff_par,G4int *fimf_par, G4double *fzimf, G4double *faimf,G4double *tkeimf_par,G4double *jprfout, G4int *inttype_par, G4int *inum_par,G4double EV_TEMP[200][6],G4int *iev_tab_temp_par, G4int *NbLam0_par)
3137     }                                         << 2570 {
3138                                               << 2571   G4double zf = zprf;
3139     return fissilityResult;                   << 2572   G4double af = aprf;
3140 }                                             << 2573   G4double ee = (*ee_par);
3141                                               << 2574   G4double jprf = dint(jprf_par);
3142 void G4Abla::evapora(G4double zprf,           << 2575   G4double mtota = (*mtota_par);
3143                      G4double aprf,           << 2576   G4double vleva = 0.;
3144                      G4double* ee_par,        << 2577   G4double vxeva = 0.;
3145                      G4double jprf_par,       << 2578   G4double vyeva = 0.;
3146                      G4double* zf_par,        << 2579   G4int ff = (*ff_par);
3147                      G4double* af_par,        << 2580   G4int fimf = (*fimf_par);
3148                      G4double* mtota_par,     << 2581   G4double tkeimf = (*tkeimf_par);
3149                      G4double* vleva_par,     << 2582   G4int inttype = (*inttype_par);
3150                      G4double* vxeva_par,     << 2583   G4int inum = (*inum_par);
3151                      G4double* vyeva_par,     << 2584   G4int NbLam0 = (*NbLam0_par);
3152                      G4int* ff_par,           << 2585 
3153                      G4int* fimf_par,         << 2586   //    533 C                                                                       
3154                      G4double* fzimf,         << 2587   //    534 C     INPUT:                                                            
3155                      G4double* faimf,         << 2588   //    535 C                                                                       
3156                      G4double* tkeimf_par,    << 2589   //    536 C     ZPRF, APRF, EE(EE IS MODIFIED!), JPRF                             
3157                      G4double* jprfout,       << 2590   //    537 C                                                                       
3158                      G4int* inttype_par,      << 2591   //    538 C     PROJECTILE AND TARGET PARAMETERS + CROSS SECTIONS                 
3159                      G4int* inum_par,         << 2592   //    539 C     COMMON /ABRAMAIN/ AP,ZP,AT,ZT,EAP,BETA,BMAXNUC,CRTOT,CRNUC,       
3160                      G4double EV_TEMP[indexpa << 2593   //    540 C                       R_0,R_P,R_T, IMAX,IRNDM,PI,                     
3161                      G4int* iev_tab_temp_par, << 2594   //    541 C                       BFPRO,SNPRO,SPPRO,SHELL                         
3162                      G4int* NbLam0_par)       << 2595   //    542 C                                                                       
3163 {                                             << 2596   //    543 C     AP,ZP,AT,ZT   - PROJECTILE AND TARGET MASSES                      
3164     G4double zf = zprf;                       << 2597   //    544 C     EAP,BETA      - BEAM ENERGY PER NUCLEON, V/C                      
3165     G4double af = aprf;                       << 2598   //    545 C     BMAXNUC       - MAX. IMPACT PARAMETER FOR NUCL. REAC.             
3166     G4double ee = (*ee_par);                  << 2599   //    546 C     CRTOT,CRNUC   - TOTAL AND NUCLEAR REACTION CROSS SECTION          
3167     G4double jprf = dint(jprf_par);           << 2600   //    547 C     R_0,R_P,R_T,  - RADIUS PARAMETER, PROJECTILE+ TARGET RADII        
3168     G4double mtota = (*mtota_par);            << 2601   //    548 C     IMAX,IRNDM,PI - MAXIMUM NUMBER OF EVENTS, DUMMY, 3.141...         
3169     G4double vleva = 0.;                      << 2602   //    549 C     BFPRO         - FISSION BARRIER OF THE PROJECTILE                 
3170     G4double vxeva = 0.;                      << 2603   //    550 C     SNPRO         - NEUTRON SEPARATION ENERGY OF THE PROJECTILE       
3171     G4double vyeva = 0.;                      << 2604   //    551 C     SPPRO         - PROTON    "           "   "    "   "              
3172     G4int ff = (*ff_par);                     << 2605   //    552 C     SHELL         - GROUND STATE SHELL CORRECTION                     
3173     G4int fimf = (*fimf_par);                 << 2606   //    553 C                                                                       
3174     G4double tkeimf = (*tkeimf_par);          << 2607   //    554 C---------------------------------------------------------------------  
3175     G4int inttype = (*inttype_par);           << 2608   //    555 C     FISSION BARRIERS                                                  
3176     G4int inum = (*inum_par);                 << 2609   //    556 C     COMMON /FB/     EFA                                               
3177     G4int NbLam0 = (*NbLam0_par);             << 2610   //    557 C     EFA    - ARRAY OF FISSION BARRIERS                                
3178                                               << 2611   //    558 C---------------------------------------------------------------------  
3179     //    533 C                               << 2612   //    559 C     OUTPUT:                                                           
3180     //    534 C     INPUT:                    << 2613   //    560 C              ZF, AF, MTOTA, PLEVA, PTEVA, FF, INTTYPE, INUM           
3181     //    535 C                               << 2614   //    561 C                                                                       
3182     //    536 C     ZPRF, APRF, EE(EE IS MODI << 2615   //    562 C     ZF,AF - CHARGE AND MASS OF FINAL FRAGMENT AFTER EVAPORATION       
3183     //    537 C                               << 2616   //    563 C     MTOTA _ NUMBER OF EVAPORATED ALPHAS                               
3184     //    538 C     PROJECTILE AND TARGET PAR << 2617   //    564 C     PLEVA,PXEVA,PYEVA - MOMENTUM RECOIL BY EVAPORATION               
3185     //    539 C     COMMON /ABRAMAIN/         << 2618   //    565 C     INTTYPE - TYPE OF REACTION 0/1 NUCLEAR OR ELECTROMAGNETIC         
3186     //    AP,ZP,AT,ZT,EAP,BETA,BMAXNUC,CRTOT, << 2619   //    566 C     FF      - 0/1 NO FISSION / FISSION EVENT                          
3187     //    IMAX,IRNDM,PI, 541  C               << 2620   //    567 C     INUM    - EVENTNUMBER                                             
3188     //    542 C                               << 2621   //    568 C   ____________________________________________________________________
3189     //    543 C     AP,ZP,AT,ZT   - PROJECTIL << 2622   //    569 C  /                                                                    
3190     //    544 C     EAP,BETA      - BEAM ENER << 2623   //    570 C  /  CALCUL DE LA MASSE ET CHARGE FINALES D'UNE CHAINE D'EVAPORATION   
3191     //    545 C     BMAXNUC       - MAX. IMPA << 2624   //    571 C  /                                                                    
3192     //    546 C     CRTOT,CRNUC   - TOTAL AND << 2625   //    572 C  /  PROCEDURE FOR CALCULATING THE FINAL MASS AND CHARGE VALUES OF A   
3193     //    547 C     R_0,R_P,R_T,  - RADIUS PA << 2626   //    573 C  /  SPECIFIC EVAPORATION CHAIN, STARTING POINT DEFINED BY (APRF, ZPRF,
3194     //    548 C     IMAX,IRNDM,PI - MAXIMUM N << 2627   //    574 C  /  EE)                                                               
3195     //    549 C     BFPRO         - FISSION B << 2628   //    575 C  /  On ajoute les 3 composantes de l'impulsion (PXEVA,PYEVA,PLEVA)
3196     //    550 C     SNPRO         - NEUTRON S << 2629   //    576 C  /    (actuellement PTEVA n'est pas correct; mauvaise norme...)                                               
3197     //    PROJECTILE 551  C     SPPRO         << 2630   //    577 C  /____________________________________________________________________
3198     //    552 C     SHELL         - GROUND ST << 2631   //    578 C                                                                       
3199     //    553 C                               << 2632   //    612 C                                                                       
3200     //    554                                 << 2633   //    613 C-----------------------------------------------------------------------
3201     //    C---------------------------------- << 2634   //    614 C     IRNDM             DUMMY ARGUMENT FOR RANDOM-NUMBER FUNCTION       
3202     //    555 C     FISSION BARRIERS          << 2635   //    615 C     SORTIE   LOCAL    HELP VARIABLE TO END THE EVAPORATION CHAIN      
3203     //    556 C     COMMON /FB/     EFA       << 2636   //    616 C     ZF                NUCLEAR CHARGE OF THE FRAGMENT                  
3204     //    557 C     EFA    - ARRAY OF FISSION << 2637   //    617 C     ZPRF              NUCLEAR CHARGE OF THE PREFRAGMENT               
3205     //    558                                 << 2638   //    618 C     AF                MASS NUMBER OF THE FRAGMENT                     
3206     //    C---------------------------------- << 2639   //    619 C     APRF              MASS NUMBER OF THE PREFRAGMENT                  
3207     //    559 C     OUTPUT:                   << 2640   //    620 C     EPSILN            ENERGY BURNED IN EACH EVAPORATION STEP          
3208     //    560 C              ZF, AF, MTOTA, P << 2641   //    621 C     MALPHA   LOCAL    MASS CONTRIBUTION TO MTOTA IN EACH EVAPORATION  
3209     //    561 C                               << 2642   //    622 C                        STEP                                           
3210     //    562 C     ZF,AF - CHARGE AND MASS O << 2643   //    623 C     EE                EXCITATION ENERGY (VARIABLE)                    
3211     //    EVAPORATION 563 C     MTOTA _ NUMBE << 2644   //    624 C     PROBP             PROTON EMISSION PROBABILITY                     
3212     //    PLEVA,PXEVA,PYEVA - MOMENTUM RECOIL << 2645   //    625 C     PROBN             NEUTRON EMISSION PROBABILITY                    
3213     //    TYPE OF REACTION 0/1 NUCLEAR OR ELE << 2646   //    626 C     PROBA             ALPHA-PARTICLE EMISSION PROBABILITY             
3214     //    NO FISSION / FISSION EVENT 567  C   << 2647   //    627 C     PTOTL             TOTAL EMISSION PROBABILITY                      
3215     //    ___________________________________ << 2648   //    628 C     E                 LOWEST PARTICLE-THRESHOLD ENERGY                
3216     //    C  / 570  C  /  CALCUL DE LA MASSE  << 2649   //    629 C     SN                NEUTRON SEPARATION ENERGY                       
3217     //    D'EVAPORATION 571 C  /              << 2650   //    630 C     SBP               PROTON SEPARATION ENERGY PLUS EFFECTIVE COULOMB 
3218     //    572 C  /  PROCEDURE FOR CALCULATING << 2651   //    631 C                        BARRIER                                        
3219     //    OF A                                << 2652   //    632 C     SBA               ALPHA-PARTICLE SEPARATION ENERGY PLUS EFFECTIVE 
3220     //    573 C  /  SPECIFIC EVAPORATION CHAI << 2653   //    633 C                        COULOMB BARRIER                                
3221     //    (APRF, ZPRF, 574  C  /  EE) 575 C   << 2654   //    634 C     BP                EFFECTIVE PROTON COULOMB BARRIER                
3222     //    composantes de l'impulsion (PXEVA,P << 2655   //    635 C     BA                EFFECTIVE ALPHA COULOMB BARRIER                 
3223     //    576 C  /    (actuellement PTEVA n'e << 2656   //    636 C     MTOTA             TOTAL MASS OF THE EVAPORATED ALPHA PARTICLES    
3224     //    norme...) 577 C                     << 2657   //    637 C     X                 UNIFORM RANDOM NUMBER FOR NUCLEAR CHARGE        
3225     //    /__________________________________ << 2658   //    638 C     AMOINS   LOCAL    MASS NUMBER OF EVAPORATED PARTICLE              
3226     //    578 C                               << 2659   //    639 C     ZMOINS   LOCAL    NUCLEAR CHARGE OF EVAPORATED PARTICLE           
3227     //    612 C                               << 2660   //    640 C     ECP               KINETIC ENERGY OF PROTON WITHOUT COULOMB        
3228     //    613                                 << 2661   //    641 C                        REPULSION                                      
3229     //    C---------------------------------- << 2662   //    642 C     ECN               KINETIC ENERGY OF NEUTRON                       
3230     //    614 C     IRNDM             DUMMY A << 2663   //    643 C     ECA               KINETIC ENERGY OF ALPHA PARTICLE WITHOUT COULOMB
3231     //    FUNCTION 615  C     SORTIE   LOCAL  << 2664   //    644 C                        REPULSION                                      
3232     //    EVAPORATION CHAIN 616 C     ZF      << 2665   //    645 C     PLEVA             TRANSVERSAL RECOIL MOMENTUM OF EVAPORATION      
3233     //    FRAGMENT 617  C     ZPRF            << 2666   //    646 C     PTEVA             LONGITUDINAL RECOIL MOMENTUM OF EVAPORATION     
3234     //    PREFRAGMENT 618 C     AF            << 2667   //    647 C     FF                FISSION FLAG                                    
3235     //    C     APRF              MASS NUMBER << 2668   //    648 C     INTTYPE           INTERACTION TYPE FLAG                           
3236     //    620 C     EPSILN            ENERGY  << 2669   //    649 C     RNDX              RECOIL MOMENTUM IN X-DIRECTION IN A SINGLE STEP 
3237     //    621 C     MALPHA   LOCAL    MASS CO << 2670   //    650 C     RNDY              RECOIL MOMENTUM IN Y-DIRECTION IN A SINGLE STEP 
3238     //    EVAPORATION 622 C                   << 2671   //    651 C     RNDZ              RECOIL MOMENTUM IN Z-DIRECTION IN A SINGLE STEP 
3239     //    EXCITATION ENERGY (VARIABLE) 624  C << 2672   //    652 C     RNDN              NORMALIZATION OF RECOIL MOMENTUM FOR EACH STEP  
3240     //    EMISSION PROBABILITY 625  C     PRO << 2673   //    653 C-----------------------------------------------------------------------
3241     //    PROBABILITY 626 C     PROBA         << 2674   //    654 C                                                                       
3242     //    PROBABILITY 627 C     PTOTL         << 2675   //                        
3243     //    C     E                 LOWEST PART << 2676   G4double epsiln = 0.0, probp = 0.0, probd = 0.0, probt = 0.0, probn = 0.0, probhe = 0.0, proba = 0.0, probg = 0.0, probimf=0.0, problamb0 = 0.0, ptotl = 0.0, e = 0.0, tcn = 0.0;  
3244     //    NEUTRON SEPARATION ENERGY 630 C     << 2677   G4double sn = 0.0, sbp = 0.0, sbd = 0.0, sbt = 0.0, sbhe = 0.0, sba = 0.0, x = 0.0, amoins = 0.0, zmoins = 0.0,sp = 0.0, sd = 0.0, st = 0.0, she = 0.0, sa = 0.0, slamb0 = 0.0;
3245     //    SEPARATION ENERGY PLUS EFFECTIVE CO << 2678   G4double ecn = 0.0, ecp = 0.0, ecd = 0.0, ect = 0.0,eche = 0.0,eca = 0.0, ecg = 0.0, eclamb0 = 0.0, bp = 0.0, bd = 0.0, bt = 0.0, bhe = 0.0, ba = 0.0;
3246     //    ALPHA-PARTICLE SEPARATION ENERGY PL << 2679   G4double zimf= 0.0,aimf= 0.0,bimf= 0.0,sbimf= 0.0,timf= 0.0;
3247     //    BARRIER 634 C     BP                << 2680   G4int itest = 0, sortie=0;
3248     //    635 C     BA                EFFECTI << 2681   G4double probf = 0.0;
3249     //    636 C     MTOTA             TOTAL M << 2682   G4double ctet1 = 0.0, stet1 = 0.0, phi1 = 0.0;
3250     //    PARTICLES 637 C     X               << 2683   G4double rnd = 0.0;
3251     //    NUCLEAR CHARGE                      << 2684   G4double ef = 0.0;
3252     //    638 C     AMOINS   LOCAL    MASS NU << 2685   G4double ts1 = 0.0;
3253     //    639 C     ZMOINS   LOCAL    NUCLEAR << 2686   G4int fgamma = 0, gammadecay = 0, flamb0decay=0;
3254     //    640 C     ECP               KINETIC << 2687   G4double pc = 0.0, malpha = 0.0;
3255     //    641 C                        REPULS << 2688   G4double jprfn=0.0, jprfp=0.0, jprfd=0.0, jprft=0.0, jprfhe=0.0, jprfa=0.0, jprflamb0 = 0.0;
3256     //    642 C     ECN               KINETIC << 2689   G4double tsum = 0.0;
3257     //    643 C     ECA               KINETIC << 2690   G4int twon;
3258     //    COULOMB 644 C                       << 2691 
3259     //    TRANSVERSAL RECOIL MOMENTUM OF EVAP << 2692   const G4double c = 29.9792458;
3260     //    RECOIL MOMENTUM OF EVAPORATION 647  << 2693   const G4double mu = 931.494;
3261     //    FLAG 648  C     INTTYPE           I << 2694   const G4double mu2 = 931.494*931.494;
3262     //    649 C     RNDX              RECOIL  << 2695 
3263     //    SINGLE STEP 650 C     RNDY          << 2696   G4double pleva = 0.0;
3264     //    IN A SINGLE STEP 651  C     RNDZ    << 2697   G4double pxeva = 0.0;
3265     //    Z-DIRECTION IN A SINGLE STEP        << 2698   G4double pyeva = 0.0;
3266     //    652 C     RNDN              NORMALI << 2699   G4int IEV_TAB_TEMP=0;
3267     //    EACH STEP 653                       << 2700 
3268     //    C---------------------------------- << 2701   for(G4int I1=0;I1<200;I1++)
3269     //    654 C                               << 2702   for(G4int I2=0;I2<6;I2++)
3270     //                                        << 2703   EV_TEMP[I1][I2] = 0.0;
3271     G4double epsiln = 0.0, probp = 0.0, probd << 2704 //
3272              probimf = 0.0, problamb0 = 0.0,  << 2705   ff = 0;
3273     G4double sn = 0.0, sbp = 0.0, sbd = 0.0,  << 2706   itest = 0;
3274              sp = 0.0, sd = 0.0, st = 0.0, sh << 2707 //
3275     G4double ecn = 0.0, ecp = 0.0, ecd = 0.0, << 2708   evapora10:
3276              bd = 0.0, bt = 0.0, bhe = 0.0, b << 2709   //
3277     G4double zimf = 0.0, aimf = 0.0, bimf = 0 << 2710   // calculation of the probabilities for the different decay channels     
3278     G4int itest = 0, sortie = 0;              << 2711   // plus separation energies and kinetic energies of the particles  
3279     G4double probf = 0.0;                     << 2712   //
3280     G4double ctet1 = 0.0, stet1 = 0.0, phi1 = << 2713   if(ee<0.|| zf<3.)goto evapora100;
3281     G4double rnd = 0.0;                       << 2714   direct(zf,af,ee,jprf,&probp,&probd,&probt,&probn,&probhe,&proba,&probg,&probimf,&probf,&problamb0,&ptotl,
3282     G4double ef = 0.0;                        << 2715    &sn,&sbp,&sbd,&sbt,&sbhe,&sba,&slamb0,
3283     G4double ts1 = 0.0;                       << 2716          &ecn,&ecp,&ecd,&ect,&eche,&eca,&ecg,&eclamb0,
3284     G4int fgamma = 0, gammadecay = 0, flamb0d << 2717          &bp,&bd,&bt,&bhe,&ba,&sp,&sd,&st,&she,&sa,&ef,&ts1,inttype,inum,itest,&sortie,&tcn,
3285     G4double pc = 0.0, malpha = 0.0;          << 2718          &jprfn, &jprfp, &jprfd, &jprft, &jprfhe, &jprfa, &jprflamb0, &tsum, NbLam0);
3286     G4double jprfn = 0.0, jprfp = 0.0, jprfd  << 2719 //
3287     G4double tsum = 0.0;                      << 2720 // HERE THE FINAL STEPS OF THE EVAPORATION ARE CALCULATED
3288     G4int twon;                               << 2721 //
3289                                               << 2722   if(ptotl==0.0) goto evapora100;
3290     const G4double c = 29.9792458;            << 
3291     const G4double mu = 931.494;              << 
3292     const G4double mu2 = 931.494 * 931.494;   << 
3293                                               << 
3294     G4double pleva = 0.0;                     << 
3295     G4double pxeva = 0.0;                     << 
3296     G4double pyeva = 0.0;                     << 
3297     G4int IEV_TAB_TEMP = 0;                   << 
3298                                               << 
3299     for (G4int I1 = 0; I1 < indexpart; I1++)  << 
3300         for (G4int I2 = 0; I2 < 6; I2++)      << 
3301             EV_TEMP[I1][I2] = 0.0;            << 
3302     //                                        << 
3303     ff = 0;                                   << 
3304     itest = 0;                                << 
3305     //                                        << 
3306 evapora10:                                    << 
3307     //                                        << 
3308     // calculation of the probabilities for t << 
3309     // plus separation energies and kinetic e << 
3310     //                                        << 
3311     if (ee < 0. || zf < 3.)                   << 
3312         goto evapora100;                      << 
3313     direct(zf,                                << 
3314            af,                                << 
3315            ee,                                << 
3316            jprf,                              << 
3317            &probp,                            << 
3318            &probd,                            << 
3319            &probt,                            << 
3320            &probn,                            << 
3321            &probhe,                           << 
3322            &proba,                            << 
3323            &probg,                            << 
3324            &probimf,                          << 
3325            &probf,                            << 
3326            &problamb0,                        << 
3327            &ptotl,                            << 
3328            &sn,                               << 
3329            &sbp,                              << 
3330            &sbd,                              << 
3331            &sbt,                              << 
3332            &sbhe,                             << 
3333            &sba,                              << 
3334            &slamb0,                           << 
3335            &ecn,                              << 
3336            &ecp,                              << 
3337            &ecd,                              << 
3338            &ect,                              << 
3339            &eche,                             << 
3340            &eca,                              << 
3341            &ecg,                              << 
3342            &eclamb0,                          << 
3343            &bp,                               << 
3344            &bd,                               << 
3345            &bt,                               << 
3346            &bhe,                              << 
3347            &ba,                               << 
3348            &sp,                               << 
3349            &sd,                               << 
3350            &st,                               << 
3351            &she,                              << 
3352            &sa,                               << 
3353            &ef,                               << 
3354            &ts1,                              << 
3355            inttype,                           << 
3356            inum,                              << 
3357            itest,                             << 
3358            &sortie,                           << 
3359            &tcn,                              << 
3360            &jprfn,                            << 
3361            &jprfp,                            << 
3362            &jprfd,                            << 
3363            &jprft,                            << 
3364            &jprfhe,                           << 
3365            &jprfa,                            << 
3366            &jprflamb0,                        << 
3367            &tsum,                             << 
3368            NbLam0);                           << 
3369     //                                        << 
3370     // HERE THE FINAL STEPS OF THE EVAPORATIO << 
3371     //                                        << 
3372     if (ptotl == 0.0)                         << 
3373         goto evapora100;                      << 
3374                                               << 
3375     e = dmin1(sba, sbhe, dmin1(sbt, sbhe, dmi << 
3376                                               << 
3377     if (e > 1e30)                             << 
3378         std::cout << "ERROR AT THE EXIT OF EV << 
3379                                               << 
3380     if (sortie == 1)                          << 
3381     {                                         << 
3382         if (probn != 0.0)                     << 
3383         {                                     << 
3384             amoins = 1.0;                     << 
3385             zmoins = 0.0;                     << 
3386             epsiln = sn + ecn;                << 
3387             pc = std::sqrt(std::pow((1.0 + (e << 
3388             malpha = 0.0;                     << 
3389             fgamma = 0;                       << 
3390             fimf = 0;                         << 
3391             flamb0decay = 0;                  << 
3392             gammadecay = 0;                   << 
3393         }                                     << 
3394         else if (probp != 0.0)                << 
3395         {                                     << 
3396             amoins = 1.0;                     << 
3397             zmoins = 1.0;                     << 
3398             epsiln = sp + ecp;                << 
3399             pc = std::sqrt(std::pow((1.0 + ec << 
3400             malpha = 0.0;                     << 
3401             fgamma = 0;                       << 
3402             fimf = 0;                         << 
3403             flamb0decay = 0;                  << 
3404             gammadecay = 0;                   << 
3405         }                                     << 
3406         else if (probd != 0.0)                << 
3407         {                                     << 
3408             amoins = 2.0;                     << 
3409             zmoins = 1.0;                     << 
3410             epsiln = sd + ecd;                << 
3411             pc = std::sqrt(std::pow((1.0 + ec << 
3412             malpha = 0.0;                     << 
3413             fgamma = 0;                       << 
3414             fimf = 0;                         << 
3415             flamb0decay = 0;                  << 
3416             gammadecay = 0;                   << 
3417         }                                     << 
3418         else if (probt != 0.0)                << 
3419         {                                     << 
3420             amoins = 3.0;                     << 
3421             zmoins = 1.0;                     << 
3422             epsiln = st + ect;                << 
3423             pc = std::sqrt(std::pow((1.0 + ec << 
3424             malpha = 0.0;                     << 
3425             fgamma = 0;                       << 
3426             fimf = 0;                         << 
3427             flamb0decay = 0;                  << 
3428             gammadecay = 0;                   << 
3429         }                                     << 
3430         else if (probhe != 0.0)               << 
3431         {                                     << 
3432             amoins = 3.0;                     << 
3433             zmoins = 2.0;                     << 
3434             epsiln = she + eche;              << 
3435             pc = std::sqrt(std::pow((1.0 + ec << 
3436             malpha = 0.0;                     << 
3437             fgamma = 0;                       << 
3438             fimf = 0;                         << 
3439             flamb0decay = 0;                  << 
3440             gammadecay = 0;                   << 
3441         }                                     << 
3442         else                                  << 
3443         {                                     << 
3444             if (proba != 0.0)                 << 
3445             {                                 << 
3446                 amoins = 4.0;                 << 
3447                 zmoins = 2.0;                 << 
3448                 epsiln = sa + eca;            << 
3449                 pc = std::sqrt(std::pow((1.0  << 
3450                 malpha = 4.0;                 << 
3451                 fgamma = 0;                   << 
3452                 fimf = 0;                     << 
3453                 flamb0decay = 0;              << 
3454                 gammadecay = 0;               << 
3455             }                                 << 
3456         }                                     << 
3457         goto direct99;                        << 
3458     }                                         << 
3459                                                  2723 
3460     // here the normal evaporation cascade st << 2724    e = dmin1(sba,sbhe,dmin1(sbt,sbhe,dmin1(sn,sbp,sbd)));
3461                                                  2725 
3462     // random number for the evaporation      << 2726   if(e>1e30)std::cout << "ERROR AT THE EXIT OF EVAPORA,E>1.D30,AF="<< af << " ZF=" << zf << std::endl;
3463     x = G4AblaRandom::flat() * ptotl;         << 
3464                                                  2727 
3465     itest = 0;                                << 2728   if(sortie==1){
3466     if (x < proba)                            << 2729    if (probn!=0.0) {
3467     {                                         << 2730     amoins = 1.0;
3468         // alpha evaporation                  << 2731     zmoins = 0.0;
3469         amoins = 4.0;                         << 2732     epsiln = sn + ecn;
3470         zmoins = 2.0;                         << 2733     pc = std::sqrt(std::pow((1.0 + (ecn)/9.3956e2),2.) - 1.0) * 9.3956e2;
3471         epsiln = sa + eca;                    << 2734     malpha = 0.0;
3472         pc = std::sqrt(std::pow((1.0 + eca /  << 2735     fgamma = 0;
3473         malpha = 4.0;                         << 2736     fimf = 0;
3474         fgamma = 0;                           << 2737     flamb0decay=0;
3475         fimf = 0;                             << 2738     gammadecay = 0;
3476         ff = 0;                               << 2739    }
3477         flamb0decay = 0;                      << 2740    else if(probp!=0.0){
3478         gammadecay = 0;                       << 2741     amoins = 1.0;
3479         jprf = jprfa;                         << 2742     zmoins = 1.0;
3480     }                                         << 2743     epsiln = sp + ecp;
3481     else if (x < proba + probhe)              << 2744     pc = std::sqrt(std::pow((1.0 + ecp/9.3827e2),2.) - 1.0) * 9.3827e2;
3482     {                                         << 2745     malpha = 0.0;
3483         // He3 evaporation                    << 2746     fgamma = 0;
3484         amoins = 3.0;                         << 2747     fimf = 0;
3485         zmoins = 2.0;                         << 2748     flamb0decay=0;
3486         epsiln = she + eche;                  << 2749     gammadecay = 0;
3487         pc = std::sqrt(std::pow((1.0 + eche / << 2750    }
3488         malpha = 0.0;                         << 2751    else if(probd!=0.0){
3489         fgamma = 0;                           << 2752     amoins = 2.0;
3490         fimf = 0;                             << 2753     zmoins = 1.0;
3491         ff = 0;                               << 2754     epsiln = sd + ecd;
3492         flamb0decay = 0;                      << 2755     pc = std::sqrt(std::pow((1.0 + ecd/1.875358e3),2) - 1.0) * 1.875358e3;
3493         gammadecay = 0;                       << 2756     malpha = 0.0;
3494         jprf = jprfhe;                        << 2757     fgamma = 0;
3495     }                                         << 2758     fimf = 0;
3496     else if (x < proba + probhe + probt)      << 2759     flamb0decay=0;
3497     {                                         << 2760     gammadecay = 0;
3498         // triton evaporation                 << 2761    }
3499         amoins = 3.0;                         << 2762    else if(probt!=0.0){
3500         zmoins = 1.0;                         << 2763     amoins = 3.0;
3501         epsiln = st + ect;                    << 2764     zmoins = 1.0;
3502         pc = std::sqrt(std::pow((1.0 + ect /  << 2765     epsiln = st + ect;
3503         malpha = 0.0;                         << 2766     pc = std::sqrt(std::pow((1.0 + ect/2.80828e3),2) - 1.0) * 2.80828e3;
3504         fgamma = 0;                           << 2767     malpha = 0.0;
3505         fimf = 0;                             << 2768     fgamma = 0;
3506         ff = 0;                               << 2769     fimf = 0;
3507         flamb0decay = 0;                      << 2770     flamb0decay=0;
3508         gammadecay = 0;                       << 2771     gammadecay = 0;
3509         jprf = jprft;                         << 2772    }
3510     }                                         << 2773    else if(probhe!=0.0){
3511     else if (x < proba + probhe + probt + pro << 2774     amoins = 3.0;
3512     {                                         << 2775     zmoins = 2.0;
3513         // deuteron evaporation               << 2776     epsiln = she + eche;
3514         amoins = 2.0;                         << 2777     pc = std::sqrt(std::pow((1.0 + eche/2.80826e3),2) - 1.0) * 2.80826e3;
3515         zmoins = 1.0;                         << 2778     malpha = 0.0;
3516         epsiln = sd + ecd;                    << 2779     fgamma = 0;
3517         pc = std::sqrt(std::pow((1.0 + ecd /  << 2780     fimf = 0;
3518         malpha = 0.0;                         << 2781     flamb0decay=0;
3519         fgamma = 0;                           << 2782     gammadecay = 0;
3520         fimf = 0;                             << 2783    }
3521         ff = 0;                               << 2784    else{ if(proba!=0.0){
3522         flamb0decay = 0;                      << 2785     amoins = 4.0;
3523         gammadecay = 0;                       << 2786     zmoins = 2.0;
3524         jprf = jprfd;                         << 2787     epsiln = sa + eca;
3525     }                                         << 2788     pc = std::sqrt(std::pow((1.0 + eca/3.72834e3),2) - 1.0) * 3.72834e3;
3526     else if (x < proba + probhe + probt + pro << 2789     malpha = 4.0;
3527     {                                         << 2790     fgamma = 0;
3528         // proton evaporation                 << 2791     fimf = 0;
3529         amoins = 1.0;                         << 2792     flamb0decay=0;
3530         zmoins = 1.0;                         << 2793     gammadecay = 0;
3531         epsiln = sp + ecp;                    << 
3532         pc = std::sqrt(std::pow((1.0 + ecp /  << 
3533         malpha = 0.0;                         << 
3534         fgamma = 0;                           << 
3535         fimf = 0;                             << 
3536         ff = 0;                               << 
3537         flamb0decay = 0;                      << 
3538         gammadecay = 0;                       << 
3539         jprf = jprfp;                         << 
3540     }                                         << 
3541     else if (x < proba + probhe + probt + pro << 
3542     {                                         << 
3543         // neutron evaporation                << 
3544         amoins = 1.0;                         << 
3545         zmoins = 0.0;                         << 
3546         epsiln = sn + ecn;                    << 
3547         pc = std::sqrt(std::pow((1.0 + (ecn)  << 
3548         malpha = 0.0;                         << 
3549         fgamma = 0;                           << 
3550         fimf = 0;                             << 
3551         ff = 0;                               << 
3552         flamb0decay = 0;                      << 
3553         gammadecay = 0;                       << 
3554         jprf = jprfn;                         << 
3555     }                                         << 
3556     else if (x < proba + probhe + probt + pro << 
3557     {                                         << 
3558         // lambda0 evaporation                << 
3559         amoins = 1.0;                         << 
3560         zmoins = 0.0;                         << 
3561         epsiln = slamb0 + eclamb0;            << 
3562         pc = std::sqrt(std::pow((1.0 + (eclam << 
3563         malpha = 0.0;                         << 
3564         fgamma = 0;                           << 
3565         fimf = 0;                             << 
3566         ff = 0;                               << 
3567         flamb0decay = 1;                      << 
3568         opt->nblan0 = opt->nblan0 - 1;        << 
3569         NbLam0 = NbLam0 - 1;                  << 
3570         gammadecay = 0;                       << 
3571         jprf = jprflamb0;                     << 
3572     }                                         << 
3573     else if (x < proba + probhe + probt + pro << 
3574     {                                         << 
3575         // gamma evaporation                  << 
3576         amoins = 0.0;                         << 
3577         zmoins = 0.0;                         << 
3578         epsiln = ecg;                         << 
3579         pc = ecg;                             << 
3580         malpha = 0.0;                         << 
3581         flamb0decay = 0;                      << 
3582         gammadecay = 1;                       << 
3583         // Next IF command is to shorten the  << 
3584         // only possible channel              << 
3585         if (probp == 0.0 && probn == 0.0 && p << 
3586             problamb0 == 0.0 && probimf == 0. << 
3587             fgamma = 1;                       << 
3588         fimf = 0;                             << 
3589         ff = 0;                               << 
3590     }                                         << 
3591     else if (x < proba + probhe + probt + pro << 
3592     {                                         << 
3593         // imf evaporation                    << 
3594         // AIMF and ZIMF obtained from comple << 
3595         // possible Gamma(IMF) and then rando << 
3596                                               << 
3597         G4int iloop = 0;                      << 
3598     dir1973:                                  << 
3599         imf(af, zf, tcn, ee, &zimf, &aimf, &b << 
3600         iloop++;                              << 
3601         if (iloop > 100)                      << 
3602             std::cout << "Problem in EVAPORA: << 
3603         if (zimf >= (zf - 2.0))               << 
3604             goto dir1973;                     << 
3605         if (zimf > zf / 2.0)                  << 
3606         {                                     << 
3607             zimf = zf - zimf;                 << 
3608             aimf = af - aimf;                 << 
3609         }                                     << 
3610         // These cases should in principle ne << 
3611         if (zimf == 0.0 || aimf == 0.0 || sbi << 
3612             std::cout << "warning: Look in EV << 
3613                                               << 
3614         // I sample the total kinetic energy  << 
3615         // from the distribution determined w << 
3616         // TKEIMF is the kinetic energy in th << 
3617                                               << 
3618         G4int ii = 0;                         << 
3619     dir1235:                                  << 
3620         tkeimf = fmaxhaz(timf);               << 
3621         ii++;                                 << 
3622         if (ii > 100)                         << 
3623         {                                     << 
3624             tkeimf = min(2.0 * timf, ee - sbi << 
3625             goto dir1000;                     << 
3626         }                                     << 
3627         if (tkeimf <= 0.0)                    << 
3628             goto dir1235;                     << 
3629         if (tkeimf > (ee - sbimf) && timf > 0 << 
3630             goto dir1235;                     << 
3631     dir1000:                                  << 
3632         tkeimf = tkeimf + bimf;               << 
3633                                               << 
3634         amoins = aimf;                        << 
3635         zmoins = zimf;                        << 
3636         epsiln = (sbimf - bimf) + tkeimf;     << 
3637         pc = 0.0;                             << 
3638         malpha = 0.0;                         << 
3639         fgamma = 0;                           << 
3640         fimf = 1;                             << 
3641         ff = 0;                               << 
3642         flamb0decay = 0;                      << 
3643         gammadecay = 0;                       << 
3644     }                                            2794     }
3645     else                                      << 2795    }
3646     {                                         << 2796   goto direct99;
3647         // fission                            << 2797   }
3648         // in case of fission-events the frag << 2798 
3649         // before fission occurs with excitat << 2799   // here the normal evaporation cascade starts                            
3650         // fission fragment mass distribution << 2800 
3651                                               << 2801   // random number for the evaporation
3652         amoins = 0.0;                         << 2802   x = G4AblaRandom::flat() * ptotl;
3653         zmoins = 0.0;                         << 2803 
3654         epsiln = ef;                          << 2804   itest = 0;
3655         //                                    << 2805   if (x < proba) {
3656         malpha = 0.0;                         << 2806     // alpha evaporation                                                     
3657         pc = 0.0;                             << 2807     amoins = 4.0;
3658         ff = 1;                               << 2808     zmoins = 2.0;
3659         fimf = 0;                             << 2809     epsiln = sa + eca;
3660         fgamma = 0;                           << 2810     pc = std::sqrt(std::pow((1.0 + eca/3.72834e3),2) - 1.0) * 3.72834e3;
3661         flamb0decay = 0;                      << 2811     malpha = 4.0;
3662         gammadecay = 0;                       << 2812     fgamma = 0;
3663     }                                         << 2813     fimf = 0;
3664     //                                        << 2814     ff = 0;
3665 direct99:                                     << 2815     flamb0decay=0;
3666     if (ee <= 0.01)                           << 2816     gammadecay = 0;
3667         ee = 0.01;                            << 2817     jprf=jprfa;
3668     // Davide Mancusi (DM) - 2010             << 2818   }
3669     if (gammadecay == 1 && ee < (epsiln + 0.0 << 2819   else if (x < proba+probhe) {
3670     {                                         << 2820     // He3 evaporation                                                    
                                                   >> 2821     amoins = 3.0;
                                                   >> 2822     zmoins = 2.0;
                                                   >> 2823     epsiln = she + eche;
                                                   >> 2824     pc = std::sqrt(std::pow((1.0 + eche/2.80826e3),2) - 1.0) * 2.80826e3;
                                                   >> 2825     malpha = 0.0;
                                                   >> 2826     fgamma = 0;
                                                   >> 2827     fimf = 0;
                                                   >> 2828     ff = 0;
                                                   >> 2829     flamb0decay=0;
                                                   >> 2830     gammadecay = 0;
                                                   >> 2831     jprf=jprfhe;
                                                   >> 2832   }
                                                   >> 2833   else if (x < proba+probhe+probt) {
                                                   >> 2834     // triton evaporation                                                    
                                                   >> 2835     amoins = 3.0;
                                                   >> 2836     zmoins = 1.0;
                                                   >> 2837     epsiln = st + ect;
                                                   >> 2838     pc = std::sqrt(std::pow((1.0 + ect/2.80828e3),2) - 1.0) * 2.80828e3;
                                                   >> 2839     malpha = 0.0;
                                                   >> 2840     fgamma = 0;
                                                   >> 2841     fimf = 0;
                                                   >> 2842     ff = 0;
                                                   >> 2843     flamb0decay=0;
                                                   >> 2844     gammadecay = 0;
                                                   >> 2845     jprf=jprft;
                                                   >> 2846   }
                                                   >> 2847   else if (x < proba+probhe+probt+probd) {
                                                   >> 2848     // deuteron evaporation                                                    
                                                   >> 2849     amoins = 2.0;
                                                   >> 2850     zmoins = 1.0;
                                                   >> 2851     epsiln = sd + ecd;
                                                   >> 2852     pc = std::sqrt(std::pow((1.0 + ecd/1.875358e3),2) - 1.0) * 1.875358e3;
                                                   >> 2853     malpha = 0.0;
                                                   >> 2854     fgamma = 0;
                                                   >> 2855     fimf = 0;
                                                   >> 2856     ff = 0;
                                                   >> 2857     flamb0decay=0;
                                                   >> 2858     gammadecay = 0;
                                                   >> 2859     jprf=jprfd;
                                                   >> 2860   }
                                                   >> 2861   else if (x < proba+probhe+probt+probd+probp) {
                                                   >> 2862     // proton evaporation                                                    
                                                   >> 2863     amoins = 1.0;
                                                   >> 2864     zmoins = 1.0;
                                                   >> 2865     epsiln = sp + ecp;
                                                   >> 2866     pc = std::sqrt(std::pow((1.0 + ecp/9.3827e2),2) - 1.0) * 9.3827e2;
                                                   >> 2867     malpha = 0.0;
                                                   >> 2868     fgamma = 0;
                                                   >> 2869     fimf = 0;
                                                   >> 2870     ff = 0;
                                                   >> 2871     flamb0decay=0;
                                                   >> 2872     gammadecay = 0;
                                                   >> 2873     jprf=jprfp;
                                                   >> 2874   }
                                                   >> 2875   else if (x < proba+probhe+probt+probd+probp+probn) {
                                                   >> 2876     // neutron evaporation                                                   
                                                   >> 2877     amoins = 1.0;
                                                   >> 2878     zmoins = 0.0;
                                                   >> 2879     epsiln = sn + ecn;
                                                   >> 2880     pc = std::sqrt(std::pow((1.0 + (ecn)/9.3956e2),2.) - 1.0) * 9.3956e2;
                                                   >> 2881     malpha = 0.0;
                                                   >> 2882     fgamma = 0;
                                                   >> 2883     fimf = 0;
                                                   >> 2884     ff = 0;
                                                   >> 2885     flamb0decay=0;
                                                   >> 2886     gammadecay = 0;
                                                   >> 2887     jprf=jprfn;
                                                   >> 2888   }
                                                   >> 2889   else if (x < proba+probhe+probt+probd+probp+probn+problamb0) {
                                                   >> 2890     // lambda0 evaporation  
                                                   >> 2891     amoins = 1.0;
                                                   >> 2892     zmoins = 0.0;
                                                   >> 2893     epsiln = slamb0 + eclamb0;
                                                   >> 2894     pc = std::sqrt(std::pow((1.0 + (eclamb0)/11.1568e2),2.) - 1.0) * 11.1568e2;
                                                   >> 2895     malpha = 0.0;
                                                   >> 2896     fgamma = 0;
                                                   >> 2897     fimf = 0;
                                                   >> 2898     ff = 0;
                                                   >> 2899     flamb0decay = 1;
                                                   >> 2900     opt->nblan0 = opt->nblan0 -1;
                                                   >> 2901     NbLam0 = NbLam0 -1;
                                                   >> 2902     gammadecay = 0;
                                                   >> 2903     jprf=jprflamb0;
                                                   >> 2904   }
                                                   >> 2905   else if (x < proba+probhe+probt+probd+probp+probn+problamb0+probg) {
                                                   >> 2906     // gamma evaporation                                                    
                                                   >> 2907     amoins = 0.0;
                                                   >> 2908     zmoins = 0.0;
                                                   >> 2909     epsiln = ecg;
                                                   >> 2910     pc = ecg;
                                                   >> 2911     malpha = 0.0;
                                                   >> 2912     flamb0decay = 0;
                                                   >> 2913     gammadecay = 1;
                                                   >> 2914     //Next IF command is to shorten the calculations when gamma-emission is the only
                                                   >> 2915     //possible channel
                                                   >> 2916     if(probp==0.0 && probn==0.0 && probd==0.0 && probt==0.0 && proba==0.0 && probhe==0.0 && problamb0==0.0 && probimf==0.0 && probf==0.0)fgamma = 1;
                                                   >> 2917     fimf = 0;
                                                   >> 2918     ff = 0;
                                                   >> 2919   }
                                                   >> 2920   else if (x < proba+probhe+probt+probd+probp+probn+problamb0+probg+probimf) {
                                                   >> 2921     // imf evaporation                                                   
                                                   >> 2922 // AIMF and ZIMF obtained from complete procedure (integration over all
                                                   >> 2923 // possible Gamma(IMF) and then randomly picked
                                                   >> 2924 
                                                   >> 2925    G4int iloop=0;
                                                   >> 2926    dir1973:
                                                   >> 2927    imf(af,zf,tcn,ee,&zimf,&aimf,&bimf,&sbimf,&timf,jprf);
                                                   >> 2928    iloop++;
                                                   >> 2929    if(iloop>100)std::cout << "Problem in EVAPORA: IMF called > 100 times" << std::endl;
                                                   >> 2930    if(zimf>=(zf-2.0)) goto dir1973;
                                                   >> 2931    if(zimf>zf/2.0){
                                                   >> 2932           zimf = zf - zimf;
                                                   >> 2933           aimf = af - aimf;
                                                   >> 2934    }
                                                   >> 2935    // These cases should in principle never happen
                                                   >> 2936    if(zimf==0.0 || aimf==0.0 || sbimf>ee)std::cout << "warning: Look in EVAPORA CALL IMF" << std::endl;
                                                   >> 2937 
                                                   >> 2938 // I sample the total kinetic energy consumed by the system of two nuclei
                                                   >> 2939 // from the distribution determined with the temperature at saddle point
                                                   >> 2940 // TKEIMF is the kinetic energy in the centre of mass of IMF and its partner
                                                   >> 2941 
                                                   >> 2942    G4int ii=0;
                                                   >> 2943    dir1235:
                                                   >> 2944    tkeimf= fmaxhaz(timf);
                                                   >> 2945    ii++;
                                                   >> 2946    if(ii>100){
                                                   >> 2947    tkeimf=min(2.0*timf,ee-sbimf);
                                                   >> 2948    goto dir1000;
                                                   >> 2949    }
                                                   >> 2950    if(tkeimf<=0.0)goto dir1235;
                                                   >> 2951    if(tkeimf>(ee-sbimf) && timf>0.5)goto dir1235;
                                                   >> 2952    dir1000:
                                                   >> 2953    tkeimf = tkeimf + bimf;
                                                   >> 2954 
                                                   >> 2955     amoins = aimf;
                                                   >> 2956     zmoins = zimf;
                                                   >> 2957     epsiln = (sbimf-bimf) + tkeimf;
                                                   >> 2958     pc = 0.0;
                                                   >> 2959     malpha = 0.0;
                                                   >> 2960     fgamma = 0; 
                                                   >> 2961     fimf = 1; 
                                                   >> 2962     ff = 0;
                                                   >> 2963     flamb0decay = 0;
                                                   >> 2964     gammadecay = 0;
                                                   >> 2965   }
                                                   >> 2966   else {
                                                   >> 2967     // fission                                                               
                                                   >> 2968     // in case of fission-events the fragment nucleus is the mother nucleus  
                                                   >> 2969     // before fission occurs with excitation energy above the fis.- barrier. 
                                                   >> 2970     // fission fragment mass distribution is calulated in subroutine fisdis  
                                                   >> 2971 
                                                   >> 2972     amoins = 0.0;
                                                   >> 2973     zmoins = 0.0;
                                                   >> 2974     epsiln = ef;
                                                   >> 2975 //
                                                   >> 2976     malpha = 0.0;
                                                   >> 2977     pc = 0.0;
                                                   >> 2978     ff = 1;
                                                   >> 2979     fimf = 0;
                                                   >> 2980     fgamma = 0;
                                                   >> 2981     flamb0decay = 0;
                                                   >> 2982     gammadecay = 0;
                                                   >> 2983   }
                                                   >> 2984 //
                                                   >> 2985   direct99:
                                                   >> 2986   if (ee <= 0.01)ee = 0.01;
                                                   >> 2987 // Davide Mancusi (DM) - 2010
                                                   >> 2988       if(gammadecay==1 && ee<(epsiln+0.010)){
3671         epsiln = ee - 0.010;                     2989         epsiln = ee - 0.010;
3672         // fgamma = 1;                        << 2990        // fgamma = 1;
3673     }                                         << 2991       }
3674                                                  2992 
3675     if (epsiln < 0.0)                         << 2993       if(epsiln<0.0){
3676     {                                         << 2994        std::cout << "***WARNING epsilon<0***" << std::endl;
3677         std::cout << "***WARNING epsilon<0*** << 2995        //epsiln=0.;
3678         // epsiln=0.;                         << 2996        //PRINT*,IDECAYMODE,IDNINT(AF),IDNINT(ZF),EE,EPSILN
3679         // PRINT*,IDECAYMODE,IDNINT(AF),IDNIN << 2997       }
3680     }                                         << 2998   // calculation of the daughter nucleus                                   
3681     // calculation of the daughter nucleus    << 2999   af = af - amoins;
3682     af = af - amoins;                         << 3000   zf = zf - zmoins;
3683     zf = zf - zmoins;                         << 3001   ee = ee - epsiln;
3684     ee = ee - epsiln;                         << 3002   if (ee <= 0.01)ee = 0.01;
3685     if (ee <= 0.01)                           << 3003   mtota = mtota + malpha;
3686         ee = 0.01;                            << 3004 
3687     mtota = mtota + malpha;                   << 3005 
3688                                               << 3006   //if(amoins==2 && zmoins==0)std::cout << ee << std::endl;
3689     // if(amoins==2 && zmoins==0)std::cout << << 3007  
3690                                               << 3008 
3691 secondneutron:                                << 3009       secondneutron:
3692     if (amoins == 2 && zmoins == 0)           << 3010       if(amoins==2 && zmoins==0){twon=1;amoins=1;}else{ twon=0;}
3693     {                                         << 3011 
3694         twon = 1;                             << 3012 
3695         amoins = 1;                           << 3013 // Determination of x,y,z components of momentum from known emission momentum PC
3696     }                                         << 3014       if(ff==0 && fimf==0){
3697     else                                      << 3015         //
3698     {                                         << 3016         if(flamb0decay==1){
3699         twon = 0;                             << 3017         EV_TEMP[IEV_TAB_TEMP][0] = 0.;
3700     }                                         << 3018         EV_TEMP[IEV_TAB_TEMP][1] = -2;
3701                                               << 3019         EV_TEMP[IEV_TAB_TEMP][5] = 1.;
3702     // Determination of x,y,z components of m << 3020         }else{
3703     // PC                                     << 3021         EV_TEMP[IEV_TAB_TEMP][0] = zmoins;
3704     if (ff == 0 && fimf == 0)                 << 3022         EV_TEMP[IEV_TAB_TEMP][1] = amoins;
3705     {                                         << 3023         EV_TEMP[IEV_TAB_TEMP][5] = 0.;
3706         //                                    << 
3707         if (flamb0decay == 1)                 << 
3708         {                                     << 
3709             EV_TEMP[IEV_TAB_TEMP][0] = 0.;    << 
3710             EV_TEMP[IEV_TAB_TEMP][1] = -2;    << 
3711             EV_TEMP[IEV_TAB_TEMP][5] = 1.;    << 
3712         }                                     << 
3713         else                                  << 
3714         {                                     << 
3715             EV_TEMP[IEV_TAB_TEMP][0] = zmoins << 
3716             EV_TEMP[IEV_TAB_TEMP][1] = amoins << 
3717             EV_TEMP[IEV_TAB_TEMP][5] = 0.;    << 
3718         }                                        3024         }
3719         rnd = G4AblaRandom::flat();              3025         rnd = G4AblaRandom::flat();
3720         ctet1 = 2.0 * rnd - 1.0;              << 3026         ctet1 = 2.0*rnd - 1.0;            // z component: uniform probability between -1 and 1
3721         stet1 = std::sqrt(1.0 - std::pow(ctet << 3027         stet1 = std::sqrt(1.0 - std::pow(ctet1,2)); // component perpendicular to z
3722         rnd = G4AblaRandom::flat();              3028         rnd = G4AblaRandom::flat();
3723         phi1 = rnd * 2.0 * 3.141592654;       << 3029         phi1 = rnd*2.0*3.141592654;       // angle in x-y plane: uniform probability between 0 and 2*pi
3724                                               << 3030         G4double xcv = stet1*std::cos(phi1);// x component
3725         G4double xcv = stet1 * std::cos(phi1) << 3031         G4double ycv = stet1*std::sin(phi1);// y component
3726         G4double ycv = stet1 * std::sin(phi1) << 3032         G4double zcv = ctet1;               // z component
3727         G4double zcv = ctet1;                 << 3033 // In the CM system
3728                                               << 3034         if(gammadecay==0){
3729         if (gammadecay == 0)                  << 3035 // Light particle
3730         {                                     << 3036            G4double ETOT_LP = std::sqrt(pc*pc + amoins*amoins * mu2);
3731             // Light particle                 << 3037            if(flamb0decay==1)ETOT_LP = std::sqrt(pc*pc + 1115.683*1115.683);
3732             G4double ETOT_LP = std::sqrt(pc * << 3038            EV_TEMP[IEV_TAB_TEMP][2] = c * pc * xcv / ETOT_LP;
3733             if (flamb0decay == 1)             << 3039            EV_TEMP[IEV_TAB_TEMP][3] = c * pc * ycv / ETOT_LP;
3734                 ETOT_LP = std::sqrt(pc * pc + << 3040            EV_TEMP[IEV_TAB_TEMP][4] = c * pc * zcv / ETOT_LP;
3735             EV_TEMP[IEV_TAB_TEMP][2] = c * pc << 3041         }else{
3736             EV_TEMP[IEV_TAB_TEMP][3] = c * pc << 3042 // gamma ray
3737             EV_TEMP[IEV_TAB_TEMP][4] = c * pc << 3043            EV_TEMP[IEV_TAB_TEMP][2] = pc * xcv;
3738         }                                     << 3044            EV_TEMP[IEV_TAB_TEMP][3] = pc * ycv;
3739         else                                  << 3045            EV_TEMP[IEV_TAB_TEMP][4] = pc * zcv;
3740         {                                     << 3046         }
3741             // gamma ray                      << 3047         G4double VXOUT=0.,VYOUT=0.,VZOUT=0.;
3742             EV_TEMP[IEV_TAB_TEMP][2] = pc * x << 3048         lorentz_boost(vxeva,vyeva,vleva,
3743             EV_TEMP[IEV_TAB_TEMP][3] = pc * y << 3049             EV_TEMP[IEV_TAB_TEMP][2],EV_TEMP[IEV_TAB_TEMP][3],
3744             EV_TEMP[IEV_TAB_TEMP][4] = pc * z << 3050             EV_TEMP[IEV_TAB_TEMP][4],
3745         }                                     << 3051             &VXOUT,&VYOUT,&VZOUT);
3746         G4double VXOUT = 0., VYOUT = 0., VZOU << 
3747         lorentz_boost(vxeva,                  << 
3748                       vyeva,                  << 
3749                       vleva,                  << 
3750                       EV_TEMP[IEV_TAB_TEMP][2 << 
3751                       EV_TEMP[IEV_TAB_TEMP][3 << 
3752                       EV_TEMP[IEV_TAB_TEMP][4 << 
3753                       &VXOUT,                 << 
3754                       &VYOUT,                 << 
3755                       &VZOUT);                << 
3756         EV_TEMP[IEV_TAB_TEMP][2] = VXOUT;        3052         EV_TEMP[IEV_TAB_TEMP][2] = VXOUT;
3757         EV_TEMP[IEV_TAB_TEMP][3] = VYOUT;        3053         EV_TEMP[IEV_TAB_TEMP][3] = VYOUT;
3758         EV_TEMP[IEV_TAB_TEMP][4] = VZOUT;        3054         EV_TEMP[IEV_TAB_TEMP][4] = VZOUT;
3759         // Heavy residue                      << 3055 // Heavy residue
3760         if (gammadecay == 0)                  << 3056         if(gammadecay==0){
3761         {                                     << 3057         G4double v2 = std::pow(EV_TEMP[IEV_TAB_TEMP][2],2.) +
3762             G4double v2 = std::pow(EV_TEMP[IE << 3058              std::pow(EV_TEMP[IEV_TAB_TEMP][3],2.) +
3763                           std::pow(EV_TEMP[IE << 3059              std::pow(EV_TEMP[IEV_TAB_TEMP][4],2.);
3764             G4double gamma = 1.0 / std::sqrt( << 3060         G4double gamma = 1.0/std::sqrt(1.0 - v2 / (c*c));
3765             G4double etot_lp = amoins * mu *  << 3061         G4double etot_lp = amoins*mu * gamma;
3766             pxeva = pxeva - EV_TEMP[IEV_TAB_T << 3062         pxeva = pxeva - EV_TEMP[IEV_TAB_TEMP][2] * etot_lp / c;
3767             pyeva = pyeva - EV_TEMP[IEV_TAB_T << 3063         pyeva = pyeva - EV_TEMP[IEV_TAB_TEMP][3] * etot_lp / c;
3768             pleva = pleva - EV_TEMP[IEV_TAB_T << 3064         pleva = pleva - EV_TEMP[IEV_TAB_TEMP][4] * etot_lp / c;
3769         }                                     << 3065         }else{
3770         else                                  << 3066 // in case of gammas, EV_TEMP contains momentum components and not velocity
3771         {                                     << 3067         pxeva = pxeva - EV_TEMP[IEV_TAB_TEMP][2];
3772             // in case of gammas, EV_TEMP con << 3068         pyeva = pyeva - EV_TEMP[IEV_TAB_TEMP][3];
3773             // velocity                       << 3069         pleva = pleva - EV_TEMP[IEV_TAB_TEMP][4];
3774             pxeva = pxeva - EV_TEMP[IEV_TAB_T << 3070         }
3775             pyeva = pyeva - EV_TEMP[IEV_TAB_T << 3071         G4double pteva = std::sqrt(pxeva*pxeva + pyeva*pyeva);
3776             pleva = pleva - EV_TEMP[IEV_TAB_T << 3072 // To be checked:
3777         }                                     << 3073         G4double etot = std::sqrt ( pleva*pleva + pteva*pteva + af*af * mu2 );
3778         G4double pteva = std::sqrt(pxeva * px << 3074         vxeva = c * pxeva / etot;  // recoil velocity components of residue due to evaporation
3779         // To be checked:                     << 
3780         G4double etot = std::sqrt(pleva * ple << 
3781         vxeva = c * pxeva / etot; // recoil v << 
3782         vyeva = c * pyeva / etot;                3075         vyeva = c * pyeva / etot;
3783         vleva = c * pleva / etot;                3076         vleva = c * pleva / etot;
3784         IEV_TAB_TEMP = IEV_TAB_TEMP + 1;         3077         IEV_TAB_TEMP = IEV_TAB_TEMP + 1;
3785     }                                         << 3078       }
3786                                               << 
3787     if (twon == 1)                            << 
3788     {                                         << 
3789         goto secondneutron;                   << 
3790     }                                         << 
3791                                               << 
3792     // condition for end of evaporation       << 
3793     if (zf < 3. || (ff == 1) || (fgamma == 1) << 
3794     {                                         << 
3795         goto evapora100;                      << 
3796     }                                         << 
3797     goto evapora10;                           << 
3798                                               << 
3799 evapora100:                                   << 
3800     (*zf_par) = zf;                           << 
3801     (*af_par) = af;                           << 
3802     (*ee_par) = ee;                           << 
3803     (*faimf) = aimf;                          << 
3804     (*fzimf) = zimf;                          << 
3805     (*jprfout) = jprf;                        << 
3806     (*tkeimf_par) = tkeimf;                   << 
3807     (*mtota_par) = mtota;                     << 
3808     (*vleva_par) = vleva;                     << 
3809     (*vxeva_par) = vxeva;                     << 
3810     (*vyeva_par) = vyeva;                     << 
3811     (*ff_par) = ff;                           << 
3812     (*fimf_par) = fimf;                       << 
3813     (*inttype_par) = inttype;                 << 
3814     (*iev_tab_temp_par) = IEV_TAB_TEMP;       << 
3815     (*inum_par) = inum;                       << 
3816     (*NbLam0_par) = NbLam0;                   << 
3817     return;                                   << 
3818 }                                             << 
3819                                                  3079 
3820 void G4Abla::direct(G4double zprf,            << 3080   if(twon==1){goto secondneutron;}
3821                     G4double a,               << 
3822                     G4double ee,              << 
3823                     G4double jprf,            << 
3824                     G4double* probp_par,      << 
3825                     G4double* probd_par,      << 
3826                     G4double* probt_par,      << 
3827                     G4double* probn_par,      << 
3828                     G4double* probhe_par,     << 
3829                     G4double* proba_par,      << 
3830                     G4double* probg_par,      << 
3831                     G4double* probimf_par,    << 
3832                     G4double* probf_par,      << 
3833                     G4double* problamb0_par,  << 
3834                     G4double* ptotl_par,      << 
3835                     G4double* sn_par,         << 
3836                     G4double* sbp_par,        << 
3837                     G4double* sbd_par,        << 
3838                     G4double* sbt_par,        << 
3839                     G4double* sbhe_par,       << 
3840                     G4double* sba_par,        << 
3841                     G4double* slamb0_par,     << 
3842                     G4double* ecn_par,        << 
3843                     G4double* ecp_par,        << 
3844                     G4double* ecd_par,        << 
3845                     G4double* ect_par,        << 
3846                     G4double* eche_par,       << 
3847                     G4double* eca_par,        << 
3848                     G4double* ecg_par,        << 
3849                     G4double* eclamb0_par,    << 
3850                     G4double* bp_par,         << 
3851                     G4double* bd_par,         << 
3852                     G4double* bt_par,         << 
3853                     G4double* bhe_par,        << 
3854                     G4double* ba_par,         << 
3855                     G4double* sp_par,         << 
3856                     G4double* sd_par,         << 
3857                     G4double* st_par,         << 
3858                     G4double* she_par,        << 
3859                     G4double* sa_par,         << 
3860                     G4double* ef_par,         << 
3861                     G4double* ts1_par,        << 
3862                     G4int,                    << 
3863                     G4int inum,               << 
3864                     G4int itest,              << 
3865                     G4int* sortie,            << 
3866                     G4double* tcn,            << 
3867                     G4double* jprfn_par,      << 
3868                     G4double* jprfp_par,      << 
3869                     G4double* jprfd_par,      << 
3870                     G4double* jprft_par,      << 
3871                     G4double* jprfhe_par,     << 
3872                     G4double* jprfa_par,      << 
3873                     G4double* jprflamb0_par,  << 
3874                     G4double* tsum_par,       << 
3875                     G4int NbLam0)             << 
3876 {                                             << 
3877     G4double probp = (*probp_par);            << 
3878     G4double probd = (*probd_par);            << 
3879     G4double probt = (*probt_par);            << 
3880     G4double probn = (*probn_par);            << 
3881     G4double probhe = (*probhe_par);          << 
3882     G4double proba = (*proba_par);            << 
3883     G4double probg = (*probg_par);            << 
3884     G4double probimf = (*probimf_par);        << 
3885     G4double probf = (*probf_par);            << 
3886     G4double problamb0 = (*problamb0_par);    << 
3887     G4double ptotl = (*ptotl_par);            << 
3888     G4double sn = (*sn_par);                  << 
3889     G4double sp = (*sp_par);                  << 
3890     G4double sd = (*sd_par);                  << 
3891     G4double st = (*st_par);                  << 
3892     G4double she = (*she_par);                << 
3893     G4double sa = (*sa_par);                  << 
3894     G4double slamb0 = 0.0;                    << 
3895     G4double sbp = (*sbp_par);                << 
3896     G4double sbd = (*sbd_par);                << 
3897     G4double sbt = (*sbt_par);                << 
3898     G4double sbhe = (*sbhe_par);              << 
3899     G4double sba = (*sba_par);                << 
3900     G4double ecn = (*ecn_par);                << 
3901     G4double ecp = (*ecp_par);                << 
3902     G4double ecd = (*ecd_par);                << 
3903     G4double ect = (*ect_par);                << 
3904     G4double eche = (*eche_par);              << 
3905     G4double eca = (*eca_par);                << 
3906     G4double ecg = (*ecg_par);                << 
3907     G4double eclamb0 = (*eclamb0_par);        << 
3908     G4double bp = (*bp_par);                  << 
3909     G4double bd = (*bd_par);                  << 
3910     G4double bt = (*bt_par);                  << 
3911     G4double bhe = (*bhe_par);                << 
3912     G4double ba = (*ba_par);                  << 
3913     G4double tsum = (*tsum_par);              << 
3914                                               << 
3915     // CALCULATION OF PARTICLE-EMISSION PROBA << 
3916     // BASED ON THE SIMPLIFIED FORMULAS FOR T << 
3917     // MORETTO, ROCHESTER MEETING TO AVOID CO << 
3918     // INTENSIVE INTEGRATION OF THE LEVEL DEN << 
3919     // USES EFFECTIVE COULOMB BARRIERS AND AN << 
3920     // OF THE EVAPORATED PARTICLES            << 
3921     // COLLECTIVE ENHANCMENT OF THE LEVEL DEN << 
3922     // DYNAMICAL HINDRANCE OF FISSION IS INCL << 
3923     // APPROXIMATION. SEE A.R. JUNGHANS DIPLO << 
3924     // SHELL AND PAIRING STRUCTURES IN THE LE << 
3925                                               << 
3926     // INPUT:                                 << 
3927     // ZPRF,A,EE  CHARGE, MASS, EXCITATION EN << 
3928     // NUCLEUS                                << 
3929     // JPRF       ROOT-MEAN-SQUARED ANGULAR M << 
3930                                               << 
3931     // DEFORMATIONS AND G.S. SHELL EFFECTS    << 
3932     // COMMON /ECLD/   ECGNZ,ECFNZ,VGSLD,ALPH << 
3933                                               << 
3934     // ECGNZ - GROUND STATE SHELL CORR. FRLDM << 
3935     // ECFNZ - SHELL CORRECTION FOR THE SADDL << 
3936     // VGSLD - DIFFERENCE BETWEEN DEFORMED G. << 
3937     // ALPHA - ALPHA GROUND STATE DEFORMATION << 
3938     // BETA2 = SQRT((4PI)/5) * ALPHA          << 
3939                                               << 
3940     // OPTIONS AND PARAMETERS FOR FISSION CHA << 
3941     // COMMON /FISS/    AKAP,BET,HOMEGA,KOEFF << 
3942     //                  OPTSHP,OPTXFIS,OPTLES << 
3943     //                                        << 
3944     //  AKAP   - HBAR**2/(2* MN * R_0**2) = 1 << 
3945     //  BET    - REDUCED NUCLEAR FRICTION COE << 
3946     //  HOMEGA - CURVATURE OF THE FISSION BAR << 
3947     //  KOEFF  - COEFFICIENT FOR THE LD FISSI << 
3948     //  IFIS   - 0/1 FISSION CHANNEL OFF/ON   << 
3949     //  OPTSHP - INTEGER SWITCH FOR SHELL COR << 
3950     //           = 0 NO MICROSCOPIC CORRECTIO << 
3951     //           = 1 SHELL ,  NO PAIRING      << 
3952     //           = 2 PAIRING, NO SHELL        << 
3953     //           = 3 SHELL AND PAIRING        << 
3954     //  OPTCOL - 0/1 COLLECTIVE ENHANCEMENT S << 
3955     //  OPTXFIS- 0,1,2 FOR MYERS & SWIATECKI, << 
3956     //                 FISSILITY PARAMETER.   << 
3957     //  OPTLES - CONSTANT TEMPERATURE LEVEL D << 
3958     //  OPTCOL - 0/1 COLLECTIVE ENHANCEMENT O << 
3959                                               << 
3960     // LEVEL DENSITY PARAMETERS               << 
3961     // COMMON /ALD/    AV,AS,AK,OPTAFAN       << 
3962     //                 AV,AS,AK - VOLUME,SURF << 
3963     //                            LEVEL DENSI << 
3964     // OPTAFAN - 0/1  AF/AN >=1 OR AF/AN ==1  << 
3965     //           RECOMMENDED IS OPTAFAN = 0   << 
3966                                               << 
3967     // FISSION BARRIERS                       << 
3968     // COMMON /FB/     EFA                    << 
3969     // EFA    - ARRAY OF FISSION BARRIERS     << 
3970                                               << 
3971     // OUTPUT: PROBN,PROBP,PROBA,PROBF,PTOTL: << 
3972     // - EMISSION PROBABILITIES FOR N EUTRON, << 
3973     // PARTICLES, F ISSION AND NORMALISATION  << 
3974     // SN,SBP,SBA: SEPARATION ENERGIES N P A  << 
3975     // INCLUDING EFFECTIVE BARRIERS           << 
3976     // ECN,ECP,ECA,BP,BA                      << 
3977     // - AVERAGE KINETIC ENERGIES (2*T) AND E << 
3978                                               << 
3979     G4double bk = 0.0;                        << 
3980     G4double bksp = 0.0;                      << 
3981     G4double bc = 0.0;                        << 
3982     G4int afp = 0;                            << 
3983     G4double het = 0.0;                       << 
3984     G4double at = 0.0;                        << 
3985     G4double bs = 0.0;                        << 
3986     G4double bssp = 0.0;                      << 
3987     G4double bshell = 0.0;                    << 
3988     G4double cf = 0.0;                        << 
3989     G4double defbet = 0.0;                    << 
3990     G4double densa = 0.0;                     << 
3991     G4double denshe = 0.0;                    << 
3992     G4double densg = 0.0;                     << 
3993     G4double densn = 0.0;                     << 
3994     G4double densp = 0.0;                     << 
3995     G4double densd = 0.0;                     << 
3996     G4double denst = 0.0;                     << 
3997     G4double denslamb0 = 0.0;                 << 
3998     G4double eer = 0.0;                       << 
3999     G4double ecor = 0.0;                      << 
4000     G4double ef = 0.0;                        << 
4001     G4double ft = 0.0;                        << 
4002     G4double timf = 0.0;                      << 
4003     G4double qr = 0.0;                        << 
4004     G4double qrcn = 0.0;                      << 
4005     G4double omegap = 0.0;                    << 
4006     G4double omegad = 0.0;                    << 
4007     G4double omegat = 0.0;                    << 
4008     G4double omegahe = 0.0;                   << 
4009     G4double omegaa = 0.0;                    << 
4010     G4double ga = 0.0;                        << 
4011     G4double ghe = 0.0;                       << 
4012     G4double gf = 0.0;                        << 
4013     G4double gff = 0.0;                       << 
4014     G4double gn = 0.0;                        << 
4015     G4double gp = 0.0;                        << 
4016     G4double gd = 0.0;                        << 
4017     G4double gt = 0.0;                        << 
4018     G4double gg = 0.0;                        << 
4019     G4double glamb0 = 0.0;                    << 
4020     G4double gimf = 0.0;                      << 
4021     G4double gimf3 = 0.0;                     << 
4022     G4double gimf5 = 0.0;                     << 
4023     G4double bimf = 0.0;                      << 
4024     G4double bsimf = 0.0;                     << 
4025     G4double sbimf = 0.0;                     << 
4026     G4double densimf = 0.0;                   << 
4027     G4double defbetimf = 0.0;                 << 
4028     G4double b_imf = 0.0;                     << 
4029     G4double a_imf = 0.0;                     << 
4030     G4double omegaimf = 0.0;                  << 
4031     G4int izimf = 0;                          << 
4032     G4double zimf = 0.0;                      << 
4033     G4double gsum = 0.0;                      << 
4034     G4double gtotal = 0.0;                    << 
4035     G4double hbar = 6.582122e-22;             << 
4036     G4double emin = 0.0;                      << 
4037     G4int il = 0;                             << 
4038     G4int choice_fisspart = 0;                << 
4039     G4double t_lapse = 0.0;                   << 
4040     G4int imaxwell = 0;                       << 
4041     G4int in = 0;                             << 
4042     G4int iz = 0;                             << 
4043     G4int ind = 0;                            << 
4044     G4int izd = 0;                            << 
4045     G4int j = 0;                              << 
4046     G4int k = 0;                              << 
4047     G4double ma1z = 0.0;                      << 
4048     G4double mazz = 0.0;                      << 
4049     G4double ma2z = 0.0;                      << 
4050     G4double ma1z1 = 0.0;                     << 
4051     G4double ma2z1 = 0.0;                     << 
4052     G4double ma3z1 = 0.0;                     << 
4053     G4double ma3z2 = 0.0;                     << 
4054     G4double ma4z2 = 0.0;                     << 
4055     G4double maz = 0.0;                       << 
4056     G4double nt = 0.0;                        << 
4057     G4double pi = 3.1415926535;               << 
4058     G4double pt = 0.0;                        << 
4059     G4double dt = 0.0;                        << 
4060     G4double tt = 0.0;                        << 
4061     G4double lamb0t = 0.0;                    << 
4062     G4double gtemp = 0.0;                     << 
4063     G4double rdt = 0.0;                       << 
4064     G4double rtt = 0.0;                       << 
4065     G4double rat = 0.0;                       << 
4066     G4double rhet = 0.0;                      << 
4067     G4double refmod = 0.0;                    << 
4068     G4double rnt = 0.0;                       << 
4069     G4double rpt = 0.0;                       << 
4070     G4double rlamb0t = 0.0;                   << 
4071     G4double sbfis = 1.e40;                   << 
4072     G4double segs = 0.0;                      << 
4073     G4double selmax = 0.0;                    << 
4074     G4double tauc = 0.0;                      << 
4075     G4double temp = 0.0;                      << 
4076     G4double ts1 = 0.0;                       << 
4077     G4double xx = 0.0;                        << 
4078     G4double y = 0.0;                         << 
4079     G4double k1 = 0.0;                        << 
4080     G4double omegasp = 0.0;                   << 
4081     G4double homegasp = 0.0;                  << 
4082     G4double omegags = 0.0;                   << 
4083     G4double homegags = 0.0;                  << 
4084     G4double pa = 0.0;                        << 
4085     G4double gamma = 0.0;                     << 
4086     G4double gfactor = 0.0;                   << 
4087     G4double bscn;                            << 
4088     G4double bkcn;                            << 
4089     G4double bccn;                            << 
4090     G4double ftcn = 0.0;                      << 
4091     G4double mfcd;                            << 
4092     G4double jprfn = jprf;                    << 
4093     G4double jprfp = jprf;                    << 
4094     G4double jprfd = jprf;                    << 
4095     G4double jprft = jprf;                    << 
4096     G4double jprfhe = jprf;                   << 
4097     G4double jprfa = jprf;                    << 
4098     G4double jprflamb0 = jprf;                << 
4099     G4double djprf = 0.0;                     << 
4100     G4double dlout = 0.0;                     << 
4101     G4double sdlout = 0.0;                    << 
4102     G4double iinert = 0.0;                    << 
4103     G4double erot = 0.0;                      << 
4104     G4double erotn = 0.0;                     << 
4105     G4double erotp = 0.0;                     << 
4106     G4double erotd = 0.0;                     << 
4107     G4double erott = 0.0;                     << 
4108     G4double erothe = 0.0;                    << 
4109     G4double erota = 0.0;                     << 
4110     G4double erotlamb0 = 0.0;                 << 
4111     G4double erotcn = 0.0;                    << 
4112     // G4double ecorcn=0.0;                   << 
4113     G4double imfarg = 0.0;                    << 
4114     G4double width_imf = 0.0;                 << 
4115     G4int IDjprf = 0;                         << 
4116     G4int fimf_allowed = opt->optimfallowed;  << 
4117                                               << 
4118     if (itest == 1)                           << 
4119     {                                         << 
4120     }                                         << 
4121     // Switch to calculate Maxwellian distrib << 
4122     imaxwell = 1;                             << 
4123     *sortie = 0;                              << 
4124                                               << 
4125     // just a change of name until the end of << 
4126     eer = ee;                                 << 
4127     if (inum == 1)                            << 
4128     {                                         << 
4129         ilast = 1;                            << 
4130     }                                         << 
4131     // calculation of masses                  << 
4132     // refmod = 1 ==> myers,swiatecki model   << 
4133     // refmod = 0 ==> weizsaecker model       << 
4134     refmod = 1; // Default = 1                << 
4135                 //                            << 
4136     if (refmod == 1)                          << 
4137     {                                         << 
4138         mglms(a, zprf, fiss->optshp, &maz);   << 
4139         mglms(a - 1.0, zprf, fiss->optshp, &m << 
4140         mglms(a - 2.0, zprf, fiss->optshp, &m << 
4141         mglms(a - 1.0, zprf - 1.0, fiss->opts << 
4142         mglms(a - 2.0, zprf - 1.0, fiss->opts << 
4143         mglms(a - 3.0, zprf - 1.0, fiss->opts << 
4144         mglms(a - 3.0, zprf - 2.0, fiss->opts << 
4145         mglms(a - 4.0, zprf - 2.0, fiss->opts << 
4146     }                                         << 
4147     else                                      << 
4148     {                                         << 
4149         mglw(a, zprf, &maz);                  << 
4150         mglw(a - 1.0, zprf, &ma1z);           << 
4151         mglw(a - 1.0, zprf - 1.0, &ma1z1);    << 
4152         mglw(a - 2.0, zprf - 1.0, &ma2z1);    << 
4153         mglw(a - 3.0, zprf - 1.0, &ma3z1);    << 
4154         mglw(a - 3.0, zprf - 2.0, &ma3z2);    << 
4155         mglw(a - 4.0, zprf - 2.0, &ma4z2);    << 
4156     }                                         << 
4157                                               << 
4158     if ((a - 1.) == 3.0 && (zprf - 1.0) == 2. << 
4159         ma1z1 = -7.7181660;                   << 
4160     if ((a - 1.) == 4.0 && (zprf - 1.0) == 2. << 
4161         ma1z1 = -28.295992;                   << 
4162                                               << 
4163     // separation energies                    << 
4164     sn = ma1z - maz;                          << 
4165     sp = ma1z1 - maz;                         << 
4166     sd = ma2z1 - maz - 2.2246;                << 
4167     st = ma3z1 - maz - 8.481977;              << 
4168     she = ma3z2 - maz - 7.7181660;            << 
4169     sa = ma4z2 - maz - 28.295992;             << 
4170     //                                        << 
4171     if (NbLam0 > 1)                           << 
4172     {                                         << 
4173         sn = gethyperbinding(a, zprf, NbLam0) << 
4174         sp = gethyperbinding(a, zprf, NbLam0) << 
4175         sd = gethyperbinding(a, zprf, NbLam0) << 
4176         st = gethyperbinding(a, zprf, NbLam0) << 
4177         she = gethyperbinding(a, zprf, NbLam0 << 
4178         sa = gethyperbinding(a, zprf, NbLam0) << 
4179         slamb0 = gethyperbinding(a, zprf, NbL << 
4180     }                                         << 
4181     if (NbLam0 == 1)                          << 
4182     {                                         << 
4183         G4double deltasn = sn - (gethyperbind << 
4184         G4double deltasp = sp - (gethyperbind << 
4185         G4double deltasd = sd - (gethyperbind << 
4186         G4double deltast = st - (gethyperbind << 
4187         G4double deltashe = she - (gethyperbi << 
4188         G4double deltasa = sa - (gethyperbind << 
4189                                               << 
4190         sn = deltasn + gethyperbinding(a, zpr << 
4191         sp = deltasp + gethyperbinding(a, zpr << 
4192         sd = deltasd + gethyperbinding(a, zpr << 
4193         st = deltast + gethyperbinding(a, zpr << 
4194         she = deltashe + gethyperbinding(a, z << 
4195         sa = deltasa + gethyperbinding(a, zpr << 
4196         slamb0 = gethyperseparation(a, zprf,  << 
4197     }                                         << 
4198                                               << 
4199     // coulomb barriers                       << 
4200     // Proton                                 << 
4201     if (zprf <= 1.0e0 || a <= 1.0e0 || (a - z << 
4202     {                                         << 
4203         sbp = 1.0e75;                         << 
4204         bp = 1.0e75;                          << 
4205     }                                         << 
4206     else                                      << 
4207     {                                         << 
4208         barrs(idnint(zprf - 1.), idnint(a - 1 << 
4209         bp = max(bp, 0.1);                    << 
4210         sbp = sp + bp;                        << 
4211     }                                         << 
4212                                               << 
4213     // Deuteron                               << 
4214     if (zprf <= 1.0e0 || a <= 2.0e0 || (a - z << 
4215     {                                         << 
4216         sbd = 1.0e75;                         << 
4217         bd = 1.0e75;                          << 
4218     }                                         << 
4219     else                                      << 
4220     {                                         << 
4221         barrs(idnint(zprf - 1.), idnint(a - 2 << 
4222         bd = max(bd, 0.1);                    << 
4223         sbd = sd + bd;                        << 
4224     }                                         << 
4225                                               << 
4226     // Triton                                 << 
4227     if (zprf <= 1.0e0 || a <= 3.0e0 || (a - z << 
4228     {                                         << 
4229         sbt = 1.0e75;                         << 
4230         bt = 1.0e75;                          << 
4231     }                                         << 
4232     else                                      << 
4233     {                                         << 
4234         barrs(idnint(zprf - 1.), idnint(a - 3 << 
4235         bt = max(bt, 0.1);                    << 
4236         sbt = st + bt;                        << 
4237     }                                         << 
4238                                               << 
4239     // Alpha                                  << 
4240     if (a - 4.0 <= 0.0 || zprf <= 2.0 || (a - << 
4241     {                                         << 
4242         sba = 1.0e+75;                        << 
4243         ba = 1.0e+75;                         << 
4244     }                                         << 
4245     else                                      << 
4246     {                                         << 
4247         barrs(idnint(zprf - 2.), idnint(a - 4 << 
4248         ba = max(ba, 0.1);                    << 
4249         sba = sa + ba;                        << 
4250     }                                         << 
4251                                               << 
4252     // He3                                    << 
4253     if (a - 3.0 <= 0.0 || zprf <= 2.0 || (a - << 
4254     {                                         << 
4255         sbhe = 1.0e+75;                       << 
4256         bhe = 1.0e+75;                        << 
4257     }                                         << 
4258     else                                      << 
4259     {                                         << 
4260         barrs(idnint(zprf - 2.), idnint(a - 3 << 
4261         bhe = max(bhe, 0.1);                  << 
4262         sbhe = she + bhe;                     << 
4263     }                                         << 
4264                                               << 
4265     // Dealing with particle-unbound systems  << 
4266     emin = dmin1(sba, sbhe, dmin1(sbt, sbhe,  << 
4267                                               << 
4268     if (emin <= 0.0)                          << 
4269     {                                         << 
4270         *sortie = 1;                          << 
4271         unbound(sn,                           << 
4272                 sp,                           << 
4273                 sd,                           << 
4274                 st,                           << 
4275                 she,                          << 
4276                 sa,                           << 
4277                 bp,                           << 
4278                 bd,                           << 
4279                 bt,                           << 
4280                 bhe,                          << 
4281                 ba,                           << 
4282                 &probf,                       << 
4283                 &probn,                       << 
4284                 &probp,                       << 
4285                 &probd,                       << 
4286                 &probt,                       << 
4287                 &probhe,                      << 
4288                 &proba,                       << 
4289                 &probimf,                     << 
4290                 &probg,                       << 
4291                 &ecn,                         << 
4292                 &ecp,                         << 
4293                 &ecd,                         << 
4294                 &ect,                         << 
4295                 &eche,                        << 
4296                 &eca);                        << 
4297         goto direct70;                        << 
4298     }                                         << 
4299     //                                        << 
4300     k = idnint(zprf);                         << 
4301     j = idnint(a - zprf);                     << 
4302     if (fiss->ifis > 0)                       << 
4303     {                                         << 
4304         // now ef is calculated from efa that << 
4305         // barfit which takes into account th << 
4306         // note *** shell correction (ecgnz)  << 
4307         il = idnint(jprf);                    << 
4308         barfit(k, k + j, il, &sbfis, &segs, & << 
4309         if ((fiss->optshp == 1) || (fiss->opt << 
4310         {                                     << 
4311             ef = G4double(sbfis) - ecld->ecgn << 
4312             // JLRS - Nov 2016 - Corrected va << 
4313             if (k == 90)                      << 
4314             {                                 << 
4315                 if (mod(j, 2) == 1)           << 
4316                 {                             << 
4317                     ef = ef * (4.5114 - 2.268 << 
4318                 }                             << 
4319                 else                          << 
4320                 {                             << 
4321                     ef = ef * (3.3931 - 1.533 << 
4322                 }                             << 
4323             }                                 << 
4324             if (k == 92)                      << 
4325             {                                 << 
4326                 if ((a - zprf) / zprf > 1.52) << 
4327                     ef = ef * (1.1222 - 0.108 << 
4328             }                                 << 
4329             if (k >= 94 && k <= 98 && j < 158 << 
4330             { // Data in this range have been << 
4331               // tested e-e                   << 
4332                 if (mod(j, 2) == 0 && mod(k,  << 
4333                 {                             << 
4334                     if (k >= 94)              << 
4335                     {                         << 
4336                         ef = ef - (11.54108 * << 
4337                     }                         << 
4338                 }                             << 
4339                 // O-O                        << 
4340                 if (mod(j, 2) == 1 && mod(k,  << 
4341                 {                             << 
4342                     if (k >= 95)              << 
4343                     {                         << 
4344                         ef = ef - (14.567 * ( << 
4345                     }                         << 
4346                 }                             << 
4347                 // Odd A                      << 
4348                 if (mod(j, 2) == 0 && mod(k,  << 
4349                 {                             << 
4350                     if (j >= 144)             << 
4351                     {                         << 
4352                         ef = ef - (13.662 * ( << 
4353                     }                         << 
4354                 }                             << 
4355                                                  3081 
4356                 if (mod(j, 2) == 1 && mod(k,  << 3082   // condition for end of evaporation                                   
4357                 {                             << 3083   if (zf < 3. || (ff == 1) || (fgamma == 1) || (fimf==1)) {
4358                     if (j >= 144)             << 3084     goto evapora100;
4359                     {                         << 3085   }
4360                         ef = ef - (13.662 * ( << 3086   goto evapora10;
4361                     }                         << 3087 
4362                 }                             << 3088   evapora100:
4363             }                                 << 3089   (*zf_par) = zf;
4364         }                                     << 3090   (*af_par) = af;
4365         else                                  << 3091   (*ee_par) = ee;
4366         {                                     << 3092   (*faimf) = aimf;
4367             ef = G4double(sbfis);             << 3093   (*fzimf) = zimf;
4368         }                                     << 3094   (*jprfout) = jprf;
4369         //                                    << 3095   (*tkeimf_par) = tkeimf;
4370         // TO AVOID NEGATIVE VALUES FOR IMPOS << 3096   (*mtota_par) = mtota;
4371         // THE FISSION BARRIER IS SET TO ZERO << 3097   (*vleva_par) = vleva;
4372         //                                    << 3098   (*vxeva_par) = vxeva;
4373         if (ef < 0.0)                         << 3099   (*vyeva_par) = vyeva;
4374             ef = 0.0;                         << 3100   (*ff_par) = ff;
4375         fb->efa[j][k] = ef;                   << 3101   (*fimf_par) = fimf;
4376         //                                    << 3102   (*inttype_par) = inttype;  
4377         // Hyper-fission barrier              << 3103   (*iev_tab_temp_par)= IEV_TAB_TEMP;                                       
4378         //                                    << 3104   (*inum_par) = inum;
4379         if (NbLam0 > 0)                       << 3105   (*NbLam0_par) = NbLam0;
4380         {                                     << 3106   return;
4381             ef = ef + 0.51 * (1115. - 938. +  << 3107 }
4382         }                                     << 3108 
4383         //                                    << 3109 void G4Abla::direct(G4double zprf, G4double a, G4double ee, G4double jprf, G4double *probp_par, G4double *probd_par, G4double *probt_par, G4double *probn_par, G4double *probhe_par, G4double *proba_par, G4double *probg_par,G4double *probimf_par,G4double *probf_par,G4double *problamb0_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sbd_par, G4double *sbt_par, G4double *sbhe_par, G4double *sba_par,G4double *slamb0_par, G4double *ecn_par, G4double *ecp_par, G4double *ecd_par, G4double *ect_par,G4double *eche_par,G4double *eca_par, G4double *ecg_par,  G4double *eclamb0_par, G4double *bp_par, G4double *bd_par, G4double *bt_par, G4double *bhe_par, G4double *ba_par,G4double *sp_par,G4double *sd_par,G4double *st_par,G4double *she_par,G4double *sa_par, G4double *ef_par,G4double *ts1_par, G4int, G4int inum, G4int itest, G4int *sortie, G4double *tcn,G4double *jprfn_par, G4double *jprfp_par, G4double *jprfd_par, G4double *jprft_par, G4double *jprfhe_par, G4double *jprfa_par, G4double *jprflamb0_par, G4double *tsum_par, G4int NbLam0)
4384         // Set fission barrier                << 3110 {
4385         //                                    << 3111   G4double probp = (*probp_par);
4386         (*ef_par) = ef;                       << 3112   G4double probd = (*probd_par);
4387         //                                    << 3113   G4double probt = (*probt_par);
4388         // calculation of surface and curvatu << 3114   G4double probn = (*probn_par);
4389         // to calculate the level density par << 3115   G4double probhe = (*probhe_par);
4390         xx = fissility((k + j), k, NbLam0, sn << 3116   G4double proba = (*proba_par);
4391         y = 1.00 - xx;                        << 3117   G4double probg = (*probg_par);
4392         if (y < 0.0)                          << 3118   G4double probimf = (*probimf_par);
4393             y = 0.0;                          << 3119   G4double probf = (*probf_par);
4394         if (y > 1.0)                          << 3120   G4double problamb0 = (*problamb0_par);
4395             y = 1.0;                          << 3121   G4double ptotl = (*ptotl_par);
4396         bssp = bipol(1, y);                   << 3122   G4double sn = (*sn_par);
4397         bksp = bipol(2, y);                   << 3123   G4double sp = (*sp_par);
4398     }                                         << 3124   G4double sd = (*sd_par);
4399     else                                      << 3125   G4double st = (*st_par);
4400     {                                         << 3126   G4double she = (*she_par);
4401         ef = 1.0e40;                          << 3127   G4double sa = (*sa_par);
4402         sbfis = 1.0e40;                       << 3128   G4double slamb0 = 0.0;
4403         bssp = 1.0;                           << 3129   G4double sbp = (*sbp_par);
4404         bksp = 1.0;                           << 3130   G4double sbd = (*sbd_par);
4405     }                                         << 3131   G4double sbt = (*sbt_par);
4406     //                                        << 3132   G4double sbhe = (*sbhe_par);
4407     // COMPOUND NUCLEUS LEVEL DENSITY         << 3133   G4double sba = (*sba_par);
4408     //                                        << 3134   G4double ecn = (*ecn_par);
4409     //  AK 2007 - Now DENSNIV called with cor << 3135   G4double ecp = (*ecp_par);
4410                                               << 3136   G4double ecd = (*ecd_par);
4411     afp = idnint(a);                          << 3137   G4double ect = (*ect_par);
4412     iz = idnint(zprf);                        << 3138   G4double eche = (*eche_par);
4413     in = afp - iz;                            << 3139   G4double eca = (*eca_par);
4414     bshell = ecld->ecgnz[in][iz] - ecld->vgsl << 3140   G4double ecg = (*ecg_par);
4415     defbet = ecld->beta2[in][iz];             << 3141   G4double eclamb0 = (*eclamb0_par);
4416                                               << 3142   G4double bp = (*bp_par);
4417     iinert = 0.4 * 931.49 * 1.16 * 1.16 * std << 3143   G4double bd = (*bd_par);
4418     erot = jprf * jprf * 197.328 * 197.328 /  << 3144   G4double bt = (*bt_par);
4419     erotcn = erot;                            << 3145   G4double bhe = (*bhe_par);
4420                                               << 3146   G4double ba = (*ba_par);
4421     bsbkbc(a, zprf, &bscn, &bkcn, &bccn);     << 3147   G4double tsum = (*tsum_par);
4422                                               << 3148 
4423     // if(ee > erot+emin){                    << 3149   // CALCULATION OF PARTICLE-EMISSION PROBABILITIES & FISSION     / 
4424     densniv(                                  << 3150   // BASED ON THE SIMPLIFIED FORMULAS FOR THE DECAY WIDTH BY      / 
4425         a, zprf, ee, 0.0, &densg, bshell, bsc << 3151   // MORETTO, ROCHESTER MEETING TO AVOID COMPUTING TIME           / 
4426     ftcn = temp;                              << 3152   // INTENSIVE INTEGRATION OF THE LEVEL DENSITIES                 / 
4427     /*                                        << 3153   // USES EFFECTIVE COULOMB BARRIERS AND AN AVERAGE KINETIC ENERGY/ 
4428       //ecorcn = ecor;                        << 3154   // OF THE EVAPORATED PARTICLES                                  / 
                                                   >> 3155   // COLLECTIVE ENHANCMENT OF THE LEVEL DENSITY IS INCLUDED       / 
                                                   >> 3156   // DYNAMICAL HINDRANCE OF FISSION IS INCLUDED BY A STEP FUNCTION/ 
                                                   >> 3157   // APPROXIMATION. SEE A.R. JUNGHANS DIPLOMA THESIS              / 
                                                   >> 3158   // SHELL AND PAIRING STRUCTURES IN THE LEVEL DENSITY IS INCLUDED/ 
                                                   >> 3159 
                                                   >> 3160   // INPUT:                                                            
                                                   >> 3161   // ZPRF,A,EE  CHARGE, MASS, EXCITATION ENERGY OF COMPOUND     
                                                   >> 3162   // NUCLEUS                                         
                                                   >> 3163   // JPRF       ROOT-MEAN-SQUARED ANGULAR MOMENTUM                           
                                                   >> 3164 
                                                   >> 3165   // DEFORMATIONS AND G.S. SHELL EFFECTS                               
                                                   >> 3166   // COMMON /ECLD/   ECGNZ,ECFNZ,VGSLD,ALPHA                           
                                                   >> 3167 
                                                   >> 3168   // ECGNZ - GROUND STATE SHELL CORR. FRLDM FOR A SPHERICAL G.S.       
                                                   >> 3169   // ECFNZ - SHELL CORRECTION FOR THE SADDLE POINT (NOW: == 0)         
                                                   >> 3170   // VGSLD - DIFFERENCE BETWEEN DEFORMED G.S. AND LDM VALUE            
                                                   >> 3171   // ALPHA - ALPHA GROUND STATE DEFORMATION (THIS IS NOT BETA2!)       
                                                   >> 3172   // BETA2 = SQRT((4PI)/5) * ALPHA                             
                                                   >> 3173 
                                                   >> 3174   //OPTIONS AND PARAMETERS FOR FISSION CHANNEL                        
                                                   >> 3175   //COMMON /FISS/    AKAP,BET,HOMEGA,KOEFF,IFIS,                       
                                                   >> 3176   //                 OPTSHP,OPTXFIS,OPTLES,OPTCOL               
                                                   >> 3177   //
                                                   >> 3178   // AKAP   - HBAR**2/(2* MN * R_0**2) = 10 MEV, R_0 = 1.4 FM          
                                                   >> 3179   // BET    - REDUCED NUCLEAR FRICTION COEFFICIENT IN (10**21 S**-1)   
                                                   >> 3180   // HOMEGA - CURVATURE OF THE FISSION BARRIER = 1 MEV                 
                                                   >> 3181   // KOEFF  - COEFFICIENT FOR THE LD FISSION BARRIER == 1.0            
                                                   >> 3182   // IFIS   - 0/1 FISSION CHANNEL OFF/ON                               
                                                   >> 3183   // OPTSHP - INTEGER SWITCH FOR SHELL CORRECTION IN MASSES/ENERGY     
                                                   >> 3184   //          = 0 NO MICROSCOPIC CORRECTIONS IN MASSES AND ENERGY        
                                                   >> 3185   //          = 1 SHELL ,  NO PAIRING                                    
                                                   >> 3186   //          = 2 PAIRING, NO SHELL                                      
                                                   >> 3187   //          = 3 SHELL AND PAIRING                                      
                                                   >> 3188   // OPTCOL - 0/1 COLLECTIVE ENHANCEMENT SWITCHED ON/OFF               
                                                   >> 3189   // OPTXFIS- 0,1,2 FOR MYERS & SWIATECKI, DAHLINGER, ANDREYEV         
                                                   >> 3190   //                FISSILITY PARAMETER.                                     
                                                   >> 3191   // OPTLES - CONSTANT TEMPERATURE LEVEL DENSITY FOR A,Z > TH-224      
                                                   >> 3192   // OPTCOL - 0/1 COLLECTIVE ENHANCEMENT OFF/ON                        
                                                   >> 3193 
                                                   >> 3194   // LEVEL DENSITY PARAMETERS                                          
                                                   >> 3195   // COMMON /ALD/    AV,AS,AK,OPTAFAN                                  
                                                   >> 3196   //                 AV,AS,AK - VOLUME,SURFACE,CURVATURE DEPENDENCE OF THE             
                                                   >> 3197   //                            LEVEL DENSITY PARAMETER                                
                                                   >> 3198   // OPTAFAN - 0/1  AF/AN >=1 OR AF/AN ==1                             
                                                   >> 3199   //           RECOMMENDED IS OPTAFAN = 0                              
                                                   >> 3200 
                                                   >> 3201   // FISSION BARRIERS                                                  
                                                   >> 3202   // COMMON /FB/     EFA                                               
                                                   >> 3203   // EFA    - ARRAY OF FISSION BARRIERS                                
                                                   >> 3204 
                                                   >> 3205 
                                                   >> 3206   // OUTPUT: PROBN,PROBP,PROBA,PROBF,PTOTL:                            
                                                   >> 3207   // - EMISSION PROBABILITIES FOR N EUTRON, P ROTON,  A LPHA     
                                                   >> 3208   // PARTICLES, F ISSION AND NORMALISATION                     
                                                   >> 3209   // SN,SBP,SBA: SEPARATION ENERGIES N P A                     
                                                   >> 3210   // INCLUDING EFFECTIVE BARRIERS                              
                                                   >> 3211   // ECN,ECP,ECA,BP,BA                                         
                                                   >> 3212   // - AVERAGE KINETIC ENERGIES (2*T) AND EFFECTIVE BARRIERS     
                                                   >> 3213 
                                                   >> 3214   G4double bk = 0.0;
                                                   >> 3215   G4double bksp = 0.0;
                                                   >> 3216   G4double bc = 0.0;
                                                   >> 3217   G4int afp = 0;
                                                   >> 3218   G4double het = 0.0;
                                                   >> 3219   G4double at = 0.0;
                                                   >> 3220   G4double bs = 0.0;
                                                   >> 3221   G4double bssp = 0.0;
                                                   >> 3222   G4double bshell = 0.0;
                                                   >> 3223   G4double cf = 0.0;
                                                   >> 3224   G4double defbet = 0.0;
                                                   >> 3225   G4double densa = 0.0;
                                                   >> 3226   G4double denshe = 0.0;
                                                   >> 3227   G4double densg = 0.0;
                                                   >> 3228   G4double densn = 0.0;
                                                   >> 3229   G4double densp = 0.0;
                                                   >> 3230   G4double densd = 0.0;
                                                   >> 3231   G4double denst = 0.0;
                                                   >> 3232   G4double denslamb0 = 0.0;
                                                   >> 3233   G4double eer = 0.0;
                                                   >> 3234   G4double ecor = 0.0;
                                                   >> 3235   G4double ef = 0.0;
                                                   >> 3236   G4double ft = 0.0;
                                                   >> 3237   G4double timf = 0.0;
                                                   >> 3238   G4double qr = 0.0;
                                                   >> 3239   G4double qrcn = 0.0;
                                                   >> 3240   G4double omegap=0.0;
                                                   >> 3241   G4double omegad=0.0;
                                                   >> 3242   G4double omegat=0.0;
                                                   >> 3243   G4double omegahe=0.0;
                                                   >> 3244   G4double omegaa=0.0;
                                                   >> 3245   G4double ga = 0.0;
                                                   >> 3246   G4double ghe = 0.0;
                                                   >> 3247   G4double gf = 0.0;
                                                   >> 3248   G4double gff = 0.0;
                                                   >> 3249   G4double gn = 0.0;
                                                   >> 3250   G4double gp = 0.0;
                                                   >> 3251   G4double gd = 0.0;
                                                   >> 3252   G4double gt = 0.0;
                                                   >> 3253   G4double gg = 0.0;
                                                   >> 3254   G4double glamb0 = 0.0;
                                                   >> 3255   G4double gimf = 0.0;
                                                   >> 3256   G4double gimf3 = 0.0;
                                                   >> 3257   G4double gimf5 = 0.0;
                                                   >> 3258   G4double bimf = 0.0;
                                                   >> 3259   G4double bsimf = 0.0;
                                                   >> 3260   G4double sbimf = 0.0;
                                                   >> 3261   G4double densimf = 0.0;
                                                   >> 3262   G4double defbetimf = 0.0;
                                                   >> 3263   G4double b_imf = 0.0;
                                                   >> 3264   G4double a_imf = 0.0;
                                                   >> 3265   G4double omegaimf = 0.0;
                                                   >> 3266   G4int izimf = 0;
                                                   >> 3267   G4double zimf = 0.0;
                                                   >> 3268   G4double gsum = 0.0;
                                                   >> 3269   G4double gtotal=0.0;
                                                   >> 3270   G4double hbar = 6.582122e-22;
                                                   >> 3271   G4double emin = 0.0;
                                                   >> 3272   G4int il = 0;
                                                   >> 3273   G4int choice_fisspart = 0;
                                                   >> 3274   G4double t_lapse=0.0;
                                                   >> 3275   G4int imaxwell = 0;
                                                   >> 3276   G4int in = 0;
                                                   >> 3277   G4int iz = 0;
                                                   >> 3278   G4int ind = 0;
                                                   >> 3279   G4int izd = 0;
                                                   >> 3280   G4int j = 0;
                                                   >> 3281   G4int k = 0;
                                                   >> 3282   G4double ma1z = 0.0;
                                                   >> 3283   G4double mazz = 0.0;
                                                   >> 3284   G4double ma2z = 0.0;
                                                   >> 3285   G4double ma1z1 = 0.0;
                                                   >> 3286   G4double ma2z1 = 0.0;
                                                   >> 3287   G4double ma3z1 = 0.0;
                                                   >> 3288   G4double ma3z2 = 0.0;
                                                   >> 3289   G4double ma4z2 = 0.0;
                                                   >> 3290   G4double maz = 0.0;
                                                   >> 3291   G4double nt = 0.0;
                                                   >> 3292   G4double pi = 3.1415926535;
                                                   >> 3293   G4double pt = 0.0;
                                                   >> 3294   G4double dt = 0.0;
                                                   >> 3295   G4double tt = 0.0;
                                                   >> 3296   G4double lamb0t = 0.0;
                                                   >> 3297   G4double gtemp = 0.0;
                                                   >> 3298   G4double rdt = 0.0;
                                                   >> 3299   G4double rtt = 0.0;
                                                   >> 3300   G4double rat = 0.0;
                                                   >> 3301   G4double rhet = 0.0;
                                                   >> 3302   G4double refmod = 0.0;
                                                   >> 3303   G4double rnt = 0.0;
                                                   >> 3304   G4double rpt = 0.0;
                                                   >> 3305   G4double rlamb0t = 0.0;
                                                   >> 3306   G4double sbfis = 1.e40;
                                                   >> 3307   G4double segs = 0.0;
                                                   >> 3308   G4double selmax = 0.0;
                                                   >> 3309   G4double tauc = 0.0;
                                                   >> 3310   G4double temp = 0.0;
                                                   >> 3311   G4double ts1 = 0.0;
                                                   >> 3312   G4double xx = 0.0;
                                                   >> 3313   G4double y = 0.0;
                                                   >> 3314   G4double k1 = 0.0;
                                                   >> 3315   G4double omegasp=0.0;
                                                   >> 3316   G4double homegasp=0.0;
                                                   >> 3317   G4double omegags=0.0;
                                                   >> 3318   G4double homegags=0.0;
                                                   >> 3319   G4double pa = 0.0;
                                                   >> 3320   G4double gamma = 0.0;
                                                   >> 3321   G4double gfactor = 0.0;
                                                   >> 3322   G4double bscn;
                                                   >> 3323   G4double bkcn;
                                                   >> 3324   G4double bccn;
                                                   >> 3325   G4double ftcn=0.0;
                                                   >> 3326   G4double mfcd;
                                                   >> 3327   G4double jprfn=jprf;
                                                   >> 3328   G4double jprfp=jprf;
                                                   >> 3329   G4double jprfd=jprf;
                                                   >> 3330   G4double jprft=jprf;
                                                   >> 3331   G4double jprfhe=jprf;
                                                   >> 3332   G4double jprfa=jprf;
                                                   >> 3333   G4double jprflamb0=jprf;
                                                   >> 3334   G4double djprf=0.0;
                                                   >> 3335   G4double dlout=0.0;
                                                   >> 3336   G4double sdlout=0.0;
                                                   >> 3337   G4double iinert=0.0;
                                                   >> 3338   G4double erot=0.0;
                                                   >> 3339   G4double erotn=0.0;
                                                   >> 3340   G4double erotp=0.0;
                                                   >> 3341   G4double erotd=0.0;
                                                   >> 3342   G4double erott=0.0;
                                                   >> 3343   G4double erothe=0.0;
                                                   >> 3344   G4double erota=0.0;
                                                   >> 3345   G4double erotlamb0=0.0;
                                                   >> 3346   G4double erotcn=0.0;
                                                   >> 3347  // G4double ecorcn=0.0;
                                                   >> 3348   G4double imfarg=0.0;
                                                   >> 3349   G4double width_imf=0.0;
                                                   >> 3350   G4int IDjprf=0;
                                                   >> 3351   G4int fimf_allowed=opt->optimfallowed;
                                                   >> 3352 
                                                   >> 3353   if(itest==1){
                                                   >> 3354 
                                                   >> 3355   }
                                                   >> 3356   // Switch to calculate Maxwellian distribution of kinetic energies
                                                   >> 3357   imaxwell = 1;
                                                   >> 3358   *sortie = 0;
                                                   >> 3359 
                                                   >> 3360   // just a change of name until the end of this subroutine                
                                                   >> 3361   eer = ee;
                                                   >> 3362   if (inum == 1) {
                                                   >> 3363     ilast = 1;
                                                   >> 3364   }
                                                   >> 3365   // calculation of masses                                           
                                                   >> 3366   // refmod = 1 ==> myers,swiatecki model                              
                                                   >> 3367   // refmod = 0 ==> weizsaecker model                                  
                                                   >> 3368   refmod = 1;  // Default = 1
                                                   >> 3369 //
                                                   >> 3370   if (refmod == 1) {
                                                   >> 3371     mglms(a,zprf,fiss->optshp,&maz);
                                                   >> 3372     mglms(a-1.0,zprf,fiss->optshp,&ma1z);
                                                   >> 3373     mglms(a-2.0,zprf,fiss->optshp,&ma2z);
                                                   >> 3374     mglms(a-1.0,zprf-1.0,fiss->optshp,&ma1z1);
                                                   >> 3375     mglms(a-2.0,zprf-1.0,fiss->optshp,&ma2z1);
                                                   >> 3376     mglms(a-3.0,zprf-1.0,fiss->optshp,&ma3z1);
                                                   >> 3377     mglms(a-3.0,zprf-2.0,fiss->optshp,&ma3z2);
                                                   >> 3378     mglms(a-4.0,zprf-2.0,fiss->optshp,&ma4z2);
                                                   >> 3379   }
                                                   >> 3380   else {
                                                   >> 3381     mglw(a,zprf,&maz);
                                                   >> 3382     mglw(a-1.0,zprf,&ma1z);
                                                   >> 3383     mglw(a-1.0,zprf-1.0,&ma1z1);
                                                   >> 3384     mglw(a-2.0,zprf-1.0,&ma2z1);
                                                   >> 3385     mglw(a-3.0,zprf-1.0,&ma3z1);
                                                   >> 3386     mglw(a-3.0,zprf-2.0,&ma3z2);
                                                   >> 3387     mglw(a-4.0,zprf-2.0,&ma4z2);
                                                   >> 3388   }
                                                   >> 3389 
                                                   >> 3390   if((a-1.)==3.0 && (zprf-1.0)==2.0) ma1z1=-7.7181660;
                                                   >> 3391   if((a-1.)==4.0 && (zprf-1.0)==2.0) ma1z1=-28.295992;
                                                   >> 3392   
                                                   >> 3393   // separation energies                     
                                                   >> 3394   sn = ma1z - maz;
                                                   >> 3395   sp = ma1z1 - maz;
                                                   >> 3396   sd = ma2z1 - maz - 2.2246;
                                                   >> 3397   st = ma3z1 - maz - 8.481977;
                                                   >> 3398   she = ma3z2 - maz - 7.7181660;
                                                   >> 3399   sa = ma4z2 - maz - 28.295992;
                                                   >> 3400   //
                                                   >> 3401   if(NbLam0>1){
                                                   >> 3402    sn = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-1.,zprf,NbLam0);
                                                   >> 3403    sp = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-1.,zprf-1.,NbLam0);
                                                   >> 3404    sd = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-2.,zprf-1.,NbLam0);
                                                   >> 3405    st = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-3.,zprf-1.,NbLam0);
                                                   >> 3406    she = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-3.,zprf-2.,NbLam0);
                                                   >> 3407    sa =  gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-4.,zprf-2.,NbLam0);
                                                   >> 3408    slamb0 = gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-1.,zprf,NbLam0-1);
                                                   >> 3409   }
                                                   >> 3410    if(NbLam0==1){
                                                   >> 3411    G4double deltasn = sn - (gethyperbinding(a,zprf,0)-gethyperbinding(a-1.,zprf,0));
                                                   >> 3412    G4double deltasp = sp - (gethyperbinding(a,zprf,0)-gethyperbinding(a-1.,zprf-1,0));
                                                   >> 3413    G4double deltasd = sd - (gethyperbinding(a,zprf,0)-gethyperbinding(a-2.,zprf-1,0));
                                                   >> 3414    G4double deltast = st - (gethyperbinding(a,zprf,0)-gethyperbinding(a-3.,zprf-1,0));
                                                   >> 3415    G4double deltashe = she - (gethyperbinding(a,zprf,0)-gethyperbinding(a-3.,zprf-2,0));
                                                   >> 3416    G4double deltasa = sa - (gethyperbinding(a,zprf,0)-gethyperbinding(a-4.,zprf-2,0));
                                                   >> 3417 
                                                   >> 3418    sn = deltasn + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-1.,zprf,NbLam0);
                                                   >> 3419    sp = deltasp + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-1.,zprf-1.,NbLam0);
                                                   >> 3420    sd = deltasd + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-2.,zprf-1.,NbLam0);
                                                   >> 3421    st = deltast + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-3.,zprf-1.,NbLam0);
                                                   >> 3422    she = deltashe + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-3.,zprf-2.,NbLam0);
                                                   >> 3423    sa = deltasa + gethyperbinding(a,zprf,NbLam0)-gethyperbinding(a-4.,zprf-2.,NbLam0);
                                                   >> 3424    slamb0 = gethyperseparation(a,zprf,NbLam0);
                                                   >> 3425   }
                                                   >> 3426 
                                                   >> 3427 // coulomb barriers
                                                   >> 3428 //Proton
                                                   >> 3429   if (zprf <= 1.0e0 || a <= 1.0e0 || (a-zprf) < 0.0) {
                                                   >> 3430     sbp = 1.0e75;
                                                   >> 3431     bp = 1.0e75;
                                                   >> 3432   }else{
                                                   >> 3433   barrs(idnint(zprf-1.),idnint(a-1.),1,1,&bp,&omegap);
                                                   >> 3434   bp = max(bp,0.1);
                                                   >> 3435   sbp = sp + bp;
                                                   >> 3436   }
                                                   >> 3437 
                                                   >> 3438 //Deuteron
                                                   >> 3439   if (zprf <= 1.0e0 || a <= 2.0e0 || (a-zprf) < 1.0) {
                                                   >> 3440     sbd = 1.0e75;
                                                   >> 3441     bd = 1.0e75;
                                                   >> 3442   }else{
                                                   >> 3443   barrs(idnint(zprf-1.),idnint(a-2.),1,2,&bd,&omegad);
                                                   >> 3444   bd = max(bd,0.1);
                                                   >> 3445   sbd = sd + bd;
                                                   >> 3446   }
                                                   >> 3447 
                                                   >> 3448 //Triton
                                                   >> 3449   if (zprf <= 1.0e0 || a <= 3.0e0 || (a-zprf) < 2.0) {
                                                   >> 3450     sbt = 1.0e75;
                                                   >> 3451     bt = 1.0e75;
                                                   >> 3452   }else{
                                                   >> 3453   barrs(idnint(zprf-1.),idnint(a-3.),1,3,&bt,&omegat);
                                                   >> 3454   bt = max(bt,0.1);
                                                   >> 3455   sbt = st + bt;
                                                   >> 3456   }
                                                   >> 3457 
                                                   >> 3458 //Alpha
                                                   >> 3459   if (a-4.0<=0.0 || zprf<=2.0 || (a-zprf)<2.0) {
                                                   >> 3460     sba = 1.0e+75;
                                                   >> 3461     ba = 1.0e+75;
                                                   >> 3462   }else{
                                                   >> 3463   barrs(idnint(zprf-2.),idnint(a-4.),2,4,&ba,&omegaa);
                                                   >> 3464   ba = max(ba,0.1);
                                                   >> 3465   sba = sa + ba;
                                                   >> 3466   }
                                                   >> 3467 
                                                   >> 3468 //He3
                                                   >> 3469   if (a-3.0 <= 0.0 || zprf<=2.0 || (a-zprf)<1.0) {
                                                   >> 3470     sbhe = 1.0e+75;
                                                   >> 3471     bhe = 1.0e+75;
                                                   >> 3472   }else{
                                                   >> 3473   barrs(idnint(zprf-2.),idnint(a-3.),2,3,&bhe,&omegahe);
                                                   >> 3474   bhe = max(bhe,0.1);
                                                   >> 3475   sbhe = she + bhe;
                                                   >> 3476   }
                                                   >> 3477 
                                                   >> 3478 // Dealing with particle-unbound systems
                                                   >> 3479    emin = dmin1(sba,sbhe,dmin1(sbt,sbhe,dmin1(sn,sbp,sbd)));
                                                   >> 3480 
                                                   >> 3481    if(emin<=0.0){
                                                   >> 3482    *sortie = 1;
                                                   >> 3483    unbound(sn,sp,sd,st,she,sa,bp,bd,bt,bhe,ba,&probf,&probn,&probp,&probd,&probt,&probhe,&proba,&probimf,&probg,&ecn,&ecp,&ecd,&ect,&eche,&eca);
                                                   >> 3484    goto direct70;
                                                   >> 3485    }
                                                   >> 3486 //
                                                   >> 3487   k = idnint(zprf);
                                                   >> 3488   j = idnint(a - zprf);
                                                   >> 3489   if (fiss->ifis > 0) {
                                                   >> 3490     // now ef is calculated from efa that depends on the subroutine
                                                   >> 3491     // barfit which takes into account the modification on the ang. mom.
                                                   >> 3492     // note *** shell correction (ecgnz)
                                                   >> 3493     il = idnint(jprf);
                                                   >> 3494     barfit(k,k+j,il,&sbfis,&segs,&selmax);
                                                   >> 3495     if ((fiss->optshp == 1) || (fiss->optshp == 3)) {
                                                   >> 3496        ef = G4double(sbfis) -  ecld->ecgnz[j][k];
                                                   >> 3497 // JLRS - Nov 2016 - Corrected values of fission barriers for actinides
                                                   >> 3498      if(k==90){
                                                   >> 3499       if(mod(j,2)==1){
                                                   >> 3500          ef = ef*(4.5114-2.2687*(a-zprf)/zprf);
4429       }else{                                     3501       }else{
4430     // If EE < EROT, only gamma emission can  << 3502          ef = ef*(3.3931-1.5338*(a-zprf)/zprf);
4431              probf = 0.0;                     << 3503       }
4432              probp = 0.0;                     << 3504      }
4433              probd = 0.0;                     << 3505      if(k==92){
4434              probt = 0.0;                     << 3506      if((a-zprf)/zprf>1.52)ef=ef*(1.1222-0.10886*(a-zprf)/zprf)-0.1;
4435              probn = 0.0;                     << 3507      }
4436              probhe = 0.0;                    << 3508      if(k>=94&&k<=98&&j<158){// Data in this range have been tested
4437              proba = 0.0;                     << 3509 // e-e
4438              probg = 1.0;                     << 3510         if(mod(j,2)==0&&mod(k,2)==0){
4439              probimf = 0.0;                   << 3511         if(k>=94){ef = ef-(11.54108*(a-zprf)/zprf-18.074);}
4440     //c JLRS 03/2017 - Added this calculation << 3512         }
4441     //C According to A. Ignatyuk, GG :        << 3513 // O-O
4442     //C Here BS=BK=1, as this was assumed in  << 3514         if(mod(j,2)==1&&mod(k,2)==1){
4443              pa = (ald->av)*a + (ald->as)*std << 3515         if(k>=95){ef = ef-(14.567*(a-zprf)/zprf-23.266);}
4444     (ald->ak)*std::pow(a,1./3.); gamma = 2.5  << 3516         }
4445     = 1.+gamma*ecld->ecgnz[in][iz]; if(gfacto << 3517 // Odd A
4446              }                                << 3518         if(mod(j,2)==0&&mod(k,2)==1){
4447     //                                        << 3519         if(j>=144){ef = ef-(13.662*(a-zprf)/zprf-21.656);}
4448              gtemp = 17.60/(std::pow(a,0.699) << 3520         }
4449              ecg = 4.0 * gtemp;               << 3521 
4450     //                                        << 3522         if(mod(j,2)==1&&mod(k,2)==0){
4451              goto direct70;                   << 3523         if(j>=144){ef = ef-(13.662*(a-zprf)/zprf-21.656);}
4452       }                                       << 3524         }
4453     */                                        << 3525      }
4454                                               << 3526     } 
4455     //  ------------------------------------- << 3527     else {
4456     //        LEVEL DENSITIES AND TEMPERATURE << 3528       ef = G4double(sbfis);
4457     //  ------------------------------------- << 
4458     //                                        << 
4459     //  MVR - in case of charged particle emi << 
4460     //  comes from random kinetic energy from << 
4461     //  if option imaxwell = 1 (otherwise E=2 << 
4462     //                                        << 
4463     //  AK - LEVEL DENSITY AND TEMPERATURE AT << 
4464     //  in the subroutine FISSION_WIDTH       << 
4465     //                                        << 
4466     //                                        << 
4467     // LEVEL DENSITY AND TEMPERATURE IN THE N << 
4468     //                                        << 
4469     // KHS, AK 2007 - Reduction of angular mo << 
4470     // momentum of emitted fragment JLRS Nov- << 
4471     // abla++                                 << 
4472                                               << 
4473     if (in >= 2)                              << 
4474     {                                         << 
4475         ind = idnint(a) - idnint(zprf) - 1;   << 
4476         izd = idnint(zprf);                   << 
4477         if (jprf > 0.10)                      << 
4478         {                                     << 
4479             lorb(a, a - 1., jprf, ee - sn, &d << 
4480             djprf = gausshaz(1, dlout, sdlout << 
4481             if (IDjprf == 1)                  << 
4482                 djprf = 0.0;                  << 
4483             jprfn = jprf + djprf;             << 
4484             jprfn = dint(std::abs(jprfn)); // << 
4485         }                                     << 
4486         bshell = ecld->ecgnz[ind][izd] - ecld << 
4487         defbet = ecld->beta2[ind][izd];       << 
4488                                               << 
4489         iinert =                              << 
4490             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4491         erotn = jprfn * jprfn * 197.328 * 197 << 
4492         bsbkbc(a - 1., zprf, &bs, &bk, &bc);  << 
4493                                               << 
4494         // level density and temperature in t << 
4495         densniv(a - 1.0,                      << 
4496                 zprf,                         << 
4497                 ee,                           << 
4498                 sn,                           << 
4499                 &densn,                       << 
4500                 bshell,                       << 
4501                 bs,                           << 
4502                 bk,                           << 
4503                 &temp,                        << 
4504                 fiss->optshp,                 << 
4505                 fiss->optcol,                 << 
4506                 defbet,                       << 
4507                 &ecor,                        << 
4508                 jprfn,                        << 
4509                 0,                            << 
4510                 &qr);                         << 
4511         nt = temp;                            << 
4512         ecn = 0.0;                            << 
4513         if (densn > 0.)                       << 
4514         {                                     << 
4515             G4int IS = 0;                     << 
4516             if (imaxwell == 1)                << 
4517             {                                 << 
4518                 rnt = nt;                     << 
4519             dir1234:                          << 
4520                 ecn = fvmaxhaz_neut(rnt);     << 
4521                 IS++;                         << 
4522                 if (IS > 100)                 << 
4523                 {                             << 
4524                     std::cout << "WARNING: FV << 
4525                     goto exi1000;             << 
4526                 }                             << 
4527                 if (ecn > (ee - sn))          << 
4528                 {                             << 
4529                     if ((ee - sn) < rnt)      << 
4530                         ecn = ee - sn;        << 
4531                     else                      << 
4532                         goto dir1234;         << 
4533                 }                             << 
4534                 if (ecn <= 0.0)               << 
4535                     goto dir1234;             << 
4536             }                                 << 
4537             else                              << 
4538             {                                 << 
4539                 ecn = 2.0 * nt;               << 
4540             }                                 << 
4541         }                                     << 
4542     }                                         << 
4543     else                                      << 
4544     {                                         << 
4545         densn = 0.0;                          << 
4546         ecn = 0.0;                            << 
4547         nt = 0.0;                             << 
4548     }                                         << 
4549 exi1000:                                      << 
4550                                               << 
4551     // LEVEL DENSITY AND TEMPERATURE IN THE P << 
4552     //                                        << 
4553     // Reduction of angular momentum due to o << 
4554     // fragment                               << 
4555     if (iz >= 2)                              << 
4556     {                                         << 
4557         ind = idnint(a) - idnint(zprf);       << 
4558         izd = idnint(zprf) - 1;               << 
4559         if (jprf > 0.10)                      << 
4560         {                                     << 
4561             lorb(a, a - 1., jprf, ee - sbp, & << 
4562             djprf = gausshaz(1, dlout, sdlout << 
4563             if (IDjprf == 1)                  << 
4564                 djprf = 0.0;                  << 
4565             jprfp = jprf + djprf;             << 
4566             jprfp = dint(std::abs(jprfp)); // << 
4567         }                                     << 
4568         bshell = ecld->ecgnz[ind][izd] - ecld << 
4569         defbet = ecld->beta2[ind][izd];       << 
4570                                               << 
4571         iinert =                              << 
4572             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4573         erotp = jprfp * jprfp * 197.328 * 197 << 
4574                                               << 
4575         bsbkbc(a - 1., zprf - 1., &bs, &bk, & << 
4576                                               << 
4577         // level density and temperature in t << 
4578         densniv(a - 1.0,                      << 
4579                 zprf - 1.0,                   << 
4580                 ee,                           << 
4581                 sbp,                          << 
4582                 &densp,                       << 
4583                 bshell,                       << 
4584                 bs,                           << 
4585                 bk,                           << 
4586                 &temp,                        << 
4587                 fiss->optshp,                 << 
4588                 fiss->optcol,                 << 
4589                 defbet,                       << 
4590                 &ecor,                        << 
4591                 jprfp,                        << 
4592                 0,                            << 
4593                 &qr);                         << 
4594         pt = temp;                            << 
4595         ecp = 0.;                             << 
4596         if (densp > 0.)                       << 
4597         {                                     << 
4598             G4int IS = 0;                     << 
4599             if (imaxwell == 1)                << 
4600             {                                 << 
4601                 rpt = pt;                     << 
4602             dir1235:                          << 
4603                 ecp = fvmaxhaz(rpt);          << 
4604                 IS++;                         << 
4605                 if (IS > 100)                 << 
4606                 {                             << 
4607                     std::cout << "WARNING: FV << 
4608                     goto exi1001;             << 
4609                 }                             << 
4610                 if (ecp > (ee - sbp))         << 
4611                 {                             << 
4612                     if ((ee - sbp) < rpt)     << 
4613                         ecp = ee - sbp;       << 
4614                     else                      << 
4615                         goto dir1235;         << 
4616                 }                             << 
4617                 if (ecp <= 0.0)               << 
4618                     goto dir1235;             << 
4619                 ecp = ecp + bp;               << 
4620             }                                 << 
4621             else                              << 
4622             {                                 << 
4623                 ecp = 2.0 * pt + bp;          << 
4624             }                                 << 
4625         }                                     << 
4626     }                                         << 
4627     else                                      << 
4628     {                                         << 
4629         densp = 0.0;                          << 
4630         ecp = 0.0;                            << 
4631         pt = 0.0;                             << 
4632     }                                         << 
4633 exi1001:                                      << 
4634                                               << 
4635     //  FINAL LEVEL DENSITY AND TEMPERATURE A << 
4636     //                                        << 
4637     // Reduction of angular momentum due to o << 
4638     // fragment                               << 
4639     if ((in >= 2) && (iz >= 2))               << 
4640     {                                         << 
4641         ind = idnint(a) - idnint(zprf) - 1;   << 
4642         izd = idnint(zprf) - 1;               << 
4643         if (jprf > 0.10)                      << 
4644         {                                     << 
4645             lorb(a, a - 2., jprf, ee - sbd, & << 
4646             djprf = gausshaz(1, dlout, sdlout << 
4647             if (IDjprf == 1)                  << 
4648                 djprf = 0.0;                  << 
4649             jprfd = jprf + djprf;             << 
4650             jprfd = dint(std::abs(jprfd)); // << 
4651         }                                     << 
4652         bshell = ecld->ecgnz[ind][izd] - ecld << 
4653         defbet = ecld->beta2[ind][izd];       << 
4654                                               << 
4655         iinert =                              << 
4656             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4657         erotd = jprfd * jprfd * 197.328 * 197 << 
4658                                               << 
4659         bsbkbc(a - 2., zprf - 1., &bs, &bk, & << 
4660                                               << 
4661         // level density and temperature in t << 
4662         densniv(a - 2.0,                      << 
4663                 zprf - 1.0e0,                 << 
4664                 ee,                           << 
4665                 sbd,                          << 
4666                 &densd,                       << 
4667                 bshell,                       << 
4668                 bs,                           << 
4669                 bk,                           << 
4670                 &temp,                        << 
4671                 fiss->optshp,                 << 
4672                 fiss->optcol,                 << 
4673                 defbet,                       << 
4674                 &ecor,                        << 
4675                 jprfd,                        << 
4676                 0,                            << 
4677                 &qr);                         << 
4678                                               << 
4679         dt = temp;                            << 
4680         ecd = 0.0;                            << 
4681         if (densd > 0.)                       << 
4682         {                                     << 
4683             G4int IS = 0;                     << 
4684             if (imaxwell == 1)                << 
4685             {                                 << 
4686                 rdt = dt;                     << 
4687             dir1236:                          << 
4688                 ecd = fvmaxhaz(rdt);          << 
4689                 IS++;                         << 
4690                 if (IS > 100)                 << 
4691                 {                             << 
4692                     std::cout << "WARNING: FV << 
4693                     goto exi1002;             << 
4694                 }                             << 
4695                 if (ecd > (ee - sbd))         << 
4696                 {                             << 
4697                     if ((ee - sbd) < rdt)     << 
4698                         ecd = ee - sbd;       << 
4699                     else                      << 
4700                         goto dir1236;         << 
4701                 }                             << 
4702                 if (ecd <= 0.0)               << 
4703                     goto dir1236;             << 
4704                 ecd = ecd + bd;               << 
4705             }                                 << 
4706             else                              << 
4707             {                                 << 
4708                 ecd = 2.0 * dt + bd;          << 
4709             }                                 << 
4710         }                                     << 
4711     }                                         << 
4712     else                                      << 
4713     {                                         << 
4714         densd = 0.0;                          << 
4715         ecd = 0.0;                            << 
4716         dt = 0.0;                             << 
4717     }                                         << 
4718 exi1002:                                      << 
4719                                               << 
4720     //  FINAL LEVEL DENSITY AND TEMPERATURE A << 
4721     //                                        << 
4722     // Reduction of angular momentum due to o << 
4723     // fragment                               << 
4724     if ((in >= 3) && (iz >= 2))               << 
4725     {                                         << 
4726         ind = idnint(a) - idnint(zprf) - 2;   << 
4727         izd = idnint(zprf) - 1;               << 
4728         if (jprf > 0.10)                      << 
4729         {                                     << 
4730             lorb(a, a - 3., jprf, ee - sbt, & << 
4731             djprf = gausshaz(1, dlout, sdlout << 
4732             if (IDjprf == 1)                  << 
4733                 djprf = 0.0;                  << 
4734             jprft = jprf + djprf;             << 
4735             jprft = dint(std::abs(jprft)); // << 
4736         }                                     << 
4737         bshell = ecld->ecgnz[ind][izd] - ecld << 
4738         defbet = ecld->beta2[ind][izd];       << 
4739                                               << 
4740         iinert =                              << 
4741             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4742         erott = jprft * jprft * 197.328 * 197 << 
4743                                               << 
4744         bsbkbc(a - 3., zprf - 1., &bs, &bk, & << 
4745                                               << 
4746         // level density and temperature in t << 
4747         densniv(a - 3.0,                      << 
4748                 zprf - 1.0,                   << 
4749                 ee,                           << 
4750                 sbt,                          << 
4751                 &denst,                       << 
4752                 bshell,                       << 
4753                 bs,                           << 
4754                 bk,                           << 
4755                 &temp,                        << 
4756                 fiss->optshp,                 << 
4757                 fiss->optcol,                 << 
4758                 defbet,                       << 
4759                 &ecor,                        << 
4760                 jprft,                        << 
4761                 0,                            << 
4762                 &qr);                         << 
4763                                               << 
4764         tt = temp;                            << 
4765         ect = 0.;                             << 
4766         if (denst > 0.)                       << 
4767         {                                     << 
4768             G4int IS = 0;                     << 
4769             if (imaxwell == 1)                << 
4770             {                                 << 
4771                 rtt = tt;                     << 
4772             dir1237:                          << 
4773                 ect = fvmaxhaz(rtt);          << 
4774                 IS++;                         << 
4775                 if (IS > 100)                 << 
4776                 {                             << 
4777                     std::cout << "WARNING: FV << 
4778                     goto exi1003;             << 
4779                 }                             << 
4780                 if (ect > (ee - sbt))         << 
4781                 {                             << 
4782                     if ((ee - sbt) < rtt)     << 
4783                         ect = ee - sbt;       << 
4784                     else                      << 
4785                         goto dir1237;         << 
4786                 }                             << 
4787                 if (ect <= 0.0)               << 
4788                     goto dir1237;             << 
4789                 ect = ect + bt;               << 
4790             }                                 << 
4791             else                              << 
4792             {                                 << 
4793                 ect = 2.0 * tt + bt;          << 
4794             }                                 << 
4795         }                                     << 
4796     }                                         << 
4797     else                                      << 
4798     {                                         << 
4799         denst = 0.0;                          << 
4800         ect = 0.0;                            << 
4801         tt = 0.0;                             << 
4802     }                                         << 
4803 exi1003:                                      << 
4804                                               << 
4805     // LEVEL DENSITY AND TEMPERATURE IN THE A << 
4806     //                                        << 
4807     // Reduction of angular momentum due to o << 
4808     // fragment                               << 
4809     if ((in >= 3) && (iz >= 3))               << 
4810     {                                         << 
4811         ind = idnint(a) - idnint(zprf) - 2;   << 
4812         izd = idnint(zprf) - 2;               << 
4813         if (jprf > 0.10)                      << 
4814         {                                     << 
4815             lorb(a, a - 4., jprf, ee - sba, & << 
4816             djprf = gausshaz(1, dlout, sdlout << 
4817             if (IDjprf == 1)                  << 
4818                 djprf = 0.0;                  << 
4819             jprfa = jprf + djprf;             << 
4820             jprfa = dint(std::abs(jprfa)); // << 
4821         }                                     << 
4822         bshell = ecld->ecgnz[ind][izd] - ecld << 
4823         defbet = ecld->beta2[ind][izd];       << 
4824                                               << 
4825         iinert =                              << 
4826             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4827         erota = jprfa * jprfa * 197.328 * 197 << 
4828                                               << 
4829         bsbkbc(a - 4., zprf - 2., &bs, &bk, & << 
4830                                               << 
4831         // level density and temperature in t << 
4832         densniv(a - 4.0,                      << 
4833                 zprf - 2.0,                   << 
4834                 ee,                           << 
4835                 sba,                          << 
4836                 &densa,                       << 
4837                 bshell,                       << 
4838                 bs,                           << 
4839                 bk,                           << 
4840                 &temp,                        << 
4841                 fiss->optshp,                 << 
4842                 fiss->optcol,                 << 
4843                 defbet,                       << 
4844                 &ecor,                        << 
4845                 jprfa,                        << 
4846                 0,                            << 
4847                 &qr);                         << 
4848                                               << 
4849         at = temp;                            << 
4850         eca = 0.0;                            << 
4851         if (densa > 0.)                       << 
4852         {                                     << 
4853             G4int IS = 0;                     << 
4854             if (imaxwell == 1)                << 
4855             {                                 << 
4856                 rat = at;                     << 
4857             dir1238:                          << 
4858                 eca = fvmaxhaz(rat);          << 
4859                 IS++;                         << 
4860                 if (IS > 100)                 << 
4861                 {                             << 
4862                     std::cout << "WARNING: FV << 
4863                     goto exi1004;             << 
4864                 }                             << 
4865                 if (eca > (ee - sba))         << 
4866                 {                             << 
4867                     if ((ee - sba) < rat)     << 
4868                         eca = ee - sba;       << 
4869                     else                      << 
4870                         goto dir1238;         << 
4871                 }                             << 
4872                 if (eca <= 0.0)               << 
4873                     goto dir1238;             << 
4874                 eca = eca + ba;               << 
4875             }                                 << 
4876             else                              << 
4877             {                                 << 
4878                 eca = 2.0 * at + ba;          << 
4879             }                                 << 
4880         }                                     << 
4881     }                                         << 
4882     else                                      << 
4883     {                                         << 
4884         densa = 0.0;                          << 
4885         eca = 0.0;                            << 
4886         at = 0.0;                             << 
4887     }                                         << 
4888 exi1004:                                      << 
4889                                               << 
4890     //  FINAL LEVEL DENSITY AND TEMPERATURE A << 
4891     //                                        << 
4892     // Reduction of angular momentum due to o << 
4893     // fragment                               << 
4894     if ((in >= 2) && (iz >= 3))               << 
4895     {                                         << 
4896         ind = idnint(a) - idnint(zprf) - 1;   << 
4897         izd = idnint(zprf) - 2;               << 
4898         if (jprf > 0.10)                      << 
4899         {                                     << 
4900             lorb(a, a - 3., jprf, ee - sbhe,  << 
4901             djprf = gausshaz(1, dlout, sdlout << 
4902             if (IDjprf == 1)                  << 
4903                 djprf = 0.0;                  << 
4904             jprfhe = jprf + djprf;            << 
4905             jprfhe = dint(std::abs(jprfhe));  << 
4906         }                                     << 
4907         bshell = ecld->ecgnz[ind][izd] - ecld << 
4908         defbet = ecld->beta2[ind][izd];       << 
4909                                               << 
4910         iinert =                              << 
4911             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4912         erothe = jprfhe * jprfhe * 197.328 *  << 
4913                                               << 
4914         bsbkbc(a - 3., zprf - 2., &bs, &bk, & << 
4915                                               << 
4916         // level density and temperature in t << 
4917         densniv(a - 3.0,                      << 
4918                 zprf - 2.0,                   << 
4919                 ee,                           << 
4920                 sbhe,                         << 
4921                 &denshe,                      << 
4922                 bshell,                       << 
4923                 bs,                           << 
4924                 bk,                           << 
4925                 &temp,                        << 
4926                 fiss->optshp,                 << 
4927                 fiss->optcol,                 << 
4928                 defbet,                       << 
4929                 &ecor,                        << 
4930                 jprfhe,                       << 
4931                 0,                            << 
4932                 &qr);                         << 
4933                                               << 
4934         het = temp;                           << 
4935         eche = 0.0;                           << 
4936         if (denshe > 0.)                      << 
4937         {                                     << 
4938             G4int IS = 0;                     << 
4939             if (imaxwell == 1)                << 
4940             {                                 << 
4941                 rhet = het;                   << 
4942             dir1239:                          << 
4943                 eche = fvmaxhaz(rhet);        << 
4944                 IS++;                         << 
4945                 if (IS > 100)                 << 
4946                 {                             << 
4947                     std::cout << "WARNING: FV << 
4948                     goto exi1005;             << 
4949                 }                             << 
4950                 if (eche > (ee - sbhe))       << 
4951                 {                             << 
4952                     if ((ee - sbhe) < rhet)   << 
4953                         eche = ee - sbhe;     << 
4954                     else                      << 
4955                         goto dir1239;         << 
4956                 }                             << 
4957                 if (eche <= 0.0)              << 
4958                     goto dir1239;             << 
4959                 eche = eche + bhe;            << 
4960             }                                 << 
4961             else                              << 
4962             {                                 << 
4963                 eche = 2.0 * het + bhe;       << 
4964             }                                 << 
4965         }                                     << 
4966     }                                            3529     }
4967     else                                      << 3530 //
4968     {                                         << 3531 // TO AVOID NEGATIVE VALUES FOR IMPOSSIBLE NUCLEI
4969         denshe = 0.0;                         << 3532 // THE FISSION BARRIER IS SET TO ZERO IF SMALLER THAN ZERO.
4970         eche = 0.0;                           << 3533 //                                    
4971         het = 0.0;                            << 3534     if (ef < 0.0)ef = 0.0;
4972     }                                         << 3535     fb->efa[j][k]=ef;
4973 exi1005:                                      << 3536 //
4974                                               << 3537 // Hyper-fission barrier
4975     // LEVEL DENSITY AND TEMPERATURE IN THE L << 3538 //
4976     //                                        << 3539     if(NbLam0>0){
4977     // - Reduction of angular momentum due to << 3540      ef = ef + 0.51*(1115.-938.+sn-slamb0)/std::pow(a,2./3.);
4978     // fragment JLRS Jun-2017 - Added these c << 
4979                                               << 
4980     if (in >= 2 && NbLam0 > 0)                << 
4981     {                                         << 
4982         ind = idnint(a) - idnint(zprf) - 1;   << 
4983         izd = idnint(zprf);                   << 
4984         if (jprf > 0.10)                      << 
4985         {                                     << 
4986             lorb(a, a - 1., jprf, ee - slamb0 << 
4987             djprf = gausshaz(1, dlout, sdlout << 
4988             if (IDjprf == 1)                  << 
4989                 djprf = 0.0;                  << 
4990             jprflamb0 = jprf + djprf;         << 
4991             jprflamb0 = dint(std::abs(jprflam << 
4992         }                                     << 
4993         bshell = ecld->ecgnz[ind][izd] - ecld << 
4994         defbet = ecld->beta2[ind][izd];       << 
4995                                               << 
4996         iinert =                              << 
4997             0.4 * 931.49 * 1.16 * 1.16 * std: << 
4998         erotlamb0 = jprflamb0 * jprflamb0 * 1 << 
4999         bsbkbc(a - 1., zprf, &bs, &bk, &bc);  << 
5000                                               << 
5001         // level density and temperature in t << 
5002         densniv(a - 1.0,                      << 
5003                 zprf,                         << 
5004                 ee,                           << 
5005                 slamb0,                       << 
5006                 &denslamb0,                   << 
5007                 bshell,                       << 
5008                 bs,                           << 
5009                 bk,                           << 
5010                 &temp,                        << 
5011                 fiss->optshp,                 << 
5012                 fiss->optcol,                 << 
5013                 defbet,                       << 
5014                 &ecor,                        << 
5015                 jprflamb0,                    << 
5016                 0,                            << 
5017                 &qr);                         << 
5018         lamb0t = temp;                        << 
5019         eclamb0 = 0.0;                        << 
5020         if (denslamb0 > 0.)                   << 
5021         {                                     << 
5022             G4int IS = 0;                     << 
5023             if (imaxwell == 1)                << 
5024             {                                 << 
5025                 rlamb0t = lamb0t;             << 
5026             dir1240:                          << 
5027                 eclamb0 = fvmaxhaz_neut(rlamb << 
5028                 IS++;                         << 
5029                 if (IS > 100)                 << 
5030                 {                             << 
5031                     std::cout << "WARNING: FV << 
5032                     goto exi1006;             << 
5033                 }                             << 
5034                 if (eclamb0 > (ee - slamb0))  << 
5035                 {                             << 
5036                     if ((ee - slamb0) < rlamb << 
5037                         eclamb0 = ee - slamb0 << 
5038                     else                      << 
5039                         goto dir1240;         << 
5040                 }                             << 
5041                 if (eclamb0 <= 0.0)           << 
5042                     goto dir1240;             << 
5043             }                                 << 
5044             else                              << 
5045             {                                 << 
5046                 eclamb0 = 2.0 * lamb0t;       << 
5047             }                                 << 
5048         }                                     << 
5049     }                                            3541     }
5050     else                                      << 3542 //
5051     {                                         << 3543 // Set fission barrier
5052         denslamb0 = 0.0;                      << 3544 //
5053         eclamb0 = 0.0;                        << 3545     (*ef_par) = ef;
5054         lamb0t = 0.0;                         << 3546 //
5055     }                                         << 3547   // calculation of surface and curvature integrals needed to      
5056 exi1006:                                      << 3548   // to calculate the level density parameter at the saddle point
5057                                               << 3549     xx = fissility((k+j),k,NbLam0,sn,slamb0,fiss->optxfis);
5058     // Decay widths for particles             << 3550     y = 1.00 - xx;
5059     if (densg > 0.)                           << 3551     if(y<0.0) y = 0.0;
5060     {                                         << 3552     if(y>1.0) y = 1.0;
5061         //                                    << 3553     bssp = bipol(1,y);
5062         // CALCULATION OF THE PARTIAL DECAY W << 3554     bksp = bipol(2,y);
5063         // USED FOR BOTH THE TIME SCALE AND T << 3555   }
5064         //                                    << 3556   else {
5065         //      AKAP = HBAR**2/(2* MN * R_0** << 3557     ef = 1.0e40;
5066         //                                    << 3558     sbfis = 1.0e40;
5067         // AK, KHS 2005 - Energy-dependen inv << 3559     bssp = 1.0;
5068         // of                                 << 3560     bksp = 1.0;
5069         //                Coulomb barrier for << 3561   }
5070         // JLRS 2017 - Implementation in abla << 3562 //
5071                                               << 3563 // COMPOUND NUCLEUS LEVEL DENSITY
5072         if (densn <= 0.0)                     << 3564 //
5073         {                                     << 3565 //  AK 2007 - Now DENSNIV called with correct BS, BK
5074             gn = 0.0;                         << 
5075         }                                     << 
5076         else                                  << 
5077         {                                     << 
5078             gn = width(a, zprf, 1.0, 0.0, nt, << 
5079         }                                     << 
5080         if (densp <= 0.0)                     << 
5081         {                                     << 
5082             gp = 0.0;                         << 
5083         }                                     << 
5084         else                                  << 
5085         {                                     << 
5086             gp = width(a, zprf, 1.0, 1.0, pt, << 
5087         }                                     << 
5088         if (densd <= 0.0)                     << 
5089         {                                     << 
5090             gd = 0.0;                         << 
5091         }                                     << 
5092         else                                  << 
5093         {                                     << 
5094             gd = width(a, zprf, 2.0, 1.0, dt, << 
5095         }                                     << 
5096         if (denst <= 0.0)                     << 
5097         {                                     << 
5098             gt = 0.0;                         << 
5099         }                                     << 
5100         else                                  << 
5101         {                                     << 
5102             gt = width(a, zprf, 3.0, 1.0, tt, << 
5103         }                                     << 
5104         if (denshe <= 0.0)                    << 
5105         {                                     << 
5106             ghe = 0.0;                        << 
5107         }                                     << 
5108         else                                  << 
5109         {                                     << 
5110             ghe = width(a, zprf, 3.0, 2.0, he << 
5111         }                                     << 
5112         if (densa <= 0.0)                     << 
5113         {                                     << 
5114             ga = 0.0;                         << 
5115         }                                     << 
5116         else                                  << 
5117         {                                     << 
5118             ga = width(a, zprf, 4.0, 2.0, at, << 
5119         }                                     << 
5120         if (denslamb0 <= 0.0)                 << 
5121         {                                     << 
5122             glamb0 = 0.0;                     << 
5123         }                                     << 
5124         else                                  << 
5125         {                                     << 
5126             glamb0 = width(a, zprf, 1.0, -2.0 << 
5127         }                                     << 
5128                                               << 
5129         //     **************************     << 
5130         //     *  Treatment of IMFs     *     << 
5131         //     * KHS, AK, MVR 2005-2006 *     << 
5132         //     **************************     << 
5133                                                  3566 
5134         G4int izcn = 0, incn = 0, inmin = 0,  << 3567   afp = idnint(a);
5135         G4double aimf, mares, maimf;          << 3568   iz = idnint(zprf);
                                                   >> 3569   in = afp - iz;
                                                   >> 3570   bshell = ecld->ecgnz[in][iz]- ecld->vgsld[in][iz];
                                                   >> 3571   defbet = ecld->beta2[in][iz];
                                                   >> 3572 
                                                   >> 3573   iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
                                                   >> 3574   erot = jprf * jprf * 197.328 * 197.328 /(2. * iinert);
                                                   >> 3575   erotcn = erot;
                                                   >> 3576 
                                                   >> 3577   bsbkbc(a,zprf,&bscn,&bkcn,&bccn);
                                                   >> 3578 
                                                   >> 3579  // if(ee > erot+emin){
                                                   >> 3580   densniv(a,zprf,ee,0.0,&densg,bshell,bscn,bkcn,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprf,0,&qrcn);
                                                   >> 3581   ftcn = temp;
                                                   >> 3582 /*
                                                   >> 3583   //ecorcn = ecor;
                                                   >> 3584   }else{
                                                   >> 3585 // If EE < EROT, only gamma emission can take place
                                                   >> 3586          probf = 0.0;
                                                   >> 3587      probp = 0.0;
                                                   >> 3588      probd = 0.0;
                                                   >> 3589      probt = 0.0;
                                                   >> 3590      probn = 0.0;
                                                   >> 3591      probhe = 0.0;
                                                   >> 3592      proba = 0.0;
                                                   >> 3593      probg = 1.0;
                                                   >> 3594          probimf = 0.0;
                                                   >> 3595 //c JLRS 03/2017 - Added this calculation
                                                   >> 3596 //C According to A. Ignatyuk, GG :
                                                   >> 3597 //C Here BS=BK=1, as this was assumed in the parameterization
                                                   >> 3598          pa = (ald->av)*a + (ald->as)*std::pow(a,2./3.) + (ald->ak)*std::pow(a,1./3.);
                                                   >> 3599          gamma = 2.5 * pa * std::pow(a,-4./3.);
                                                   >> 3600          gfactor = 1.+gamma*ecld->ecgnz[in][iz];
                                                   >> 3601          if(gfactor<=0.){
                                                   >> 3602           gfactor = 0.0;
                                                   >> 3603          }
                                                   >> 3604 //
                                                   >> 3605          gtemp = 17.60/(std::pow(a,0.699) * std::sqrt(gfactor));
                                                   >> 3606          ecg = 4.0 * gtemp;
                                                   >> 3607 //
                                                   >> 3608          goto direct70;
                                                   >> 3609   }
                                                   >> 3610 */
                                                   >> 3611 
                                                   >> 3612 //  ---------------------------------------------------------------
                                                   >> 3613 //        LEVEL DENSITIES AND TEMPERATURES OF THE FINAL STATES
                                                   >> 3614 //  ---------------------------------------------------------------
                                                   >> 3615 //
                                                   >> 3616 //  MVR - in case of charged particle emission temperature
                                                   >> 3617 //  comes from random kinetic energy from a Maxwelliam distribution
                                                   >> 3618 //  if option imaxwell = 1 (otherwise E=2T)
                                                   >> 3619 //
                                                   >> 3620 //  AK - LEVEL DENSITY AND TEMPERATURE AT THE SADDLE POINT -> now calculated in the subroutine FISSION_WIDTH
                                                   >> 3621 //
                                                   >> 3622 //
                                                   >> 3623 // LEVEL DENSITY AND TEMPERATURE IN THE NEUTRON DAUGHTER
                                                   >> 3624 //
                                                   >> 3625 // KHS, AK 2007 - Reduction of angular momentum due to orbital angular momentum of emitted fragment
                                                   >> 3626 // JLRS Nov-2016 - Added these caculations in abla++
5136                                                  3627 
5137         if (fimf_allowed == 0 || zprf <= 5.0  << 3628   if (in >= 2) {
5138         {                                     << 3629     ind=idnint(a)-idnint(zprf)-1;
5139             gimf = 0.0;                       << 3630     izd=idnint(zprf);
5140         }                                     << 3631     if(jprf>0.10){
5141         else                                  << 3632          lorb(a,a-1.,jprf,ee-sn,&dlout,&sdlout);
5142         {                                     << 3633          djprf = gausshaz(1,dlout,sdlout);
5143             //      Estimate the total decay  << 3634          if(IDjprf==1) djprf = 0.0;
5144             //      By using the logarithmic  << 3635          jprfn = jprf + djprf;
5145                                               << 3636          jprfn = dint(std::abs(jprfn));   // The nucleus just turns the other way around
5146             mglms(a, zprf, opt->optshpimf, &m << 3637     }
5147                                               << 3638     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
5148             gimf3 = 0.0;                      << 3639     defbet = ecld->beta2[ind][izd];
5149             zimf = 3.0;                       << 3640 
5150             izimf = 3;                        << 3641     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-1.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
5151             //      *** Find the limits that  << 3642     erotn = jprfn * jprfn * 197.328 * 197.328 /(2. * iinert);
5152             izcn = idnint(zprf);     // Z of  << 3643     bsbkbc(a-1.,zprf,&bs,&bk,&bc);   
5153             incn = idnint(a) - izcn; // N of  << 3644 
5154                                               << 3645     // level density and temperature in the neutron daughter                 
5155             isostab_lim(izimf, &inmin,        << 3646     densniv(a-1.0,zprf,ee,sn,&densn,bshell, bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprfn,0,&qr);
5156                         &inmax); // Bound iso << 3647     nt = temp;
5157             isostab_lim(izcn - izimf,         << 3648     ecn=0.0;
5158                         &inmi,                << 3649     if(densn>0.){
5159                         &inma);               << 3650      G4int IS=0;
5160                                               << 3651      if(imaxwell == 1){
5161             inmin = max(inmin, incn - inma);  << 3652       rnt = nt;
5162             inmax = min(inmax, incn - inmi);  << 3653       dir1234:
5163                                               << 3654       ecn=fvmaxhaz_neut(rnt);
5164             inmax = max(inmax, inmin); // In  << 3655       IS++;
5165                                               << 3656       if(IS>100){std::cout << "WARNING: FVMAXHAZ_NEUT CALLED MORE THAN 100 TIMES" << std::endl;
5166             for (G4int iaimf = izimf + inmin; << 3657       goto exi1000;
5167             {                                 << 3658       }
5168                 aimf = G4double(iaimf);       << 3659        if(ecn>(ee-sn)){
5169                 if (aimf >= a || zimf >= zprf << 3660         if((ee-sn)<rnt)
5170                 {                             << 3661            ecn = ee-sn;
5171                     width_imf = 0.0;          << 3662         else
5172                 }                             << 3663            goto dir1234;
5173                 else                          << 3664            }
5174                 {                             << 3665         if(ecn<=0.0) goto dir1234;
5175                     // Q-values               << 3666      }else{
5176                     mglms(a - aimf, zprf - zi << 3667       ecn = 2.0 * nt;
5177                     mglms(aimf, zimf, opt->op << 3668      }
5178                     // Bass barrier           << 3669     }
5179                     barrs(idnint(zprf - zimf) << 3670   } 
5180                     sbimf = maimf + mares - m << 3671   else {
5181                     // Rotation energy        << 3672     densn = 0.0;
5182                     defbetimf = ecld->beta2[i << 3673     ecn = 0.0;
5183                                 ecld->beta2[i << 3674     nt = 0.0;
5184                                               << 3675   }
5185                     iinert = 0.40 * 931.490 * << 3676   exi1000:
5186                                  (std::pow(ai << 
5187                              931.490 * 1.160  << 
5188                                  (std::pow(ai << 
5189                                  (std::pow(ai << 
5190                                               << 
5191                     erot = jprf * jprf * 197. << 
5192                                               << 
5193                     // Width                  << 
5194                     if (densg == 0.0 || ee <  << 
5195                     {                         << 
5196                         width_imf = 0.0;      << 
5197                     }                         << 
5198                     else                      << 
5199                     {                         << 
5200                         // To take into accou << 
5201                         //      BSIMF = ((A-A << 
5202                         //      AIMF**(2.D0/3 << 
5203                         bsimf = bscn;         << 
5204                         densniv(              << 
5205                             a, zprf, ee, sbim << 
5206                                               << 
5207                         imfarg = (sbimf + ero << 
5208                         if (imfarg > 200.0)   << 
5209                             imfarg = 200.0;   << 
5210                                               << 
5211                         // For IMF - The avai << 
5212                         // densities in CN at << 
5213                         // G=WIDTH*ro_CN(E-SB << 
5214                         // approximation: ro( << 
5215                         // included to take i << 
5216                         // deformed. If (abov << 
5217                         // this ratio is equa << 
5218                         width_imf = 0.0;      << 
5219                         //                    << 
5220                         width_imf =           << 
5221                             width(a, zprf, ai << 
5222                     } // if densg             << 
5223                 }     // if aimf              << 
5224                 gimf3 = gimf3 + width_imf;    << 
5225             } // for IAIMF                    << 
5226                                               << 
5227             //   zimf = 5                     << 
5228             gimf5 = 0.0;                      << 
5229             zimf = 5.0;                       << 
5230             izimf = 5;                        << 
5231             //      *** Find the limits that  << 
5232             izcn = idnint(zprf);     // Z of  << 
5233             incn = idnint(a) - izcn; // N of  << 
5234                                               << 
5235             isostab_lim(izimf, &inmin,        << 
5236                         &inmax); // Bound iso << 
5237             isostab_lim(izcn - izimf,         << 
5238                         &inmi,                << 
5239                         &inma);               << 
5240                                               << 
5241             inmin = max(inmin, incn - inma);  << 
5242             inmax = min(inmax, incn - inmi);  << 
5243                                               << 
5244             inmax = max(inmax, inmin); // In  << 
5245                                               << 
5246             for (G4int iaimf = izimf + inmin; << 
5247             {                                 << 
5248                 aimf = G4double(iaimf);       << 
5249                 if (aimf >= a || zimf >= zprf << 
5250                 {                             << 
5251                     width_imf = 0.0;          << 
5252                 }                             << 
5253                 else                          << 
5254                 {                             << 
5255                     // Q-values               << 
5256                     mglms(a - aimf, zprf - zi << 
5257                     mglms(aimf, zimf, opt->op << 
5258                     // Bass barrier           << 
5259                     barrs(idnint(zprf - zimf) << 
5260                     sbimf = maimf + mares - m << 
5261                     // Rotation energy        << 
5262                     defbetimf = ecld->beta2[i << 
5263                                 ecld->beta2[i << 
5264                                               << 
5265                     iinert = 0.40 * 931.490 * << 
5266                                  (std::pow(ai << 
5267                              931.490 * 1.160  << 
5268                                  (std::pow(ai << 
5269                                  (std::pow(ai << 
5270                                               << 
5271                     erot = jprf * jprf * 197. << 
5272                     //                        << 
5273                     // Width                  << 
5274                     if (densg == 0.0 || ee <  << 
5275                     {                         << 
5276                         width_imf = 0.0;      << 
5277                     }                         << 
5278                     else                      << 
5279                     {                         << 
5280                         // To take into accou << 
5281                         //      BSIMF = ((A-A << 
5282                         //      AIMF**(2.D0/3 << 
5283                         bsimf = bscn;         << 
5284                         densniv(              << 
5285                             a, zprf, ee, sbim << 
5286                         //                    << 
5287                         imfarg = (sbimf + ero << 
5288                         if (imfarg > 200.0)   << 
5289                             imfarg = 200.0;   << 
5290                         //                    << 
5291                         // For IMF - The avai << 
5292                         // densities in CN at << 
5293                         // G=WIDTH*ro_CN(E-SB << 
5294                         // approximation: ro( << 
5295                         // included to take i << 
5296                         // deformed. If (abov << 
5297                         // this ratio is equa << 
5298                         width_imf = 0.0;      << 
5299                         width_imf = width(a,  << 
5300                                     qrcn; //* << 
5301                     }                     //  << 
5302                 }                         //  << 
5303                 gimf5 = gimf5 + width_imf;    << 
5304             } // for IAIMF                    << 
5305             // It is assumed that GIMFi = A_I << 
5306             // integrates Int(A_IMF*ZIMF**B_I << 
5307                                               << 
5308             if (gimf3 <= 0.0 || gimf5 <= 0.0) << 
5309             {                                 << 
5310                 gimf = 0.0;                   << 
5311                 b_imf = -100.0;               << 
5312                 a_imf = 0.0;                  << 
5313             }                                 << 
5314             else                              << 
5315             {                                 << 
5316                 //                            << 
5317                 b_imf = (std::log10(gimf3) -  << 
5318                 //                            << 
5319                 if (b_imf >= -1.01)           << 
5320                     b_imf = -1.01;            << 
5321                 if (b_imf <= -100.0)          << 
5322                 {                             << 
5323                     b_imf = -100.0;           << 
5324                     a_imf = 0.0;              << 
5325                     gimf = 0.0;               << 
5326                     goto direct2007;          << 
5327                 }                             << 
5328                 //                            << 
5329                 a_imf = gimf3 / std::pow(3.0, << 
5330                 gimf = a_imf * (std::pow(zprf << 
5331             }                                 << 
5332                                                  3677 
5333         direct2007:                           << 3678 // LEVEL DENSITY AND TEMPERATURE IN THE PROTON DAUGHTER
5334             if (gimf < 1.e-10)                << 3679 //
5335                 gimf = 0.0;                   << 3680 // Reduction of angular momentum due to orbital angular momentum of emitted fragment
5336         } // if fimf_allowed                  << 3681   if (iz >= 2) {
5337           //                                  << 3682     ind=idnint(a)-idnint(zprf);
5338           // c JLRS 2016 - Added this calcula << 3683     izd=idnint(zprf)-1;
5339         // C AK 2004 - Gamma width            << 3684     if(jprf>0.10){
5340         // C According to A. Ignatyuk, GG :   << 3685          lorb(a,a-1.,jprf,ee-sbp,&dlout,&sdlout);
5341         // C Here BS=BK=1, as this was assume << 3686          djprf = gausshaz(1,dlout,sdlout);
5342         pa = (ald->av) * a + (ald->as) * std: << 3687          if(IDjprf==1) djprf = 0.0;
5343         gamma = 2.5 * pa * std::pow(a, -4. /  << 3688          jprfp = jprf + djprf;
5344         gfactor = 1. + gamma * ecld->ecgnz[in << 3689          jprfp = dint(std::abs(jprfp));   // The nucleus just turns the other way around
5345         if (gfactor <= 0.)                    << 3690     }
5346         {                                     << 3691     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
5347             gfactor = 0.0;                    << 3692     defbet =ecld->beta2[ind][izd];
5348         }                                     << 3693 
5349         //                                    << 3694     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-1.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
5350         gtemp = 17.60 / (std::pow(a, 0.699) * << 3695     erotp = jprfp * jprfp * 197.328 * 197.328 /(2. * iinert);
5351         //                                    << 3696 
5352         // C If one switches gammas off, one  << 3697     bsbkbc(a-1.,zprf-1.,&bs,&bk,&bc);
5353         // through the fission barrier.       << 3698    
5354         gg = 0.624e-9 * std::pow(a, 1.6) * st << 3699     // level density and temperature in the proton daughter                  
5355         // gammaemission==1                   << 3700     densniv(a-1.0,zprf-1.0,ee,sbp,&densp,bshell,bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprfp,0,&qr);
5356         // C For fission fragments, GG is ~ 2 << 3701     pt = temp;
5357         // c "oridnary" nuclei (A. Ignatyuk,  << 3702     ecp = 0.;
5358         if (gammaemission == 1)               << 3703     if(densp>0.){
5359         {                                     << 3704      G4int IS=0;
5360             gg = 2.0 * gg;                    << 3705      if(imaxwell == 1){
5361         }                                     << 3706       rpt = pt;
5362         ecg = 4.0 * gtemp;                    << 3707       dir1235:
5363         //                                    << 3708       ecp=fvmaxhaz(rpt);
5364         //                                    << 3709       IS++;
5365         gsum = ga + ghe + gd + gt + gp + gn + << 3710       if(IS>100){std::cout << "WARNING: FVMAXHAZ CALLED MORE THAN 100 TIMES" << std::endl;
                                                   >> 3711       goto exi1001;
                                                   >> 3712       }
                                                   >> 3713        if(ecp>(ee-sbp)){
                                                   >> 3714         if((ee-sbp)<rpt)
                                                   >> 3715            ecp = ee-sbp;
                                                   >> 3716         else
                                                   >> 3717            goto dir1235;
                                                   >> 3718            }
                                                   >> 3719         if(ecp<=0.0) goto dir1235;
                                                   >> 3720       ecp = ecp + bp;
                                                   >> 3721      }else{
                                                   >> 3722       ecp = 2.0 * pt + bp;
                                                   >> 3723      }
                                                   >> 3724     }
                                                   >> 3725   }
                                                   >> 3726   else {
                                                   >> 3727     densp = 0.0;
                                                   >> 3728     ecp = 0.0;
                                                   >> 3729     pt = 0.0;
                                                   >> 3730   }
                                                   >> 3731   exi1001:
5366                                                  3732 
5367         // std::cout << gn << " " << gd << "  << 3733 //  FINAL LEVEL DENSITY AND TEMPERATURE AFTER DEUTERON EMISSION
                                                   >> 3734 //
                                                   >> 3735 // Reduction of angular momentum due to orbital angular momentum of emitted fragment
                                                   >> 3736   if ((in >= 2) && (iz >= 2)) {
                                                   >> 3737     ind=idnint(a)-idnint(zprf)-1;
                                                   >> 3738     izd=idnint(zprf)-1;
                                                   >> 3739     if(jprf>0.10){
                                                   >> 3740          lorb(a,a-2.,jprf,ee-sbd,&dlout,&sdlout);
                                                   >> 3741          djprf = gausshaz(1,dlout,sdlout);
                                                   >> 3742          if(IDjprf==1) djprf = 0.0;
                                                   >> 3743          jprfd = jprf + djprf;
                                                   >> 3744          jprfd = dint(std::abs(jprfd));   // The nucleus just turns the other way around
                                                   >> 3745     }
                                                   >> 3746     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
                                                   >> 3747     defbet = ecld->beta2[ind][izd];
                                                   >> 3748 
                                                   >> 3749     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-2.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
                                                   >> 3750     erotd = jprfd * jprfd * 197.328 * 197.328 /(2. * iinert);
                                                   >> 3751 
                                                   >> 3752     bsbkbc(a-2.,zprf-1.,&bs,&bk,&bc);
                                                   >> 3753 
                                                   >> 3754     // level density and temperature in the deuteron daughter                   
                                                   >> 3755     densniv(a-2.0,zprf-1.0e0,ee,sbd,&densd,bshell,bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprfd,0,&qr);
                                                   >> 3756 
                                                   >> 3757     dt = temp;
                                                   >> 3758     ecd = 0.0;
                                                   >> 3759     if(densd>0.){
                                                   >> 3760      G4int IS=0;
                                                   >> 3761      if(imaxwell == 1){
                                                   >> 3762       rdt = dt;
                                                   >> 3763       dir1236:
                                                   >> 3764       ecd=fvmaxhaz(rdt);
                                                   >> 3765       IS++;
                                                   >> 3766       if(IS>100){std::cout << "WARNING: FVMAXHAZ CALLED MORE THAN 100 TIMES" << std::endl;
                                                   >> 3767       goto exi1002;
                                                   >> 3768       }
                                                   >> 3769        if(ecd>(ee-sbd)){
                                                   >> 3770         if((ee-sbd)<rdt)
                                                   >> 3771            ecd = ee-sbd;
                                                   >> 3772         else
                                                   >> 3773            goto dir1236;
                                                   >> 3774            }
                                                   >> 3775         if(ecd<=0.0) goto dir1236;
                                                   >> 3776       ecd = ecd + bd;
                                                   >> 3777      }else{
                                                   >> 3778       ecd = 2.0 * dt + bd;
                                                   >> 3779      }
                                                   >> 3780     }
                                                   >> 3781   }
                                                   >> 3782   else {
                                                   >> 3783     densd = 0.0;
                                                   >> 3784     ecd = 0.0;
                                                   >> 3785     dt = 0.0;
                                                   >> 3786   }
                                                   >> 3787   exi1002:
5368                                                  3788 
5369         if (gsum > 0.0)                       << 3789 //  FINAL LEVEL DENSITY AND TEMPERATURE AFTER TRITON EMISSION
5370         {                                     << 3790 //
5371             ts1 = hbar / gsum;                << 3791 // Reduction of angular momentum due to orbital angular momentum of emitted fragment
5372         }                                     << 3792   if ((in >= 3) && (iz >= 2)) {
5373         else                                  << 3793     ind=idnint(a)-idnint(zprf)-2;
5374         {                                     << 3794     izd=idnint(zprf)-1;
5375             ts1 = 1.0e99;                     << 3795     if(jprf>0.10){
5376             goto direct69;                    << 3796          lorb(a,a-3.,jprf,ee-sbt,&dlout,&sdlout);
5377         }                                     << 3797          djprf = gausshaz(1,dlout,sdlout);
5378         //                                    << 3798          if(IDjprf==1) djprf = 0.0;
5379         // Case of nuclei below Businaro-Gall << 3799          jprft = jprf + djprf;
5380         if (fiss->ifis == 0 || (zprf * zprf / << 3800          jprft = dint(std::abs(jprft));   // The nucleus just turns the other way around
5381         {                                     << 3801     }
5382             goto direct69;                    << 3802     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
5383         }                                     << 3803     defbet = ecld->beta2[ind][izd];
5384         //                                    << 3804 
5385         // Calculation of the fission decay w << 3805     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-3.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
5386         // Deformation is calculated using th << 3806     erott = jprft * jprft * 197.328 * 197.328 /(2. * iinert);
5387         //                                    << 3807 
5388         defbet = y;                           << 3808     bsbkbc(a-3.,zprf-1.,&bs,&bk,&bc);
5389         fission_width(zprf, a, ee, bssp, bksp << 3809 
5390         ft = temp;                            << 3810     // level density and temperature in the triton daughter                   
5391         //                                    << 3811     densniv(a-3.0,zprf-1.0,ee,sbt,&denst,bshell,bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprft,0,&qr);
5392         // Case of very heavy nuclei that hav << 3812 
5393         // For them fission is the only decay << 3813     tt = temp;
5394         if (ef <= 0.0)                        << 3814     ect=0.;
5395         {                                     << 3815     if(denst>0.){
5396             probf = 1.0;                      << 3816      G4int IS=0;
5397             probp = 0.0;                      << 3817      if(imaxwell == 1){
5398             probd = 0.0;                      << 3818       rtt = tt;
5399             probt = 0.0;                      << 3819       dir1237:
5400             probn = 0.0;                      << 3820       ect=fvmaxhaz(rtt);
5401             probhe = 0.0;                     << 3821       IS++;
5402             proba = 0.0;                      << 3822       if(IS>100){std::cout << "WARNING: FVMAXHAZ CALLED MORE THAN 100 TIMES" << std::endl;
5403             probg = 0.0;                      << 3823       goto exi1003;
5404             probimf = 0.0;                    << 3824       }
5405             problamb0 = 0.0;                  << 3825        if(ect>(ee-sbt)){
5406             goto direct70;                    << 3826         if((ee-sbt)<rtt)
5407         }                                     << 3827            ect = ee-sbt;
5408                                               << 3828         else
5409         if (fiss->bet <= 0.)                  << 3829            goto dir1237;
5410         {                                     << 3830            }
5411             gtotal = ga + ghe + gp + gd + gt  << 3831         if(ect<=0.0) goto dir1237;
5412             if (gtotal <= 0.0)                << 3832       ect = ect + bt;
5413             {                                 << 3833      }else{
5414                 probf = 0.0;                  << 3834       ect = 2.0 * tt + bt;
5415                 probp = 0.0;                  << 3835      }
5416                 probd = 0.0;                  << 3836     }
5417                 probt = 0.0;                  << 3837   }
5418                 probn = 0.0;                  << 3838   else {
5419                 probhe = 0.0;                 << 3839     denst = 0.0;
5420                 proba = 0.0;                  << 3840     ect = 0.0;
5421                 probg = 0.0;                  << 3841     tt = 0.0;
5422                 probimf = 0.0;                << 3842   }
5423                 problamb0 = 0.0;              << 3843   exi1003: 
5424                 goto direct70;                << 
5425             }                                 << 
5426             else                              << 
5427             {                                 << 
5428                 probf = gf / gtotal;          << 
5429                 probn = gn / gtotal;          << 
5430                 probp = gp / gtotal;          << 
5431                 probd = gd / gtotal;          << 
5432                 probt = gt / gtotal;          << 
5433                 probhe = ghe / gtotal;        << 
5434                 proba = ga / gtotal;          << 
5435                 probg = gg / gtotal;          << 
5436                 probimf = gimf / gtotal;      << 
5437                 problamb0 = glamb0 / gtotal;  << 
5438                 goto direct70;                << 
5439             }                                 << 
5440         }                                     << 
5441     }                                         << 
5442     else                                      << 
5443     {                                         << 
5444         goto direct69;                        << 
5445     }                                         << 
5446     //                                        << 
5447     if (inum > ilast)                         << 
5448     { // new event means reset the time scale << 
5449         tsum = 0.;                            << 
5450     }                                         << 
5451     //                                        << 
5452     // kramers factor for the dynamical hindr << 
5453     fomega_sp(a, y, &mfcd, &omegasp, &homegas << 
5454     cf = cram((NbLam0 > 0 ? fiss->bethyp : fi << 
5455     //                                        << 
5456     // We calculate the transient time        << 
5457     fomega_gs(a, zprf, &k1, &omegags, &homega << 
5458     tauc = tau((NbLam0 > 0 ? fiss->bethyp : f << 
5459     gf = gf * cf;                             << 
5460     //                                        << 
5461     /*                                        << 
5462     c The subroutine part_fiss calculates the << 
5463     to the time c dependence of the probabili << 
5464     the FOKKER-PLANCK eq c using a nucleus po << 
5465     parabola. It also gives the c decay time  << 
5466     all particle decay channels and the c fis << 
5467     the nucleus decays by particle evaporatio << 
5468     CHOICE_FISSPART = 2                       << 
5469     */                                        << 
5470     //                                        << 
5471     part_fiss((NbLam0 > 0 ? fiss->bethyp : fi << 
5472     gf = gff;                                 << 
5473     //                                        << 
5474     // We accumulate in TSUM the mean decay f << 
5475     // decay channels and fission             << 
5476     tsum = tsum + t_lapse;                    << 
5477                                               << 
5478     //   If fission occurs                    << 
5479     if (choice_fisspart == 2)                 << 
5480     {                                         << 
5481         probf = 1.0;                          << 
5482         probp = 0.0;                          << 
5483         probd = 0.0;                          << 
5484         probt = 0.0;                          << 
5485         probn = 0.0;                          << 
5486         probhe = 0.0;                         << 
5487         proba = 0.0;                          << 
5488         probg = 0.0;                          << 
5489         probimf = 0.0;                        << 
5490         problamb0 = 0.0;                      << 
5491         goto direct70;                        << 
5492     }                                         << 
5493     else                                      << 
5494     {                                         << 
5495         // If particle evaporation occurs     << 
5496         // The probabilities for the differen << 
5497         // account the fission width GFF that << 
5498                                               << 
5499         gtotal = ga + ghe + gp + gd + gt + gn << 
5500         if (gtotal <= 0.0)                    << 
5501         {                                     << 
5502             probf = 0.0;                      << 
5503             probp = 0.0;                      << 
5504             probd = 0.0;                      << 
5505             probt = 0.0;                      << 
5506             probn = 0.0;                      << 
5507             probhe = 0.0;                     << 
5508             proba = 0.0;                      << 
5509             probg = 0.0;                      << 
5510             probimf = 0.0;                    << 
5511             problamb0 = 0.0;                  << 
5512             goto direct70;                    << 
5513         }                                     << 
5514         else                                  << 
5515         {                                     << 
5516             probf = 0.0;                      << 
5517             probn = gn / gtotal;              << 
5518             probp = gp / gtotal;              << 
5519             probd = gd / gtotal;              << 
5520             probt = gt / gtotal;              << 
5521             probhe = ghe / gtotal;            << 
5522             proba = ga / gtotal;              << 
5523             probg = gg / gtotal;              << 
5524             probimf = gimf / gtotal;          << 
5525             problamb0 = glamb0 / gtotal;      << 
5526             goto direct70;                    << 
5527         }                                     << 
5528     }                                         << 
5529     //                                        << 
5530 direct69:                                     << 
5531     gtotal = ga + ghe + gp + gd + gt + gn + g << 
5532     if (gtotal <= 0.0)                        << 
5533     {                                         << 
5534         probf = 0.0;                          << 
5535         probp = 0.0;                          << 
5536         probd = 0.0;                          << 
5537         probt = 0.0;                          << 
5538         probn = 0.0;                          << 
5539         probhe = 0.0;                         << 
5540         proba = 0.0;                          << 
5541         probg = 0.0;                          << 
5542         probimf = 0.0;                        << 
5543         problamb0 = 0.0;                      << 
5544     }                                         << 
5545     else                                      << 
5546     {                                         << 
5547         probf = 0.0;                          << 
5548         probn = gn / gtotal;                  << 
5549         probp = gp / gtotal;                  << 
5550         probd = gd / gtotal;                  << 
5551         probt = gt / gtotal;                  << 
5552         probhe = ghe / gtotal;                << 
5553         proba = ga / gtotal;                  << 
5554         probg = gg / gtotal;                  << 
5555         probimf = gimf / gtotal;              << 
5556         problamb0 = glamb0 / gtotal;          << 
5557     }                                         << 
5558                                               << 
5559 direct70:                                     << 
5560     ptotl = probp + probd + probt + probn + p << 
5561     //                                        << 
5562     ee = eer;                                 << 
5563     ilast = inum;                             << 
5564                                               << 
5565     // Return values:                         << 
5566     (*probp_par) = probp;                     << 
5567     (*probd_par) = probd;                     << 
5568     (*probt_par) = probt;                     << 
5569     (*probn_par) = probn;                     << 
5570     (*probhe_par) = probhe;                   << 
5571     (*proba_par) = proba;                     << 
5572     (*probg_par) = probg;                     << 
5573     (*probimf_par) = probimf;                 << 
5574     (*problamb0_par) = problamb0;             << 
5575     (*probf_par) = probf;                     << 
5576     (*ptotl_par) = ptotl;                     << 
5577     (*sn_par) = sn;                           << 
5578     (*sp_par) = sp;                           << 
5579     (*sd_par) = sd;                           << 
5580     (*st_par) = st;                           << 
5581     (*she_par) = she;                         << 
5582     (*sa_par) = sa;                           << 
5583     (*slamb0_par) = slamb0;                   << 
5584     (*sbp_par) = sbp;                         << 
5585     (*sbd_par) = sbd;                         << 
5586     (*sbt_par) = sbt;                         << 
5587     (*sbhe_par) = sbhe;                       << 
5588     (*sba_par) = sba;                         << 
5589     (*ecn_par) = ecn;                         << 
5590     (*ecp_par) = ecp;                         << 
5591     (*ecd_par) = ecd;                         << 
5592     (*ect_par) = ect;                         << 
5593     (*eche_par) = eche;                       << 
5594     (*eca_par) = eca;                         << 
5595     (*ecg_par) = ecg;                         << 
5596     (*eclamb0_par) = eclamb0;                 << 
5597     (*bp_par) = bp;                           << 
5598     (*bd_par) = bd;                           << 
5599     (*bt_par) = bt;                           << 
5600     (*bhe_par) = bhe;                         << 
5601     (*ba_par) = ba;                           << 
5602     (*tcn) = ftcn;                            << 
5603     (*ts1_par) = ts1;                         << 
5604     (*jprfn_par) = jprfn;                     << 
5605     (*jprfp_par) = jprfp;                     << 
5606     (*jprfd_par) = jprfd;                     << 
5607     (*jprft_par) = jprft;                     << 
5608     (*jprfhe_par) = jprfhe;                   << 
5609     (*jprfa_par) = jprfa;                     << 
5610     (*jprflamb0_par) = jprflamb0;             << 
5611     (*tsum_par) = tsum;                       << 
5612     return;                                   << 
5613 }                                             << 
5614                                                  3844 
5615 void G4Abla::densniv(G4double a,              << 3845 // LEVEL DENSITY AND TEMPERATURE IN THE ALPHA DAUGHTER
5616                      G4double z,              << 3846 //
5617                      G4double ee,             << 3847 // Reduction of angular momentum due to orbital angular momentum of emitted fragment
5618                      G4double esous,          << 3848   if ((in >= 3) && (iz >= 3)) {
5619                      G4double* dens,          << 3849     ind=idnint(a)-idnint(zprf)-2;
5620                      G4double bshell,         << 3850     izd=idnint(zprf)-2;
5621                      G4double bsin,           << 3851     if(jprf>0.10){
5622                      G4double bkin,           << 3852          lorb(a,a-4.,jprf,ee-sba,&dlout,&sdlout);
5623                      G4double* temp,          << 3853          djprf = gausshaz(1,dlout,sdlout);
5624                      G4int optshp,            << 3854          if(IDjprf==1) djprf = 0.0;
5625                      G4int optcol,            << 3855          jprfa = jprf + djprf;
5626                      G4double defbet,         << 3856          jprfa = dint(std::abs(jprfa));   // The nucleus just turns the other way around
5627                      G4double* ecor,          << 3857     }
5628                      G4double jprf,           << 3858     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
5629                      G4int ifis,              << 3859     defbet = ecld->beta2[ind][izd];
5630                      G4double* qr)            << 3860 
5631 {                                             << 3861     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-4.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
5632     //   1498 C                               << 3862     erota = jprfa * jprfa * 197.328 * 197.328 /(2. * iinert);
5633     //   1499 C     INPUT:                    << 3863 
5634     //   1500 C             A,EE,ESOUS,OPTSHP << 3864     bsbkbc(a-4.,zprf-2.,&bs,&bk,&bc);
5635     //   1501 C                               << 3865 
5636     //   1502 C     LEVEL DENSITY PARAMETERS  << 3866     // level density and temperature in the alpha daughter                   
5637     //   1503 C     COMMON /ALD/    AV,AS,AK, << 3867     densniv(a-4.0,zprf-2.0,ee,sba,&densa,bshell,bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprfa,0,&qr);
5638     //   1504 C     AV,AS,AK - VOLUME,SURFACE << 3868 
5639     //   1505 C                LEVEL DENSITY  << 3869     at = temp;
5640     //   1506 C     OPTAFAN - 0/1  AF/AN >=1  << 3870     eca = 0.0;
5641     //   1507 C               RECOMMENDED IS  << 3871     if(densa>0.){
5642     //   1508                                 << 3872      G4int IS=0;
5643     //   C----------------------------------- << 3873      if(imaxwell == 1){
5644     //   1509 C     OUTPUT: DENS,TEMP         << 3874       rat = at;
5645     //   1510 C                               << 3875       dir1238:
5646     //   1511 C                               << 3876       eca=fvmaxhaz(rat);
5647     //   ____________________________________ << 3877       IS++;
5648     //   C  / 1513  C  /  PROCEDURE FOR CALCU << 3878       if(IS>100){std::cout << "WARNING: FVMAXHAZ CALLED MORE THAN 100 TIMES" << std::endl;
5649     //   COMPOUND NUCLEUS 1514  C             << 3879       goto exi1004;
5650     //   /___________________________________ << 3880       }
5651     //   1515 C                               << 3881        if(eca>(ee-sba)){
5652     //   1516       INTEGER AFP,IZ,OPTSHP,OPT << 3882         if((ee-sba)<rat)
5653     //   1517       REAL*8                    << 3883            eca = ee-sba;
5654     //   A,EE,ESOUS,DENS,E,Y0,Y1,Y2,Y01,Y11,Y << 3884         else
5655     //   C=====INSERTED BY KUDYAEV=========== << 3885            goto dir1238;
5656     //   1519       COMMON /ALD/ AV,AS,AK,OPT << 3886            }
5657     //   1520       REAL*8                    << 3887         if(eca<=0.0) goto dir1238;
5658     //   ECR,ER,DELTAU,Z,DELTPP,PARA,PARZ,FE, << 3888       eca = eca + ba;
5659     //   1521       REAL*8                    << 3889      }else{
5660     //   BSHELL,DELTA0,AV,AK,AS,PONNIV,PONFE, << 3890       eca = 2.0 * at + ba;
5661     //   C=================================== << 3891      }
5662     //   1523 C                               << 3892     }
5663     //   1524 C                               << 3893   }
5664     //   1525                                 << 3894   else {
5665     //   C----------------------------------- << 3895     densa = 0.0;
5666     //   1526 C     A                 MASS NU << 3896     eca = 0.0;
5667     //   1527 C     EE                EXCITAT << 3897     at = 0.0;
5668     //   1528 C     ESOUS             SEPARAT << 3898   }
5669     //   BARRIER                              << 3899   exi1004: 
5670     //   1529 C     DENS              STATE D << 
5671     //   EE-ESOUS-EC 1530 C     BSHELL        << 
5672     //   NUCLEAR TEMPERATURE 1532 C     E     << 
5673     //   DAUGHTER NUCLEUS 1533  C     E1      << 
5674     //   1534 C     Y0,Y1,Y2,Y01,Y11,Y21      << 
5675     //   1535 C              LOCAL    HELP VA << 
5676     //   1536 C     PA       LOCAL    STATE-D << 
5677     //   1537 C     EC                KINETIC << 
5678     //   WITHOUT 1538 C                       << 
5679     //   FAKTOR FOR SUBSTRACTING KINETIC ENER << 
5680     //   PAIRING GAP 12 FOR GROUND STATE 1541 << 
5681     //   SADDLE POINT 1542  C     EITERA      << 
5682     //   TEMPERATURE ITERATION 1543           << 
5683     //   C----------------------------------- << 
5684     //   1544 C                               << 
5685     //   1545 C                               << 
5686     G4double delta0 = 0.0;                    << 
5687     G4double deltau = 0.0;                    << 
5688     G4double deltpp = 0.0;                    << 
5689     G4double e = 0.0;                         << 
5690     G4double e0 = 0.0;                        << 
5691     G4double ecor1 = 0.0;                     << 
5692     G4double ecr = 10.0;                      << 
5693     G4double fe = 0.0;                        << 
5694     G4double he = 0.0;                        << 
5695     G4double pa = 0.0;                        << 
5696     G4double para = 0.0;                      << 
5697     G4double parz = 0.0;                      << 
5698     G4double ponfe = 0.0;                     << 
5699     G4double ponniv = 0.0;                    << 
5700     G4double fqr = 1.0;                       << 
5701     G4double y01 = 0.0;                       << 
5702     G4double y11 = 0.0;                       << 
5703     G4double y2 = 0.0;                        << 
5704     G4double y21 = 0.0;                       << 
5705     G4double y1 = 0.0;                        << 
5706     G4double y0 = 0.0;                        << 
5707     G4double fnorm = 0.0;                     << 
5708     G4double fp_per = 0.;                     << 
5709     G4double fp_par = 0.;                     << 
5710     G4double sig_per = 0.;                    << 
5711     G4double sig_par = 0.;                    << 
5712     G4double sigma2;                          << 
5713     G4double jfact = 1.;                      << 
5714     G4double erot = 0.;                       << 
5715     G4double fdens = 0.;                      << 
5716     G4double fecor = 0.;                      << 
5717     G4double BSHELLCT = 0.;                   << 
5718     G4double gamma = 0.;                      << 
5719     G4double ftemp = 0.0;                     << 
5720     G4double tempct = 0.0;                    << 
5721     G4double densfm = 0.0;                    << 
5722     G4double densct = 0.0;                    << 
5723     G4double ein = 0.;                        << 
5724     G4double elim;                            << 
5725     G4double tfm;                             << 
5726     G4double bs = bsin;                       << 
5727     G4double bk = bkin;                       << 
5728     G4int IPARITE;                            << 
5729     G4int IOPTCT = fiss->optct;               << 
5730     //                                        << 
5731     G4double pi6 = std::pow(3.1415926535, 2)  << 
5732     G4double pi = 3.1415926535;               << 
5733     //                                        << 
5734     G4int afp = idnint(a);                    << 
5735     G4int iz = idnint(z);                     << 
5736     G4int in = afp - iz;                      << 
5737     //                                        << 
5738     if (ifis != 1)                            << 
5739     {                                         << 
5740         BSHELLCT = ecld->ecgnz[in][iz];       << 
5741     }                                         << 
5742     else                                      << 
5743     {                                         << 
5744         BSHELLCT = 0.0;                       << 
5745     }                                         << 
5746     if (afp <= 20)                            << 
5747         BSHELLCT = 0.0;                       << 
5748     //                                        << 
5749     parite(a, &para);                         << 
5750     if (para < 0.0)                           << 
5751     {                                         << 
5752         // Odd A                              << 
5753         IPARITE = 1;                          << 
5754     }                                         << 
5755     else                                      << 
5756     {                                         << 
5757         // Even A                             << 
5758         parite(z, &parz);                     << 
5759         if (parz > 0.0)                       << 
5760         {                                     << 
5761             // Even Z, even N                 << 
5762             IPARITE = 2;                      << 
5763         }                                     << 
5764         else                                  << 
5765         {                                     << 
5766             // Odd Z, odd N                   << 
5767             IPARITE = 0;                      << 
5768         }                                     << 
5769     }                                         << 
5770     //                                        << 
5771     ein = ee - esous;                         << 
5772     //                                        << 
5773     if (ein > 1.e30)                          << 
5774     {                                         << 
5775         fdens = 0.0;                          << 
5776         ftemp = 0.5;                          << 
5777         goto densniv100;                      << 
5778     }                                         << 
5779     //                                        << 
5780     e = ee - esous;                           << 
5781     //                                        << 
5782     if (e < 0.0 && ifis != 1)                 << 
5783     { // TUNNELING                            << 
5784         fdens = 0.0;                          << 
5785         densfm = 0.0;                         << 
5786         densct = 0.0;                         << 
5787         if (ald->optafan == 1)                << 
5788         {                                     << 
5789             pa = (ald->av) * a + (ald->as) *  << 
5790         }                                     << 
5791         else                                  << 
5792         {                                     << 
5793             pa = (ald->av) * a + (ald->as) *  << 
5794                  (ald->ak) * bkin * std::pow( << 
5795         }                                     << 
5796         gamma = 2.5 * pa * std::pow(a, -4.0 / << 
5797         fecor = 0.0;                          << 
5798         goto densniv100;                      << 
5799     }                                         << 
5800     //                                        << 
5801     if (ifis == 0 && bs != 1.0)               << 
5802     {                                         << 
5803         // - With increasing excitation energ << 
5804         // deformed:                          << 
5805         G4double ponq = (e - 100.0) / 5.0;    << 
5806         if (ponq > 700.0)                     << 
5807             ponq = 700.0;                     << 
5808         bs = 1.0 / (1.0 + std::exp(-ponq)) +  << 
5809         bk = 1.0 / (1.0 + std::exp(-ponq)) +  << 
5810     }                                         << 
5811     //                                        << 
5812     // level density parameter                << 
5813     if (ald->optafan == 1)                    << 
5814     {                                         << 
5815         pa = (ald->av) * a + (ald->as) * std: << 
5816     }                                         << 
5817     else                                      << 
5818     {                                         << 
5819         pa = (ald->av) * a + (ald->as) * bs * << 
5820     }                                         << 
5821     //                                        << 
5822     gamma = 2.5 * pa * std::pow(a, -4.0 / 3.0 << 
5823     //                                        << 
5824     // AK - 2009 - trial, in order to have tr << 
5825     // approach Idea - at the phase transitio << 
5826     // TEMP, and this determines critical ene << 
5827     if (a > 0.0)                              << 
5828     {                                         << 
5829         ecr = pa * 17.60 / (std::pow(a, 0.699 << 
5830               (std::pow(a, 0.699) * std::sqrt << 
5831     }                                         << 
5832                                               << 
5833     // pairing corrections                    << 
5834     if (ifis == 1)                            << 
5835     {                                         << 
5836         delta0 = 14;                          << 
5837     }                                         << 
5838     else                                      << 
5839     {                                         << 
5840         delta0 = 12;                          << 
5841     }                                         << 
5842                                               << 
5843     // shell corrections                      << 
5844     if (optshp > 0)                           << 
5845     {                                         << 
5846         deltau = bshell;                      << 
5847         if (optshp == 2)                      << 
5848         {                                     << 
5849             deltau = 0.0;                     << 
5850         }                                     << 
5851         if (optshp >= 2)                      << 
5852         {                                     << 
5853             // pairing energy shift with cond << 
5854             // deltpp = -0.25e0* (delta0/pow( << 
5855             // + 2.e0*delta0/sqrt(a);         << 
5856             deltpp = -0.25e0 * std::pow((delt << 
5857             // Odd A                          << 
5858             if (IPARITE == 1)                 << 
5859             {                                 << 
5860                 // e = e - delta0/sqrt(a);    << 
5861                 e = e - (0.285 + 11.17 * std: << 
5862             }                                 << 
5863             // Even Z, even N                 << 
5864             if (IPARITE == 2)                 << 
5865             {                                 << 
5866                 e = e - (22.34 * std::pow(a,  << 
5867             }                                 << 
5868             // Odd Z, odd N                   << 
5869             if (IPARITE == 0)                 << 
5870             {                                 << 
5871                 if (in == iz)                 << 
5872                 {                             << 
5873                     //  e = e;                << 
5874                 }                             << 
5875                 else                          << 
5876                 {                             << 
5877                     //  e = e-30./a;          << 
5878                 }                             << 
5879             }                                 << 
5880         }                                     << 
5881         else                                  << 
5882         {                                     << 
5883             deltpp = 0.0;                     << 
5884         }                                     << 
5885     }                                         << 
5886     else                                      << 
5887     {                                         << 
5888         deltau = 0.0;                         << 
5889         deltpp = 0.0;                         << 
5890     }                                         << 
5891                                               << 
5892     if (e < 0.0)                              << 
5893     {                                         << 
5894         e = 0.0;                              << 
5895         ftemp = 0.5;                          << 
5896     }                                         << 
5897                                               << 
5898     // washing out is made stronger           << 
5899     ponfe = -2.5 * pa * e * std::pow(a, (-4.0 << 
5900                                               << 
5901     if (ponfe < -700.0)                       << 
5902     {                                         << 
5903         ponfe = -700.0;                       << 
5904     }                                         << 
5905     fe = 1.0 - std::exp(ponfe);               << 
5906     if (e < ecr)                              << 
5907     {                                         << 
5908         // priv. comm. k.-h. schmidt          << 
5909         he = 1.0 - std::pow((1.0 - e / ecr),  << 
5910     }                                         << 
5911     else                                      << 
5912     {                                         << 
5913         he = 1.0;                             << 
5914     }                                         << 
5915     // Excitation energy corrected for pairin << 
5916     // washing out with excitation energy is  << 
5917     fecor = e + deltau * fe + deltpp * he;    << 
5918     if (fecor <= 0.1)                         << 
5919     {                                         << 
5920         fecor = 0.1;                          << 
5921     }                                         << 
5922     // iterative procedure according to gross << 
5923     // to avoid the singularity e = 0         << 
5924     if (ee < 5.0)                             << 
5925     {                                         << 
5926         y1 = std::sqrt(pa * fecor);           << 
5927         for (G4int j = 0; j < 5; j++)         << 
5928         {                                     << 
5929             y2 = pa * fecor * (1.e0 - std::ex << 
5930             y1 = std::sqrt(y2);               << 
5931         }                                     << 
5932         y0 = pa / y1;                         << 
5933         ftemp = 1.0 / y0;                     << 
5934         fdens = std::exp(y0 * fecor) /        << 
5935                 (std::pow((std::pow(fecor, 3) << 
5936                 std::exp(y1) * (1.0 - std::ex << 
5937         if (fecor < 1.0)                      << 
5938         {                                     << 
5939             ecor1 = 1.0;                      << 
5940             y11 = std::sqrt(pa * ecor1);      << 
5941             for (G4int j = 0; j < 7; j++)     << 
5942             {                                 << 
5943                 y21 = pa * ecor1 * (1.0 - std << 
5944                 y11 = std::sqrt(y21);         << 
5945             }                                 << 
5946                                                  3900 
5947             y01 = pa / y11;                   << 3901 //  FINAL LEVEL DENSITY AND TEMPERATURE AFTER 3HE EMISSION
5948             fdens = fdens * std::pow((y01 / y << 3902 //
5949             ftemp = ftemp * std::pow((y01 / y << 3903 // Reduction of angular momentum due to orbital angular momentum of emitted fragment
5950         }                                     << 3904   if ((in >= 2) && (iz >= 3)) {
5951     }                                         << 3905     ind=idnint(a)-idnint(zprf)-1;
5952     else                                      << 3906     izd=idnint(zprf)-2;
5953     {                                         << 3907     if(jprf>0.10){
5954         ponniv = 2.0 * std::sqrt(pa * fecor); << 3908          lorb(a,a-3.,jprf,ee-sbhe,&dlout,&sdlout);
5955         if (ponniv > 700.0)                   << 3909          djprf = gausshaz(1,dlout,sdlout);
5956         {                                     << 3910          if(IDjprf==1) djprf = 0.0;
5957             ponniv = 700.0;                   << 3911          jprfhe = jprf + djprf;
5958         }                                     << 3912          jprfhe = dint(std::abs(jprfhe));   // The nucleus just turns the other way around
5959         // fermi gas state density            << 3913     }
5960         fdens = 0.1477045 * std::exp(ponniv)  << 3914     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
5961         ftemp = std::sqrt(fecor / pa);        << 3915     defbet = ecld->beta2[ind][izd];
5962     }                                         << 3916 
5963     //                                        << 3917     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-3.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
5964     densfm = fdens;                           << 3918     erothe = jprfhe * jprfhe * 197.328 * 197.328 /(2. * iinert);
5965     tfm = ftemp;                              << 3919 
5966     //                                        << 3920     bsbkbc(a-3.,zprf-2.,&bs,&bk,&bc);
5967     if (IOPTCT == 0)                          << 3921 
5968         goto densniv100;                      << 3922     // level density and temperature in the he3 daughter                   
5969     tempct = 17.60 / (std::pow(a, 0.699) * st << 3923     densniv(a-3.0,zprf-2.0,ee,sbhe,&denshe,bshell,bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprfhe,0,&qr);
5970     // tempct = 1.0 / ( (0.0570 + 0.00193*BSH << 3924 
5971     // PRC 80 (2009) 054310                   << 3925     het = temp;
5972                                               << 3926     eche = 0.0;
5973     // - CONSTANT-TEMPERATURE LEVEL DENSITY P << 3927     if(denshe>0.){
5974     if (e < 30.)                              << 3928      G4int IS=0;
5975     {                                         << 3929      if(imaxwell == 1){
5976         if (a > 0.0)                          << 3930       rhet = het;
5977         {                                     << 3931       dir1239:
5978             if (optshp >= 2)                  << 3932       eche=fvmaxhaz(rhet);
5979             {                                 << 3933       IS++;
5980                 // Parametrization of CT mode << 3934       if(IS>100){std::cout << "WARNING: FVMAXHAZ CALLED MORE THAN 100 TIMES" << std::endl;
5981                 // correspond to pairing shif << 3935       goto exi1005;
5982                 // shifted taking odd-odd nuc << 3936       }
5983                 //  as bassis)                << 3937        if(eche>(ee-sbhe)){
5984                 // e-o, o-e                   << 3938         if((ee-sbhe)<rhet)
5985                 if (IPARITE == 1)             << 3939            eche = ee-sbhe;
5986                 {                             << 3940         else
5987                     e0 = 0.285 + 11.17 * std: << 3941            goto dir1239;
5988                 }                             << 3942            }
5989                 // e-e                        << 3943         if(eche<=0.0) goto dir1239;
5990                 if (IPARITE == 2)             << 3944       eche = eche + bhe;
5991                 {                             << 3945      }else{
5992                     e0 = 22.34 * std::pow(a,  << 3946       eche = 2.0 * het + bhe;
5993                 }                             << 3947      }
5994                 // o-o                        << 3948     }
5995                 if (IPARITE == 0)             << 3949   }
5996                 {                             << 3950   else {
5997                     e0 = 0.0;                 << 3951     denshe = 0.0;
5998                 }                             << 3952     eche = 0.0;
                                                   >> 3953     het = 0.0;
                                                   >> 3954   }
                                                   >> 3955   exi1005:
5999                                                  3956 
6000                 ponniv = (ein - e0) / tempct; << 3957 // LEVEL DENSITY AND TEMPERATURE IN THE LAMBDA0 DAUGHTER
6001                 if (ifis != 1)                << 3958 //
6002                     ponniv = max(0.0, (ein -  << 3959 // - Reduction of angular momentum due to orbital angular momentum of emitted fragment
6003                 if (ponniv > 700.0)           << 3960 // JLRS Jun-2017 - Added these caculations in abla++
6004                 {                             << 
6005                     ponniv = 700.0;           << 
6006                 }                             << 
6007                 densct = std::exp(ponniv) / t << 
6008                                                  3961 
6009                 elim = ein;                   << 3962   if (in >= 2 && NbLam0>0) {
                                                   >> 3963     ind=idnint(a)-idnint(zprf)-1;
                                                   >> 3964     izd=idnint(zprf);
                                                   >> 3965     if(jprf>0.10){
                                                   >> 3966          lorb(a,a-1.,jprf,ee-slamb0,&dlout,&sdlout);
                                                   >> 3967          djprf = gausshaz(1,dlout,sdlout);
                                                   >> 3968          if(IDjprf==1) djprf = 0.0;
                                                   >> 3969          jprflamb0 = jprf + djprf;
                                                   >> 3970          jprflamb0 = dint(std::abs(jprflamb0));   // The nucleus just turns the other way around
                                                   >> 3971     }
                                                   >> 3972     bshell = ecld->ecgnz[ind][izd] - ecld->vgsld[ind][izd];
                                                   >> 3973     defbet = ecld->beta2[ind][izd];
                                                   >> 3974 
                                                   >> 3975     iinert = 0.4 * 931.49 * 1.16*1.16 * std::pow(a-1.,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*pi))*defbet);
                                                   >> 3976     erotlamb0 = jprflamb0 * jprflamb0 * 197.328 * 197.328 /(2. * iinert);
                                                   >> 3977     bsbkbc(a-1.,zprf,&bs,&bk,&bc);   
                                                   >> 3978 
                                                   >> 3979     // level density and temperature in the neutron daughter                 
                                                   >> 3980     densniv(a-1.0,zprf,ee,slamb0,&denslamb0,bshell, bs,bk,&temp,fiss->optshp,fiss->optcol,defbet,&ecor,jprflamb0,0,&qr);
                                                   >> 3981     lamb0t = temp;
                                                   >> 3982     eclamb0=0.0;
                                                   >> 3983     if(denslamb0>0.){
                                                   >> 3984      G4int IS=0;
                                                   >> 3985      if(imaxwell == 1){
                                                   >> 3986       rlamb0t = lamb0t;
                                                   >> 3987       dir1240:
                                                   >> 3988       eclamb0=fvmaxhaz_neut(rlamb0t);
                                                   >> 3989       IS++;
                                                   >> 3990       if(IS>100){std::cout << "WARNING: FVMAXHAZ_NEUT CALLED MORE THAN 100 TIMES" << std::endl;
                                                   >> 3991       goto exi1006;
                                                   >> 3992       }
                                                   >> 3993        if(eclamb0>(ee-slamb0)){
                                                   >> 3994         if((ee-slamb0)<rlamb0t)
                                                   >> 3995            eclamb0 = ee-slamb0;
                                                   >> 3996         else
                                                   >> 3997            goto dir1240;
                                                   >> 3998            }
                                                   >> 3999         if(eclamb0<=0.0) goto dir1240;
                                                   >> 4000      }else{
                                                   >> 4001       eclamb0 = 2.0 * lamb0t;
                                                   >> 4002      }
                                                   >> 4003     }
                                                   >> 4004   } 
                                                   >> 4005   else {
                                                   >> 4006     denslamb0 = 0.0;
                                                   >> 4007     eclamb0 = 0.0;
                                                   >> 4008     lamb0t = 0.0;
                                                   >> 4009   }
                                                   >> 4010   exi1006:
6010                                                  4011 
6011                 if (elim >= ecr && densfm <=  << 
6012                 {                             << 
6013                     fdens = densfm;           << 
6014                     //  IREGCT = 0;           << 
6015                 }                             << 
6016                 else                          << 
6017                 {                             << 
6018                     fdens = densct;           << 
6019                     // IREGCT = 1;            << 
6020                     //         ecor = min(ein << 
6021                 }                             << 
6022                 if (elim >= ecr && tfm >= tem << 
6023                 {                             << 
6024                     ftemp = tfm;              << 
6025                 }                             << 
6026                 else                          << 
6027                 {                             << 
6028                     ftemp = tempct;           << 
6029                 }                             << 
6030             }                                 << 
6031             else                              << 
6032             {                                 << 
6033                 // Case of no pairing conside << 
6034                 //        ETEST = PA * TEMPCT << 
6035                 ponniv = (ein) / tempct;      << 
6036                 if (ponniv > 700.0)           << 
6037                 {                             << 
6038                     ponniv = 700.0;           << 
6039                 }                             << 
6040                 densct = std::exp(ponniv) / t << 
6041                                                  4012 
6042                 if (ein >= ecr && densfm <= d << 
6043                 {                             << 
6044                     fdens = densfm;           << 
6045                     ftemp = tfm;              << 
6046                     //  IREGCT = 0;           << 
6047                 }                             << 
6048                 else                          << 
6049                 {                             << 
6050                     fdens = densct;           << 
6051                     ftemp = tempct;           << 
6052                     //          ECOR = DMIN1( << 
6053                 }                             << 
6054                                                  4013 
6055                 if (ein >= ecr && tfm >= temp << 4014 // Decay widths for particles
6056                 {                             << 4015   if ( densg > 0.) {
6057                     ftemp = tfm;              << 4016 //
6058                 }                             << 4017 // CALCULATION OF THE PARTIAL DECAY WIDTH
6059                 else                          << 4018 // USED FOR BOTH THE TIME SCALE AND THE EVAPORATION DECAY WIDTH
6060                 {                             << 4019 //
6061                     ftemp = tempct;           << 4020 //      AKAP = HBAR**2/(2* MN * R_0**2) = 10 MEV    *** input param ***
6062                 }                             << 4021 //
6063             }                                 << 4022 // AK, KHS 2005 - Energy-dependen inverse cross sections included, influence of
6064         }                                     << 4023 //                Coulomb barrier for LCP, tunnelling for LCP
6065     }                                         << 4024 // JLRS 2017 - Implementation in abla++ 
                                                   >> 4025 
                                                   >> 4026        if(densn<=0.0){
                                                   >> 4027         gn = 0.0;
                                                   >> 4028        }else{
                                                   >> 4029         gn  = width(a,zprf,1.0,0.0,nt,0.0,sn,ee-erotn)* densn/densg;
                                                   >> 4030        }
                                                   >> 4031        if(densp<=0.0){
                                                   >> 4032         gp = 0.0;
                                                   >> 4033        }else{
                                                   >> 4034         gp  = width(a,zprf,1.0,1.0,pt,bp,sbp,ee-erotp)*densp/densg* pen(a, 1.0, omegap, pt);
                                                   >> 4035        }
                                                   >> 4036        if(densd<=0.0){
                                                   >> 4037         gd = 0.0;
                                                   >> 4038        }else{
                                                   >> 4039         gd  = width(a,zprf,2.0,1.0,dt,bd,sbd,ee-erotd)*densd/densg* pen(a, 2.0, omegad, dt);
                                                   >> 4040        }
                                                   >> 4041        if(denst<=0.0){
                                                   >> 4042         gt = 0.0;
                                                   >> 4043        }else{
                                                   >> 4044         gt  = width(a,zprf,3.0,1.0,tt,bt,sbt,ee-erott)*denst/densg* pen(a, 3.0, omegat, tt);
                                                   >> 4045        }
                                                   >> 4046        if(denshe<=0.0){
                                                   >> 4047         ghe = 0.0;
                                                   >> 4048        }else{
                                                   >> 4049         ghe =width(a,zprf,3.0,2.0,het,bhe,sbhe,ee-erothe)  * denshe/densg* pen(a, 3.0, omegahe, het);
                                                   >> 4050        }
                                                   >> 4051        if(densa<=0.0){
                                                   >> 4052         ga = 0.0;
                                                   >> 4053        }else{
                                                   >> 4054         ga  = width(a,zprf,4.0,2.0,at,ba,sba,ee-erota)  * densa/densg* pen(a, 4.0, omegaa, at);
                                                   >> 4055        }
                                                   >> 4056        if(denslamb0<=0.0){
                                                   >> 4057         glamb0 = 0.0;
                                                   >> 4058        }else{
                                                   >> 4059         glamb0  = width(a,zprf,1.0,-2.0,lamb0t,0.0,slamb0,ee-erotlamb0)* denslamb0/densg;
                                                   >> 4060        }
                                                   >> 4061 
                                                   >> 4062 //     **************************
                                                   >> 4063 //     *  Treatment of IMFs     *
                                                   >> 4064 //     * KHS, AK, MVR 2005-2006 *
                                                   >> 4065 //     **************************
                                                   >> 4066 
                                                   >> 4067        G4int izcn=0,incn=0,inmin=0,inmax=0,inmi=0,inma=0;
                                                   >> 4068        G4double aimf,mares,maimf;
                                                   >> 4069 
                                                   >> 4070        if(fimf_allowed==0 || zprf<=5.0 || a<=7.0){
                                                   >> 4071         gimf = 0.0;
                                                   >> 4072        }else{
                                                   >> 4073 //      Estimate the total decay width for IMFs (Z >= 3)
                                                   >> 4074 //      By using the logarithmic slope between GIMF3 and GIMF5
                                                   >> 4075 
                                                   >> 4076         mglms(a,zprf,opt->optshpimf,&mazz);
                                                   >> 4077 
                                                   >> 4078         gimf3 = 0.0;
                                                   >> 4079         zimf = 3.0;
                                                   >> 4080         izimf = 3;
                                                   >> 4081 //      *** Find the limits that both IMF and partner are bound :
                                                   >> 4082         izcn = idnint(zprf);                  // Z of CN
                                                   >> 4083         incn = idnint(a) - izcn;              // N of CN
                                                   >> 4084 
                                                   >> 4085         isostab_lim(izimf,&inmin,&inmax);     // Bound isotopes for IZIMF from INMIN to INIMFMA
                                                   >> 4086         isostab_lim(izcn-izimf,&inmi,&inma);  // Daughter nucleus after IMF emission,
                                                   >> 4087                                            //     limits of bound isotopes
                                                   >> 4088         inmin = max(inmin,incn-inma);      //     Both IMF and daughter must be bound
                                                   >> 4089         inmax = min(inmax,incn-inmi);      //        "
                                                   >> 4090 
                                                   >> 4091         inmax = max(inmax,inmin);          // In order to keep the variables below
                                                   >> 4092 
                                                   >> 4093         for(G4int iaimf=izimf+inmin;iaimf<=izimf+inmax;iaimf++){
                                                   >> 4094          aimf=G4double(iaimf);
                                                   >> 4095          if(aimf>=a || zimf>=zprf){
                                                   >> 4096           width_imf = 0.0;
                                                   >> 4097          }else{
                                                   >> 4098           // Q-values
                                                   >> 4099           mglms(a-aimf,zprf-zimf,opt->optshpimf,&mares);
                                                   >> 4100           mglms(aimf,zimf,opt->optshpimf,&maimf);
                                                   >> 4101           // Bass barrier
                                                   >> 4102           barrs(idnint(zprf-zimf),idnint(a-aimf),izimf,idnint(aimf),&bimf,&omegaimf);
                                                   >> 4103           sbimf = maimf+mares-mazz+bimf+getdeltabinding(a,NbLam0);
                                                   >> 4104           // Rotation energy
                                                   >> 4105           defbetimf = ecld->beta2[idnint(aimf-zimf)][idnint(zimf)]+ecld->beta2[idnint(a-aimf-zprf+zimf)][idnint(zprf-zimf)];
                                                   >> 4106 
                                                   >> 4107           iinert= 0.40 * 931.490 * 1.160*1.160 * std::pow(a,5.0/3.0)*(std::pow(aimf,5.0/3.0) + std::pow(a - aimf,5.0/3.0)) + 931.490 * 1.160*1.160 * aimf * (a-aimf) / a *(std::pow(aimf,1.0/3.0) + std::pow(a - aimf,1.0/3.0))*(std::pow(aimf,1.0/3.0) + std::pow(a - aimf,1.0/3.0));
                                                   >> 4108 
                                                   >> 4109           erot = jprf * jprf * 197.328 * 197.328 /(2.0 * iinert);
                                                   >> 4110 
                                                   >> 4111           // Width
                                                   >> 4112           if(densg==0.0 || ee < (sbimf + erot)){
                                                   >> 4113            width_imf = 0.0;
                                                   >> 4114           }else{
                                                   >> 4115           // To take into account that at the barrier the system is deformed:
                                                   >> 4116           //      BSIMF = ((A-AIMF)**(2.D0/3.D0) + AIMF**(2.D0/3.D0))/A**(2.D0/3.D0)
                                                   >> 4117            bsimf = bscn;
                                                   >> 4118            densniv(a,zprf,ee,sbimf,&densimf,0.0,bsimf,1.0,&timf,0,0,defbetimf,&ecor,jprf,2,&qr);
                                                   >> 4119 
                                                   >> 4120            imfarg = (sbimf+erotcn-erot)/timf;
                                                   >> 4121            if(imfarg > 200.0) imfarg = 200.0;
                                                   >> 4122 
                                                   >> 4123 // For IMF - The available phase space is given by the level densities in CN at the
                                                   >> 4124 // barrier; applaying MOrretto -> G=WIDTH*ro_CN(E-SBIMF)/ro_CN(E).
                                                   >> 4125 // Constant temperature approximation: ro(E+dE)/ro(E)=exp(dE/T)
                                                   >> 4126 // Ratio  DENSIMF/DENSCN is included to take into account that at the barrier system
                                                   >> 4127 // is deformed. If (above) BSIMF = 1 no deformation is considered and this ratio
                                                   >> 4128 // is equal to 1.
                                                   >> 4129            width_imf = 0.0;
                                                   >> 4130          //
                                                   >> 4131            width_imf = width(a,zprf,aimf,zimf,timf,bimf,sbimf,ee-erot)*std::exp(-imfarg)*qr/qrcn;
                                                   >> 4132           }// if densg
                                                   >> 4133          }// if aimf
                                                   >> 4134          gimf3 = gimf3 + width_imf;
                                                   >> 4135         }// for IAIMF
                                                   >> 4136 
                                                   >> 4137 //   zimf = 5       
                                                   >> 4138         gimf5 = 0.0;
                                                   >> 4139         zimf = 5.0;
                                                   >> 4140         izimf = 5;
                                                   >> 4141 //      *** Find the limits that both IMF and partner are bound :
                                                   >> 4142         izcn = idnint(zprf);                  // Z of CN
                                                   >> 4143         incn = idnint(a) - izcn;              // N of CN
                                                   >> 4144 
                                                   >> 4145         isostab_lim(izimf,&inmin,&inmax);     // Bound isotopes for IZIMF from INMIN to INIMFMA
                                                   >> 4146         isostab_lim(izcn-izimf,&inmi,&inma);  // Daughter nucleus after IMF emission,
                                                   >> 4147                                            //     limits of bound isotopes
                                                   >> 4148         inmin = max(inmin,incn-inma);      //     Both IMF and daughter must be bound
                                                   >> 4149         inmax = min(inmax,incn-inmi);      //        "
                                                   >> 4150 
                                                   >> 4151         inmax = max(inmax,inmin);          // In order to keep the variables below
                                                   >> 4152 
                                                   >> 4153         for(G4int iaimf=izimf+inmin;iaimf<=izimf+inmax;iaimf++){
                                                   >> 4154          aimf=G4double(iaimf);
                                                   >> 4155          if(aimf>=a || zimf>=zprf){
                                                   >> 4156           width_imf = 0.0;
                                                   >> 4157          }else{
                                                   >> 4158           // Q-values
                                                   >> 4159           mglms(a-aimf,zprf-zimf,opt->optshpimf,&mares);
                                                   >> 4160           mglms(aimf,zimf,opt->optshpimf,&maimf);
                                                   >> 4161           // Bass barrier
                                                   >> 4162           barrs(idnint(zprf-zimf),idnint(a-aimf),izimf,idnint(aimf),&bimf,&omegaimf);
                                                   >> 4163           sbimf = maimf+mares-mazz+bimf+getdeltabinding(a,NbLam0);
                                                   >> 4164           // Rotation energy
                                                   >> 4165           defbetimf = ecld->beta2[idnint(aimf-zimf)][idnint(zimf)]+ecld->beta2[idnint(a-aimf-zprf+zimf)][idnint(zprf-zimf)];
6066                                                  4166 
6067 densniv100:                                   << 4167           iinert= 0.40 * 931.490 * 1.160*1.160 * std::pow(a,5.0/3.0)*(std::pow(aimf,5.0/3.0) + std::pow(a - aimf,5.0/3.0)) + 931.490 * 1.160*1.160 * aimf * (a-aimf) / a *(std::pow(aimf,1.0/3.0) + std::pow(a - aimf,1.0/3.0))*(std::pow(aimf,1.0/3.0) + std::pow(a - aimf,1.0/3.0));
6068                                                  4168 
6069     if (fdens == 0.0)                         << 4169           erot = jprf * jprf * 197.328 * 197.328 /(2.0 * iinert);
6070     {                                         << 4170 //
6071         if (a > 0.0)                          << 4171           // Width
6072         {                                     << 4172           if(densg==0.0 || ee < (sbimf + erot)){
6073             // Parametrization of CT model by << 4173            width_imf = 0.0;
6074             ftemp = 17.60 / (std::pow(a, 0.69 << 4174           }else{
6075             //  ftemp = 1.0 / ( (0.0570 + 0.0 << 4175           // To take into account that at the barrier the system is deformed:
6076             //  from  PRC 80 (2009) 054310    << 4176           //      BSIMF = ((A-AIMF)**(2.D0/3.D0) + AIMF**(2.D0/3.D0))/A**(2.D0/3.D0)
6077         }                                     << 4177            bsimf = bscn;
6078         else                                  << 4178            densniv(a,zprf,ee,sbimf,&densimf,0.0,bsimf,1.0,&timf,0,0,defbetimf,&ecor,jprf,2,&qr);
6079         {                                     << 4179 //
6080             ftemp = 0.5;                      << 4180            imfarg = (sbimf+erotcn-erot)/timf;
6081         }                                     << 4181            if(imfarg > 200.0) imfarg = 200.0;
6082     }                                         << 4182 //
6083     //                                        << 4183 // For IMF - The available phase space is given by the level densities in CN at the
6084     // spin cutoff parameter                  << 4184 // barrier; applaying MOrretto -> G=WIDTH*ro_CN(E-SBIMF)/ro_CN(E).
6085     /*                                        << 4185 // Constant temperature approximation: ro(E+dE)/ro(E)=exp(dE/T)
6086     C PERPENDICULAR AND PARALLEL MOMENT OF IN << 4186 // Ratio  DENSIMF/DENSCN is included to take into account that at the barrier system
6087     c fnorm = R0*M0/hbar**2 = 1.16fm*931.49Me << 4187 // is deformed. If (above) BSIMF = 1 no deformation is considered and this ratio
6088     c in units 1/MeV                          << 4188 // is equal to 1.
6089     */                                        << 4189            width_imf = 0.0;
6090     fnorm = std::pow(1.16, 2) * 931.49 * 1.e- << 4190            width_imf = width(a,zprf,aimf,zimf,timf,bimf,sbimf,ee-erot)*std::exp(-imfarg)*qr/qrcn;//*densimf/densg;
6091                                               << 4191           }// if densg
6092     if (ifis == 0 || ifis == 2)               << 4192          }// if aimf
6093     {                                         << 4193          gimf5 = gimf5 + width_imf;
6094         /*                                    << 4194         }// for IAIMF
6095         C GROUND STATE:                       << 4195 // It is assumed that GIMFi = A_IMF*ZIMF**B_IMF; to get the total GIMF one integrates
6096         C FP_PER ~ 1+0.5*alpha2, FP_PAR ~ 1-a << 4196 // Int(A_IMF*ZIMF**B_IMF)(3->ZPRF)
6097         macr. nucl. phys.) C alpha2 = sqrt(5/ << 4197 
6098         */                                    << 4198         if(gimf3<=0.0 || gimf5<=0.0){
6099         fp_per = 0.4 * std::pow(a, 5.0 / 3.0) << 4199          gimf = 0.0;
6100         fp_par = 0.40 * std::pow(a, 5.0 / 3.0 << 4200          b_imf = -100.0;
6101     }                                         << 4201          a_imf = 0.0;
6102     else                                      << 4202         }else{
6103     {                                         << 4203 //
6104         if (ifis == 1)                        << 4204         b_imf = (std::log10(gimf3) - std::log10(gimf5))/(std::log10(3.0)-std::log10(5.0));
6105         {                                     << 4205 //
6106             /*                                << 4206          if(b_imf >= -1.01) b_imf = -1.01;
6107             C SADDLE POINT                    << 4207          if(b_imf <= -100.0) {
6108             C See Hasse&Myer, p. 100          << 4208           b_imf = -100.0;
6109             C Perpendicular moment of inertia << 4209           a_imf = 0.0;
6110             */                                << 4210           gimf = 0.0;
6111             fp_per = 2.0 / 5.0 * std::pow(a,  << 4211           goto direct2007;
6112                      (1.0 + 7.0 / 6.0 * defbe << 4212          }
6113             // Parallel moment of inertia     << 4213 //
6114             fp_par = 2.0 / 5.0 * std::pow(a,  << 4214          a_imf = gimf3 / std::pow(3.0,b_imf);
6115                      (1.0 - 7.0 / 3.0 * defbe << 4215          gimf = a_imf * ( std::pow(zprf,b_imf+1.0) - std::pow(3.0,b_imf+1.0)) /(b_imf + 1.0);
6116         }                                     << 
6117         else                                  << 
6118         {                                     << 
6119             if (ifis == 20)                   << 
6120             {                                 << 
6121                 // IMF - two fragments in con << 
6122                 // See Hasse&Myers, p.106     << 
6123                 // Here, DEFBET = R1/R2, wher << 
6124                 // partner Perpendicular mome << 
6125                 fp_per = 0.4 * std::pow(a, 5. << 
6126                          std::pow(1.0 + defbe << 
6127                 fp_par = 0.4 * std::pow(a, 5. << 
6128                          std::pow(1.0 + defbe << 
6129             }                                 << 
6130         }                                        4216         }
6131     }                                         << 
6132     if (fp_par < 0.0)                         << 
6133         fp_par = 0.0;                         << 
6134     if (fp_per < 0.0)                         << 
6135         fp_per = 0.0;                         << 
6136     //                                        << 
6137     sig_per = std::sqrt(fp_per * ftemp);      << 
6138     sig_par = std::sqrt(fp_par * ftemp);      << 
6139     //                                        << 
6140     sigma2 = sig_per * sig_per + sig_par * si << 
6141     jfact = (2. * jprf + 1.) * std::exp(-1. * << 
6142             (std::sqrt(8.0 * 3.1415) * std::p << 
6143     erot = jprf * jprf / (2.0 * std::sqrt(fp_ << 
6144     //                                        << 
6145     // collective enhancement                 << 
6146     if (optcol == 1)                          << 
6147     {                                         << 
6148         qrot(z, a, defbet, sig_per, fecor - e << 
6149     }                                         << 
6150     else                                      << 
6151     {                                         << 
6152         fqr = 1.0;                            << 
6153     }                                         << 
6154     //                                        << 
6155     fdens = fdens * fqr * jfact;              << 
6156     //                                        << 
6157     if (fdens < 1e-300)                       << 
6158         fdens = 0.0;                          << 
6159     //                                        << 
6160     *dens = fdens;                            << 
6161     *ecor = fecor;                            << 
6162     *temp = ftemp;                            << 
6163     *qr = fqr;                                << 
6164 }                                             << 
6165                                               << 
6166 void G4Abla::qrot(G4double z, G4double a, G4d << 
6167 {                                             << 
6168     /*                                        << 
6169     C QROT INCLUDING DAMPING                  << 
6170     C                                         << 
6171     C INPUT: Z,A,DEFBET,SIG,U                 << 
6172     C                                         << 
6173     C OUTPUT: QR - COLLECTIVE ENHANCEMENT FAC << 
6174     C                                         << 
6175     C SEE  JUNGHANS ET AL., NUCL. PHYS. A 629 << 
6176     C                                         << 
6177     C                                         << 
6178     C   FR(U)    EXPONENTIAL FUNCTION TO DEFI << 
6179     C   UCR      CRITICAL ENERGY FOR DAMPING  << 
6180     C   DCR      WIDTH OF DAMPING             << 
6181     C   DEFBET   BETA-DEFORMATION !           << 
6182     C   SIG      PERPENDICULAR SPIN CUTOFF FA << 
6183     C     U      ENERGY                       << 
6184     C    QR      COEFFICIENT OF COLLECTIVE EN << 
6185     C     A      MASS NUMBER                  << 
6186     C     Z      CHARGE NUMBER                << 
6187     C                                         << 
6188     */                                        << 
6189     // JLRS: July 2016: new values for the co << 
6190     //                                        << 
6191                                               << 
6192     G4double ucr = fiss->ucr; // Critical ene << 
6193     G4double dcr = fiss->dcr; // Width of dam << 
6194     G4double ponq = 0.0, dn = 0.0, n = 0.0, d << 
6195     G4int distn, distz, ndist, zdist;         << 
6196     G4int nmn[8] = { 2, 8, 14, 20, 28, 50, 82 << 
6197     G4int nmz[8] = { 2, 8, 14, 20, 28, 50, 82 << 
6198     //                                        << 
6199     sig = sig * sig;                          << 
6200     //                                        << 
6201     if (std::abs(bet) <= 0.15)                << 
6202     {                                         << 
6203         goto qrot10;                          << 
6204     }                                         << 
6205     else                                      << 
6206     {                                         << 
6207         goto qrot11;                          << 
6208     }                                         << 
6209     //                                        << 
6210 qrot10:                                       << 
6211     n = a - z;                                << 
6212     distn = 10000000;                         << 
6213     distz = 10000000;                         << 
6214                                               << 
6215     for (G4int i = 0; i < 8; i++)             << 
6216     {                                         << 
6217         ndist = std::fabs(idnint(n) - nmn[i]) << 
6218         if (ndist < distn)                    << 
6219             distn = ndist;                    << 
6220         zdist = std::fabs(idnint(z) - nmz[i]) << 
6221         if (zdist < distz)                    << 
6222             distz = zdist;                    << 
6223     }                                         << 
6224                                               << 
6225     dz = G4float(distz);                      << 
6226     dn = G4float(distn);                      << 
6227                                               << 
6228     bet = 0.022 + 0.003 * dn + 0.002 * dz;    << 
6229                                               << 
6230     sig = 75.0 * std::pow(bet, 2.) * sig;     << 
6231                                               << 
6232     // NO VIBRATIONAL ENHANCEMENT             << 
6233 qrot11:                                       << 
6234     ponq = (u - ucr) / dcr;                   << 
6235                                               << 
6236     if (ponq > 700.0)                         << 
6237     {                                         << 
6238         ponq = 700.0;                         << 
6239     }                                         << 
6240     if (sig < 1.0)                            << 
6241     {                                         << 
6242         sig = 1.0;                            << 
6243     }                                         << 
6244     (*qr) = 1.0 / (1.0 + std::exp(ponq)) * (s << 
6245                                               << 
6246     if ((*qr) < 1.0)                          << 
6247     {                                         << 
6248         (*qr) = 1.0;                          << 
6249     }                                         << 
6250                                               << 
6251     return;                                   << 
6252 }                                             << 
6253                                               << 
6254 void G4Abla::lpoly(G4double x, G4int n, G4dou << 
6255 {                                             << 
6256     // THIS SUBROUTINE CALCULATES THE ORDINAR << 
6257     // ORDER 0 TO N-1 OF ARGUMENT X AND STORE << 
6258     // THEY ARE CALCULATED BY RECURSION RELAT << 
6259     // POLYNOMIALS.                           << 
6260     // WRITTEN BY A.J.SIERK  LANL  T-9  FEBRU << 
6261     // NOTE: PL AND X MUST BE DOUBLE PRECISIO << 
6262                                               << 
6263     pl[0] = 1.0;                              << 
6264     pl[1] = x;                                << 
6265                                               << 
6266     for (G4int i = 2; i < n; i++)             << 
6267     {                                         << 
6268         pl[i] = ((2 * G4double(i + 1) - 3.0)  << 
6269                 (G4double(i + 1) - 1.0);      << 
6270     }                                         << 
6271 }                                             << 
6272                                                  4217 
6273 G4double G4Abla::eflmac(G4int ia, G4int iz, G << 4218        direct2007:
6274 {                                             << 4219        if(gimf < 1.e-10) gimf = 0.0;
6275     // CHANGED TO CALCULATE TOTAL BINDING ENE << 4220        }// if fimf_allowed
6276     // SWITCH FOR PAIRING INCLUDED AS WELL.   << 4221 //
6277     // BINDING = EFLMAC(IA,IZ,0,OPTSHP)       << 4222 //c JLRS 2016 - Added this calculation
6278     // FORTRAN TRANSCRIPT OF /U/GREWE/LANG/EE << 4223 //C AK 2004 - Gamma width
6279     // A.J. 15.07.96                          << 4224 //C According to A. Ignatyuk, GG :
6280                                               << 4225 //C Here BS=BK=1, as this was assumed in the parameterization
6281     // this function will calculate the liqui << 4226       pa = (ald->av)*a + (ald->as)*std::pow(a,2./3.) + (ald->ak)*std::pow(a,1./3.);
6282     // configuration according to the preprin << 4227       gamma = 2.5 * pa * std::pow(a,-4./3.);
6283     // MASSES and DEFORMATIONS by P. M"oller  << 4228       gfactor = 1.+gamma*ecld->ecgnz[in][iz];
6284     // All constants are taken from this publ << 4229       if(gfactor<=0.){
6285                                               << 4230        gfactor = 0.0;
6286     // Parameters:                            << 4231       }
6287     // a:    nuclear mass number              << 4232 //
6288     // z:    nuclear charge                   << 4233       gtemp = 17.60/(std::pow(a,0.699) * std::sqrt(gfactor));
6289     // flag:     0       - return mass excess << 4234 //
6290     //       otherwise   - return pairing (=  << 4235 //C If one switches gammas off, one should also switch off tunneling through the fission barrier.
6291                                               << 4236       gg = 0.624e-9*std::pow(a,1.6)*std::pow(gtemp,5.);
6292     G4double eflmacResult = 0.0;              << 4237 //gammaemission==1
6293                                               << 4238 //C For fission fragments, GG is ~ 2 times larger than for
6294     if (ia == 0)                              << 4239 //c "oridnary" nuclei (A. Ignatyuk, private communication).
6295         return eflmacResult;                  << 4240       if(gammaemission==1){
6296                                               << 4241       gg = 2.0 * gg;
6297     G4int in = 0;                             << 4242       }
6298     G4double z = 0.0, n = 0.0, a = 0.0, av =  << 4243       ecg = 4.0 * gtemp;
6299     G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b1 << 4244 //
6300     G4double ff = 0.0, ca = 0.0, w = 0.0, efl << 4245 //
6301     G4double r0 = 0.0, kf = 0.0, ks = 0.0;    << 4246   gsum = ga + ghe + gd + gt + gp + gn + gimf + gg + glamb0;
6302     G4double kv = 0.0, rp = 0.0, ay = 0.0, ad << 
6303     G4double esq = 0.0, ael = 0.0, i = 0.0, e << 
6304     G4double pi = 3.141592653589793238e0;     << 
6305                                               << 
6306     // fundamental constants                  << 
6307     // electronic charge squared              << 
6308     esq = 1.4399764;                          << 
6309                                               << 
6310     // constants from considerations other th << 
6311     // electronic binding                     << 
6312     ael = 1.433e-5;                           << 
6313                                               << 
6314     // proton rms radius                      << 
6315     rp = 0.8;                                 << 
6316                                               << 
6317     // nuclear radius constant                << 
6318     r0 = 1.16;                                << 
6319                                               << 
6320     // range of yukawa-plus-expon. potential  << 
6321     ay = 0.68;                                << 
6322                                               << 
6323     // range of yukawa function used to gener << 
6324     // nuclear charge distribution            << 
6325     aden = 0.70;                              << 
6326                                               << 
6327     // wigner constant                        << 
6328     w = 30.0;                                 << 
6329                                               << 
6330     // adjusted parameters                    << 
6331     // volume energy                          << 
6332     av = 16.00126;                            << 
6333                                               << 
6334     // volume asymmetry                       << 
6335     kv = 1.92240;                             << 
6336                                               << 
6337     // surface energy                         << 
6338     as = 21.18466;                            << 
6339                                               << 
6340     // surface asymmetry                      << 
6341     ks = 2.345;                               << 
6342     // a^0 constant                           << 
6343     a0 = 2.615;                               << 
6344                                               << 
6345     // charge asymmetry                       << 
6346     ca = 0.10289;                             << 
6347                                                  4247 
6348     z = G4double(iz);                         << 4248   //std::cout << gn << " " << gd << " " << gp << std::endl;
6349     a = G4double(ia);                         << 
6350     in = ia - iz;                             << 
6351     n = G4double(in);                         << 
6352                                                  4249 
6353     if (flag == 1)                            << 4250   if (gsum > 0.0) {
6354     {                                         << 4251     ts1  = hbar / gsum;
6355         goto eflmac311;                       << 4252   }
                                                   >> 4253   else {
                                                   >> 4254     ts1  = 1.0e99;
                                                   >> 4255     goto direct69;
                                                   >> 4256   }
                                                   >> 4257 //
                                                   >> 4258 //Case of nuclei below Businaro-Gallone mass asymmetry point
                                                   >> 4259     if(fiss->ifis==0 || (zprf*zprf/a<=22.74 && zprf<60.)){
                                                   >> 4260      goto direct69;
6356     }                                            4261     }
                                                   >> 4262 //
                                                   >> 4263 // Calculation of the fission decay width
                                                   >> 4264 // Deformation is calculated using the fissility  
                                                   >> 4265 //
                                                   >> 4266     defbet = y;
                                                   >> 4267     fission_width(zprf,a,ee,bssp,bksp,ef,y,&gf,&temp,jprf,0,1,fiss->optcol,fiss->optshp,densg);
                                                   >> 4268     ft=temp;
                                                   >> 4269 //
                                                   >> 4270 // Case of very heavy nuclei that have no fission barrier
                                                   >> 4271 // For them fission is the only decay channel available
                                                   >> 4272        if(ef<=0.0){
                                                   >> 4273          probf = 1.0;
                                                   >> 4274      probp = 0.0;
                                                   >> 4275      probd = 0.0;
                                                   >> 4276      probt = 0.0;
                                                   >> 4277      probn = 0.0;
                                                   >> 4278      probhe = 0.0;
                                                   >> 4279      proba = 0.0;
                                                   >> 4280      probg = 0.0;
                                                   >> 4281          probimf = 0.0;
                                                   >> 4282          problamb0 = 0.0;
                                                   >> 4283          goto direct70;
                                                   >> 4284        }
                                                   >> 4285 
                                                   >> 4286        if(fiss->bet<=0.){
                                                   >> 4287         gtotal = ga + ghe + gp + gd + gt + gn + gg +gimf + gf + glamb0;
                                                   >> 4288         if(gtotal<=0.0){
                                                   >> 4289          probf = 0.0;
                                                   >> 4290      probp = 0.0;
                                                   >> 4291      probd = 0.0;
                                                   >> 4292      probt = 0.0;
                                                   >> 4293      probn = 0.0;
                                                   >> 4294      probhe = 0.0;
                                                   >> 4295      proba = 0.0;
                                                   >> 4296      probg = 0.0;
                                                   >> 4297          probimf = 0.0;
                                                   >> 4298          problamb0 = 0.0;
                                                   >> 4299          goto direct70;
                                                   >> 4300         }else{
                                                   >> 4301          probf = gf/gtotal;
                                                   >> 4302          probn = gn/gtotal;
                                                   >> 4303          probp = gp/gtotal;
                                                   >> 4304          probd = gd/gtotal;
                                                   >> 4305          probt = gt/gtotal;
                                                   >> 4306          probhe = ghe/gtotal;
                                                   >> 4307          proba = ga/gtotal;
                                                   >> 4308          probg = gg/gtotal;
                                                   >> 4309          probimf = gimf/gtotal;
                                                   >> 4310          problamb0 = glamb0/gtotal;
                                                   >> 4311          goto direct70;
                                                   >> 4312         }
                                                   >> 4313        }
                                                   >> 4314   }else{
                                                   >> 4315    goto direct69;
                                                   >> 4316   }
                                                   >> 4317 //
                                                   >> 4318   if (inum > ilast) {  // new event means reset the time scale
                                                   >> 4319     tsum = 0.;
                                                   >> 4320   }
                                                   >> 4321 //
                                                   >> 4322 // kramers factor for the dynamical hindrances of fission
                                                   >> 4323   fomega_sp(a,y,&mfcd,&omegasp,&homegasp);
                                                   >> 4324   cf = cram(fiss->bet,homegasp);
                                                   >> 4325 //
                                                   >> 4326 // We calculate the transient time
                                                   >> 4327   fomega_gs(a,zprf,&k1,&omegags,&homegags);
                                                   >> 4328   tauc=tau(fiss->bet,homegags,ef,ft);
                                                   >> 4329   gf=gf*cf;
                                                   >> 4330 //
                                                   >> 4331 /*
                                                   >> 4332 c The subroutine part_fiss calculates the fission width GFF that corresponds to the time
                                                   >> 4333 c dependence of the probability distribution obtained by solving the FOKKER-PLANCK eq
                                                   >> 4334 c using a nucleus potential that is approximated by a parabola. It also gives the
                                                   >> 4335 c decay time for this step T_LAPSE that includes all particle decay channels and the
                                                   >> 4336 c fission channel. And it decides whether the nucleus decays by particle evaporation
                                                   >> 4337 c CHOICE_FISSPART = 1 or fission CHOICE_FISSPART = 2
                                                   >> 4338 */
                                                   >> 4339 //
                                                   >> 4340  part_fiss(fiss->bet,gsum,gf,y,tauc,ts1,tsum, &choice_fisspart,zprf,a,ft,&t_lapse,&gff);
                                                   >> 4341  gf = gff;
                                                   >> 4342 //
                                                   >> 4343 // We accumulate in TSUM the mean decay for this step including all particle decay channels and fission
                                                   >> 4344  tsum = tsum + t_lapse;
6357                                                  4345 
6358     if (iz < 13 && in < 3)                    << 4346 //   If fission occurs
6359     {                                         << 4347     if(choice_fisspart==2){
6360         if (masses->mexpiop[in][iz] == 1)     << 4348     probf = 1.0;
6361         {                                     << 4349     probp = 0.0;
6362             return masses->bind[in][iz];      << 4350     probd = 0.0;
                                                   >> 4351     probt = 0.0;
                                                   >> 4352     probn = 0.0;
                                                   >> 4353     probhe = 0.0;
                                                   >> 4354     proba = 0.0;
                                                   >> 4355     probg = 0.0;
                                                   >> 4356           probimf = 0.0;
                                                   >> 4357           problamb0 = 0.0;
                                                   >> 4358           goto direct70;
                                                   >> 4359     }else{
                                                   >> 4360 // If particle evaporation occurs
                                                   >> 4361 // The probabilities for the different decays are calculated taking into account the fission width GFF that corresponds to this step
                                                   >> 4362 
                                                   >> 4363        gtotal=ga + ghe + gp + gd + gt + gn + gimf + gg + glamb0;
                                                   >> 4364         if(gtotal<=0.0){
                                                   >> 4365          probf = 0.0;
                                                   >> 4366      probp = 0.0;
                                                   >> 4367      probd = 0.0;
                                                   >> 4368      probt = 0.0;
                                                   >> 4369      probn = 0.0;
                                                   >> 4370      probhe = 0.0;
                                                   >> 4371      proba = 0.0;
                                                   >> 4372      probg = 0.0;
                                                   >> 4373          probimf = 0.0;
                                                   >> 4374          problamb0 = 0.0;
                                                   >> 4375          goto direct70;
                                                   >> 4376        }else{
                                                   >> 4377          probf = 0.0;
                                                   >> 4378          probn = gn/gtotal;
                                                   >> 4379          probp = gp/gtotal;
                                                   >> 4380          probd = gd/gtotal;
                                                   >> 4381          probt = gt/gtotal;
                                                   >> 4382          probhe = ghe/gtotal;
                                                   >> 4383          proba = ga/gtotal;
                                                   >> 4384          probg = gg/gtotal;
                                                   >> 4385          probimf = gimf/gtotal;
                                                   >> 4386          problamb0 = glamb0/gtotal;
                                                   >> 4387          goto direct70;
6363         }                                        4388         }
6364     }                                            4389     }
6365                                               << 4390 //
6366 eflmac311:                                    << 4391   direct69:
6367                                               << 4392         gtotal = ga + ghe + gp + gd + gt + gn + gg + gimf + glamb0;
6368     c1 = 3.0 / 5.0 * esq / r0;                << 4393         if(gtotal<=0.0){
6369     c4 = 5.0 / 4.0 * std::pow((3.0 / (2.0 * p << 4394          probf = 0.0;
6370     kf = std::pow((9.0 * pi * z / (4.0 * a)), << 4395      probp = 0.0;
6371                                               << 4396      probd = 0.0;
6372     ff = -1.0 / 8.0 * rp * rp * esq / std::po << 4397      probt = 0.0;
6373          (145.0 / 48.0 - 327.0 / 2880.0 * std << 4398      probn = 0.0;
6374           1527.0 / 1209600.0 * std::pow(kf, 4 << 4399      probhe = 0.0;
6375     i = (n - z) / a;                          << 4400      proba = 0.0;
6376                                               << 4401      probg = 0.0;
6377     x0 = r0 * std::pow(a, (1.0 / 3.0)) / ay;  << 4402          probimf = 0.0;
6378     y0 = r0 * std::pow(a, (1.0 / 3.0)) / aden << 4403          problamb0 = 0.0;
6379                                               << 4404        }else{
6380     b1 = 1.0 - 3.0 / (std::pow(x0, 2)) + (1.0 << 4405          probf = 0.0;
6381                                               << 4406          probn = gn/gtotal;
6382     b3 = 1.0 - 5.0 / std::pow(y0, 2) *        << 4407          probp = gp/gtotal;
6383                    (1.0 - 15.0 / (8.0 * y0) + << 4408          probd = gd/gtotal;
6384                     3.0 / 4.0 * (1.0 + 9.0 /  << 4409          probt = gt/gtotal;
6385                         std::exp(-2.0 * y0)); << 4410          probhe = ghe/gtotal;
6386                                               << 4411          proba = ga/gtotal;
6387     // now calculation of total binding energ << 4412          probg = gg/gtotal;
6388                                               << 4413          probimf = gimf/gtotal;
6389     efl = -1.0 * av * (1.0 - kv * i * i) * a  << 4414          problamb0 = glamb0/gtotal;
6390           c1 * z * z * b3 / std::pow(a, (1.0  << 4415         }
6391           ff * std::pow(z, 2) / a - ca * (n - << 4416 
6392                                               << 4417   direct70:
6393     efl = efl + w * std::abs(i);              << 4418   ptotl = probp+probd+probt+probn+probhe+proba+probg+probimf+probf+problamb0;  
6394                                               << 4419   //
6395     // pairing is made optional               << 4420   ee = eer;
6396     if (optshp >= 2)                          << 4421   ilast = inum;
6397     {                                         << 4422 
6398         // average pairing                    << 4423   // Return values:
6399         if (in == iz && (mod(in, 2) == 1) &&  << 4424   (*probp_par) = probp;
6400         {                                     << 4425   (*probd_par) = probd;
6401             efl = efl + w / a;                << 4426   (*probt_par) = probt;
6402         }                                     << 4427   (*probn_par) = probn;
6403                                               << 4428   (*probhe_par) = probhe;
6404         // AK 2008 - Parametrization of CT mo << 4429   (*proba_par) = proba;
6405         // The following part has been introd << 4430   (*probg_par) = probg;
6406         // between pairing in masses and leve << 4431   (*probimf_par) = probimf;
6407         // AK 2010  note that E0 is shifted t << 4432   (*problamb0_par) = problamb0;
6408         // Fermi-gas model (there, energy is  << 4433   (*probf_par) = probf;
6409         // as bassis)                         << 4434   (*ptotl_par) = ptotl;
6410                                               << 4435   (*sn_par) = sn;
6411         G4double para = 0.;                   << 4436   (*sp_par) = sp;
6412         parite(a, &para);                     << 4437   (*sd_par) = sd;
6413                                               << 4438   (*st_par) = st;
6414         if (para < 0.0)                       << 4439   (*she_par) = she;
6415         {                                     << 4440   (*sa_par) = sa;
6416             // e-o, o-e                       << 4441   (*slamb0_par) = slamb0;
6417             e0 = 0.285 + 11.17 * std::pow(a,  << 4442   (*sbp_par) = sbp;
                                                   >> 4443   (*sbd_par) = sbd;
                                                   >> 4444   (*sbt_par) = sbt;
                                                   >> 4445   (*sbhe_par) = sbhe;
                                                   >> 4446   (*sba_par) = sba;
                                                   >> 4447   (*ecn_par) = ecn;
                                                   >> 4448   (*ecp_par) = ecp;
                                                   >> 4449   (*ecd_par) = ecd;
                                                   >> 4450   (*ect_par) = ect;
                                                   >> 4451   (*eche_par) = eche;
                                                   >> 4452   (*eca_par) = eca;
                                                   >> 4453   (*ecg_par) = ecg;
                                                   >> 4454   (*eclamb0_par) = eclamb0;
                                                   >> 4455   (*bp_par) = bp;
                                                   >> 4456   (*bd_par) = bd;
                                                   >> 4457   (*bt_par) = bt;
                                                   >> 4458   (*bhe_par) = bhe;
                                                   >> 4459   (*ba_par) = ba;
                                                   >> 4460   (*tcn) = ftcn;
                                                   >> 4461   (*ts1_par) = ts1;
                                                   >> 4462   (*jprfn_par) = jprfn;
                                                   >> 4463   (*jprfp_par) = jprfp;
                                                   >> 4464   (*jprfd_par) = jprfd;
                                                   >> 4465   (*jprft_par) = jprft;
                                                   >> 4466   (*jprfhe_par) = jprfhe;
                                                   >> 4467   (*jprfa_par) = jprfa;
                                                   >> 4468   (*jprflamb0_par) = jprflamb0;
                                                   >> 4469   (*tsum_par) = tsum;
                                                   >> 4470   return;
                                                   >> 4471 }
                                                   >> 4472 
                                                   >> 4473 void G4Abla::densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bsin, G4double bkin, G4double *temp, G4int optshp, G4int optcol, G4double defbet, G4double *ecor, G4double jprf, G4int ifis,G4double *qr)
                                                   >> 4474 {
                                                   >> 4475   //   1498 C                                                                       
                                                   >> 4476   //   1499 C     INPUT:                                                            
                                                   >> 4477   //   1500 C             A,EE,ESOUS,OPTSHP,BS,BK,BSHELL,DEFBET                     
                                                   >> 4478   //   1501 C                                                                       
                                                   >> 4479   //   1502 C     LEVEL DENSITY PARAMETERS                                          
                                                   >> 4480   //   1503 C     COMMON /ALD/    AV,AS,AK,OPTAFAN                                  
                                                   >> 4481   //   1504 C     AV,AS,AK - VOLUME,SURFACE,CURVATURE DEPENDENCE OF THE             
                                                   >> 4482   //   1505 C                LEVEL DENSITY PARAMETER                                
                                                   >> 4483   //   1506 C     OPTAFAN - 0/1  AF/AN >=1 OR AF/AN ==1                             
                                                   >> 4484   //   1507 C               RECOMMENDED IS OPTAFAN = 0                              
                                                   >> 4485   //   1508 C---------------------------------------------------------------------  
                                                   >> 4486   //   1509 C     OUTPUT: DENS,TEMP                                                 
                                                   >> 4487   //   1510 C                                                                       
                                                   >> 4488   //   1511 C   ____________________________________________________________________
                                                   >> 4489   //   1512 C  /                                                                    
                                                   >> 4490   //   1513 C  /  PROCEDURE FOR CALCULATING THE STATE DENSITY OF A COMPOUND NUCLEUS 
                                                   >> 4491   //   1514 C  /____________________________________________________________________
                                                   >> 4492   //   1515 C                                                                       
                                                   >> 4493   //   1516       INTEGER AFP,IZ,OPTSHP,OPTCOL,J,OPTAFAN                            
                                                   >> 4494   //   1517       REAL*8 A,EE,ESOUS,DENS,E,Y0,Y1,Y2,Y01,Y11,Y21,PA,BS,BK,TEMP       
                                                   >> 4495   //   1518 C=====INSERTED BY KUDYAEV===============================================
                                                   >> 4496   //   1519       COMMON /ALD/ AV,AS,AK,OPTAFAN                                     
                                                   >> 4497   //   1520       REAL*8 ECR,ER,DELTAU,Z,DELTPP,PARA,PARZ,FE,HE,ECOR,ECOR1,Pi6      
                                                   >> 4498   //   1521       REAL*8 BSHELL,DELTA0,AV,AK,AS,PONNIV,PONFE,DEFBET,QR,SIG,FP       
                                                   >> 4499   //   1522 C=======================================================================
                                                   >> 4500   //   1523 C                                                                       
                                                   >> 4501   //   1524 C                                                                       
                                                   >> 4502   //   1525 C-----------------------------------------------------------------------
                                                   >> 4503   //   1526 C     A                 MASS NUMBER OF THE DAUGHTER NUCLEUS             
                                                   >> 4504   //   1527 C     EE                EXCITATION ENERGY OF THE MOTHER NUCLEUS         
                                                   >> 4505   //   1528 C     ESOUS             SEPARATION ENERGY PLUS EFFECTIVE COULOMB BARRIER
                                                   >> 4506   //   1529 C     DENS              STATE DENSITY OF DAUGHTER NUCLEUS AT EE-ESOUS-EC
                                                   >> 4507   //   1530 C     BSHELL            SHELL CORRECTION                                
                                                   >> 4508   //   1531 C     TEMP              NUCLEAR TEMPERATURE                             
                                                   >> 4509   //   1532 C     E        LOCAL    EXCITATION ENERGY OF THE DAUGHTER NUCLEUS       
                                                   >> 4510   //   1533 C     E1       LOCAL    HELP VARIABLE                                   
                                                   >> 4511   //   1534 C     Y0,Y1,Y2,Y01,Y11,Y21                                              
                                                   >> 4512   //   1535 C              LOCAL    HELP VARIABLES                                  
                                                   >> 4513   //   1536 C     PA       LOCAL    STATE-DENSITY PARAMETER                         
                                                   >> 4514   //   1537 C     EC                KINETIC ENERGY OF EMITTED PARTICLE WITHOUT      
                                                   >> 4515   //   1538 C                        COULOMB REPULSION                              
                                                   >> 4516   //   1539 C     IDEN              FAKTOR FOR SUBSTRACTING KINETIC ENERGY IDEN*TEMP
                                                   >> 4517   //   1540 C     DELTA0            PAIRING GAP 12 FOR GROUND STATE                 
                                                   >> 4518   //   1541 C                       14 FOR SADDLE POINT                             
                                                   >> 4519   //   1542 C     EITERA            HELP VARIABLE FOR TEMPERATURE ITERATION         
                                                   >> 4520   //   1543 C-----------------------------------------------------------------------
                                                   >> 4521   //   1544 C                                                                       
                                                   >> 4522   //   1545 C                                                                       
                                                   >> 4523   G4double delta0 = 0.0;
                                                   >> 4524   G4double deltau = 0.0;
                                                   >> 4525   G4double deltpp = 0.0;
                                                   >> 4526   G4double e = 0.0;
                                                   >> 4527   G4double e0 = 0.0;
                                                   >> 4528   G4double ecor1 = 0.0;
                                                   >> 4529   G4double ecr = 10.0;
                                                   >> 4530   G4double fe = 0.0;
                                                   >> 4531   G4double he = 0.0;
                                                   >> 4532   G4double pa = 0.0;
                                                   >> 4533   G4double para = 0.0;
                                                   >> 4534   G4double parz = 0.0;
                                                   >> 4535   G4double ponfe = 0.0;
                                                   >> 4536   G4double ponniv = 0.0;
                                                   >> 4537   G4double fqr = 1.0;
                                                   >> 4538   G4double y01 = 0.0;
                                                   >> 4539   G4double y11 = 0.0;
                                                   >> 4540   G4double y2 = 0.0;
                                                   >> 4541   G4double y21 = 0.0;
                                                   >> 4542   G4double y1 = 0.0;
                                                   >> 4543   G4double y0 = 0.0;
                                                   >> 4544   G4double fnorm=0.0;
                                                   >> 4545   G4double fp_per=0.;
                                                   >> 4546   G4double fp_par=0.;
                                                   >> 4547   G4double sig_per=0.;
                                                   >> 4548   G4double sig_par=0.;
                                                   >> 4549   G4double sigma2;
                                                   >> 4550   G4double jfact=1.;
                                                   >> 4551   G4double erot=0.;
                                                   >> 4552   G4double fdens=0.;
                                                   >> 4553   G4double fecor=0.;
                                                   >> 4554   G4double BSHELLCT=0.;
                                                   >> 4555   G4double gamma=0.;
                                                   >> 4556   G4double ftemp=0.0;
                                                   >> 4557   G4double tempct=0.0;
                                                   >> 4558   G4double densfm = 0.0;
                                                   >> 4559   G4double densct = 0.0;
                                                   >> 4560   G4double ein=0.;
                                                   >> 4561   G4double elim;
                                                   >> 4562   G4double tfm;
                                                   >> 4563   G4double bs=bsin;
                                                   >> 4564   G4double bk=bkin;
                                                   >> 4565   G4int IPARITE;
                                                   >> 4566   G4int IOPTCT=fiss->optct;
                                                   >> 4567 //
                                                   >> 4568   G4double pi6 = std::pow(3.1415926535,2) / 6.0;
                                                   >> 4569   G4double pi = 3.1415926535;
                                                   >> 4570 //
                                                   >> 4571   G4int afp=idnint(a);
                                                   >> 4572   G4int iz=idnint(z);
                                                   >> 4573   G4int in=afp-iz;
                                                   >> 4574 //
                                                   >> 4575   if(ifis!=1){
                                                   >> 4576      BSHELLCT = ecld->ecgnz[in][iz];
                                                   >> 4577   }else{
                                                   >> 4578      BSHELLCT = 0.0;
                                                   >> 4579   }
                                                   >> 4580   if(afp<=20) BSHELLCT = 0.0;
                                                   >> 4581   //
                                                   >> 4582    parite(a,&para);
                                                   >> 4583    if (para < 0.0){
                                                   >> 4584 // Odd A
                                                   >> 4585   IPARITE=1;
                                                   >> 4586    }else{   
                                                   >> 4587 // Even A                                                      
                                                   >> 4588       parite(z,&parz);
                                                   >> 4589       if(parz > 0.0){
                                                   >> 4590 // Even Z, even N
                                                   >> 4591         IPARITE=2;
                                                   >> 4592       }else{
                                                   >> 4593 // Odd Z, odd N 
                                                   >> 4594         IPARITE=0;
                                                   >> 4595       }
                                                   >> 4596    }
                                                   >> 4597 //
                                                   >> 4598    ein = ee - esous;
                                                   >> 4599 //
                                                   >> 4600    if(ein>1.e30){
                                                   >> 4601       fdens = 0.0;
                                                   >> 4602       ftemp = 0.5;
                                                   >> 4603       goto densniv100;
                                                   >> 4604    }
                                                   >> 4605 //
                                                   >> 4606    e = ee - esous;
                                                   >> 4607 //
                                                   >> 4608    if(e<0.0&&ifis!=1){  // TUNNELING
                                                   >> 4609         fdens = 0.0;
                                                   >> 4610         densfm = 0.0;
                                                   >> 4611         densct = 0.0;
                                                   >> 4612         if(ald->optafan == 1) {
                                                   >> 4613          pa = (ald->av)*a + (ald->as)*std::pow(a,(2.e0/3.e0)) + (ald->ak)*std::pow(a,(1.e0/3.e0));
                                                   >> 4614         }else {
                                                   >> 4615          pa = (ald->av)*a + (ald->as)*bsin*std::pow(a,(2.e0/3.e0)) + (ald->ak)*bkin*std::pow(a,(1.e0/3.e0));
6418         }                                        4616         }
6419         else                                  << 4617         gamma = 2.5 * pa * std::pow(a,-4.0/3.0);
6420         {                                     << 4618         fecor=0.0;
6421             G4double parz = 0.;               << 4619         goto densniv100;
6422             parite(z, &parz);                 << 4620    }
6423             if (parz > 0.0)                   << 4621 //
6424             {                                 << 4622    if(ifis==0&&bs!=1.0){
6425                 // e-e                        << 4623 // - With increasing excitation energy system in getting less and less deformed:
6426                 e0 = 22.34 * std::pow(a, -0.4 << 4624      G4double ponq = (e-100.0)/5.0;
6427             }                                 << 4625      if(ponq>700.0) ponq = 700.0;
6428             else                              << 4626        bs = 1.0/(1.0+std::exp(-ponq)) + 1.0/(1.0+std::exp(ponq)) * bsin;
6429             {                                 << 4627        bk = 1.0/(1.0+std::exp(-ponq)) + 1.0/(1.0+std::exp(ponq)) * bkin;
6430                 // o-o                        << 4628    }
6431                 e0 = 0.0;                     << 4629 //
6432             }                                 << 4630   // level density parameter                                               
                                                   >> 4631   if(ald->optafan == 1) {
                                                   >> 4632     pa = (ald->av)*a + (ald->as)*std::pow(a,(2.e0/3.e0)) + (ald->ak)*std::pow(a,(1.e0/3.e0));
                                                   >> 4633   }
                                                   >> 4634   else {
                                                   >> 4635     pa = (ald->av)*a + (ald->as)*bs*std::pow(a,(2.e0/3.e0)) + (ald->ak)*bk*std::pow(a,(1.e0/3.e0));
                                                   >> 4636   }
                                                   >> 4637 //
                                                   >> 4638   gamma = 2.5 * pa * std::pow(a,-4.0/3.0);
                                                   >> 4639 //
                                                   >> 4640 // AK - 2009 - trial, in order to have transition to constant-temperature approach
                                                   >> 4641 // Idea - at the phase transition superfluid-normal fluid, TCT = TEMP, and this
                                                   >> 4642 // determines critical energy for pairing.
                                                   >> 4643   if(a>0.0){
                                                   >> 4644    ecr = pa*17.60/(std::pow(a,0.699) * std::sqrt(1.0+gamma*BSHELLCT))*17.60/(std::pow(a,0.699) * std::sqrt(1.0+gamma*BSHELLCT));
                                                   >> 4645   }
                                                   >> 4646 
                                                   >> 4647   // pairing corrections                                                   
                                                   >> 4648   if (ifis == 1) {
                                                   >> 4649     delta0 = 14;
                                                   >> 4650   }
                                                   >> 4651   else {
                                                   >> 4652     delta0 = 12;
                                                   >> 4653   }
                                                   >> 4654 
                                                   >> 4655   // shell corrections                                                     
                                                   >> 4656   if (optshp > 0) {
                                                   >> 4657     deltau = bshell;
                                                   >> 4658     if (optshp == 2) {
                                                   >> 4659       deltau = 0.0;
                                                   >> 4660     }
                                                   >> 4661     if (optshp >= 2) {
                                                   >> 4662       // pairing energy shift with condensation energy a.r.j. 10.03.97        
                                                   >> 4663     //deltpp = -0.25e0* (delta0/pow(sqrt(a),2)) * pa /pi6 + 2.e0*delta0/sqrt(a);
                                                   >> 4664       deltpp = -0.25e0* std::pow((delta0/std::sqrt(a)),2) * pa /pi6 + 22.34e0*std::pow(a,-0.464)-0.235;
                                                   >> 4665       // Odd A
                                                   >> 4666       if (IPARITE == 1) {
                                                   >> 4667   //e = e - delta0/sqrt(a);
                                                   >> 4668         e=e-(0.285+11.17*std::pow(a,-0.464)-0.390-0.00058*a);//-30./a;//FIXME
                                                   >> 4669       }
                                                   >> 4670       // Even Z, even N
                                                   >> 4671       if(IPARITE==2){ 
                                                   >> 4672            e=e-(22.34*std::pow(a,-0.464)-0.235);//-30./a;//FIXME
                                                   >> 4673       }
                                                   >> 4674       // Odd Z, odd N
                                                   >> 4675       if(IPARITE==0){
                                                   >> 4676         if(in==iz){
                                                   >> 4677          //  e = e;
                                                   >> 4678         }else{
                                                   >> 4679          //  e = e-30./a;
6433         }                                        4680         }
6434         efl = efl - e0;                       << 4681       }
6435         // end if for pairing term            << 4682     } else {                                                          
                                                   >> 4683       deltpp = 0.0;
6436     }                                            4684     }
                                                   >> 4685   }else {
                                                   >> 4686     deltau = 0.0;
                                                   >> 4687     deltpp = 0.0;
                                                   >> 4688   }
                                                   >> 4689 
                                                   >> 4690   if(e < 0.0){
                                                   >> 4691     e = 0.0;
                                                   >> 4692     ftemp = 0.5;
                                                   >> 4693   }
                                                   >> 4694 
                                                   >> 4695   // washing out is made stronger                          
                                                   >> 4696   ponfe = -2.5*pa*e*std::pow(a,(-4.0/3.0));
                                                   >> 4697 
                                                   >> 4698   if (ponfe < -700.0)  {
                                                   >> 4699     ponfe = -700.0;
                                                   >> 4700   }
                                                   >> 4701   fe = 1.0 - std::exp(ponfe);
                                                   >> 4702   if (e < ecr) {
                                                   >> 4703     // priv. comm. k.-h. schmidt                                         
                                                   >> 4704     he = 1.0 - std::pow((1.0 - e/ecr),2);
                                                   >> 4705   }
                                                   >> 4706   else {
                                                   >> 4707     he = 1.0;
                                                   >> 4708   }
                                                   >> 4709   // Excitation energy corrected for pairing and shell effects             
                                                   >> 4710   // washing out with excitation energy is included.                        
                                                   >> 4711   fecor = e + deltau*fe + deltpp*he;
                                                   >> 4712   if (fecor <= 0.1) {
                                                   >> 4713     fecor = 0.1;
                                                   >> 4714   }                                          
                                                   >> 4715   // iterative procedure according to grossjean and feldmeier              
                                                   >> 4716   // to avoid the singularity e = 0                                        
                                                   >> 4717   if (ee < 5.0) {
                                                   >> 4718     y1 = std::sqrt(pa*fecor);
                                                   >> 4719     for(G4int j = 0; j < 5; j++) {
                                                   >> 4720       y2 = pa*fecor*(1.e0-std::exp(-y1));
                                                   >> 4721       y1 = std::sqrt(y2);
                                                   >> 4722     }
                                                   >> 4723     y0 = pa/y1;
                                                   >> 4724     ftemp=1.0/y0;
                                                   >> 4725     fdens = std::exp(y0*fecor)/ (std::pow((std::pow(fecor,3)*y0),0.5)*std::pow((1.0-0.5*y0*fecor*std::exp(-y1)),0.5))* std::exp(y1)*(1.0-std::exp(-y1))*0.1477045;
                                                   >> 4726     if (fecor < 1.0) {
                                                   >> 4727       ecor1=1.0;
                                                   >> 4728       y11 = std::sqrt(pa*ecor1);
                                                   >> 4729       for(G4int j = 0; j < 7; j++) {
                                                   >> 4730   y21 = pa*ecor1*(1.0-std::exp(-y11));
                                                   >> 4731   y11 = std::sqrt(y21);
                                                   >> 4732       }
6437                                                  4733 
6438     eflmacResult = efl;                       << 4734       y01 = pa/y11;
                                                   >> 4735       fdens = fdens*std::pow((y01/y0),1.5);
                                                   >> 4736       ftemp = ftemp*std::pow((y01/y0),1.5);
                                                   >> 4737     }
                                                   >> 4738   }
                                                   >> 4739   else {
                                                   >> 4740     ponniv = 2.0*std::sqrt(pa*fecor);
                                                   >> 4741     if (ponniv > 700.0) {
                                                   >> 4742       ponniv = 700.0;
                                                   >> 4743     }
                                                   >> 4744     // fermi gas state density                                               
                                                   >> 4745     fdens = 0.1477045 * std::exp(ponniv)/(std::pow(pa,0.25)*std::pow(fecor,1.25));
                                                   >> 4746     ftemp = std::sqrt(fecor/pa);
                                                   >> 4747   }
                                                   >> 4748 //
                                                   >> 4749   densfm = fdens;
                                                   >> 4750   tfm = ftemp;
                                                   >> 4751 //
                                                   >> 4752   if(IOPTCT==0) goto densniv100;
                                                   >> 4753   tempct = 17.60/( std::pow(a,0.699) * std::sqrt(1.+gamma*BSHELLCT));
                                                   >> 4754   //tempct = 1.0 / ( (0.0570 + 0.00193*BSHELLCT) * pow(a,0.6666667));  // from  PRC 80 (2009) 054310
                                                   >> 4755 
                                                   >> 4756 // - CONSTANT-TEMPERATURE LEVEL DENSITY PARAMETER (ONLY AT LOW ENERGIES)
                                                   >> 4757   if(e<30.){
                                                   >> 4758    if(a>0.0){
                                                   >> 4759      if(optshp>=2){
                                                   >> 4760 // Parametrization of CT model by Ignatyuk; note that E0 is shifted to correspond
                                                   >> 4761 // to pairing shift in Fermi-gas model (there, energy is shifted taking odd-odd nuclei
                                                   >> 4762 //  as bassis)
                                                   >> 4763 // e-o, o-e
                                                   >> 4764             if (IPARITE == 1) { e0 = 0.285+11.17*std::pow(a,-0.464) - 0.390-0.00058*a;}
                                                   >> 4765 // e-e
                                                   >> 4766             if (IPARITE == 2) { e0 = 22.34*std::pow(a,-0.464)-0.235;}
                                                   >> 4767 // o-o
                                                   >> 4768             if (IPARITE == 0){ e0 = 0.0;}
                                                   >> 4769 
                                                   >> 4770         ponniv = (ein-e0)/tempct;
                                                   >> 4771         if(ifis!=1) ponniv = max(0.0,(ein-e0)/tempct);
                                                   >> 4772         if(ponniv>700.0){ ponniv = 700.0;}
                                                   >> 4773         densct = std::exp(ponniv)/tempct*std::exp(0.079*BSHELLCT/tempct);
                                                   >> 4774 
                                                   >> 4775         elim = ein;
                                                   >> 4776 
                                                   >> 4777         if(elim>=ecr&&densfm<=densct){
                                                   >> 4778           fdens = densfm;
                                                   >> 4779         //  IREGCT = 0;
                                                   >> 4780         }else{
                                                   >> 4781           fdens = densct;
                                                   >> 4782          // IREGCT = 1;
                                                   >> 4783 //         ecor = min(ein-e0,0.10);
                                                   >> 4784         }
                                                   >> 4785         if(elim>=ecr&&tfm>=tempct){
                                                   >> 4786           ftemp = tfm;
                                                   >> 4787         }else{
                                                   >> 4788           ftemp = tempct;
                                                   >> 4789         }
                                                   >> 4790      }else{
                                                   >> 4791 // Case of no pairing considered
                                                   >> 4792 //        ETEST = PA * TEMPCT**2
                                                   >> 4793         ponniv = (ein)/tempct;
                                                   >> 4794         if(ponniv>700.0){ ponniv = 700.0;}
                                                   >> 4795         densct = std::exp(ponniv)/tempct;
                                                   >> 4796 
                                                   >> 4797         if(ein>=ecr && densfm<=densct){
                                                   >> 4798           fdens = densfm;
                                                   >> 4799           ftemp = tfm;
                                                   >> 4800         //  IREGCT = 0;
                                                   >> 4801         }else{
                                                   >> 4802           fdens = densct;
                                                   >> 4803           ftemp = tempct;
                                                   >> 4804 //          ECOR = DMIN1(EIN,0.1D0)
                                                   >> 4805         }
                                                   >> 4806 
                                                   >> 4807         if(ein>=ecr && tfm>=tempct){
                                                   >> 4808           ftemp = tfm;
                                                   >> 4809         }else{
                                                   >> 4810           ftemp = tempct;
                                                   >> 4811         }
                                                   >> 4812      }
                                                   >> 4813    }
                                                   >> 4814   }
                                                   >> 4815 
                                                   >> 4816 
                                                   >> 4817  densniv100:
                                                   >> 4818 
                                                   >> 4819  if(fdens==0.0){
                                                   >> 4820     if(a>0.0){
                                                   >> 4821 // Parametrization of CT model by Ignatyuk done for masses > 20
                                                   >> 4822          ftemp = 17.60/( std::pow(a,0.699) * std::sqrt(1.0+gamma*BSHELLCT));
                                                   >> 4823        //  ftemp = 1.0 / ( (0.0570 + 0.00193*BSHELLCT) * pow(a,0.6666667));  // from  PRC 80 (2009) 054310
                                                   >> 4824     }else{
                                                   >> 4825          ftemp = 0.5;
                                                   >> 4826     }
                                                   >> 4827  }
                                                   >> 4828 //
                                                   >> 4829 // spin cutoff parameter
                                                   >> 4830 /*
                                                   >> 4831 C PERPENDICULAR AND PARALLEL MOMENT OF INERTIA
                                                   >> 4832 c fnorm = R0*M0/hbar**2 = 1.16fm*931.49MeV/c**2 /(6.582122e-22 MeVs)**2 and is
                                                   >> 4833 c in units 1/MeV
                                                   >> 4834 */
                                                   >> 4835  fnorm = std::pow(1.16,2)*931.49*1.e-2/(9.0* std::pow(6.582122,2));
                                                   >> 4836 
                                                   >> 4837  if(ifis==0 || ifis==2){
                                                   >> 4838 /*
                                                   >> 4839 C GROUND STATE:
                                                   >> 4840 C FP_PER ~ 1+0.5*alpha2, FP_PAR ~ 1-alpha2 (Hasse & Myers, Geom. relat. macr. nucl. phys.)
                                                   >> 4841 C alpha2 = sqrt(5/(4*pi))*beta2
                                                   >> 4842 */
                                                   >> 4843     fp_per = 0.4*std::pow(a,5.0/3.0)*fnorm*(1.0+0.50*defbet*std::sqrt(5.0/(4.0*pi)));
                                                   >> 4844     fp_par = 0.40*std::pow(a,5.0/3.0)*fnorm*(1.0-defbet*std::sqrt(5.0/(4.0*pi)));
                                                   >> 4845 
                                                   >> 4846  }else{
                                                   >> 4847   if(ifis==1){
                                                   >> 4848 /*
                                                   >> 4849 C SADDLE POINT
                                                   >> 4850 C See Hasse&Myer, p. 100
                                                   >> 4851 C Perpendicular moment of inertia
                                                   >> 4852 */
                                                   >> 4853     fp_per = 2.0/5.0*std::pow(a,5.0/3.0)*fnorm*(1.0+7.0/6.0*defbet*(1.0+1396.0/255.0*defbet));
                                                   >> 4854 // Parallel moment of inertia
                                                   >> 4855     fp_par = 2.0/5.0*std::pow(a,5.0/3.0)*fnorm*(1.0-7.0/3.0*defbet*(1.0-389.0/255.0*defbet));
                                                   >> 4856   }else{
                                                   >> 4857    if(ifis==20){
                                                   >> 4858 // IMF - two fragments in contact; it is asumed that both are spherical.
                                                   >> 4859 // See Hasse&Myers, p.106
                                                   >> 4860 // Here, DEFBET = R1/R2, where R1 and R2 are radii of IMF and its partner
                                                   >> 4861 // Perpendicular moment of inertia
                                                   >> 4862    fp_per = 0.4*std::pow(a,5.0/3.0)*fnorm*3.50*(1.0 + std::pow(defbet,5.))/std::pow(1.0 + defbet*defbet*defbet,5.0/3.0);
                                                   >> 4863    fp_par = 0.4*std::pow(a,5.0/3.0)*fnorm*(1.0 + std::pow(defbet,5.0))/std::pow(1.0 + defbet*defbet*defbet,5.0/3.0);
                                                   >> 4864    }
                                                   >> 4865   }
                                                   >> 4866  }
                                                   >> 4867   if(fp_par<0.0)fp_par=0.0;
                                                   >> 4868   if(fp_per<0.0)fp_per=0.0;
                                                   >> 4869 //
                                                   >> 4870   sig_per = std::sqrt(fp_per * ftemp);
                                                   >> 4871   sig_par = std::sqrt(fp_par * ftemp);
                                                   >> 4872 //
                                                   >> 4873   sigma2 = sig_per*sig_per + sig_par*sig_par;
                                                   >> 4874   jfact = (2.*jprf+1.)*std::exp(-1.*jprf*(jprf+1.0)/(2.0*sigma2))/(std::sqrt(8.0*3.1415)*std::pow(sigma2,1.5));
                                                   >> 4875   erot = jprf*jprf/(2.0*std::sqrt(fp_par*fp_par+fp_per*fp_per));
                                                   >> 4876 //
                                                   >> 4877   // collective enhancement                                            
                                                   >> 4878   if (optcol == 1) {
                                                   >> 4879     qrot(z,a,defbet,sig_per,fecor-erot,&fqr);
                                                   >> 4880   }
                                                   >> 4881   else {
                                                   >> 4882     fqr   = 1.0;
                                                   >> 4883   }
                                                   >> 4884 //
                                                   >> 4885   fdens = fdens * fqr *jfact;
                                                   >> 4886 //
                                                   >> 4887   if(fdens<1e-300)fdens=0.0;
                                                   >> 4888 //
                                                   >> 4889   *dens =fdens;
                                                   >> 4890   *ecor=fecor;
                                                   >> 4891   *temp=ftemp;
                                                   >> 4892   *qr=fqr;
                                                   >> 4893 }
                                                   >> 4894 
                                                   >> 4895 void G4Abla::qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr)
                                                   >> 4896 {
                                                   >> 4897 /*
                                                   >> 4898 C QROT INCLUDING DAMPING
                                                   >> 4899 C
                                                   >> 4900 C INPUT: Z,A,DEFBET,SIG,U
                                                   >> 4901 C
                                                   >> 4902 C OUTPUT: QR - COLLECTIVE ENHANCEMENT FACTOR
                                                   >> 4903 C
                                                   >> 4904 C SEE  JUNGHANS ET AL., NUCL. PHYS. A 629 (1998) 635
                                                   >> 4905 C
                                                   >> 4906 C
                                                   >> 4907 C   FR(U)    EXPONENTIAL FUNCTION TO DEFINE DAMPING
                                                   >> 4908 C   UCR      CRITICAL ENERGY FOR DAMPING
                                                   >> 4909 C   DCR      WIDTH OF DAMPING
                                                   >> 4910 C   DEFBET   BETA-DEFORMATION !
                                                   >> 4911 C   SIG      PERPENDICULAR SPIN CUTOFF FACTOR
                                                   >> 4912 C     U      ENERGY
                                                   >> 4913 C    QR      COEFFICIENT OF COLLECTIVE ENHANCEMENT
                                                   >> 4914 C     A      MASS NUMBER
                                                   >> 4915 C     Z      CHARGE NUMBER
                                                   >> 4916 C
                                                   >> 4917 */
                                                   >> 4918 // JLRS: July 2016: new values for the collective parameters
                                                   >> 4919 //
                                                   >> 4920 
                                                   >> 4921   G4double ucr = fiss->ucr; // Critical energy for damping.
                                                   >> 4922   G4double dcr = fiss->dcr; // Width of damping.
                                                   >> 4923   G4double ponq = 0.0, dn = 0.0, n = 0.0, dz = 0.0;
                                                   >> 4924   G4int distn,distz,ndist, zdist;
                                                   >> 4925   G4int nmn[8]= {2, 8, 14, 20, 28, 50, 82, 126};
                                                   >> 4926   G4int nmz[8]= {2, 8, 14, 20, 28, 50, 82, 126};
                                                   >> 4927 //
                                                   >> 4928   sig = sig*sig;
                                                   >> 4929 //
                                                   >> 4930  if(std::abs(bet)<=0.15){
                                                   >> 4931   goto qrot10;
                                                   >> 4932  }else{
                                                   >> 4933   goto qrot11;
                                                   >> 4934  }
                                                   >> 4935 //
                                                   >> 4936  qrot10:
                                                   >> 4937   n = a - z;
                                                   >> 4938   distn = 10000000;
                                                   >> 4939   distz = 10000000;
                                                   >> 4940 
                                                   >> 4941   for(G4int i =0;i<8;i++){
                                                   >> 4942    ndist = std::fabs(idnint(n) - nmn[i]);
                                                   >> 4943    if(ndist < distn) distn = ndist;
                                                   >> 4944    zdist = std::fabs(idnint(z) - nmz[i]);
                                                   >> 4945    if(zdist < distz) distz = zdist;
                                                   >> 4946   }
                                                   >> 4947 
                                                   >> 4948   dz = G4float(distz);
                                                   >> 4949   dn = G4float(distn);
                                                   >> 4950 
                                                   >> 4951   bet = 0.022 + 0.003*dn + 0.002*dz;
                                                   >> 4952 
                                                   >> 4953   sig = 75.0*std::pow(bet,2.) * sig;
                                                   >> 4954 
                                                   >> 4955 // NO VIBRATIONAL ENHANCEMENT
                                                   >> 4956  qrot11:   
                                                   >> 4957   ponq = (u - ucr)/dcr;
                                                   >> 4958 
                                                   >> 4959   if (ponq > 700.0) {
                                                   >> 4960     ponq = 700.0;
                                                   >> 4961   }
                                                   >> 4962   if (sig < 1.0) {
                                                   >> 4963     sig = 1.0;
                                                   >> 4964   }
                                                   >> 4965   (*qr) = 1.0/(1.0 + std::exp(ponq)) * (sig - 1.0) + 1.0;
                                                   >> 4966 
                                                   >> 4967   if ((*qr) < 1.0) {
                                                   >> 4968     (*qr) = 1.0;
                                                   >> 4969   }
6439                                                  4970 
6440     return eflmacResult;                      << 4971   return;
6441 }                                                4972 }
6442                                                  4973 
6443 void G4Abla::appariem(G4double a, G4double z, << 4974 void G4Abla::lpoly(G4double x, G4int n, G4double pl[])
6444 {                                                4975 {
6445     // CALCUL DE LA CORRECTION, DUE A L'APPAR << 4976   // THIS SUBROUTINE CALCULATES THE ORDINARY LEGENDRE POLYNOMIALS OF   
6446     // LIAISON D'UN NOYAU                     << 4977   // ORDER 0 TO N-1 OF ARGUMENT X AND STORES THEM IN THE VECTOR PL.    
6447     // PROCEDURE FOR CALCULATING THE PAIRING  << 4978   // THEY ARE CALCULATED BY RECURSION RELATION FROM THE FIRST TWO      
6448     // ENERGY OF A SPECIFIC NUCLEUS           << 4979   // POLYNOMIALS.                                                      
6449                                               << 4980   // WRITTEN BY A.J.SIERK  LANL  T-9  FEBRUARY, 1984            
6450     G4double para = 0.0, parz = 0.0;          << 4981   // NOTE: PL AND X MUST BE DOUBLE PRECISION ON 32-BIT COMPUTERS!      
6451     // A                 MASS NUMBER          << 4982 
6452     // Z                 NUCLEAR CHARGE       << 4983   pl[0] = 1.0;
6453     // PARA              HELP VARIABLE FOR PA << 4984   pl[1] = x;
6454     // PARZ              HELP VARIABLE FOR PA << 4985 
6455     // DEL               PAIRING CORRECTION   << 4986   for(G4int i = 2; i < n; i++) {
6456                                               << 4987     pl[i] = ((2*G4double(i+1) - 3.0)*x*pl[i-1] - (G4double(i+1) - 2.0)*pl[i-2])/(G4double(i+1)-1.0);
6457     parite(a, &para);                         << 4988   }
6458                                               << 
6459     if (para < 0.0)                           << 
6460     {                                         << 
6461         (*del) = 0.0;                         << 
6462     }                                         << 
6463     else                                      << 
6464     {                                         << 
6465         parite(z, &parz);                     << 
6466         if (parz > 0.0)                       << 
6467         {                                     << 
6468             (*del) = -12.0 / std::sqrt(a);    << 
6469         }                                     << 
6470         else                                  << 
6471         {                                     << 
6472             (*del) = 12.0 / std::sqrt(a);     << 
6473         }                                     << 
6474     }                                         << 
6475 }                                                4989 }
6476                                                  4990 
6477 void G4Abla::parite(G4double n, G4double* par << 4991 G4double G4Abla::eflmac(G4int ia, G4int iz, G4int flag, G4int optshp)
6478 {                                                4992 {
6479     // CALCUL DE LA PARITE DU NOMBRE N        << 4993   // CHANGED TO CALCULATE TOTAL BINDING ENERGY INSTEAD OF MASS EXCESS.     
6480     //                                        << 4994   // SWITCH FOR PAIRING INCLUDED AS WELL.                                  
6481     // PROCEDURE FOR CALCULATING THE PARITY O << 4995   // BINDING = EFLMAC(IA,IZ,0,OPTSHP)                                      
6482     // RETURNS -1 IF N IS ODD AND +1 IF N IS  << 4996   // FORTRAN TRANSCRIPT OF /U/GREWE/LANG/EEX/FRLDM.C                       
6483                                               << 4997   // A.J. 15.07.96                                                         
6484     G4double n1 = 0.0, n2 = 0.0, n3 = 0.0;    << 4998 
6485                                               << 4999   // this function will calculate the liquid-drop nuclear mass for spheri
6486     // N                 NUMBER TO BE TESTED  << 5000   // configuration according to the preprint NUCLEAR GROUND-STATE        
6487     // N1,N2             HELP VARIABLES       << 5001   // MASSES and DEFORMATIONS by P. M"oller et al. from August 16, 1993 p.
6488     // PAR               HELP VARIABLE FOR PA << 5002   // All constants are taken from this publication for consistency.      
6489                                               << 5003 
6490     n3 = G4double(idnint(n));                 << 5004   // Parameters:                                                         
6491     n1 = n3 / 2.0;                            << 5005   // a:    nuclear mass number                                         
6492     n2 = n1 - dint(n1);                       << 5006   // z:    nuclear charge                                              
6493                                               << 5007   // flag:     0       - return mass excess                            
6494     if (n2 > 0.0)                             << 5008   //       otherwise   - return pairing (= -1/2 dpn + 1/2 (Dp + Dn))   
6495     {                                         << 5009 
6496         (*par) = -1.0;                        << 5010   G4double eflmacResult = 0.0;
6497     }                                         << 5011 
6498     else                                      << 5012   if(ia==0)return eflmacResult;
6499     {                                         << 5013 
6500         (*par) = 1.0;                         << 5014   G4int in = 0;
6501     }                                         << 5015   G4double z = 0.0, n = 0.0, a = 0.0, av = 0.0, as = 0.0;
                                                   >> 5016   G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b1 = 0.0, b3 = 0.0;
                                                   >> 5017   G4double ff = 0.0, ca = 0.0, w = 0.0, efl = 0.0; 
                                                   >> 5018   G4double r0 = 0.0, kf = 0.0, ks = 0.0;
                                                   >> 5019   G4double kv = 0.0, rp = 0.0, ay = 0.0, aden = 0.0, x0 = 0.0, y0 = 0.0;
                                                   >> 5020   G4double esq = 0.0, ael = 0.0, i = 0.0, e0 = 0.0;
                                                   >> 5021   G4double pi = 3.141592653589793238e0;
                                                   >> 5022 
                                                   >> 5023   // fundamental constants
                                                   >> 5024   // electronic charge squared
                                                   >> 5025   esq = 1.4399764;
                                                   >> 5026 
                                                   >> 5027   // constants from considerations other than nucl. masses
                                                   >> 5028   // electronic binding
                                                   >> 5029   ael = 1.433e-5;
                                                   >> 5030 
                                                   >> 5031   // proton rms radius
                                                   >> 5032   rp  = 0.8;
                                                   >> 5033 
                                                   >> 5034   // nuclear radius constant
                                                   >> 5035   r0  = 1.16;
                                                   >> 5036 
                                                   >> 5037   // range of yukawa-plus-expon. potential
                                                   >> 5038   ay  = 0.68;
                                                   >> 5039 
                                                   >> 5040   // range of yukawa function used to generate                          
                                                   >> 5041   // nuclear charge distribution
                                                   >> 5042   aden= 0.70;
                                                   >> 5043 
                                                   >> 5044   // wigner constant
                                                   >> 5045   w   = 30.0;
                                                   >> 5046 
                                                   >> 5047   // adjusted parameters
                                                   >> 5048   // volume energy
                                                   >> 5049   av  = 16.00126;
                                                   >> 5050 
                                                   >> 5051   // volume asymmetry
                                                   >> 5052   kv  =  1.92240;
                                                   >> 5053 
                                                   >> 5054   // surface energy
                                                   >> 5055   as  = 21.18466;
                                                   >> 5056 
                                                   >> 5057   // surface asymmetry
                                                   >> 5058   ks  =  2.345;
                                                   >> 5059   // a^0 constant
                                                   >> 5060   a0  =  2.615;
                                                   >> 5061 
                                                   >> 5062   // charge asymmetry
                                                   >> 5063   ca  =  0.10289;
                                                   >> 5064 
                                                   >> 5065   z   = G4double(iz);
                                                   >> 5066   a   = G4double(ia);
                                                   >> 5067   in  = ia - iz;                                                       
                                                   >> 5068   n   = G4double(in);
                                                   >> 5069 
                                                   >> 5070   if(flag==1){goto eflmac311;}
                                                   >> 5071 
                                                   >> 5072   if(iz<13&&in<3){
                                                   >> 5073      if(masses->mexpiop[in][iz]==1){
                                                   >> 5074          return masses->bind[in][iz];
                                                   >> 5075      }
                                                   >> 5076   }
                                                   >> 5077 
                                                   >> 5078   eflmac311:
                                                   >> 5079   
                                                   >> 5080   c1  = 3.0/5.0*esq/r0;
                                                   >> 5081   c4  = 5.0/4.0*std::pow((3.0/(2.0*pi)),(2.0/3.0)) * c1;
                                                   >> 5082   kf  = std::pow((9.0*pi*z/(4.0*a)),(1.0/3.0))/r0;
                                                   >> 5083   
                                                   >> 5084   ff = -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));
                                                   >> 5085   i   = (n-z)/a;
                                                   >> 5086 
                                                   >> 5087   x0  = r0 * std::pow(a,(1.0/3.0)) / ay;
                                                   >> 5088   y0  = r0 * std::pow(a,(1.0/3.0)) / aden;
                                                   >> 5089 
                                                   >> 5090   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);
                                                   >> 5091 
                                                   >> 5092   b3  = 1.0 - 5.0/std::pow(y0,2) * (1.0 - 15.0/(8.0*y0) + 21.0/(8.0 * std::pow(y0,3))
                                                   >> 5093              - 3.0/4.0 * (1.0 + 9.0/(2.0*y0) + 7.0/std::pow(y0,2)
                                                   >> 5094               + 7.0/(2.0 * std::pow(y0,3))) * std::exp(-2.0*y0));
                                                   >> 5095 
                                                   >> 5096   // now calulation of total binding energy a.j. 16.7.96                   
                                                   >> 5097 
                                                   >> 5098   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
                                                   >> 5099     + 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))
                                                   >> 5100     + ff*std::pow(z,2)/a -ca*(n-z) - ael * std::pow(z,(2.39e0));
                                                   >> 5101 
                                                   >> 5102   efl = efl + w*std::abs(i);
                                                   >> 5103 
                                                   >> 5104   // pairing is made optional                                              
                                                   >> 5105   if (optshp >= 2) {
                                                   >> 5106     // average pairing
                                                   >> 5107     if (in==iz && (mod(in,2) == 1) && (mod(iz,2) == 1) && in>0.) {
                                                   >> 5108       efl = efl + w/a;
                                                   >> 5109     }
                                                   >> 5110 
                                                   >> 5111 // AK 2008 - Parametrization of CT model by Ignatyuk;
                                                   >> 5112 // The following part has been introduced  in order to have correspondance
                                                   >> 5113 // between pairing in masses and level densities;
                                                   >> 5114 // AK 2010  note that E0 is shifted to correspond to pairing shift in
                                                   >> 5115 // Fermi-gas model (there, energy is shifted taking odd-odd nuclei
                                                   >> 5116 // as bassis)
                                                   >> 5117 
                                                   >> 5118     G4double para=0.;
                                                   >> 5119     parite(a,&para);
                                                   >> 5120 
                                                   >> 5121     if(para<0.0){
                                                   >> 5122 // e-o, o-e
                                                   >> 5123       e0 =  0.285+11.17*std::pow(a,-0.464) -0.390-0.00058*(a);
                                                   >> 5124     }else{
                                                   >> 5125         G4double parz=0.;
                                                   >> 5126         parite(z,&parz);
                                                   >> 5127         if (parz>0.0){
                                                   >> 5128 // e-e
                                                   >> 5129          e0 = 22.34*std::pow(a,-0.464)-0.235;
                                                   >> 5130         }else{
                                                   >> 5131 // o-o
                                                   >> 5132          e0 = 0.0;
                                                   >> 5133         }
                                                   >> 5134     }
                                                   >> 5135     efl = efl - e0;
                                                   >> 5136   // end if for pairing term                                  
                                                   >> 5137   }
                                                   >> 5138 
                                                   >> 5139   eflmacResult = efl;
                                                   >> 5140 
                                                   >> 5141   return eflmacResult;
                                                   >> 5142 }
                                                   >> 5143 
                                                   >> 5144 void G4Abla::appariem(G4double a, G4double z, G4double *del)
                                                   >> 5145 {
                                                   >> 5146   // CALCUL DE LA CORRECTION, DUE A L'APPARIEMENT, DE L'ENERGIE DE     
                                                   >> 5147   // LIAISON D'UN NOYAU                                                
                                                   >> 5148   // PROCEDURE FOR CALCULATING THE PAIRING CORRECTION TO THE BINDING   
                                                   >> 5149   // ENERGY OF A SPECIFIC NUCLEUS                                      
                                                   >> 5150 
                                                   >> 5151   G4double para = 0.0, parz = 0.0;
                                                   >> 5152   // A                 MASS NUMBER                                     
                                                   >> 5153   // Z                 NUCLEAR CHARGE                                  
                                                   >> 5154   // PARA              HELP VARIABLE FOR PARITY OF A                   
                                                   >> 5155   // PARZ              HELP VARIABLE FOR PARITY OF Z                   
                                                   >> 5156   // DEL               PAIRING CORRECTION                              
                                                   >> 5157 
                                                   >> 5158   parite(a, &para);
                                                   >> 5159 
                                                   >> 5160   if (para < 0.0) {
                                                   >> 5161     (*del) = 0.0;
                                                   >> 5162   }
                                                   >> 5163   else {
                                                   >> 5164     parite(z, &parz);
                                                   >> 5165     if (parz > 0.0) {
                                                   >> 5166       (*del) = -12.0/std::sqrt(a);
                                                   >> 5167     }
                                                   >> 5168     else {
                                                   >> 5169       (*del) = 12.0/std::sqrt(a);
                                                   >> 5170     }
                                                   >> 5171   }
                                                   >> 5172 }
                                                   >> 5173 
                                                   >> 5174 void G4Abla::parite(G4double n, G4double *par)
                                                   >> 5175 {
                                                   >> 5176   // CALCUL DE LA PARITE DU NOMBRE N                                   
                                                   >> 5177   //
                                                   >> 5178   // PROCEDURE FOR CALCULATING THE PARITY OF THE NUMBER N.             
                                                   >> 5179   // RETURNS -1 IF N IS ODD AND +1 IF N IS EVEN                        
                                                   >> 5180 
                                                   >> 5181   G4double n1 = 0.0, n2 = 0.0, n3 = 0.0;
                                                   >> 5182 
                                                   >> 5183   // N                 NUMBER TO BE TESTED                             
                                                   >> 5184   // N1,N2             HELP VARIABLES                                  
                                                   >> 5185   // PAR               HELP VARIABLE FOR PARITY OF N                   
                                                   >> 5186 
                                                   >> 5187   n3 = G4double(idnint(n));
                                                   >> 5188   n1 = n3/2.0;
                                                   >> 5189   n2 = n1 - dint(n1);
                                                   >> 5190 
                                                   >> 5191   if (n2 > 0.0) {
                                                   >> 5192     (*par) = -1.0;
                                                   >> 5193   }
                                                   >> 5194   else {
                                                   >> 5195     (*par) = 1.0;
                                                   >> 5196   }
6502 }                                                5197 }
6503                                                  5198 
6504 G4double G4Abla::tau(G4double bet, G4double h    5199 G4double G4Abla::tau(G4double bet, G4double homega, G4double ef, G4double t)
6505 {                                                5200 {
6506     // INPUT : BET, HOMEGA, EF, T             << 5201   // INPUT : BET, HOMEGA, EF, T                                          
6507     // OUTPUT: TAU - RISE TIME IN WHICH THE F << 5202   // OUTPUT: TAU - RISE TIME IN WHICH THE FISSION WIDTH HAS REACHED      
6508     //               90 PERCENT OF ITS FINAL  << 5203   //               90 PERCENT OF ITS FINAL VALUE                               
6509     //                                        << 5204   // 
6510     // BETA   - NUCLEAR VISCOSITY             << 5205   // BETA   - NUCLEAR VISCOSITY                                          
6511     // HOMEGA - CURVATURE OF POTENTIAL        << 5206   // HOMEGA - CURVATURE OF POTENTIAL                                     
6512     // EF     - FISSION BARRIER               << 5207   // EF     - FISSION BARRIER                                            
6513     // T      - NUCLEAR TEMPERATURE           << 5208   // T      - NUCLEAR TEMPERATURE                                        
6514                                               << 5209 
6515     G4double tauResult = 0.0;                 << 5210   G4double tauResult = 0.0;
6516                                               << 5211 
6517     G4double tlim = 8.e0 * ef;                << 5212   G4double tlim = 8.e0 * ef;
6518     if (t > tlim)                             << 5213   if (t > tlim) {
6519     {                                         << 5214     t = tlim;
6520         t = tlim;                             << 5215   }
6521     }                                         << 5216   //
6522     //                                        << 5217   if (bet/(std::sqrt(2.0)*10.0*(homega/6.582122)) <= 1.0) {
6523     if (bet / (std::sqrt(2.0) * 10.0 * (homeg << 5218     tauResult = std::log(10.0*ef/t)/(bet*1.0e21);
6524     {                                         << 5219   }
6525         tauResult = std::log(10.0 * ef / t) / << 5220   else {
6526     }                                         << 5221     tauResult = std::log(10.0*ef/t)/ (2.0*std::pow((10.0*homega/6.582122),2))*(bet*1.0e-21);
6527     else                                      << 5222   } //end if                                                            
6528     {                                         << 
6529         tauResult = std::log(10.0 * ef / t) / << 
6530     } // end if                               << 
6531                                                  5223 
6532     return tauResult;                         << 5224   return tauResult;
6533 }                                                5225 }
6534                                                  5226 
6535 G4double G4Abla::cram(G4double bet, G4double     5227 G4double G4Abla::cram(G4double bet, G4double homega)
6536 {                                                5228 {
6537     // INPUT : BET, HOMEGA  NUCLEAR VISCOSITY << 5229   // INPUT : BET, HOMEGA  NUCLEAR VISCOSITY + CURVATURE OF POTENTIAL      
6538     // OUTPUT: KRAMERS FAKTOR  - REDUCTION OF << 5230   // OUTPUT: KRAMERS FAKTOR  - REDUCTION OF THE FISSION PROBABILITY       
6539     //                           INDEPENDENT  << 5231   //                           INDEPENDENT OF EXCITATION ENERGY                             
6540                                               << 5232 
6541     G4double rel = bet / (20.0 * homega / 6.5 << 5233   G4double rel = bet/(20.0*homega/6.582122);
6542     G4double cramResult = std::sqrt(1.0 + std << 5234   G4double cramResult = std::sqrt(1.0 + std::pow(rel,2)) - rel;
6543     // limitation introduced   6.1.2000  by   << 5235   // limitation introduced   6.1.2000  by  khs
6544                                               << 5236 
6545     if (cramResult > 1.0)                     << 5237   if (cramResult > 1.0) {
6546     {                                         << 5238     cramResult = 1.0;
6547         cramResult = 1.0;                     << 5239   }
6548     }                                         << 
6549                                                  5240 
6550     return cramResult;                        << 5241   return cramResult;
6551 }                                                5242 }
6552                                                  5243 
6553 G4double G4Abla::bipol(G4int iflag, G4double     5244 G4double G4Abla::bipol(G4int iflag, G4double y)
6554 {                                                5245 {
6555     // CALCULATION OF THE SURFACE BS OR CURVA << 5246   // CALCULATION OF THE SURFACE BS OR CURVATURE BK OF A NUCLEUS        
6556     // RELATIVE TO THE SPHERICAL CONFIGURATIO << 5247   // RELATIVE TO THE SPHERICAL CONFIGURATION                           
6557     // BASED ON  MYERS, DROPLET MODEL FOR ARB << 5248   // BASED ON  MYERS, DROPLET MODEL FOR ARBITRARY SHAPES               
6558                                               << 5249 
6559     // INPUT: IFLAG - 0/1 BK/BS CALCULATION   << 5250   // INPUT: IFLAG - 0/1 BK/BS CALCULATION                              
6560     //         Y    - (1 - X) COMPLEMENT OF T << 5251   //         Y    - (1 - X) COMPLEMENT OF THE FISSILITY                
6561                                               << 5252 
6562     // LINEAR INTERPOLATION OF BS BK TABLE    << 5253   // LINEAR INTERPOLATION OF BS BK TABLE                               
6563                                               << 5254 
6564     G4int i = 0;                              << 5255   G4int i = 0;
6565                                               << 5256 
6566     G4double bipolResult = 0.0;               << 5257   G4double bipolResult = 0.0;
6567                                               << 5258 
6568     const G4int bsbkSize = 54;                << 5259   const G4int bsbkSize = 54;
6569                                               << 5260 
6570     G4double bk[bsbkSize] = {                 << 5261   G4double bk[bsbkSize] = {0.0, 1.00000,1.00087,1.00352,1.00799,1.01433,1.02265,1.03306,
6571         0.0,     1.00000, 1.00087, 1.00352, 1 << 5262          1.04576,1.06099,1.07910,1.10056,1.12603,1.15651,1.19348,
6572         1.10056, 1.12603, 1.15651, 1.19348, 1 << 5263          1.23915,1.29590,1.35951,1.41013,1.44103,1.46026,1.47339,
6573         1.48308, 1.49068, 1.49692, 1.50226, 1 << 5264          1.48308,1.49068,1.49692,1.50226,1.50694,1.51114,1.51502,
6574         1.53177, 1.53490, 1.53803, 1.54117, 1 << 5265          1.51864,1.52208,1.52539,1.52861,1.53177,1.53490,1.53803,
6575         1.56980, 1.57413, 1.57860, 1.58301, 1 << 5266          1.54117,1.54473,1.54762,1.55096,1.55440,1.55798,1.56173,
6576     }; // Zeroes at bk[0], and at             << 5267          1.56567,1.56980,1.57413,1.57860,1.58301,1.58688,1.58688,
6577        // the end added by PK                 << 5268          1.58688,1.58740,1.58740, 0.0}; //Zeroes at bk[0], and at the end added by PK
6578                                               << 5269 
6579     G4double bs[bsbkSize] = { 0.0,     1.0000 << 5270   G4double bs[bsbkSize] = {0.0, 1.00000,1.00086,1.00338,1.00750,1.01319,
6580                               1.05195, 1.0660 << 5271          1.02044,1.02927,1.03974,
6581                               1.26532, 1.2761 << 5272          1.05195,1.06604,1.08224,1.10085,1.12229,1.14717,1.17623,1.20963,
6582                               1.28235, 1.2814 << 5273          1.24296,1.26532,1.27619,1.28126,1.28362,1.28458,1.28477,1.28450,
6583                               1.27314, 1.2721 << 5274          1.28394,1.28320,1.28235,1.28141,1.28042,1.27941,1.27837,1.27732,
6584                               1.26418, 1.2632 << 5275          1.27627,1.27522,1.27418,1.27314,1.27210,1.27108,1.27006,1.26906,
6585                                               << 5276          1.26806,1.26707,1.26610,1.26514,1.26418,1.26325,1.26233,1.26147,
6586     i = idint(y / (2.0e-02)) + 1;             << 5277          1.26147,1.26147,1.25992,1.25992, 0.0};
6587                                               << 5278 
6588     if ((i + 1) >= bsbkSize)                  << 5279   i = idint(y/(2.0e-02)) + 1;
6589     {                                         << 5280     
6590         if (verboseLevel > 2)                 << 5281   if((i + 1) >= bsbkSize) {
6591         {                                     << 5282     if(verboseLevel > 2) {
6592             // G4cout <<"G4Abla error: index  << 5283       // G4cout <<"G4Abla error: index " << i + 1 << " is greater than array size permits." << G4endl;
6593             // size permits." << G4endl;      << 5284     }
6594         }                                     << 5285     bipolResult = 0.0;
6595         bipolResult = 0.0;                    << 5286   }
6596     }                                         << 5287   else {
6597     else                                      << 5288     if (iflag == 1) {
6598     {                                         << 5289       bipolResult = bs[i] + (bs[i+1] - bs[i])/2.0e-02 * (y - 2.0e-02*(i - 1));
6599         if (iflag == 1)                       << 5290     }
6600         {                                     << 5291     else {
6601             bipolResult = bs[i] + (bs[i + 1]  << 5292       bipolResult = bk[i] + (bk[i+1] - bk[i])/2.0e-02 * (y - 2.0e-02*(i - 1));
6602         }                                     << 5293     }
6603         else                                  << 5294   }
6604         {                                     << 5295   
6605             bipolResult = bk[i] + (bk[i + 1]  << 5296   return bipolResult;
6606         }                                     << 5297 }
6607     }                                         << 5298 
6608                                               << 5299 void G4Abla::fomega_sp(G4double AF,G4double Y,G4double *MFCD,G4double *sOMEGA,G4double *sHOMEGA)
6609     return bipolResult;                       << 5300 {
                                                   >> 5301 /*
                                                   >> 5302 c  Y                 1 - Fissility
                                                   >> 5303 c  OMEGA             Frequency at the ground state, in units 1.e-21 s
                                                   >> 5304 */
                                                   >> 5305   G4double OMEGA,HOMEGA,ES0,MR02;
                                                   >> 5306 
                                                   >> 5307       ES0 = 20.760*std::pow(AF,2.0/3.0);
                                                   >> 5308 // In units 1.e-42 MeVs**2; r0 = 1.175e-15 m, u=931.49MeV/c**2=103.4MeV*s**2/m**2
                                                   >> 5309 // divided by 1.e-4 to go from 1.e-46 to 1.e-42
                                                   >> 5310       MR02 = std::pow(AF,5.0/3.0)*1.0340*0.010*1.175*1.175;
                                                   >> 5311 // Determination of the inertia of the fission collective degree of freedom
                                                   >> 5312       (*MFCD) = MR02 * 3.0/10.0*(1.0+3.0*Y);
                                                   >> 5313 // Omega at saddle
                                                   >> 5314       OMEGA = std::sqrt(ES0/MR02)*std::sqrt(8.0/3.0*Y*(1.0+304.0*Y/255.0));
                                                   >> 5315 //
                                                   >> 5316       HOMEGA = 6.58122*OMEGA/10.0;
                                                   >> 5317 //
                                                   >> 5318    (*sOMEGA)=OMEGA;
                                                   >> 5319    (*sHOMEGA)=HOMEGA;
                                                   >> 5320 //
                                                   >> 5321   return;
6610 }                                                5322 }
6611                                                  5323 
6612 void G4Abla::fomega_sp(G4double AF, G4double  << 
6613 {                                             << 
6614     /*                                        << 
6615     c  Y                 1 - Fissility        << 
6616     c  OMEGA             Frequency at the gro << 
6617     */                                        << 
6618     G4double OMEGA, HOMEGA, ES0, MR02;        << 
6619                                               << 
6620     ES0 = 20.760 * std::pow(AF, 2.0 / 3.0);   << 
6621     // In units 1.e-42 MeVs**2; r0 = 1.175e-1 << 
6622     // u=931.49MeV/c**2=103.4MeV*s**2/m**2 di << 
6623     // to 1.e-42                              << 
6624     MR02 = std::pow(AF, 5.0 / 3.0) * 1.0340 * << 
6625     // Determination of the inertia of the fi << 
6626     (*MFCD) = MR02 * 3.0 / 10.0 * (1.0 + 3.0  << 
6627     // Omega at saddle                        << 
6628     OMEGA = std::sqrt(ES0 / MR02) * std::sqrt << 
6629     //                                        << 
6630     HOMEGA = 6.58122 * OMEGA / 10.0;          << 
6631     //                                        << 
6632     (*sOMEGA) = OMEGA;                        << 
6633     (*sHOMEGA) = HOMEGA;                      << 
6634     //                                        << 
6635     return;                                   << 
6636 }                                             << 
6637                                                  5324 
6638 void G4Abla::fomega_gs(G4double AF, G4double  << 5325 void G4Abla::fomega_gs(G4double AF,G4double ZF,G4double *K1,G4double *sOMEGA,G4double *sHOMEGA)
6639 {                                                5326 {
6640     /*                                        << 5327 /*
6641     c  Y                 1 - Fissility        << 5328 c  Y                 1 - Fissility
6642     c  OMEGA             Frequency at the gro << 5329 c  OMEGA             Frequency at the ground state, in units 1.e-21 s
6643     */                                        << 5330 */
6644     G4double OMEGA, HOMEGA, MR02, MINERT, C,  << 5331   G4double OMEGA,HOMEGA,MR02,MINERT,C,fk1;
6645     //                                        << 5332 //
6646     MR02 = std::pow(AF, 5.0 / 3.0) * 1.0340 * << 5333       MR02 = std::pow(AF,5.0/3.0)*1.0340*0.01*1.175*1.175;
6647     MINERT = 3. * MR02 / 10.0;                << 5334       MINERT = 3.*MR02/10.0;
6648     C = 17.9439 * (1. - 1.7826 * std::pow((AF << 5335       C = 17.9439*(1.-1.7826*std::pow((AF-2.0*ZF)/AF,2));
6649     fk1 = 0.4 * C * std::pow(AF, 2.0 / 3.0) - << 5336       fk1 = 0.4*C*std::pow(AF,2.0/3.0)-0.1464*std::pow(ZF,2)/std::pow(AF,1./3.);
6650     OMEGA = std::sqrt(fk1 / MINERT);          << 5337       OMEGA = std::sqrt(fk1/MINERT);
6651     HOMEGA = 6.58122 * OMEGA / 10.0;          << 5338       HOMEGA = 6.58122*OMEGA/10.0;
6652     //                                        << 5339 //
6653     (*K1) = fk1;                              << 5340    (*K1)=fk1;
6654     (*sOMEGA) = OMEGA;                        << 5341    (*sOMEGA)=OMEGA;
6655     (*sHOMEGA) = HOMEGA;                      << 5342    (*sHOMEGA)=HOMEGA;
6656     //                                        << 5343 //
6657     return;                                   << 5344   return;
6658 }                                                5345 }
6659                                                  5346 
6660 void G4Abla::barrs(G4int Z1, G4int A1, G4int  << 5347 void G4Abla::barrs(G4int Z1,G4int A1,G4int Z2,G4int A2,G4double *sBARR,G4double *sOMEGA)
6661 { /*                                          << 5348 {/*
6662  C AK 2004 - Barriers for LCP and IMF are cal << 5349 C AK 2004 - Barriers for LCP and IMF are calculated now according to the
6663  according to the C           Bass model (Nuc << 5350 C           Bass model (Nucl. Phys. A (1974))
6664  C KHS 2007 - To speed up, barriers are read  << 5351 C KHS 2007 - To speed up, barriers are read from tabels; in case thermal
6665  case thermal C            expansion is consi << 5352 C            expansion is considered, barriers are calculated.
6666  are calculated. C INPUT: C EA    - Excitatio << 5353 C INPUT:
6667  nucleon C Z11, A11 - Charge and mass of daug << 5354 C EA    - Excitation energy per nucleon
6668  Z22, A22 - Charge and mass of LCP or IMF     << 5355 C Z11, A11 - Charge and mass of daughter nucleus
6669  C                                            << 5356 C Z22, A22 - Charge and mass of LCP or IMF
6670  C OUTPUT:                                    << 5357 C
6671  C BARR - Barrier                             << 5358 C OUTPUT:
6672  C OMEGA - Curvature of the potential         << 5359 C BARR - Barrier
6673  C                                            << 5360 C OMEGA - Curvature of the potential
6674  C BASS MODEL NPA 1974 - used only if expansi << 5361 C
6675  (OPTEXP=1) C                        or one w << 5362 C BASS MODEL NPA 1974 - used only if expansion is considered (OPTEXP=1)
6676  explicitly (OPTBAR=1) C October 2011 - AK -  << 5363 C                        or one wants this model explicitely (OPTBAR=1)
6677  parametrization of the barrier and its posit << 5364 C October 2011 - AK - new parametrization of the barrier and its position,
6678  et al., NPA 868 (2011) 1; this is now C defa << 5365 C                    see W.W. Qu et al., NPA 868 (2011) 1; this is now
6679  (OPTBAR=0)                                   << 5366 C                    default option (OPTBAR=0)
6680  c                                            << 5367 c
6681  c November 2016 - JLRS - Added this function << 5368 c November 2016 - JLRS - Added this function from abla07v4
6682  c                                            << 5369 c
6683  */                                           << 5370 */
6684     G4double BARR, OMEGA, RMAX;               << 5371      G4double BARR, OMEGA, RMAX;
6685     RMAX = 1.1 * (ecld->rms[A1 - Z1][Z1] + ec << 5372      RMAX = 1.1 * (ecld->rms[A1-Z1][Z1]+ecld->rms[A2-Z2][Z2]) + 2.8;
6686     BARR = 1.345 * Z1 * Z2 / RMAX;            << 5373      BARR = 1.345 * Z1 * Z2 / RMAX;
6687     // C Omega according to Avishai:          << 5374 //C Omega according to Avishai:
6688     OMEGA = 4.5 / 197.3287;                   << 5375      OMEGA = 4.5 / 197.3287;
6689                                                  5376 
6690     // if(Z1<60){                                5377     // if(Z1<60){
6691     //  if(Z2==1 && A2==2) BARR = BARR * 1.1;    5378     //  if(Z2==1 && A2==2) BARR = BARR * 1.1;
6692     //  if(Z2==1 && A2==3) BARR = BARR * 1.1;    5379     //  if(Z2==1 && A2==3) BARR = BARR * 1.1;
6693     //   if(Z2==2 && A2==3) BARR = BARR * 1.3 << 5380    //   if(Z2==2 && A2==3) BARR = BARR * 1.3;
6694     //  if(Z2==2 && A2==4) BARR = BARR * 1.1;    5381     //  if(Z2==2 && A2==4) BARR = BARR * 1.1;
6695     // }                                         5382     // }
6696                                                  5383 
6697     (*sOMEGA) = OMEGA;                        << 5384      (*sOMEGA)=OMEGA;
6698     (*sBARR) = BARR;                          << 5385      (*sBARR)=BARR;
6699     //                                        << 5386 //
6700     return;                                   << 5387   return;
6701 }                                                5388 }
6702                                                  5389 
6703 void G4Abla::barfit(G4int iz, G4int ia, G4int << 5390 void G4Abla::barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax)
6704 {                                                5391 {
6705     //   2223 C     VERSION FOR 32BIT COMPUTE << 5392   //   2223 C     VERSION FOR 32BIT COMPUTER                                        
6706     //   2224 C     THIS SUBROUTINE RETURNS T << 5393   //   2224 C     THIS SUBROUTINE RETURNS THE BARRIER HEIGHT BFIS, THE              
6707     //   2225 C     GROUND-STATE ENERGY SEGS, << 5394   //   2225 C     GROUND-STATE ENERGY SEGS, IN MEV, AND THE ANGULAR MOMENTUM        
6708     //   2226 C     AT WHICH THE FISSION BARR << 5395   //   2226 C     AT WHICH THE FISSION BARRIER DISAPPEARS, LMAX, IN UNITS OF        
6709     //   2227 C     H-BAR, WHEN CALLED WITH I << 5396   //   2227 C     H-BAR, WHEN CALLED WITH INTEGER AGUMENTS IZ, THE ATOMIC           
6710     //   2228 C     NUMBER, IA, THE ATOMIC MA << 5397   //   2228 C     NUMBER, IA, THE ATOMIC MASS NUMBER, AND IL, THE ANGULAR           
6711     //   2229 C     MOMENTUM IN UNITS OF H-BA << 5398   //   2229 C     MOMENTUM IN UNITS OF H-BAR. (PLANCK'S CONSTANT DIVIDED BY         
6712     //   2230 C     2*PI).                    << 5399   //   2230 C     2*PI).                                                            
6713     //   2231 C                               << 5400   //   2231 C                                                                       
6714     //   2232 C        THE FISSION BARRIER FO << 5401   //   2232 C        THE FISSION BARRIER FO IL = 0 IS CALCULATED FROM A 7TH         
6715     //   2233 C     ORDER FIT IN TWO VARIABLE << 5402   //   2233 C     ORDER FIT IN TWO VARIABLES TO 638 CALCULATED FISSION              
6716     //   2234 C     BARRIERS FOR Z VALUES FRO << 5403   //   2234 C     BARRIERS FOR Z VALUES FROM 20 TO 110. THESE 638 BARRIERS ARE      
6717     //   ARE 2235 C     FIT WITH AN RMS DEVIA << 5404   //   2235 C     FIT WITH AN RMS DEVIATION OF 0.10 MEV BY THIS 49-PARAMETER        
6718     //   2236 C     FUNCTION.                 << 5405   //   2236 C     FUNCTION.                                                         
6719     //   2237 C     IF BARFIT IS CALLED WITH  << 5406   //   2237 C     IF BARFIT IS CALLED WITH (IZ,IA) VALUES OUTSIDE THE RANGE OF      
6720     //   OF 2238  C     THE BARRIER HEIGHT IS << 5407   //   2238 C     THE BARRIER HEIGHT IS SET TO 0.0, AND A MESSAGE IS PRINTED        
6721     //   2239 C     ON THE DEFAULT OUTPUT FIL << 5408   //   2239 C     ON THE DEFAULT OUTPUT FILE.                                       
6722     //   2240 C                               << 5409   //   2240 C                                                                       
6723     //   2241 C        FOR IL VALUES NOT EQUA << 5410   //   2241 C        FOR IL VALUES NOT EQUAL TO ZERO, THE VALUES OF L AT WHICH      
6724     //   WHICH 2242 C     THE BARRIER IS 80%  << 5411   //   2242 C     THE BARRIER IS 80% AND 20% OF THE L=0 VALUE ARE RESPECTIVELY      
6725     //   RESPECTIVELY                         << 5412   //   2243 C     FIT TO 20-PARAMETER FUNCTIONS OF Z AND A, OVER A MORE             
6726     //   2243 C     FIT TO 20-PARAMETER FUNCT << 5413   //   2244 C     RESTRICTED RANGE OF A VALUES, THAN IS THE CASE FOR L = 0.         
6727     //   2244 C     RESTRICTED RANGE OF A VAL << 5414   //   2245 C     THE VALUE OF L WHERE THE BARRIER DISAPPEARS, LMAX IS FIT TO       
6728     //   2245 C     THE VALUE OF L WHERE THE  << 5415   //   2246 C     A 24-PARAMETER FUNCTION OF Z AND A, WITH THE SAME RANGE OF        
6729     //   TO 2246  C     A 24-PARAMETER FUNCTI << 5416   //   2247 C     Z AND A VALUES AS L-80 AND L-20.                                  
6730     //   2247 C     Z AND A VALUES AS L-80 AN << 5417   //   2248 C        ONCE AGAIN, IF AN (IZ,IA) PAIR IS OUTSIDE OF THE RANGE OF      
6731     //   2248 C        ONCE AGAIN, IF AN (IZ, << 5418   //   2249 C     VALIDITY OF THE FIT, THE BARRIER VALUE IS SET TO 0.0 AND A        
6732     //   OF 2249  C     VALIDITY OF THE FIT,  << 5419   //   2250 C     MESSAGE IS PRINTED. THESE THREE VALUES (BFIS(L=0),L-80, AND       
6733     //   2250 C     MESSAGE IS PRINTED. THESE << 5420   //   2251 C     L-20) AND THE CONSTRINTS OF BFIS = 0 AND D(BFIS)/DL = 0 AT        
6734     //   AND 2251 C     L-20) AND THE CONSTRI << 5421   //   2252 C     L = LMAX AND L=0 LEAD TO A FIFTH-ORDER FIT TO BFIS(L) FOR         
6735     //   2252 C     L = LMAX AND L=0 LEAD TO  << 5422   //   2253 C     L>L-20. THE FIRST THREE CONSTRAINTS LEAD TO A THIRD-ORDER FIT     
6736     //   2253 C     L>L-20. THE FIRST THREE C << 5423   //   2254 C     FOR THE REGION L < L-20.                                          
6737     //   FIT 2254 C     FOR THE REGION L < L- << 5424   //   2255 C                                                                       
6738     //   GROUND STATE ENERGIES ARE CALCULATED << 5425   //   2256 C        THE GROUND STATE ENERGIES ARE CALCULATED FROM A                
6739     //   IN Z, A, AND L TO 214 GROUND-STATE E << 5426   //   2257 C     120-PARAMETER FIT IN Z, A, AND L TO 214 GROUND-STATE ENERGIES     
6740     //   AND A VALUES.                        << 5427   //   2258 C     FOR 36 DIFFERENT Z AND A VALUES.                                  
6741     //   2259 C     (THE RANGE OF Z AND A IS  << 5428   //   2259 C     (THE RANGE OF Z AND A IS THE SAME AS FOR L-80, L-20, AND          
6742     //   2260 C     L-MAX)                    << 5429   //   2260 C     L-MAX)                                                            
6743     //   2261 C                               << 5430   //   2261 C                                                                       
6744     //   2262 C        THE CALCULATED BARRIER << 5431   //   2262 C        THE CALCULATED BARRIERS FROM WHICH THE FITS WERE MADE WERE     
6745     //   WERE 2263  C     CALCULATED IN 1983- << 5432   //   2263 C     CALCULATED IN 1983-1984 BY A. J. SIERK OF LOS ALAMOS              
6746     //   ALAMOS 2264  C     NATIONAL LABORATO << 5433   //   2264 C     NATIONAL LABORATORY GROUP T-9, USING YUKAWA-PLUS-EXPONENTIAL      
6747     //   YUKAWA-PLUS-EXPONENTIAL              << 5434   //   2265 C     G4DOUBLE FOLDED NUCLEAR ENERGY, EXACT COULOMB DIFFUSENESS           
6748     //   2265 C     G4DOUBLE FOLDED NUCLEAR E << 5435   //   2266 C     CORRECTIONS, AND DIFFUSE-MATTER MOMENTS OF INERTIA.               
6749     //   2266 C     CORRECTIONS, AND DIFFUSE- << 5436   //   2267 C     THE PARAMETERS OF THE MODEL R-0 = 1.16 FM, AS 21.13 MEV,          
6750     //   2267 C     THE PARAMETERS OF THE MOD << 5437   //   2268 C     KAPPA-S = 2.3, A = 0.68 FM.                                       
6751     //   2268 C     KAPPA-S = 2.3, A = 0.68 F << 5438   //   2269 C     THE DIFFUSENESS OF THE MATTER AND CHARGE DISTRIBUTIONS USED       
6752     //   2269 C     THE DIFFUSENESS OF THE MA << 5439   //   2270 C     CORRESPONDS TO A SURFACE DIFFUSENESS PARAMETER (DEFINED BY        
6753     //   USED 2270  C     CORRESPONDS TO A SU << 5440   //   2271 C     MYERS) OF 0.99 FM. THE CALCULATED BARRIERS FOR L = 0 ARE          
6754     //   (DEFINED BY 2271 C     MYERS) OF 0.9 << 5441   //   2272 C     ACCURATE TO A LITTLE LESS THAN 0.1 MEV; THE OUTPUT FROM           
6755     //   0 ARE 2272 C     ACCURATE TO A LITTL << 5442   //   2273 C     THIS SUBROUTINE IS A LITTLE LESS ACCURATE. WORST ERRORS MAY BE    
6756     //   FROM 2273  C     THIS SUBROUTINE IS  << 5443   //   2274 C     AS LARGE AS 0.5 MEV; CHARACTERISTIC UNCERTAINY IS IN THE RANGE    
6757     //   ERRORS MAY BE                        << 5444   //   2275 C     OF 0.1-0.2 MEV. THE RMS DEVIATION OF THE GROUND-STATE FIT         
6758     //   2274 C     AS LARGE AS 0.5 MEV; CHAR << 5445   //   2276 C     FROM THE 214 INPUT VALUES IS 0.20 MEV. THE MAXIMUM ERROR          
6759     //   RANGE                                << 5446   //   2277 C     OCCURS FOR LIGHT NUCLEI IN THE REGION WHERE THE GROUND STATE      
6760     //   2275 C     OF 0.1-0.2 MEV. THE RMS D << 5447   //   2278 C     IS PROLATE, AND MAY BE GREATER THAN 1.0 MEV FOR VERY NEUTRON      
6761     //   2276 C     FROM THE 214 INPUT VALUES << 5448   //   2279 C     DEFICIENT NUCLEI, WITH L NEAR LMAX. FOR MOST NUCLEI LIKELY TO     
6762     //   2277 C     OCCURS FOR LIGHT NUCLEI I << 5449   //   2280 C     BE ENCOUNTERED IN REAL EXPERIMENTS, THE MAXIMUM ERROR IS          
6763     //   STATE                                << 5450   //   2281 C     CLOSER TO 0.5 MEV, AGAIN FOR LIGHT NUCLEI AND L NEAR LMAX.        
6764     //   2278 C     IS PROLATE, AND MAY BE GR << 5451   //   2282 C                                                                       
6765     //   NEUTRON                              << 5452   //   2283 C     WRITTEN BY A. J. SIERK, LANL T-9                                  
6766     //   2279 C     DEFICIENT NUCLEI, WITH L  << 5453   //   2284 C     VERSION 1.0 FEBRUARY, 1984                                        
6767     //   TO 2280  C     BE ENCOUNTERED IN REA << 5454   //   2285 C                                                                       
6768     //   2281 C     CLOSER TO 0.5 MEV, AGAIN  << 5455   //   2286 C     THE FOLLOWING IS NECESSARY FOR 32-BIT MACHINES LIKE DEC VAX,      
6769     //   2282 C                               << 5456   //   2287 C     IBM, ETC                                                          
6770     //   2283 C     WRITTEN BY A. J. SIERK, L << 5457 
6771     //   2284 C     VERSION 1.0 FEBRUARY, 198 << 5458   G4double pa[7],pz[7],pl[10];
6772     //   2285 C                               << 5459   for(G4int init_i = 0; init_i < 7; init_i++) {
6773     //   2286 C     THE FOLLOWING IS NECESSAR << 5460     pa[init_i] = 0.0; 
6774     //   VAX, 2287  C     IBM, ETC            << 5461     pz[init_i] = 0.0; 
6775                                               << 5462   }
6776     G4double pa[7], pz[7], pl[10];            << 5463   for(G4int init_i = 0; init_i < 10; init_i++) {
6777     for (G4int init_i = 0; init_i < 7; init_i << 5464     pl[init_i] = 0.0;
6778     {                                         << 5465   }
6779         pa[init_i] = 0.0;                     << 5466 
6780         pz[init_i] = 0.0;                     << 5467   G4double a = 0.0, z = 0.0, amin = 0.0, amax = 0.0, amin2 = 0.0;
6781     }                                         << 5468   G4double amax2 = 0.0, aa = 0.0, zz = 0.0, bfis = 0.0;
6782     for (G4int init_i = 0; init_i < 10; init_ << 5469   G4double bfis0 = 0.0, ell = 0.0, el = 0.0, egs = 0.0, el80 = 0.0, el20 = 0.0;
6783     {                                         << 5470   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;
6784         pl[init_i] = 0.0;                     << 5471   G4double aj = 0.0, ak = 0.0, a1 = 0.0, a2 = 0.0;
6785     }                                         << 5472 
6786                                               << 5473   G4int i = 0, j = 0, k = 0, m = 0;
6787     G4double a = 0.0, z = 0.0, amin = 0.0, am << 5474   G4int l = 0;
6788     G4double amax2 = 0.0, aa = 0.0, zz = 0.0, << 5475 
6789     G4double bfis0 = 0.0, ell = 0.0, el = 0.0 << 5476   G4double emncof[4][5] = {{-9.01100e+2,-1.40818e+3, 2.77000e+3,-7.06695e+2, 8.89867e+2}, 
6790     G4double elmax = 0.0, sel80 = 0.0, sel20  << 5477          {1.35355e+4,-2.03847e+4, 1.09384e+4,-4.86297e+3,-6.18603e+2},
6791     G4double aj = 0.0, ak = 0.0, a1 = 0.0, a2 << 5478          {-3.26367e+3, 1.62447e+3, 1.36856e+3, 1.31731e+3, 1.53372e+2},
6792                                               << 5479          {7.48863e+3,-1.21581e+4, 5.50281e+3,-1.33630e+3, 5.05367e-2}};
6793     G4int i = 0, j = 0, k = 0, m = 0;         << 5480 
6794     G4int l = 0;                              << 5481   G4double elmcof[4][5] = {{1.84542e+3,-5.64002e+3, 5.66730e+3,-3.15150e+3, 9.54160e+2},
6795                                               << 5482          {-2.24577e+3, 8.56133e+3,-9.67348e+3, 5.81744e+3,-1.86997e+3},
6796     G4double emncof[4][5] = { { -9.01100e+2,  << 5483          {2.79772e+3,-8.73073e+3, 9.19706e+3,-4.91900e+3, 1.37283e+3},
6797                               { 1.35355e+4, - << 5484          {-3.01866e+1, 1.41161e+3,-2.85919e+3, 2.13016e+3,-6.49072e+2}};
6798                               { -3.26367e+3,  << 5485 
6799                               { 7.48863e+3, - << 5486   G4double emxcof[4][6] = {{9.43596e4,-2.241997e5,2.223237e5,-1.324408e5,4.68922e4,-8.83568e3},
6800                                               << 5487          {-1.655827e5,4.062365e5,-4.236128e5,2.66837e5,-9.93242e4,1.90644e4},
6801     G4double elmcof[4][5] = { { 1.84542e+3, - << 5488          {1.705447e5,-4.032e5,3.970312e5,-2.313704e5,7.81147e4,-1.322775e4},
6802                               { -2.24577e+3,  << 5489          {-9.274555e4,2.278093e5,-2.422225e5,1.55431e5,-5.78742e4,9.97505e3}};
6803                               { 2.79772e+3, - << 5490 
6804                               { -3.01866e+1,  << 5491   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},
6805                                               << 5492          {-1.13269453e+6, 2.97764590e+6,-4.54326326e+6, 3.00464870e+6, -1.44989274e+6,-1.02026610e+5, 6.27959815e+4},
6806     G4double emxcof[4][6] = { { 9.43596e4, -2 << 5493          {1.37543304e+6,-3.65808988e+6, 5.47798999e+6,-3.78109283e+6, 1.84131765e+6, 1.53669695e+4,-6.96817834e+4},
6807                               { -1.655827e5,  << 5494          {-8.56559835e+5, 2.48872266e+6,-4.07349128e+6, 3.12835899e+6, -1.62394090e+6, 1.19797378e+5, 4.25737058e+4},
6808                               { 1.705447e5, - << 5495          {3.28723311e+5,-1.09892175e+6, 2.03997269e+6,-1.77185718e+6, 9.96051545e+5,-1.53305699e+5,-1.12982954e+4},
6809                               { -9.274555e4,  << 5496          {4.15850238e+4, 7.29653408e+4,-4.93776346e+5, 6.01254680e+5, -4.01308292e+5, 9.65968391e+4,-3.49596027e+3},
6810                                               << 5497          {-1.82751044e+5, 3.91386300e+5,-3.03639248e+5, 1.15782417e+5, -4.24399280e+3,-6.11477247e+3, 3.66982647e+2}};
6811     G4double elzcof[7][7] = {                 << 5498 
6812         { 5.11819909e+5, -1.30303186e+6, 1.90 << 5499   const G4int sizex = 5;
6813         { -1.13269453e+6, 2.97764590e+6, -4.5 << 5500   const G4int sizey = 6;
6814         { 1.37543304e+6, -3.65808988e+6, 5.47 << 5501   const G4int sizez = 4;
6815         { -8.56559835e+5, 2.48872266e+6, -4.0 << 5502 
6816         { 3.28723311e+5, -1.09892175e+6, 2.03 << 5503   G4double egscof[sizey][sizey][sizez];
6817         { 4.15850238e+4, 7.29653408e+4, -4.93 << 5504 
6818         { -1.82751044e+5, 3.91386300e+5, -3.0 << 5505   G4double egs1[sizey][sizex] = {{1.927813e5, 7.666859e5, 6.628436e5, 1.586504e5,-7.786476e3},
6819     };                                        << 5506          {-4.499687e5,-1.784644e6,-1.546968e6,-4.020658e5,-3.929522e3},
6820                                               << 5507          {4.667741e5, 1.849838e6, 1.641313e6, 5.229787e5, 5.928137e4},
6821     const G4int sizex = 5;                    << 5508          {-3.017927e5,-1.206483e6,-1.124685e6,-4.478641e5,-8.682323e4},
6822     const G4int sizey = 6;                    << 5509          {1.226517e5, 5.015667e5, 5.032605e5, 2.404477e5, 5.603301e4},
6823     const G4int sizez = 4;                    << 5510          {-1.752824e4,-7.411621e4,-7.989019e4,-4.175486e4,-1.024194e4}};
6824                                               << 5511 
6825     G4double egscof[sizey][sizey][sizez];     << 5512   G4double egs2[sizey][sizex] = {{-6.459162e5,-2.903581e6,-3.048551e6,-1.004411e6,-6.558220e4},
6826                                               << 5513          {1.469853e6, 6.564615e6, 6.843078e6, 2.280839e6, 1.802023e5},
6827     G4double egs1[sizey][sizex] = { { 1.92781 << 5514          {-1.435116e6,-6.322470e6,-6.531834e6,-2.298744e6,-2.639612e5},
6828                                     { -4.4996 << 5515          {8.665296e5, 3.769159e6, 3.899685e6, 1.520520e6, 2.498728e5},      
6829                                     { 4.66774 << 5516          {-3.302885e5,-1.429313e6,-1.512075e6,-6.744828e5,-1.398771e5},
6830                                     { -3.0179 << 5517          {4.958167e4, 2.178202e5, 2.400617e5, 1.167815e5, 2.663901e4}};
6831                                     { 1.22651 << 5518 
6832                                     { -1.7528 << 5519   G4double egs3[sizey][sizex] = {{3.117030e5, 1.195474e6, 9.036289e5, 6.876190e4,-6.814556e4},
6833                                               << 5520          {-7.394913e5,-2.826468e6,-2.152757e6,-2.459553e5, 1.101414e5},
6834     G4double egs2[sizey][sizex] = { { -6.4591 << 5521          {7.918994e5, 3.030439e6, 2.412611e6, 5.228065e5, 8.542465e3},
6835                                     { 1.46985 << 5522          {-5.421004e5,-2.102672e6,-1.813959e6,-6.251700e5,-1.184348e5},
6836                                     { -1.4351 << 5523          {2.370771e5, 9.459043e5, 9.026235e5, 4.116799e5, 1.001348e5},
6837                                     { 8.66529 << 5524          {-4.227664e4,-1.738756e5,-1.795906e5,-9.292141e4,-2.397528e4}};
6838                                     { -3.3028 << 5525 
6839                                     { 4.95816 << 5526   G4double egs4[sizey][sizex] = {{-1.072763e5,-5.973532e5,-6.151814e5, 7.371898e4, 1.255490e5},
6840                                               << 5527          {2.298769e5, 1.265001e6, 1.252798e6,-2.306276e5,-2.845824e5},
6841     G4double egs3[sizey][sizex] = { { 3.11703 << 5528          {-2.093664e5,-1.100874e6,-1.009313e6, 2.705945e5, 2.506562e5},
6842                                     { -7.3949 << 5529          {1.274613e5, 6.190307e5, 5.262822e5,-1.336039e5,-1.115865e5},
6843                                     { 7.91899 << 5530          {-5.715764e4,-2.560989e5,-2.228781e5,-3.222789e3, 1.575670e4},
6844                                     { -5.4210 << 5531          {1.189447e4, 5.161815e4, 4.870290e4, 1.266808e4, 2.069603e3}};
6845                                     { 2.37077 << 5532 
6846                                     { -4.2276 << 5533   for(i = 0; i < sizey; i++) {
6847                                               << 5534     for(j = 0; j < sizex; j++) {
6848     G4double egs4[sizey][sizex] = { { -1.0727 << 5535       egscof[i][j][0] = egs1[i][j];
6849                                     { 2.29876 << 5536       egscof[i][j][1] = egs2[i][j];
6850                                     { -2.0936 << 5537       egscof[i][j][2] = egs3[i][j];
6851                                     { 1.27461 << 5538       egscof[i][j][3] = egs4[i][j];
6852                                     { -5.7157 << 5539     }
6853                                     { 1.18944 << 5540   }
6854                                               << 5541 
6855     for (i = 0; i < sizey; i++)               << 5542   // the program starts here                                           
6856     {                                         << 5543   if (iz < 19  ||  iz > 111) {
6857         for (j = 0; j < sizex; j++)           << 5544     goto barfit900;
6858         {                                     << 5545   }
6859             egscof[i][j][0] = egs1[i][j];     << 5546 
6860             egscof[i][j][1] = egs2[i][j];     << 5547   if(iz > 102   &&  il > 0) {
6861             egscof[i][j][2] = egs3[i][j];     << 5548     goto barfit902;
6862             egscof[i][j][3] = egs4[i][j];     << 5549   }
6863         }                                     << 5550 
6864     }                                         << 5551   z=G4double(iz);
6865                                               << 5552   a=G4double(ia);
6866     // the program starts here                << 5553   el=G4double(il);
6867     if (iz < 19 || iz > 122)                  << 5554   amin= 1.2e0*z + 0.01e0*z*z;
6868     {                                         << 5555   amax= 5.8e0*z - 0.024e0*z*z;
6869         goto barfit900;                       << 5556 
6870     }                                         << 5557   if(a  <  amin  ||  a  >  amax) {
6871                                               << 5558     goto barfit910;
6872     if (iz > 122 && il > 0)                   << 5559   }
6873     {                                         << 5560 
6874         goto barfit902;                       << 5561   // angul.mom.zero barrier                 
6875     }                                         << 5562   aa=2.5e-3*a;
6876                                               << 5563   zz=1.0e-2*z;
6877     z = G4double(iz);                         << 5564   ell=1.0e-2*el;
6878     a = G4double(ia);                         << 5565   bfis0 = 0.0;
6879     el = G4double(il);                        << 5566   lpoly(zz,7,pz);
6880     amin = 1.2e0 * z + 0.01e0 * z * z;        << 5567   lpoly(aa,7,pa);
6881     amax = 5.8e0 * z - 0.024e0 * z * z;       << 5568 
6882                                               << 5569   for(i = 0; i < 7; i++) { //do 10 i=1,7                                                       
6883     if (a < amin || a > amax)                 << 5570     for(j = 0; j < 7; j++) { //do 10 j=1,7                                                       
6884     {                                         << 5571       bfis0=bfis0+elzcof[j][i]*pz[i]*pa[j];
6885         goto barfit910;                       << 5572     }
6886     }                                         << 5573   }
6887                                               << 5574 
6888     // angul.mom.zero barrier                 << 5575   bfis=bfis0;
6889     aa = 2.5e-3 * a;                          << 5576   
6890     zz = 1.0e-2 * z;                          << 5577   (*sbfis)=bfis;
6891     ell = 1.0e-2 * el;                        << 5578   egs=0.0;
6892     bfis0 = 0.0;                              << 5579   (*segs)=egs;
6893     lpoly(zz, 7, pz);                         << 5580 
6894     lpoly(aa, 7, pa);                         << 5581   // values of l at which the barrier        
6895                                               << 5582   // is 20%(el20) and 80%(el80) of l=0 value    
6896     for (i = 0; i < 7; i++)                   << 5583   amin2 = 1.4e0*z + 0.009e0*z*z;
6897     { // do 10 i=1,7                          << 5584   amax2 = 20.e0 + 3.0e0*z;
6898         for (j = 0; j < 7; j++)               << 5585 
6899         { // do 10 j=1,7                      << 5586   if((a < amin2-5.e0  ||  a > amax2+10.e0) &&  il > 0) {
6900             bfis0 = bfis0 + elzcof[j][i] * pz << 5587     goto barfit920;
6901         }                                     << 5588   }
6902     }                                         << 5589 
6903                                               << 5590   lpoly(zz,5,pz);
6904     bfis = bfis0;                             << 5591   lpoly(aa,4,pa);
6905                                               << 5592   el80=0.0;
6906     (*sbfis) = bfis;                          << 5593   el20=0.0;
6907     egs = 0.0;                                << 5594   elmax=0.0;
6908     (*segs) = egs;                            << 5595 
6909                                               << 5596   for(i = 0; i < 4; i++) {
6910     // values of l at which the barrier       << 5597     for(j = 0; j < 5; j++) {
6911     // is 20%(el20) and 80%(el80) of l=0 valu << 5598             el80 = el80 + elmcof[i][j]*pz[j]*pa[i];
6912     amin2 = 1.4e0 * z + 0.009e0 * z * z;      << 5599             el20 = el20 + emncof[i][j]*pz[j]*pa[i];
6913     amax2 = 20.e0 + 3.0e0 * z;                << 5600     }
6914                                               << 5601   }
6915     if ((a < amin2 - 5.e0 || a > amax2 + 10.e << 5602 
6916     {                                         << 5603   sel80 = el80;
6917         goto barfit920;                       << 5604   sel20 = el20;
6918     }                                         << 5605 
6919                                               << 5606   // value of l (elmax) where barrier disapp.
6920     lpoly(zz, 5, pz);                         << 5607   lpoly(zz,6,pz);
6921     lpoly(aa, 4, pa);                         << 5608   lpoly(ell,9,pl);
6922     el80 = 0.0;                               << 5609 
6923     el20 = 0.0;                               << 5610   for(i = 0; i < 4; i++) { //do 30 i= 1,4                                                      
6924     elmax = 0.0;                              << 5611     for(j = 0; j < 6; j++) { //do 30 j=1,6
6925                                               << 5612       elmax = elmax + emxcof[i][j]*pz[j]*pa[i];
6926     for (i = 0; i < 4; i++)                   << 5613     }
6927     {                                         << 5614   }
6928         for (j = 0; j < 5; j++)               << 5615 
6929         {                                     << 5616   (*selmax)=elmax;
6930             el80 = el80 + elmcof[i][j] * pz[j << 5617 
6931             el20 = el20 + emncof[i][j] * pz[j << 5618   // value of barrier at ang.mom.  l          
6932         }                                     << 5619   if(il < 1){
6933     }                                         << 5620     return;                                                
6934                                               << 5621   }
6935     sel80 = el80;                             << 5622 
6936     sel20 = el20;                             << 5623   x = sel20/(*selmax);
6937                                               << 5624   y = sel80/(*selmax);
6938     // value of l (elmax) where barrier disap << 5625   
6939     lpoly(zz, 6, pz);                         << 5626   if(el <= sel20) {
6940     lpoly(ell, 9, pl);                        << 5627     // low l              
6941                                               << 5628     q = 0.2/(std::pow(sel20,2)*std::pow(sel80,2)*(sel20-sel80));
6942     for (i = 0; i < 4; i++)                   << 5629     qa = q*(4.0*std::pow(sel80,3) - std::pow(sel20,3));
6943     { // do 30 i= 1,4                         << 5630     qb = -q*(4.0*std::pow(sel80,2) - std::pow(sel20,2));
6944         for (j = 0; j < 6; j++)               << 5631     bfis = bfis*(1.0 + qa*std::pow(el,2) + qb*std::pow(el,3));
6945         { // do 30 j=1,6                      << 5632   }
6946             elmax = elmax + emxcof[i][j] * pz << 5633   else {
6947         }                                     << 5634     // high l             
6948     }                                         << 5635     aj = (-20.0*std::pow(x,5) + 25.e0*std::pow(x,4) - 4.0)*std::pow((y-1.0),2)*y*y;
6949                                               << 5636     ak = (-20.0*std::pow(y,5) + 25.0*std::pow(y,4) - 1.0) * std::pow((x-1.0),2)*x*x;
6950     (*selmax) = elmax;                        << 5637     q = 0.2/(std::pow((y-x)*((1.0-x)*(1.0-y)*x*y),2));
6951                                               << 5638     qa = q*(aj*y - ak*x);
6952     // value of barrier at ang.mom.  l        << 5639     qb = -q*(aj*(2.0*y + 1.0) - ak*(2.0*x + 1.0));
6953     if (il < 1)                               << 5640     z = el/(*selmax);
6954     {                                         << 5641     a1 = 4.0*std::pow(z,5) - 5.0*std::pow(z,4) + 1.0;
6955         return;                               << 5642     a2 = qa*(2.e0*z + 1.e0);
6956     }                                         << 5643     bfis=bfis*(a1 + (z - 1.e0)*(a2 + qb*z)*z*z*(z - 1.e0));
6957                                               << 5644   }
6958     x = sel20 / (*selmax);                    << 5645   
6959     y = sel80 / (*selmax);                    << 5646   if(bfis <= 0.0) {
6960                                               << 5647     bfis=0.0;
6961     if (el <= sel20)                          << 5648   }
6962     {                                         << 5649 
6963         // low l                              << 5650   if(el > (*selmax)) {
6964         q = 0.2 / (std::pow(sel20, 2) * std:: << 5651     bfis=0.0;
6965         qa = q * (4.0 * std::pow(sel80, 3) -  << 5652   }
6966         qb = -q * (4.0 * std::pow(sel80, 2) - << 5653   (*sbfis)=bfis;
6967         bfis = bfis * (1.0 + qa * std::pow(el << 5654 
6968     }                                         << 5655   // now calculate rotating ground state energy                        
6969     else                                      << 5656   if(el > (*selmax)) {
6970     {                                         << 5657     return;                                           
6971         // high l                             << 5658   }
6972         aj = (-20.0 * std::pow(x, 5) + 25.e0  << 5659 
6973         ak = (-20.0 * std::pow(y, 5) + 25.0 * << 5660   for(k = 0; k < 4; k++) {
6974         q = 0.2 / (std::pow((y - x) * ((1.0 - << 5661     for(l = 0; l < 6; l++) {
6975         qa = q * (aj * y - ak * x);           << 5662       for(m = 0; m < 5; m++) {
6976         qb = -q * (aj * (2.0 * y + 1.0) - ak  << 5663   egs = egs + egscof[l][m][k]*pz[l]*pa[k]*pl[2*m];
6977         z = el / (*selmax);                   << 5664       }
6978         a1 = 4.0 * std::pow(z, 5) - 5.0 * std << 
6979         a2 = qa * (2.e0 * z + 1.e0);          << 
6980         bfis = bfis * (a1 + (z - 1.e0) * (a2  << 
6981     }                                         << 
6982                                               << 
6983     if (bfis <= 0.0)                          << 
6984     {                                         << 
6985         bfis = 0.0;                           << 
6986     }                                         << 
6987                                               << 
6988     if (el > (*selmax))                       << 
6989     {                                         << 
6990         bfis = 0.0;                           << 
6991     }                                         << 
6992     (*sbfis) = bfis;                          << 
6993                                               << 
6994     // now calculate rotating ground state en << 
6995     if (el > (*selmax))                       << 
6996     {                                         << 
6997         return;                               << 
6998     }                                         << 
6999                                               << 
7000     for (k = 0; k < 4; k++)                   << 
7001     {                                         << 
7002         for (l = 0; l < 6; l++)               << 
7003         {                                     << 
7004             for (m = 0; m < 5; m++)           << 
7005             {                                 << 
7006                 egs = egs + egscof[l][m][k] * << 
7007             }                                 << 
7008         }                                     << 
7009     }                                         << 
7010                                               << 
7011     (*segs) = egs;                            << 
7012     if ((*segs) < 0.0)                        << 
7013     {                                         << 
7014         (*segs) = 0.0;                        << 
7015     }                                         << 
7016                                               << 
7017     return;                                   << 
7018                                               << 
7019 barfit900: // continue                        << 
7020     (*sbfis) = 0.0;                           << 
7021     // for z<19 sbfis set to 1.0e3            << 
7022     if (iz < 19)                              << 
7023     {                                         << 
7024         (*sbfis) = 1.0e3;                     << 
7025     }                                            5665     }
7026     (*segs) = 0.0;                            << 5666   }
7027     (*selmax) = 0.0;                          << 
7028     return;                                   << 
7029                                               << 
7030 barfit902:                                    << 
7031     (*sbfis) = 0.0;                           << 
7032     (*segs) = 0.0;                            << 
7033     (*selmax) = 0.0;                          << 
7034     return;                                   << 
7035                                                  5667 
7036 barfit910:                                    << 5668   (*segs)=egs;
7037     (*sbfis) = 0.0;                           << 5669   if((*segs) < 0.0) {
7038     (*segs) = 0.0;                            << 5670     (*segs)=0.0;
7039     (*selmax) = 0.0;                          << 5671   }
7040     return;                                   << 5672 
7041                                               << 5673   return;                                                            
7042 barfit920:                                    << 5674 
7043     (*sbfis) = 0.0;                           << 5675  barfit900:  //continue                                                          
7044     (*segs) = 0.0;                            << 5676   (*sbfis)=0.0;
7045     (*selmax) = 0.0;                          << 5677   // for z<19 sbfis set to 1.0e3                                            
7046     return;                                   << 5678   if (iz < 19)  {
                                                   >> 5679     (*sbfis) = 1.0e3;
                                                   >> 5680   }
                                                   >> 5681   (*segs)=0.0;
                                                   >> 5682   (*selmax)=0.0;
                                                   >> 5683   return;                                                            
                                                   >> 5684 
                                                   >> 5685  barfit902:
                                                   >> 5686   (*sbfis)=0.0;
                                                   >> 5687   (*segs)=0.0;
                                                   >> 5688   (*selmax)=0.0;
                                                   >> 5689   return;                                                            
                                                   >> 5690 
                                                   >> 5691  barfit910:
                                                   >> 5692   (*sbfis)=0.0;
                                                   >> 5693   (*segs)=0.0;
                                                   >> 5694   (*selmax)=0.0;
                                                   >> 5695   return;                                                           
                                                   >> 5696 
                                                   >> 5697  barfit920:
                                                   >> 5698   (*sbfis)=0.0;
                                                   >> 5699   (*segs)=0.0;
                                                   >> 5700   (*selmax)=0.0;
                                                   >> 5701   return;                                                            
7047 }                                                5702 }
7048                                                  5703 
7049 G4double G4Abla::erf(G4double x)                 5704 G4double G4Abla::erf(G4double x)
7050 {                                                5705 {
7051     G4double ferf;                            << 5706  G4double ferf;
7052                                                  5707 
7053     if (x < 0.)                               << 5708  if(x<0.){
7054     {                                         << 5709    ferf=-gammp(0.5,x*x);
7055         ferf = -gammp(0.5, x * x);            << 5710  }else{
7056     }                                         << 5711    ferf=gammp(0.5,x*x);;
7057     else                                      << 5712  }
7058     {                                         << 5713  return ferf;
7059         ferf = gammp(0.5, x * x);             << 
7060         ;                                     << 
7061     }                                         << 
7062     return ferf;                              << 
7063 }                                                5714 }
7064                                                  5715 
7065 G4double G4Abla::gammp(G4double a, G4double x    5716 G4double G4Abla::gammp(G4double a, G4double x)
7066 {                                                5717 {
7067     G4double fgammp;                          << 5718  G4double fgammp;
7068     G4double gammcf, gamser, gln = 0.;        << 5719  G4double gammcf,gamser,gln=0.;
7069                                               << 
7070     if (x < 0.0 || a <= 0.0)                  << 
7071         std::cout << "G4Abla::gammp = bad arg << 
7072     if (x < a + 1.)                           << 
7073     {                                         << 
7074         gser(&gamser, a, x, gln);             << 
7075         fgammp = gamser;                      << 
7076     }                                         << 
7077     else                                      << 
7078     {                                         << 
7079         gcf(&gammcf, a, x, gln);              << 
7080         fgammp = 1. - gammcf;                 << 
7081     }                                         << 
7082     return fgammp;                            << 
7083 }                                             << 
7084                                               << 
7085 void G4Abla::gcf(G4double* gammcf, G4double a << 
7086 {                                             << 
7087     G4double fgammcf, del;                    << 
7088     G4double eps = 3e-7;                      << 
7089     G4double fpmin = 1e-30;                   << 
7090     G4int itmax = 100;                        << 
7091     G4double an, b, c, d, h;                  << 
7092                                               << 
7093     gln = gammln(a);                          << 
7094     b = x + 1. - a;                           << 
7095     c = 1. / fpmin;                           << 
7096     d = 1. / b;                               << 
7097     h = d;                                    << 
7098     for (G4int i = 1; i <= itmax; i++)        << 
7099     {                                         << 
7100         an = -i * (i - a);                    << 
7101         b = b + 2.;                           << 
7102         d = an * d + b;                       << 
7103         if (std::fabs(d) < fpmin)             << 
7104             d = fpmin;                        << 
7105         c = b + an / c;                       << 
7106         if (std::fabs(c) < fpmin)             << 
7107             c = fpmin;                        << 
7108         d = 1.0 / d;                          << 
7109         del = d * c;                          << 
7110         h = h * del;                          << 
7111         if (std::fabs(del - 1.) < eps)        << 
7112             goto dir1;                        << 
7113     }                                         << 
7114     std::cout << "a too large, ITMAX too smal << 
7115 dir1:                                         << 
7116     fgammcf = std::exp(-x + a * std::log(x) - << 
7117     (*gammcf) = fgammcf;                      << 
7118     return;                                   << 
7119 }                                             << 
7120                                                  5720 
7121 void G4Abla::gser(G4double* gamser, G4double  << 5721  if(x<0.0 || a<=0.0)std::cout << "G4Abla::gammp = bad arguments in gammp" << std::endl;
7122 {                                             << 5722  if(x<a+1.){
7123     G4double fgamser, ap, sum, del;           << 5723   gser(&gamser,a,x,gln);
7124     G4double eps = 3e-7;                      << 5724   fgammp=gamser;
7125     G4int itmax = 100;                        << 5725  }else{
7126                                               << 5726   gcf(&gammcf,a,x,gln);
7127     gln = gammln(a);                          << 5727   fgammp=1.-gammcf;
7128     if (x <= 0.)                              << 5728  }
7129     {                                         << 5729  return fgammp;
7130         if (x < 0.)                           << 5730 }
7131             std::cout << "G4Abla::gser = x <  << 5731 
7132         (*gamser) = 0.0;                      << 5732 void G4Abla::gcf(G4double *gammcf,G4double a,G4double x,G4double gln)
7133         return;                               << 5733 {
7134     }                                         << 5734  G4double fgammcf,del;
7135     ap = a;                                   << 5735  G4double eps=3e-7;
7136     sum = 1. / a;                             << 5736  G4double fpmin=1e-30;
7137     del = sum;                                << 5737  G4int itmax=100;
7138     for (G4int n = 0; n < itmax; n++)         << 5738  G4double an,b,c,d,h;
7139     {                                         << 5739 
7140         ap = ap + 1.;                         << 5740  gln=gammln(a);
7141         del = del * x / ap;                   << 5741  b=x+1.-a;
7142         sum = sum + del;                      << 5742  c=1./fpmin;
7143         if (std::fabs(del) < std::fabs(sum) * << 5743  d=1./b;
7144             goto dir1;                        << 5744  h=d;
7145     }                                         << 5745  for(G4int i=1;i<=itmax;i++){
7146     std::cout << "a too large, ITMAX too smal << 5746   an=-i*(i-a);
7147 dir1:                                         << 5747   b=b+2.;
7148     fgamser = sum * std::exp(-x + a * std::lo << 5748   d=an*d+b;
7149     (*gamser) = fgamser;                      << 5749   if(std::fabs(d)<fpmin)d=fpmin;
7150     return;                                   << 5750   c=b+an/c;
                                                   >> 5751   if(std::fabs(c)<fpmin)c=fpmin;
                                                   >> 5752   d=1.0/d;
                                                   >> 5753   del=d*c;
                                                   >> 5754   h=h*del;
                                                   >> 5755   if(std::fabs(del-1.)<eps)goto dir1;
                                                   >> 5756  }
                                                   >> 5757  std::cout << "a too large, ITMAX too small in gcf" << std::endl;
                                                   >> 5758  dir1:
                                                   >> 5759  fgammcf=std::exp(-x+a*std::log(x)-gln)*h;
                                                   >> 5760  (*gammcf)=fgammcf;
                                                   >> 5761  return;
                                                   >> 5762 }
                                                   >> 5763 
                                                   >> 5764 void G4Abla::gser(G4double *gamser,G4double a,G4double x,G4double gln)
                                                   >> 5765 {
                                                   >> 5766  G4double fgamser,ap,sum,del;
                                                   >> 5767  G4double eps=3e-7;
                                                   >> 5768  G4int itmax=100;
                                                   >> 5769 
                                                   >> 5770  gln=gammln(a);
                                                   >> 5771  if(x<=0.){
                                                   >> 5772    if(x<0.)std::cout << "G4Abla::gser = x < 0 in gser" << std::endl;
                                                   >> 5773    (*gamser)=0.0;
                                                   >> 5774    return;
                                                   >> 5775  }
                                                   >> 5776  ap=a;
                                                   >> 5777  sum=1./a;
                                                   >> 5778  del=sum;
                                                   >> 5779  for(G4int n=0;n<itmax;n++){
                                                   >> 5780  ap=ap+1.;
                                                   >> 5781  del=del*x/ap;
                                                   >> 5782  sum=sum+del;
                                                   >> 5783  if(std::fabs(del)<std::fabs(sum)*eps)goto dir1;
                                                   >> 5784  }
                                                   >> 5785  std::cout << "a too large, ITMAX too small in gser" << std::endl;
                                                   >> 5786  dir1:
                                                   >> 5787  fgamser=sum*std::exp(-x+a*std::log(x)-gln);
                                                   >> 5788  (*gamser)=fgamser;
                                                   >> 5789  return;
7151 }                                                5790 }
7152                                                  5791 
7153 G4double G4Abla::gammln(G4double xx)             5792 G4double G4Abla::gammln(G4double xx)
7154 {                                                5793 {
7155     G4double fgammln, x, ser, tmp, y;         << 5794  G4double fgammln,x,ser,tmp,y;
7156     G4double cof[6] = { 76.18009172947146,  - << 5795  G4double cof[6]={76.18009172947146,-86.50532032941677,24.01409824083091,
7157                         -1.231739572450155, 0 << 5796 -1.231739572450155,0.1208650973866179e-2,-0.5395239384953e-5};
7158     G4double stp = 2.5066282746310005;        << 5797  G4double stp=2.5066282746310005;
7159                                               << 5798 
7160     x = xx;                                   << 5799  x=xx;
7161     y = x;                                    << 5800  y=x;
7162     tmp = x + 5.5;                            << 5801  tmp=x+5.5;
7163     tmp = (x + 0.5) * std::log(tmp) - tmp;    << 5802  tmp=(x+0.5)*std::log(tmp)-tmp;
7164     ser = 1.000000000190015;                  << 5803  ser=1.000000000190015;
7165     for (G4int j = 0; j < 6; j++)             << 5804  for(G4int j=0;j<6;j++){
7166     {                                         << 5805  y=y+1.;
7167         y = y + 1.;                           << 5806  ser=ser+cof[j]/y;
7168         ser = ser + cof[j] / y;               << 5807  }
7169     }                                         << 
7170                                                  5808 
7171     return fgammln = tmp + std::log(stp * ser << 5809  return fgammln=tmp+std::log(stp*ser/x);
7172 }                                                5810 }
7173                                                  5811 
                                                   >> 5812 
7174 G4double G4Abla::fd(G4double E)                  5813 G4double G4Abla::fd(G4double E)
7175 {                                                5814 {
7176     // DISTRIBUTION DE MAXWELL                << 5815   // DISTRIBUTION DE MAXWELL
7177                                                  5816 
7178     return (E * std::exp(-E));                << 5817   return (E*std::exp(-E));
7179 }                                                5818 }
7180                                                  5819 
7181 G4double G4Abla::f(G4double E)                   5820 G4double G4Abla::f(G4double E)
7182 {                                                5821 {
7183     // FONCTION INTEGRALE DE FD(E)            << 5822   // FONCTION INTEGRALE DE FD(E)
7184     return (1.0 - (E + 1.0) * std::exp(-E));  << 5823   return (1.0 - (E + 1.0) * std::exp(-E));
7185 }                                                5824 }
7186                                                  5825 
7187 G4double G4Abla::fmaxhaz(G4double x)             5826 G4double G4Abla::fmaxhaz(G4double x)
7188 {                                                5827 {
7189     return (-x * std::log(G4AblaRandom::flat( << 5828  return ( -x*std::log(G4AblaRandom::flat()) -x*std::log(G4AblaRandom::flat()) -x*std::log(G4AblaRandom::flat()) ) ;
7190             x * std::log(G4AblaRandom::flat() << 
7191 }                                                5829 }
7192                                                  5830 
7193 G4double G4Abla::fmaxhaz_old(G4double T)         5831 G4double G4Abla::fmaxhaz_old(G4double T)
7194 {                                                5832 {
7195     // tirage aleatoire dans une maxwellienne << 5833   // tirage aleatoire dans une maxwellienne
7196     // t : temperature                        << 5834   // t : temperature
7197     //                                        << 5835   //
7198     // declaration des variables              << 5836   // declaration des variables
7199     //                                        << 5837   //
7200                                               << 5838 
7201     const G4int pSize = 101;                  << 5839   const G4int pSize = 101;
7202     G4double p[pSize];                        << 5840   G4double p[pSize];
7203                                               << 5841 
7204     // ial generateur pour le cascade (et les << 5842   // ial generateur pour le cascade (et les iy pour eviter les correlations)
7205     G4int i = 0;                              << 5843   G4int i = 0;
7206     G4int itest = 0;                          << 5844   G4int itest = 0;
7207     // programme principal                    << 5845   // programme principal
7208                                               << 5846 
7209     // calcul des p(i) par approximation de n << 5847   // calcul des p(i) par approximation de newton
7210     p[pSize - 1] = 8.0;                       << 5848   p[pSize-1] = 8.0;
7211     G4double x = 0.1;                         << 5849   G4double x = 0.1;
7212     G4double x1 = 0.0;                        << 5850   G4double x1 = 0.0;
7213     G4double y = 0.0;                         << 5851   G4double y = 0.0;
7214                                               << 5852 
7215     if (itest == 1)                           << 5853   if (itest == 1) {
7216     {                                         << 5854     goto fmaxhaz120;
7217         goto fmaxhaz120;                      << 5855   }
7218     }                                         << 5856 
7219                                               << 5857   for(i = 1; i <= 99; i++) {
7220     for (i = 1; i <= 99; i++)                 << 5858   fmaxhaz20:
7221     {                                         << 5859     x1 = x - (f(x) - G4double(i)/100.0)/fd(x);
7222     fmaxhaz20:                                << 5860     x = x1;
7223         x1 = x - (f(x) - G4double(i) / 100.0) << 5861     if (std::fabs(f(x) - G4double(i)/100.0) < 1e-5) {
7224         x = x1;                               << 5862       goto fmaxhaz100;
7225         if (std::fabs(f(x) - G4double(i) / 10 << 5863     }
7226         {                                     << 5864     goto fmaxhaz20;
7227             goto fmaxhaz100;                  << 5865   fmaxhaz100:
7228         }                                     << 5866     p[i] = x;
7229         goto fmaxhaz20;                       << 5867   } //end do
7230     fmaxhaz100:                               << 5868 
7231         p[i] = x;                             << 5869   //  itest = 1;
7232     } // end do                               << 5870   itest = 0;
7233                                               << 5871   // tirage aleatoire et calcul du x correspondant 
7234     //  itest = 1;                            << 5872   // par regression lineaire
7235     itest = 0;                                << 5873  fmaxhaz120:
7236     // tirage aleatoire et calcul du x corres << 
7237     // par regression lineaire                << 
7238 fmaxhaz120:                                   << 
7239     y = G4AblaRandom::flat();                    5874     y = G4AblaRandom::flat();
7240     i = nint(y * 100);                        << 5875   i = nint(y*100);
7241                                                  5876 
7242     //   2590 c ici on evite froidement les d << 5877   //   2590 c ici on evite froidement les depassements de tableaux....(a.b. 3/9/99)        
7243     //   3/9/99)                              << 5878   if(i == 0) {
7244     if (i == 0)                               << 5879     goto fmaxhaz120;
7245     {                                         << 5880   }
7246         goto fmaxhaz120;                      << 5881 
7247     }                                         << 5882   if (i == 1) {
7248                                               << 5883     x = p[i]*y*100;
7249     if (i == 1)                               << 5884   }
7250     {                                         << 5885   else {
7251         x = p[i] * y * 100;                   << 5886     x = (p[i] - p[i-1])*(y*100 - i) + p[i];
7252     }                                         << 5887   }
7253     else                                      << 5888 
7254     {                                         << 5889   return(x*T);
7255         x = (p[i] - p[i - 1]) * (y * 100 - i) << 5890 }
7256     }                                         << 5891 
7257                                               << 5892 G4double G4Abla::pace2(G4double a, G4double z)
7258     return (x * T);                           << 5893 {
7259 }                                             << 5894   // PACE2
7260                                               << 5895   // Cette fonction retourne le defaut de masse du noyau A,Z en MeV
7261 void G4Abla::guet(G4double* x_par, G4double*  << 5896   // Revisee pour a, z flottants 25/4/2002                         =
7262 {                                             << 5897 
7263     // TABLE DE MASSES ET FORMULE DE MASSE TI << 5898   G4double fpace2 = 0.0;
7264     // Gives the theoritical value for mass e << 5899 
7265     // Revisee pour x, z flottants 25/4/2002  << 5900   G4int ii = idint(a+0.5);
7266                                               << 5901   G4int jj = idint(z+0.5);
7267     // real*8 x,z                             << 5902 
7268     //  dimension q(0:50,0:70)                << 5903   if(ii <= 0 || jj < 0) {
7269     G4double x = (*x_par);                    << 5904     fpace2=0.;
7270     G4double z = (*z_par);                    << 5905     return fpace2;
7271     G4double find = (*find_par);              << 5906   }
7272                                               << 5907 
7273     const G4int qrows = 50;                   << 5908   if(jj > 300) {
7274     const G4int qcols = 70;                   << 5909     fpace2=0.0;
7275     G4double q[qrows][qcols];                 << 5910   }
7276     for (G4int init_i = 0; init_i < qrows; in << 5911   else {
7277     {                                         << 5912     fpace2=pace->dm[ii][jj];
7278         for (G4int init_j = 0; init_j < qcols << 5913   }
7279         {                                     << 5914   fpace2=fpace2/1000.;
7280             q[init_i][init_j] = 0.0;          << 5915 
7281         }                                     << 5916   if(pace->dm[ii][jj] == 0.) {
7282     }                                         << 5917     if(ii < 12) {
7283                                               << 5918       fpace2=-500.;
7284     G4int ix = G4int(std::floor(x + 0.5));    << 5919     }
7285     G4int iz = G4int(std::floor(z + 0.5));    << 5920     else {
7286     G4double zz = iz;                         << 5921       guet(&a, &z, &fpace2);
7287     G4double xx = ix;                         << 5922       fpace2=fpace2-ii*931.5;
7288     find = 0.0;                               << 5923       fpace2=fpace2/1000.;
7289     G4double avol = 15.776;                   << 5924     }
7290     G4double asur = -17.22;                   << 5925   }
7291     G4double ac = -10.24;                     << 5926 
7292     G4double azer = 8.0;                      << 5927   return fpace2;
7293     G4double xjj = -30.03;                    << 5928 }
7294     G4double qq = -35.4;                      << 5929 
7295     G4double c1 = -0.737;                     << 5930 void G4Abla::guet(G4double *x_par, G4double *z_par, G4double *find_par)
7296     G4double c2 = 1.28;                       << 5931 {
7297                                               << 5932   // TABLE DE MASSES ET FORMULE DE MASSE TIRE DU PAPIER DE BRACK-GUET
7298     if (ix <= 7)                              << 5933   // Gives the theoritical value for mass excess...
7299     {                                         << 5934   // Revisee pour x, z flottants 25/4/2002
7300         q[0][1] = 939.50;                     << 5935 
7301         q[1][1] = 938.21;                     << 5936   //real*8 x,z
7302         q[1][2] = 1876.1;                     << 5937   //  dimension q(0:50,0:70)
7303         q[1][3] = 2809.39;                    << 5938   G4double x = (*x_par);
7304         q[2][4] = 3728.34;                    << 5939   G4double z = (*z_par);
7305         q[2][3] = 2809.4;                     << 5940   G4double find = (*find_par);
7306         q[2][5] = 4668.8;                     << 5941 
7307         q[2][6] = 5606.5;                     << 5942   const G4int qrows = 50;
7308         q[3][5] = 4669.1;                     << 5943   const G4int qcols = 70;
7309         q[3][6] = 5602.9;                     << 5944   G4double q[qrows][qcols];
7310         q[3][7] = 6535.27;                    << 5945   for(G4int init_i = 0; init_i < qrows; init_i++) {
7311         q[4][6] = 5607.3;                     << 5946     for(G4int init_j = 0; init_j < qcols; init_j++) {
7312         q[4][7] = 6536.1;                     << 5947       q[init_i][init_j] = 0.0;
7313         q[5][7] = 6548.3;                     << 5948     }
7314         find = q[iz][ix];                     << 5949   }
7315     }                                         << 5950 
7316     else                                      << 5951   G4int ix=G4int(std::floor(x+0.5));
7317     {                                         << 5952   G4int iz=G4int(std::floor(z+0.5));
7318         G4double xneu = xx - zz;              << 5953   G4double zz = iz;
7319         G4double si = (xneu - zz) / xx;       << 5954   G4double xx = ix;
7320         G4double x13 = std::pow(xx, .333);    << 5955   find = 0.0;
7321         G4double ee1 = c1 * zz * zz / x13;    << 5956   G4double avol = 15.776;
7322         G4double ee2 = c2 * zz * zz / xx;     << 5957   G4double asur = -17.22;
7323         G4double aux = 1. + (9. * xjj / 4. /  << 5958   G4double ac = -10.24;
7324         G4double ee3 = xjj * xx * si * si / a << 5959   G4double azer = 8.0;
7325         G4double ee4 = avol * xx + asur * (st << 5960   G4double xjj = -30.03;
7326         G4double tota = ee1 + ee2 + ee3 + ee4 << 5961   G4double qq = -35.4;
7327         find = 939.55 * xneu + 938.77 * zz -  << 5962   G4double c1 = -0.737;
7328     }                                         << 5963   G4double c2 = 1.28;
7329                                               << 5964 
7330     (*x_par) = x;                             << 5965   if(ix <= 7) {
7331     (*z_par) = z;                             << 5966     q[0][1]=939.50;
7332     (*find_par) = find;                       << 5967     q[1][1]=938.21;
                                                   >> 5968     q[1][2]=1876.1;
                                                   >> 5969     q[1][3]=2809.39;
                                                   >> 5970     q[2][4]=3728.34;
                                                   >> 5971     q[2][3]=2809.4;
                                                   >> 5972     q[2][5]=4668.8;
                                                   >> 5973     q[2][6]=5606.5;
                                                   >> 5974     q[3][5]=4669.1;
                                                   >> 5975     q[3][6]=5602.9;
                                                   >> 5976     q[3][7]=6535.27;
                                                   >> 5977     q[4][6]=5607.3;
                                                   >> 5978     q[4][7]=6536.1;
                                                   >> 5979     q[5][7]=6548.3;
                                                   >> 5980     find=q[iz][ix];
                                                   >> 5981   }
                                                   >> 5982   else {
                                                   >> 5983     G4double xneu=xx-zz;
                                                   >> 5984     G4double si=(xneu-zz)/xx;
                                                   >> 5985     G4double x13=std::pow(xx,.333);
                                                   >> 5986     G4double ee1=c1*zz*zz/x13;
                                                   >> 5987     G4double ee2=c2*zz*zz/xx;
                                                   >> 5988     G4double aux=1.+(9.*xjj/4./qq/x13);
                                                   >> 5989     G4double ee3=xjj*xx*si*si/aux;
                                                   >> 5990     G4double ee4=avol*xx+asur*(std::pow(xx,.666))+ac*x13+azer;
                                                   >> 5991     G4double tota = ee1 + ee2 + ee3 + ee4;
                                                   >> 5992     find = 939.55*xneu+938.77*zz - tota;
                                                   >> 5993   }
                                                   >> 5994 
                                                   >> 5995   (*x_par) = x;
                                                   >> 5996   (*z_par) = z;
                                                   >> 5997   (*find_par) = find;
7333 }                                                5998 }
7334 //                                               5999 //
7335                                                  6000 
7336 void G4Abla::FillData(G4int IMULTBU, G4int IE << 6001 void G4Abla::FillData(G4int IMULTBU,G4int IEV_TAB){
7337 {                                             << 
7338                                                  6002 
7339     const G4double c = 29.9792458;               6003     const G4double c = 29.9792458;
7340     const G4double fmp = 938.27231, fmn = 939 << 6004     const G4double fmp = 938.27231,fmn=939.56563,fml=1115.683; 
7341                                                  6005 
7342     varntp->ntrack = IMULTBU + IEV_TAB;          6006     varntp->ntrack = IMULTBU + IEV_TAB;
7343                                                  6007 
7344     for (G4int i = 0; i < IMULTBU; i++)       << 6008     G4int intp=0;
7345     {                                         << 
7346                                                  6009 
7347         G4int iz = nint(BU_TAB[i][7]);        << 6010     for(G4int i=0;i<IMULTBU;i++){
7348         G4int ia = nint(BU_TAB[i][8]);        << 6011  
7349         G4int is = nint(BU_TAB[i][11]);       << 6012     G4int iz = nint(BU_TAB[i][7]);
7350                                               << 6013     G4int ia = nint(BU_TAB[i][8]);
7351         Ainit = Ainit + ia;                   << 6014     G4int is = nint(BU_TAB[i][11]);
7352         Zinit = Zinit + iz;                   << 6015 
7353         Sinit = Sinit - is;                   << 6016     Ainit = Ainit + ia;
7354                                               << 6017     Zinit = Zinit + iz;
7355         varntp->zvv.push_back(iz);            << 6018     Sinit = Sinit - is;
7356         varntp->avv.push_back(ia);            << 6019 
7357         varntp->svv.push_back(-1 * is);       << 6020     varntp->zvv[intp] = iz;
7358         varntp->itypcasc.push_back(0);        << 6021     varntp->avv[intp] = ia;
7359                                               << 6022     varntp->svv[intp] = -1*is;
7360         G4double v2 = BU_TAB[i][4] * BU_TAB[i << 6023     varntp->itypcasc[intp] = 0;
7361         G4double gamma = std::sqrt(1.0 - v2 / << 6024 
7362         G4double avvmass = iz * fmp + (ia - i << 6025     G4double v2 = BU_TAB[i][4]*BU_TAB[i][4]+BU_TAB[i][5]*BU_TAB[i][5]+BU_TAB[i][6]*BU_TAB[i][6];
7363         G4double etot = avvmass / gamma;      << 6026     G4double gamma = std::sqrt(1.0 - v2 / (c*c));
7364         varntp->pxlab.push_back(etot * BU_TAB << 6027     G4double avvmass = iz*fmp + (ia-iz-is)*fmn + is*fml + eflmac(ia,iz,0,3);
7365         varntp->pylab.push_back(etot * BU_TAB << 6028     G4double etot = avvmass / gamma;
7366         varntp->pzlab.push_back(etot * BU_TAB << 6029     varntp->pxlab[intp] = etot * BU_TAB[i][4] / c;
7367         varntp->enerj.push_back(etot - avvmas << 6030     varntp->pylab[intp] = etot * BU_TAB[i][5] / c;
7368     }                                         << 6031     varntp->pzlab[intp] = etot * BU_TAB[i][6] / c;
7369                                               << 6032     varntp->enerj[intp] = etot - avvmass;
7370     for (G4int i = 0; i < IEV_TAB; i++)       << 6033     intp++;
7371     {                                         << 6034     }
7372                                               << 6035 
7373         G4int iz = nint(EV_TAB[i][0]);        << 6036 
7374         G4int ia = nint(EV_TAB[i][1]);        << 6037     for(G4int i=0;i<IEV_TAB;i++){
7375         G4int is = EV_TAB[i][5];              << 6038  
7376                                               << 6039     G4int iz = nint(EV_TAB[i][0]);
7377         varntp->itypcasc.push_back(0);        << 6040     G4int ia = nint(EV_TAB[i][1]);
7378                                               << 6041     G4int is = EV_TAB[i][5];
7379         if (ia > 0)                           << 6042 
7380         { // normal particles                 << 6043     varntp->itypcasc[intp] = 0;
7381             varntp->zvv.push_back(iz);        << 6044 
7382             varntp->avv.push_back(ia);        << 6045      if(ia>0){// normal particles
7383             varntp->svv.push_back(-1 * is);   << 6046      varntp->zvv[intp] = iz;
7384             Ainit = Ainit + ia;               << 6047      varntp->avv[intp] = ia;
7385             Zinit = Zinit + iz;               << 6048      varntp->svv[intp] = -1*is;
7386             Sinit = Sinit - is;               << 6049      Ainit = Ainit + ia;
7387             G4double v2 = EV_TAB[i][2] * EV_T << 6050      Zinit = Zinit + iz;
7388             G4double gamma = std::sqrt(1.0 -  << 6051      Sinit = Sinit - is;
7389             G4double avvmass = iz * fmp + (ia << 6052      G4double v2 = EV_TAB[i][2]*EV_TAB[i][2]+EV_TAB[i][3]*EV_TAB[i][3]+EV_TAB[i][4]*EV_TAB[i][4];
7390             G4double etot = avvmass / gamma;  << 6053      G4double gamma = std::sqrt(1.0 - v2 / (c*c));
7391             varntp->pxlab.push_back(etot * EV << 6054      G4double avvmass = iz*fmp + (ia-iz-is)*fmn + is*fml + eflmac(ia,iz,0,3);
7392             varntp->pylab.push_back(etot * EV << 6055      G4double etot = avvmass / gamma;
7393             varntp->pzlab.push_back(etot * EV << 6056      varntp->pxlab[intp] = etot * EV_TAB[i][2] / c;
7394             varntp->enerj.push_back(etot - av << 6057      varntp->pylab[intp] = etot * EV_TAB[i][3] / c;
7395         }                                     << 6058      varntp->pzlab[intp] = etot * EV_TAB[i][4] / c;
7396         else if (ia == -2)                    << 6059      varntp->enerj[intp] = etot - avvmass;
7397         { // lambda0                          << 6060      }else if(ia==-2){// lambda0
7398             varntp->zvv.push_back(0);         << 6061      varntp->zvv[intp] = 0;
7399             varntp->avv.push_back(1);         << 6062      varntp->avv[intp] = 1;
7400             varntp->svv.push_back(-1);        << 6063      varntp->svv[intp] = -1;
7401             Ainit = Ainit + 1;                << 6064      Ainit = Ainit + 1;
7402             Sinit = Sinit - 1;                << 6065      Sinit = Sinit - 1;
7403             G4double v2 = EV_TAB[i][2] * EV_T << 6066      G4double v2 = EV_TAB[i][2]*EV_TAB[i][2]+EV_TAB[i][3]*EV_TAB[i][3]+EV_TAB[i][4]*EV_TAB[i][4];
7404             G4double gamma = std::sqrt(1.0 -  << 6067      G4double gamma = std::sqrt(1.0 - v2 / (c*c));
7405             G4double avvmass = fml;           << 6068      G4double avvmass = fml;
7406             G4double etot = avvmass / gamma;  << 6069      G4double etot = avvmass / gamma;
7407             varntp->pxlab.push_back(etot * EV << 6070      varntp->pxlab[intp] = etot * EV_TAB[i][2] / c;
7408             varntp->pylab.push_back(etot * EV << 6071      varntp->pylab[intp] = etot * EV_TAB[i][3] / c;
7409             varntp->pzlab.push_back(etot * EV << 6072      varntp->pzlab[intp] = etot * EV_TAB[i][4] / c;
7410             varntp->enerj.push_back(etot - av << 6073      varntp->enerj[intp] = etot - avvmass;
7411         }                                     << 6074      }else{// photons
7412         else                                  << 6075      varntp->zvv[intp] = iz;
7413         { // photons                          << 6076      varntp->avv[intp] = ia;
7414             varntp->zvv.push_back(iz);        << 6077      varntp->svv[intp] = 0;
7415             varntp->avv.push_back(ia);        << 6078      Ainit = Ainit + ia;
7416             varntp->svv.push_back(0);         << 6079      Zinit = Zinit + iz;
7417             Ainit = Ainit + ia;               << 6080      Sinit = Sinit - is;
7418             Zinit = Zinit + iz;               << 6081      varntp->pxlab[intp] = EV_TAB[i][2];
7419             Sinit = Sinit - is;               << 6082      varntp->pylab[intp] = EV_TAB[i][3];
7420             varntp->pxlab.push_back(EV_TAB[i] << 6083      varntp->pzlab[intp] = EV_TAB[i][4];
7421             varntp->pylab.push_back(EV_TAB[i] << 6084      varntp->enerj[intp] = std::sqrt(EV_TAB[i][2]*EV_TAB[i][2]+EV_TAB[i][3]*EV_TAB[i][3]+EV_TAB[i][4]*EV_TAB[i][4]);
7422             varntp->pzlab.push_back(EV_TAB[i] << 6085      }
7423             varntp->enerj.push_back(          << 6086     intp++;
7424                 std::sqrt(EV_TAB[i][2] * EV_T << 
7425         }                                     << 
7426     }                                            6087     }
7427     //                                        << 6088 // 
7428     return;                                   << 6089  return;
7429 }                                                6090 }
7430                                                  6091 
7431 // Utilities                                     6092 // Utilities
7432                                                  6093 
7433 G4double G4Abla::min(G4double a, G4double b)     6094 G4double G4Abla::min(G4double a, G4double b)
7434 {                                                6095 {
7435     if (a < b)                                << 6096   if(a < b) {
7436     {                                         << 6097     return a;
7437         return a;                             << 6098   }
7438     }                                         << 6099   else {
7439     else                                      << 6100     return b;
7440     {                                         << 6101   }
7441         return b;                             << 
7442     }                                         << 
7443 }                                                6102 }
7444                                                  6103 
7445 G4int G4Abla::min(G4int a, G4int b)              6104 G4int G4Abla::min(G4int a, G4int b)
7446 {                                                6105 {
7447     if (a < b)                                << 6106   if(a < b) {
7448     {                                         << 6107     return a;
7449         return a;                             << 6108   }
7450     }                                         << 6109   else {
7451     else                                      << 6110     return b;
7452     {                                         << 6111   }
7453         return b;                             << 
7454     }                                         << 
7455 }                                                6112 }
7456                                                  6113 
7457 G4double G4Abla::max(G4double a, G4double b)     6114 G4double G4Abla::max(G4double a, G4double b)
7458 {                                                6115 {
7459     if (a > b)                                << 6116   if(a > b) {
7460     {                                         << 6117     return a;
7461         return a;                             << 6118   }
7462     }                                         << 6119   else {
7463     else                                      << 6120     return b;
7464     {                                         << 6121   }
7465         return b;                             << 
7466     }                                         << 
7467 }                                                6122 }
7468                                                  6123 
7469 G4int G4Abla::max(G4int a, G4int b)              6124 G4int G4Abla::max(G4int a, G4int b)
7470 {                                                6125 {
7471     if (a > b)                                << 6126   if(a > b) {
7472     {                                         << 6127     return a;
7473         return a;                             << 6128   }
7474     }                                         << 6129   else {
7475     else                                      << 6130     return b;
7476     {                                         << 6131   }
7477         return b;                             << 6132 }
7478     }                                         << 6133 
                                                   >> 6134 G4double G4Abla::DSIGN(G4double a, G4double b){
                                                   >> 6135 // A function that assigns the sign of the second argument to the
                                                   >> 6136 // absolute value of the first
                                                   >> 6137 
                                                   >> 6138  if(b>=0){ 
                                                   >> 6139   return std::abs(a);
                                                   >> 6140  }else{
                                                   >> 6141   return -1.0*std::abs(a);
                                                   >> 6142  }
                                                   >> 6143  return 0;
                                                   >> 6144 }
                                                   >> 6145 
                                                   >> 6146 G4int G4Abla::ISIGN(G4int a, G4int b){
                                                   >> 6147 // A function that assigns the sign of the second argument to the
                                                   >> 6148 // absolute value of the first
                                                   >> 6149 
                                                   >> 6150  if(b>=0){ 
                                                   >> 6151   return std::abs(a);
                                                   >> 6152  }else{
                                                   >> 6153   return -1*std::abs(a);
                                                   >> 6154  }
                                                   >> 6155  return 0;
7479 }                                                6156 }
7480                                                  6157 
7481 G4double G4Abla::DSIGN(G4double a, G4double b << 6158 G4int G4Abla::nint(G4double number)
7482 {                                                6159 {
7483     // A function that assigns the sign of th << 6160   G4double intpart = 0.0;
7484     // absolute value of the first            << 6161   G4double fractpart = 0.0;
7485                                               << 6162   fractpart = std::modf(number, &intpart);
7486     if (b >= 0)                               << 6163   if(number == 0) {
7487     {                                         << 
7488         return std::abs(a);                   << 
7489     }                                         << 
7490     else                                      << 
7491     {                                         << 
7492         return -1.0 * std::abs(a);            << 
7493     }                                         << 
7494     return 0;                                    6164     return 0;
7495 }                                             << 6165   }
7496                                               << 6166   if(number > 0) {
7497 G4int G4Abla::ISIGN(G4int a, G4int b)         << 6167     if(fractpart < 0.5) {
7498 {                                             << 6168       return G4int(std::floor(number));
7499     // A function that assigns the sign of th << 
7500     // absolute value of the first            << 
7501                                               << 
7502     if (b >= 0)                               << 
7503     {                                         << 
7504         return std::abs(a);                   << 
7505     }                                         << 
7506     else                                      << 
7507     {                                         << 
7508         return -1 * std::abs(a);              << 
7509     }                                            6169     }
7510     return 0;                                 << 6170     else {
7511 }                                             << 6171       return G4int(std::ceil(number));
7512                                               << 
7513 G4int G4Abla::nint(G4double number)           << 
7514 {                                             << 
7515     G4double intpart = 0.0;                   << 
7516     G4double fractpart = 0.0;                 << 
7517     fractpart = std::modf(number, &intpart);  << 
7518     if (number == 0)                          << 
7519     {                                         << 
7520         return 0;                             << 
7521     }                                         << 
7522     if (number > 0)                           << 
7523     {                                         << 
7524         if (fractpart < 0.5)                  << 
7525         {                                     << 
7526             return G4int(std::floor(number)); << 
7527         }                                     << 
7528         else                                  << 
7529         {                                     << 
7530             return G4int(std::ceil(number));  << 
7531         }                                     << 
7532     }                                            6172     }
7533     if (number < 0)                           << 6173   }
7534     {                                         << 6174   if(number < 0) {
7535         if (fractpart < -0.5)                 << 6175     if(fractpart < -0.5) {
7536         {                                     << 6176       return G4int(std::floor(number));
7537             return G4int(std::floor(number)); << 6177     }
7538         }                                     << 6178     else {
7539         else                                  << 6179       return G4int(std::ceil(number));
7540         {                                     << 
7541             return G4int(std::ceil(number));  << 
7542         }                                     << 
7543     }                                            6180     }
                                                   >> 6181   }
7544                                                  6182 
7545     return G4int(std::floor(number));         << 6183   return G4int(std::floor(number));
7546 }                                                6184 }
7547                                                  6185 
7548 G4int G4Abla::secnds(G4int x)                    6186 G4int G4Abla::secnds(G4int x)
7549 {                                                6187 {
7550     time_t mytime;                            << 6188   time_t mytime;
7551     tm* mylocaltime;                          << 6189   tm *mylocaltime;
7552                                                  6190 
7553     time(&mytime);                            << 6191   time(&mytime);
7554     mylocaltime = localtime(&mytime);         << 6192   mylocaltime = localtime(&mytime);
7555                                                  6193 
7556     if (x == 0)                               << 6194   if(x == 0) {
7557     {                                         << 6195     return(mylocaltime->tm_hour*60*60 + mylocaltime->tm_min*60 + mylocaltime->tm_sec);
7558         return (mylocaltime->tm_hour * 60 * 6 << 6196   }
7559     }                                         << 6197   else {
7560     else                                      << 6198     return(mytime - x);
7561     {                                         << 6199   }
7562         return G4int(mytime - x);             << 
7563     }                                         << 
7564 }                                                6200 }
7565                                                  6201 
7566 G4int G4Abla::mod(G4int a, G4int b)              6202 G4int G4Abla::mod(G4int a, G4int b)
7567 {                                                6203 {
7568     if (b != 0)                               << 6204   if(b != 0) {
7569     {                                         << 6205     return a%b;
7570         return a % b;                         << 6206   }
7571     }                                         << 6207   else {
7572     else                                      << 6208     return 0;
7573     {                                         << 6209   } 
7574         return 0;                             << 
7575     }                                         << 
7576 }                                                6210 }
7577                                                  6211 
7578 G4double G4Abla::dint(G4double x)                6212 G4double G4Abla::dint(G4double x)
7579 {                                                6213 {
7580     G4double value = 0.0;                     << 6214   G4double value = 0.0;
7581     /*                                        << 6215 /*
7582       if(a < 0.0) {                           << 6216   if(a < 0.0) {
7583         value = double(std::ceil(a));         << 6217     value = double(std::ceil(a));
7584       }                                       << 6218   }
7585       else {                                  << 6219   else {
7586         value = double(std::floor(a));        << 6220     value = double(std::floor(a));
7587       }                                       << 6221   }
7588     */                                        << 6222 */
7589     if (x - std::floor(x) <= std::ceil(x) - x << 6223   if(x-std::floor(x) <= std::ceil(x)-x) 
7590         value = G4double(std::floor(x));      << 6224          value = G4double(std::floor(x));
7591     else                                      << 6225   else 
7592         value = G4double(std::ceil(x));       << 6226          value = G4double(std::ceil(x));
7593                                                  6227 
7594     return value;                             << 6228   return value;
7595 }                                                6229 }
7596                                                  6230 
7597 G4int G4Abla::idint(G4double x)                  6231 G4int G4Abla::idint(G4double x)
7598 {                                                6232 {
7599     G4int value = 0;                          << 6233   G4int value = 0;
7600     if (x - std::floor(x) <= std::ceil(x) - x << 6234   if(x-std::floor(x) <= std::ceil(x)-x) 
7601         value = G4int(std::floor(x));         << 6235          value = G4int(std::floor(x));
7602     else                                      << 6236   else 
7603         value = G4int(std::ceil(x));          << 6237          value = G4int(std::ceil(x));
7604                                                  6238 
7605     return value;                             << 6239   return value;
7606 }                                                6240 }
7607                                                  6241 
7608 G4int G4Abla::idnint(G4double x)                 6242 G4int G4Abla::idnint(G4double x)
7609 {                                                6243 {
7610     if (x - std::floor(x) <= std::ceil(x) - x << 6244   if(x-std::floor(x) <= std::ceil(x)-x) 
7611         return G4int(std::floor(x));          << 6245          return G4int(std::floor(x));
7612     else                                      << 6246   else 
7613         return G4int(std::ceil(x));           << 6247          return G4int(std::ceil(x));
7614 }                                                6248 }
7615                                                  6249 
7616 G4double G4Abla::dmin1(G4double a, G4double b    6250 G4double G4Abla::dmin1(G4double a, G4double b, G4double c)
7617 {                                                6251 {
7618     if (a < b && a < c)                       << 6252   if(a < b && a < c) {
7619     {                                         << 
7620         return a;                             << 
7621     }                                         << 
7622     if (b < a && b < c)                       << 
7623     {                                         << 
7624         return b;                             << 
7625     }                                         << 
7626     if (c < a && c < b)                       << 
7627     {                                         << 
7628         return c;                             << 
7629     }                                         << 
7630     return a;                                    6253     return a;
                                                   >> 6254   }
                                                   >> 6255   if(b < a && b < c) {
                                                   >> 6256     return b;
                                                   >> 6257   }
                                                   >> 6258   if(c < a && c < b) {
                                                   >> 6259     return c;
                                                   >> 6260   }
                                                   >> 6261   return a;
                                                   >> 6262 }
                                                   >> 6263 
                                                   >> 6264 G4double G4Abla::utilabs(G4double a)
                                                   >> 6265 {
                                                   >> 6266   return std::abs(a);
7631 }                                                6267 }
7632                                                  6268 
7633 G4double G4Abla::utilabs(G4double a) { return << 
7634                                                  6269 
7635 G4double G4Abla::width(G4double AMOTHER,      << 6270 G4double G4Abla::width(G4double AMOTHER,G4double ZMOTHER,G4double APART,G4double ZPART,G4double TEMP,G4double B1,G4double SB1,G4double EXC)
7636                        G4double ZMOTHER,      << 6271 {
7637                        G4double APART,        << 6272 /*
7638                        G4double ZPART,        << 6273 * Implemented by JLRS for Abla c++: 06/11/2016
7639                        G4double TEMP,         << 6274 *
7640                        G4double B1,           << 6275 C  Last update:
7641                        G4double SB1,          << 6276 C       28/10/13 - JLRS - from abrablav4 (AK)
7642                        G4double EXC)          << 6277 */
7643 {                                             << 6278       G4int IZPART,IAPART,NMOTHER;
7644     /*                                        << 6279       G4double B,HBAR,PI,RGEOM,MPART,SB;
7645     * Implemented by JLRS for Abla c++: 06/11 << 6280       G4double BKONST,C,C2,G,APARTNER,MU;
7646     *                                         << 6281       G4double INT1,INT2,INT3,AKONST,EARG,R0,MPARTNER;
7647     C  Last update:                           << 6282       G4double AEXP;
7648     C       28/10/13 - JLRS - from abrablav4  << 6283       G4double ARG;
7649     */                                        << 6284       G4double PAR_A1=0.,PAR_B1=0.,FACT=1.;
7650     G4int IZPART, IAPART, NMOTHER;            << 6285       G4double fwidth=0.;
7651     G4double B, HBAR, PI, RGEOM, MPART, SB;   << 6286       G4int idlamb0=0;
7652     G4double BKONST, C, C2, G, APARTNER, MU;  << 6287       PI=3.141592654;
7653     G4double INT1, INT2, INT3, AKONST, EARG,  << 6288 
7654     G4double AEXP;                            << 6289       if(ZPART==-2.){
7655     G4double ARG;                             << 6290        ZPART=0.;
7656     G4double PAR_A1 = 0., PAR_B1 = 0., FACT = << 6291        idlamb0=1;
7657     G4double fwidth = 0.;                     << 6292       }
7658     G4int idlamb0 = 0;                        << 6293 
7659     PI = 3.141592654;                         << 6294       IZPART = idnint(ZPART);
7660                                               << 6295       IAPART = idnint(APART);
7661     if (ZPART == -2.)                         << 6296 
7662     {                                         << 6297       B = B1;
7663         ZPART = 0.;                           << 6298       SB = SB1;
7664         idlamb0 = 1;                          << 6299       NMOTHER = idnint(AMOTHER-ZMOTHER);
7665     }                                         << 6300 
7666                                               << 6301       PAR_A1 = 0.0;
7667     IZPART = idnint(ZPART);                   << 6302       PAR_B1 = 0.0;
7668     IAPART = idnint(APART);                   << 6303 
7669                                               << 6304       if(SB>EXC){
7670     B = B1;                                   << 6305        return fwidth=0.0;
7671     SB = SB1;                                 << 6306       }else{
7672     NMOTHER = idnint(AMOTHER - ZMOTHER);      << 6307 // in MeV*s
7673                                               << 6308       HBAR = 6.582122e-22;
7674     PAR_A1 = 0.0;                             << 6309 //      HBAR2 = HBAR * HBAR
7675     PAR_B1 = 0.0;                             << 6310 // in m/s
7676                                               << 6311       C = 2.99792458e8;
7677     if (SB > EXC)                             << 6312       C2 = C * C;
7678     {                                         << 6313       APARTNER = AMOTHER - APART;
7679         return fwidth = 0.0;                  << 6314       MPARTNER = APARTNER * 931.49 / C2;
7680     }                                         << 6315 
7681     else                                      << 6316 //           g=(2s+1)
7682     {                                         << 6317       if(IAPART==1&&IZPART==0){
7683         // in MeV*s                           << 6318         G = 2.0;
7684         HBAR = 6.582122e-22;                  << 6319         MPART =  939.56 / C2;
7685         //      HBAR2 = HBAR * HBAR           << 6320         if(idlamb0==1)MPART =  1115.683 / C2;
7686         // in m/s                             << 6321       }else{
7687         C = 2.99792458e8;                     << 6322        if(IAPART==1&&IZPART==1){
7688         C2 = C * C;                           << 6323         G = 2.0;
7689         APARTNER = AMOTHER - APART;           << 6324         MPART = 938.27 / C2;
7690         MPARTNER = APARTNER * 931.49 / C2;    << 6325        }
7691                                               << 6326        else{
7692         //           g=(2s+1)                 << 6327         if(IAPART==2&&IZPART==0){
7693         if (IAPART == 1 && IZPART == 0)       << 6328         G = 1.0;
7694         {                                     << 6329         MPART = 2.*939.56 / C2;
                                                   >> 6330         }else{
                                                   >> 6331          if(IAPART==2&&IZPART==1){
                                                   >> 6332          G = 3.0;
                                                   >> 6333          MPART = 1876.10 / C2;
                                                   >> 6334          }else{
                                                   >> 6335           if(IAPART==3&&IZPART==1){
                                                   >> 6336            G = 2.0;
                                                   >> 6337            MPART = 2809.39 / C2;
                                                   >> 6338           }else{
                                                   >> 6339            if(IAPART==3&&IZPART==2){
7695             G = 2.0;                             6340             G = 2.0;
7696             MPART = 939.56 / C2;              << 6341             MPART = 2809.37 / C2;
7697             if (idlamb0 == 1)                 << 6342            }else{
7698                 MPART = 1115.683 / C2;        << 6343             if(IAPART==4&&IZPART==2){
7699         }                                     << 6344              G = 1.0;
7700         else                                  << 6345              MPART = 3728.35 / C2;
7701         {                                     << 6346             }else{
7702             if (IAPART == 1 && IZPART == 1)   << 6347              // IMF
7703             {                                 << 6348              G = 1.0;
7704                 G = 2.0;                      << 6349              MPART = APART * 931.49 / C2;   
7705                 MPART = 938.27 / C2;          << 6350             }
7706             }                                 << 6351            }
7707             else                              << 6352           }
7708             {                                 << 6353          }
7709                 if (IAPART == 2 && IZPART ==  << 6354         }
7710                 {                             << 6355        }
7711                     G = 1.0;                  << 6356       }//end g
7712                     MPART = 2. * 939.56 / C2; << 6357 
7713                 }                             << 6358 // Relative mass in MeV*s^2/m^2
7714                 else                          << 6359       MU = MPARTNER * MPART / (MPARTNER + MPART);
7715                 {                             << 6360 // in m
7716                     if (IAPART == 2 && IZPART << 6361       R0 = 1.16e-15;
7717                     {                         << 
7718                         G = 3.0;              << 
7719                         MPART = 1876.10 / C2; << 
7720                     }                         << 
7721                     else                      << 
7722                     {                         << 
7723                         if (IAPART == 3 && IZ << 
7724                         {                     << 
7725                             G = 2.0;          << 
7726                             MPART = 2809.39 / << 
7727                         }                     << 
7728                         else                  << 
7729                         {                     << 
7730                             if (IAPART == 3 & << 
7731                             {                 << 
7732                                 G = 2.0;      << 
7733                                 MPART = 2809. << 
7734                             }                 << 
7735                             else              << 
7736                             {                 << 
7737                                 if (IAPART == << 
7738                                 {             << 
7739                                     G = 1.0;  << 
7740                                     MPART = 3 << 
7741                                 }             << 
7742                                 else          << 
7743                                 {             << 
7744                                     // IMF    << 
7745                                     G = 1.0;  << 
7746                                     MPART = A << 
7747                                 }             << 
7748                             }                 << 
7749                         }                     << 
7750                     }                         << 
7751                 }                             << 
7752             }                                 << 
7753         } // end g                            << 
7754                                                  6362 
7755         // Relative mass in MeV*s^2/m^2       << 6363       RGEOM = R0 * (std::pow(APART,1.0/3.0)+std::pow(AMOTHER-APART,1.0/3.0));
7756         MU = MPARTNER * MPART / (MPARTNER + M << 
7757         // in m                               << 
7758         R0 = 1.16e-15;                        << 
7759                                                  6364 
7760         RGEOM = R0 * (std::pow(APART, 1.0 / 3 << 6365 // in m*sqrt(MeV)
                                                   >> 6366       AKONST = HBAR*std::sqrt(1.0 / MU);
7761                                                  6367 
7762         // in m*sqrt(MeV)                     << 6368 // in  1/(MeV*m^2)
7763         AKONST = HBAR * std::sqrt(1.0 / MU);  << 6369       BKONST =  MPART / ( PI * PI * HBAR * HBAR);
                                                   >> 6370 //
                                                   >> 6371 // USING ANALYTICAL APPROXIMATION
7764                                                  6372 
7765         // in  1/(MeV*m^2)                    << 6373       INT1 = 2.0 * std::pow(TEMP,3.) / (2.0 * TEMP + B);
7766         BKONST = MPART / (PI * PI * HBAR * HB << 
7767         //                                    << 
7768         // USING ANALYTICAL APPROXIMATION     << 
7769                                                  6374 
7770         INT1 = 2.0 * std::pow(TEMP, 3.) / (2. << 6375       ARG = std::sqrt(B/TEMP);
                                                   >> 6376       EARG = (erf(ARG) - 1.0);
                                                   >> 6377       if(std::abs(EARG)<1.e-9) EARG = 0.0;
                                                   >> 6378       if(B==0.0){
                                                   >> 6379         INT2 = 0.5 * std::sqrt(PI) * std::pow(TEMP,3.0/2.0);
                                                   >> 6380       }else{
                                                   >> 6381          AEXP = B/TEMP;
                                                   >> 6382           if(AEXP>700.0) AEXP = 700.0;
                                                   >> 6383          INT2 = (2.0*B*B +TEMP*B)/std::sqrt(B) + std::exp(AEXP) * std::sqrt(PI/(4.0*TEMP))*(4.0*B*B+4.0*B*TEMP - TEMP*TEMP) *EARG;
                                                   >> 6384        if(INT2<0.0) INT2 = 0.0;
                                                   >> 6385 // For very low temperatures when EARG=0, INT2 get unreasonably high values
                                                   >> 6386 // comming from the first term. Therefore, for these cases INT2 is set to 0.
                                                   >> 6387        if(EARG==0.0) INT2 = 0.0;
                                                   >> 6388       }//if B
                                                   >> 6389 
                                                   >> 6390       INT3 = 2.0*TEMP*TEMP*TEMP / (2.0*TEMP*TEMP + 4.0*B*TEMP + B*B);
                                                   >> 6391 
                                                   >> 6392       if(IZPART<-1.0&&ZMOTHER<151.0){
                                                   >> 6393 //      IF(IZPART.LT.1)THEN
                                                   >> 6394 // For neutrons, the width is given by a mean value between geometrical and QM values;
                                                   >> 6395 // Only QM contribution (Rgeom -> Rgeom + Rlamda) seems to be too strong for neutrons
                                                   >> 6396        fwidth = PI * BKONST *  G * std::sqrt((RGEOM * RGEOM * INT1 + 2.0 * AKONST * RGEOM * INT2 + AKONST * AKONST * INT3) * RGEOM * RGEOM * INT1);
7771                                                  6397 
7772         ARG = std::sqrt(B / TEMP);            << 6398       }else{
7773         EARG = (erf(ARG) - 1.0);              << 6399        fwidth = PI * BKONST *  G *(RGEOM * RGEOM * INT1 + 2.0 * AKONST * RGEOM * INT2 + AKONST * AKONST * INT3);
7774         if (std::abs(EARG) < 1.e-9)           << 6400       }
7775             EARG = 0.0;                       << 
7776         if (B == 0.0)                         << 
7777         {                                     << 
7778             INT2 = 0.5 * std::sqrt(PI) * std: << 
7779         }                                     << 
7780         else                                  << 
7781         {                                     << 
7782             AEXP = B / TEMP;                  << 
7783             if (AEXP > 700.0)                 << 
7784                 AEXP = 700.0;                 << 
7785             INT2 = (2.0 * B * B + TEMP * B) / << 
7786                    std::exp(AEXP) * std::sqrt << 
7787             if (INT2 < 0.0)                   << 
7788                 INT2 = 0.0;                   << 
7789             // For very low temperatures when << 
7790             // values comming from the first  << 
7791             // set to 0.                      << 
7792             if (EARG == 0.0)                  << 
7793                 INT2 = 0.0;                   << 
7794         } // if B                             << 
7795                                               << 
7796         INT3 = 2.0 * TEMP * TEMP * TEMP / (2. << 
7797                                               << 
7798         if (IZPART < -1.0 && ZMOTHER < 151.0) << 
7799         {                                     << 
7800             //      IF(IZPART.LT.1)THEN       << 
7801             // For neutrons, the width is giv << 
7802             // and QM values; Only QM contrib << 
7803             // be too strong for neutrons     << 
7804             fwidth = PI * BKONST * G *        << 
7805                      std::sqrt((RGEOM * RGEOM << 
7806                                RGEOM * INT1); << 
7807         }                                     << 
7808         else                                  << 
7809         {                                     << 
7810             fwidth = PI * BKONST * G * (RGEOM << 
7811         }                                     << 
7812                                                  6401 
7813         // To correct for too high values of  << 
7814         // numerical solution for energies cl << 
7815         if (IZPART < 3.0)                     << 
7816         {                                     << 
7817             if (AMOTHER < 155.0)              << 
7818             {                                 << 
7819                 PAR_A1 = std::exp(2.302585 *  << 
7820                 PAR_B1 = 0.59939389 + 0.00915 << 
7821             }                                 << 
7822             else                              << 
7823             {                                 << 
7824                 if (AMOTHER > 154.0 && AMOTHE << 
7825                 {                             << 
7826                     PAR_A1 = 1.0086961 - 8.62 << 
7827                     PAR_B1 = 1.5329331 + 0.00 << 
7828                 }                             << 
7829                 else                          << 
7830                 {                             << 
7831                     if (AMOTHER > 194.0 && AM << 
7832                     {                         << 
7833                         PAR_A1 = 9.8356347 -  << 
7834                         PAR_B1 = 7.7701987 -  << 
7835                     }                         << 
7836                     else                      << 
7837                     {                         << 
7838                         if (AMOTHER > 207.0 & << 
7839                         {                     << 
7840                             PAR_A1 = 15.10738 << 
7841                             PAR_B1 = -64.0780 << 
7842                         }                     << 
7843                         else                  << 
7844                         {                     << 
7845                             if (AMOTHER > 227 << 
7846                             {                 << 
7847                                 if (mod(NMOTH << 
7848                                 {             << 
7849                                     PAR_A1 =  << 
7850                                 }             << 
7851                                 else          << 
7852                                 {             << 
7853                                     if (mod(N << 
7854                                         PAR_A << 
7855                                 }             << 
7856                                 PAR_B1 = 2.15 << 
7857                             }                 << 
7858                         }                     << 
7859                     }                         << 
7860                 }                             << 
7861             }                                 << 
7862             FACT = std::exp((2.302585 * PAR_A << 
7863             if (FACT < 1.0)                   << 
7864                 FACT = 1.0;                   << 
7865             if (IZPART < -1. && ZMOTHER < 151 << 
7866             {                                 << 
7867                 //       IF(IZPART.LT.1)THEN  << 
7868                 fwidth = fwidth / std::sqrt(F << 
7869             }                                 << 
7870             else                              << 
7871             {                                 << 
7872                 fwidth = fwidth / FACT;       << 
7873             }                                 << 
7874         } // if IZPART<3.0                    << 
7875                                                  6402 
7876         if (fwidth <= 0.0)                    << 6403 // To correct for too high values of analytical width compared to
7877         {                                     << 6404 // numerical solution for energies close to the particle threshold:
7878             std::cout << "LOOK IN PARTICLE_WI << 6405        if(IZPART<3.0){
7879             std::cout << "ACN,APART :" << AMO << 6406         if(AMOTHER<155.0){
7880             std::cout << "EXC,TEMP,B,SB :" << << 6407          PAR_A1=std::exp(2.302585*0.2083*std::exp(-0.01548472*AMOTHER))-0.05;
7881             std::cout << "INTi, i=1-3 :" << I << 6408          PAR_B1 = 0.59939389 + 0.00915657 * AMOTHER;
7882             std::cout << " " << std::endl;    << 6409         }else{
7883         }                                     << 6410          if(AMOTHER>154.0&&AMOTHER<195.0){
                                                   >> 6411            PAR_A1=1.0086961-8.629e-5*AMOTHER;
                                                   >> 6412            PAR_B1 = 1.5329331 + 0.00302074 * AMOTHER;
                                                   >> 6413          }else{
                                                   >> 6414           if(AMOTHER>194.0&&AMOTHER<208.0){
                                                   >> 6415            PAR_A1=9.8356347-0.09294663*AMOTHER+2.441e-4*AMOTHER*AMOTHER;
                                                   >> 6416            PAR_B1 = 7.7701987 - 0.02897401 * AMOTHER;
                                                   >> 6417           }else{
                                                   >> 6418            if(AMOTHER>207.0&&AMOTHER<228.0){
                                                   >> 6419             PAR_A1=15.107385-0.12414415*AMOTHER+2.7222e-4*AMOTHER*AMOTHER;
                                                   >> 6420             PAR_B1=-64.078009+0.56813179*AMOTHER-0.00121078*AMOTHER*AMOTHER; 
                                                   >> 6421            }else{
                                                   >> 6422              if(AMOTHER>227.0){
                                                   >> 6423               if(mod(NMOTHER,2)==0&&NMOTHER>147.){
                                                   >> 6424                PAR_A1 = 2.0*(0.9389118 + 6.4559e-5 * AMOTHER);
                                                   >> 6425               }else{
                                                   >> 6426                if(mod(NMOTHER,2)==1)PAR_A1 = 3.0*(0.9389118 + 6.4559e-5 * AMOTHER);
                                                   >> 6427               }
                                                   >> 6428               PAR_B1 = 2.1507177 + 0.00146119 * AMOTHER;
                                                   >> 6429              }
                                                   >> 6430            }
                                                   >> 6431           }
                                                   >> 6432          }
                                                   >> 6433         }
                                                   >> 6434        FACT = std::exp((2.302585*PAR_A1*std::exp(-PAR_B1*(EXC-SB))));
                                                   >> 6435        if(FACT<1.0) FACT = 1.0;
                                                   >> 6436        if(IZPART<-1.&&ZMOTHER<151.0){
                                                   >> 6437 //       IF(IZPART.LT.1)THEN
                                                   >> 6438         fwidth = fwidth / std::sqrt(FACT);
                                                   >> 6439        }else{
                                                   >> 6440         fwidth = fwidth / FACT;
                                                   >> 6441        }
                                                   >> 6442        }//if IZPART<3.0
                                                   >> 6443 
                                                   >> 6444        if(fwidth<=0.0){
                                                   >> 6445        std::cout <<"LOOK IN PARTICLE_WIDTH!" << std::endl;
                                                   >> 6446        std::cout <<"ACN,APART :"<< AMOTHER << APART << std::endl;
                                                   >> 6447        std::cout <<"EXC,TEMP,B,SB :" << EXC << " " << TEMP << " "  << B << " "  << SB << std::endl;
                                                   >> 6448        std::cout <<"INTi, i=1-3 :" << INT1 << " "  << INT2 << " "  << INT3 << std::endl;
                                                   >> 6449        std::cout <<" " << std::endl;
                                                   >> 6450        }
7884                                                  6451 
7885     } // if SB>EXC                            << 6452       }//if SB>EXC
7886     return fwidth;                            << 6453   return fwidth;
7887 }                                                6454 }
7888                                                  6455 
7889 G4double G4Abla::pen(G4double A, G4double ap,    6456 G4double G4Abla::pen(G4double A, G4double ap, G4double omega, G4double T)
7890 {                                                6457 {
7891     // JLRS: 06/11/2016                       << 6458 // JLRS: 06/11/2016
7892     // CORRECTIONS FOR BARRIER PENETRATION    << 6459 // CORRECTIONS FOR BARRIER PENETRATION
7893     // AK, KHS 2005 - Energy-dependen inverse << 6460 // AK, KHS 2005 - Energy-dependen inverse cross sections included, influence of
7894     // of                                     << 6461 //                Coulomb barrier for LCP, tunnelling for LCP
7895     //                Coulomb barrier for LCP << 
7896                                                  6462 
7897     G4double fpen = 0., MU, HO;               << 6463  G4double fpen=0., MU, HO;
7898                                                  6464 
7899     // REDUCED MASSES (IN MeV/C**2)           << 6465 // REDUCED MASSES (IN MeV/C**2)
7900     MU = (A - ap) * ap / A;                   << 6466        MU = (A - ap) * ap / A;
7901                                                  6467 
7902     // ENERGY OF THE INVERSE PARABOLA AT THE  << 6468 // ENERGY OF THE INVERSE PARABOLA AT THE POTENTIAL BARRIER (hbar*omega);
7903     // HERE hbar = 197.3287 fm*MeV/c, omega i << 6469 // HERE hbar = 197.3287 fm*MeV/c, omega is in c/fm
7904     HO = 197.3287 * omega;                    << 6470        HO = 197.3287 * omega;
7905                                                  6471 
7906     if (T <= 0.0)                             << 6472      if(T<=0.0){
7907     {                                         << 6473        fpen = 0.0;
7908         fpen = 0.0;                           << 6474      }else{
7909     }                                         << 6475        fpen=std::pow(10.0,4.e-4*std::pow(T/(HO*HO*std::pow(MU,0.25)),-4.3/2.3026));
7910     else                                      << 6476      }
7911     {                                         << 
7912         fpen = std::pow(10.0, 4.e-4 * std::po << 
7913     }                                         << 
7914                                                  6477 
7915     return fpen;                              << 6478  return fpen;
7916 }                                                6479 }
7917                                                  6480 
7918 void G4Abla::bsbkbc(G4double A, G4double Z, G << 6481 void G4Abla::bsbkbc(G4double A,G4double Z,G4double *BS,G4double *BK,G4double *BC)
7919 {                                                6482 {
7920     // Calculate BS and BK needed for a level << 6483 // Calculate BS and BK needed for a level-density parameter:
7921     // BETA2 and BETA4 = quadrupole and hexad << 6484 // BETA2 and BETA4 = quadrupole and hexadecapole deformation
7922                                                  6485 
7923     G4double PI = 3.14159265;                 << 6486       G4double PI = 3.14159265;
7924     G4int IZ = idnint(Z);                     << 6487       G4int IZ = idnint(Z);
7925     G4int IN = idnint(A - Z);                 << 6488       G4int IN = idnint(A - Z);
7926     // alphaN = sqrt(2*N/(4*pi))*BetaN        << 6489 // alphaN = sqrt(2*N/(4*pi))*BetaN
7927     G4double ALPHA2 = std::sqrt(5.0 / (4.0 *  << 6490       G4double ALPHA2 = std::sqrt(5.0/(4.0*PI))*ecld->beta2[IN][IZ];
7928     G4double ALPHA4 = std::sqrt(9.0 / (4.0 *  << 6491       G4double ALPHA4 = std::sqrt(9.0/(4.0*PI))*ecld->beta4[IN][IZ];
7929                                                  6492 
7930     (*BS) = 1.0 + 0.4 * ALPHA2 * ALPHA2 - 4.0 << 6493       (*BS) = 1.0 + 0.4*ALPHA2*ALPHA2 - 4.0/105.0*ALPHA2*ALPHA2*ALPHA2 - 66.0/175.0*ALPHA2*ALPHA2*ALPHA2*ALPHA2 - 4.0/35.0*ALPHA2*ALPHA2*ALPHA4 + ALPHA4*ALPHA4;
7931             66.0 / 175.0 * ALPHA2 * ALPHA2 *  << 
7932                                                  6494 
7933     (*BK) = 1.0 + 0.4 * ALPHA2 * ALPHA2 + 16. << 6495       (*BK) = 1.0 + 0.4*ALPHA2*ALPHA2 + 16.0/105.0*ALPHA2*ALPHA2*ALPHA2 - 82.0/175.0*ALPHA2*ALPHA2*ALPHA2*ALPHA2 + 2.0/35.0*ALPHA2*ALPHA2*ALPHA4 + ALPHA4*ALPHA4;
7934             82.0 / 175.0 * ALPHA2 * ALPHA2 *  << 
7935                                                  6496 
7936     (*BC) = 0.0;                              << 6497       (*BC)=0.0;      
7937                                                  6498 
7938     return;                                   << 6499  return;
7939 }                                                6500 }
7940                                                  6501 
7941 G4double G4Abla::fvmaxhaz(G4double T)         << 6502 G4double G4Abla::fvmaxhaz( G4double T)
7942 {                                                6503 {
7943     // Random generator according to a distri << 6504 // Random generator according to a distribution similar to a
7944     // Maxwell distribution with quantum-mech << 6505 // Maxwell distribution with quantum-mech. x-section for charged particles according to KHS
7945     // according to KHS                       << 6506 //      Y = X**(1.5E0) / (B+X) * EXP(-X/T) (approximation:)
7946     //      Y = X**(1.5E0) / (B+X) * EXP(-X/T << 6507 
7947                                               << 6508 return (3.0 * T * std::pow(-1.*std::log(G4AblaRandom::flat()) * std::log(G4AblaRandom::flat())*std::log(G4AblaRandom::flat()),0.333333));
7948     return (                                  << 6509 }
7949         3.0 * T *                             << 6510 
7950         std::pow(-1. * std::log(G4AblaRandom: << 6511 G4double G4Abla::func_trans(G4double TIME,G4double ZF,G4double AF,G4double bet,G4double Y,G4double FT,G4double T_0)
7951                  0.333333));                  << 6512 {
7952 }                                             << 6513 /*
7953                                               << 6514 c   This function determines the fission width as a function o time
7954 G4double                                      << 6515 c   according to the analytical solution of the FPE for the probability distribution
7955     G4Abla::func_trans(G4double TIME, G4doubl << 6516 c   at the barrier when the nucleus potential is aproximated by a parabolic
7956 {                                             << 6517 c   potential. It is taken from S. Chandrasekhar, Rev. Mod. Phys. 15 (1943) 1
7957     /*                                        << 6518 c                   
7958     c   This function determines the fission  << 6519 c***********************INPUT PARAMETERS*********************************
7959     c   according to the analytical solution  << 6520 c  Time               Time at which we evaluate the fission width
7960     distribution c   at the barrier when the  << 6521 c  ZF                 Z of nucleus
7961     parabolic c   potential. It is taken from << 6522 C  AF                 A of nucleus    
7962     (1943) 1                                  << 6523 c  BET                Reduced dissipation coefficient
7963     c                                         << 6524 c  FT                 Nuclear temperature
7964     c***********************INPUT PARAMETERS* << 6525 C**************************************************************************
7965     c  Time               Time at which we ev << 6526 C********************************OUTPUT***********************************
7966     c  ZF                 Z of nucleus        << 6527 C   Fission decay width at the corresponding time of the decay cascade
7967     C  AF                 A of nucleus        << 6528 C*************************************************************************
7968     c  BET                Reduced dissipation << 6529 c****************************OTHER VARIABLES******************************
7969     c  FT                 Nuclear temperature << 6530 C  SIGMA_SQR         Square of the width of the prob. distribution
7970     C**************************************** << 6531 C  XB                Deformation of the nucleus at the saddle point
7971     C********************************OUTPUT** << 6532 c  NORM              Normalization factor of the probability distribution
7972     C   Fission decay width at the correspond << 6533 c  W                 Probability distribution at the saddle deformation XB
7973     C**************************************** << 6534 c  W_INFIN           Probability distr. at XB at infinite time
7974     c****************************OTHER VARIAB << 6535 c  MFCD              Mass of the fission collective degree of freedom
7975     C  SIGMA_SQR         Square of the width  << 6536 C*************************************************************************
7976     C  XB                Deformation of the n << 6537 */
7977     c  NORM              Normalization factor << 6538       G4double PI = 3.14159;
7978     c  W                 Probability distribu << 6539       G4double DEFO_INIT,OMEGA,HOMEGA,OMEGA_GS,HOMEGA_GS,K1,MFCD;
7979     c  W_INFIN           Probability distr. a << 6540       G4double BET1,XACT,SIGMA_SQR,W_EXP,XB,NORM,SIGMA_SQR_INF,W_INFIN,W;
7980     c  MFCD              Mass of the fission  << 6541       G4double FUNC_TRANS,LOG_SLOPE_INF,LOG_SLOPE_ABS;
7981     C**************************************** << 6542 //
7982     */                                        << 6543 // Influence of initial deformation
7983     G4double PI = 3.14159;                    << 6544 // Initial alpha2 deformation (GS)
7984     G4double DEFO_INIT, OMEGA, HOMEGA, OMEGA_ << 6545       DEFO_INIT = std::sqrt(5.0/(4.0*PI))*ecld->beta2[fiss->at-fiss->zt][fiss->zt];
7985     G4double BET1, XACT, SIGMA_SQR, W_EXP, XB << 6546 //
7986     G4double FUNC_TRANS, LOG_SLOPE_INF, LOG_S << 6547       fomega_sp(AF,Y,&MFCD,&OMEGA,&HOMEGA);
7987     //                                        << 6548       fomega_gs(AF,ZF,&K1,&OMEGA_GS,&HOMEGA_GS);
7988     // Influence of initial deformation       << 6549 //
7989     // Initial alpha2 deformation (GS)        << 6550 // Determination of the square of the width of the probability distribution
7990     DEFO_INIT = std::sqrt(5.0 / (4.0 * PI)) * << 6551 // For the overdamped regime BET**2 > 4*OMEGA**2
7991     //                                        << 6552          if((bet*bet)>4.0*OMEGA_GS*OMEGA_GS){
7992     fomega_sp(AF, Y, &MFCD, &OMEGA, &HOMEGA); << 6553           BET1=std::sqrt(bet*bet-4.0*OMEGA_GS*OMEGA_GS);
7993     fomega_gs(AF, ZF, &K1, &OMEGA_GS, &HOMEGA << 6554 //
7994     //                                        << 6555 // REMEMBER THAT HOMEGA IS ACTUALLY HBAR*HOMEGA1=1MeV
7995     // Determination of the square of the wid << 6556 // SO THAT HOMEGA1 = HOMEGA/HBAR
7996     // For the overdamped regime BET**2 > 4*O << 6557 //
7997     if ((bet * bet) > 4.0 * OMEGA_GS * OMEGA_ << 6558           SIGMA_SQR = (FT/K1)*(1.0 -((2.0*bet*bet/(BET1*BET1)* (0.5 * (std::exp(0.50*(BET1-bet)*1.e21*TIME) - std::exp(0.5*(-BET1-bet)*1.e21*TIME)))*(0.5 * (std::exp(0.50*(BET1-bet)*1.e21*TIME) - std::exp(0.5*(-BET1-bet)*1.e21*TIME)))) + (bet/BET1*0.50 * (std::exp((BET1-bet)*1.e21*TIME)-std::exp((-BET1-bet)*1.e21*TIME))) + 1. * std::exp(-bet*1.e21*TIME)));
7998     {                                         << 6559 //
7999         BET1 = std::sqrt(bet * bet - 4.0 * OM << 6560 // Evolution of the mean x-value (KHS March 2006)
8000         //                                    << 6561           XACT = DEFO_INIT *std::exp(-0.5*(bet-BET1)*1.e21*(TIME-T_0));
8001         // REMEMBER THAT HOMEGA IS ACTUALLY H << 6562 //
8002         // SO THAT HOMEGA1 = HOMEGA/HBAR      << 6563          }else{
8003         //                                    << 6564 // For the underdamped regime BET**2 < 4*HOMEGA**2 BET1 becomes a complex number
8004         SIGMA_SQR =                           << 6565 // and the expression with sinh and cosh can be transformed in one with sin and cos
8005             (FT / K1) *                       << 6566           BET1=std::sqrt(4.0*OMEGA_GS*OMEGA_GS-bet*bet);
8006             (1.0 -                            << 6567           SIGMA_SQR = FT/K1*(1.-std::exp(-1.0*bet*1.e21*TIME)*(bet*bet/(BET1*BET1)*(1.-std::cos(BET1*1.e21*TIME)) + bet/BET1*std::sin(BET1*1.e21*TIME) + 1.0));
8007              ((2.0 * bet * bet / (BET1 * BET1 << 6568           XACT = DEFO_INIT*std::cos(0.5*BET1*1.e21*(TIME-T_0))*std::exp(-bet*1.e21*(TIME-T_0));
8008                (0.5 * (std::exp(0.50 * (BET1  << 6569          }
8009                (0.5 * (std::exp(0.50 * (BET1  << 6570 
8010               (bet / BET1 * 0.50 * (std::exp( << 6571 // Determination of the deformation at the saddle point according to
8011               1. * std::exp(-bet * 1.e21 * TI << 6572 // "Geometrical relationships of Macroscopic Nucl. Phys." from Hass and Myers page 100
8012         //                                    << 6573 // This corresponds to alpha2 deformation.
8013         // Evolution of the mean x-value (KHS << 6574           XB = 7./3.*Y-938./765.*Y*Y+9.499768*Y*Y*Y-8.050944*Y*Y*Y*Y;
8014         XACT = DEFO_INIT * std::exp(-0.5 * (b << 6575 //
8015         //                                    << 6576 // Determination of the probability distribution at the saddle deformation
8016     }                                         << 6577 //
8017     else                                      << 6578           if(SIGMA_SQR>0.0){
8018     {                                         << 6579            NORM = 1./std::sqrt(2.*PI*SIGMA_SQR);
8019         // For the underdamped regime BET**2  << 6580 //
8020         // number and the expression with sin << 6581            W_EXP = -1.*(XB - XACT)*(XB - XACT)/(2.0 * SIGMA_SQR);
8021         // with sin and cos                   << 6582             if(W_EXP<(-708.0) ) W_EXP = -708.0;
8022         BET1 = std::sqrt(4.0 * OMEGA_GS * OME << 6583            W = NORM * std::exp( W_EXP ) * FT / (K1 * SIGMA_SQR);
8023         SIGMA_SQR = FT / K1 *                 << 6584            }else{
8024                     (1. - std::exp(-1.0 * bet << 6585            W = 0.0;
8025                               (bet * bet / (B << 6586            }
8026                                bet / BET1 * s << 6587 //
8027         XACT = DEFO_INIT * std::cos(0.5 * BET << 6588 // Determination of the fission decay width, we assume we are in the overdamped regime
8028     }                                         << 6589 //
8029                                               << 6590               SIGMA_SQR_INF = FT/K1;
8030     // Determination of the deformation at th << 6591               W_EXP = -XB*XB/(2.0 * SIGMA_SQR_INF);
8031     // "Geometrical relationships of Macrosco << 6592               if(W_EXP<(-708.0))W_EXP = -708.0;
8032     // page 100 This corresponds to alpha2 de << 6593               W_INFIN = std::exp(W_EXP)/std::sqrt(2.0*PI*SIGMA_SQR_INF);
8033     XB = 7. / 3. * Y - 938. / 765. * Y * Y +  << 6594               FUNC_TRANS = W / W_INFIN;
8034     //                                        << 6595 //
8035     // Determination of the probability distr << 6596 // Correction for the variation of the mean velocity at the fission barrier
8036     //                                        << 6597 //  (see B. Jurado et al, Nucl. Phys. A747, p. 14)
8037     if (SIGMA_SQR > 0.0)                      << 6598 //
8038     {                                         << 6599               LOG_SLOPE_INF = cram(bet,HOMEGA)*bet*MFCD*OMEGA/FT;
8039         NORM = 1. / std::sqrt(2. * PI * SIGMA << 6600               LOG_SLOPE_ABS = (XB-XACT)/SIGMA_SQR-XB/SIGMA_SQR_INF+cram(bet,HOMEGA)*bet*MFCD*OMEGA/FT;
8040         //                                    << 6601 //
8041         W_EXP = -1. * (XB - XACT) * (XB - XAC << 6602               FUNC_TRANS = FUNC_TRANS * LOG_SLOPE_ABS/LOG_SLOPE_INF;
8042         if (W_EXP < (-708.0))                 << 6603 //
8043             W_EXP = -708.0;                   << 6604  return FUNC_TRANS;
8044         W = NORM * std::exp(W_EXP) * FT / (K1 << 6605 }
8045     }                                         << 6606 
8046     else                                      << 6607 
8047     {                                         << 6608 void G4Abla::part_fiss(G4double BET,G4double GP,G4double GF,G4double Y,G4double TAUF,G4double TS1,G4double TSUM,G4int *CHOICE,G4double ZF,G4double AF,G4double FT,G4double *T_LAPSE,G4double *GF_LOC)
8048         W = 0.0;                              << 6609 {
8049     }                                         << 6610 /*
8050     //                                        << 6611 C     THIS SUBROUTINE IS AIMED TO CHOOSE BETWEEN PARTICLE EMISSION
8051     // Determination of the fission decay wid << 6612 C     AND FISSION
8052     // overdamped regime                      << 6613 C     WE USE MONTE-CARLO METHODS AND SAMPLE TIME BETWEEN T=0 AND T=1.5*TAUF
8053     //                                        << 6614 c TO SIMULATE THE TRANSIENT TIME WITH 30 STEPS (0.05*TAUF EACH)
8054     SIGMA_SQR_INF = FT / K1;                  << 6615 C     FOR t>1.5*TAUF , GF=CONSTANT=ASYMPTOTICAL VALUE (INCLUDING KRAMERS FACTOR)
8055     W_EXP = -XB * XB / (2.0 * SIGMA_SQR_INF); << 6616 c------------------------------------------------------------------------
8056     if (W_EXP < (-708.0))                     << 6617 c    Modifications introduced by BEATRIZ JURADO 18/10/01:
8057         W_EXP = -708.0;                       << 6618 c    1. Now this subrutine is included in the rutine direct
8058     W_INFIN = std::exp(W_EXP) / std::sqrt(2.0 << 6619 c    2. TSUM does not include the current particle decay time
8059     FUNC_TRANS = W / W_INFIN;                 << 6620 C    3. T_LAPSE is the time until decay, taken as an output variable
8060     //                                        << 6621 C    4. GF_LOC is also taken as an output variable
8061     // Correction for the variation of the me << 6622 C    5. BET (Diss. Coeff.) and HOMEGA (Frequency at the ground state
8062     //  (see B. Jurado et al, Nucl. Phys. A74 << 6623 c       are included as input variables because they are needed for FUNC_TRANS
8063     //                                        << 6624 C-----------------------------------------------------------------------
8064     LOG_SLOPE_INF = cram(bet, HOMEGA) * bet * << 6625 C     ON INPUT:
8065     LOG_SLOPE_ABS = (XB - XACT) / SIGMA_SQR - << 6626 C       GP                 Partial particle decay width
8066     //                                        << 6627 C       GF                 Asymptotic value of Gamma-f, including Kramers factor
8067     FUNC_TRANS = FUNC_TRANS * LOG_SLOPE_ABS / << 6628 C       AF                 Mass number of nucleus
8068     //                                        << 6629 C       TAUF               Transient time
8069     return FUNC_TRANS;                        << 6630 C       TS1                Partial particle decay time for the next step
8070 }                                             << 6631 C       TSUM               Total sum of partial particle decay times, including
8071                                               << 6632 C                               the next expected one, which is in competition
8072 void G4Abla::part_fiss(G4double BET,          << 6633 C                               with fission now
8073                        G4double GP,           << 6634 C       ZF                 Z of nucleus
8074                        G4double GF,           << 6635 C       AF                 A of nucleus
8075                        G4double Y,            << 6636 C-----------------------------------------------------------------------
8076                        G4double TAUF,         << 6637 C     ON OUTPUT:
8077                        G4double TS1,          << 6638 C       CHOICE             Key for decay mode: 0 = no decay (only internal)
8078                        G4double TSUM,         << 6639 C                                              1 = evaporation
8079                        G4int* CHOICE,         << 6640 C                                              2 = fission
8080                        G4double ZF,           << 6641 C-----------------------------------------------------------------------
8081                        G4double AF,           << 6642 C     VARIABLES:
8082                        G4double FT,           << 6643 C       GP                 Partial particle decay width
8083                        G4double* T_LAPSE,     << 6644 C       GF                 Asymptotic value of Gamma-f, including Kramers factor
8084                        G4double* GF_LOC)      << 6645 C       TAUF               Transient time
8085 {                                             << 6646 C       TS1                Partial particle decay time
8086     /*                                        << 6647 C       TSUM               Total sum of partial particle decay times
8087     C     THIS SUBROUTINE IS AIMED TO CHOOSE  << 6648 C       CHOICE              Key for decay mode
8088     C     AND FISSION                         << 6649 C       ZF                 Z of nucleus
8089     C     WE USE MONTE-CARLO METHODS AND SAMP << 6650 C       AF                 A of nucleus
8090     c TO SIMULATE THE TRANSIENT TIME WITH 30  << 6651 C       FT                 Used for Fermi function in FUNC_TRANS
8091     C     FOR t>1.5*TAUF , GF=CONSTANT=ASYMPT << 6652 C       STEP_LENGTH        Step in time to sample different decays
8092     FACTOR)                                   << 6653 C       BEGIN_TIME         Total sum of partial particle decay times, excluding
8093     c---------------------------------------- << 6654 C                               the next expected one, which is in competition
8094     c    Modifications introduced by BEATRIZ  << 6655 C                               with fission now
8095     c    1. Now this subrutine is included in << 6656 C       LOC_TIME_BEGIN     Begin of time interval considered in one step
8096     c    2. TSUM does not include the current << 6657 C       LOC_TIME_END       End of time interval considered in one step
8097     C    3. T_LAPSE is the time until decay,  << 6658 C       GF_LOC             In-grow function for fission width,
8098     C    4. GF_LOC is also taken as an output << 6659 c                                 normalized to asymptotic value
8099     C    5. BET (Diss. Coeff.) and HOMEGA (Fr << 6660 C       TS2                Effective partial fission decay time in one time step
8100     c       are included as input variables b << 6661 C       HBAR               hbar
8101     C---------------------------------------- << 6662 C       T_LAPSE            Effective decay time in one time step
8102     C     ON INPUT:                           << 6663 C       REAC_PROB          Reaction probability in one time step
8103     C       GP                 Partial partic << 6664 C       X                  Help variable for random generator
8104     C       GF                 Asymptotic val << 6665 C------------------------------------------------------------------------
8105     factor C       AF                 Mass nu << 6666 */
8106     Transient time C       TS1                << 6667   G4double K1,OMEGA,HOMEGA,t_0,STEP_LENGTH,LOC_TIME_BEGIN,LOC_TIME_END=0.,BEGIN_TIME=0.,FISS_PROB,X,TS2,LAMBDA,REAC_PROB;
8107     next step C       TSUM               Tota << 6668   G4double HBAR=6.582122e-22;
8108     times, including C                        << 6669   G4int fchoice=0;
8109     is in competition C                       << 6670   G4double fGF_LOC=0.,fT_LAPSE=0.;
8110     Z of nucleus C       AF                 A << 6671 //
8111     C---------------------------------------- << 6672   if(GF<=0.0){
8112     C     ON OUTPUT:                          << 6673           *CHOICE = 1;
8113     C       CHOICE             Key for decay  << 6674           *T_LAPSE=TS1;
8114     C                                         << 6675           *GF_LOC = 0.0;
8115     C                                         << 6676       goto direct107;
8116     C---------------------------------------- << 6677   }
8117     C     VARIABLES:                          << 6678 //
8118     C       GP                 Partial partic << 6679       fomega_gs(AF,ZF,&K1,&OMEGA,&HOMEGA);
8119     C       GF                 Asymptotic val << 6680 //
8120     factor C       TAUF               Transie << 6681 // ****************************************************************
8121     decay time C       TSUM               Tot << 6682 //    Calculation of the shift in time due to the initial conditions
8122     times C       CHOICE              Key for << 6683 //
8123     C       AF                 A of nucleus   << 6684 //    Overdamped regime
8124     C       FT                 Used for Fermi << 6685       if(BET*BET>4.0*OMEGA*OMEGA){
8125     C       STEP_LENGTH        Step in time t << 6686 //         REMEMBER THAT HOMEGA IS ACTUALLY HBAR*HOMEGA1=1MeV
8126     C       BEGIN_TIME         Total sum of p << 6687 //         SO THAT HOMEGA1 = HOMEGA/HBAR
8127     excluding C                               << 6688 //     Additional factor 1/16 proposed by KHS on 14/7/2010. Takes into
8128     competition C                             << 6689 //     account the fact that the curvature of the potential is ~16 times
8129     Begin of time interval considered in one  << 6690 //     larger than what predicted by the liquid drop model, because of
8130     of time interval considered in one step C << 6691 //     shell effects.
8131     function for fission width, c             << 6692           t_0 = BET*1.e21*HBAR*HBAR/(4.*HOMEGA*FT)/16.;
8132     asymptotic value C       TS2              << 6693        }else{
8133     time in one time step C       HBAR        << 6694 //     Underdamped regime
8134     Effective decay time in one time step C   << 6695          if(((2.*FT-HOMEGA/16.)>0.000001) && BET>0.0){
8135     probability in one time step C       X    << 6696 //     Additional factor 1/16 proposed by KHS on 14/7/2010. Takes into
8136     random generator                          << 6697 //     account the fact that the curvature of the potential is ~16 times
8137     C---------------------------------------- << 6698 //     larger than what predicted by the liquid drop model, because of
8138     */                                        << 6699 //     shell effects.
8139     G4double K1, OMEGA, HOMEGA, t_0, STEP_LEN << 6700            t_0 = (std::log(2.*FT/(2.*FT-HOMEGA/16.)))/(BET*1.e21);
8140                                               << 6701          }else{
8141     G4double HBAR = 6.582122e-22;             << 6702 //     Neglect fission transients if the time shift t_0 is too
8142     G4int fchoice = 0;                        << 6703 //     large. Suppresses large, spurious fission cross section at very
8143     G4double fGF_LOC = 0., fT_LAPSE = 0.;     << 6704 //     low excitation energy in p+Ta.
8144     //                                        << 6705 //
8145     if (GF <= 0.0)                            << 6706               fchoice = 0;
8146     {                                         << 6707               goto direct106;
8147         *CHOICE = 1;                          << 6708          }
8148         *T_LAPSE = TS1;                       << 6709        }
8149         *GF_LOC = 0.0;                        << 6710 // ********************************************************************+
8150         goto direct107;                       << 6711       fchoice = 0;
8151     }                                         << 6712       STEP_LENGTH = 1.5*TAUF/50.;
8152     //                                        << 6713 //
8153     fomega_gs(AF, ZF, &K1, &OMEGA, &HOMEGA);  << 6714 //  AT FIRST WE CACULATE THE REAL CURRENT TIME
8154     //                                        << 6715 //  TSUM includes only the time elapsed in the previous steps
8155     // ************************************** << 6716 //
8156     //    Calculation of the shift in time du << 6717       BEGIN_TIME = TSUM + t_0;
8157     //                                        << 6718 //
8158     //    Overdamped regime                   << 6719       if(BEGIN_TIME<0.0) std::cout << "CURRENT TIME < 0" << BEGIN_TIME << std::endl;
8159     if (BET * BET > 4.0 * OMEGA * OMEGA)      << 6720 //
8160     {                                         << 6721       if(BEGIN_TIME<1.50*TAUF){
8161         //         REMEMBER THAT HOMEGA IS AC << 
8162         //         SO THAT HOMEGA1 = HOMEGA/H << 
8163         //     Additional factor 1/16 propose << 
8164         //     account the fact that the curv << 
8165         //     larger than what predicted by  << 
8166         //     shell effects.                 << 
8167         t_0 = BET * 1.e21 * HBAR * HBAR / (4. << 
8168     }                                         << 
8169     else                                      << 
8170     {                                         << 
8171         //     Underdamped regime             << 
8172         if (((2. * FT - HOMEGA / 16.) > 0.000 << 
8173         {                                     << 
8174             //     Additional factor 1/16 pro << 
8175             //     account the fact that the  << 
8176             //     larger than what predicted << 
8177             //     shell effects.             << 
8178             t_0 = (std::log(2. * FT / (2. * F << 
8179         }                                     << 
8180         else                                  << 
8181         {                                     << 
8182             //     Neglect fission transients << 
8183             //     large. Suppresses large, s << 
8184             //     low excitation energy in p << 
8185             //                                << 
8186             fchoice = 0;                      << 
8187             goto direct106;                   << 
8188         }                                     << 
8189     }                                         << 
8190     // ************************************** << 
8191     fchoice = 0;                              << 
8192     STEP_LENGTH = 1.5 * TAUF / 50.;           << 
8193     //                                        << 
8194     //  AT FIRST WE CACULATE THE REAL CURRENT << 
8195     //  TSUM includes only the time elapsed i << 
8196     //                                        << 
8197     BEGIN_TIME = TSUM + t_0;                  << 
8198     //                                        << 
8199     if (BEGIN_TIME < 0.0)                     << 
8200         std::cout << "CURRENT TIME < 0" << BE << 
8201     //                                        << 
8202     if (BEGIN_TIME < 1.50 * TAUF)             << 
8203     {                                         << 
8204         LOC_TIME_BEGIN = BEGIN_TIME;             6722         LOC_TIME_BEGIN = BEGIN_TIME;
8205         //                                    << 6723 //
8206         while ((LOC_TIME_BEGIN < 1.5 * TAUF)  << 6724         while((LOC_TIME_BEGIN<1.5*TAUF)&&fchoice==0){
8207         {                                     << 
8208                                                  6725 
8209             LOC_TIME_END = LOC_TIME_BEGIN + S << 6726          LOC_TIME_END = LOC_TIME_BEGIN + STEP_LENGTH;
8210             //                                << 6727 //
8211             // NOW WE ESTIMATE THE MEAN VALUE << 6728 // NOW WE ESTIMATE THE MEAN VALUE OF THE FISSION WIDTH WITHIN THE SMALL INTERVAL
8212             // INTERVAL                       << 6729          fGF_LOC=(func_trans(LOC_TIME_BEGIN,ZF,AF,BET,Y,FT,t_0)+func_trans(LOC_TIME_END,ZF,AF,BET,Y,FT,t_0))/2.0;
8213             fGF_LOC = (func_trans(LOC_TIME_BE << 6730 //
8214                        func_trans(LOC_TIME_EN << 6731          fGF_LOC = fGF_LOC * GF;
8215                       2.0;                    << 6732 
8216             //                                << 6733 // TS2 IS THE MEAN DECAY TIME OF THE FISSION CHANNEL
8217             fGF_LOC = fGF_LOC * GF;           << 6734                  if(fGF_LOC>0.0){
8218                                               << 6735                      TS2 = HBAR/fGF_LOC;
8219             // TS2 IS THE MEAN DECAY TIME OF  << 6736                  }else{
8220             if (fGF_LOC > 0.0)                << 6737                      TS2 = 0.0;
8221             {                                 << 6738                  }
8222                 TS2 = HBAR / fGF_LOC;         << 6739 //
8223             }                                 << 6740                  if(TS2>0.0){
8224             else                              << 6741                      LAMBDA  = 1.0/TS1 + 1.0/TS2;
8225             {                                 << 6742                  }else{
8226                 TS2 = 0.0;                    << 6743                      LAMBDA = 1.0/TS1;
8227             }                                 << 6744                  }
8228             //                                << 6745 //
8229             if (TS2 > 0.0)                    << 6746 // This is the probability to survive the decay at this step
8230             {                                 << 6747                  REAC_PROB = std::exp(-1.0*STEP_LENGTH*LAMBDA);
8231                 LAMBDA = 1.0 / TS1 + 1.0 / TS << 6748 // I GENERATE A RANDOM NUMBER
8232             }                                 << 6749                  X = G4AblaRandom::flat();
8233             else                              << 6750                  if(X>REAC_PROB){
8234             {                                 << 6751 // THEN THE EVAPORATION OR FISSION HAS OCCURED
8235                 LAMBDA = 1.0 / TS1;           << 6752                         FISS_PROB = fGF_LOC / (fGF_LOC+GP);
                                                   >> 6753                         X = G4AblaRandom::flat();
                                                   >> 6754 //                       WRITE(6,*)'X=',X
                                                   >> 6755                         if(X<FISS_PROB){
                                                   >> 6756 // FISSION OCCURED
                                                   >> 6757                            fchoice = 2;
                                                   >> 6758                         }else{
                                                   >> 6759 // EVAPORATION OCCURED
                                                   >> 6760                            fchoice = 1;
                                                   >> 6761                         }
                                                   >> 6762                   }// if x
                                                   >> 6763                   LOC_TIME_BEGIN = LOC_TIME_END;
                                                   >> 6764        }// while
                                                   >> 6765 // Take the real decay time of this decay step
                                                   >> 6766       fT_LAPSE = LOC_TIME_END - BEGIN_TIME;
                                                   >> 6767       }// if BEGIN_TIME
                                                   >> 6768 //
                                                   >> 6769 // NOW, IF NOTHING HAPPENED DURING TRANSIENT TIME
                                                   >> 6770   direct106:
                                                   >> 6771     if(fchoice==0){
                                                   >> 6772             fGF_LOC=GF;
                                                   >> 6773             FISS_PROB = GF / (GF+GP);
                                                   >> 6774  
                                                   >> 6775 // Added for cases where already at the beginning BEGIN_TIME > 1.5d0*TAUF
                                                   >> 6776             if(GF>0.0){
                                                   >> 6777                  TS2 = HBAR/GF;
                                                   >> 6778             }else{
                                                   >> 6779                  TS2 = 0.0;
                                                   >> 6780             }
                                                   >> 6781 
                                                   >> 6782             if(TS2>0.0){
                                                   >> 6783                  LAMBDA  = 1./TS1 + 1./TS2;
                                                   >> 6784             }else{
                                                   >> 6785                  LAMBDA = 1./TS1;
8236             }                                    6786             }
8237             //                                << 6787 //
8238             // This is the probability to sur << 
8239             REAC_PROB = std::exp(-1.0 * STEP_ << 
8240             // I GENERATE A RANDOM NUMBER     << 
8241             X = G4AblaRandom::flat();            6788             X = G4AblaRandom::flat();
8242             if (X > REAC_PROB)                << 
8243             {                                 << 
8244                 // THEN THE EVAPORATION OR FI << 
8245                 FISS_PROB = fGF_LOC / (fGF_LO << 
8246                 X = G4AblaRandom::flat();     << 
8247                 //                       WRIT << 
8248                 if (X < FISS_PROB)            << 
8249                 {                             << 
8250                     // FISSION OCCURED        << 
8251                     fchoice = 2;              << 
8252                 }                             << 
8253                 else                          << 
8254                 {                             << 
8255                     // EVAPORATION OCCURED    << 
8256                     fchoice = 1;              << 
8257                 }                             << 
8258             } // if x                         << 
8259             LOC_TIME_BEGIN = LOC_TIME_END;    << 
8260         } // while                            << 
8261           // Take the real decay time of this << 
8262         fT_LAPSE = LOC_TIME_END - BEGIN_TIME; << 
8263     } // if BEGIN_TIME                        << 
8264       //                                      << 
8265       // NOW, IF NOTHING HAPPENED DURING TRAN << 
8266 direct106:                                    << 
8267     if (fchoice == 0)                         << 
8268     {                                         << 
8269         fGF_LOC = GF;                         << 
8270         FISS_PROB = GF / (GF + GP);           << 
8271                                               << 
8272         // Added for cases where already at t << 
8273         if (GF > 0.0)                         << 
8274         {                                     << 
8275             TS2 = HBAR / GF;                  << 
8276         }                                     << 
8277         else                                  << 
8278         {                                     << 
8279             TS2 = 0.0;                        << 
8280         }                                     << 
8281                                                  6789 
8282         if (TS2 > 0.0)                        << 6790             if(X<FISS_PROB){
8283         {                                     << 6791 // FISSION OCCURED
8284             LAMBDA = 1. / TS1 + 1. / TS2;     << 6792                   fchoice = 2;
8285         }                                     << 6793             }else{
8286         else                                  << 6794 // EVAPORATION OCCURED
8287         {                                     << 6795                   fchoice = 1;
8288             LAMBDA = 1. / TS1;                << 6796             }
8289         }                                     << 6797 //
8290         //                                    << 6798 //TIRAGE ALEATOIRE DANS UNE EXPONENTIELLLE : Y=EXP(-X/T)
8291         X = G4AblaRandom::flat();             << 6799 //       EXPOHAZ=-T*LOG(HAZ(K))
                                                   >> 6800        fT_LAPSE = fT_LAPSE -1.0/LAMBDA*std::log(G4AblaRandom::flat());
                                                   >> 6801       }
                                                   >> 6802 //
                                                   >> 6803   direct107:
8292                                                  6804 
8293         if (X < FISS_PROB)                    << 6805   (*T_LAPSE)=fT_LAPSE;
8294         {                                     << 6806   (*GF_LOC)=fGF_LOC;
8295             // FISSION OCCURED                << 6807   (*CHOICE)=fchoice;
8296             fchoice = 2;                      << 6808   return;
8297         }                                     << 
8298         else                                  << 
8299         {                                     << 
8300             // EVAPORATION OCCURED            << 
8301             fchoice = 1;                      << 
8302         }                                     << 
8303         //                                    << 
8304         // TIRAGE ALEATOIRE DANS UNE EXPONENT << 
8305         //       EXPOHAZ=-T*LOG(HAZ(K))       << 
8306         fT_LAPSE = fT_LAPSE - 1.0 / LAMBDA *  << 
8307     }                                         << 
8308     //                                        << 
8309 direct107:                                    << 
8310                                               << 
8311     (*T_LAPSE) = fT_LAPSE;                    << 
8312     (*GF_LOC) = fGF_LOC;                      << 
8313     (*CHOICE) = fchoice;                      << 
8314     return;                                   << 
8315 }                                                6809 }
8316                                                  6810 
8317 G4double G4Abla::tunnelling(G4double A,       << 6811 G4double G4Abla::tunnelling(G4double A,G4double ZPRF,G4double Y,G4double EE,G4double EF,G4double TEMP,G4double DENSG,G4double DENSF,G4double ENH_FACT)
8318                             G4double ZPRF,    << 6812 {
8319                             G4double Y,       << 6813 // Subroutine to caluclate fission width with included effects
8320                             G4double EE,      << 6814 // of tunnelling through the fission barrier
8321                             G4double EF,      << 6815 
8322                             G4double TEMP,    << 6816       G4double PI = 3.14159;
8323                             G4double DENSG,   << 6817       G4int IZ, IN;
8324                             G4double DENSF,   << 6818       G4double MFCD,OMEGA,HOMEGA1,HOMEGA2=0.,GFTUN;
8325                             G4double ENH_FACT << 6819       G4double E1,E2,EXP_FACT,CORR_FUNCT,FACT1,FACT2,FACT3;
8326 {                                             << 6820 
8327     // Subroutine to caluclate fission width  << 6821       IZ = idnint(ZPRF);
8328     // of tunnelling through the fission barr << 6822       IN = idnint(A-ZPRF);
8329                                               << 6823 
8330     G4double PI = 3.14159;                    << 6824 // For low energies system "sees" LD barrier
8331     G4int IZ, IN;                             << 6825       fomega_sp(A,Y,&MFCD,&OMEGA,&HOMEGA1);
8332     G4double MFCD, OMEGA, HOMEGA1, HOMEGA2 =  << 6826 
8333     G4double E1, E2, EXP_FACT, CORR_FUNCT, FA << 6827       if(mod(IN,2)==0&&mod(IZ,2)==0){    // e-e
8334                                               << 6828 // Due to pairing gap, even-even nuclei cannot tunnel for excitation energy lower
8335     IZ = idnint(ZPRF);                        << 6829 // than pairing gap (no levels at which system can be)
8336     IN = idnint(A - ZPRF);                    << 6830       EE = EE - 12.0/std::sqrt(A);
8337                                               << 6831       HOMEGA2 = 1.04;
8338     // For low energies system "sees" LD barr << 6832       }
8339     fomega_sp(A, Y, &MFCD, &OMEGA, &HOMEGA1); << 6833 
8340                                               << 6834       if(mod(IN,2)==1&&mod(IZ,2)==1){   // o-o
8341     if (mod(IN, 2) == 0 && mod(IZ, 2) == 0)   << 6835       HOMEGA2 = 0.65;
8342     { // e-e                                  << 6836       }
8343         // Due to pairing gap, even-even nucl << 6837 
8344         // lower than pairing gap (no levels  << 6838       if(mod(IN,2)==1&&mod(IZ,2)==0){   // o-e
8345         EE = EE - 12.0 / std::sqrt(A);        << 6839       HOMEGA2 = 0.8;
8346         HOMEGA2 = 1.04;                       << 6840       }
8347     }                                         << 6841 
8348                                               << 6842       if(mod(IN,2)==0&&mod(IZ,2)==1){   // e-0
8349     if (mod(IN, 2) == 1 && mod(IZ, 2) == 1)   << 6843       HOMEGA2 = 0.8;
8350     { // o-o                                  << 6844       }
8351         HOMEGA2 = 0.65;                       << 6845 
8352     }                                         << 6846       E1 = EF + HOMEGA1/2.0/PI*std::log(HOMEGA1*(2.0*PI+HOMEGA2)/4.0/PI/PI);
8353                                               << 6847 
8354     if (mod(IN, 2) == 1 && mod(IZ, 2) == 0)   << 6848       E2 = EF + HOMEGA2/(2.0*PI)*std::log(1.0+2.0*PI/HOMEGA2);
8355     { // o-e                                  << 6849 
8356         HOMEGA2 = 0.8;                        << 6850 // AKH May 2013 - Due to approximations in the analytical integration, at energies
8357     }                                         << 6851 // just above barrier Pf was to low, at energies below
8358                                               << 6852 // barrier it was somewhat higher. LInes below are supposed to correct for this.
8359     if (mod(IN, 2) == 0 && mod(IZ, 2) == 1)   << 6853 // Factor 0.20 in EXP_FACT comes from the slope of the Pf(Eexc) (Gavron's data)
8360     { // e-0                                  << 6854 // around fission barrier.
8361         HOMEGA2 = 0.8;                        << 6855       EXP_FACT = (EE-EF)/(HOMEGA2/(2.0*PI));
8362     }                                         << 6856       if(EXP_FACT>700.0) EXP_FACT = 700.0;
8363                                               << 6857       CORR_FUNCT = HOMEGA1 * (1.0-1.0/(1.0+std::exp(EXP_FACT)));
8364     E1 = EF + HOMEGA1 / 2.0 / PI * std::log(H << 6858       if(mod(IN,2)==0&&mod(IZ,2)==0){
8365                                               << 6859       CORR_FUNCT = HOMEGA1 * (1.0-1.0/(1.0+std::exp(EXP_FACT)));
8366     E2 = EF + HOMEGA2 / (2.0 * PI) * std::log << 6860       }
8367                                               << 6861 
8368     // AKH May 2013 - Due to approximations i << 6862       FACT1 = HOMEGA1/(2.0*PI*TEMP+HOMEGA1);
8369     // energies just above barrier Pf was to  << 6863       FACT2 = (2.0*PI/(2.0*PI+HOMEGA2)-HOMEGA1*(2.0*PI+HOMEGA2)/4.0/PI/PI)/(E2-E1);
8370     // somewhat higher. LInes below are suppo << 6864       FACT3 = HOMEGA2/(2.0*PI*TEMP-HOMEGA2);
8371     // in EXP_FACT comes from the slope of th << 6865 
8372     // fission barrier.                       << 6866       if(EE<E1){
8373     EXP_FACT = (EE - EF) / (HOMEGA2 / (2.0 *  << 6867       GFTUN = FACT1*(std::exp(EE/TEMP)*std::exp(2.0*PI*(EE-EF)/HOMEGA1)-std::exp(-2.0*PI*EF/HOMEGA1));
8374     if (EXP_FACT > 700.0)                     << 6868       }else{
8375         EXP_FACT = 700.0;                     << 6869         if(EE>=E1&&EE<E2){
8376     CORR_FUNCT = HOMEGA1 * (1.0 - 1.0 / (1.0  << 6870          GFTUN = std::exp(EE/TEMP)*(0.50+FACT2*(EE-EF-TEMP))-std::exp(E1/TEMP)*(0.5+FACT2*(E1-EF-TEMP))+FACT1*(std::exp(E1/TEMP)*std::exp(2.0*PI*(E1-EF)/HOMEGA1)-std::exp(-2.0*PI*EF/HOMEGA1));
8377     if (mod(IN, 2) == 0 && mod(IZ, 2) == 0)   << 6871         }else{
8378     {                                         << 6872          GFTUN = std::exp(EE/TEMP)*(1.0+FACT3*std::exp(-2.0*PI*(EE-EF)/HOMEGA2))-std::exp(E2/TEMP)*(1.0+FACT3*std::exp(-2.0*PI*(E2-EF)/HOMEGA2))+std::exp(E2/TEMP)*(0.5+FACT2*(E2-EF-TEMP))-std::exp(E1/TEMP)*(0.5+FACT2*(E1-EF-TEMP))+FACT1*(std::exp(E1/TEMP)*std::exp(2.0*PI*(E1-EF)/HOMEGA1)-std::exp(-2.0*PI*EF/HOMEGA1));
8379         CORR_FUNCT = HOMEGA1 * (1.0 - 1.0 / ( << 
8380     }                                         << 
8381                                               << 
8382     FACT1 = HOMEGA1 / (2.0 * PI * TEMP + HOME << 
8383     FACT2 = (2.0 * PI / (2.0 * PI + HOMEGA2)  << 
8384     FACT3 = HOMEGA2 / (2.0 * PI * TEMP - HOME << 
8385                                               << 
8386     if (EE < E1)                              << 
8387     {                                         << 
8388         GFTUN = FACT1 *                       << 
8389                 (std::exp(EE / TEMP) * std::e << 
8390     }                                         << 
8391     else                                      << 
8392     {                                         << 
8393         if (EE >= E1 && EE < E2)              << 
8394         {                                     << 
8395             GFTUN = std::exp(EE / TEMP) * (0. << 
8396                     std::exp(E1 / TEMP) * (0. << 
8397                     FACT1 * (std::exp(E1 / TE << 
8398                              std::exp(-2.0 *  << 
8399         }                                        6873         }
8400         else                                  << 6874       }
8401         {                                     << 6875       GFTUN = GFTUN/std::exp(EE/TEMP)*DENSF*ENH_FACT/DENSG/2.0/PI;
8402             GFTUN = std::exp(EE / TEMP) * (1. << 6876       GFTUN = GFTUN * CORR_FUNCT;
8403                     std::exp(E2 / TEMP) * (1. << 6877  return GFTUN;
8404                     std::exp(E2 / TEMP) * (0. << 6878 }
8405                     std::exp(E1 / TEMP) * (0. << 6879 
8406                     FACT1 * (std::exp(E1 / TE << 6880 
8407                              std::exp(-2.0 *  << 6881 void G4Abla::fission_width(G4double ZPRF,G4double A,G4double EE,G4double BS,G4double BK,G4double EF,G4double Y,G4double *GF,G4double *TEMP,G4double JPR,G4int IEROT,G4int FF_ALLOWED,G4int OPTCOL,G4int OPTSHP,G4double DENSG)
8408         }                                     << 6882 {
8409     }                                         << 6883 //
8410     GFTUN = GFTUN / std::exp(EE / TEMP) * DEN << 6884  G4double FNORM,MASS_ASYM_SADD_B,FP_PER,FP_PAR,SIG_PER_SP,SIG_PAR_SP;
8411     GFTUN = GFTUN * CORR_FUNCT;               << 6885  G4double Z2OVERA,ftemp,fgf,DENSF,ECOR,EROT,qr;
8412     return GFTUN;                             << 6886  G4double DCR,UCR,ENH_FACTA,ENH_FACTB,ENH_FACT,PONFE;
8413 }                                             << 6887  G4double PI = 3.14159;
8414                                               << 6888 
8415 void G4Abla::fission_width(G4double ZPRF,     << 6889       DCR = fiss->dcr;
8416                            G4double A,        << 6890       UCR = fiss->ucr;
8417                            G4double EE,       << 6891       Z2OVERA = ZPRF * ZPRF / A;
8418                            G4double BS,       << 6892 
8419                            G4double BK,       << 6893 // Nuclei below Businaro-Gallone point do not go through fission
8420                            G4double EF,       << 6894       if((ZPRF<=55.0) || (FF_ALLOWED==0)){
8421                            G4double Y,        << 
8422                            G4double* GF,      << 
8423                            G4double* TEMP,    << 
8424                            G4double JPR,      << 
8425                            G4int IEROT,       << 
8426                            G4int FF_ALLOWED,  << 
8427                            G4int OPTCOL,      << 
8428                            G4int OPTSHP,      << 
8429                            G4double DENSG)    << 
8430 {                                             << 
8431     //                                        << 
8432     G4double FNORM, MASS_ASYM_SADD_B, FP_PER, << 
8433     G4double Z2OVERA, ftemp, fgf, DENSF, ECOR << 
8434     G4double DCR, UCR, ENH_FACTA, ENH_FACTB,  << 
8435     G4double PI = 3.14159;                    << 
8436                                               << 
8437     DCR = fiss->dcr;                          << 
8438     UCR = fiss->ucr;                          << 
8439     Z2OVERA = ZPRF * ZPRF / A;                << 
8440                                               << 
8441     // Nuclei below Businaro-Gallone point do << 
8442     if ((ZPRF <= 55.0) || (FF_ALLOWED == 0))  << 
8443     {                                         << 
8444         (*GF) = 0.0;                             6895         (*GF) = 0.0;
8445         (*TEMP) = 0.5;                           6896         (*TEMP) = 0.5;
8446         return;                                  6897         return;
8447     }                                         << 6898       }
8448                                                  6899 
8449     // Level density above SP                 << 6900 // Level density above SP
8450     // Saddle-point deformation is defbet as  << 6901 // Saddle-point deformation is defbet as above. But, FP_PER and FP_PAR
8451     // are calculated for fission in DENSNIV  << 6902 // are calculated for fission in DENSNIV acc to Myers and Hasse, and their
8452     // parametrization is done as function of << 6903 // parametrization is done as function of y
8453     densniv(A, ZPRF, EE, EF, &DENSF, 0.0, BS, << 6904       densniv(A,ZPRF,EE,EF,&DENSF,0.0,BS,BK,&ftemp,OPTSHP,0,Y,&ECOR,JPR,1,&qr);
8454                                               << 6905 
8455     if (OPTCOL == 0)                          << 6906       if(OPTCOL==0){
8456     {                                         << 6907          fgf= DENSF/DENSG/PI/2.0*ftemp;
8457         fgf = DENSF / DENSG / PI / 2.0 * ftem << 6908          (*TEMP)=ftemp;
8458         (*TEMP) = ftemp;                      << 6909          (*GF)= fgf;
8459         (*GF) = fgf;                          << 6910          return;
8460         return;                               << 6911       }
8461     }                                         << 
8462                                                  6912 
8463     // FP = 2/5*M0*R0**2/HBAR**2 * A**(5/3) * << 6913 // FP = 2/5*M0*R0**2/HBAR**2 * A**(5/3) * (1 + DEFBET/3)
8464     // FP is used to calculate the spin-cutof << 6914 // FP is used to calculate the spin-cutoff parameter SIG=FP*TEMP/hbar**2; hbar**2
8465     // hbar**2 is, therefore, included in FP  << 6915 // is, therefore, included in FP in order to avoid problems with large exponents
8466     // exponents The factor fnorm inlcudes th << 6916 // The factor fnorm inlcudes then R0, M0 and hbar**2 -
8467     // R0*M0/hbar**2 = 1.2fm*931.49MeV/c**2 / << 6917 // fnorm = R0*M0/hbar**2 = 1.2fm*931.49MeV/c**2 /(6.582122e-22 MeVs)**2 and is
8468     // units 1/MeV                            << 6918 // in units 1/MeV
8469     FNORM = 1.2 * 1.2 * 931.49 * 1.e-2 / (9.0 << 6919       FNORM = 1.2*1.2 * 931.49 * 1.e-2 / (9.0 * 6.582122*6.582122);
8470     // FP_PER ~ 1+7*y/6, FP_PAR ~ 1-7*y/3 (Ha << 6920 // FP_PER ~ 1+7*y/6, FP_PAR ~ 1-7*y/3 (Hasse & Myers, Geom. relat. macr. nucl. phys.)
8471     // phys.) Perpendicular moment of inertia << 6921 // Perpendicular moment of inertia
8472     FP_PER = 2.0 / 5.0 * std::pow(A, 5.0 / 3. << 6922       FP_PER = 2.0/5.0*std::pow(A,5.0/3.0)*FNORM*(1. + 7.0/6.0*Y*(1.0+1396.0/255.*Y));
8473                                               << 6923 
8474     // AK - Jan 2011 - following line is need << 6924 // AK - Jan 2011 - following line is needed, as for these nuclei it seems that
8475     // FP_PER calculated according to above f << 6925 // FP_PER calculated according to above formula has too large values, leading to too
8476     // to too large ENH_FACT                  << 6926 // large ENH_FACT
8477     if (Z2OVERA <= 30.0)                      << 6927       if(Z2OVERA<=30.0) FP_PER = 6.50;
8478         FP_PER = 6.50;                        << 6928 
8479                                               << 6929 // Parallel moment of inertia
8480     // Parallel moment of inertia             << 6930       FP_PAR = 2.0/5.0*std::pow(A,5.0/3.0)*FNORM*(1.0 - 7.0/3.0*Y*(1.0-389.0/255.0*Y));
8481     FP_PAR = 2.0 / 5.0 * std::pow(A, 5.0 / 3. << 6931       if(FP_PAR<0.0) FP_PAR = 0.0;
8482     if (FP_PAR < 0.0)                         << 6932 
8483         FP_PAR = 0.0;                         << 6933       EROT = JPR * JPR / (2.0 * std::sqrt(FP_PAR*FP_PAR + FP_PER*FP_PER));
8484                                               << 6934       if(IEROT==1) EROT = 0.0;
8485     EROT = JPR * JPR / (2.0 * std::sqrt(FP_PA << 6935 
8486     if (IEROT == 1)                           << 6936 // Perpendicular spin cut-off parameter
8487         EROT = 0.0;                           << 6937       SIG_PER_SP = std::sqrt(FP_PER * ftemp);
8488                                               << 6938 
8489     // Perpendicular spin cut-off parameter   << 6939       if(SIG_PER_SP<1.0) SIG_PER_SP = 1.0;
8490     SIG_PER_SP = std::sqrt(FP_PER * ftemp);   << 6940 
8491                                               << 6941 // Parallel spin cut-off parameter
8492     if (SIG_PER_SP < 1.0)                     << 6942       SIG_PAR_SP = std::sqrt(FP_PAR * ftemp);
8493         SIG_PER_SP = 1.0;                     << 6943       ENH_FACT = 1.0;
8494                                               << 6944 //
8495     // Parallel spin cut-off parameter        << 6945         if(A>223.0){
8496     SIG_PAR_SP = std::sqrt(FP_PAR * ftemp);   << 6946          MASS_ASYM_SADD_B = 2.0;
8497     ENH_FACT = 1.0;                           << 6947         }else{
8498     //                                        << 6948          MASS_ASYM_SADD_B = 1.0;
8499     if (A > 223.0)                            << 
8500     {                                         << 
8501         MASS_ASYM_SADD_B = 2.0;               << 
8502     }                                         << 
8503     else                                      << 
8504     {                                         << 
8505         MASS_ASYM_SADD_B = 1.0;               << 
8506     }                                         << 
8507                                               << 
8508     // actinides with low barriers            << 
8509     if (Z2OVERA > 35. && Z2OVERA <= (110. * 1 << 
8510     {                                         << 
8511         // Barrier A is axial asymmetric      << 
8512         ENH_FACTA = std::sqrt(8.0 * PI) * SIG << 
8513         // Barrier B is axial symmetric       << 
8514         ENH_FACTB = MASS_ASYM_SADD_B * SIG_PE << 
8515         // Total enhancement                  << 
8516         ENH_FACT = ENH_FACTA * ENH_FACTB / (E << 
8517     }                                         << 
8518     else                                      << 
8519     {                                         << 
8520         // nuclei with high fission barriers  << 
8521         // symmetric)                         << 
8522         if (Z2OVERA <= 35.)                   << 
8523         {                                     << 
8524             ENH_FACT = MASS_ASYM_SADD_B * SIG << 
8525         }                                        6949         }
8526         else                                  << 6950 
8527         {                                     << 6951 // actinides with low barriers
8528             // super-heavy nuclei  (only barr << 6952       if(Z2OVERA>35.&&Z2OVERA<=(110.*110./298.0)){
8529             ENH_FACT = std::sqrt(8.0 * PI) *  << 6953 // Barrier A is axial asymmetric
                                                   >> 6954        ENH_FACTA = std::sqrt(8.0*PI) * SIG_PER_SP*SIG_PER_SP * SIG_PAR_SP;
                                                   >> 6955 // Barrier B is axial symmetric
                                                   >> 6956       ENH_FACTB = MASS_ASYM_SADD_B * SIG_PER_SP*SIG_PER_SP;
                                                   >> 6957 // Total enhancement
                                                   >> 6958       ENH_FACT = ENH_FACTA * ENH_FACTB / (ENH_FACTA + ENH_FACTB);
                                                   >> 6959       }else{
                                                   >> 6960 // nuclei with high fission barriers (only barrier B plays a role, axial symmetric)
                                                   >> 6961         if(Z2OVERA<=35.){
                                                   >> 6962           ENH_FACT = MASS_ASYM_SADD_B*SIG_PER_SP*SIG_PER_SP;
                                                   >> 6963          }else{
                                                   >> 6964 // super-heavy nuclei  (only barrier A plays a role, axial asymmetric)
                                                   >> 6965           ENH_FACT =  std::sqrt(8.0*PI) * SIG_PER_SP*SIG_PER_SP* SIG_PAR_SP;
8530         }                                        6966         }
8531     }                                         << 6967       }
8532                                                  6968 
8533     // Fading-out with excitation energy abov << 6969 // Fading-out with excitation energy above the saddle point:
8534     PONFE = (ECOR - UCR - EROT) / DCR;        << 6970       PONFE = (ECOR-UCR-EROT)/DCR;
8535     if (PONFE > 700.)                         << 6971       if(PONFE>700.) PONFE = 700.0;
8536         PONFE = 700.0;                        << 6972 // Fading-out according to Junghans:
8537     // Fading-out according to Junghans:      << 6973       ENH_FACT = 1.0/(1.0+std::exp(PONFE))*ENH_FACT+1.0;
8538     ENH_FACT = 1.0 / (1.0 + std::exp(PONFE))  << 6974 
8539                                               << 6975       if(ENH_FACT<1.0)ENH_FACT = 1.0;
8540     if (ENH_FACT < 1.0)                       << 6976       fgf= DENSF/DENSG/PI/2.0*ftemp*ENH_FACT;
8541         ENH_FACT = 1.0;                       << 6977 
8542     fgf = DENSF / DENSG / PI / 2.0 * ftemp *  << 6978 // Tunneling
8543                                               << 6979       if(EE<EF+1.){
8544     // Tunneling                              << 6980       fgf=tunnelling(A,ZPRF,Y,EE,EF,ftemp,DENSG,DENSF,ENH_FACT);
8545     if (EE < EF)                              << 6981       }
8546     {                                         << 6982 //
8547         fgf = tunnelling(A, ZPRF, Y, EE, EF,  << 6983       (*GF)= fgf;
8548     }                                         << 6984       (*TEMP)=ftemp;
8549     //                                        << 6985  return;
8550     (*GF) = fgf;                              << 
8551     (*TEMP) = ftemp;                          << 
8552     return;                                   << 
8553 }                                                6986 }
8554                                                  6987 
8555 void G4Abla::lorb(G4double AMOTHER,           << 
8556                   G4double ADAUGHTER,         << 
8557                   G4double LMOTHER,           << 
8558                   G4double EEFINAL,           << 
8559                   G4double* LORBITAL,         << 
8560                   G4double* SIGMA_LORBITAL)   << 
8561 {                                             << 
8562                                               << 
8563     G4double AFRAGMENT, S4FINAL, ALEVDENS;    << 
8564     G4double THETA_MOTHER, THETA_ORBITAL;     << 
8565                                               << 
8566     /*                                        << 
8567     C     Values on input:                    << 
8568     C       AMOTHER          mass of mother n << 
8569     C       ADAUGHTER        mass of daughter << 
8570     C       LMOTHER          angular momentum << 
8571     C       EEFINAL          excitation energ << 
8572     C                          (sum of daught << 
8573     C                                         << 
8574     C     Values on output:                   << 
8575     C       LORBITAL         mean value of or << 
8576     C                           (assumed to b << 
8577     C       SIGMA_LORBITAL   standard deviati << 
8578     */                                        << 
8579     if (EEFINAL <= 0.01)                      << 
8580         EEFINAL = 0.01;                       << 
8581     AFRAGMENT = AMOTHER - ADAUGHTER;          << 
8582     ALEVDENS = 0.073 * AMOTHER + 0.095 * std: << 
8583     S4FINAL = ALEVDENS * EEFINAL;             << 
8584     if (S4FINAL <= 0.0 || S4FINAL > 100000.)  << 
8585     {                                         << 
8586         std::cout << "S4FINAL:" << S4FINAL << << 
8587     }                                         << 
8588     THETA_MOTHER = 0.0111 * std::pow(AMOTHER, << 
8589     THETA_ORBITAL = 0.0323 / std::pow(AMOTHER << 
8590                     std::pow(std::pow(AFRAGME << 
8591                     (AFRAGMENT + ADAUGHTER);  << 
8592                                                  6988 
8593     *LORBITAL = -1. * THETA_ORBITAL * (LMOTHE << 6989 void G4Abla::lorb(G4double AMOTHER,G4double ADAUGHTER,G4double LMOTHER,G4double EEFINAL,G4double *LORBITAL,G4double *SIGMA_LORBITAL)
                                                   >> 6990 {
                                                   >> 6991 
                                                   >> 6992     G4double AFRAGMENT,S4FINAL,ALEVDENS;
                                                   >> 6993     G4double THETA_MOTHER,THETA_ORBITAL;
                                                   >> 6994 
                                                   >> 6995 /*
                                                   >> 6996 C     Values on input:
                                                   >> 6997 C       AMOTHER          mass of mother nucleus
                                                   >> 6998 C       ADAUGHTER        mass of daughter fragment
                                                   >> 6999 C       LMOTHER          angular momentum of mother (may be real)
                                                   >> 7000 C       EEFINAL          excitation energy after emission
                                                   >> 7001 C                          (sum of daughter and fragment)
                                                   >> 7002 C
                                                   >> 7003 C     Values on output:
                                                   >> 7004 C       LORBITAL         mean value of orbital angular momentum
                                                   >> 7005 C                           (assumed to be fully aligned with LMOTHER)
                                                   >> 7006 C       SIGMA_LORBITAL   standard deviation of the orbital angular momentum
                                                   >> 7007 */
                                                   >> 7008     if (EEFINAL<=0.01) EEFINAL = 0.01;
                                                   >> 7009         AFRAGMENT = AMOTHER - ADAUGHTER;
                                                   >> 7010         ALEVDENS = 0.073*AMOTHER + 0.095*std::pow(AMOTHER,2.0/3.0);
                                                   >> 7011         S4FINAL = ALEVDENS * EEFINAL;
                                                   >> 7012         if(S4FINAL <= 0.0 || S4FINAL > 100000.){
                                                   >> 7013             std::cout<< "S4FINAL:" << S4FINAL << ALEVDENS << EEFINAL  << idnint(AMOTHER) << idnint(AFRAGMENT) << std::endl;
                                                   >> 7014         }
                                                   >> 7015         THETA_MOTHER = 0.0111 * std::pow(AMOTHER,1.66667);
                                                   >> 7016         THETA_ORBITAL = 0.0323 / std::pow(AMOTHER,2.) *std::pow(std::pow(AFRAGMENT,0.33333) + std::pow(ADAUGHTER,0.33333),2.) * AFRAGMENT*ADAUGHTER*(AFRAGMENT+ADAUGHTER);
8594                                                  7017 
8595     *SIGMA_LORBITAL = std::sqrt(std::sqrt(S4F << 7018         *LORBITAL = -1.* THETA_ORBITAL * (LMOTHER / THETA_MOTHER + std::sqrt(S4FINAL) /(ALEVDENS*LMOTHER));
8596                                                  7019 
8597     return;                                   << 7020         *SIGMA_LORBITAL = std::sqrt(std::sqrt(S4FINAL) * THETA_ORBITAL / ALEVDENS);
                                                   >> 7021 
                                                   >> 7022  return;
8598 }                                                7023 }
8599                                                  7024 
8600 // Random generator according to a distributi    7025 // Random generator according to a distribution similar to a
8601 // Maxwell distribution with quantum-mech. x- << 7026 // Maxwell distribution with quantum-mech. x-section for neutrons according to KHS
8602 // KHS                                        << 
8603 //      Y = SQRT(X) * EXP(-X/T) (approximatio    7027 //      Y = SQRT(X) * EXP(-X/T) (approximation:)
8604 G4double G4Abla::fvmaxhaz_neut(G4double x)    << 7028 G4double G4Abla::fvmaxhaz_neut(G4double x){
8605 {                                             << 
8606                                                  7029 
8607     return (2.0 * x * std::sqrt(std::log(G4Ab << 7030  return (2.0 * x * std::sqrt(std::log(G4AblaRandom::flat()) * std::log(G4AblaRandom::flat())));
8608 }                                                7031 }
8609                                                  7032 
8610 void G4Abla::imf(G4double ACN,                << 7033 void G4Abla::imf(G4double ACN,G4double ZCN,G4double TEMP,G4double EE,G4double *ZIMF,G4double *AIMF,G4double *BIMF,G4double *SBIMF,G4double *TIMF,G4double JPRF)
8611                  G4double ZCN,                << 7034 {
8612                  G4double TEMP,               << 7035 //     input variables (compound nucleus) Acn, Zcn, Temp, EE
8613                  G4double EE,                 << 7036 //     output variable (IMF) Zimf,Aimf,Bimf,Sbimf,IRNDM
8614                  G4double* ZIMF,              << 7037 //
8615                  G4double* AIMF,              << 7038 //     SBIMF = separation energy + coulomb barrier
8616                  G4double* BIMF,              << 7039 //
8617                  G4double* SBIMF,             << 7040 //     SDW(Z) is the sum over all isotopes for a given Z of the decay widths
8618                  G4double* TIMF,              << 7041 //     DW(Z,A) is the decay width of a certain nuclide
8619                  G4double JPRF)               << 7042 //
8620 {                                             << 7043 //  Last update:
8621     //     input variables (compound nucleus) << 7044 //             28/10/13 - JLRS - from abrablav4 (AK)
8622     //     output variable (IMF) Zimf,Aimf,Bi << 7045 //             13/11/16 - JLRS - Included this function in Abla++
8623     //                                        << 7046 
8624     //     SBIMF = separation energy + coulom << 7047    G4int IZIMFMAX=0;
8625     //                                        << 7048    G4int iz=0,in=0,IZIMF=0,INMI=0,INMA=0,IZCN=0,INCN=0,INIMFMI=0,INIMFMA=0,ILIMMAX=0,INNMAX=0,INMIN=0,IAIMF=0,IZSTOP=3,IZMEM=0,IA=0,INMINMEM=0,INMAXMEM=0,IIA=0;
8626     //     SDW(Z) is the sum over all isotope << 7049    G4double BS=0,BK=0,BC=0,BSHELL=0,DEFBET=0,DEFBETIMF=0,EROT=0,MAIMF=0,MAZ=0,MARES=0,AIMF_1,OMEGAP=0,fBIMF=0.0,BSIMF=0,A1PAR=0,A2PAR=0,SUM_A,EEDAUG;
8627     //     DW(Z,A) is the decay width of a ce << 7050    G4double DENSCN=0,TEMPCN=0,ECOR=0,IINERT=0,EROTCN=0,WIDTH_IMF=0.0,WIDTH1=0,IMFARG=0,QR=0,QRCN=0,DENSIMF=0,fTIMF=0,fZIMF=0,fAIMF=0.0,NIMF=0,fSBIMF=0;
8628     //                                        << 7051    G4double PI = 3.141592653589793238;
8629     //  Last update:                          << 7052    G4double ZIMF_1=0.0;
8630     //             28/10/13 - JLRS - from abr << 7053    G4double SDWprevious=0,SUMDW_TOT=0,SUM_Z=0,X=0,SUMDW_N_TOT=0,XX=0;
8631     //             13/11/16 - JLRS - Included << 7054    G4double SDW[98];
8632                                               << 7055    G4double DW[98][251];
8633     G4int IZIMFMAX = 0;                       << 7056    G4double BBIMF[98][251];
8634     G4int iz = 0, in = 0, IZIMF = 0, INMI = 0 << 7057    G4double SSBIMF[98][251];
8635           INNMAX = 0, INMIN = 0, IAIMF = 0, I << 7058    G4int OPTSHPIMF=opt->optshpimf;
8636     G4double BS = 0, BK = 0, BC = 0, BSHELL = << 7059 
8637              AIMF_1, OMEGAP = 0, fBIMF = 0.0, << 7060 // take the half of the CN and transform it in integer (floor it)
8638     G4double DENSCN = 0, TEMPCN = 0, ECOR = 0 << 7061    IZIMFMAX = idnint(ZCN / 2.0);
8639              QRCN = 0, DENSIMF = 0, fTIMF = 0 << 7062 
8640     G4double PI = 3.141592653589793238;       << 7063    if(IZIMFMAX<3){
8641     G4double ZIMF_1 = 0.0;                    << 7064          std::cout << "CHARGE_IMF line 46" << std::endl;
8642     G4double SDWprevious = 0, SUMDW_TOT = 0,  << 7065          std::cout << "Problem: IZIMFMAX < 3 " << std::endl;
8643     G4double SDW[98];                         << 7066          std::cout << "ZCN,IZIMFMAX," << ZCN << "," << IZIMFMAX << std::endl;
8644     G4double DW[98][251];                     << 7067    }
8645     G4double BBIMF[98][251];                  << 7068 
8646     G4double SSBIMF[98][251];                 << 7069   iz = idnint(ZCN);
8647     G4int OPTSHPIMF = opt->optshpimf;         << 7070   in = idnint(ACN) - iz;
8648                                               << 7071   BSHELL = ecld->ecgnz[in][iz]- ecld->vgsld[in][iz];
8649     // Initialization                         << 7072   DEFBET = ecld->beta2[in][iz];
8650     for (G4int ia = 0; ia < 98; ia++)         << 
8651         for (G4int ib = 0; ib < 251; ib++)    << 
8652         {                                     << 
8653             BBIMF[ia][ib] = 0.0;              << 
8654             SSBIMF[ia][ib] = 0.0;             << 
8655         }                                     << 
8656                                               << 
8657     // take the half of the CN and transform  << 
8658     IZIMFMAX = idnint(ZCN / 2.0);             << 
8659                                               << 
8660     if (IZIMFMAX < 3)                         << 
8661     {                                         << 
8662         std::cout << "CHARGE_IMF line 46" <<  << 
8663         std::cout << "Problem: IZIMFMAX < 3 " << 
8664         std::cout << "ZCN,IZIMFMAX," << ZCN < << 
8665     }                                         << 
8666                                               << 
8667     iz = idnint(ZCN);                         << 
8668     in = idnint(ACN) - iz;                    << 
8669     BSHELL = ecld->ecgnz[in][iz] - ecld->vgsl << 
8670     DEFBET = ecld->beta2[in][iz];             << 
8671                                               << 
8672     bsbkbc(ACN, ZCN, &BS, &BK, &BC);          << 
8673                                               << 
8674     densniv(ACN, ZCN, EE, 0.0, &DENSCN, BSHEL << 
8675                                               << 
8676     IINERT = 0.4 * 931.49 * 1.16 * 1.16 * std << 
8677     EROTCN = JPRF * JPRF * 197.328 * 197.328  << 
8678     //                                        << 
8679     for (IZIMF = 3; IZIMF <= IZIMFMAX; IZIMF+ << 
8680     {                                         << 
8681                                               << 
8682         SDW[IZIMF] = 0.0;                     << 
8683         ZIMF_1 = 1.0 * IZIMF;                 << 
8684                                               << 
8685         //     *** Find the limits that both  << 
8686                                               << 
8687         isostab_lim(IZIMF, &INIMFMI,          << 
8688                     &INIMFMA); // Bound isoto << 
8689         // Idea - very proton-rich nuclei can << 
8690         // before decaying:                   << 
8691         INIMFMI = max(1, INIMFMI - 2);        << 
8692                                               << 
8693         IZCN = idnint(ZCN);        //  Z of C << 
8694         INCN = idnint(ACN) - IZCN; //  N of C << 
8695                                               << 
8696         isostab_lim(IZCN - IZIMF,             << 
8697                     &INMI,                    << 
8698                     &INMA); // Daughter nucle << 
8699                             // limits of boun << 
8700         INMI = max(1, INMI - 2);              << 
8701         INMIN = max(INIMFMI, INCN - INMA);  / << 
8702         INNMAX = min(INIMFMA, INCN - INMI); / << 
8703                                               << 
8704         ILIMMAX = max(INNMAX, INMIN); // In o << 
8705                                       //      << 
8706                                               << 
8707         for (G4int INIMF = INMIN; INIMF <= IL << 
8708         { // Range of possible IMF isotopes   << 
8709             IAIMF = IZIMF + INIMF;            << 
8710             DW[IZIMF][IAIMF] = 0.0;           << 
8711             AIMF_1 = 1.0 * (IAIMF);           << 
8712                                               << 
8713             //         Q-values               << 
8714             mglms(ACN - AIMF_1, ZCN - ZIMF_1, << 
8715             mglms(AIMF_1, ZIMF_1, OPTSHPIMF,  << 
8716             mglms(ACN, ZCN, OPTSHPIMF, &MAZ); << 
8717                                               << 
8718             //         Barrier                << 
8719             if (ACN <= AIMF_1)                << 
8720             {                                 << 
8721                 SSBIMF[IZIMF][IAIMF] = 1.e37; << 
8722             }                                 << 
8723             else                              << 
8724             {                                 << 
8725                 barrs(idnint(ZCN - ZIMF_1), i << 
8726                 SSBIMF[IZIMF][IAIMF] = MAIMF  << 
8727                 BBIMF[IZIMF][IAIMF] = fBIMF;  << 
8728             }                                 << 
8729                                               << 
8730             // *****  Width ***************** << 
8731             DEFBETIMF = ecld->beta2[idnint(AI << 
8732                         ecld->beta2[idnint(AC << 
8733                                               << 
8734             IINERT = 0.40 * 931.490 * 1.160 * << 
8735                          (std::pow(AIMF_1, 5. << 
8736                      931.490 * 1.160 * 1.160  << 
8737                          (std::pow(AIMF_1, 1. << 
8738                          (std::pow(AIMF_1, 1. << 
8739                                               << 
8740             EROT = JPRF * JPRF * 197.328 * 19 << 
8741                                               << 
8742             //      IF(IEROT.EQ.1) EROT = 0.D << 
8743             if (EE < (SSBIMF[IZIMF][IAIMF] +  << 
8744             {                                 << 
8745                 WIDTH_IMF = 0.0;              << 
8746                 //          PRINT*,IDNINT(ACN << 
8747             }                                 << 
8748             else                              << 
8749             {                                 << 
8750                 //          here the temperat << 
8751                 // Increase of the level dens << 
8752                 // comment in ABLA            << 
8753                 //          BSIMF = ((ACN-AIM << 
8754                 //     &                ACN** << 
8755                 BSIMF = BS;                   << 
8756                 densniv(ACN,                  << 
8757                         ZCN,                  << 
8758                         EE,                   << 
8759                         SSBIMF[IZIMF][IAIMF], << 
8760                         &DENSIMF,             << 
8761                         0.0,                  << 
8762                         BSIMF,                << 
8763                         1.0,                  << 
8764                         &fTIMF,               << 
8765                         0,                    << 
8766                         0,                    << 
8767                         DEFBETIMF,            << 
8768                         &ECOR,                << 
8769                         JPRF,                 << 
8770                         2,                    << 
8771                         &QR);                 << 
8772                 IMFARG = (SSBIMF[IZIMF][IAIMF << 
8773                 if (IMFARG > 200.0)           << 
8774                     IMFARG = 200.0;           << 
8775                                               << 
8776                 WIDTH1 = width(ACN, ZCN, AIMF << 
8777                                               << 
8778                 WIDTH_IMF = WIDTH1 * std::exp << 
8779                                               << 
8780                 if (WIDTH_IMF <= 0.0)         << 
8781                 {                             << 
8782                     std::cout << "GAMMA_IMF=0 << 
8783                     std::cout << "ACN,ZCN,AIM << 
8784                               << "," << idnin << 
8785                     std::cout << "SSBIMF,TIMF << 
8786                     std::cout << "DEXP(-IMFAR << 
8787                     std::cout << "WIDTH1 =" < << 
8788                 }                             << 
8789             } // if ee                        << 
8790                                               << 
8791             SDW[IZIMF] = SDW[IZIMF] + WIDTH_I << 
8792                                                  7073 
8793             DW[IZIMF][IAIMF] = WIDTH_IMF;     << 7074   bsbkbc(ACN,ZCN,&BS,&BK,&BC);
8794                                                  7075 
8795         } // for INIMF                        << 7076   densniv(ACN,ZCN,EE,0.0,&DENSCN,BSHELL,BS,BK,&TEMPCN,0,0,DEFBET,&ECOR,JPRF,0,&QRCN);
8796     }     // for IZIMF                        << 
8797       //     End loop to calculate the decay  << 
8798       //     ******************************** << 
8799                                                  7077 
8800     //     Loop to calculate where the gamma  << 7078   IINERT = 0.4 * 931.49 * 1.16*1.16 * std::pow(ACN,5.0/3.0)*(1.0 + 0.5*std::sqrt(5./(4.*PI))*DEFBET);
8801     SDWprevious = 1.e20;                      << 7079   EROTCN = JPRF * JPRF * 197.328 * 197.328 /(2. * IINERT);
8802     IZSTOP = 0;                               << 7080 //
                                                   >> 7081   for(IZIMF=3;IZIMF<=IZIMFMAX;IZIMF++){
                                                   >> 7082   
                                                   >> 7083      SDW[IZIMF] = 0.0;
                                                   >> 7084      ZIMF_1 = 1.0*IZIMF;
                                                   >> 7085 
                                                   >> 7086 //     *** Find the limits that both IMF and partner are bound :
                                                   >> 7087 
                                                   >> 7088      isostab_lim(IZIMF,&INIMFMI,&INIMFMA);// Bound isotopes for IZIMF from INMIN to INIMFMA
                                                   >> 7089 // Idea - very proton-rich nuclei can live long enough to evaporate IMF before decaying:
                                                   >> 7090      INIMFMI = max(1,INIMFMI-2);
                                                   >> 7091 
                                                   >> 7092      IZCN = idnint(ZCN);        //  Z of CN
                                                   >> 7093      INCN = idnint(ACN) - IZCN; //  N of CN
                                                   >> 7094 
                                                   >> 7095      isostab_lim(IZCN-IZIMF,&INMI,&INMA); // Daughter nucleus after IMF emission,
                                                   >> 7096                                          // limits of bound isotopes
                                                   >> 7097      INMI = max(1,INMI-2);
                                                   >> 7098      INMIN = max(INIMFMI,INCN-INMA);  //  Both IMF and daughter must be bound
                                                   >> 7099      INNMAX = min(INIMFMA,INCN-INMI); //   "
                                                   >> 7100 
                                                   >> 7101      ILIMMAX = max(INNMAX,INMIN);     // In order to keep the variables below
                                                   >> 7102 //     ***
                                                   >> 7103 
                                                   >> 7104      for(G4int INIMF=INMIN;INIMF<=ILIMMAX;INIMF++){ // Range of possible IMF isotopes
                                                   >> 7105           IAIMF = IZIMF + INIMF;
                                                   >> 7106           DW[IZIMF][IAIMF] = 0.0;
                                                   >> 7107           AIMF_1 = 1.0*(IAIMF);
                                                   >> 7108 
                                                   >> 7109 //         Q-values
                                                   >> 7110           mglms(ACN-AIMF_1,ZCN-ZIMF_1,OPTSHPIMF,&MARES);
                                                   >> 7111           mglms(AIMF_1,ZIMF_1,OPTSHPIMF,&MAIMF);
                                                   >> 7112           mglms(ACN,ZCN,OPTSHPIMF,&MAZ);
                                                   >> 7113 
                                                   >> 7114 //         Barrier
                                                   >> 7115           if(ACN<=AIMF_1){
                                                   >> 7116             SSBIMF[IZIMF][IAIMF] = 1.e37;
                                                   >> 7117           }else{
                                                   >> 7118             barrs(idnint(ZCN-ZIMF_1),idnint(ACN-AIMF_1),idnint(ZIMF_1),idnint(AIMF_1),&fBIMF,&OMEGAP);
                                                   >> 7119             SSBIMF[IZIMF][IAIMF] = MAIMF + MARES - MAZ + fBIMF;
                                                   >> 7120             BBIMF[IZIMF][IAIMF] = fBIMF;
                                                   >> 7121           }
                                                   >> 7122 
                                                   >> 7123 // *****  Width *********************
                                                   >> 7124           DEFBETIMF = ecld->beta2[idnint(AIMF_1-ZIMF_1)][idnint(ZIMF_1)]+ecld->beta2[idnint(ACN-AIMF_1-ZCN+ZIMF_1)][idnint(ZCN-ZIMF_1)];
                                                   >> 7125 
                                                   >> 7126           IINERT = 0.40 * 931.490 * 1.160*1.160 * std::pow(ACN,5.0/3.0)*(std::pow(AIMF_1,5.0/3.0) + std::pow(ACN - AIMF_1,5.0/3.0)) + 931.490 * 1.160*1.160 * AIMF_1 * (ACN-AIMF_1) / ACN *(std::pow(AIMF_1,1.0/3.0) + std::pow(ACN - AIMF_1,1.0/3.0))*(std::pow(AIMF_1,1.0/3.0) + std::pow(ACN - AIMF_1,1.0/3.0));
                                                   >> 7127 
                                                   >> 7128           EROT = JPRF * JPRF * 197.328 * 197.328 /(2.0 * IINERT);
                                                   >> 7129 
                                                   >> 7130  //      IF(IEROT.EQ.1) EROT = 0.D0
                                                   >> 7131           if (EE<(SSBIMF[IZIMF][IAIMF]+EROT) || DENSCN<=0.0){
                                                   >> 7132            WIDTH_IMF = 0.0;
                                                   >> 7133 //          PRINT*,IDNINT(ACN),IDNINT(ZCN),IZIMF,IAIMF
                                                   >> 7134           }else{
                                                   >> 7135 //          here the temperature at "saddle point" is used
                                                   >> 7136 // Increase of the level densitiy at the barrier due to deformation; see comment in ABLA
                                                   >> 7137 //          BSIMF = ((ACN-AIMF_1)**(2.D0/3.D0) + AIMF_1**(2.D0/3.D0))/
                                                   >> 7138 //     &                ACN**(2.D0/3.D0)
                                                   >> 7139            BSIMF = BS;
                                                   >> 7140            densniv(ACN,ZCN,EE,SSBIMF[IZIMF][IAIMF],&DENSIMF,0.0,BSIMF,1.0,&fTIMF,0,0,DEFBETIMF,&ECOR,JPRF,2,&QR);
                                                   >> 7141            IMFARG = (SSBIMF[IZIMF][IAIMF]+EROTCN-EROT)/fTIMF;
                                                   >> 7142            if(IMFARG>200.0) IMFARG = 200.0;
                                                   >> 7143 
                                                   >> 7144            WIDTH1 = width(ACN,ZCN,AIMF_1,ZIMF_1,fTIMF,fBIMF,SSBIMF[IZIMF][IAIMF],EE-EROT);
                                                   >> 7145 
                                                   >> 7146            WIDTH_IMF = WIDTH1 * std::exp(-IMFARG) * QR / QRCN;
                                                   >> 7147 
                                                   >> 7148            if(WIDTH_IMF<=0.0){
                                                   >> 7149             std::cout << "GAMMA_IMF=0 -> LOOK IN GAMMA_IMF CALCULATIONS!" << std::endl;
                                                   >> 7150             std::cout << "ACN,ZCN,AIMF,ZIMF:" << idnint(ACN) << "," << idnint(ZCN) << "," << idnint(AIMF_1) << "," << idnint(ZIMF_1) << std::endl;
                                                   >> 7151             std::cout << "SSBIMF,TIMF :" << SSBIMF[IZIMF][IAIMF] << "," << fTIMF << std::endl;
                                                   >> 7152             std::cout << "DEXP(-IMFARG) = " << std::exp(-IMFARG) << std::endl;
                                                   >> 7153             std::cout << "WIDTH1 =" << WIDTH1 << std::endl;
                                                   >> 7154            }
                                                   >> 7155           }// if ee
                                                   >> 7156 
                                                   >> 7157           SDW[IZIMF] = SDW[IZIMF] + WIDTH_IMF;
                                                   >> 7158 
                                                   >> 7159           DW[IZIMF][IAIMF] = WIDTH_IMF;
                                                   >> 7160 
                                                   >> 7161      }// for INIMF
                                                   >> 7162   }// for IZIMF
                                                   >> 7163 //     End loop to calculate the decay widths ************************
                                                   >> 7164 //     ***************************************************************
                                                   >> 7165 
                                                   >> 7166 //     Loop to calculate where the gamma of IMF has the minimum ******
                                                   >> 7167       SDWprevious = 1.e20;
                                                   >> 7168       IZSTOP = 0;
8803                                                  7169 
8804     for (G4int III_ZIMF = 3; III_ZIMF <= IZIM << 7170       for(G4int III_ZIMF=3;III_ZIMF<=IZIMFMAX;III_ZIMF++){
8805     {                                         << 
8806                                                  7171 
8807         if (SDW[III_ZIMF] == 0.0)             << 7172         if(SDW[III_ZIMF]==0.0){
8808         {                                     << 7173           IZSTOP = III_ZIMF - 1;
8809             IZSTOP = III_ZIMF - 1;            << 
8810             goto imfs30;                         7174             goto imfs30;
8811         }                                        7175         }
8812                                                  7176 
8813         if (SDW[III_ZIMF] > SDWprevious)      << 7177         if(SDW[III_ZIMF]>SDWprevious){
8814         {                                     << 
8815             IZSTOP = III_ZIMF - 1;               7178             IZSTOP = III_ZIMF - 1;
8816             goto imfs30;                         7179             goto imfs30;
8817         }                                     << 7180         }else{
8818         else                                  << 
8819         {                                     << 
8820             SDWprevious = SDW[III_ZIMF];         7181             SDWprevious = SDW[III_ZIMF];
8821         }                                        7182         }
8822                                                  7183 
8823     } // for III_ZIMF                         << 7184       }// for III_ZIMF
8824                                               << 
8825 imfs30:                                       << 
8826                                               << 
8827     if (IZSTOP <= 6)                          << 
8828     {                                         << 
8829         IZSTOP = IZIMFMAX;                    << 
8830         goto imfs15;                          << 
8831     }                                         << 
8832                                                  7185 
8833     A1PAR = std::log10(SDW[IZSTOP] / SDW[IZST << 7186       imfs30:
8834     A2PAR = std::log10(SDW[IZSTOP]) - A1PAR * << 
8835     if (A2PAR > 0.)                           << 
8836         A2PAR = -1. * A2PAR;                  << 
8837     if (A1PAR > 0.)                           << 
8838         A1PAR = -1. * A1PAR;                  << 
8839                                                  7187 
8840     //     End loop to calculate where gamma  << 7188       if(IZSTOP<=6){
                                                   >> 7189        IZSTOP = IZIMFMAX;
                                                   >> 7190        goto imfs15;
                                                   >> 7191       }
8841                                                  7192 
8842     for (G4int II_ZIMF = IZSTOP; II_ZIMF <= I << 7193       A1PAR = std::log10(SDW[IZSTOP]/SDW[IZSTOP-2])/std::log10((1.0*IZSTOP)/(1.0*IZSTOP-2.0));
8843     {                                         << 7194       A2PAR = std::log10(SDW[IZSTOP]) - A1PAR * std::log10(1.0*(IZSTOP));
8844         SDW[II_ZIMF] = std::pow(10.0, A2PAR)  << 7195       if(A2PAR>0.)A2PAR=-1.*A2PAR;
8845         if (SDW[II_ZIMF] < 0.0)               << 7196       if(A1PAR>0.)A1PAR=-1.*A1PAR;
8846             SDW[II_ZIMF] = 0.0;               << 7197 
8847     }                                         << 7198 //     End loop to calculate where gamma of IMF has the minimum
                                                   >> 7199 
                                                   >> 7200       for(G4int II_ZIMF = IZSTOP;II_ZIMF<=IZIMFMAX;II_ZIMF++){
                                                   >> 7201        SDW[II_ZIMF] =  std::pow(10.0,A2PAR) * std::pow(1.0*II_ZIMF,A1PAR);  // Power-low
                                                   >> 7202        if(SDW[II_ZIMF]<0.0) SDW[II_ZIMF] = 0.0;
                                                   >> 7203       }
8848                                                  7204 
8849 imfs15:                                       << 7205       imfs15:
8850                                                  7206 
8851     //    Sum of all decay widths (for normal << 7207 //    Sum of all decay widths (for normalisation)
8852     SUMDW_TOT = 0.0;                          << 7208       SUMDW_TOT = 0.0;
8853     for (G4int I_ZIMF = 3; I_ZIMF <= IZIMFMAX << 7209       for(G4int I_ZIMF = 3;I_ZIMF<=IZIMFMAX;I_ZIMF++){
8854     {                                         << 
8855         SUMDW_TOT = SUMDW_TOT + SDW[I_ZIMF];     7210         SUMDW_TOT = SUMDW_TOT + SDW[I_ZIMF];
8856     }                                         << 7211       }
8857     if (SUMDW_TOT <= 0.0)                     << 7212       if(SUMDW_TOT<=0.0){
8858     {                                         << 
8859         std::cout << "*********************"     7213         std::cout << "*********************" << std::endl;
8860         std::cout << "IMF function" << std::e << 7214         std::cout <<  "IMF function" << std::endl;
8861         std::cout << "SUM of decay widths = " << 7215         std::cout <<  "SUM of decay widths = " << SUMDW_TOT << " IZIMFMAX = " << IZIMFMAX << std::endl;
8862         std::cout << "IZSTOP = " << IZSTOP << << 7216         std::cout <<  "IZSTOP = " << IZSTOP << std::endl;
8863     }                                         << 7217       }
8864                                               << 7218 
8865     //    End of Sum of all decay widths (for << 7219 //    End of Sum of all decay widths (for normalisation)
8866                                               << 7220   
8867     //    Loop to sample the nuclide that is  << 7221 //    Loop to sample the nuclide that is emitted ********************
8868     //    ------- sample Z -----------        << 7222 //    ------- sample Z -----------
8869 imfs10:                                       << 7223       imfs10:
8870     X = haz(1) * SUMDW_TOT;                   << 7224       X = haz(1)*SUMDW_TOT;
8871                                               << 7225 
8872     //      IF(X.EQ.0.D0) PRINT*,'WARNING: X= << 7226 //      IF(X.EQ.0.D0) PRINT*,'WARNING: X=0',XRNDM,SUMDW_TOT
8873     SUM_Z = 0.0;                              << 7227       SUM_Z = 0.0;
8874     fZIMF = 0.0;                              << 7228       fZIMF = 0.0;
8875     IZMEM = 0;                                << 7229       IZMEM = 0;
8876                                               << 7230 
8877     for (G4int IZ = 3; IZ <= IZIMFMAX; IZ++)  << 7231       for(G4int IZ = 3;IZ<=IZIMFMAX;IZ++){
8878     {                                         << 7232          SUM_Z = SUM_Z + SDW[IZ];
8879         SUM_Z = SUM_Z + SDW[IZ];              << 7233          if(X<SUM_Z){
8880         if (X < SUM_Z)                        << 7234             fZIMF = 1.0*IZ;
8881         {                                     << 
8882             fZIMF = 1.0 * IZ;                 << 
8883             IZMEM = IZ;                          7235             IZMEM = IZ;
8884             goto imfs20;                         7236             goto imfs20;
8885         }                                     << 7237          }
8886     } // for IZ                               << 7238       }//for IZ
8887                                               << 
8888 imfs20:                                       << 
8889                                                  7239 
8890     //     ------- sample N -----------       << 7240       imfs20:
8891                                                  7241 
8892     isostab_lim(IZMEM, &INMINMEM, &INMAXMEM); << 7242 //     ------- sample N -----------
8893     INMINMEM = max(1, INMINMEM - 2);          << 
8894                                                  7243 
8895     isostab_lim(IZCN - IZMEM, &INMI,          << 7244       isostab_lim(IZMEM,&INMINMEM,&INMAXMEM);
8896                 &INMA); // Daughter nucleus a << 7245       INMINMEM = max(1,INMINMEM-2);
8897     INMI = max(1, INMI - 2);                  << 7246 
8898     // limits of bound isotopes               << 7247       isostab_lim(IZCN-IZMEM,&INMI,&INMA);  // Daughter nucleus after IMF emission,
8899                                               << 7248       INMI = max(1,INMI-2);
8900     INMINMEM = max(INMINMEM, INCN - INMA); // << 7249                                             // limits of bound isotopes
8901     INMAXMEM = min(INMAXMEM, INCN - INMI); // << 7250 
8902                                               << 7251       INMINMEM = max(INMINMEM,INCN-INMA); // Both IMF and daughter must be bound
8903     INMAXMEM = max(INMINMEM, INMAXMEM);       << 7252       INMAXMEM = min(INMAXMEM,INCN-INMI); //   "
8904                                               << 7253 
8905     IA = 0;                                   << 7254       INMAXMEM = max(INMINMEM,INMAXMEM);
8906     SUMDW_N_TOT = 0.0;                        << 7255 
8907     for (G4int IIINIMF = INMINMEM; IIINIMF <= << 7256       IA = 0;
8908     {                                         << 7257       SUMDW_N_TOT = 0.0;
8909         IA = IZMEM + IIINIMF;                 << 7258       for(G4int IIINIMF = INMINMEM;IIINIMF<=INMAXMEM;IIINIMF++){
8910         if (IZMEM >= 3 && IZMEM <= 95 && IA > << 7259        IA = IZMEM + IIINIMF;
8911         {                                     << 7260        if(IZMEM>=3&&IZMEM<=95&&IA>=4&&IA<=250){
8912             SUMDW_N_TOT = SUMDW_N_TOT + DW[IZ << 7261         SUMDW_N_TOT = SUMDW_N_TOT + DW[IZMEM][IA];
8913         }                                     << 7262        }else{
8914         else                                  << 7263          std::cout << "CHARGE IMF OUT OF RANGE" << IZMEM << ", " << IA << ", " << idnint(ACN) << ", " << idnint(ZCN) << ", " << TEMP << std::endl;
8915         {                                     << 7264        }
8916             std::cout << "CHARGE IMF OUT OF R << 7265       }
8917                       << ", " << TEMP << std: << 
8918         }                                     << 
8919     }                                         << 
8920                                                  7266 
8921     XX = haz(1) * SUMDW_N_TOT;                << 7267       XX = haz(1)*SUMDW_N_TOT;
8922     IIA = 0;                                  << 7268       IIA = 0;
8923     SUM_A = 0.0;                              << 7269       SUM_A = 0.0;
8924     for (G4int IINIMF = INMINMEM; IINIMF <= I << 7270       for(G4int IINIMF = INMINMEM;IINIMF<=INMAXMEM; IINIMF++){
8925     {                                         << 
8926         IIA = IZMEM + IINIMF;                    7271         IIA = IZMEM + IINIMF;
8927         //      SUM_A = SUM_A + DW[IZ][IIA];  << 7272   //      SUM_A = SUM_A + DW[IZ][IIA]; //FIXME
8928         SUM_A = SUM_A + DW[IZMEM][IIA];          7273         SUM_A = SUM_A + DW[IZMEM][IIA];
8929         if (XX < SUM_A)                       << 7274         if(XX<SUM_A){
8930         {                                     << 7275           fAIMF = G4double(IIA);
8931             fAIMF = G4double(IIA);            << 7276           goto imfs25;
8932             goto imfs25;                      << 
8933         }                                        7277         }
8934     }                                         << 7278       }
8935                                                  7279 
8936 imfs25:                                       << 7280       imfs25:
8937     //     CHECK POINT 1                      << 7281 //     CHECK POINT 1
8938     NIMF = fAIMF - fZIMF;                     << 7282       NIMF = fAIMF - fZIMF;
8939                                               << 7283 
8940     if ((ACN - ZCN - NIMF) <= 0.0 || (ZCN - f << 7284       if((ACN-ZCN-NIMF)<=0.0 || (ZCN-fZIMF) <= 0.0){
8941     {                                         << 7285        std::cout << "IMF Partner unstable:" << std::endl;
8942         std::cout << "IMF Partner unstable:"  << 7286        std::cout << "System: Acn,Zcn,NCN:" << std::endl;
8943         std::cout << "System: Acn,Zcn,NCN:" < << 7287        std::cout << idnint(ACN) << ", " << idnint(ZCN) << ", " << idnint(ACN-ZCN) << std::endl;
8944         std::cout << idnint(ACN) << ", " << i << 7288        std::cout << "IMF: A,Z,N:" << std::endl;
8945         std::cout << "IMF: A,Z,N:" << std::en << 7289        std::cout << idnint(fAIMF) << ", " << idnint(fZIMF) << ", " << idnint(fAIMF-fZIMF) << std::endl;
8946         std::cout << idnint(fAIMF) << ", " << << 7290        std::cout << "Partner: A,Z,N:" << std::endl;
8947         std::cout << "Partner: A,Z,N:" << std << 7291        std::cout << idnint(ACN-fAIMF) << ", " << idnint(ZCN-fZIMF) << ", " << idnint(ACN-ZCN-NIMF) << std::endl;
8948         std::cout << idnint(ACN - fAIMF) << " << 
8949                   << std::endl;               << 
8950         std::cout << "----nmin,nmax" << INMIN    7292         std::cout << "----nmin,nmax" << INMINMEM << ", " << INMAXMEM << std::endl;
8951         std::cout << "----- warning: Zimf=" <    7293         std::cout << "----- warning: Zimf=" << fZIMF << " Aimf=" << fAIMF << std::endl;
8952         std::cout << "----- look in subroutin    7294         std::cout << "----- look in subroutine IMF" << std::endl;
8953         std::cout << "ACN,ZCN,ZIMF,AIMF,temp, << 7295         std::cout << "ACN,ZCN,ZIMF,AIMF,temp,EE,JPRF::" << ACN << ", " << ZCN << ", " << fZIMF << ", " << fAIMF << ", " << TEMP << ", " << EE << ", " << JPRF << std::endl;
8954                   << TEMP << ", " << EE << ", << 7296 std::cout << "-IZSTOP,IZIMFMAX:" << IZSTOP << ", " << IZIMFMAX << std::endl;
8955         std::cout << "-IZSTOP,IZIMFMAX:" << I << 7297 std::cout << "----X,SUM_Z,SUMDW_TOT:" << X << ", " << SUM_Z << ", " << SUMDW_TOT << std::endl;
8956         std::cout << "----X,SUM_Z,SUMDW_TOT:" << 7298 //for(int III_ZIMF=3;III_ZIMF<=IZIMFMAX;III_ZIMF++)
8957         // for(int III_ZIMF=3;III_ZIMF<=IZIMF << 7299   //    std::cout << "-**Z,SDW:" << III_ZIMF << ", " << SDW[III_ZIMF] << std::endl;
8958         //     std::cout << "-**Z,SDW:" << II << 
8959         //     std::endl;                     << 
8960                                                  7300 
8961         goto imfs10;                          << 7301       goto imfs10;
8962     }                                         << 7302       }
8963     if (fZIMF >= ZCN || fAIMF >= ACN || fZIMF << 7303       if(fZIMF>=ZCN || fAIMF>=ACN || fZIMF<=2 || fAIMF<=3){
8964     {                                         << 
8965         std::cout << "----nmin,nmax" << INMIN    7304         std::cout << "----nmin,nmax" << INMINMEM << ", " << INMAXMEM << std::endl;
8966         std::cout << "----- warning: Zimf=" <    7305         std::cout << "----- warning: Zimf=" << fZIMF << " Aimf=" << fAIMF << std::endl;
8967         std::cout << "----- look in subroutin    7306         std::cout << "----- look in subroutine IMF" << std::endl;
8968         std::cout << "ACN,ZCN,ZIMF,AIMF,temp, << 7307         std::cout << "ACN,ZCN,ZIMF,AIMF,temp,EE,JPRF:" << ACN << ", " << ZCN << ", " << fZIMF << ", " << fAIMF << ", " << TEMP << ", " << EE << ", " << JPRF << std::endl;
8969                   << TEMP << ", " << EE << ", << 7308 std::cout << "-IZSTOP,IZIMFMAX:" << IZSTOP << ", " << IZIMFMAX << std::endl;
8970         std::cout << "-IZSTOP,IZIMFMAX:" << I << 7309 std::cout << "----X,SUM_Z,SUMDW_TOT:" << X << ", " << SUM_Z << ", " << SUMDW_TOT << std::endl;
8971         std::cout << "----X,SUM_Z,SUMDW_TOT:" << 7310 for(int III_ZIMF=3;III_ZIMF<=IZIMFMAX;III_ZIMF++)
8972         for (int III_ZIMF = 3; III_ZIMF <= IZ << 7311       std::cout << "-**Z,SDW:" << III_ZIMF << ", " << SDW[III_ZIMF] << std::endl;
8973             std::cout << "-**Z,SDW:" << III_Z << 
8974                                                  7312 
8975         fZIMF = 3.0; // provisorisch AK       << 7313         fZIMF = 3.0;  // provisorisch AK
8976         fAIMF = 4.0;                             7314         fAIMF = 4.0;
8977     }                                         << 7315       }
                                                   >> 7316 
                                                   >> 7317 // Characteristics of selected IMF (AIMF, ZIMF, BIMF, SBIMF, TIMF)
                                                   >> 7318       fSBIMF = SSBIMF[idnint(fZIMF)][idnint(fAIMF)];
                                                   >> 7319       fBIMF = BBIMF[idnint(fZIMF)][idnint(fAIMF)];
                                                   >> 7320 
                                                   >> 7321       if((ZCN-fZIMF)<=0.0)std::cout << "CHARGE_IMF ZIMF > ZCN" << std::endl;
                                                   >> 7322       if((ACN-fAIMF)<=0.0)std::cout << "CHARGE_IMF AIMF > ACN" << std::endl;
                                                   >> 7323 
                                                   >> 7324       BSHELL = ecld->ecgnz[idnint(ACN-ZCN-NIMF)][idnint(ZCN-fZIMF)] -ecld->vgsld[idnint(ACN-ZCN-NIMF)][idnint(ZCN-fZIMF)];
                                                   >> 7325 
                                                   >> 7326       DEFBET = ecld->beta2[idnint(ACN-ZCN-NIMF)][idnint(ZCN-fZIMF)];
                                                   >> 7327       EEDAUG = (EE - fSBIMF) * (ACN - fAIMF) / ACN;
                                                   >> 7328       bsbkbc(ACN - fAIMF,ZCN-fZIMF,&BS,&BK,&BC);
                                                   >> 7329       densniv(ACN-fAIMF,ZCN-fZIMF,EEDAUG,0.0,&DENSIMF,BSHELL,BS,BK,&fTIMF,0,0,DEFBET,&ECOR,0.0,0,&QR);
8978                                                  7330 
8979     // Characteristics of selected IMF (AIMF, << 7331       if(fSBIMF>EE){
8980     fSBIMF = SSBIMF[idnint(fZIMF)][idnint(fAI << 7332         std::cout << "----- warning: EE=" << EE << "," << " S+Bimf=" << fSBIMF  << std::endl;
8981     fBIMF = BBIMF[idnint(fZIMF)][idnint(fAIMF << 
8982                                               << 
8983     if ((ZCN - fZIMF) <= 0.0)                 << 
8984         std::cout << "CHARGE_IMF ZIMF > ZCN"  << 
8985     if ((ACN - fAIMF) <= 0.0)                 << 
8986         std::cout << "CHARGE_IMF AIMF > ACN"  << 
8987                                               << 
8988     BSHELL = ecld->ecgnz[idnint(ACN - ZCN - N << 
8989              ecld->vgsld[idnint(ACN - ZCN - N << 
8990                                               << 
8991     DEFBET = ecld->beta2[idnint(ACN - ZCN - N << 
8992     EEDAUG = (EE - fSBIMF) * (ACN - fAIMF) /  << 
8993     bsbkbc(ACN - fAIMF, ZCN - fZIMF, &BS, &BK << 
8994     densniv(ACN - fAIMF, ZCN - fZIMF, EEDAUG, << 
8995                                               << 
8996     if (fSBIMF > EE)                          << 
8997     {                                         << 
8998         std::cout << "----- warning: EE=" <<  << 
8999                   << " S+Bimf=" << fSBIMF <<  << 
9000         std::cout << "----- look in subroutin    7333         std::cout << "----- look in subroutine IMF" << std::endl;
9001         std::cout << "IMF will be resampled"     7334         std::cout << "IMF will be resampled" << std::endl;
9002         goto imfs10;                          << 7335        goto imfs10;
9003     }                                         << 7336       }
9004     (*ZIMF) = fZIMF;                          << 7337    (*ZIMF) = fZIMF;
9005     (*AIMF) = fAIMF;                          << 7338    (*AIMF) = fAIMF;
9006     (*SBIMF) = fSBIMF;                        << 7339    (*SBIMF) = fSBIMF;
9007     (*BIMF) = fBIMF;                          << 7340    (*BIMF) = fBIMF;
9008     (*TIMF) = fTIMF;                          << 7341    (*TIMF) = fTIMF;
9009     return;                                   << 7342   return;
9010 }                                             << 7343 }
9011                                               << 7344 
9012 void G4Abla::isostab_lim(G4int z, G4int* nmin << 7345 void G4Abla::isostab_lim(G4int z, G4int *nmin, G4int *nmax)
9013 {                                             << 7346 {
9014                                               << 7347 
9015     G4int VISOSTAB[191][2] = {                << 7348 G4int VISOSTAB[191][2]={
9016         { 0, 7 },     { 1, 8 },     { 1, 9 }, << 7349            {0 ,           7 },
9017         { 6, 22 },    { 6, 28 },    { 7, 28 } << 7350            {1 ,           8 },
9018         { 11, 38 },   { 10, 42 },   { 13, 50  << 7351            {1 ,           9 },
9019         { 19, 60 },   { 19, 62 },   { 21, 64  << 7352            {2 ,          12 },
9020         { 27, 78 },   { 29, 82 },   { 33, 82  << 7353            {2 ,          14 },
9021         { 40, 92 },   { 38, 96 },   { 42, 102 << 7354            {2 ,          16 },
9022         { 49, 116 },  { 46, 118 },  { 52, 120 << 7355            {3 ,          18 },
9023         { 60, 126 },  { 58, 130 },  { 62, 132 << 7356            {4 ,          22 },
9024         { 70, 148 },  { 70, 152 },  { 73, 152 << 7357            {6 ,          22 },
9025         { 82, 166 },  { 80, 166 },  { 85, 168 << 7358            {6 ,          28 },
9026         { 96, 184 },  { 95, 184 },  { 99, 184 << 7359            {7 ,          28 },
9027         { 115, 204 }, { 110, 206 }, { 119, 21 << 7360            {7 ,          30 },
9028     };                                        << 7361            {8 ,          28 },
                                                   >> 7362            {8 ,          36 },
                                                   >> 7363           {10 ,          38 },
                                                   >> 7364           {10 ,          40 },
                                                   >> 7365           {11 ,          38 },
                                                   >> 7366           {10 ,          42 },
                                                   >> 7367           {13 ,          50 },
                                                   >> 7368           {14 ,          50 },
                                                   >> 7369           {15 ,          52 },
                                                   >> 7370           {16 ,          52 },
                                                   >> 7371           {17 ,          54 },
                                                   >> 7372           {18 ,          54 },
                                                   >> 7373           {19 ,          60 },
                                                   >> 7374           {19 ,          62 },
                                                   >> 7375           {21 ,          64 },
                                                   >> 7376           {20 ,          66 },
                                                   >> 7377           {23 ,          66 },
                                                   >> 7378           {24 ,          70 },
                                                   >> 7379           {25 ,          70 },
                                                   >> 7380           {26 ,          74 },
                                                   >> 7381           {27 ,          78 },
                                                   >> 7382           {29 ,          82 },
                                                   >> 7383           {33 ,          82 },
                                                   >> 7384           {31 ,          82 },
                                                   >> 7385           {35 ,          82 },
                                                   >> 7386           {34 ,          84 },
                                                   >> 7387           {40 ,          84 },
                                                   >> 7388           {36 ,          86 },
                                                   >> 7389           {40 ,          92 },
                                                   >> 7390           {38 ,          96 },
                                                   >> 7391           {42 ,         102 },
                                                   >> 7392           {42 ,         102 },
                                                   >> 7393           {44 ,         102 },
                                                   >> 7394           {42 ,         106 },
                                                   >> 7395           {47 ,         112 },
                                                   >> 7396           {44 ,         114 },
                                                   >> 7397           {49 ,         116 },
                                                   >> 7398           {46 ,         118 },
                                                   >> 7399           {52 ,         120 },
                                                   >> 7400           {52 ,         124 },
                                                   >> 7401           {55 ,         126 },
                                                   >> 7402           {54 ,         126 },
                                                   >> 7403           {57 ,         126 },
                                                   >> 7404           {57 ,         126 },
                                                   >> 7405           {60 ,         126 },
                                                   >> 7406           {58 ,         130 },
                                                   >> 7407         {  62 ,         132 },
                                                   >> 7408         {  60 ,         140 },
                                                   >> 7409         {  67 ,         138 },
                                                   >> 7410         {  64 ,         142 },
                                                   >> 7411         {  67 ,         144 },
                                                   >> 7412         {  68 ,         146 },
                                                   >> 7413         {  70 ,         148 },
                                                   >> 7414         {  70 ,         152 },
                                                   >> 7415         {  73 ,         152 },
                                                   >> 7416         {  72 ,         154 },
                                                   >> 7417         {  75 ,         156 },
                                                   >> 7418         {  77 ,         162 },
                                                   >> 7419         {  79 ,         164 },
                                                   >> 7420         {  78 ,         164 },
                                                   >> 7421         {  82 ,         166 },
                                                   >> 7422         {  80 ,         166 },
                                                   >> 7423         {  85 ,         168 },
                                                   >> 7424         {  83 ,         176 },
                                                   >> 7425         {  87 ,         178 },
                                                   >> 7426         {  88 ,         178 },
                                                   >> 7427         {  91 ,         182 },
                                                   >> 7428         {  90 ,         184 },
                                                   >> 7429         {  96 ,         184 },
                                                   >> 7430         {  95 ,         184 },
                                                   >> 7431         {  99 ,         184 },
                                                   >> 7432         {  98 ,         184 },
                                                   >> 7433         { 105 ,         194 },
                                                   >> 7434         { 102 ,         194 },
                                                   >> 7435         { 108 ,         196 },
                                                   >> 7436         { 106 ,         198 },
                                                   >> 7437         { 115 ,         204 },
                                                   >> 7438         { 110 ,         206 },
                                                   >> 7439         { 119 ,         210 },
                                                   >> 7440         { 114 ,         210 },
                                                   >> 7441         { 124 ,         210 },
                                                   >> 7442         { 117 ,         212 },
                                                   >> 7443         { 130 ,         212 }
                                                   >> 7444         };
9029                                                  7445 
9030     if (z < 0)                                << 7446       if (z<0){
9031     {                                         << 
9032         *nmin = 0;                               7447         *nmin = 0;
9033         *nmax = 0;                               7448         *nmax = 0;
9034     }                                         << 7449       }else{ 
9035     else                                      << 7450         if(z==0){
9036     {                                         << 7451          *nmin = 1;
9037         if (z == 0)                           << 7452          *nmax = 1;
9038         {                                     << 7453 // AK (Dez2010) - Just to avoid numerical problems
9039             *nmin = 1;                        << 7454         }else{ 
9040             *nmax = 1;                        << 7455          if(z>95){
9041             // AK (Dez2010) - Just to avoid n << 7456           *nmin = 130;
9042         }                                     << 7457           *nmax = 200;
9043         else                                  << 7458          }else{
9044         {                                     << 7459           *nmin = VISOSTAB[z-1][0];
9045             if (z > 95)                       << 7460           *nmax = VISOSTAB[z-1][1];
9046             {                                 << 7461          }
9047                 *nmin = 130;                  << 
9048                 *nmax = 200;                  << 
9049             }                                 << 
9050             else                              << 
9051             {                                 << 
9052                 *nmin = VISOSTAB[z - 1][0];   << 
9053                 *nmax = VISOSTAB[z - 1][1];   << 
9054             }                                 << 
9055         }                                        7462         }
9056     }                                         << 7463       }
9057                                                  7464 
9058     return;                                   << 7465   return;
9059 }                                                7466 }
9060                                                  7467 
9061 void G4Abla::evap_postsaddle(G4double A,      << 
9062                              G4double Z,      << 
9063                              G4double EXC,    << 
9064                              G4double* E_scis << 
9065                              G4double* A_scis << 
9066                              G4double* Z_scis << 
9067                              G4double& vx_eva << 
9068                              G4double& vy_eva << 
9069                              G4double& vz_eva << 
9070                              G4int* NbLam0_pa << 
9071 {                                             << 
9072                                               << 
9073     //  AK 2006 - Now in case of fission deex << 
9074     //            is explicitly calculated. L << 
9075     //            Nadtochy used to parametris << 
9076                                               << 
9077     G4double af, zf, ee;                      << 
9078     G4double epsiln = 0.0, probp = 0.0, probd << 
9079              probimf = 0.0, problamb0 = 0.0,  << 
9080     G4double sn = 0.0, sbp = 0.0, sbd = 0.0,  << 
9081              sp = 0.0, sd = 0.0, st = 0.0, sh << 
9082     G4double ecn = 0.0, ecp = 0.0, ecd = 0.0, << 
9083              bd = 0.0, bt = 0.0, bhe = 0.0, b << 
9084                                               << 
9085     G4double xcv = 0., ycv = 0., zcv = 0., VX << 
9086                                               << 
9087     G4double jprfn = 0.0, jprfp = 0.0, jprfd  << 
9088     G4double ctet1 = 0.0, stet1 = 0.0, phi1 = << 
9089     G4double rnd = 0.0;                       << 
9090                                               << 
9091     G4int itest = 0, sortie = 0;              << 
9092     G4double probf = 0.0;                     << 
9093                                               << 
9094     G4double ef = 0.0;                        << 
9095     G4double pc = 0.0;                        << 
9096                                               << 
9097     G4double time, tauf, tau0, a0, a1, emin,  << 
9098     G4int inttype = 0, inum = 0, gammadecay = << 
9099     G4double pleva = 0.0;                     << 
9100     G4double pxeva = 0.0;                     << 
9101     G4double pyeva = 0.0;                     << 
9102     G4double pteva = 0.0;                     << 
9103     G4double etot = 0.0;                      << 
9104     G4int NbLam0 = (*NbLam0_par);             << 
9105                                                  7468 
9106     const G4double c = 29.9792458;            << 7469 void G4Abla::evap_postsaddle(G4double A, G4double Z, G4double EXC, G4double *E_scission_post, G4double *A_scission, G4double *Z_scission,G4double &vx_eva,G4double &vy_eva,G4double &vz_eva,G4int *NbLam0_par){
9107     const G4double mu = 931.494;              << 
9108     const G4double mu2 = 931.494 * 931.494;   << 
9109                                                  7470 
9110     vx_eva = 0.;                              << 7471 //  AK 2006 - Now in case of fission deexcitation between saddle and scission
9111     vy_eva = 0.;                              << 7472 //            is explicitely calculated. Langevin calculations made by P. Nadtochy
9112     vz_eva = 0.;                              << 7473 //            used to parametrise saddle-to-scission time
9113     IEV_TAB_SSC = 0;                          << 7474 
9114                                               << 7475   G4double af,zf,ee;
9115     af = dint(A);                             << 7476   G4double epsiln = 0.0, probp = 0.0, probd = 0.0, probt = 0.0, probn = 0.0, probhe = 0.0, proba = 0.0, probg = 0.0, probimf=0.0, problamb0=0.0, ptotl = 0.0, tcn = 0.0;  
9116     zf = dint(Z);                             << 7477   G4double sn = 0.0, sbp = 0.0, sbd = 0.0, sbt = 0.0, sbhe = 0.0, sba = 0.0, x = 0.0, amoins = 0.0, zmoins = 0.0,sp= 0.0,sd= 0.0,st= 0.0,she= 0.0,sa= 0.0, slamb0 = 0.0;
9117     ee = EXC;                                 << 7478   G4double ecn = 0.0, ecp = 0.0, ecd = 0.0, ect = 0.0,eche = 0.0,eca = 0.0, ecg = 0.0, eclamb0 = 0.0, bp = 0.0, bd = 0.0, bt = 0.0, bhe = 0.0, ba = 0.0;
9118                                               << 7479 
9119     fiss->ifis = 0;                           << 7480   G4double xcv=0.,ycv=0.,zcv=0.,VXOUT=0.,VYOUT=0.,VZOUT=0.;
9120     opt->optimfallowed = 0;                   << 7481 
9121     gammaemission = 0;                        << 7482   G4double jprfn=0.0, jprfp=0.0, jprfd=0.0, jprft=0.0, jprfhe=0.0, jprfa=0.0, jprflamb0=0.0;
9122     // Initialsation                          << 7483   G4double ctet1 = 0.0, stet1 = 0.0, phi1 = 0.0;
9123     time = 0.0;                               << 7484   G4double rnd = 0.0;
9124                                               << 7485 
9125     // in sec                                 << 7486   G4int itest = 0, sortie=0;
9126     tau0 = 1.0e-21;                           << 7487   G4double probf = 0.0;
9127     a0 = 0.66482503 - 3.4678935 * std::exp(-0 << 7488 
9128     a1 = 5.6846e-04 + 0.00574515 * std::exp(- << 7489   G4double ef = 0.0;
9129     tauf = (a0 + a1 * zf * zf / std::pow(af,  << 7490   G4double pc = 0.0;
9130     //                                        << 7491 
9131 post10:                                       << 7492   G4double time,tauf,tau0,a0,a1,emin,ts1,tsum=0.;
9132     direct(zf,                                << 7493   G4int inttype=0,inum=0,gammadecay = 0, flamb0decay = 0;
9133            af,                                << 7494   G4double pleva = 0.0;
9134            ee,                                << 7495   G4double pxeva = 0.0;
9135            0.,                                << 7496   G4double pyeva = 0.0;
9136            &probp,                            << 7497   G4double pteva = 0.0;
9137            &probd,                            << 7498   G4double etot = 0.0;
9138            &probt,                            << 7499   G4int NbLam0= (*NbLam0_par);
9139            &probn,                            << 7500 
9140            &probhe,                           << 7501   const G4double c = 29.9792458;
9141            &proba,                            << 7502   const G4double mu = 931.494;
9142            &probg,                            << 7503   const G4double mu2 = 931.494*931.494;
9143            &probimf,                          << 7504 
9144            &probf,                            << 7505       vx_eva=0.;
9145            &problamb0,                        << 7506       vy_eva=0.;
9146            &ptotl,                            << 7507       vz_eva=0.;
9147            &sn,                               << 7508       IEV_TAB_SSC = 0;
9148            &sbp,                              << 7509 
9149            &sbd,                              << 7510 
9150            &sbt,                              << 7511       af = dint(A);
9151            &sbhe,                             << 7512       zf = dint(Z);
9152            &sba,                              << 7513       ee = EXC;
9153            &slamb0,                           << 7514 
9154            &ecn,                              << 7515       fiss->ifis = 0;
9155            &ecp,                              << 7516       opt->optimfallowed = 0;
9156            &ecd,                              << 7517       gammaemission=0;
9157            &ect,                              << 7518 // Initialsation
9158            &eche,                             << 7519       time = 0.0;
9159            &eca,                              << 7520  
9160            &ecg,                              << 7521 // in sec
9161            &eclamb0,                          << 7522       tau0 = 1.0e-21;
9162            &bp,                               << 7523       a0 = 0.66482503 - 3.4678935 * std::exp(-0.0104002*ee);
9163            &bd,                               << 7524       a1  = 5.6846e-04 + 0.00574515 * std::exp(-0.01114307*ee);
9164            &bt,                               << 7525       tauf = (a0 + a1 * zf*zf/std::pow(af,0.3333333)) * tau0;
9165            &bhe,                              << 7526 //
9166            &ba,                               << 7527       post10:
9167            &sp,                               << 7528       direct(zf,af,ee,0.,&probp,&probd,&probt,&probn,&probhe,&proba,&probg,&probimf,&probf,&problamb0,&ptotl,
9168            &sd,                               << 7529    &sn,&sbp,&sbd,&sbt,&sbhe,&sba,&slamb0,
9169            &st,                               << 7530          &ecn,&ecp,&ecd,&ect,&eche,&eca,&ecg,&eclamb0,
9170            &she,                              << 7531          &bp,&bd,&bt,&bhe,&ba,&sp,&sd,&st,&she,&sa,&ef,&ts1,inttype,inum,itest,&sortie,&tcn,
9171            &sa,                               << 7532          &jprfn, &jprfp, &jprfd, &jprft, &jprfhe, &jprfa, &jprflamb0, &tsum, NbLam0); //:::FIXME::: Call
9172            &ef,                               << 7533 //
9173            &ts1,                              << 7534 // HERE THE FINAL STEPS OF THE EVAPORATION ARE CALCULATED
9174            inttype,                           << 7535 //
9175            inum,                              << 7536   if(ptotl<=0.)goto post100;
9176            itest,                             << 7537 
9177            &sortie,                           << 7538   emin = dmin1(sba,sbhe,dmin1(sbt,sbhe,dmin1(sn,sbp,sbd)));
9178            &tcn,                              << 7539 
9179            &jprfn,                            << 7540   if(emin>1e30)std::cout << "ERROR AT THE EXIT OF EVAPORA,E>1.D30,AF" << std::endl;
9180            &jprfp,                            << 7541 
9181            &jprfd,                            << 7542   if(sortie==1){
9182            &jprft,                            << 7543    if (probn!=0.0) {
9183            &jprfhe,                           << 7544     amoins = 1.0;
9184            &jprfa,                            << 7545     zmoins = 0.0;
9185            &jprflamb0,                        << 7546     epsiln = sn + ecn;
9186            &tsum,                             << 7547     pc = std::sqrt(std::pow((1.0 + ecn/9.3956e2),2.) - 1.0) * 9.3956e2;
9187            NbLam0); //:::FIXME::: Call        << 7548     gammadecay = 0;
9188                     //                        << 7549     flamb0decay = 0;
9189     // HERE THE FINAL STEPS OF THE EVAPORATIO << 7550    }
9190     //                                        << 7551    else if(probp!=0.0){
9191     if (ptotl <= 0.)                          << 7552     amoins = 1.0;
9192         goto post100;                         << 7553     zmoins = 1.0;
9193                                               << 7554     epsiln = sp + ecp;
9194     emin = dmin1(sba, sbhe, dmin1(sbt, sbhe,  << 7555     pc = std::sqrt(std::pow((1.0 + ecp/9.3827e2),2.) - 1.0) * 9.3827e2;
9195                                               << 7556     gammadecay = 0;
9196     if (emin > 1e30)                          << 7557     flamb0decay = 0;
9197         std::cout << "ERROR AT THE EXIT OF EV << 7558    }
9198                                               << 7559    else if(probd!=0.0){
9199     if (sortie == 1)                          << 7560     amoins = 2.0;
9200     {                                         << 7561     zmoins = 1.0;
9201         if (probn != 0.0)                     << 7562     epsiln = sd + ecd;
9202         {                                     << 7563     pc = std::sqrt(std::pow((1.0 + ecd/1.875358e3),2) - 1.0) * 1.875358e3;
9203             amoins = 1.0;                     << 7564     gammadecay = 0;
9204             zmoins = 0.0;                     << 7565     flamb0decay = 0;
9205             epsiln = sn + ecn;                << 7566    }
9206             pc = std::sqrt(std::pow((1.0 + ec << 7567    else if(probt!=0.0){
9207             gammadecay = 0;                   << 7568     amoins = 3.0;
9208             flamb0decay = 0;                  << 7569     zmoins = 1.0;
9209         }                                     << 7570     epsiln = st + ect;
9210         else if (probp != 0.0)                << 7571     pc = std::sqrt(std::pow((1.0 + ect/2.80828e3),2) - 1.0) * 2.80828e3;
9211         {                                     << 7572     gammadecay = 0;
9212             amoins = 1.0;                     << 7573     flamb0decay = 0;
9213             zmoins = 1.0;                     << 7574    }
9214             epsiln = sp + ecp;                << 7575    else if(probhe!=0.0){
9215             pc = std::sqrt(std::pow((1.0 + ec << 7576     amoins = 3.0;
9216             gammadecay = 0;                   << 7577     zmoins = 2.0;
9217             flamb0decay = 0;                  << 7578     epsiln = she + eche;
9218         }                                     << 7579     pc = std::sqrt(std::pow((1.0 + eche/2.80826e3),2) - 1.0) * 2.80826e3;
9219         else if (probd != 0.0)                << 7580     gammadecay = 0;
9220         {                                     << 7581     flamb0decay = 0;
9221             amoins = 2.0;                     << 7582    }
9222             zmoins = 1.0;                     << 7583    else{ if(proba!=0.0){
9223             epsiln = sd + ecd;                << 7584     amoins = 4.0;
9224             pc = std::sqrt(std::pow((1.0 + ec << 7585     zmoins = 2.0;
9225             gammadecay = 0;                   << 7586     epsiln = sa + eca;
9226             flamb0decay = 0;                  << 7587     pc = std::sqrt(std::pow((1.0 + eca/3.72834e3),2) - 1.0) * 3.72834e3;
9227         }                                     << 7588     gammadecay = 0;
9228         else if (probt != 0.0)                << 7589     flamb0decay = 0;
9229         {                                     << 7590     }
9230             amoins = 3.0;                     << 7591    }
9231             zmoins = 1.0;                     << 7592   goto post99;
9232             epsiln = st + ect;                << 7593   }
9233             pc = std::sqrt(std::pow((1.0 + ec << 7594 
9234             gammadecay = 0;                   << 7595   //    IRNDM = IRNDM+1;
9235             flamb0decay = 0;                  << 7596 //
9236         }                                     << 7597 // HERE THE NORMAL EVAPORATION CASCADE STARTS
9237         else if (probhe != 0.0)               << 7598 // RANDOM NUMBER FOR THE EVAPORATION
9238         {                                     << 7599 
9239             amoins = 3.0;                     << 7600 
9240             zmoins = 2.0;                     << 7601   // random number for the evaporation
9241             epsiln = she + eche;              << 7602   x = G4AblaRandom::flat() * ptotl;
9242             pc = std::sqrt(std::pow((1.0 + ec << 7603 
9243             gammadecay = 0;                   << 7604   itest = 0;
9244             flamb0decay = 0;                  << 7605   if (x < proba) {
9245         }                                     << 7606     // alpha evaporation                                                     
9246         else                                  << 7607     amoins = 4.0;
9247         {                                     << 7608     zmoins = 2.0;
9248             if (proba != 0.0)                 << 7609     epsiln = sa + eca;
9249             {                                 << 7610     pc = std::sqrt(std::pow((1.0 + eca/3.72834e3),2) - 1.0) * 3.72834e3;
9250                 amoins = 4.0;                 << 7611     gammadecay = 0;
9251                 zmoins = 2.0;                 << 7612     flamb0decay = 0;
9252                 epsiln = sa + eca;            << 7613   }  
9253                 pc = std::sqrt(std::pow((1.0  << 7614   else if (x < proba+probhe) {
9254                 gammadecay = 0;               << 7615     // He3 evaporation                                                    
9255                 flamb0decay = 0;              << 7616     amoins = 3.0;
9256             }                                 << 7617     zmoins = 2.0;
9257         }                                     << 7618     epsiln = she + eche;
9258         goto post99;                          << 7619     pc = std::sqrt(std::pow((1.0 + eche/2.80826e3),2) - 1.0) * 2.80826e3;
                                                   >> 7620     gammadecay = 0;
                                                   >> 7621     flamb0decay = 0;
                                                   >> 7622   }
                                                   >> 7623   else if (x < proba+probhe+probt) {
                                                   >> 7624     // triton evaporation                                                    
                                                   >> 7625     amoins = 3.0;
                                                   >> 7626     zmoins = 1.0;
                                                   >> 7627     epsiln = st + ect;
                                                   >> 7628     pc = std::sqrt(std::pow((1.0 + ect/2.80828e3),2) - 1.0) * 2.80828e3;
                                                   >> 7629     gammadecay = 0;
                                                   >> 7630     flamb0decay = 0;
                                                   >> 7631   }
                                                   >> 7632   else if (x < proba+probhe+probt+probd) {
                                                   >> 7633     // deuteron evaporation                                                    
                                                   >> 7634     amoins = 2.0;
                                                   >> 7635     zmoins = 1.0;
                                                   >> 7636     epsiln = sd + ecd;
                                                   >> 7637     pc = std::sqrt(std::pow((1.0 + ecd/1.875358e3),2) - 1.0) * 1.875358e3;
                                                   >> 7638     gammadecay = 0;
                                                   >> 7639     flamb0decay = 0;
                                                   >> 7640   }
                                                   >> 7641   else if (x < proba+probhe+probt+probd+probp) {
                                                   >> 7642     // proton evaporation                                                    
                                                   >> 7643     amoins = 1.0;
                                                   >> 7644     zmoins = 1.0;
                                                   >> 7645     epsiln = sp + ecp;
                                                   >> 7646     pc = std::sqrt(std::pow((1.0 + ecp/9.3827e2),2) - 1.0) * 9.3827e2;
                                                   >> 7647     gammadecay = 0;
                                                   >> 7648     flamb0decay = 0;
                                                   >> 7649   }
                                                   >> 7650   else if (x < proba+probhe+probt+probd+probp+probn) {
                                                   >> 7651     // neutron evaporation                                                   
                                                   >> 7652     amoins = 1.0;
                                                   >> 7653     zmoins = 0.0;
                                                   >> 7654     epsiln = sn + ecn;
                                                   >> 7655     pc = std::sqrt(std::pow((1.0 + ecn/9.3956e2),2.) - 1.0) * 9.3956e2;
                                                   >> 7656     gammadecay = 0;
                                                   >> 7657     flamb0decay = 0;
                                                   >> 7658   }
                                                   >> 7659   else if (x < proba+probhe+probt+probd+probp+probn+problamb0) {
                                                   >> 7660     // lambda0 evaporation  
                                                   >> 7661     amoins = 1.0;
                                                   >> 7662     zmoins = 0.0;
                                                   >> 7663     epsiln = slamb0 + eclamb0;
                                                   >> 7664     pc = std::sqrt(std::pow((1.0 + (eclamb0)/11.1568e2),2.) - 1.0) * 11.1568e2;
                                                   >> 7665     opt->nblan0 = opt->nblan0 -1;
                                                   >> 7666     NbLam0 = NbLam0 -1;
                                                   >> 7667     gammadecay = 0;
                                                   >> 7668     flamb0decay = 1;
                                                   >> 7669   }
                                                   >> 7670   else if (x < proba+probhe+probt+probd+probp+probn+problamb0+probg) {
                                                   >> 7671     // gamma evaporation                                                    
                                                   >> 7672     amoins = 0.0;
                                                   >> 7673     zmoins = 0.0;
                                                   >> 7674     epsiln = ecg;
                                                   >> 7675     pc = ecg;
                                                   >> 7676     gammadecay = 1;
                                                   >> 7677     flamb0decay = 0;
                                                   >> 7678     if(probp==0.0 && probn==0.0 && probd==0.0 && probt==0.0 && proba==0.0 && probhe==0.0 && problamb0==0.0 && probimf==0.0 && probf==0.0){
                                                   >> 7679     //ee = ee-epsiln;
                                                   >> 7680     //if(ee<=0.01) ee = 0.010;
                                                   >> 7681     goto post100;
9259     }                                            7682     }
                                                   >> 7683   }
                                                   >> 7684 
                                                   >> 7685 // CALCULATION OF THE DAUGHTER NUCLEUS
                                                   >> 7686 //
                                                   >> 7687       post99:
                                                   >> 7688 
                                                   >> 7689       if(gammadecay==1 && ee<=0.01+epsiln){
                                                   >> 7690        epsiln = ee-0.01;
                                                   >> 7691        time = tauf + 1.;
                                                   >> 7692       }
                                                   >> 7693 
                                                   >> 7694       af = af-amoins;
                                                   >> 7695       zf = zf-zmoins;
                                                   >> 7696       ee = ee-epsiln;
                                                   >> 7697 
                                                   >> 7698       if(ee<=0.01) ee = 0.010;
                                                   >> 7699 
                                                   >> 7700       if(af<2.5) goto post100;
                                                   >> 7701 
                                                   >> 7702       time = time + ts1;
9260                                                  7703 
9261     //    IRNDM = IRNDM+1;                    << 7704 // Determination of x,y,z components of momentum from known emission momentum
9262     //                                        << 7705         if(flamb0decay==1){
9263     // HERE THE NORMAL EVAPORATION CASCADE ST << 
9264     // RANDOM NUMBER FOR THE EVAPORATION      << 
9265                                               << 
9266     // random number for the evaporation      << 
9267     x = G4AblaRandom::flat() * ptotl;         << 
9268                                               << 
9269     itest = 0;                                << 
9270     if (x < proba)                            << 
9271     {                                         << 
9272         // alpha evaporation                  << 
9273         amoins = 4.0;                         << 
9274         zmoins = 2.0;                         << 
9275         epsiln = sa + eca;                    << 
9276         pc = std::sqrt(std::pow((1.0 + eca /  << 
9277         gammadecay = 0;                       << 
9278         flamb0decay = 0;                      << 
9279     }                                         << 
9280     else if (x < proba + probhe)              << 
9281     {                                         << 
9282         // He3 evaporation                    << 
9283         amoins = 3.0;                         << 
9284         zmoins = 2.0;                         << 
9285         epsiln = she + eche;                  << 
9286         pc = std::sqrt(std::pow((1.0 + eche / << 
9287         gammadecay = 0;                       << 
9288         flamb0decay = 0;                      << 
9289     }                                         << 
9290     else if (x < proba + probhe + probt)      << 
9291     {                                         << 
9292         // triton evaporation                 << 
9293         amoins = 3.0;                         << 
9294         zmoins = 1.0;                         << 
9295         epsiln = st + ect;                    << 
9296         pc = std::sqrt(std::pow((1.0 + ect /  << 
9297         gammadecay = 0;                       << 
9298         flamb0decay = 0;                      << 
9299     }                                         << 
9300     else if (x < proba + probhe + probt + pro << 
9301     {                                         << 
9302         // deuteron evaporation               << 
9303         amoins = 2.0;                         << 
9304         zmoins = 1.0;                         << 
9305         epsiln = sd + ecd;                    << 
9306         pc = std::sqrt(std::pow((1.0 + ecd /  << 
9307         gammadecay = 0;                       << 
9308         flamb0decay = 0;                      << 
9309     }                                         << 
9310     else if (x < proba + probhe + probt + pro << 
9311     {                                         << 
9312         // proton evaporation                 << 
9313         amoins = 1.0;                         << 
9314         zmoins = 1.0;                         << 
9315         epsiln = sp + ecp;                    << 
9316         pc = std::sqrt(std::pow((1.0 + ecp /  << 
9317         gammadecay = 0;                       << 
9318         flamb0decay = 0;                      << 
9319     }                                         << 
9320     else if (x < proba + probhe + probt + pro << 
9321     {                                         << 
9322         // neutron evaporation                << 
9323         amoins = 1.0;                         << 
9324         zmoins = 0.0;                         << 
9325         epsiln = sn + ecn;                    << 
9326         pc = std::sqrt(std::pow((1.0 + ecn /  << 
9327         gammadecay = 0;                       << 
9328         flamb0decay = 0;                      << 
9329     }                                         << 
9330     else if (x < proba + probhe + probt + pro << 
9331     {                                         << 
9332         // lambda0 evaporation                << 
9333         amoins = 1.0;                         << 
9334         zmoins = 0.0;                         << 
9335         epsiln = slamb0 + eclamb0;            << 
9336         pc = std::sqrt(std::pow((1.0 + (eclam << 
9337         opt->nblan0 = opt->nblan0 - 1;        << 
9338         NbLam0 = NbLam0 - 1;                  << 
9339         gammadecay = 0;                       << 
9340         flamb0decay = 1;                      << 
9341     }                                         << 
9342     else if (x < proba + probhe + probt + pro << 
9343     {                                         << 
9344         // gamma evaporation                  << 
9345         amoins = 0.0;                         << 
9346         zmoins = 0.0;                         << 
9347         epsiln = ecg;                         << 
9348         pc = ecg;                             << 
9349         gammadecay = 1;                       << 
9350         flamb0decay = 0;                      << 
9351         if (probp == 0.0 && probn == 0.0 && p << 
9352             problamb0 == 0.0 && probimf == 0. << 
9353         {                                     << 
9354             // ee = ee-epsiln;                << 
9355             // if(ee<=0.01) ee = 0.010;       << 
9356             goto post100;                     << 
9357         }                                     << 
9358     }                                         << 
9359                                               << 
9360     // CALCULATION OF THE DAUGHTER NUCLEUS    << 
9361     //                                        << 
9362 post99:                                       << 
9363                                               << 
9364     if (gammadecay == 1 && ee <= 0.01 + epsil << 
9365     {                                         << 
9366         epsiln = ee - 0.01;                   << 
9367         time = tauf + 1.;                     << 
9368     }                                         << 
9369                                               << 
9370     af = af - amoins;                         << 
9371     zf = zf - zmoins;                         << 
9372     ee = ee - epsiln;                         << 
9373                                               << 
9374     if (ee <= 0.01)                           << 
9375         ee = 0.010;                           << 
9376                                               << 
9377     if (af < 2.5)                             << 
9378         goto post100;                         << 
9379                                               << 
9380     time = time + ts1;                        << 
9381                                               << 
9382     // Determination of x,y,z components of m << 
9383     if (flamb0decay == 1)                     << 
9384     {                                         << 
9385         EV_TAB_SSC[IEV_TAB_SSC][0] = 0.;         7706         EV_TAB_SSC[IEV_TAB_SSC][0] = 0.;
9386         EV_TAB_SSC[IEV_TAB_SSC][1] = -2.;        7707         EV_TAB_SSC[IEV_TAB_SSC][1] = -2.;
9387         EV_TAB_SSC[IEV_TAB_SSC][5] = 1.;         7708         EV_TAB_SSC[IEV_TAB_SSC][5] = 1.;
9388     }                                         << 7709         }else{
9389     else                                      << 
9390     {                                         << 
9391         EV_TAB_SSC[IEV_TAB_SSC][0] = zmoins;     7710         EV_TAB_SSC[IEV_TAB_SSC][0] = zmoins;
9392         EV_TAB_SSC[IEV_TAB_SSC][1] = amoins;     7711         EV_TAB_SSC[IEV_TAB_SSC][1] = amoins;
9393         EV_TAB_SSC[IEV_TAB_SSC][5] = 0.;         7712         EV_TAB_SSC[IEV_TAB_SSC][5] = 0.;
9394     }                                         << 7713         }
9395                                                  7714 
9396     rnd = G4AblaRandom::flat();               << 7715         rnd = G4AblaRandom::flat();
9397     ctet1 = 2.0 * rnd - 1.0;                  << 7716         ctet1 = 2.0*rnd - 1.0;           // z component: uniform probability between -1 and 1
9398     stet1 = std::sqrt(1.0 - std::pow(ctet1, 2 << 7717         stet1 = std::sqrt(1.0 - std::pow(ctet1,2));// component perpendicular to z
9399     rnd = G4AblaRandom::flat();               << 7718         rnd = G4AblaRandom::flat();
9400     phi1 = rnd * 2.0 * 3.141592654; // angle  << 7719         phi1 = rnd*2.0*3.141592654;   // angle in x-y plane: uniform probability between 0 and 2*pi
9401     xcv = stet1 * std::cos(phi1);   // x comp << 7720         xcv = stet1*std::cos(phi1);   // x component
9402     ycv = stet1 * std::sin(phi1);   // y comp << 7721         ycv = stet1*std::sin(phi1);   // y component
9403     zcv = ctet1;                    // z comp << 7722         zcv = ctet1;                  // z component
9404                                     // In the << 7723 // In the CM system
9405     if (gammadecay == 0)                      << 7724         if(gammadecay==0){
9406     {                                         << 7725 // Light particle
9407         // Light particle                     << 7726            G4double ETOT_LP = std::sqrt(pc*pc + amoins*amoins * mu2);
9408         G4double ETOT_LP = std::sqrt(pc * pc  << 7727            if(flamb0decay==1)ETOT_LP = std::sqrt(pc*pc + 1115.683*1115.683);
9409         if (flamb0decay == 1)                 << 7728            EV_TAB_SSC[IEV_TAB_SSC][2] = c * pc * xcv / ETOT_LP;
9410             ETOT_LP = std::sqrt(pc * pc + 111 << 7729            EV_TAB_SSC[IEV_TAB_SSC][3] = c * pc * ycv / ETOT_LP;
9411         EV_TAB_SSC[IEV_TAB_SSC][2] = c * pc * << 7730            EV_TAB_SSC[IEV_TAB_SSC][4] = c * pc * zcv / ETOT_LP;
9412         EV_TAB_SSC[IEV_TAB_SSC][3] = c * pc * << 7731         }else{
9413         EV_TAB_SSC[IEV_TAB_SSC][4] = c * pc * << 7732 // gamma ray
9414     }                                         << 7733            EV_TAB_SSC[IEV_TAB_SSC][2] = pc * xcv;
9415     else                                      << 7734            EV_TAB_SSC[IEV_TAB_SSC][3] = pc * ycv;
9416     {                                         << 7735            EV_TAB_SSC[IEV_TAB_SSC][4] = pc * zcv;
9417         // gamma ray                          << 7736         }
9418         EV_TAB_SSC[IEV_TAB_SSC][2] = pc * xcv << 7737         lorentz_boost(vx_eva,vy_eva,vz_eva,
9419         EV_TAB_SSC[IEV_TAB_SSC][3] = pc * ycv << 7738             EV_TAB_SSC[IEV_TAB_SSC][2],EV_TAB_SSC[IEV_TAB_SSC][3],
9420         EV_TAB_SSC[IEV_TAB_SSC][4] = pc * zcv << 7739             EV_TAB_SSC[IEV_TAB_SSC][4],
9421     }                                         << 7740             &VXOUT,&VYOUT,&VZOUT);
9422     lorentz_boost(vx_eva,                     << 7741         EV_TAB_SSC[IEV_TAB_SSC][2] = VXOUT;
9423                   vy_eva,                     << 7742         EV_TAB_SSC[IEV_TAB_SSC][3] = VYOUT;
9424                   vz_eva,                     << 7743         EV_TAB_SSC[IEV_TAB_SSC][4] = VZOUT;
9425                   EV_TAB_SSC[IEV_TAB_SSC][2], << 7744 
9426                   EV_TAB_SSC[IEV_TAB_SSC][3], << 7745 // Heavy residue
9427                   EV_TAB_SSC[IEV_TAB_SSC][4], << 7746         if(gammadecay==0){
9428                   &VXOUT,                     << 7747         G4double v2 = std::pow(EV_TAB_SSC[IEV_TAB_SSC][2],2.) +
9429                   &VYOUT,                     << 7748              std::pow(EV_TAB_SSC[IEV_TAB_SSC][3],2.) +
9430                   &VZOUT);                    << 7749              std::pow(EV_TAB_SSC[IEV_TAB_SSC][4],2.);
9431     EV_TAB_SSC[IEV_TAB_SSC][2] = VXOUT;       << 7750         G4double gamma = 1.0/std::sqrt(1.0 - v2 / (c*c));
9432     EV_TAB_SSC[IEV_TAB_SSC][3] = VYOUT;       << 7751         G4double etot_lp = amoins*mu * gamma;
9433     EV_TAB_SSC[IEV_TAB_SSC][4] = VZOUT;       << 
9434                                               << 
9435     // Heavy residue                          << 
9436     if (gammadecay == 0)                      << 
9437     {                                         << 
9438         G4double v2 = std::pow(EV_TAB_SSC[IEV << 
9439                       std::pow(EV_TAB_SSC[IEV << 
9440         G4double gamma = 1.0 / std::sqrt(1.0  << 
9441         G4double etot_lp = amoins * mu * gamm << 
9442         pxeva = pxeva - EV_TAB_SSC[IEV_TAB_SS    7752         pxeva = pxeva - EV_TAB_SSC[IEV_TAB_SSC][2] * etot_lp / c;
9443         pyeva = pyeva - EV_TAB_SSC[IEV_TAB_SS    7753         pyeva = pyeva - EV_TAB_SSC[IEV_TAB_SSC][3] * etot_lp / c;
9444         pleva = pleva - EV_TAB_SSC[IEV_TAB_SS    7754         pleva = pleva - EV_TAB_SSC[IEV_TAB_SSC][4] * etot_lp / c;
9445     }                                         << 7755         }else{
9446     else                                      << 7756 // in case of gammas, EV_TEMP contains momentum components and not velocity
9447     {                                         << 
9448         // in case of gammas, EV_TEMP contain << 
9449         pxeva = pxeva - EV_TAB_SSC[IEV_TAB_SS    7757         pxeva = pxeva - EV_TAB_SSC[IEV_TAB_SSC][2];
9450         pyeva = pyeva - EV_TAB_SSC[IEV_TAB_SS    7758         pyeva = pyeva - EV_TAB_SSC[IEV_TAB_SSC][3];
9451         pleva = pleva - EV_TAB_SSC[IEV_TAB_SS    7759         pleva = pleva - EV_TAB_SSC[IEV_TAB_SSC][4];
9452     }                                         << 7760         }
9453     pteva = std::sqrt(pxeva * pxeva + pyeva * << 7761         pteva = std::sqrt(pxeva*pxeva + pyeva*pyeva);
9454     // To be checked:                         << 7762 // To be checked:
9455     etot = std::sqrt(pleva * pleva + pteva *  << 7763         etot = std::sqrt ( pleva*pleva + pteva*pteva + af*af * mu2 );
9456     vx_eva = c * pxeva / etot; // recoil velo << 7764         vx_eva = c * pxeva / etot;  // recoil velocity components of residue due to evaporation
9457     vy_eva = c * pyeva / etot;                << 7765         vy_eva = c * pyeva / etot;
9458     vz_eva = c * pleva / etot;                << 7766         vz_eva = c * pleva / etot;
9459                                               << 7767 
9460     IEV_TAB_SSC = IEV_TAB_SSC + 1;            << 7768         IEV_TAB_SSC = IEV_TAB_SSC +1;
9461                                               << 7769 
9462     if (time < tauf)                          << 7770       if(time<tauf)goto post10;
9463         goto post10;                          << 7771 //
9464     //                                        << 7772      post100:
9465 post100:                                      << 7773 //
9466     //                                        << 7774       *A_scission= af;
9467     *A_scission = af;                         << 7775       *Z_scission= zf;
9468     *Z_scission = zf;                         << 7776       *E_scission_post = ee;
9469     *E_scission_post = ee;                    << 7777       *NbLam0_par = NbLam0;
9470     *NbLam0_par = NbLam0;                     << 7778  return;
9471     return;                                   << 7779 }
                                                   >> 7780 
                                                   >> 7781 G4double G4Abla::getdeltabinding(G4double A, G4int H){
                                                   >> 7782  if(A<1.)return (1.*H)/A*(10.68*A-21.27*std::pow(A,2./3.))*10.;
                                                   >> 7783  return (1.*H)/A*(10.68*A-21.27*std::pow(A,2./3.));
9472 }                                                7784 }
9473                                                  7785 
9474 G4double G4Abla::getdeltabinding(G4double A,  << 
9475 {                                             << 
9476     if (A < 1.)                               << 
9477         return (1. * H) / A * (10.68 * A - 21 << 
9478     return (1. * H) / A * (10.68 * A - 21.27  << 
9479 }                                             << 
9480                                               << 
9481 G4double G4Abla::gethyperseparation(G4double  << 
9482 {                                             << 
9483     if (A < 1.)                               << 
9484         return 1.e38;                         << 
9485     // For light nuclei we take experimental  << 
9486     // Journal of Physics G, Nucl Part Phys 3 << 
9487     if (ny == 1)                              << 
9488     {                                         << 
9489         if (Z == 1 && A == 4)                 << 
9490             return 2.04;                      << 
9491         else if (Z == 2 && A == 4)            << 
9492             return 2.39;                      << 
9493         else if (Z == 2 && A == 5)            << 
9494             return 3.12;                      << 
9495         else if (Z == 2 && A == 6)            << 
9496             return 4.18;                      << 
9497         else if (Z == 2 && A == 7)            << 
9498             return 5.23;                      << 
9499         else if (Z == 2 && A == 8)            << 
9500             return 7.16;                      << 
9501         else if (Z == 3 && A == 6)            << 
9502             return 4.50;                      << 
9503         else if (Z == 3 && A == 7)            << 
9504             return 5.58;                      << 
9505         else if (Z == 3 && A == 8)            << 
9506             return 6.80;                      << 
9507         else if (Z == 3 && A == 9)            << 
9508             return 8.50;                      << 
9509         else if (Z == 4 && A == 7)            << 
9510             return 5.16;                      << 
9511         else if (Z == 4 && A == 8)            << 
9512             return 6.84;                      << 
9513         else if (Z == 4 && A == 9)            << 
9514             return 6.71;                      << 
9515         else if (Z == 4 && A == 10)           << 
9516             return 9.11;                      << 
9517         else if (Z == 5 && A == 9)            << 
9518             return 8.29;                      << 
9519         else if (Z == 5 && A == 10)           << 
9520             return 9.01;                      << 
9521         else if (Z == 5 && A == 11)           << 
9522             return 10.29;                     << 
9523         else if (Z == 5 && A == 12)           << 
9524             return 11.43;                     << 
9525         else if (Z == 6 && A == 12)           << 
9526             return 10.95;                     << 
9527         else if (Z == 6 && A == 13)           << 
9528             return 11.81;                     << 
9529         else if (Z == 6 && A == 14)           << 
9530             return 12.50;                     << 
9531         else if (Z == 7 && A == 14)           << 
9532             return 12.17;                     << 
9533         else if (Z == 7 && A == 15)           << 
9534             return 13.59;                     << 
9535         else if (Z == 8 && A == 16)           << 
9536             return 12.50;                     << 
9537         else if (Z == 8 && A == 17)           << 
9538             return 13.59;                     << 
9539         else if (Z == 14 && A == 28)          << 
9540             return 16.0;                      << 
9541         else if (Z == 39 && A == 89)          << 
9542             return 22.1;                      << 
9543         else if (Z == 57 && A == 139)         << 
9544             return 23.8;                      << 
9545         else if (Z == 82 && A == 208)         << 
9546             return 26.5;                      << 
9547     } // ny==1                                << 
9548     // For other nuclei we take Bethe-Weizsac << 
9549     return gethyperbinding(A, Z, ny) - gethyp << 
9550 }                                             << 
9551                                               << 
9552 G4double G4Abla::gethyperbinding(G4double A,  << 
9553 {                                             << 
9554     //                                        << 
9555     // Bethe-Weizsacker mass formula          << 
9556     // Journal of Physics G, Nucl Part Phys 3 << 
9557     //                                        << 
9558     if (A < 2 || Z < 2)                       << 
9559         return 0.;                            << 
9560     G4double N = A - Z - 1. * ny;             << 
9561     G4double be = 0., my = 1115.683, av = 15. << 
9562     if (mod(N, 2) == 1 && mod(Z, 2) == 1)     << 
9563         D = -12. / std::sqrt(A);              << 
9564     if (mod(N, 2) == 0 && mod(Z, 2) == 0)     << 
9565         D = 12. / std::sqrt(A);               << 
9566     //                                        << 
9567     G4double deltanew = (1. - std::exp(-1. *  << 
9568     //                                        << 
9569     be = av * A - as * std::pow(A, 2. / 3.) - << 
9570          asym * (N - Z) * (N - Z) / ((1. + st << 
9571          ny * (0.0335 * my - 26.7 - 48.7 / st << 
9572     return be;                                << 
9573 }                                             << 
9574                                               << 
9575 void G4Abla::unbound(G4double SN,             << 
9576                      G4double SP,             << 
9577                      G4double SD,             << 
9578                      G4double ST,             << 
9579                      G4double SHE,            << 
9580                      G4double SA,             << 
9581                      G4double BP,             << 
9582                      G4double BD,             << 
9583                      G4double BT,             << 
9584                      G4double BHE,            << 
9585                      G4double BA,             << 
9586                      G4double* PROBF,         << 
9587                      G4double* PROBN,         << 
9588                      G4double* PROBP,         << 
9589                      G4double* PROBD,         << 
9590                      G4double* PROBT,         << 
9591                      G4double* PROBHE,        << 
9592                      G4double* PROBA,         << 
9593                      G4double* PROBIMF,       << 
9594                      G4double* PROBG,         << 
9595                      G4double* ECN,           << 
9596                      G4double* ECP,           << 
9597                      G4double* ECD,           << 
9598                      G4double* ECT,           << 
9599                      G4double* ECHE,          << 
9600                      G4double* ECA)           << 
9601 {                                             << 
9602     G4double SBP = SP + BP;                   << 
9603     G4double SBD = SD + BD;                   << 
9604     G4double SBT = ST + BT;                   << 
9605     G4double SBHE = SHE + BHE;                << 
9606     G4double SBA = SA + BA;                   << 
9607                                               << 
9608     G4double e = dmin1(SBP, SBD, SBT);        << 
9609     e = dmin1(SBHE, SN, e);                   << 
9610     e = dmin1(SBHE, SBA, e);                  << 
9611     //                                        << 
9612     if (SN == e)                              << 
9613     {                                         << 
9614         *ECN = (-1.0) * SN;                   << 
9615         *ECP = 0.0;                           << 
9616         *ECD = 0.0;                           << 
9617         *ECT = 0.0;                           << 
9618         *ECHE = 0.0;                          << 
9619         *ECA = 0.0;                           << 
9620         *PROBN = 1.0;                         << 
9621         *PROBP = 0.0;                         << 
9622         *PROBD = 0.0;                         << 
9623         *PROBT = 0.0;                         << 
9624         *PROBHE = 0.0;                        << 
9625         *PROBA = 0.0;                         << 
9626         *PROBIMF = 0.0;                       << 
9627         *PROBF = 0.0;                         << 
9628         *PROBG = 0.0;                         << 
9629     }                                         << 
9630     else if (SBP == e)                        << 
9631     {                                         << 
9632         *ECN = 0.0;                           << 
9633         *ECP = (-1.0) * SP + BP;              << 
9634         *ECD = 0.0;                           << 
9635         *ECT = 0.0;                           << 
9636         *ECHE = 0.0;                          << 
9637         *ECA = 0.0;                           << 
9638         *PROBN = 0.0;                         << 
9639         *PROBP = 1.0;                         << 
9640         *PROBD = 0.0;                         << 
9641         *PROBT = 0.0;                         << 
9642         *PROBHE = 0.0;                        << 
9643         *PROBA = 0.0;                         << 
9644         *PROBIMF = 0.0;                       << 
9645         *PROBF = 0.0;                         << 
9646         *PROBG = 0.0;                         << 
9647     }                                         << 
9648     else if (SBD == e)                        << 
9649     {                                         << 
9650         *ECN = 0.0;                           << 
9651         *ECD = (-1.0) * SD + BD;              << 
9652         *ECP = 0.0;                           << 
9653         *ECT = 0.0;                           << 
9654         *ECHE = 0.0;                          << 
9655         *ECA = 0.0;                           << 
9656         *PROBN = 0.0;                         << 
9657         *PROBP = 0.0;                         << 
9658         *PROBD = 1.0;                         << 
9659         *PROBT = 0.0;                         << 
9660         *PROBHE = 0.0;                        << 
9661         *PROBA = 0.0;                         << 
9662         *PROBIMF = 0.0;                       << 
9663         *PROBF = 0.0;                         << 
9664         *PROBG = 0.0;                         << 
9665     }                                         << 
9666     else if (SBT == e)                        << 
9667     {                                         << 
9668         *ECN = 0.0;                           << 
9669         *ECT = (-1.0) * ST + BT;              << 
9670         *ECD = 0.0;                           << 
9671         *ECP = 0.0;                           << 
9672         *ECHE = 0.0;                          << 
9673         *ECA = 0.0;                           << 
9674         *PROBN = 0.0;                         << 
9675         *PROBP = 0.0;                         << 
9676         *PROBD = 0.0;                         << 
9677         *PROBT = 1.0;                         << 
9678         *PROBHE = 0.0;                        << 
9679         *PROBA = 0.0;                         << 
9680         *PROBIMF = 0.0;                       << 
9681         *PROBF = 0.0;                         << 
9682         *PROBG = 0.0;                         << 
9683     }                                         << 
9684     else if (SBHE == e)                       << 
9685     {                                         << 
9686         *ECN = 0.0;                           << 
9687         *ECHE = (-1.0) * SHE + BHE;           << 
9688         *ECD = 0.0;                           << 
9689         *ECT = 0.0;                           << 
9690         *ECP = 0.0;                           << 
9691         *ECA = 0.0;                           << 
9692         *PROBN = 0.0;                         << 
9693         *PROBP = 0.0;                         << 
9694         *PROBD = 0.0;                         << 
9695         *PROBT = 0.0;                         << 
9696         *PROBHE = 1.0;                        << 
9697         *PROBA = 0.0;                         << 
9698         *PROBIMF = 0.0;                       << 
9699         *PROBF = 0.0;                         << 
9700         *PROBG = 0.0;                         << 
9701     }                                         << 
9702     else                                      << 
9703     {                                         << 
9704         if (SBA == e)                         << 
9705         {                                     << 
9706             *ECN = 0.0;                       << 
9707             *ECA = (-1.0) * SA + BA;          << 
9708             *ECD = 0.0;                       << 
9709             *ECT = 0.0;                       << 
9710             *ECHE = 0.0;                      << 
9711             *ECP = 0.0;                       << 
9712             *PROBN = 0.0;                     << 
9713             *PROBP = 0.0;                     << 
9714             *PROBD = 0.0;                     << 
9715             *PROBT = 0.0;                     << 
9716             *PROBHE = 0.0;                    << 
9717             *PROBA = 1.0;                     << 
9718             *PROBIMF = 0.0;                   << 
9719             *PROBF = 0.0;                     << 
9720             *PROBG = 0.0;                     << 
9721         }                                     << 
9722     }                                         << 
9723                                                  7786 
9724     return;                                   << 7787 G4double G4Abla::gethyperseparation(G4double A, G4double Z, G4int ny){
                                                   >> 7788  if(A<1.)return 1.e38;
                                                   >> 7789 // For light nuclei we take experimental values
                                                   >> 7790 // Journal of Physics G, Nucl Part Phys 32,363 (2006)
                                                   >> 7791  if(ny==1){
                                                   >> 7792  if(Z==1 && A==4) return 2.04;
                                                   >> 7793  else if(Z==2 && A==4) return 2.39;
                                                   >> 7794  else if(Z==2 && A==5) return 3.12;
                                                   >> 7795  else if(Z==2 && A==6) return 4.18;
                                                   >> 7796  else if(Z==2 && A==7) return 5.23;
                                                   >> 7797  else if(Z==2 && A==8) return 7.16;
                                                   >> 7798  else if(Z==3 && A==6) return 4.50;
                                                   >> 7799  else if(Z==3 && A==7) return 5.58;
                                                   >> 7800  else if(Z==3 && A==8) return 6.80;
                                                   >> 7801  else if(Z==3 && A==9) return 8.50;
                                                   >> 7802  else if(Z==4 && A==7) return 5.16;
                                                   >> 7803  else if(Z==4 && A==8) return 6.84;
                                                   >> 7804  else if(Z==4 && A==9) return 6.71;
                                                   >> 7805  else if(Z==4 && A==10) return 9.11;
                                                   >> 7806  else if(Z==5 && A==9) return 8.29;
                                                   >> 7807  else if(Z==5 && A==10) return 8.89;
                                                   >> 7808  else if(Z==5 && A==11) return 10.24;
                                                   >> 7809  else if(Z==5 && A==12) return 11.37;
                                                   >> 7810  else if(Z==6 && A==12) return 10.76;
                                                   >> 7811  else if(Z==6 && A==13) return 11.69;
                                                   >> 7812  else if(Z==6 && A==14) return 12.17;
                                                   >> 7813  else if(Z==14 && A==28) return 16.0;
                                                   >> 7814  else if(Z==39 && A==89) return 22.1;
                                                   >> 7815  else if(Z==57 && A==139) return 23.8;
                                                   >> 7816  else if(Z==82 && A==208) return 26.5;
                                                   >> 7817  }//ny==1
                                                   >> 7818 // For other nuclei we take Bethe-Weizsacker mass formula
                                                   >> 7819  return gethyperbinding(A, Z, ny)-gethyperbinding(A-1., Z, ny-1);
9725 }                                                7820 }
9726                                                  7821 
9727 void G4Abla::fissionDistri(G4double& A,       << 7822 G4double G4Abla::gethyperbinding(G4double A, G4double Z, G4int ny){
9728                            G4double& Z,       << 7823 //
9729                            G4double& E,       << 7824 // Bethe-Weizsacker mass formula
9730                            G4double& a1,      << 7825 // Journal of Physics G, Nucl Part Phys 32,363 (2006)
9731                            G4double& z1,      << 7826 //
9732                            G4double& e1,      << 7827  if(A<2 || Z<2)return 0.;
9733                            G4double& v1,      << 7828  G4double N = A-Z -1.*ny;
9734                            G4double& a2,      << 7829  G4double be=0., my = 1115.683,
9735                            G4double& z2,      << 7830  av = 15.77,
9736                            G4double& e2,      << 7831  as = 18.34,
9737                            G4double& v2,      << 7832  ac = 0.71,
9738                            G4double& vx_eva_s << 7833  asym = 23.21,
9739                            G4double& vy_eva_s << 7834  k = 17.,
9740                            G4double& vz_eva_s << 7835  c = 30.,
9741                            G4int* NbLam0_par) << 7836  D = 0.;
9742 {                                             << 7837  if(mod(N,2) == 1 && mod(Z,2) == 1)D = -12./std::sqrt(A);
9743                                               << 7838  if(mod(N,2) == 0 && mod(Z,2) == 0)D = 12./std::sqrt(A);
9744     /*                                        << 7839 //
9745       Last update:                            << 7840  G4double deltanew = (1.-std::exp(-1.*A/c))*D;
9746                                               << 7841 //
9747       21/01/17 - J.L.R.S. - Implementation of << 7842  be= av*A-as*std::pow(A,2./3.)-ac*Z*(Z-1.)/std::pow(A,1./3.)-asym*(N-Z)*(N-Z)/((1.+std::exp(-1.*A/k))*A)+deltanew + ny*(0.0335*my-26.7-48.7/std::pow(A,2.0/3.0));
9748                                               << 7843  return be;
9749                                               << 7844 }
9750       Authors: K.-H. Schmidt, A. Kelic, M. V. << 
9751                J.L.Rodriguez-Sanchez(1995 - 2 << 
9752                                               << 
9753       On input: A, Z, E (mass, atomic number  << 
9754                          before fission)      << 
9755       On output: Ai, Zi, Ei (mass, atomic num << 
9756                              fragment 1 and 2 << 
9757                                               << 
9758     */                                        << 
9759     /* This program calculates isotopic distr << 
9760     /* with a semiempirical model             << 
9761     /* The width and eventually a shift in N/ << 
9762     /* following rules:                       << 
9763     /*                                        << 
9764     /* The line N/Z following UCD has an angl << 
9765     /* to the horizontal axis on a chart of n << 
9766     /*   (For 238U the angle is 32.2 deg.)    << 
9767     /*                                        << 
9768     /*   The following relations hold: (from  << 
9769     c                                         << 
9770     c    sigma(N) (A=const) = sigma(Z) (A=con << 
9771     c    sigma(A) (N=const) = sigma(Z) (N=con << 
9772     c    sigma(A) (Z=const) = sigma(N) (Z=con << 
9773     c                                         << 
9774     c   From this we get:                     << 
9775     c    sigma(Z) (N=const) * N = sigma(N) (Z << 
9776     c    sigma(A) (Z=const) = sigma(Z) (A=con << 
9777     c    sigma(N) (Z=const) = sigma(Z) (A=con << 
9778     c    Z*sigma(N) (Z=const) = N*sigma(Z) (N << 
9779     //                                        << 
9780                                               << 
9781     /*   Model parameters:                    << 
9782     C     These parameters have been adjusted << 
9783     c     For the fission of another compound << 
9784     c     necessary to slightly adjust some p << 
9785     c     The most important ones are         << 
9786     C      Delta_U1_shell_max and             << 
9787     c      Delta_u2_shell.                    << 
9788     */                                        << 
9789     G4double Nheavy1_in; //  'position of she << 
9790     Nheavy1_in = 83.0;                        << 
9791                                               << 
9792     G4double Zheavy1_in; //  'position of she << 
9793     Zheavy1_in = 50.0;                        << 
9794                                               << 
9795     G4double Nheavy2; //  'position of heavy  << 
9796     Nheavy2 = 89.0;                           << 
9797                                               << 
9798     G4double Delta_U1_shell_max; //  'Shell e << 
9799     Delta_U1_shell_max = -2.45;               << 
9800                                               << 
9801     G4double U1NZ_SLOPE; // Reduction of shel << 
9802     U1NZ_SLOPE = 0.2;                         << 
9803                                               << 
9804     G4double Delta_U2_shell; //  'Shell effec << 
9805     Delta_U2_shell = -2.45;                   << 
9806                                               << 
9807     G4double X_s2s; //  'Ratio (C_sad/C_scis) << 
9808     X_s2s = 0.8;                              << 
9809                                               << 
9810     G4double hbom1, hbom2, hbom3; //  'Curvat << 
9811     hbom1 = 0.2;                  // hbom1 is << 
9812     hbom2 = 0.2;                  // hbom2 is << 
9813     hbom3 = 0.2;                  // hbom3 is << 
9814                                               << 
9815     G4double Fwidth_asymm1, Fwidth_asymm2, Fw << 
9816     //         'Factors for widths of distr.  << 
9817     Fwidth_asymm1 = 0.65;                     << 
9818     Fwidth_asymm2 = 0.65;                     << 
9819     Fwidth_symm = 1.16;                       << 
9820                                               << 
9821     G4double xLevdens; // 'Parameter x: a = A << 
9822     xLevdens = 10.75;                         << 
9823     //     The value of 1/0.093 = 10.75 is co << 
9824     //     systematics of the mass widths of  << 
9825                                               << 
9826     G4double FGAMMA; // 'Factor to gamma'     << 
9827     FGAMMA = 1.;     // Theoretical expectati << 
9828     //     Additional factor to attenuation c << 
9829     //     with increasing excitation energy  << 
9830                                               << 
9831     G4double FGAMMA1; // 'Factor to gamma_hea << 
9832     FGAMMA1 = 2.;                             << 
9833     //     Adjusted to reduce the weight of S << 
9834     //     excitation energies, as required b << 
9835                                               << 
9836     G4double FREDSHELL;                       << 
9837     FREDSHELL = 0.;                           << 
9838     //     Adjusted to the reduced attenuatio << 
9839     //     If FGAMMA is modified,             << 
9840     //     FGAMMA * FREADSHELL should remain  << 
9841     //     the attenuation of the shell effec << 
9842     //     pairing energy ECRIT unchanged, wh << 
9843     //     adjusted to the mass yields of Viv << 
9844     //     energy range. A high value of FGAM << 
9845     //     attenuation of shell effects above << 
9846                                               << 
9847     G4double Ecrit;                           << 
9848     Ecrit = 5.;                               << 
9849     //     The value of ECRIT determines the  << 
9850     //     decrease of the shell effect below << 
9851     //     decrease above the superfluid rang << 
9852     const G4double d = 2.0; // 'Surface dista << 
9853                             // d = 2.0;       << 
9854                             //    Charge pola << 
9855     G4double cpol1;         // Charge polaris << 
9856     cpol1 = 0.35;           // calculated int << 
9857     G4double cpol2;         // Charge polaris << 
9858     cpol2 = 0.;             // calculated int << 
9859     G4double Friction_factor;                 << 
9860     Friction_factor = 1.0;                    << 
9861     G4double Nheavy1;            // position  << 
9862     G4double Delta_U1, Delta_U2; // used shel << 
9863     G4double cN_asymm1_shell, cN_asymm2_shell << 
9864     G4double gamma, gamma_heavy1, gamma_heavy << 
9865     G4double E_saddle_scission;               << 
9866     G4double Ysymm = 0.;                      << 
9867     G4double Yasymm1 = 0.;                    << 
9868     G4double Yasymm2 = 0.;                    << 
9869     G4double Nheavy1_eff;                     << 
9870     G4double Nheavy2_eff;                     << 
9871     G4double eexc1_saddle;                    << 
9872     G4double eexc2_saddle;                    << 
9873     G4double EEXC_MAX;                        << 
9874     G4double r_e_o;                           << 
9875     G4double cN_symm;                         << 
9876     G4double CZ;                              << 
9877     G4double Nheavy2_NZ;                      << 
9878     G4double N;                               << 
9879     G4double Aheavy1, Aheavy2;                << 
9880     G4double Sasymm1 = 0., Sasymm2 = 0., Ssym << 
9881     G4double Ssymm_mode1, Ssymm_mode2;        << 
9882     G4double wNasymm1_saddle, wNasymm2_saddle << 
9883     G4double wNasymm2_scission, wNsymm_scissi << 
9884     G4double wNasymm1, wNasymm2, wNsymm;      << 
9885     G4int imode;                              << 
9886     G4double rmode;                           << 
9887     G4double ZA1width;                        << 
9888     G4double N1r, N2r, A1r, N1, N2;           << 
9889     G4double Zsymm, Nsymm;                    << 
9890     G4double N1mean, N1width;                 << 
9891     G4double dUeff;                           << 
9892     /* effective shell effect at lowest barri << 
9893     G4double Eld;                             << 
9894     /* Excitation energy with respect to ld b << 
9895     G4double re1, re2, re3;                   << 
9896     G4double eps1, eps2;                      << 
9897     G4double Z1UCD, Z2UCD;                    << 
9898     G4double beta = 0., beta1 = 0., beta2 = 0 << 
9899     // double betacomplement;                 << 
9900     G4double DN1_POL;                         << 
9901     /* shift of most probable neutron number  << 
9902           according to polarization */        << 
9903     G4int i_help;                             << 
9904     G4double A_levdens;                       << 
9905     /* level-density parameter */             << 
9906     // double A_levdens_light1,A_levdens_ligh << 
9907     G4double A_levdens_heavy1, A_levdens_heav << 
9908                                               << 
9909     G4double R0 = 1.16;                       << 
9910                                               << 
9911     G4double epsilon_1_saddle, epsilon0_1_sad << 
9912     G4double epsilon_2_saddle, epsilon0_2_sad << 
9913     G4double epsilon_1_scission; //,epsilon0_ << 
9914     G4double epsilon_2_scission; //,epsilon0_ << 
9915     G4double epsilon_symm_scission;           << 
9916     /* modified energy */                     << 
9917     G4double E_eff1_saddle, E_eff2_saddle;    << 
9918     G4double Epot0_mode1_saddle, Epot0_mode2_ << 
9919     G4double Epot_mode1_saddle, Epot_mode2_sa << 
9920     G4double E_defo, E_defo1, E_defo2, E_scis << 
9921     G4double E_asym;                          << 
9922     G4double E1exc = 0., E2exc = 0.;          << 
9923     G4double E1exc_sigma, E2exc_sigma;        << 
9924     G4double TKER;                            << 
9925     G4double EkinR1, EkinR2;                  << 
9926     G4double MassCurv_scis, MassCurv_sadd;    << 
9927     G4double cN_symm_sadd;                    << 
9928     G4double Nheavy1_shell, Nheavy2_shell;    << 
9929     G4double wNasymm1_scission;               << 
9930     G4double Aheavy1_eff, Aheavy2_eff;        << 
9931     G4double Z1rr, Z1r;                       << 
9932     G4double E_HELP;                          << 
9933     G4double Z_scission, N_scission, A_scissi << 
9934     G4double Z2_over_A_eff;                   << 
9935     G4double beta1gs = 0., beta2gs = 0., beta << 
9936     G4double sigZmin;                         << 
9937     G4double DSN132, Delta_U1_shell, E_eff0_s << 
9938     G4int NbLam0 = (*NbLam0_par);             << 
9939     //                                        << 
9940     sigZmin = 0.5;                            << 
9941     N = A - Z; /*  neutron number of the fiss << 
9942                //                             << 
9943     cN_asymm1_shell = 0.700 * N / Z;          << 
9944     cN_asymm2_shell = 0.040 * N / Z;          << 
9945                                                  7845 
9946     //*************************************** << 7846 void G4Abla::unbound(G4double SN,G4double SP,G4double  SD,G4double ST,G4double SHE,G4double SA,G4double BP,G4double BD,G4double BT,G4double BHE,G4double BA,G4double *PROBF,G4double *PROBN,G4double *PROBP,G4double *PROBD,G4double *PROBT,G4double *PROBHE,G4double *PROBA,G4double *PROBIMF,G4double *PROBG,G4double *ECN,G4double *ECP,G4double *ECD,G4double *ECT,G4double *ECHE,G4double *ECA)
                                                   >> 7847 {
                                                   >> 7848  G4double SBP = SP + BP;
                                                   >> 7849  G4double SBD = SD + BD;
                                                   >> 7850  G4double SBT = ST + BT;
                                                   >> 7851  G4double SBHE = SHE + BHE;
                                                   >> 7852  G4double SBA = SA + BA;
9947                                                  7853 
9948     DSN132 = Nheavy1_in - N / Z * Zheavy1_in; << 7854  G4double e = dmin1(SBP,SBD,SBT);
9949     Aheavy1 = Nheavy1_in + Zheavy1_in + 0.340 << 7855         e = dmin1(SBHE,SN,e);
9950     /* Neutron number of valley Standard 1 */ << 7856         e = dmin1(SBHE,SBA,e);
9951     /* It is assumed that the 82-neutron shel << 7857 //
9952   c         the 50-proton shell effect. There << 7858  if(SN==e){
9953   c         the fissioning nucleus from the N << 7859      *ECN = (-1.0)*SN;
9954   c         change the position of the combin << 7860      *ECP = 0.0;
9955   c         deficient fissioning nuclei, the  << 7861      *ECD = 0.0;
9956   c         versa.  */                        << 7862      *ECT = 0.0;
9957                                               << 7863      *ECHE = 0.0;
9958     Delta_U1_shell = Delta_U1_shell_max + U1N << 7864      *ECA = 0.0;
9959     Delta_U1_shell = min(0., Delta_U1_shell); << 7865      *PROBN = 1.0;
9960     /* Empirical reduction of shell effect wi << 7866      *PROBP = 0.0;
9961     /* Fits (239U,n)f and 226Th e.-m.-induced << 7867      *PROBD = 0.0;
9962                                               << 7868      *PROBT = 0.0;
9963     Nheavy1 = N / A * Aheavy1; /* UCD */      << 7869      *PROBHE = 0.0;
9964     Aheavy2 = Nheavy2 * A / N;                << 7870      *PROBA = 0.0;
9965                                               << 7871      *PROBIMF = 0.0;
9966     Zsymm = Z / 2.0; /* proton number in symm << 7872      *PROBF = 0.0;
9967     Nsymm = N / 2.0;                          << 7873      *PROBG = 0.0;
9968     A_levdens = A / xLevdens;                 << 7874  }
9969     gamma = A_levdens / (0.40 * std::pow(A, 1 << 7875  else if(SBP==e){
9970     A_levdens_heavy1 = Aheavy1 / xLevdens;    << 7876      *ECN = 0.0;
9971     gamma_heavy1 = A_levdens_heavy1 / (0.40 * << 7877      *ECP = (-1.0)*SP + BP;
9972     A_levdens_heavy2 = Aheavy2 / xLevdens;    << 7878      *ECD = 0.0;
9973     gamma_heavy2 = A_levdens_heavy2 / (0.40 * << 7879      *ECT = 0.0;
9974                                               << 7880      *ECHE = 0.0;
9975     //     Energy dissipated from saddle to s << 7881      *ECA = 0.0;
9976     //     F. Rejmund et al., Nucl. Phys. A 6 << 7882      *PROBN = 0.0;
9977     E_saddle_scission = (-24. + 0.02227 * Z * << 7883      *PROBP = 1.0;
9978     E_saddle_scission = max(0.0, E_saddle_sci << 7884      *PROBD = 0.0;
9979                                               << 7885      *PROBT = 0.0;
9980     //     Fit to experimental result on curv << 7886      *PROBHE = 0.0;
9981     //     Parametrization of T. Enqvist acco << 7887      *PROBA = 0.0;
9982     //     MassCurv taken at scission.    */  << 7888      *PROBIMF = 0.0;
9983                                               << 7889      *PROBF = 0.0;
9984     Z2_over_A_eff = Z * Z / A;                << 7890      *PROBG = 0.0;
9985                                               << 7891  }
9986     if (Z2_over_A_eff < 34.0)                 << 7892  else if(SBD==e){
9987         MassCurv_scis = std::pow(10., -1.0933 << 7893      *ECN = 0.0;
9988     else                                      << 7894      *ECD = (-1.0)*SD + BD;
9989         MassCurv_scis = std::pow(10., 3.05353 << 7895      *ECP = 0.0;
9990                                               << 7896      *ECT = 0.0;
9991     //     to do:                             << 7897      *ECHE = 0.0;
9992     //     fix the X with the channel intensi << 7898      *ECA = 0.0;
9993     //     replace then (all) cN_symm by cN_s << 7899      *PROBN = 0.0;
9994     MassCurv_sadd = X_s2s * MassCurv_scis;    << 7900      *PROBP = 0.0;
9995                                               << 7901      *PROBD = 1.0;
9996     cN_symm = 8.0 / std::pow(N, 2.) * MassCur << 7902      *PROBT = 0.0;
9997     cN_symm_sadd = 8.0 / std::pow(N, 2.) * Ma << 7903      *PROBHE = 0.0;
9998                                               << 7904      *PROBA = 0.0;
9999     Nheavy1_shell = Nheavy1;                  << 7905      *PROBIMF = 0.0;
10000                                              << 7906      *PROBF = 0.0;
10001     if (E < 100.0)                           << 7907      *PROBG = 0.0;
10002         Nheavy1_eff = (cN_symm_sadd * Nsymm  << 7908  }
10003                        cN_asymm1_shell * Uwa << 7909  else if(SBT==e){
10004                       (cN_symm_sadd + cN_asy << 7910      *ECN = 0.0;
10005     else                                     << 7911      *ECT = (-1.0)*ST + BT;
10006         Nheavy1_eff = (cN_symm_sadd * Nsymm  << 7912      *ECD = 0.0;
10007                                              << 7913      *ECP = 0.0;
10008     /* Position of Standard II defined by ne << 7914      *ECHE = 0.0;
10009     Nheavy2_NZ = Nheavy2;                    << 7915      *ECA = 0.0;
10010     Nheavy2_shell = Nheavy2_NZ;              << 7916      *PROBN = 0.0;
10011     if (E < 100.)                            << 7917      *PROBP = 0.0;
10012         Nheavy2_eff = (cN_symm_sadd * Nsymm  << 7918      *PROBD = 0.0;
10013                        cN_asymm2_shell * Uwa << 7919      *PROBT = 1.0;
10014                       (cN_symm_sadd + cN_asy << 7920      *PROBHE = 0.0;
10015     else                                     << 7921      *PROBA = 0.0;
10016         Nheavy2_eff = (cN_symm_sadd * Nsymm  << 7922      *PROBIMF = 0.0;
10017                                              << 7923      *PROBF = 0.0;
10018     Delta_U1 = Delta_U1_shell + (Nheavy1_she << 7924      *PROBG = 0.0;
10019                                     cN_asymm << 7925  }
10020     Delta_U1 = min(Delta_U1, 0.0);           << 7926  else if(SBHE==e){
10021     Delta_U2 = Delta_U2_shell + (Nheavy2_she << 7927      *ECN = 0.0;
10022                                     cN_asymm << 7928      *ECHE= (-1.0)*SHE + BHE;
10023     Delta_U2 = min(Delta_U2, 0.0);           << 7929      *ECD = 0.0;
10024                                              << 7930      *ECT = 0.0;
10025     //    liquid drop energies at the centre << 7931      *ECP = 0.0;
10026     //    with respect to liquid drop at sym << 7932      *ECA = 0.0;
10027     Epot0_mode1_saddle = (Nheavy1_eff - Nsym << 7933      *PROBN = 0.0;
10028     Epot0_mode2_saddle = (Nheavy2_eff - Nsym << 7934      *PROBP = 0.0;
10029     Epot0_symm_saddle = 0.0;                 << 7935      *PROBD = 0.0;
10030                                              << 7936      *PROBT = 0.0;
10031     //    energies including shell effects a << 7937      *PROBHE = 1.0;
10032     //    shell effects with respect to liqu << 7938      *PROBA = 0.0;
10033     Epot_mode1_saddle = Epot0_mode1_saddle + << 7939      *PROBIMF = 0.0;
10034     Epot_mode2_saddle = Epot0_mode2_saddle + << 7940      *PROBF = 0.0;
10035     Epot_symm_saddle = Epot0_symm_saddle;    << 7941      *PROBG = 0.0;
10036                                              << 7942  }
10037     //    minimum of potential with respect  << 7943  else{ 
10038     dUeff = min(Epot_mode1_saddle, Epot_mode << 7944     if(SBA==e){
10039     dUeff = min(dUeff, Epot_symm_saddle);    << 7945      *ECN = 0.0;
10040     dUeff = dUeff - Epot_symm_saddle;        << 7946      *ECA = (-1.0)*SA + BA;
10041                                              << 7947      *ECD = 0.0;
10042     Eld = E + dUeff;                         << 7948      *ECT = 0.0;
10043     //     E   = energy above lowest effecti << 7949      *ECHE = 0.0;
10044     //     Eld = energy above liquid-drop ba << 7950      *ECP = 0.0;
10045     //     Due to this treatment the energy  << 7951      *PROBN = 0.0;
10046     //     energy above the lowest saddle.   << 7952      *PROBP = 0.0;
10047                                              << 7953      *PROBD = 0.0;
10048     //    excitation energies at saddle mode << 7954      *PROBT = 0.0;
10049     epsilon0_1_saddle = Eld - Epot0_mode1_sa << 7955      *PROBHE = 0.0;
10050     epsilon0_2_saddle = Eld - Epot0_mode2_sa << 7956      *PROBA = 1.0;
10051                                              << 7957      *PROBIMF = 0.0;
10052     //    excitation energies at saddle mode << 7958      *PROBF = 0.0;
10053     epsilon_1_saddle = Eld - Epot_mode1_sadd << 7959      *PROBG = 0.0;
10054     epsilon_2_saddle = Eld - Epot_mode2_sadd << 7960     }
10055                                              << 7961  }
10056     epsilon_symm_saddle = Eld - Epot_symm_sa << 7962 
10057     //    epsilon_symm_saddle = Eld - dUeff; << 7963  return;
10058                                              << 7964 }
10059     eexc1_saddle = epsilon_1_saddle;         << 7965 
10060     eexc2_saddle = epsilon_2_saddle;         << 7966 void G4Abla::fissionDistri(G4double &A,G4double &Z,G4double &E,
10061                                              << 7967                G4double &a1,G4double &z1,G4double &e1,G4double &v1,
10062     //    EEXC_MAX is energy above the lowes << 7968                G4double &a2,G4double &z2,G4double &e2,G4double &v2,
10063     EEXC_MAX = max(eexc1_saddle, eexc2_saddl << 7969                            G4double &vx_eva_sc,G4double &vy_eva_sc,G4double &vz_eva_sc, 
10064     EEXC_MAX = max(EEXC_MAX, Eld);           << 7970                            G4int *NbLam0_par)
10065                                              << 7971 {
10066     //    excitation energy at scission */   << 7972 
10067     epsilon_1_scission = Eld + E_saddle_scis << 7973 /*
10068     epsilon_2_scission = Eld + E_saddle_scis << 7974   Last update:
10069                                              << 7975 
10070     //    excitation energy of symmetric fra << 7976   21/01/17 - J.L.R.S. - Implementation of this fission model in C++
10071     epsilon_symm_scission = Eld + E_saddle_s << 7977 
10072                                              << 7978 
10073     //    calculate widhts at the saddle     << 7979   Authors: K.-H. Schmidt, A. Kelic, M. V. Ricciardi,J. Benlliure, and 
10074     E_eff1_saddle =                          << 7980            J.L.Rodriguez-Sanchez(1995 - 2017)
10075         epsilon0_1_saddle - Delta_U1 * Uwash << 7981 
10076                                              << 7982   On input: A, Z, E (mass, atomic number and exc. energy of compound nucleus
10077     if (E_eff1_saddle < A_levdens * hbom1 *  << 7983                      before fission)
10078         E_eff1_saddle = A_levdens * hbom1 *  << 7984   On output: Ai, Zi, Ei (mass, atomic number and (absolute) exc. energy of
10079                                              << 7985                          fragment 1 and 2 after fission)
10080     wNasymm1_saddle = std::sqrt(             << 7986 
10081         0.50 * std::sqrt(1.0 / A_levdens * E << 7987 */
10082         (cN_asymm1_shell * Uwash(epsilon_1_s << 7988   /* This program calculates isotopic distributions of fission fragments    */
10083                                              << 7989   /* with a semiempirical model                                             */
10084     E_eff2_saddle =                          << 7990   /* The width and eventually a shift in N/Z (polarization) follows the     */
10085         epsilon0_2_saddle - Delta_U2 * Uwash << 7991   /* following rules:                                                       */
10086                                              << 7992   /*                                                                        */
10087     if (E_eff2_saddle < A_levdens * hbom2 *  << 7993   /* The line N/Z following UCD has an angle of atan(Zcn/Ncn)               */
10088         E_eff2_saddle = A_levdens * hbom2 *  << 7994   /* to the horizontal axis on a chart of nuclides.                         */
10089                                              << 7995 /*   (For 238U the angle is 32.2 deg.)                                      */
10090     wNasymm2_saddle = std::sqrt(             << 7996 /*                                                                        */
10091         0.50 * std::sqrt(1.0 / A_levdens * E << 7997 /*   The following relations hold: (from Armbruster)
10092         (cN_asymm2_shell * Uwash(epsilon_2_s << 7998 c
10093                                              << 7999 c    sigma(N) (A=const) = sigma(Z) (A=const)
10094     E_eff0_saddle = epsilon_symm_saddle;     << 8000 c    sigma(A) (N=const) = sigma(Z) (N=const)
10095     if (E_eff0_saddle < A_levdens * hbom3 *  << 8001 c    sigma(A) (Z=const) = sigma(N) (Z=const)
10096         E_eff0_saddle = A_levdens * hbom3 *  << 8002 c
10097                                              << 8003 c   From this we get:
10098     wNsymm_saddle = std::sqrt(0.50 * std::sq << 8004 c    sigma(Z) (N=const) * N = sigma(N) (Z=const) * Z
10099                                              << 8005 c    sigma(A) (Z=const) = sigma(Z) (A=const) * A/Z
10100     if (epsilon_symm_scission > 0.0)         << 8006 c    sigma(N) (Z=const) = sigma(Z) (A=const) * A/Z
10101     {                                        << 8007 c    Z*sigma(N) (Z=const) = N*sigma(Z) (N=const) = A*sigma(Z) (A=const)     */
10102         E_HELP = max(E_saddle_scission, epsi << 8008 //
10103         wNsymm_scission = std::sqrt(0.50 * s << 8009 
10104     }                                        << 8010 /*   Model parameters: 
10105     else                                     << 8011 C     These parameters have been adjusted to the compound nucleus 238U.
10106     {                                        << 8012 c     For the fission of another compound nucleus, it might be
10107         wNsymm_scission = std::sqrt(0.50 * s << 8013 c     necessary to slightly adjust some parameter values.
10108     }                                        << 8014 c     The most important ones are
                                                   >> 8015 C      Delta_U1_shell_max and
                                                   >> 8016 c      Delta_u2_shell.
                                                   >> 8017 */
                                                   >> 8018       G4double Nheavy1_in;   //  'position of shell for Standard 1'
                                                   >> 8019       Nheavy1_in = 83.0;
                                                   >> 8020 
                                                   >> 8021       G4double Zheavy1_in;   //  'position of shell for Standard 1'
                                                   >> 8022       Zheavy1_in = 50.0;
                                                   >> 8023 
                                                   >> 8024       G4double Nheavy2;   //  'position of heavy peak valley 2'
                                                   >> 8025       Nheavy2 = 89.0;
                                                   >> 8026 
                                                   >> 8027       G4double Delta_U1_shell_max;  //  'Shell effect for valley 1'
                                                   >> 8028       Delta_U1_shell_max = -2.45;
                                                   >> 8029 
                                                   >> 8030       G4double U1NZ_SLOPE;  // Reduction of shell effect with distance to 132Sn
                                                   >> 8031       U1NZ_SLOPE = 0.2;
                                                   >> 8032 
                                                   >> 8033       G4double Delta_U2_shell;  //  'Shell effect for valley 2'
                                                   >> 8034       Delta_U2_shell = -2.45;
                                                   >> 8035 
                                                   >> 8036       G4double X_s2s;   //  'Ratio (C_sad/C_scis) of curvature of potential'
                                                   >> 8037       X_s2s = 0.8;
                                                   >> 8038 
                                                   >> 8039       G4double hbom1,hbom2,hbom3;   //  'Curvature of potential at saddle'
                                                   >> 8040       hbom1 = 0.2;  // hbom1 is hbar * omega1 / (2 pi) !!!
                                                   >> 8041       hbom2 = 0.2;  // hbom2 is hbar * omega2 / (2 pi) !!!
                                                   >> 8042       hbom3 = 0.2;  // hbom3 is hbar * omega3 / (2 pi) !!!
                                                   >> 8043 
                                                   >> 8044       G4double Fwidth_asymm1,Fwidth_asymm2,Fwidth_symm;
                                                   >> 8045 //         'Factors for widths of distr. valley 1 and 2'
                                                   >> 8046       Fwidth_asymm1 = 0.65;
                                                   >> 8047       Fwidth_asymm2 = 0.65;
                                                   >> 8048       Fwidth_symm   = 1.16;
                                                   >> 8049 
                                                   >> 8050       G4double xLevdens;   // 'Parameter x: a = A/x'
                                                   >> 8051       xLevdens = 10.75;
                                                   >> 8052 //     The value of 1/0.093 = 10.75 is consistent with the
                                                   >> 8053 //     systematics of the mass widths of Ref. (RuI97).
                                                   >> 8054 
                                                   >> 8055       G4double FGAMMA; // 'Factor to gamma'
                                                   >> 8056       FGAMMA = 1.;  // Theoretical expectation, not adjusted to data.
                                                   >> 8057 //     Additional factor to attenuation coefficient of shell effects
                                                   >> 8058 //     with increasing excitation energy
                                                   >> 8059 
                                                   >> 8060       G4double FGAMMA1; // 'Factor to gamma_heavy1'
                                                   >> 8061       FGAMMA1 = 2.;
                                                   >> 8062 //     Adjusted to reduce the weight of Standard 1 with increasing
                                                   >> 8063 //     excitation energies, as required by experimental data.
                                                   >> 8064 
                                                   >> 8065       G4double FREDSHELL;
                                                   >> 8066       FREDSHELL = 0.;
                                                   >> 8067 //     Adjusted to the reduced attenuation of shells in the superfluid region.
                                                   >> 8068 //     If FGAMMA is modified,
                                                   >> 8069 //     FGAMMA * FREADSHELL should remain constant (0.65) to keep
                                                   >> 8070 //     the attenuation of the shell effects below the critical
                                                   >> 8071 //     pairing energy ECRIT unchanged, which has been carefully
                                                   >> 8072 //     adjusted to the mass yields of Vives and Zoeller in this
                                                   >> 8073 //     energy range. A high value of FGAMMA leads ot a stronger
                                                   >> 8074 //     attenuation of shell effects above the superfluid region.
                                                   >> 8075 
                                                   >> 8076       G4double Ecrit;
                                                   >> 8077       Ecrit = 5.;
                                                   >> 8078 //     The value of ECRIT determines the transition from a weak
                                                   >> 8079 //     decrease of the shell effect below ECRIT to a stronger
                                                   >> 8080 //     decrease above the superfluid range.
                                                   >> 8081       const G4double d = 2.0;   // 'Surface distance of scission configuration'
                                                   >> 8082      // d = 2.0;
                                                   >> 8083 //    Charge polarisation from Wagemanns p. 397: 
                                                   >> 8084       G4double cpol1; // Charge polarisation standard I
                                                   >> 8085       cpol1 = 0.35;  // calculated internally with shells
                                                   >> 8086       G4double cpol2;  // Charge polarisation standard II
                                                   >> 8087       cpol2 = 0.;  // calculated internally from LDM
                                                   >> 8088       G4double Friction_factor;
                                                   >> 8089       Friction_factor = 1.0;
                                                   >> 8090       G4double Nheavy1;    // position of valley St 1 in Z and N
                                                   >> 8091       G4double Delta_U1,Delta_U2; // used shell effects
                                                   >> 8092       G4double cN_asymm1_shell, cN_asymm2_shell;
                                                   >> 8093       G4double gamma,gamma_heavy1,gamma_heavy2; // fading of shells
                                                   >> 8094       G4double E_saddle_scission;  // friction from saddle to scission
                                                   >> 8095       G4double Ysymm=0.;    // Yield of symmetric mode
                                                   >> 8096       G4double Yasymm1=0.;  // Yield of asymmetric mode 1
                                                   >> 8097       G4double Yasymm2=0.;  // Yield of asymmetric mode 2
                                                   >> 8098       G4double Nheavy1_eff; // Effective position of valley 1
                                                   >> 8099       G4double Nheavy2_eff; // Effective position of valley 2
                                                   >> 8100       G4double eexc1_saddle; // Excitation energy above saddle 1
                                                   >> 8101       G4double eexc2_saddle; // Excitation energy above saddle 2
                                                   >> 8102       G4double EEXC_MAX;  // Excitation energy above lowest saddle
                                                   >> 8103       G4double r_e_o;  // Even-odd effect in Z
                                                   >> 8104       G4double cN_symm;  // Curvature of symmetric valley
                                                   >> 8105       G4double CZ;  // Curvature of Z distribution for fixed A
                                                   >> 8106       G4double Nheavy2_NZ;  // Position of Shell 2, combined N and Z
                                                   >> 8107       G4double N;
                                                   >> 8108       G4double Aheavy1,Aheavy2;
                                                   >> 8109       G4double Sasymm1=0.,Sasymm2=0.,Ssymm=0.,Ysum=0.,Yasymm=0.;
                                                   >> 8110       G4double Ssymm_mode1,Ssymm_mode2;
                                                   >> 8111       G4double wNasymm1_saddle, wNasymm2_saddle, wNsymm_saddle;
                                                   >> 8112       G4double wNasymm2_scission, wNsymm_scission;
                                                   >> 8113       G4double wNasymm1, wNasymm2, wNsymm;
                                                   >> 8114       G4int imode;
                                                   >> 8115       G4double  rmode;
                                                   >> 8116       G4double ZA1width;
                                                   >> 8117       G4double N1r,N2r,A1r,N1,N2;
                                                   >> 8118       G4double Zsymm,Nsymm;
                                                   >> 8119       G4double N1mean, N1width;
                                                   >> 8120       G4double dUeff;
                                                   >> 8121       /* effective shell effect at lowest barrier */
                                                   >> 8122       G4double Eld;
                                                   >> 8123       /* Excitation energy with respect to ld barrier */
                                                   >> 8124       G4double re1,re2,re3;
                                                   >> 8125       G4double eps1,eps2;
                                                   >> 8126       G4double Z1UCD,Z2UCD;
                                                   >> 8127       G4double beta,beta1,beta2;
                                                   >> 8128      // double betacomplement;
                                                   >> 8129       G4double DN1_POL;
                                                   >> 8130       /* shift of most probable neutron number for given Z,
                                                   >> 8131             according to polarization */
                                                   >> 8132       G4int i_help;
                                                   >> 8133       G4double A_levdens;
                                                   >> 8134             /* level-density parameter */
                                                   >> 8135      // double A_levdens_light1,A_levdens_light2;
                                                   >> 8136       G4double A_levdens_heavy1,A_levdens_heavy2;
                                                   >> 8137 
                                                   >> 8138       G4double R0=1.16;
                                                   >> 8139 
                                                   >> 8140       G4double epsilon_1_saddle,epsilon0_1_saddle;
                                                   >> 8141       G4double epsilon_2_saddle,epsilon0_2_saddle,epsilon_symm_saddle;
                                                   >> 8142       G4double epsilon_1_scission;//,epsilon0_1_scission;
                                                   >> 8143       G4double epsilon_2_scission;//,epsilon0_2_scission;
                                                   >> 8144       G4double epsilon_symm_scission;
                                                   >> 8145                                     /* modified energy */
                                                   >> 8146       G4double E_eff1_saddle,E_eff2_saddle;
                                                   >> 8147       G4double Epot0_mode1_saddle,Epot0_mode2_saddle,Epot0_symm_saddle;
                                                   >> 8148       G4double Epot_mode1_saddle,Epot_mode2_saddle,Epot_symm_saddle;
                                                   >> 8149       G4double E_defo,E_defo1,E_defo2,E_scission_pre,E_scission_post;
                                                   >> 8150       G4double E_asym;
                                                   >> 8151       G4double E1exc,E2exc;
                                                   >> 8152       G4double E1exc_sigma,E2exc_sigma;
                                                   >> 8153       G4double TKER;
                                                   >> 8154       G4double EkinR1,EkinR2;
                                                   >> 8155       G4double MassCurv_scis, MassCurv_sadd;
                                                   >> 8156       G4double cN_symm_sadd;
                                                   >> 8157       G4double Nheavy1_shell,Nheavy2_shell;
                                                   >> 8158       G4double wNasymm1_scission;
                                                   >> 8159       G4double Aheavy1_eff,Aheavy2_eff;
                                                   >> 8160       G4double Z1rr,Z1r;
                                                   >> 8161       G4double E_HELP;
                                                   >> 8162       G4double Z_scission,N_scission,A_scission;
                                                   >> 8163       G4double Z2_over_A_eff;
                                                   >> 8164       G4double beta1gs,beta2gs,betags;
                                                   >> 8165       G4double sigZmin;   // 'Minimum neutron width for constant Z'
                                                   >> 8166       G4double DSN132,Delta_U1_shell,E_eff0_saddle;//,e_scission;
                                                   >> 8167       G4int NbLam0= (*NbLam0_par);
                                                   >> 8168       //
                                                   >> 8169       sigZmin = 0.5;
                                                   >> 8170       N = A - Z;  /*  neutron number of the fissioning nucleus  */
                                                   >> 8171 //
                                                   >> 8172       cN_asymm1_shell = 0.700 * N/Z;
                                                   >> 8173       cN_asymm2_shell = 0.040 * N/Z;
10109                                                 8174 
10110     //    Calculate widhts at the scission p << 8175 //*********************************************************************
10111     //    fits of ref. Beizin 1991 (Plots by << 
10112                                                 8176 
10113     if (E_saddle_scission == 0.0)            << 8177       DSN132 = Nheavy1_in - N/Z * Zheavy1_in;
10114     {                                        << 8178       Aheavy1 = Nheavy1_in + Zheavy1_in + 0.340 * DSN132;
                                                   >> 8179      /* Neutron number of valley Standard 1 */
                                                   >> 8180      /* It is assumed that the 82-neutron shell effect is stronger than
                                                   >> 8181 c         the 50-proton shell effect. Therefore, the deviation in N/Z of
                                                   >> 8182 c         the fissioning nucleus from the N/Z of 132Sn will
                                                   >> 8183 c         change the position of the combined shell in mass. For neutron-
                                                   >> 8184 c         deficient fissioning nuclei, the mass will increase and vice
                                                   >> 8185 c         versa.  */
                                                   >> 8186 
                                                   >> 8187       Delta_U1_shell = Delta_U1_shell_max + U1NZ_SLOPE * std::abs(DSN132);
                                                   >> 8188       Delta_U1_shell = min(0.,Delta_U1_shell);
                                                   >> 8189       /* Empirical reduction of shell effect with distance in N/Z of CN to 132Sn */
                                                   >> 8190       /* Fits (239U,n)f and 226Th e.-m.-induced fission */
                                                   >> 8191 
                                                   >> 8192       Nheavy1 = N/A * Aheavy1;   /* UCD */
                                                   >> 8193       Aheavy2 = Nheavy2 * A/N;
                                                   >> 8194 
                                                   >> 8195       Zsymm  = Z / 2.0; /* proton number in symmetric fission (centre) */
                                                   >> 8196       Nsymm  = N / 2.0;
                                                   >> 8197       A_levdens = A / xLevdens;
                                                   >> 8198       gamma = A_levdens / (0.40 * std::pow(A,1.3333)) * FGAMMA;
                                                   >> 8199       A_levdens_heavy1 = Aheavy1 / xLevdens;
                                                   >> 8200       gamma_heavy1 = A_levdens_heavy1 / (0.40 * std::pow(Aheavy1,1.3333)) * FGAMMA * FGAMMA1;
                                                   >> 8201       A_levdens_heavy2 = Aheavy2 / xLevdens;
                                                   >> 8202       gamma_heavy2 = A_levdens_heavy2 / (0.40 * std::pow(Aheavy2,1.3333)) * FGAMMA;
                                                   >> 8203 
                                                   >> 8204 //     Energy dissipated from saddle to scission
                                                   >> 8205 //     F. Rejmund et al., Nucl. Phys. A 678 (2000) 215, fig. 4 b    */
                                                   >> 8206       E_saddle_scission = (-24. + 0.02227 * Z*Z/std::pow(A,0.33333))*Friction_factor;
                                                   >> 8207       E_saddle_scission = max( 0.0, E_saddle_scission );
                                                   >> 8208 
                                                   >> 8209 //     Fit to experimental result on curvature of potential at saddle
                                                   >> 8210 //     Parametrization of T. Enqvist according to Mulgin et al. 1998
                                                   >> 8211 //     MassCurv taken at scission.    */
                                                   >> 8212 
                                                   >> 8213        Z2_over_A_eff = Z*Z/A;
                                                   >> 8214 
                                                   >> 8215       if( Z2_over_A_eff< 34.0 )
                                                   >> 8216         MassCurv_scis = std::pow(10., -1.093364 + 0.082933 * Z2_over_A_eff - 0.0002602 * Z2_over_A_eff*Z2_over_A_eff);
                                                   >> 8217       else
                                                   >> 8218         MassCurv_scis = std::pow(10., 3.053536 - 0.056477 * Z2_over_A_eff+ 0.0002454 * Z2_over_A_eff*Z2_over_A_eff );
                                                   >> 8219 
                                                   >> 8220 //     to do:
                                                   >> 8221 //     fix the X with the channel intensities of 226Th (KHS at SEYSSINS,1998)
                                                   >> 8222 //     replace then (all) cN_symm by cN_symm_saddle (at least for Yields)
                                                   >> 8223       MassCurv_sadd = X_s2s * MassCurv_scis;
                                                   >> 8224 
                                                   >> 8225       cN_symm      = 8.0 / std::pow(N,2.) * MassCurv_scis;
                                                   >> 8226       cN_symm_sadd = 8.0 / std::pow(N,2.) * MassCurv_sadd;
                                                   >> 8227 
                                                   >> 8228       Nheavy1_shell = Nheavy1;
                                                   >> 8229 
                                                   >> 8230       if(E < 100.0)
                                                   >> 8231       Nheavy1_eff = (cN_symm_sadd*Nsymm + cN_asymm1_shell * 
                                                   >> 8232                      Uwash(E/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1) *
                                                   >> 8233                      Nheavy1_shell)
                                                   >> 8234                      / (cN_symm_sadd +
                                                   >> 8235                        cN_asymm1_shell *
                                                   >> 8236                      Uwash(E/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1));
                                                   >> 8237       else
                                                   >> 8238       Nheavy1_eff = (cN_symm_sadd*Nsymm +
                                                   >> 8239                     cN_asymm1_shell*Nheavy1_shell)
                                                   >> 8240                   / (cN_symm_sadd +
                                                   >> 8241                     cN_asymm1_shell);
                                                   >> 8242       
                                                   >> 8243       /* Position of Standard II defined by neutron shell */
                                                   >> 8244       Nheavy2_NZ = Nheavy2;
                                                   >> 8245       Nheavy2_shell = Nheavy2_NZ;
                                                   >> 8246       if (E < 100.)
                                                   >> 8247       Nheavy2_eff = (cN_symm_sadd*Nsymm +
                                                   >> 8248                     cN_asymm2_shell*
                                                   >> 8249                     Uwash(E/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2) *
                                                   >> 8250                     Nheavy2_shell)
                                                   >> 8251                   / (cN_symm_sadd +
                                                   >> 8252                     cN_asymm2_shell*
                                                   >> 8253                     Uwash(E/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2));
                                                   >> 8254       else
                                                   >> 8255       Nheavy2_eff = (cN_symm_sadd*Nsymm +
                                                   >> 8256                     cN_asymm2_shell*Nheavy2_shell)
                                                   >> 8257                   / (cN_symm_sadd +
                                                   >> 8258                     cN_asymm2_shell);
                                                   >> 8259      
                                                   >> 8260       Delta_U1 = Delta_U1_shell + (Nheavy1_shell - Nheavy1_eff)*(Nheavy1_shell - Nheavy1_eff) * cN_asymm1_shell; /* shell effect in valley of mode 1 */
                                                   >> 8261       Delta_U1 = min(Delta_U1,0.0);
                                                   >> 8262       Delta_U2 = Delta_U2_shell + (Nheavy2_shell - Nheavy2_eff)*(Nheavy2_shell - Nheavy2_eff) * cN_asymm2_shell; /* shell effect in valley of mode 2 */
                                                   >> 8263       Delta_U2 = min(Delta_U2,0.0);
                                                   >> 8264 
                                                   >> 8265 //    liquid drop energies at the centres of the different shell effects
                                                   >> 8266 //    with respect to liquid drop at symmetry
                                                   >> 8267       Epot0_mode1_saddle = (Nheavy1_eff-Nsymm)*(Nheavy1_eff-Nsymm) * cN_symm_sadd;
                                                   >> 8268       Epot0_mode2_saddle = (Nheavy2_eff-Nsymm)*(Nheavy2_eff-Nsymm) * cN_symm_sadd;
                                                   >> 8269       Epot0_symm_saddle = 0.0;
                                                   >> 8270 
                                                   >> 8271 //    energies including shell effects at the centres of the different
                                                   >> 8272 //    shell effects with respect to liquid drop at symmetry  */
                                                   >> 8273       Epot_mode1_saddle = Epot0_mode1_saddle + Delta_U1;
                                                   >> 8274       Epot_mode2_saddle = Epot0_mode2_saddle + Delta_U2;
                                                   >> 8275       Epot_symm_saddle = Epot0_symm_saddle;
                                                   >> 8276 
                                                   >> 8277 //    minimum of potential with respect to ld potential at symmetry
                                                   >> 8278       dUeff = min( Epot_mode1_saddle, Epot_mode2_saddle);
                                                   >> 8279       dUeff = min( dUeff, Epot_symm_saddle);
                                                   >> 8280       dUeff = dUeff - Epot_symm_saddle;
                                                   >> 8281 
                                                   >> 8282       Eld = E + dUeff;
                                                   >> 8283 //     E   = energy above lowest effective barrier
                                                   >> 8284 //     Eld = energy above liquid-drop barrier
                                                   >> 8285 //     Due to this treatment the energy E on input means the excitation
                                                   >> 8286 //     energy above the lowest saddle.                                  */
                                                   >> 8287 
                                                   >> 8288 //    excitation energies at saddle modes 1 and 2 without shell effect  */
                                                   >> 8289       epsilon0_1_saddle = Eld - Epot0_mode1_saddle;
                                                   >> 8290       epsilon0_2_saddle = Eld - Epot0_mode2_saddle;
                                                   >> 8291 
                                                   >> 8292 //    excitation energies at saddle modes 1 and 2 with shell effect */
                                                   >> 8293       epsilon_1_saddle = Eld - Epot_mode1_saddle;
                                                   >> 8294       epsilon_2_saddle = Eld - Epot_mode2_saddle;
                                                   >> 8295 
                                                   >> 8296       epsilon_symm_saddle = Eld - Epot_symm_saddle;
                                                   >> 8297 //    epsilon_symm_saddle = Eld - dUeff;
                                                   >> 8298 
                                                   >> 8299       eexc1_saddle = epsilon_1_saddle;
                                                   >> 8300       eexc2_saddle = epsilon_2_saddle;
                                                   >> 8301 
                                                   >> 8302 //    EEXC_MAX is energy above the lowest saddle */
                                                   >> 8303       EEXC_MAX = max( eexc1_saddle, eexc2_saddle);
                                                   >> 8304       EEXC_MAX = max( EEXC_MAX, Eld);
                                                   >> 8305 
                                                   >> 8306 //    excitation energy at scission */
                                                   >> 8307       epsilon_1_scission = Eld + E_saddle_scission - Epot_mode1_saddle;
                                                   >> 8308       epsilon_2_scission = Eld + E_saddle_scission - Epot_mode2_saddle;
                                                   >> 8309 
                                                   >> 8310 //    excitation energy of symmetric fragment at scission  */
                                                   >> 8311       epsilon_symm_scission = Eld + E_saddle_scission - Epot_symm_saddle;
                                                   >> 8312 
                                                   >> 8313 //    calculate widhts at the saddle
                                                   >> 8314       E_eff1_saddle = epsilon0_1_saddle - Delta_U1 *
                                                   >> 8315       Uwash(epsilon_1_saddle/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1);
                                                   >> 8316 
                                                   >> 8317       if( E_eff1_saddle < A_levdens * hbom1*hbom1)
                                                   >> 8318           E_eff1_saddle = A_levdens * hbom1*hbom1;
                                                   >> 8319       
                                                   >> 8320       wNasymm1_saddle =
                                                   >> 8321         std::sqrt(0.50 * std::sqrt(1.0/A_levdens*E_eff1_saddle) /
                                                   >> 8322         (cN_asymm1_shell *
                                                   >> 8323       Uwash(epsilon_1_saddle/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1)+
                                                   >> 8324         cN_symm_sadd));
                                                   >> 8325 
                                                   >> 8326       E_eff2_saddle = epsilon0_2_saddle -
                                                   >> 8327       Delta_U2 *
                                                   >> 8328       Uwash(epsilon_2_saddle/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2);
                                                   >> 8329 
                                                   >> 8330       if(E_eff2_saddle < A_levdens * hbom2*hbom2)
                                                   >> 8331           E_eff2_saddle = A_levdens * hbom2*hbom2;
                                                   >> 8332       
                                                   >> 8333       wNasymm2_saddle =
                                                   >> 8334         std::sqrt(0.50 * std::sqrt(1.0/A_levdens*E_eff2_saddle) /
                                                   >> 8335         (cN_asymm2_shell *
                                                   >> 8336        Uwash(epsilon_2_saddle/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2)+
                                                   >> 8337         cN_symm_sadd));
                                                   >> 8338 
                                                   >> 8339       E_eff0_saddle = epsilon_symm_saddle;
                                                   >> 8340       if(E_eff0_saddle < A_levdens * hbom3*hbom3)
                                                   >> 8341           E_eff0_saddle = A_levdens * hbom3*hbom3;
                                                   >> 8342       
                                                   >> 8343       wNsymm_saddle =
                                                   >> 8344           std::sqrt(0.50 * std::sqrt(1.0/A_levdens*E_eff0_saddle) /
                                                   >> 8345                     cN_symm_sadd);
                                                   >> 8346 
                                                   >> 8347       if(epsilon_symm_scission > 0.0 ){
                                                   >> 8348         E_HELP = max(E_saddle_scission,epsilon_symm_scission);
                                                   >> 8349         wNsymm_scission =
                                                   >> 8350         std::sqrt(0.50 * std::sqrt(1.0/A_levdens*(E_HELP)) /
                                                   >> 8351                     cN_symm);
                                                   >> 8352       }else{
                                                   >> 8353         wNsymm_scission =
                                                   >> 8354         std::sqrt(0.50 * std::sqrt(1.0/A_levdens*E_saddle_scission) /
                                                   >> 8355                     cN_symm);
                                                   >> 8356       }
                                                   >> 8357 
                                                   >> 8358 //    Calculate widhts at the scission point: 
                                                   >> 8359 //    fits of ref. Beizin 1991 (Plots by Sergei Zhdanov) 
                                                   >> 8360 
                                                   >> 8361       if( E_saddle_scission == 0.0 ){
10115         wNasymm1_scission = wNasymm1_saddle;    8362         wNasymm1_scission = wNasymm1_saddle;
10116         wNasymm2_scission = wNasymm2_saddle;    8363         wNasymm2_scission = wNasymm2_saddle;
10117     }                                        << 8364       }else{
10118     else                                     << 8365         if( Nheavy1_eff > 75.0 ){
10119     {                                        << 8366           wNasymm1_scission = std::sqrt(21.0)*N/A;
10120         if (Nheavy1_eff > 75.0)              << 8367           wNasymm2_scission = max( 12.8 - 1.0 *(92.0 - Nheavy2_eff),1.0)*N/A;
10121         {                                    << 8368 
10122             wNasymm1_scission = std::sqrt(21 << 8369         }else{
10123             wNasymm2_scission = max(12.8 - 1 << 8370            wNasymm1_scission = wNasymm1_saddle;
                                                   >> 8371            wNasymm2_scission = wNasymm2_saddle;
10124         }                                       8372         }
10125         else                                 << 8373       }
10126         {                                    << 
10127             wNasymm1_scission = wNasymm1_sad << 
10128             wNasymm2_scission = wNasymm2_sad << 
10129         }                                    << 
10130     }                                        << 
10131                                              << 
10132     wNasymm1_scission = max(wNasymm1_scissio << 
10133     wNasymm2_scission = max(wNasymm2_scissio << 
10134                                              << 
10135     wNasymm1 = wNasymm1_scission * Fwidth_as << 
10136     wNasymm2 = wNasymm2_scission * Fwidth_as << 
10137     wNsymm = wNsymm_scission * Fwidth_symm;  << 
10138                                              << 
10139     //     mass and charge of fragments usin << 
10140     Aheavy1_eff = Nheavy1_eff * A / N;       << 
10141     Aheavy2_eff = Nheavy2_eff * A / N;       << 
10142                                              << 
10143     A_levdens_heavy1 = Aheavy1_eff / xLevden << 
10144     A_levdens_heavy2 = Aheavy2_eff / xLevden << 
10145     gamma_heavy1 = A_levdens_heavy1 / (0.40  << 
10146     gamma_heavy2 = A_levdens_heavy2 / (0.40  << 
10147                                              << 
10148     if (epsilon_symm_saddle < A_levdens * hb << 
10149         Ssymm = 2.0 * std::sqrt(A_levdens *  << 
10150                 (epsilon_symm_saddle - A_lev << 
10151     else                                     << 
10152         Ssymm = 2.0 * std::sqrt(A_levdens *  << 
10153                                              << 
10154     Ysymm = 1.0;                             << 
10155                                              << 
10156     if (epsilon0_1_saddle < A_levdens * hbom << 
10157         Ssymm_mode1 = 2.0 * std::sqrt(A_levd << 
10158                       (epsilon0_1_saddle - A << 
10159     else                                     << 
10160         Ssymm_mode1 = 2.0 * std::sqrt(A_levd << 
10161                                              << 
10162     if (epsilon0_2_saddle < A_levdens * hbom << 
10163         Ssymm_mode2 = 2.0 * std::sqrt(A_levd << 
10164                       (epsilon0_2_saddle - A << 
10165     else                                     << 
10166         Ssymm_mode2 = 2.0 * std::sqrt(A_levd << 
10167                                              << 
10168     if (epsilon0_1_saddle - Delta_U1 * Uwash << 
10169         A_levdens * hbom1 * hbom1)           << 
10170         Sasymm1 =                            << 
10171             2.0 * std::sqrt(A_levdens * A_le << 
10172             (epsilon0_1_saddle - Delta_U1 *  << 
10173              A_levdens * hbom1 * hbom1) /    << 
10174                 hbom1;                       << 
10175     else                                     << 
10176         Sasymm1 = 2.0 * std::sqrt(A_levdens  << 
10177                                   (epsilon0_ << 
10178                                    Delta_U1  << 
10179                                              << 
10180     if (epsilon0_2_saddle - Delta_U2 * Uwash << 
10181         A_levdens * hbom2 * hbom2)           << 
10182         Sasymm2 =                            << 
10183             2.0 * std::sqrt(A_levdens * A_le << 
10184             (epsilon0_1_saddle - Delta_U1 *  << 
10185              A_levdens * hbom2 * hbom2) /    << 
10186                 hbom2;                       << 
10187     else                                     << 
10188         Sasymm2 = 2.0 * std::sqrt(A_levdens  << 
10189                                   (epsilon0_ << 
10190                                    Delta_U2  << 
10191                                                 8374 
10192     Yasymm1 = (std::exp(Sasymm1 - Ssymm) - s << 8375       wNasymm1_scission = max( wNasymm1_scission, wNasymm1_saddle );
                                                   >> 8376       wNasymm2_scission = max( wNasymm2_scission, wNasymm2_saddle );
10193                                                 8377 
10194     Yasymm2 = (std::exp(Sasymm2 - Ssymm) - s << 8378       wNasymm1 = wNasymm1_scission * Fwidth_asymm1;
                                                   >> 8379       wNasymm2 = wNasymm2_scission * Fwidth_asymm2;
                                                   >> 8380       wNsymm   = wNsymm_scission * Fwidth_symm;
                                                   >> 8381 
                                                   >> 8382 //     mass and charge of fragments using UCD, needed for level densities
                                                   >> 8383       Aheavy1_eff = Nheavy1_eff * A/N;
                                                   >> 8384       Aheavy2_eff = Nheavy2_eff * A/N;
                                                   >> 8385 
                                                   >> 8386       A_levdens_heavy1 = Aheavy1_eff / xLevdens;
                                                   >> 8387       A_levdens_heavy2 = Aheavy2_eff / xLevdens;
                                                   >> 8388       gamma_heavy1 = A_levdens_heavy1 / (0.40 * std::pow(Aheavy1_eff,1.3333)) * FGAMMA * FGAMMA1;
                                                   >> 8389       gamma_heavy2 = A_levdens_heavy2 / (0.40 * std::pow(Aheavy2_eff,1.3333)) * FGAMMA;
                                                   >> 8390 
                                                   >> 8391       if( epsilon_symm_saddle < A_levdens * hbom3*hbom3)
                                                   >> 8392         Ssymm = 2.0 * std::sqrt(A_levdens*A_levdens * hbom3*hbom3) +
                                                   >> 8393         (epsilon_symm_saddle - A_levdens * hbom3*hbom3)/hbom3;
                                                   >> 8394       else
                                                   >> 8395         Ssymm = 2.0 * std::sqrt(A_levdens*epsilon_symm_saddle);
                                                   >> 8396       
                                                   >> 8397       Ysymm = 1.0;
                                                   >> 8398 
                                                   >> 8399       if( epsilon0_1_saddle < A_levdens * hbom1*hbom1 )
                                                   >> 8400         Ssymm_mode1 = 2.0 * std::sqrt(A_levdens*A_levdens * hbom1*hbom1) +
                                                   >> 8401              (epsilon0_1_saddle - A_levdens * hbom1*hbom1)/hbom1;
                                                   >> 8402       else
                                                   >> 8403         Ssymm_mode1 = 2.0 * std::sqrt( A_levdens*epsilon0_1_saddle );
                                                   >> 8404 
                                                   >> 8405       if( epsilon0_2_saddle < A_levdens * hbom2*hbom2 )
                                                   >> 8406         Ssymm_mode2 = 2.0 * std::sqrt(A_levdens*A_levdens * hbom2*hbom2) +
                                                   >> 8407              (epsilon0_2_saddle - A_levdens * hbom2*hbom2)/hbom2;
                                                   >> 8408       else
                                                   >> 8409         Ssymm_mode2 = 2.0 * std::sqrt(A_levdens*epsilon0_2_saddle);
                                                   >> 8410 
                                                   >> 8411 
                                                   >> 8412       if( epsilon0_1_saddle -
                                                   >> 8413          Delta_U1*
                                                   >> 8414        Uwash(epsilon_1_saddle/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1)
                                                   >> 8415            < A_levdens * hbom1*hbom1 )
                                                   >> 8416         Sasymm1 = 2.0 * std::sqrt( A_levdens*A_levdens * hbom1*hbom1 ) +
                                                   >> 8417          (epsilon0_1_saddle - Delta_U1 *
                                                   >> 8418        Uwash(epsilon_1_saddle/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1)
                                                   >> 8419          - A_levdens * hbom1*hbom1)/hbom1;
                                                   >> 8420       else
                                                   >> 8421         Sasymm1 = 2.0 *std::sqrt( A_levdens*(epsilon0_1_saddle - Delta_U1 *
                                                   >> 8422         Uwash(epsilon_1_saddle/A*Aheavy1,Ecrit,FREDSHELL,gamma_heavy1)));
                                                   >> 8423       
                                                   >> 8424       if( epsilon0_2_saddle -
                                                   >> 8425         Delta_U2*
                                                   >> 8426         Uwash(epsilon_2_saddle/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2)
                                                   >> 8427         < A_levdens * hbom2*hbom2 )
                                                   >> 8428         Sasymm2 = 2.0 * std::sqrt( A_levdens*A_levdens * hbom2*hbom2 ) +
                                                   >> 8429          (epsilon0_1_saddle-Delta_U1 *
                                                   >> 8430          Uwash(epsilon_2_saddle/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2)
                                                   >> 8431          - A_levdens * hbom2*hbom2)/hbom2;
                                                   >> 8432       else
                                                   >> 8433         Sasymm2 = 2.0 *
                                                   >> 8434              std::sqrt( A_levdens*(epsilon0_2_saddle - Delta_U2 *
                                                   >> 8435        Uwash(epsilon_2_saddle/A*Aheavy2,Ecrit,FREDSHELL,gamma_heavy2)));
                                                   >> 8436 
                                                   >> 8437       Yasymm1 = ( std::exp(Sasymm1 - Ssymm) - std::exp(Ssymm_mode1 - Ssymm) ) *
                                                   >> 8438                  wNasymm1_saddle / wNsymm_saddle * 2.0;
10195                                                 8439 
10196     Ysum = Ysymm + Yasymm1 + Yasymm2; /* nor << 8440       Yasymm2 = ( std::exp(Sasymm2 - Ssymm) - std::exp(Ssymm_mode2 - Ssymm) ) *
                                                   >> 8441                  wNasymm2_saddle / wNsymm_saddle * 2.0;
10197                                                 8442 
10198     if (Ysum > 0.00)                         << 8443       Ysum = Ysymm + Yasymm1 + Yasymm2;  /* normalize */
10199     {                                        << 8444 
                                                   >> 8445       if( Ysum > 0.00 ){
10200         Ysymm = Ysymm / Ysum;                   8446         Ysymm = Ysymm / Ysum;
10201         Yasymm1 = Yasymm1 / Ysum;               8447         Yasymm1 = Yasymm1 / Ysum;
10202         Yasymm2 = Yasymm2 / Ysum;               8448         Yasymm2 = Yasymm2 / Ysum;
10203         Yasymm = Yasymm1 + Yasymm2;             8449         Yasymm = Yasymm1 + Yasymm2;
10204     }                                        << 8450       }else{
10205     else                                     << 
10206     {                                        << 
10207         Ysymm = 0.0;                            8451         Ysymm = 0.0;
10208         Yasymm1 = 0.0;                          8452         Yasymm1 = 0.0;
10209         Yasymm2 = 0.0;                          8453         Yasymm2 = 0.0;
10210         //       search minimum threshold an << 8454 //       search minimum threshold and attribute all events to this mode */
10211         if ((epsilon_symm_saddle < epsilon_1 << 8455         if( (epsilon_symm_saddle < epsilon_1_saddle) &&
10212             Ysymm = 1.0;                     << 8456             (epsilon_symm_saddle < epsilon_2_saddle) )
10213         else if (epsilon_1_saddle < epsilon_ << 8457           Ysymm = 1.0;
10214             Yasymm1 = 1.0;                   << 
10215         else                                    8458         else
                                                   >> 8459           if( epsilon_1_saddle < epsilon_2_saddle )
                                                   >> 8460             Yasymm1 = 1.0;
                                                   >> 8461           else
10216             Yasymm2 = 1.0;                      8462             Yasymm2 = 1.0;
10217     }                                        << 8463       }
10218     // even-odd effect                       << 8464   // even-odd effect
10219     // Parametrization from Rejmund et al.   << 8465   // Parametrization from Rejmund et al. 
10220     if (mod(Z, 2.0) == 0)                    << 8466      if (mod(Z,2.0)== 0)
10221         r_e_o = std::pow(10.0, -0.0170 * (E_ << 8467       r_e_o = std::pow(10.0,-0.0170 * (E_saddle_scission + Eld)*(E_saddle_scission + Eld));
10222     else                                     << 8468      else
10223         r_e_o = 0.0;                         << 8469       r_e_o = 0.0;
10224                                              << 8470      
10225     /*     --------------------------------- << 8471 /*     -------------------------------------------------------
10226     c     selecting the fission mode using t << 8472 c     selecting the fission mode using the yields at scission
10227     c     ---------------------------------- << 8473 c     -------------------------------------------------------
10228     c     random decision: symmetric or asym << 8474 c     random decision: symmetric or asymmetric
10229     c     IMODE = 1 means asymmetric fission << 8475 c     IMODE = 1 means asymmetric fission, mode 1
10230     c     IMODE = 2 means asymmetric fission << 8476 c     IMODE = 2 means asymmetric fission, mode 2
10231     c     IMODE = 3 means symmetric fission  << 8477 c     IMODE = 3 means symmetric fission
10232     c     testcase: 238U, E*= 6 MeV :    646 << 8478 c     testcase: 238U, E*= 6 MeV :    6467   8781   4752   (20000)
10233     c                                  12779 << 8479 c                                  127798 176480  95722  (400000)
10234     c                                  31991 << 8480 c                                  319919 440322 239759 (1000000)
10235     c                     E*=12 MeV :  15340 << 8481 c                     E*=12 MeV :  153407 293063 553530 (1000000) */
10236                                              << 8482 
10237 fiss321: // rmode = DBLE(HAZ(k))             << 8483  fiss321:  // rmode = DBLE(HAZ(k))
10238     rmode = G4AblaRandom::flat();            << 8484         rmode = G4AblaRandom::flat();
10239     if (rmode < Yasymm1)                     << 8485       if( rmode < Yasymm1 )
10240         imode = 1;                           << 8486          imode = 1;
10241     else if ((rmode > Yasymm1) && (rmode < Y << 8487       else
10242         imode = 2;                           << 8488          if( (rmode > Yasymm1) && (rmode < Yasymm) )
10243     else                                     << 8489             imode = 2;
10244         imode = 3;                           << 8490          else
10245                                              << 8491             imode = 3;
10246     //    determine parameters of the neutro << 8492          
10247     //    at scission                        << 8493 //    determine parameters of the neutron distribution of each mode
10248                                              << 8494 //    at scission
10249     if (imode == 1)                          << 8495 
10250     {                                        << 8496       if( imode == 1){
10251         N1mean = Nheavy1_eff;                << 8497          N1mean = Nheavy1_eff;
10252         N1width = wNasymm1;                  << 8498          N1width = wNasymm1;
10253     }                                        << 8499       }else{
10254     else                                     << 8500        if( imode == 2 ){
10255     {                                        << 8501          N1mean = Nheavy2_eff;
10256         if (imode == 2)                      << 8502          N1width = wNasymm2;
10257         {                                    << 8503        }else{
10258             N1mean = Nheavy2_eff;            << 8504         //if( imode == 3 ) then
10259             N1width = wNasymm2;              << 8505          N1mean = Nsymm;
10260         }                                    << 8506          N1width = wNsymm;
10261         else                                 << 8507        }
10262         {                                    << 8508       }
10263             // if( imode == 3 ) then         << 
10264             N1mean = Nsymm;                  << 
10265             N1width = wNsymm;                << 
10266         }                                    << 
10267     }                                        << 
10268                                                 8509 
10269     //     N2mean needed by CZ below         << 8510 //     N2mean needed by CZ below
10270     //  N2mean = N - N1mean;                    8511     //  N2mean = N - N1mean;
10271                                              << 8512       
10272     //     fission mode found, then the dete << 8513 //     fission mode found, then the determination of the
10273     //     neutron numbers N1 and N2 at scis << 8514 //     neutron numbers N1 and N2 at scission by randon decision
10274     N1r = 1.0;                               << 8515       N1r = 1.0;
10275     N2r = 1.0;                               << 8516       N2r = 1.0;
10276     while (N1r < 5.0 || N2r < 5.0)           << 8517       while( N1r < 5.0 || N2r < 5.0 ){
10277     {                                        << 8518        //  N1r = DBLE(GaussHaz(k,sngl(N1mean), sngl(N1width) ))
10278         //  N1r = DBLE(GaussHaz(k,sngl(N1mea << 
10279         // N1r = N1mean+G4AblaRandom::gaus(N    8519         // N1r = N1mean+G4AblaRandom::gaus(N1width);//
10280         N1r = gausshaz(0, N1mean, N1width);  << 8520          N1r = gausshaz(0,N1mean,N1width);
10281         N2r = N - N1r;                       << 8521          N2r = N - N1r;
10282     }                                        << 8522       }
10283                                                 8523 
10284     //     --------------------------------- << 8524 //     --------------------------------------------------
10285     //     first approximation of fission fr << 8525 //     first approximation of fission fragments using UCD at saddle
10286     //     --------------------------------- << 8526 //     --------------------------------------------------
10287     Z1UCD = Z / N * N1r;                     << 8527       Z1UCD = Z/N * N1r;
10288     Z2UCD = Z / N * N2r;                     << 8528       Z2UCD = Z/N * N2r;
10289     A1r = A / N * N1r;                       << 8529       A1r = A/N * N1r;
10290     //                                       << 8530 //
10291     //     --------------------------        << 8531 //     --------------------------
10292     //     deformations: starting ...        << 8532 //     deformations: starting ...
10293     //     --------------------------  */    << 8533 //     --------------------------  */
10294     if (imode == 1)                          << 8534       if( imode == 1 ){
10295     {                                        << 8535 // ---   N = 82  */
10296         // ---   N = 82  */                  << 8536         E_scission_pre = max( epsilon_1_scission, 1.0 );
10297         E_scission_pre = max(epsilon_1_sciss << 8537 //   ! Eexc at scission, neutron evaporation from saddle to scission not considered */
10298         //   ! Eexc at scission, neutron eva << 8538         if( N1mean > N*0.50 ){
10299         //   considered */                   << 8539           beta1  = 0.0;                   /*   1. fragment is spherical */
10300         if (N1mean > N * 0.50)               << 8540           beta2  = 0.55;                 /*   2. fragment is deformed  0.5*/
10301         {                                    << 8541         }else{
10302             beta1 = 0.0;  /*   1. fragment i << 8542           beta1  = 0.55;                 /*  1. fragment is deformed 0.5*/
10303             beta2 = 0.55; /*   2. fragment i << 8543           beta2  = 0.00;                  /*  2. fragment is spherical */
10304         }                                    << 8544         }
10305         else                                 << 8545        }
10306         {                                    << 8546       if( imode == 2 ){
10307             beta1 = 0.55; /*  1. fragment is << 8547 // ---   N appr. 86  */
10308             beta2 = 0.00; /*  2. fragment is << 8548         E_scission_pre = max( epsilon_2_scission, 1.0 );
10309         }                                    << 8549         if( N1mean > N*0.50 ){
10310     }                                        << 8550           beta1  = (N1r - 92.0) * 0.030 + 0.60;
10311     if (imode == 2)                          << 8551 
10312     {                                        << 8552           beta1gs = ecld->beta2[idint(N1r)][idint(Z1UCD)];
10313         // ---   N appr. 86  */              << 8553           beta2gs = ecld->beta2[idint(N2r)][idint(Z2UCD)];
10314         E_scission_pre = max(epsilon_2_sciss << 8554 
10315         if (N1mean > N * 0.50)               << 8555           beta1 = max(beta1,beta1gs);
10316         {                                    << 8556           beta2  = 1.0 - beta1;
10317             beta1 = (N1r - 92.0) * 0.030 + 0 << 8557           beta2 = max(beta2,beta2gs);
10318                                              << 8558         }else{
10319             beta1gs = ecld->beta2[idint(N1r) << 8559 
10320             beta2gs = ecld->beta2[idint(N2r) << 8560           beta1gs = ecld->beta2[idint(N1r)][idint(Z1UCD)];
10321                                              << 8561           beta2gs = ecld->beta2[idint(N2r)][idint(Z2UCD)];
10322             beta1 = max(beta1, beta1gs);     << 8562 
10323             beta2 = 1.0 - beta1;             << 8563           beta2  = (N2r -92.0) * 0.030 + 0.60;
10324             beta2 = max(beta2, beta2gs);     << 8564           beta2 = max(beta2,beta2gs);
                                                   >> 8565           beta1 = 1.0 - beta2;
                                                   >> 8566           beta1 = max(beta1,beta1gs);
10325         }                                       8567         }
10326         else                                 << 8568       }
10327         {                                    << 8569       beta = 0.0;
10328                                              << 8570       if( imode == 3 ){
10329             beta1gs = ecld->beta2[idint(N1r) << 8571 //      if( imode >0 ){
10330             beta2gs = ecld->beta2[idint(N2r) << 8572 // ---   Symmetric fission channel
10331                                              << 8573 //       the fit function for beta is the deformation for optimum energy
10332             beta2 = (N2r - 92.0) * 0.030 + 0 << 8574 //       at the scission point, d = 2
10333             beta2 = max(beta2, beta2gs);     << 8575 //       beta  : deformation of symmetric fragments
10334             beta1 = 1.0 - beta2;             << 8576 //       beta1 : deformation of first fragment
10335             beta1 = max(beta1, beta1gs);     << 8577 //       beta2 : deformation of second fragment
10336         }                                    << 
10337     }                                        << 
10338     beta = 0.0;                              << 
10339     if (imode == 3)                          << 
10340     {                                        << 
10341         //      if( imode >0 ){              << 
10342         // ---   Symmetric fission channel   << 
10343         //       the fit function for beta i << 
10344         //       at the scission point, d =  << 
10345         //       beta  : deformation of symm << 
10346         //       beta1 : deformation of firs << 
10347         //       beta2 : deformation of seco << 
10348         betags = ecld->beta2[idint(Nsymm)][i    8578         betags = ecld->beta2[idint(Nsymm)][idint(Zsymm)];
10349         beta1gs = ecld->beta2[idint(N1r)][id    8579         beta1gs = ecld->beta2[idint(N1r)][idint(Z1UCD)];
10350         beta2gs = ecld->beta2[idint(N2r)][id    8580         beta2gs = ecld->beta2[idint(N2r)][idint(Z2UCD)];
10351         beta = max(0.177963 + 0.0153241 * Zs << 8581         beta  = max(0.177963+0.0153241*Zsymm-1.62037e-4*Zsymm*Zsymm,betags);
10352         beta1 = max(0.177963 + 0.0153241 * Z << 8582         beta1 = max(0.177963+0.0153241*Z1UCD-1.62037e-4*Z1UCD*Z1UCD,beta1gs);
10353         beta2 = max(0.177963 + 0.0153241 * Z << 8583         beta2 = max(0.177963+0.0153241*Z2UCD-1.62037e-4*Z2UCD*Z2UCD,beta2gs);
10354                                              << 8584 
10355         E_asym = frldm(Z1UCD, N1r, beta1) +  << 8585         E_asym = frldm( Z1UCD, N1r, beta1 ) +
10356                  ecoul(Z1UCD, N1r, beta1, Z2 << 8586               frldm( Z2UCD, N2r, beta2 ) +
10357                  ecoul(Zsymm, Nsymm, beta, Z << 8587               ecoul( Z1UCD, N1r, beta1, Z2UCD, N2r, beta2, 2.0 ) -
10358         E_scission_pre = max(epsilon_symm_sc << 8588               2.0 * frldm( Zsymm, Nsymm, beta ) -
10359     }                                        << 8589               ecoul( Zsymm, Nsymm, beta, Zsymm, Nsymm, beta, 2.0 );
10360     //     -----------------------           << 8590         E_scission_pre = max( epsilon_symm_scission - E_asym, 1. );
10361     //     ... end of deformations           << 8591       }
10362     //     -----------------------           << 8592 //     -----------------------
10363                                              << 8593 //     ... end of deformations
10364     //     --------------------------------- << 8594 //     -----------------------
10365     //     evaporation from saddle to scissi << 8595 
10366     //     --------------------------------- << 8596 //     ------------------------------------------
10367     if (E_scission_pre > 5. && NbLam0 < 1)   << 8597 //     evaporation from saddle to scission ...
10368     {                                        << 8598 //     ------------------------------------------     
10369         evap_postsaddle(                     << 8599       if(E_scission_pre>5. && NbLam0<1){
10370             A, Z, E_scission_pre, &E_scissio << 8600        evap_postsaddle(A,Z,E_scission_pre,&E_scission_post,
10371         N_scission = A_scission - Z_scission << 8601         &A_scission,&Z_scission,vx_eva_sc,vy_eva_sc,vz_eva_sc,&NbLam0);
10372     }                                        << 8602        N_scission = A_scission - Z_scission;
10373     else                                     << 8603       }else{
10374     {                                        << 8604        A_scission = A;
10375         A_scission = A;                      << 8605        Z_scission = Z;
10376         Z_scission = Z;                      << 8606        E_scission_post = E_scission_pre;
10377         E_scission_post = E_scission_pre;    << 8607        N_scission = A_scission - Z_scission;
10378         N_scission = A_scission - Z_scission << 8608       }
10379     }                                        << 8609 //     ---------------------------------------------------
10380     //     --------------------------------- << 8610 //     second approximation of fission fragments using UCD
10381     //     second approximation of fission f << 8611 //     --------------------------------------------------- */
10382     //     --------------------------------- << 8612 //
10383     //                                       << 8613       N1r = N1r * N_scission / N;
10384     N1r = N1r * N_scission / N;              << 8614       N2r = N2r * N_scission / N;
10385     N2r = N2r * N_scission / N;              << 8615       Z1UCD = Z1UCD * Z_scission / Z;
10386     Z1UCD = Z1UCD * Z_scission / Z;          << 8616       Z2UCD = Z2UCD * Z_scission / Z;
10387     Z2UCD = Z2UCD * Z_scission / Z;          << 8617       A1r = Z1UCD + N1r;
10388     A1r = Z1UCD + N1r;                       << 8618 
10389                                              << 8619 //     ---------------------------------------------------------
10390     //     --------------------------------- << 8620 //     determination of the charge and mass of the fragments ...
10391     //     determination of the charge and m << 8621 //     ---------------------------------------------------------
10392     //     --------------------------------- << 8622 
10393                                              << 8623 //     - CZ is the curvature of charge distribution for fixed mass,
10394     //     - CZ is the curvature of charge d << 8624 //       common to all modes, gives the width of the charge distribution.
10395     //       common to all modes, gives the  << 8625 //       The physics picture behind is that the division of the
10396     //       The physics picture behind is t << 8626 //       fissioning nucleus in N and Z is slow when mass transport from
10397     //       fissioning nucleus in N and Z i << 8627 //       one nascent fragment to the other is concerned but fast when the
10398     //       one nascent fragment to the oth << 8628 //       N/Z degree of freedom is concernded. In addition, the potential
10399     //       N/Z degree of freedom is concer << 8629 //       minima in direction of mass transport are broad compared to the
10400     //       minima in direction of mass tra << 8630 //       potential minimum in N/Z direction.
10401     //       potential minimum in N/Z direct << 8631 //          The minima in direction of mass transport are calculated
10402     //          The minima in direction of m << 8632 //          by the liquid-drop (LD) potential (for superlong mode),
10403     //          by the liquid-drop (LD) pote << 8633 //          by LD + N=82 shell (for standard 1 mode) and
10404     //          by LD + N=82 shell (for stan << 8634 //          by LD + N=86 shell (for standard 2 mode).
10405     //          by LD + N=86 shell (for stan << 8635 //          Since the variation of N/Z is fast, it can quickly adjust to
10406     //          Since the variation of N/Z i << 8636 //          the potential and is thus determined close to scission.
10407     //          the potential and is thus de << 8637 //          Thus, we calculate the mean N/Z and its width for fixed mass
10408     //          Thus, we calculate the mean  << 8638 //          at scission.
10409     //          at scission.                 << 8639 //          For the SL mode, the mean N/Z is calculated by the
10410     //          For the SL mode, the mean N/ << 8640 //          minimum of the potential at scission as a function of N/Z for
10411     //          minimum of the potential at  << 8641 //          fixed mass.
10412     //          fixed mass.                  << 8642 //          For the S1 and S2 modes, this correlation is imposed by the
10413     //          For the S1 and S2 modes, thi << 8643 //          empirical charge polarisation.
10414     //          empirical charge polarisatio << 8644 //          For the SL mode, the fluctuation in this width is calculated
10415     //          For the SL mode, the fluctua << 8645 //          from the curvature of the potential at scission as a function
10416     //          from the curvature of the po << 8646 //          of N/Z. This value is also used for the widths of S1 and S2.
10417     //          of N/Z. This value is also u << 8647 
10418                                              << 8648 
10419     //     Polarisation assumed for standard << 8649 //     Polarisation assumed for standard I and standard II:
10420     //      Z - Zucd = cpol (for A = const); << 8650 //      Z - Zucd = cpol (for A = const);
10421     //      from this we get (see remarks ab << 8651 //      from this we get (see remarks above)
10422     //      Z - Zucd =  Acn/Ncn * cpol (for  << 8652 //      Z - Zucd =  Acn/Ncn * cpol (for N = const)   */
10423     //                                       << 8653 //
10424     CZ = (frldm(Z1UCD - 1.0, N1r + 1.0, beta << 8654       CZ = ( frldm( Z1UCD-1.0, N1r+1.0, beta1 ) +
10425           frldm(Z1UCD + 1.0, N1r - 1.0, beta << 8655              frldm( Z2UCD+1.0, N2r-1.0, beta2 ) +
10426           ecoul(Z1UCD - 1.0, N1r + 1.0, beta << 8656              frldm( Z1UCD+1.0, N1r-1.0, beta1 ) +
10427           ecoul(Z1UCD + 1.0, N1r - 1.0, beta << 8657              frldm( Z2UCD-1.0, N2r+1.0, beta2 ) +
10428           2.0 * ecoul(Z1UCD, N1r, beta1, Z2U << 8658              ecoul( Z1UCD-1.0, N1r+1.0, beta1,
10429           2.0 * frldm(Z2UCD, N2r, beta2)) *  << 8659                     Z2UCD+1.0, N2r-1.0, beta2, 2.0) +
10430          0.50;                               << 8660              ecoul( Z1UCD+1.0, N1r-1.0, beta1,
10431     //                                       << 8661                     Z2UCD-1.0, N2r+1.0, beta2, 2.0) -
10432     if (1.0 / A_levdens * E_scission_post <  << 8662          2.0*ecoul( Z1UCD, N1r, beta1, Z2UCD, N2r, beta2, 2.0) -
                                                   >> 8663          2.0*frldm( Z1UCD, N1r, beta1 ) -
                                                   >> 8664          2.0*frldm( Z2UCD, N2r, beta2) ) * 0.50;
                                                   >> 8665 //
                                                   >> 8666       if(1.0/A_levdens*E_scission_post < 0.0)
10433         std::cout << "DSQRT 1 < 0" << A_levd    8667         std::cout << "DSQRT 1 < 0" << A_levdens << " " << E_scission_post << std::endl;
10434                                              << 8668       
10435     if (0.50 * std::sqrt(1.0 / A_levdens * E << 8669       if(0.50 * std::sqrt(1.0/A_levdens*E_scission_post) / CZ < 0.0){
10436     {                                        << 
10437         std::cout << "DSQRT 2 < 0 " << CZ <<    8670         std::cout << "DSQRT 2 < 0 " << CZ << std::endl;
10438         std::cout << "This event was not con    8671         std::cout << "This event was not considered" << std::endl;
10439         goto fiss321;                           8672         goto fiss321;
10440     }                                        << 8673       }
10441                                                 8674 
10442     ZA1width = std::sqrt(0.5 * std::sqrt(1.0 << 8675       ZA1width = std::sqrt(0.5*std::sqrt(1.0/A_levdens*E_scission_post)/CZ);
10443                                                 8676 
10444     //     Minimum width in N/Z imposed.     << 8677 //     Minimum width in N/Z imposed.
10445     //     Value of minimum width taken from << 8678 //     Value of minimum width taken from 235U(nth,f) data
10446     //     sigma_Z(A=const) = 0.4 to 0.5  (f << 8679 //     sigma_Z(A=const) = 0.4 to 0.5  (from Lang paper Nucl Phys. A345 (1980) 34)
10447     //     34) sigma_N(Z=const) = 0.45 * A/Z << 8680 //     sigma_N(Z=const) = 0.45 * A/Z  (= 1.16 for 238U)
10448     //      therefore: SIGZMIN = 1.16        << 8681 //      therefore: SIGZMIN = 1.16                                              
10449     //     Physics; variation in N/Z for fix << 8682 //     Physics; variation in N/Z for fixed A assumed.
10450     //      Thermal energy at scission is re << 8683 //      Thermal energy at scission is reduced by
10451     //      pre-scission neutron evaporation << 8684 //      pre-scission neutron evaporation"
10452                                              << 8685 
10453     ZA1width = max(ZA1width, sigZmin);       << 8686        ZA1width = max(ZA1width,sigZmin);
10454                                              << 8687 
10455     if (imode == 1 && cpol1 != 0.0)          << 8688       if(imode == 1 && cpol1 != 0.0){
10456     {                                        << 8689 //       --- asymmetric fission, mode 1 */
10457         //       --- asymmetric fission, mod << 8690        G4int IS = 0;
                                                   >> 8691        fiss2801:
                                                   >> 8692        Z1rr = Z1UCD - cpol1 * A_scission/N_scission;
                                                   >> 8693      // Z1r = DBLE(GaussHaz(k,sngl(Z1rr), sngl(ZA1width) ));
                                                   >> 8694       // Z1r = Z1rr+G4AblaRandom::gaus(ZA1width);//
                                                   >> 8695        Z1r =gausshaz(0,Z1rr,ZA1width);
                                                   >> 8696        IS = IS +1;
                                                   >> 8697        if(IS>100){
                                                   >> 8698        std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING Z1R IN PROFI.FOR. A VALUE WILL BE FORCED" << std::endl;
                                                   >> 8699          Z1r = Z1rr;
                                                   >> 8700        }
                                                   >> 8701        if ((utilabs(Z1rr - Z1r) > 3.0*ZA1width) || Z1r<1.0)goto fiss2801;
                                                   >> 8702        N1r = A1r - Z1r;
                                                   >> 8703       }else{
                                                   >> 8704         if( imode == 2 && cpol2 != 0.0 ){
                                                   >> 8705 //       --- asymmetric fission, mode 2 */
10458         G4int IS = 0;                           8706         G4int IS = 0;
10459     fiss2801:                                << 
10460         Z1rr = Z1UCD - cpol1 * A_scission /  << 
10461         // Z1r = DBLE(GaussHaz(k,sngl(Z1rr), << 
10462         // Z1r = Z1rr+G4AblaRandom::gaus(ZA1 << 
10463         Z1r = gausshaz(0, Z1rr, ZA1width);   << 
10464         IS = IS + 1;                         << 
10465         if (IS > 100)                        << 
10466         {                                    << 
10467             std::cout << "WARNING: GAUSSHAZ  << 
10468                          "CALCULATING Z1R IN << 
10469                       << std::endl;          << 
10470             Z1r = Z1rr;                      << 
10471         }                                    << 
10472         if ((utilabs(Z1rr - Z1r) > 3.0 * ZA1 << 
10473             goto fiss2801;                   << 
10474         N1r = A1r - Z1r;                     << 
10475     }                                        << 
10476     else                                     << 
10477     {                                        << 
10478         if (imode == 2 && cpol2 != 0.0)      << 
10479         {                                    << 
10480             //       --- asymmetric fission, << 
10481             G4int IS = 0;                    << 
10482         fiss2802:                               8707         fiss2802:
10483             Z1rr = Z1UCD - cpol2 * A_scissio << 8708         Z1rr = Z1UCD - cpol2 * A_scission/N_scission;
10484             // Z1r = Z1rr+G4AblaRandom::gaus << 8709         //Z1r = Z1rr+G4AblaRandom::gaus(ZA1width);//
10485             Z1r = gausshaz(0, Z1rr, ZA1width << 8710         Z1r = gausshaz(0,Z1rr,ZA1width);
10486             IS = IS + 1;                     << 8711         IS = IS +1;
10487             if (IS > 100)                    << 8712         if(IS>100){
10488             {                                << 8713         std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING Z1R IN PROFI.FOR. A VALUE WILL BE FORCED" << std::endl;
10489                 std::cout << "WARNING: GAUSS << 8714          Z1r = Z1rr;
10490                              "CALCULATING Z1 << 
10491                           << std::endl;      << 
10492                 Z1r = Z1rr;                  << 
10493             }                                << 
10494             if ((utilabs(Z1rr - Z1r) > 3.0 * << 
10495                 goto fiss2802;               << 
10496             N1r = A1r - Z1r;                 << 
10497         }                                       8715         }
10498         else                                 << 8716         if( (utilabs(Z1rr - Z1r) > 3.0*ZA1width) || Z1r < 1.0 ) goto fiss2802;
10499         {                                    << 8717         N1r = A1r - Z1r;
10500             //      Otherwise do; /* Imode = << 8718         }else{
10501             //      0 */                     << 8719 //      Otherwise do; /* Imode = 3 in any case; imode = 1 and 2 for CPOL = 0 */
10502             //       and symmetric case      << 8720 //       and symmetric case     */
10503             //         We treat a simultaneo << 8721 //         We treat a simultaneous split in Z and N to determine
10504             //         polarisation  */      << 8722 //         polarisation  */
10505                                              << 8723 
10506             re1 = frldm(Z1UCD - 1.0, N1r + 1 << 8724           re1 = frldm( Z1UCD-1.0, N1r+1.0, beta1 ) +
10507                   ecoul(Z1UCD - 1.0, N1r + 1 << 8725                 frldm( Z2UCD+1.0, N2r-1.0, beta2 ) +
10508             re2 = frldm(Z1UCD, N1r, beta1) + << 8726                 ecoul( Z1UCD-1.0, N1r+1.0, beta1,
10509                   ecoul(Z1UCD, N1r, beta1, Z << 8727                       Z2UCD+1.0, N2r-1.0, beta2, d ); /* d = 2 fm */
10510             re3 = frldm(Z1UCD + 1.0, N1r - 1 << 8728           re2 = frldm( Z1UCD, N1r, beta1) +
10511                   ecoul(Z1UCD + 1.0, N1r - 1 << 8729                 frldm( Z2UCD, N2r, beta2 ) +
10512             eps2 = (re1 - 2.0 * re2 + re3) / << 8730                 ecoul( Z1UCD, N1r, beta1,
10513             eps1 = (re3 - re1) / 2.0;        << 8731                       Z2UCD, N2r, beta2, d );  /*  d = 2 fm */
10514             DN1_POL = -eps1 / (2.0 * eps2);  << 8732           re3 = frldm( Z1UCD+1.0, N1r-1.0, beta1 ) +
10515             //                               << 8733                 frldm( Z2UCD-1.0, N2r+1.0, beta2 ) +
10516             Z1rr = Z1UCD + DN1_POL;          << 8734                 ecoul( Z1UCD+1.0, N1r-1.0, beta1,
10517                                              << 8735                       Z2UCD-1.0, N2r+1.0, beta2, d ); /* d = 2 fm */
10518             //       Polarization of Standar << 8736           eps2 = ( re1 - 2.0*re2 + re3 ) / 2.0;
10519             if (imode == 1)                  << 8737           eps1 = ( re3 - re1 ) / 2.0;
10520             {                                << 8738           DN1_POL = -eps1 / ( 2.0 * eps2 );
10521                 if (Z1rr > 50.0)             << 8739 //
10522                 {                            << 8740           Z1rr = Z1UCD + DN1_POL;
10523                     DN1_POL = DN1_POL - 0.6  << 
10524                     Z1rr = Z1UCD + DN1_POL;  << 
10525                     if (Z1rr < 50.)          << 
10526                         Z1rr = 50.0;         << 
10527                 }                            << 
10528                 else                         << 
10529                 {                            << 
10530                     DN1_POL = DN1_POL + 0.60 << 
10531                     Z1rr = Z1UCD + DN1_POL;  << 
10532                     if (Z1rr > 50.0)         << 
10533                         Z1rr = 50.0;         << 
10534                 }                            << 
10535             }                                << 
10536                                                 8741 
10537             G4int IS = 0;                    << 8742 //       Polarization of Standard 1 from shell effects around 132Sn
10538         fiss2803:                            << 8743           if ( imode == 1 ){
10539             // Z1r = Z1rr+G4AblaRandom::gaus << 8744             if ( Z1rr > 50.0 ){
10540             Z1r = gausshaz(0, Z1rr, ZA1width << 8745               DN1_POL = DN1_POL - 0.6 * Uwash(E_scission_post,Ecrit,FREDSHELL,gamma);
10541             IS = IS + 1;                     << 8746               Z1rr = Z1UCD + DN1_POL;
10542             if (IS > 100)                    << 8747               if ( Z1rr < 50. ) Z1rr = 50.0;
10543             {                                << 8748             }else{
10544                 std::cout << "WARNING: GAUSS << 8749               DN1_POL = DN1_POL + 0.60 * Uwash(E_scission_post,Ecrit,FREDSHELL,gamma);
10545                              "CALCULATING Z1 << 8750               Z1rr = Z1UCD + DN1_POL;
10546                           << std::endl;      << 8751               if ( Z1rr > 50.0 ) Z1rr = 50.0;
10547                 Z1r = Z1rr;                  << 
10548             }                                   8752             }
                                                   >> 8753           }
10549                                                 8754 
10550             if ((utilabs(Z1rr - Z1r) > 3.0 * << 8755         G4int IS = 0;
10551                 goto fiss2803;               << 8756         fiss2803:      
10552             N1r = A1r - Z1r;                 << 8757         //Z1r = Z1rr+G4AblaRandom::gaus(ZA1width);
                                                   >> 8758         Z1r = gausshaz(0,Z1rr,ZA1width);
                                                   >> 8759         IS = IS +1;
                                                   >> 8760         if(IS>100){
                                                   >> 8761         std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING Z1R IN PROFI.FOR. A VALUE WILL BE FORCED" << std::endl;
                                                   >> 8762          Z1r = Z1rr;
10553         }                                       8763         }
10554     }                                        << 
10555                                                 8764 
10556     //     --------------------------------- << 8765         if( (utilabs(Z1rr - Z1r) > 3.0*ZA1width) || (Z1r < 1.0) )goto fiss2803;
10557     //     Integer proton number with even-o << 8766         N1r = A1r - Z1r;
10558     //     --------------------------------- << 8767 
10559     even_odd(Z1r, r_e_o, i_help);            << 
10560                                              << 
10561     z1 = G4double(i_help);                   << 
10562     z2 = dint(Z_scission) - z1;              << 
10563     N1 = dint(N1r);                          << 
10564     N2 = dint(N_scission) - N1;              << 
10565     a1 = z1 + N1;                            << 
10566     a2 = z2 + N2;                            << 
10567                                              << 
10568     if ((z1 < 0) || (z2 < 0) || (a1 < 0) ||  << 
10569     {                                        << 
10570         std::cout << " --------------------- << 
10571         std::cout << " Z, A, N : " << Z << " << 
10572         std::cout << z1 << " " << z2 << " "  << 
10573         std::cout << E_scission_post << " "  << 
10574                                              << 
10575         std::cout << " --------------------- << 
10576     }                                        << 
10577                                              << 
10578     //     -----------------------           << 
10579     //     excitation energies ...           << 
10580     //     -----------------------           << 
10581     //                                       << 
10582     if (imode == 1)                          << 
10583     {                                        << 
10584         // ----  N = 82                      << 
10585         if (N1mean > N * 0.50)               << 
10586         {                                    << 
10587             //         (a) 1. fragment is sp << 
10588             E_defo = 0.0;                    << 
10589             beta2gs = ecld->beta2[idint(N2)] << 
10590             if (beta2 < beta2gs)             << 
10591                 beta2 = beta2gs;             << 
10592             E1exc = E_scission_pre * a1 / A  << 
10593             E_defo = frldm(z2, N2, beta2) -  << 
10594             E2exc = E_scission_pre * a2 / A  << 
10595         }                                    << 
10596         else                                 << 
10597         {                                    << 
10598             //         (b) 1. fragment is de << 
10599             beta1gs = ecld->beta2[idint(N1)] << 
10600             if (beta1 < beta1gs)             << 
10601                 beta1 = beta1gs;             << 
10602             E_defo = frldm(z1, N1, beta1) -  << 
10603             E1exc = E_scission_pre * a1 / A  << 
10604             E_defo = 0.0;                    << 
10605             E2exc = E_scission_pre * a2 / A  << 
10606         }                                       8768         }
10607     }                                        << 8769       }
                                                   >> 8770 
                                                   >> 8771 //     ------------------------------------------
                                                   >> 8772 //     Integer proton number with even-odd effect
                                                   >> 8773 //     ------------------------------------------ 
                                                   >> 8774       even_odd(Z1r, r_e_o, i_help);
                                                   >> 8775 
                                                   >> 8776       z1 = G4double(i_help);
                                                   >> 8777       z2 = dint( Z_scission ) - z1;
                                                   >> 8778       N1 = dint( N1r );
                                                   >> 8779       N2 = dint( N_scission ) - N1;
                                                   >> 8780       a1 = z1 + N1;
                                                   >> 8781       a2 = z2 + N2;
                                                   >> 8782 
                                                   >> 8783       if( (z1 < 0) || (z2 < 0) || (a1 < 0) || (a2 < 0) ){
                                                   >> 8784          std::cout << " -------------------------------" << std::endl;
                                                   >> 8785          std::cout << " Z, A, N : " << Z  << " " << A << " " << N << std::endl;
                                                   >> 8786          std::cout << z1 << " " << z2 << " " << a1 << " " << a2 << std::endl;
                                                   >> 8787          std::cout << E_scission_post << " " << A_levdens << " " << CZ <<  std::endl;
10608                                                 8788 
10609     if (imode == 2)                          << 8789          std::cout << " -------------------------------" << std::endl;
10610     {                                        << 8790       }
10611         // ---   N appr. 86 */               << 8791 
10612         if (N1mean > N * 0.5)                << 8792 //     -----------------------
10613         {                                    << 8793 //     excitation energies ...
10614             /*  2. fragment is spherical */  << 8794 //     -----------------------
10615             beta1gs = ecld->beta2[idint(N1)] << 8795 //
10616             if (beta1 < beta1gs)             << 8796       if( imode == 1 ){
10617                 beta1 = beta1gs;             << 8797 // ----  N = 82
10618             E_defo = frldm(z1, N1, beta1) -  << 8798         if( N1mean > N*0.50 ){
10619             E1exc = E_scission_pre * a1 / A  << 8799 //         (a) 1. fragment is spherical and  2. fragment is deformed */
10620             beta2gs = ecld->beta2[idint(N2)] << 8800           E_defo = 0.0;
10621             if (beta2 < beta2gs)             << 8801           beta2gs = ecld->beta2[idint(N2)][idint(z2)];
10622                 beta2 = beta2gs;             << 8802           if(beta2< beta2gs) beta2 = beta2gs;
10623             E_defo = frldm(z2, N2, beta2) -  << 8803           E1exc = E_scission_pre * a1 / A + E_defo;
10624             E2exc = E_scission_pre * a2 / A  << 8804           E_defo = frldm( z2, N2, beta2 ) - frldm( z2, N2, beta2gs );
                                                   >> 8805           E2exc = E_scission_pre * a2 / A + E_defo;
                                                   >> 8806         }else{
                                                   >> 8807 //         (b) 1. fragment is deformed and  2. fragment is spherical */
                                                   >> 8808           beta1gs = ecld->beta2[idint(N1)][idint(z1)];
                                                   >> 8809           if(beta1< beta1gs) beta1 = beta1gs;
                                                   >> 8810           E_defo = frldm( z1, N1, beta1 ) - frldm( z1, N1, beta1gs );
                                                   >> 8811           E1exc = E_scission_pre * a1 / A + E_defo;
                                                   >> 8812           E_defo = 0.0;
                                                   >> 8813           E2exc = E_scission_pre * a2 / A + E_defo;
10625         }                                       8814         }
10626         else                                 << 8815       }
10627         {                                    << 8816 
10628             /*  1. fragment is spherical */  << 8817 
10629             beta2gs = ecld->beta2[idint(N2)] << 8818       if( imode == 2 ){
10630             if (beta2 < beta2gs)             << 8819 // ---   N appr. 86 */
10631                 beta2 = beta2gs;             << 8820         if( N1mean > N*0.5 ){       
10632             E_defo = frldm(z2, N2, beta2) -  << 8821           /*  2. fragment is spherical */
10633             E2exc = E_scission_pre * a2 / A  << 8822           beta1gs = ecld->beta2[idint(N1)][idint(z1)];
10634             beta1gs = ecld->beta2[idint(N1)] << 8823           if(beta1< beta1gs) beta1 = beta1gs;
10635             if (beta1 < beta1gs)             << 8824           E_defo = frldm( z1, N1, beta1 ) - frldm( z1, N1, beta1gs );
10636                 beta1 = beta1gs;             << 8825           E1exc = E_scission_pre * a1 / A + E_defo;
10637             E_defo = frldm(z1, N1, beta1) -  << 8826           beta2gs = ecld->beta2[idint(N2)][idint(z2)];
10638             E1exc = E_scission_pre * a1 / A  << 8827           if(beta2< beta2gs) beta2 = beta2gs;
                                                   >> 8828           E_defo = frldm( z2, N2, beta2 ) - frldm( z2, N2, beta2gs );
                                                   >> 8829           E2exc = E_scission_pre * a2 / A + E_defo;
                                                   >> 8830         }else{                           
                                                   >> 8831           /*  1. fragment is spherical */
                                                   >> 8832           beta2gs = ecld->beta2[idint(N2)][idint(z2)];
                                                   >> 8833           if(beta2< beta2gs) beta2 = beta2gs;
                                                   >> 8834           E_defo = frldm( z2, N2, beta2 ) - frldm( z2, N2, beta2gs );
                                                   >> 8835           E2exc = E_scission_pre * a2 / A + E_defo;
                                                   >> 8836           beta1gs = ecld->beta2[idint(N1)][idint(z1)];
                                                   >> 8837           if(beta1< beta1gs) beta1 = beta1gs;
                                                   >> 8838           E_defo = frldm( z1, N1, beta1 ) - frldm( z1, N1, beta1gs );
                                                   >> 8839           E1exc = E_scission_pre * a1 / A + E_defo;
10639         }                                       8840         }
10640     }                                        << 8841       }
10641                                                 8842 
10642     if (imode == 3)                          << 8843       if( imode == 3 ){
10643     {                                        << 8844 // ---   Symmetric fission channel
10644         // ---   Symmetric fission channel   << 8845           beta1gs = ecld->beta2[idint(N1)][idint(z1)];
10645         beta1gs = ecld->beta2[idint(N1)][idi << 8846           if(beta1< beta1gs) beta1 = beta1gs;
10646         if (beta1 < beta1gs)                 << 8847           beta2gs = ecld->beta2[idint(N2)][idint(z2)];
10647             beta1 = beta1gs;                 << 8848           if(beta2< beta2gs) beta2 = beta2gs;
10648         beta2gs = ecld->beta2[idint(N2)][idi << 8849         E_defo1 = frldm( z1, N1, beta1 ) - frldm( z1, N1, beta1gs );
10649         if (beta2 < beta2gs)                 << 8850         E_defo2 = frldm( z2, N2, beta2 ) - frldm( z2, N2, beta2gs );
10650             beta2 = beta2gs;                 << 
10651         E_defo1 = frldm(z1, N1, beta1) - frl << 
10652         E_defo2 = frldm(z2, N2, beta2) - frl << 
10653         E1exc = E_scission_pre * a1 / A + E_    8851         E1exc = E_scission_pre * a1 / A + E_defo1;
10654         E2exc = E_scission_pre * a2 / A + E_    8852         E2exc = E_scission_pre * a2 / A + E_defo2;
10655     }                                        << 8853       }
                                                   >> 8854 
10656                                                 8855 
10657     //  pre-neutron-emission total kinetic e << 8856 //  pre-neutron-emission total kinetic energy */
10658     TKER = (z1 * z2 * 1.440) / (R0 * std::po << 8857     TKER = ( z1 * z2 * 1.440 ) /
10659                                 R0 * std::po << 8858            ( R0 * std::pow(a1,0.333330) * (1.0 + 2.0/3.0 * beta1 ) +
10660     //  Pre-neutron-emission kinetic energie << 8859              R0 * std::pow(a2,0.333330) * (1.0 + 2.0/3.0 * beta2 ) + 2.0 );
                                                   >> 8860 //  Pre-neutron-emission kinetic energies of the fragments */
10661     EkinR1 = TKER * a2 / A;                     8861     EkinR1 = TKER * a2 / A;
10662     EkinR2 = TKER * a1 / A;                     8862     EkinR2 = TKER * a1 / A;
10663     v1 = std::sqrt(EkinR1 / a1) * 1.3887;    << 8863     v1 = std::sqrt(EkinR1/a1) * 1.3887;
10664     v2 = std::sqrt(EkinR2 / a2) * 1.3887;    << 8864     v2 = std::sqrt(EkinR2/a2) * 1.3887;
10665                                                 8865 
10666     //  Extracted from Lang et al. Nucl. Phy << 8866 //  Extracted from Lang et al. Nucl. Phys. A 345 (1980) 34 */
10667     E1exc_sigma = 5.50;                         8867     E1exc_sigma = 5.50;
10668     E2exc_sigma = 5.50;                         8868     E2exc_sigma = 5.50;
10669                                                 8869 
10670 fis987:                                      << 8870     fis987:
10671     // e1 = E1exc+G4AblaRandom::gaus(E1exc_s << 8871     //e1 = E1exc+G4AblaRandom::gaus(E1exc_sigma);//
10672     e1 = gausshaz(0, E1exc, E1exc_sigma);    << 8872     e1 = gausshaz(0,E1exc,E1exc_sigma);
10673     if (e1 < 0.)                             << 8873     if(e1<0.)goto fis987;
10674         goto fis987;                         << 8874     fis988:
10675 fis988:                                      << 8875     //e2 = E2exc+G4AblaRandom::gaus(E2exc_sigma);//
10676     // e2 = E2exc+G4AblaRandom::gaus(E2exc_s << 8876     e2 = gausshaz(0,E2exc,E2exc_sigma);
10677     e2 = gausshaz(0, E2exc, E2exc_sigma);    << 8877     if(e2<0.)goto fis988;
10678     if (e2 < 0.)                             << 
10679         goto fis988;                         << 
10680                                                 8878 
10681     (*NbLam0_par) = NbLam0;                     8879     (*NbLam0_par) = NbLam0;
10682     return;                                     8880     return;
10683 }                                               8881 }
10684                                                 8882 
10685 void G4Abla::even_odd(G4double r_origin, G4d << 
10686 {                                            << 
10687     // Procedure to calculate I_OUT from R_I << 
10688     // on the average a flat distribution in << 
10689     // fluctuating distribution in I_OUT wit << 
10690     // given by R_EVEN_ODD                   << 
10691                                              << 
10692     //     /* ------------------------------ << 
10693     //     /* EXAMPLES :                     << 
10694     //     /* ------------------------------ << 
10695     //     /*    If R_EVEN_ODD = 0 :         << 
10696     //     /*           CEIL(R_IN)  ----     << 
10697     //     /*                                << 
10698     //     /*              R_IN ->           << 
10699     //     /*            (somewhere in betwe << 
10700     //     /*                                << 
10701     //     /*           FLOOR(R_IN) ----     << 
10702     //     /* ------------------------------ << 
10703     //     /*    If R_EVEN_ODD > 0 :         << 
10704     //     /*      The interval for the abov << 
10705     //     /*         larger for FLOOR(R_IN) << 
10706     //     /*         smaller for FLOOR(R_IN << 
10707     //     /*    For R_EVEN_ODD < 0 : just o << 
10708     //     /* ------------------------------ << 
10709                                              << 
10710     //     /* ------------------------------ << 
10711     //     /* On input:   R_ORIGIN    nuclea << 
10712     //     /*             R_EVEN_ODD  reques << 
10713     //     /* Intermediate quantity: R_IN =  << 
10714     //     /* On output:  I_OUT       nuclea << 
10715     //     /* ------------------------------ << 
10716                                              << 
10717     //      G4double R_ORIGIN,R_IN,R_EVEN_OD << 
10718     G4double r_in = 0.0, r_rest = 0.0, r_hel << 
10719     G4double r_floor = 0.0;                  << 
10720     G4double r_middle = 0.0;                 << 
10721     //      G4int I_OUT,N_FLOOR;             << 
10722     G4int n_floor = 0;                       << 
10723                                              << 
10724     r_in = r_origin + 0.5;                   << 
10725     r_floor = (G4double)((G4int)(r_in));     << 
10726     if (r_even_odd < 0.001)                  << 
10727     {                                        << 
10728         i_out = (G4int)(r_floor);            << 
10729     }                                        << 
10730     else                                     << 
10731     {                                        << 
10732         r_rest = r_in - r_floor;             << 
10733         r_middle = r_floor + 0.5;            << 
10734         n_floor = (G4int)(r_floor);          << 
10735         if (n_floor % 2 == 0)                << 
10736         {                                    << 
10737             // even before modif.            << 
10738             r_help = r_middle + (r_rest - 0. << 
10739         }                                    << 
10740         else                                 << 
10741         {                                    << 
10742             // odd before modification       << 
10743             r_help = r_middle + (r_rest - 0. << 
10744         }                                    << 
10745         i_out = (G4int)(r_help);             << 
10746     }                                        << 
10747 }                                            << 
10748                                                 8883 
10749 double G4Abla::umass(G4double z, G4double n, << 8884 void G4Abla::even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out)     
10750 {                                               8885 {
10751     // liquid-drop mass, Myers & Swiatecki,  << 8886   // Procedure to calculate I_OUT from R_IN in a way that
10752     // pure liquid drop, without pairing and << 8887   // on the average a flat distribution in R_IN results in a
10753                                              << 8888   // fluctuating distribution in I_OUT with an even-odd effect as
10754     // On input:    Z     nuclear charge of  << 8889   // given by R_EVEN_ODD
10755     //              N     number of neutrons << 8890 
10756     //              beta  deformation of nuc << 8891   //     /* ------------------------------------------------------------ */
10757     // On output:   binding energy of nucleu << 8892   //     /* EXAMPLES :                                                   */
10758                                              << 8893   //     /* ------------------------------------------------------------ */
10759     G4double a = 0.0, fumass = 0.0;          << 8894   //     /*    If R_EVEN_ODD = 0 :                                       */
10760     G4double alpha = 0.0;                    << 8895   //     /*           CEIL(R_IN)  ----                                   */
10761     G4double xcom = 0.0, xvs = 0.0, xe = 0.0 << 8896   //     /*                                                              */
10762     const G4double pi = 3.1416;              << 8897   //     /*              R_IN ->                                         */
10763                                              << 8898   //     /*            (somewhere in between CEIL(R_IN) and FLOOR(R_IN)) */                                            */
10764     a = n + z;                               << 8899   //     /*                                                              */
10765     alpha = (std::sqrt(5.0 / (4.0 * pi))) *  << 8900   //     /*           FLOOR(R_IN) ----       --> I_OUT                   */
10766                                              << 8901   //     /* ------------------------------------------------------------ */
10767     xcom = 1.0 - 1.7826 * ((a - 2.0 * z) / a << 8902   //     /*    If R_EVEN_ODD > 0 :                                       */
10768     // factor for asymmetry dependence of su << 8903   //     /*      The interval for the above treatment is                 */
10769     xvs = -xcom * (15.4941 * a - 17.9439 * s << 8904   //     /*         larger for FLOOR(R_IN) = even and                    */
10770     // sum of volume and surface energy      << 8905   //     /*         smaller for FLOOR(R_IN) = odd                        */
10771     xe = z * z * (0.7053 / (std::pow(a, 1.0  << 8906   //     /*    For R_EVEN_ODD < 0 : just opposite treatment              */
10772     fumass = xvs + xe;                       << 8907   //     /* ------------------------------------------------------------ */
10773                                              << 8908 
10774     return fumass;                           << 8909   //     /* ------------------------------------------------------------ */
                                                   >> 8910   //     /* On input:   R_ORIGIN    nuclear charge (real number)         */
                                                   >> 8911   //     /*             R_EVEN_ODD  requested even-odd effect            */
                                                   >> 8912   //     /* Intermediate quantity: R_IN = R_ORIGIN + 0.5                 */
                                                   >> 8913   //     /* On output:  I_OUT       nuclear charge (integer)             */
                                                   >> 8914   //     /* ------------------------------------------------------------ */
                                                   >> 8915 
                                                   >> 8916   //      G4double R_ORIGIN,R_IN,R_EVEN_ODD,R_REST,R_HELP;
                                                   >> 8917   G4double r_in = 0.0, r_rest = 0.0, r_help = 0.0;
                                                   >> 8918   G4double r_floor = 0.0;
                                                   >> 8919   G4double r_middle = 0.0;
                                                   >> 8920   //      G4int I_OUT,N_FLOOR;
                                                   >> 8921   G4int n_floor = 0;
                                                   >> 8922 
                                                   >> 8923   r_in = r_origin + 0.5;
                                                   >> 8924   r_floor = (G4double)((G4int)(r_in));
                                                   >> 8925   if (r_even_odd < 0.001) {
                                                   >> 8926     i_out = (G4int)(r_floor);
                                                   >> 8927   } 
                                                   >> 8928   else {
                                                   >> 8929     r_rest = r_in - r_floor;
                                                   >> 8930     r_middle = r_floor + 0.5;
                                                   >> 8931     n_floor = (G4int)(r_floor);
                                                   >> 8932     if (n_floor%2 == 0) {
                                                   >> 8933       // even before modif.
                                                   >> 8934       r_help = r_middle + (r_rest - 0.5) * (1.0 - r_even_odd);
                                                   >> 8935     } 
                                                   >> 8936     else {
                                                   >> 8937       // odd before modification
                                                   >> 8938       r_help = r_middle + (r_rest - 0.5) * (1.0 + r_even_odd);
                                                   >> 8939     }
                                                   >> 8940     i_out = (G4int)(r_help);
                                                   >> 8941   }
                                                   >> 8942 }
                                                   >> 8943 
                                                   >> 8944 double G4Abla::umass(G4double z,G4double n,G4double beta)
                                                   >> 8945 {
                                                   >> 8946   // liquid-drop mass, Myers & Swiatecki, Lysekil, 1967
                                                   >> 8947   // pure liquid drop, without pairing and shell effects
                                                   >> 8948 
                                                   >> 8949   // On input:    Z     nuclear charge of nucleus
                                                   >> 8950   //              N     number of neutrons in nucleus
                                                   >> 8951   //              beta  deformation of nucleus
                                                   >> 8952   // On output:   binding energy of nucleus
                                                   >> 8953 
                                                   >> 8954   G4double a = 0.0, fumass = 0.0;
                                                   >> 8955   G4double alpha = 0.0;
                                                   >> 8956   G4double xcom = 0.0, xvs = 0.0, xe = 0.0;
                                                   >> 8957   const G4double pi = 3.1416;
                                                   >> 8958 
                                                   >> 8959   a = n + z;
                                                   >> 8960   alpha = ( std::sqrt(5.0/(4.0*pi)) ) * beta;
                                                   >> 8961   
                                                   >> 8962   xcom = 1.0 - 1.7826 * ((a - 2.0*z)/a)*((a - 2.0*z)/a);
                                                   >> 8963   // factor for asymmetry dependence of surface and volume term
                                                   >> 8964   xvs = - xcom * ( 15.4941 * a - 
                                                   >> 8965        17.9439 * std::pow(a,2.0/3.0) * (1.0+0.4*alpha*alpha) );
                                                   >> 8966   // sum of volume and surface energy
                                                   >> 8967   xe = z*z * (0.7053/(std::pow(a,1.0/3.0)) * (1.0-0.2*alpha*alpha) - 1.1529/a);
                                                   >> 8968   fumass = xvs + xe;
                                                   >> 8969   
                                                   >> 8970   return fumass;
                                                   >> 8971 }
                                                   >> 8972 
                                                   >> 8973 
                                                   >> 8974 double G4Abla::ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d)
                                                   >> 8975 {
                                                   >> 8976   // Coulomb potential between two nuclei
                                                   >> 8977   // surfaces are in a distance of d
                                                   >> 8978   // in a tip to tip configuration
                                                   >> 8979 
                                                   >> 8980   // approximate formulation
                                                   >> 8981   // On input: Z1      nuclear charge of first nucleus
                                                   >> 8982   //           N1      number of neutrons in first nucleus
                                                   >> 8983   //           beta1   deformation of first nucleus
                                                   >> 8984   //           Z2      nuclear charge of second nucleus
                                                   >> 8985   //           N2      number of neutrons in second nucleus
                                                   >> 8986   //           beta2   deformation of second nucleus
                                                   >> 8987   //           d       distance of surfaces of the nuclei
                                                   >> 8988 
                                                   >> 8989   //      G4double Z1,N1,beta1,Z2,N2,beta2,d,ecoul;
                                                   >> 8990   G4double fecoul = 0;
                                                   >> 8991   G4double dtot = 0;
                                                   >> 8992   const G4double r0 = 1.16;
                                                   >> 8993 
                                                   >> 8994   dtot = r0 * ( std::pow((z1+n1),1.0/3.0) * (1.0+0.6666667*beta1)
                                                   >> 8995     + std::pow((z2+n2),1.0/3.0) * (1.0+0.6666667*beta2) ) + d;
                                                   >> 8996   fecoul = z1 * z2 * 1.44 / dtot;
                                                   >> 8997 
                                                   >> 8998   return fecoul;
                                                   >> 8999 }
                                                   >> 9000 
                                                   >> 9001 
                                                   >> 9002  G4double G4Abla::Uwash(G4double E, G4double Ecrit,G4double Freduction,G4double gamma){
                                                   >> 9003         // E       excitation energy 
                                                   >> 9004         // Ecrit   critical pairing energy 
                                                   >> 9005         // Freduction  reduction factor for shell washing in superfluid region
                                                   >> 9006         G4double R_wash,uwash;
                                                   >> 9007         if(E < Ecrit)
                                                   >> 9008           R_wash = std::exp(-E * Freduction * gamma);
                                                   >> 9009         else
                                                   >> 9010           R_wash = std::exp(- Ecrit * Freduction * gamma -(E-Ecrit) * gamma);
                                                   >> 9011         
                                                   >> 9012         uwash = R_wash;
                                                   >> 9013  return uwash;
10775 }                                               9014 }
10776                                                 9015 
10777 double G4Abla::ecoul(G4double z1, G4double n << 
10778 {                                            << 
10779     // Coulomb potential between two nuclei  << 
10780     // surfaces are in a distance of d       << 
10781     // in a tip to tip configuration         << 
10782                                              << 
10783     // approximate formulation               << 
10784     // On input: Z1      nuclear charge of f << 
10785     //           N1      number of neutrons  << 
10786     //           beta1   deformation of firs << 
10787     //           Z2      nuclear charge of s << 
10788     //           N2      number of neutrons  << 
10789     //           beta2   deformation of seco << 
10790     //           d       distance of surface << 
10791                                                 9016 
10792     //      G4double Z1,N1,beta1,Z2,N2,beta2 << 9017 G4double G4Abla::frldm(G4double z,G4double n,G4double beta){
10793     G4double fecoul = 0;                     << 
10794     G4double dtot = 0;                       << 
10795     const G4double r0 = 1.16;                << 
10796                                                 9018 
10797     dtot = r0 * (std::pow((z1 + n1), 1.0 / 3 << 9019 //     Liquid-drop mass, Myers & Swiatecki, Lysekil, 1967
10798                  std::pow((z2 + n2), 1.0 / 3 << 9020 //     pure liquid drop, without pairing and shell effects
10799            d;                                << 9021 //
10800     fecoul = z1 * z2 * 1.44 / dtot;          << 9022 //     On input:    Z     nuclear charge of nucleus
10801                                              << 9023 //                  N     number of neutrons in nucleus
10802     return fecoul;                           << 9024 //                  beta  deformation of nucleus
10803 }                                            << 9025 //     On output:   binding energy of nucleus
10804                                              << 9026 // The idea is to use FRLDM model for beta=0 and using Lysekil
10805 G4double G4Abla::Uwash(G4double E, G4double  << 9027 // model to get the deformation energy
10806 {                                            << 9028 
10807     // E       excitation energy             << 9029       G4double a;
10808     // Ecrit   critical pairing energy       << 9030       a = n + z;
10809     // Freduction  reduction factor for shel << 9031       return eflmac_profi(a,z) + umass(z,n,beta) - umass(z,n,0.0);
10810     G4double R_wash, uwash;                  << 
10811     if (E < Ecrit)                           << 
10812         R_wash = std::exp(-E * Freduction *  << 
10813     else                                     << 
10814         R_wash = std::exp(-Ecrit * Freductio << 
10815                                              << 
10816     uwash = R_wash;                          << 
10817     return uwash;                            << 
10818 }                                               9032 }
10819                                                 9033 
10820 G4double G4Abla::frldm(G4double z, G4double  << 
10821 {                                            << 
10822                                              << 
10823     //     Liquid-drop mass, Myers & Swiatec << 
10824     //     pure liquid drop, without pairing << 
10825     //                                       << 
10826     //     On input:    Z     nuclear charge << 
10827     //                  N     number of neut << 
10828     //                  beta  deformation of << 
10829     //     On output:   binding energy of nu << 
10830     // The idea is to use FRLDM model for be << 
10831     // model to get the deformation energy   << 
10832                                              << 
10833     G4double a;                              << 
10834     a = n + z;                               << 
10835     return eflmac_profi(a, z) + umass(z, n,  << 
10836 }                                            << 
10837                                                 9034 
10838 //******************************************    9035 //**********************************************************************
10839 // *                                            9036 // *
10840 // * this function will calculate the liquid    9037 // * this function will calculate the liquid-drop nuclear mass for spheri
10841 // * configuration according to the preprint    9038 // * configuration according to the preprint NUCLEAR GROUND-STATE
10842 // * MASSES and DEFORMATIONS by P. M"oller e    9039 // * MASSES and DEFORMATIONS by P. M"oller et al. from August 16, 1993 p.
10843 // * All constants are taken from this publi    9040 // * All constants are taken from this publication for consistency.
10844 // *                                            9041 // *
10845 // * Parameters:                                9042 // * Parameters:
10846 // *   a:    nuclear mass number                9043 // *   a:    nuclear mass number
10847 // *   z:    nuclear charge                     9044 // *   z:    nuclear charge
10848 // *****************************************    9045 // **********************************************************************
10849                                                 9046 
                                                   >> 9047 
10850 G4double G4Abla::eflmac_profi(G4double ia, G    9048 G4double G4Abla::eflmac_profi(G4double ia, G4double iz)
10851 {                                               9049 {
10852     // CHANGED TO CALCULATE TOTAL BINDING EN << 9050   // CHANGED TO CALCULATE TOTAL BINDING ENERGY INSTEAD OF MASS EXCESS.     
10853     // SWITCH FOR PAIRING INCLUDED AS WELL.  << 9051   // SWITCH FOR PAIRING INCLUDED AS WELL.                                  
10854     // BINDING = EFLMAC(IA,IZ,0,OPTSHP)      << 9052   // BINDING = EFLMAC(IA,IZ,0,OPTSHP)                                      
10855     // FORTRAN TRANSCRIPT OF /U/GREWE/LANG/E << 9053   // FORTRAN TRANSCRIPT OF /U/GREWE/LANG/EEX/FRLDM.C                       
10856     // A.J. 15.07.96                         << 9054   // A.J. 15.07.96                                                         
10857                                              << 
10858     // this function will calculate the liqu << 
10859     // configuration according to the prepri << 
10860     // MASSES and DEFORMATIONS by P. M"oller << 
10861     // All constants are taken from this pub << 
10862                                              << 
10863     // Parameters:                           << 
10864     // a:    nuclear mass number             << 
10865     // z:    nuclear charge                  << 
10866                                              << 
10867     G4double eflmacResult = 0.0;             << 
10868                                              << 
10869     G4int in = 0;                            << 
10870     G4double z = 0.0, n = 0.0, a = 0.0, av = << 
10871     G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b << 
10872     G4double ff = 0.0, ca = 0.0, w = 0.0, ef << 
10873     G4double r0 = 0.0, kf = 0.0, ks = 0.0;   << 
10874     G4double kv = 0.0, rp = 0.0, ay = 0.0, a << 
10875     G4double esq = 0.0, ael = 0.0, i = 0.0;  << 
10876     G4double pi = 3.141592653589793238e0;    << 
10877                                              << 
10878     // fundamental constants                 << 
10879     // electronic charge squared             << 
10880     esq = 1.4399764;                         << 
10881                                              << 
10882     // constants from considerations other t << 
10883     // electronic binding                    << 
10884     ael = 1.433e-5;                          << 
10885                                              << 
10886     // proton rms radius                     << 
10887     rp = 0.8;                                << 
10888                                              << 
10889     // nuclear radius constant               << 
10890     r0 = 1.16;                               << 
10891                                              << 
10892     // range of yukawa-plus-expon. potential << 
10893     ay = 0.68;                               << 
10894                                              << 
10895     // range of yukawa function used to gene << 
10896     // nuclear charge distribution           << 
10897     aden = 0.70;                             << 
10898                                              << 
10899     // wigner constant                       << 
10900     w = 30.0;                                << 
10901                                              << 
10902     // adjusted parameters                   << 
10903     // volume energy                         << 
10904     av = 16.00126;                           << 
10905                                              << 
10906     // volume asymmetry                      << 
10907     kv = 1.92240;                            << 
10908                                              << 
10909     // surface energy                        << 
10910     as = 21.18466;                           << 
10911                                              << 
10912     // surface asymmetry                     << 
10913     ks = 2.345;                              << 
10914     // a^0 constant                          << 
10915     a0 = 2.615;                              << 
10916                                              << 
10917     // charge asymmetry                      << 
10918     ca = 0.10289;                            << 
10919                                              << 
10920     z = G4double(iz);                        << 
10921     a = G4double(ia);                        << 
10922     in = ia - iz;                            << 
10923     n = G4double(in);                        << 
10924                                              << 
10925     c1 = 3.0 / 5.0 * esq / r0;               << 
10926     c4 = 5.0 / 4.0 * std::pow((3.0 / (2.0 *  << 
10927     kf = std::pow((9.0 * pi * z / (4.0 * a)) << 
10928                                              << 
10929     ff = -1.0 / 8.0 * rp * rp * esq / std::p << 
10930          (145.0 / 48.0 - 327.0 / 2880.0 * st << 
10931           1527.0 / 1209600.0 * std::pow(kf,  << 
10932                                              << 
10933     i = (n - z) / a;                         << 
10934                                              << 
10935     x0 = r0 * std::pow(a, (1.0 / 3.0)) / ay; << 
10936     y0 = r0 * std::pow(a, (1.0 / 3.0)) / ade << 
10937                                              << 
10938     b1 = 1.0 - 3.0 / (std::pow(x0, 2)) + (1. << 
10939                                              << 
10940     b3 = 1.0 - 5.0 / std::pow(y0, 2) *       << 
10941                    (1.0 - 15.0 / (8.0 * y0)  << 
10942                     3.0 / 4.0 * (1.0 + 9.0 / << 
10943                         std::exp(-2.0 * y0)) << 
10944                                              << 
10945     // now calculation of total binding ener << 
10946                                              << 
10947     efl = -1.0 * av * (1.0 - kv * i * i) * a << 
10948           c1 * z * z * b3 / std::pow(a, (1.0 << 
10949           ff * std::pow(z, 2) / a - ca * (n  << 
10950                                              << 
10951     efl = efl + w * utilabs(i);              << 
10952                                              << 
10953     eflmacResult = efl;                      << 
10954                                              << 
10955     return eflmacResult;                     << 
10956 }                                            << 
10957 //                                           << 
10958 //                                           << 
10959 //                                           << 
10960 void G4Abla::unstable_nuclei(G4int AFP,      << 
10961                              G4int ZFP,      << 
10962                              G4int* AFPNEW,  << 
10963                              G4int* ZFPNEW,  << 
10964                              G4int& IOUNSTAB << 
10965                              G4double VX,    << 
10966                              G4double VY,    << 
10967                              G4double VZ,    << 
10968                              G4double* VP1X, << 
10969                              G4double* VP1Y, << 
10970                              G4double* VP1Z, << 
10971                              G4double BU_TAB << 
10972                              G4int* ILOOP)   << 
10973 {                                            << 
10974     //                                       << 
10975     G4int INMIN, INMAX, NDIF = 0, IMEM;      << 
10976     G4int NEVA = 0, PEVA = 0;                << 
10977     G4double VP2X, VP2Y, VP2Z;               << 
10978                                              << 
10979     *AFPNEW = AFP;                           << 
10980     *ZFPNEW = ZFP;                           << 
10981     IOUNSTABLE = 0;                          << 
10982     *ILOOP = 0;                              << 
10983     IMEM = 0;                                << 
10984     for (G4int i = 0; i < indexpart; i++)    << 
10985     {                                        << 
10986         BU_TAB_TEMP[i][0] = 0.0;             << 
10987         BU_TAB_TEMP[i][1] = 0.0;             << 
10988         BU_TAB_TEMP[i][2] = 0.0;             << 
10989         BU_TAB_TEMP[i][3] = 0.0;             << 
10990         BU_TAB_TEMP[i][4] = 0.0;             << 
10991         // BU_TAB_TEMP[i][5] = 0.0;          << 
10992     }                                        << 
10993     *VP1X = 0.0;                             << 
10994     *VP1Y = 0.0;                             << 
10995     *VP1Z = 0.0;                             << 
10996                                              << 
10997     if (AFP == 0 && ZFP == 0)                << 
10998     {                                        << 
10999         //       PRINT*,'UNSTABLE NUCLEI, AF << 
11000         return;                              << 
11001     }                                        << 
11002     if ((AFP == 1 && ZFP == 0) || (AFP == 1  << 
11003         (AFP == 3 && ZFP == 2) || (AFP == 4  << 
11004     {                                        << 
11005         *VP1X = VX;                          << 
11006         *VP1Y = VY;                          << 
11007         *VP1Z = VZ;                          << 
11008         return;                              << 
11009     }                                        << 
11010                                                 9055 
11011     if ((AFP - ZFP) == 0 && ZFP > 1)         << 9056   // this function will calculate the liquid-drop nuclear mass for spheri
11012     {                                        << 9057   // configuration according to the preprint NUCLEAR GROUND-STATE        
11013         for (G4int I = 0; I <= AFP - 2; I++) << 9058   // MASSES and DEFORMATIONS by P. M"oller et al. from August 16, 1993 p.
11014         {                                    << 9059   // All constants are taken from this publication for consistency.      
11015             unstable_tke(G4double(AFP - I),  << 
11016                          G4double(AFP - I),  << 
11017                          G4double(AFP - I -  << 
11018                          G4double(AFP - I -  << 
11019                          VX,                 << 
11020                          VY,                 << 
11021                          VZ,                 << 
11022                          &(*VP1X),           << 
11023                          &(*VP1Y),           << 
11024                          &(*VP1Z),           << 
11025                          &VP2X,              << 
11026                          &VP2Y,              << 
11027                          &VP2Z);             << 
11028             BU_TAB_TEMP[*ILOOP][0] = 1.0;    << 
11029             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11030             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11031             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11032             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11033             *ILOOP = *ILOOP + 1;             << 
11034             VX = *VP1X;                      << 
11035             VY = *VP1Y;                      << 
11036             VZ = *VP1Z;                      << 
11037         }                                    << 
11038         // PEVA = PEVA + ZFP - 1;            << 
11039         AFP = 1;                             << 
11040         ZFP = 1;                             << 
11041         IOUNSTABLE = 1;                      << 
11042     }                                        << 
11043     //                                       << 
11044     //*** Find the limits nucleus is bound : << 
11045     isostab_lim(ZFP, &INMIN, &INMAX);        << 
11046     NDIF = AFP - ZFP;                        << 
11047     if (NDIF < INMIN)                        << 
11048     {                                        << 
11049         // Proton unbound                    << 
11050         IOUNSTABLE = 1;                      << 
11051         for (G4int I = 1; I <= 10; I++)      << 
11052         {                                    << 
11053             isostab_lim(ZFP - I, &INMIN, &IN << 
11054             if (INMIN <= NDIF)               << 
11055             {                                << 
11056                 IMEM = I;                    << 
11057                 ZFP = ZFP - I;               << 
11058                 AFP = ZFP + NDIF;            << 
11059                 PEVA = I;                    << 
11060                 goto u10;                    << 
11061             }                                << 
11062         }                                    << 
11063         //                                   << 
11064     u10:                                     << 
11065         for (G4int I = 0; I < IMEM; I++)     << 
11066         {                                    << 
11067             unstable_tke(G4double(NDIF + ZFP << 
11068                          G4double(ZFP + IMEM << 
11069                          G4double(NDIF + ZFP << 
11070                          G4double(ZFP + IMEM << 
11071                          VX,                 << 
11072                          VY,                 << 
11073                          VZ,                 << 
11074                          &(*VP1X),           << 
11075                          &(*VP1Y),           << 
11076                          &(*VP1Z),           << 
11077                          &VP2X,              << 
11078                          &VP2Y,              << 
11079                          &VP2Z);             << 
11080             BU_TAB_TEMP[I + 1 + *ILOOP][0] = << 
11081             BU_TAB_TEMP[I + 1 + *ILOOP][1] = << 
11082             BU_TAB_TEMP[I + 1 + *ILOOP][2] = << 
11083             BU_TAB_TEMP[I + 1 + *ILOOP][3] = << 
11084             BU_TAB_TEMP[I + 1 + *ILOOP][4] = << 
11085             VX = *VP1X;                      << 
11086             VY = *VP1Y;                      << 
11087             VZ = *VP1Z;                      << 
11088         }                                    << 
11089         *ILOOP = *ILOOP + IMEM;              << 
11090     }                                        << 
11091     if (NDIF > INMAX)                        << 
11092     {                                        << 
11093         // Neutron unbound                   << 
11094         NEVA = NDIF - INMAX;                 << 
11095         AFP = ZFP + INMAX;                   << 
11096         IOUNSTABLE = 1;                      << 
11097         for (G4int I = 0; I < NEVA; I++)     << 
11098         {                                    << 
11099             unstable_tke(G4double(ZFP + NDIF << 
11100                          G4double(ZFP),      << 
11101                          G4double(ZFP + NDIF << 
11102                          G4double(ZFP),      << 
11103                          VX,                 << 
11104                          VY,                 << 
11105                          VZ,                 << 
11106                          &(*VP1X),           << 
11107                          &(*VP1Y),           << 
11108                          &(*VP1Z),           << 
11109                          &VP2X,              << 
11110                          &VP2Y,              << 
11111                          &VP2Z);             << 
11112                                              << 
11113             BU_TAB_TEMP[*ILOOP][0] = 0.0;    << 
11114             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11115             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11116             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11117             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11118             *ILOOP = *ILOOP + 1;             << 
11119             VX = *VP1X;                      << 
11120             VY = *VP1Y;                      << 
11121             VZ = *VP1Z;                      << 
11122         }                                    << 
11123     }                                        << 
11124                                                 9060 
11125     if ((AFP >= 2) && (ZFP == 0))            << 9061   // Parameters:                                                         
11126     {                                        << 9062   // a:    nuclear mass number                                         
11127         for (G4int I = 0; I <= AFP - 2; I++) << 9063   // z:    nuclear charge                                     
11128         {                                    << 
11129             unstable_tke(G4double(AFP - I),  << 
11130                          G4double(ZFP),      << 
11131                          G4double(AFP - I -  << 
11132                          G4double(ZFP),      << 
11133                          VX,                 << 
11134                          VY,                 << 
11135                          VZ,                 << 
11136                          &(*VP1X),           << 
11137                          &(*VP1Y),           << 
11138                          &(*VP1Z),           << 
11139                          &VP2X,              << 
11140                          &VP2Y,              << 
11141                          &VP2Z);             << 
11142                                              << 
11143             BU_TAB_TEMP[*ILOOP][0] = 0.0;    << 
11144             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11145             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11146             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11147             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11148             *ILOOP = *ILOOP + 1;             << 
11149             VX = *VP1X;                      << 
11150             VY = *VP1Y;                      << 
11151             VZ = *VP1Z;                      << 
11152         }                                    << 
11153                                              << 
11154         // NEVA = NEVA + (AFP - 1);          << 
11155         AFP = 1;                             << 
11156         ZFP = 0;                             << 
11157         IOUNSTABLE = 1;                      << 
11158     }                                        << 
11159     if (AFP < ZFP)                           << 
11160     {                                        << 
11161         std::cout << "WARNING - BU UNSTABLE: << 
11162         AFP = 0;                             << 
11163         ZFP = 0;                             << 
11164         IOUNSTABLE = 1;                      << 
11165     }                                        << 
11166     if ((AFP >= 4) && (ZFP == 1))            << 
11167     {                                        << 
11168         // Heavy residue is treated as 3H an << 
11169         // neutrons:                         << 
11170         for (G4int I = 0; I < AFP - 3; I++)  << 
11171         {                                    << 
11172             unstable_tke(G4double(AFP - I),  << 
11173                          G4double(ZFP),      << 
11174                          G4double(AFP - I -  << 
11175                          G4double(ZFP),      << 
11176                          VX,                 << 
11177                          VY,                 << 
11178                          VZ,                 << 
11179                          &(*VP1X),           << 
11180                          &(*VP1Y),           << 
11181                          &(*VP1Z),           << 
11182                          &VP2X,              << 
11183                          &VP2Y,              << 
11184                          &VP2Z);             << 
11185                                              << 
11186             BU_TAB_TEMP[*ILOOP][0] = 0.0;    << 
11187             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11188             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11189             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11190             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11191             *ILOOP = *ILOOP + 1;             << 
11192             VX = *VP1X;                      << 
11193             VY = *VP1Y;                      << 
11194             VZ = *VP1Z;                      << 
11195         }                                    << 
11196                                              << 
11197         // NEVA = NEVA + (AFP - 3);          << 
11198         AFP = 3;                             << 
11199         ZFP = 1;                             << 
11200         IOUNSTABLE = 1;                      << 
11201     }                                        << 
11202                                                 9064 
11203     if ((AFP == 4) && (ZFP == 3))            << 9065   G4double eflmacResult = 0.0;
11204     {                                        << 
11205         // 4Li -> 3He + p  ->                << 
11206         AFP = 3;                             << 
11207         ZFP = 2;                             << 
11208         // PEVA = PEVA + 1;                  << 
11209         IOUNSTABLE = 1;                      << 
11210         unstable_tke(4.0, 3.0, 3.0, 2.0, VX, << 
11211                                                 9066 
11212         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9067   G4int in = 0;
11213         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9068   G4double z = 0.0, n = 0.0, a = 0.0, av = 0.0, as = 0.0;
11214         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9069   G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b1 = 0.0, b3 = 0.0;
11215         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9070   G4double ff = 0.0, ca = 0.0, w = 0.0, efl = 0.0; 
11216         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9071   G4double r0 = 0.0, kf = 0.0, ks = 0.0;
11217         *ILOOP = *ILOOP + 1;                 << 9072   G4double kv = 0.0, rp = 0.0, ay = 0.0, aden = 0.0, x0 = 0.0, y0 = 0.0;
11218     }                                        << 9073   G4double esq = 0.0, ael = 0.0, i = 0.0;
11219     if ((AFP == 5) && (ZFP == 2))            << 9074   G4double pi = 3.141592653589793238e0;
11220     {                                        << 
11221         // 5He -> 4He + n  ->                << 
11222         AFP = 4;                             << 
11223         ZFP = 2;                             << 
11224         // NEVA = NEVA + 1;                  << 
11225         IOUNSTABLE = 1;                      << 
11226         unstable_tke(5.0, 2.0, 4.0, 2.0, VX, << 
11227         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 
11228         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11229         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11230         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11231         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11232         *ILOOP = *ILOOP + 1;                 << 
11233     }                                        << 
11234                                                 9075 
11235     if ((AFP == 5) && (ZFP == 3))            << 9076   // fundamental constants
11236     {                                        << 9077   // electronic charge squared
11237         // 5Li -> 4He + p                    << 9078   esq = 1.4399764;
11238         AFP = 4;                             << 
11239         ZFP = 2;                             << 
11240         // PEVA = PEVA + 1;                  << 
11241         IOUNSTABLE = 1;                      << 
11242         unstable_tke(5.0, 3.0, 4.0, 2.0, VX, << 
11243         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11244         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11245         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11246         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11247         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11248         *ILOOP = *ILOOP + 1;                 << 
11249     }                                        << 
11250                                                 9079 
11251     if ((AFP == 6) && (ZFP == 4))            << 9080   // constants from considerations other than nucl. masses
11252     {                                        << 9081   // electronic binding
11253         // 6Be -> 4He + 2p (velocity in two  << 9082   ael = 1.433e-5;
11254         AFP = 4;                             << 
11255         ZFP = 2;                             << 
11256         // PEVA = PEVA + 2;                  << 
11257         IOUNSTABLE = 1;                      << 
11258         // 6Be -> 5Li + p                    << 
11259         unstable_tke(6.0, 4.0, 5.0, 3.0, VX, << 
11260         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11261         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11262         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11263         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11264         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11265         *ILOOP = *ILOOP + 1;                 << 
11266         VX = *VP1X;                          << 
11267         VY = *VP1Y;                          << 
11268         VZ = *VP1Z;                          << 
11269                                              << 
11270         // 5Li -> 4He + p                    << 
11271         unstable_tke(5.0, 3.0, 4.0, 2.0, VX, << 
11272         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11273         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11274         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11275         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11276         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11277         *ILOOP = *ILOOP + 1;                 << 
11278     }                                        << 
11279     if ((AFP == 7) && (ZFP == 2))            << 
11280     {                                        << 
11281         // 7He -> 6He + n                    << 
11282         AFP = 6;                             << 
11283         ZFP = 2;                             << 
11284         // NEVA = NEVA + 1;                  << 
11285         IOUNSTABLE = 1;                      << 
11286         unstable_tke(7.0, 2.0, 6.0, 2.0, VX, << 
11287         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 
11288         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11289         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11290         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11291         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11292         *ILOOP = *ILOOP + 1;                 << 
11293     }                                        << 
11294                                              << 
11295     if ((AFP == 7) && (ZFP == 5))            << 
11296     {                                        << 
11297         // 7B -> 6Be + p -> 4He + 3p         << 
11298         for (int I = 0; I <= AFP - 5; I++)   << 
11299         {                                    << 
11300             unstable_tke(double(AFP - I),    << 
11301                          double(ZFP - I),    << 
11302                          double(AFP - I - 1) << 
11303                          double(ZFP - I - 1) << 
11304                          VX,                 << 
11305                          VY,                 << 
11306                          VZ,                 << 
11307                          &(*VP1X),           << 
11308                          &(*VP1Y),           << 
11309                          &(*VP1Z),           << 
11310                          &VP2X,              << 
11311                          &VP2Y,              << 
11312                          &VP2Z);             << 
11313             BU_TAB_TEMP[*ILOOP][0] = 1.0;    << 
11314             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11315             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11316             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11317             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11318             *ILOOP = *ILOOP + 1;             << 
11319             VX = *VP1X;                      << 
11320             VY = *VP1Y;                      << 
11321             VZ = *VP1Z;                      << 
11322         }                                    << 
11323                                              << 
11324         AFP = 4;                             << 
11325         ZFP = 2;                             << 
11326         // PEVA = PEVA + 3;                  << 
11327         IOUNSTABLE = 1;                      << 
11328     }                                        << 
11329     if ((AFP == 8) && (ZFP == 4))            << 
11330     {                                        << 
11331         // 8Be  -> 4He + 4He                 << 
11332         AFP = 4;                             << 
11333         ZFP = 2;                             << 
11334         IOUNSTABLE = 1;                      << 
11335         unstable_tke(8.0, 4.0, 4.0, 2.0, VX, << 
11336         BU_TAB_TEMP[*ILOOP][0] = 2.0;        << 
11337         BU_TAB_TEMP[*ILOOP][1] = 4.0;        << 
11338         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11339         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11340         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11341         *ILOOP = *ILOOP + 1;                 << 
11342     }                                        << 
11343     if ((AFP == 8) && (ZFP == 6))            << 
11344     {                                        << 
11345         // 8C  -> 2p + 6Be                   << 
11346         AFP = 6;                             << 
11347         ZFP = 4;                             << 
11348         // PEVA = PEVA + 2;                  << 
11349         IOUNSTABLE = 1;                      << 
11350                                                 9083 
11351         unstable_tke(8.0, 6.0, 7.0, 5.0, VX, << 9084   // proton rms radius
11352         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9085   rp  = 0.8;
11353         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11354         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11355         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11356         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11357         *ILOOP = *ILOOP + 1;                 << 
11358         VX = *VP1X;                          << 
11359         VY = *VP1Y;                          << 
11360         VZ = *VP1Z;                          << 
11361                                              << 
11362         unstable_tke(7.0, 5.0, 6.0, 4.0, VX, << 
11363         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11364         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11365         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11366         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11367         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11368         *ILOOP = *ILOOP + 1;                 << 
11369         VX = *VP1X;                          << 
11370         VY = *VP1Y;                          << 
11371         VZ = *VP1Z;                          << 
11372     }                                        << 
11373                                              << 
11374     if ((AFP == 9) && (ZFP == 2))            << 
11375     {                                        << 
11376         // 9He -> 8He + n                    << 
11377         AFP = 8;                             << 
11378         ZFP = 2;                             << 
11379         // NEVA = NEVA + 1;                  << 
11380         IOUNSTABLE = 1;                      << 
11381                                                 9086 
11382         unstable_tke(9.0, 2.0, 8.0, 2.0, VX, << 9087   // nuclear radius constant
11383         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 9088   r0  = 1.16;
11384         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11385         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11386         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11387         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11388         *ILOOP = *ILOOP + 1;                 << 
11389         VX = *VP1X;                          << 
11390         VY = *VP1Y;                          << 
11391         VZ = *VP1Z;                          << 
11392     }                                        << 
11393                                              << 
11394     if ((AFP == 9) && (ZFP == 5))            << 
11395     {                                        << 
11396         // 9B -> 4He + 4He + p  ->           << 
11397         AFP = 4;                             << 
11398         ZFP = 2;                             << 
11399         // PEVA = PEVA + 1;                  << 
11400         IOUNSTABLE = 1;                      << 
11401         unstable_tke(9.0, 5.0, 8.0, 4.0, VX, << 
11402         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11403         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11404         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11405         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11406         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11407         *ILOOP = *ILOOP + 1;                 << 
11408         VX = *VP1X;                          << 
11409         VY = *VP1Y;                          << 
11410         VZ = *VP1Z;                          << 
11411                                              << 
11412         unstable_tke(8.0, 4.0, 4.0, 2.0, VX, << 
11413         BU_TAB_TEMP[*ILOOP][0] = 2.0;        << 
11414         BU_TAB_TEMP[*ILOOP][1] = 4.0;        << 
11415         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11416         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11417         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11418         *ILOOP = *ILOOP + 1;                 << 
11419         VX = *VP1X;                          << 
11420         VY = *VP1Y;                          << 
11421         VZ = *VP1Z;                          << 
11422     }                                        << 
11423                                              << 
11424     if ((AFP == 10) && (ZFP == 2))           << 
11425     {                                        << 
11426         // 10He -> 8He + 2n                  << 
11427         AFP = 8;                             << 
11428         ZFP = 2;                             << 
11429         // NEVA = NEVA + 2;                  << 
11430         IOUNSTABLE = 1;                      << 
11431         // 10He -> 9He + n                   << 
11432         unstable_tke(10.0, 2.0, 9.0, 2.0, VX << 
11433         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 
11434         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11435         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11436         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11437         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11438         *ILOOP = *ILOOP + 1;                 << 
11439         VX = *VP1X;                          << 
11440         VY = *VP1Y;                          << 
11441         VZ = *VP1Z;                          << 
11442                                              << 
11443         // 9He -> 8He + n                    << 
11444         unstable_tke(9.0, 2.0, 8.0, 2.0, VX, << 
11445         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 
11446         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11447         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11448         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11449         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11450         *ILOOP = *ILOOP + 1;                 << 
11451         VX = *VP1X;                          << 
11452         VY = *VP1Y;                          << 
11453         VZ = *VP1Z;                          << 
11454     }                                        << 
11455     if ((AFP == 10) && (ZFP == 3))           << 
11456     {                                        << 
11457         // 10Li -> 9Li + n  ->               << 
11458         AFP = 9;                             << 
11459         ZFP = 3;                             << 
11460         // NEVA = NEVA + 1;                  << 
11461         IOUNSTABLE = 1;                      << 
11462         unstable_tke(10.0, 3.0, 9.0, 3.0, VX << 
11463         BU_TAB_TEMP[*ILOOP][0] = 0.0;        << 
11464         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11465         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11466         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11467         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11468         *ILOOP = *ILOOP + 1;                 << 
11469         VX = *VP1X;                          << 
11470         VY = *VP1Y;                          << 
11471         VZ = *VP1Z;                          << 
11472     }                                        << 
11473     if ((AFP == 10) && (ZFP == 7))           << 
11474     {                                        << 
11475         // 10N -> 9C + p  ->                 << 
11476         AFP = 9;                             << 
11477         ZFP = 6;                             << 
11478         // PEVA = PEVA + 1;                  << 
11479         IOUNSTABLE = 1;                      << 
11480         unstable_tke(10.0, 7.0, 9.0, 6.0, VX << 
11481         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11482         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11483         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11484         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11485         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11486         *ILOOP = *ILOOP + 1;                 << 
11487         VX = *VP1X;                          << 
11488         VY = *VP1Y;                          << 
11489         VZ = *VP1Z;                          << 
11490     }                                        << 
11491                                              << 
11492     if ((AFP == 11) && (ZFP == 7))           << 
11493     {                                        << 
11494         // 11N -> 10C + p  ->                << 
11495         AFP = 10;                            << 
11496         ZFP = 6;                             << 
11497         // PEVA = PEVA + 1;                  << 
11498         IOUNSTABLE = 1;                      << 
11499         unstable_tke(11.0, 7.0, 10.0, 6.0, V << 
11500         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 
11501         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 
11502         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 
11503         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 
11504         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 
11505         *ILOOP = *ILOOP + 1;                 << 
11506         VX = *VP1X;                          << 
11507         VY = *VP1Y;                          << 
11508         VZ = *VP1Z;                          << 
11509     }                                        << 
11510     if ((AFP == 12) && (ZFP == 8))           << 
11511     {                                        << 
11512         // 12O -> 10C + 2p  ->               << 
11513         AFP = 10;                            << 
11514         ZFP = 6;                             << 
11515         // PEVA = PEVA + 2;                  << 
11516         IOUNSTABLE = 1;                      << 
11517                                                 9089 
11518         unstable_tke(12.0, 8.0, 11.0, 7.0, V << 9090   // range of yukawa-plus-expon. potential
11519         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9091   ay  = 0.68;
11520         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9092 
11521         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9093   // range of yukawa function used to generate                          
11522         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9094   // nuclear charge distribution
11523         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9095   aden= 0.70;
11524         *ILOOP = *ILOOP + 1;                 << 9096 
11525         VX = *VP1X;                          << 9097   // wigner constant
11526         VY = *VP1Y;                          << 9098   w   = 30.0;
11527         VZ = *VP1Z;                          << 9099 
11528                                              << 9100   // adjusted parameters
11529         unstable_tke(11.0, 7.0, 10.0, 6.0, V << 9101   // volume energy
11530         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9102   av  = 16.00126;
11531         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9103 
11532         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9104   // volume asymmetry
11533         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9105   kv  =  1.92240;
11534         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9106 
11535         *ILOOP = *ILOOP + 1;                 << 9107   // surface energy
11536         VX = *VP1X;                          << 9108   as  = 21.18466;
11537         VY = *VP1Y;                          << 9109 
11538         VZ = *VP1Z;                          << 9110   // surface asymmetry
11539     }                                        << 9111   ks  =  2.345;
11540     if ((AFP == 15) && (ZFP == 9))           << 9112   // a^0 constant
11541     {                                        << 9113   a0  =  2.615;
11542         // 15F -> 14O + p  ->                << 9114 
11543         AFP = 14;                            << 9115   // charge asymmetry
11544         ZFP = 8;                             << 9116   ca  =  0.10289;
11545         // PEVA = PEVA + 1;                  << 9117 
11546         IOUNSTABLE = 1;                      << 9118   z   = G4double(iz);
11547         unstable_tke(15.0, 9.0, 14.0, 8.0, V << 9119   a   = G4double(ia);
11548         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9120   in  = ia - iz;                                                       
11549         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9121   n   = G4double(in);
11550         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9122 
11551         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9123   
11552         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9124   c1  = 3.0/5.0*esq/r0;
11553         *ILOOP = *ILOOP + 1;                 << 9125   c4  = 5.0/4.0*std::pow((3.0/(2.0*pi)),(2.0/3.0)) * c1;
11554         VX = *VP1X;                          << 9126   kf  = std::pow((9.0*pi*z/(4.0*a)),(1.0/3.0))/r0;
11555         VY = *VP1Y;                          << 9127   
11556         VZ = *VP1Z;                          << 9128   ff = -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));
11557     }                                        << 9129 
11558                                              << 9130   i   = (n-z)/a;
11559     if ((AFP == 16) && (ZFP == 9))           << 9131 
11560     {                                        << 9132   x0  = r0 * std::pow(a,(1.0/3.0)) / ay;
11561         // 16F -> 15O + p  ->                << 9133   y0  = r0 * std::pow(a,(1.0/3.0)) / aden;
11562         AFP = 15;                            << 9134 
11563         ZFP = 8;                             << 9135   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);
11564         // PEVA = PEVA + 1;                  << 9136 
11565         IOUNSTABLE = 1;                      << 9137   b3  = 1.0 - 5.0/std::pow(y0,2) * (1.0 - 15.0/(8.0*y0) + 21.0/(8.0 * std::pow(y0,3))
11566         unstable_tke(16.0, 9.0, 15.0, 8.0, V << 9138              - 3.0/4.0 * (1.0 + 9.0/(2.0*y0) + 7.0/std::pow(y0,2)
11567         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9139               + 7.0/(2.0 * std::pow(y0,3))) * std::exp(-2.0*y0));
11568         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9140 
11569         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9141   // now calulation of total binding energy                  
11570         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9142 
11571         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9143   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
11572         *ILOOP = *ILOOP + 1;                 << 9144     + 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))
11573         VX = *VP1X;                          << 9145     + ff*std::pow(z,2)/a -ca*(n-z) - ael * std::pow(z,(2.39e0));
11574         VY = *VP1Y;                          << 9146 
11575         VZ = *VP1Z;                          << 9147   efl = efl + w*utilabs(i);
11576     }                                        << 9148 
11577                                              << 9149   eflmacResult = efl;
11578     if ((AFP == 16) && (ZFP == 10))          << 9150 
11579     {                                        << 9151   return eflmacResult;
11580         // 16Ne -> 14O + 2p  ->              << 9152 }
11581         AFP = 14;                            << 9153 //
11582         ZFP = 8;                             << 9154 //
11583         // PEVA = PEVA + 2;                  << 9155 //
11584         IOUNSTABLE = 1;                      << 9156 void G4Abla::unstable_nuclei(G4int AFP,G4int ZFP,G4int *AFPNEW,G4int *ZFPNEW,G4int &IOUNSTABLE,G4double VX,G4double VY,G4double VZ,G4double *VP1X,G4double *VP1Y,G4double *VP1Z,G4double BU_TAB_TEMP[200][6],G4int *ILOOP){
11585         unstable_tke(16.0, 10.0, 15.0, 9.0,  << 9157 //
11586         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9158       G4int INMIN,INMAX,NDIF=0,IMEM;
11587         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9159       G4int NEVA=0,PEVA=0;
11588         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9160       G4double   VP2X,VP2Y,VP2Z;
11589         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9161 
11590         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9162       *AFPNEW = AFP;
11591         *ILOOP = *ILOOP + 1;                 << 9163       *ZFPNEW = ZFP;
11592         VX = *VP1X;                          << 9164       IOUNSTABLE = 0;
11593         VY = *VP1Y;                          << 9165       *ILOOP = 0;
11594         VZ = *VP1Z;                          << 9166       IMEM = 0;
11595                                              << 9167       for(G4int i=0;i<200;i++){
11596         unstable_tke(15.0, 9.0, 14.0, 8.0, V << 9168       BU_TAB_TEMP[i][0] = 0.0;
11597         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9169       BU_TAB_TEMP[i][1] = 0.0;
11598         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9170       BU_TAB_TEMP[i][2] = 0.0;
11599         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9171       BU_TAB_TEMP[i][3] = 0.0;
11600         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9172       BU_TAB_TEMP[i][4] = 0.0;
11601         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9173       //BU_TAB_TEMP[i][5] = 0.0;
11602         *ILOOP = *ILOOP + 1;                 << 9174       }
11603         VX = *VP1X;                          << 9175       *VP1X = 0.0;
11604         VY = *VP1Y;                          << 9176       *VP1Y = 0.0;
11605         VZ = *VP1Z;                          << 9177       *VP1Z = 0.0;
11606     }                                        << 9178 
11607     if ((AFP == 18) && (ZFP == 11))          << 9179       if(AFP==0 && ZFP==0){
11608     {                                        << 9180 //       PRINT*,'UNSTABLE NUCLEI, AFP=0, ZFP=0'
11609         // 18Na -> 17Ne + p  ->              << 9181        return;
11610         AFP = 17;                            << 9182       }
11611         ZFP = 10;                            << 9183       if((AFP==1 && ZFP==0) || 
11612         // PEVA = PEVA + 1;                  << 9184          (AFP==1 && ZFP==1) || 
11613         IOUNSTABLE = 1;                      << 9185          (AFP==2 && ZFP==1) || 
11614         unstable_tke(18.0, 11.0, 17.0, 10.0, << 9186          (AFP==3 && ZFP==1) || 
11615         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9187          (AFP==3 && ZFP==2) || 
11616         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9188          (AFP==4 && ZFP==2) || 
11617         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9189          (AFP==6 && ZFP==2) || 
11618         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9190          (AFP==8 && ZFP==2)
11619         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9191        ){
11620         *ILOOP = *ILOOP + 1;                 << 9192        *VP1X = VX;
11621         VX = *VP1X;                          << 9193        *VP1Y = VY;
11622         VY = *VP1Y;                          << 9194        *VP1Z = VZ;
11623         VZ = *VP1Z;                          << 9195        return;
11624     }                                        << 9196       }
11625     if ((AFP == 19) && (ZFP == 11))          << 9197 
11626     {                                        << 9198       if ((AFP-ZFP)==0 && ZFP>1){
11627         // 19Na -> 18Ne + p  ->              << 9199         for(G4int I = 0;I<=AFP-2;I++){
11628         AFP = 18;                            << 9200          unstable_tke(G4double(AFP-I),G4double(AFP-I),G4double(AFP-I-1),G4double(AFP-I-1),VX,VY,VZ,
11629         ZFP = 10;                            << 9201            &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
11630         // PEVA = PEVA + 1;                  << 9202          BU_TAB_TEMP[*ILOOP][0] = 1.0;
11631         IOUNSTABLE = 1;                      << 9203          BU_TAB_TEMP[*ILOOP][1] = 1.0;
11632         unstable_tke(19.0, 11.0, 18.0, 10.0, << 9204          BU_TAB_TEMP[*ILOOP][2] = VP2X;
11633         BU_TAB_TEMP[*ILOOP][0] = 1.0;        << 9205          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
11634         BU_TAB_TEMP[*ILOOP][1] = 1.0;        << 9206          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
11635         BU_TAB_TEMP[*ILOOP][2] = VP2X;       << 9207          *ILOOP = *ILOOP + 1;
11636         BU_TAB_TEMP[*ILOOP][3] = VP2Y;       << 9208          VX = *VP1X;
11637         BU_TAB_TEMP[*ILOOP][4] = VP2Z;       << 9209          VY = *VP1Y;
11638         *ILOOP = *ILOOP + 1;                 << 9210          VZ = *VP1Z;
11639         VX = *VP1X;                          << 
11640         VY = *VP1Y;                          << 
11641         VZ = *VP1Z;                          << 
11642     }                                        << 
11643     if (ZFP >= 4 && (AFP - ZFP) == 1)        << 
11644     {                                        << 
11645         // Heavy residue is treated as 3He   << 
11646         NEVA = AFP - 3;                      << 
11647         PEVA = ZFP - 2;                      << 
11648                                              << 
11649         for (G4int I = 0; I < NEVA; I++)     << 
11650         {                                    << 
11651             unstable_tke(G4double(AFP - I),  << 
11652                          G4double(ZFP),      << 
11653                          G4double(AFP - I -  << 
11654                          G4double(ZFP),      << 
11655                          VX,                 << 
11656                          VY,                 << 
11657                          VZ,                 << 
11658                          &(*VP1X),           << 
11659                          &(*VP1Y),           << 
11660                          &(*VP1Z),           << 
11661                          &VP2X,              << 
11662                          &VP2Y,              << 
11663                          &VP2Z);             << 
11664             BU_TAB_TEMP[*ILOOP][0] = 0.0;    << 
11665             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11666             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11667             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11668             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11669             *ILOOP = *ILOOP + 1;             << 
11670             VX = *VP1X;                      << 
11671             VY = *VP1Y;                      << 
11672             VZ = *VP1Z;                      << 
11673         }                                    << 
11674         for (G4int I = 0; I < PEVA; I++)     << 
11675         {                                    << 
11676             unstable_tke(G4double(AFP - NEVA << 
11677                          G4double(ZFP - I),  << 
11678                          G4double(AFP - NEVA << 
11679                          G4double(ZFP - I -  << 
11680                          VX,                 << 
11681                          VY,                 << 
11682                          VZ,                 << 
11683                          &(*VP1X),           << 
11684                          &(*VP1Y),           << 
11685                          &(*VP1Z),           << 
11686                          &VP2X,              << 
11687                          &VP2Y,              << 
11688                          &VP2Z);             << 
11689             BU_TAB_TEMP[*ILOOP][0] = 1.0;    << 
11690             BU_TAB_TEMP[*ILOOP][1] = 1.0;    << 
11691             BU_TAB_TEMP[*ILOOP][2] = VP2X;   << 
11692             BU_TAB_TEMP[*ILOOP][3] = VP2Y;   << 
11693             BU_TAB_TEMP[*ILOOP][4] = VP2Z;   << 
11694             *ILOOP = *ILOOP + 1;             << 
11695             VX = *VP1X;                      << 
11696             VY = *VP1Y;                      << 
11697             VZ = *VP1Z;                      << 
11698         }                                       9211         }
                                                   >> 9212         // PEVA = PEVA + ZFP - 1;
                                                   >> 9213          AFP = 1;
                                                   >> 9214          ZFP = 1;
                                                   >> 9215          IOUNSTABLE = 1;
                                                   >> 9216       }
                                                   >> 9217 //
                                                   >> 9218 //*** Find the limits nucleus is bound :
                                                   >> 9219       isostab_lim(ZFP,&INMIN,&INMAX);
                                                   >> 9220       NDIF = AFP - ZFP;
                                                   >> 9221       if(NDIF<INMIN){
                                                   >> 9222 // Proton unbound
                                                   >> 9223         IOUNSTABLE = 1;
                                                   >> 9224        for(G4int I = 1;I<=10; I++){
                                                   >> 9225         isostab_lim(ZFP-I,&INMIN,&INMAX);
                                                   >> 9226          if(INMIN<=NDIF){
                                                   >> 9227          IMEM = I;
                                                   >> 9228          ZFP = ZFP - I;
                                                   >> 9229          AFP = ZFP + NDIF;
                                                   >> 9230          PEVA = I;
                                                   >> 9231          goto u10;
                                                   >> 9232          }
                                                   >> 9233        }
                                                   >> 9234 //
                                                   >> 9235       u10:
                                                   >> 9236        for(G4int I = 0;I< IMEM;I++){
                                                   >> 9237          unstable_tke(G4double(NDIF+ZFP+IMEM-I),
                                                   >> 9238          G4double(ZFP+IMEM-I),
                                                   >> 9239          G4double(NDIF+ZFP+IMEM-I-1),
                                                   >> 9240          G4double(ZFP+IMEM-I-1),
                                                   >> 9241          VX,VY,VZ,
                                                   >> 9242          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9243          BU_TAB_TEMP[I+1+*ILOOP][0] = 1.0;
                                                   >> 9244          BU_TAB_TEMP[I+1+*ILOOP][1] = 1.0;
                                                   >> 9245          BU_TAB_TEMP[I+1+*ILOOP][2] = VP2X;
                                                   >> 9246          BU_TAB_TEMP[I+1+*ILOOP][3] = VP2Y;
                                                   >> 9247          BU_TAB_TEMP[I+1+*ILOOP][4] = VP2Z;
                                                   >> 9248          VX = *VP1X;
                                                   >> 9249          VY = *VP1Y;
                                                   >> 9250          VZ = *VP1Z;
                                                   >> 9251        }
                                                   >> 9252          *ILOOP = *ILOOP + IMEM;
11699                                                 9253 
11700         AFP = 3;                             << 9254       }
11701         ZFP = 2;                             << 9255       if(NDIF>INMAX){
                                                   >> 9256 // Neutron unbound
                                                   >> 9257         NEVA = NDIF - INMAX;
                                                   >> 9258         AFP = ZFP + INMAX;
11702         IOUNSTABLE = 1;                         9259         IOUNSTABLE = 1;
11703     }                                        << 9260          for(G4int I = 0;I<NEVA;I++){
11704     //                                       << 9261          unstable_tke(G4double(ZFP+NDIF-I),
11705     *AFPNEW = AFP;                           << 9262          G4double(ZFP),
11706     *ZFPNEW = ZFP;                           << 9263          G4double(ZFP+NDIF-I-1),
11707     return;                                  << 9264          G4double(ZFP),
                                                   >> 9265          VX,VY,VZ,
                                                   >> 9266          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9267 
                                                   >> 9268          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9269          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9270          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9271          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9272          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9273          *ILOOP = *ILOOP + 1;
                                                   >> 9274          VX = *VP1X;
                                                   >> 9275          VY = *VP1Y;
                                                   >> 9276          VZ = *VP1Z;
                                                   >> 9277          }
                                                   >> 9278       }
                                                   >> 9279 
                                                   >> 9280          if ((AFP>=2) && (ZFP==0)){
                                                   >> 9281          for(G4int I = 0;I<= AFP-2;I++){
                                                   >> 9282          unstable_tke(G4double(AFP-I),G4double(ZFP),
                                                   >> 9283          G4double(AFP-I-1),G4double(ZFP),
                                                   >> 9284          VX,VY,VZ,
                                                   >> 9285          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9286 
                                                   >> 9287          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9288          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9289          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9290          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9291          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9292          *ILOOP = *ILOOP + 1;
                                                   >> 9293          VX = *VP1X;
                                                   >> 9294          VY = *VP1Y;
                                                   >> 9295          VZ = *VP1Z;
                                                   >> 9296          }
                                                   >> 9297 
                                                   >> 9298    //NEVA = NEVA + (AFP - 1);
                                                   >> 9299           AFP = 1;
                                                   >> 9300           ZFP = 0;
                                                   >> 9301           IOUNSTABLE = 1;
                                                   >> 9302          }
                                                   >> 9303          if (AFP<ZFP){
                                                   >> 9304           std::cout << "WARNING - BU UNSTABLE: AF < ZF" << std::endl;
                                                   >> 9305           AFP = 0;
                                                   >> 9306           ZFP = 0;
                                                   >> 9307           IOUNSTABLE = 1;
                                                   >> 9308          }
                                                   >> 9309          if ((AFP>=4) && (ZFP==1)){
                                                   >> 9310 // Heavy residue is treated as 3H and the rest of mass is emitted as neutrons:
                                                   >> 9311          for(G4int I = 0; I<AFP-3;I++){
                                                   >> 9312          unstable_tke(G4double(AFP-I),G4double(ZFP),
                                                   >> 9313          G4double(AFP-I-1),G4double(ZFP),
                                                   >> 9314          VX,VY,VZ,
                                                   >> 9315          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9316 
                                                   >> 9317          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9318          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9319          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9320          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9321          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9322          *ILOOP = *ILOOP + 1;
                                                   >> 9323          VX = *VP1X;
                                                   >> 9324          VY = *VP1Y;
                                                   >> 9325          VZ = *VP1Z;
                                                   >> 9326          }
                                                   >> 9327 
                                                   >> 9328    // NEVA = NEVA + (AFP - 3);
                                                   >> 9329          AFP = 3;
                                                   >> 9330          ZFP = 1;
                                                   >> 9331          IOUNSTABLE = 1;
                                                   >> 9332          }
                                                   >> 9333 
                                                   >> 9334          if ((AFP==4) && (ZFP==3)){
                                                   >> 9335 // 4Li -> 3He + p  ->
                                                   >> 9336          AFP = 3;
                                                   >> 9337          ZFP = 2;
                                                   >> 9338          //PEVA = PEVA + 1;
                                                   >> 9339          IOUNSTABLE = 1;
                                                   >> 9340          unstable_tke(4.0,3.0,3.0,2.0,
                                                   >> 9341          VX,VY,VZ,
                                                   >> 9342          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9343 
                                                   >> 9344          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9345          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9346          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9347          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9348          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9349          *ILOOP = *ILOOP + 1;
                                                   >> 9350          }
                                                   >> 9351          if ((AFP==5) && (ZFP==2)){
                                                   >> 9352 // 5He -> 4He + n  ->
                                                   >> 9353          AFP = 4;
                                                   >> 9354          ZFP = 2;
                                                   >> 9355          //NEVA = NEVA + 1;
                                                   >> 9356          IOUNSTABLE = 1;
                                                   >> 9357          unstable_tke(5.0,2.0,4.0,2.0,
                                                   >> 9358          VX,VY,VZ,
                                                   >> 9359          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9360          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9361          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9362          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9363          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9364          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9365          *ILOOP = *ILOOP + 1;
                                                   >> 9366          }
                                                   >> 9367 
                                                   >> 9368          if ((AFP==5) && (ZFP==3)){
                                                   >> 9369 // 5Li -> 4He + p
                                                   >> 9370          AFP = 4;
                                                   >> 9371          ZFP = 2;
                                                   >> 9372          //PEVA = PEVA + 1;
                                                   >> 9373          IOUNSTABLE = 1;
                                                   >> 9374          unstable_tke(5.0,3.0,4.0,2.0,
                                                   >> 9375          VX,VY,VZ,
                                                   >> 9376          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9377          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9378          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9379          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9380          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9381          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9382          *ILOOP = *ILOOP + 1;
                                                   >> 9383          }
                                                   >> 9384 
                                                   >> 9385          if ((AFP==6) && (ZFP==4)){
                                                   >> 9386 // 6Be -> 4He + 2p (velocity in two steps: 6Be->5Li->4He)
                                                   >> 9387          AFP = 4;
                                                   >> 9388          ZFP = 2;
                                                   >> 9389          //PEVA = PEVA + 2;
                                                   >> 9390          IOUNSTABLE = 1;
                                                   >> 9391 // 6Be -> 5Li + p
                                                   >> 9392          unstable_tke(6.0,4.0,5.0,3.0,
                                                   >> 9393          VX,VY,VZ,
                                                   >> 9394          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9395          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9396          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9397          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9398          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9399          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9400          *ILOOP = *ILOOP + 1;
                                                   >> 9401          VX = *VP1X;
                                                   >> 9402          VY = *VP1Y;
                                                   >> 9403          VZ = *VP1Z;
                                                   >> 9404 
                                                   >> 9405 // 5Li -> 4He + p
                                                   >> 9406          unstable_tke(5.0,3.0,4.0,2.0,
                                                   >> 9407          VX,VY,VZ,
                                                   >> 9408          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9409          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9410          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9411          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9412          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9413          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9414          *ILOOP = *ILOOP + 1;
                                                   >> 9415          }
                                                   >> 9416          if ((AFP==7)&&(ZFP==2)){
                                                   >> 9417 // 7He -> 6He + n
                                                   >> 9418          AFP = 6;
                                                   >> 9419          ZFP = 2;
                                                   >> 9420          //NEVA = NEVA + 1;
                                                   >> 9421          IOUNSTABLE = 1;
                                                   >> 9422          unstable_tke(7.0,2.0,6.0,2.0,
                                                   >> 9423          VX,VY,VZ,
                                                   >> 9424          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9425          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9426          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9427          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9428          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9429          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9430          *ILOOP = *ILOOP + 1;
                                                   >> 9431          }
                                                   >> 9432 
                                                   >> 9433          if ((AFP==7) && (ZFP==5)){
                                                   >> 9434 // 7B -> 6Be + p -> 4He + 3p
                                                   >> 9435          for(int I = 0; I<= AFP-5;I++){
                                                   >> 9436          unstable_tke(double(AFP-I),double(ZFP-I),
                                                   >> 9437          double(AFP-I-1),double(ZFP-I-1),
                                                   >> 9438          VX,VY,VZ,
                                                   >> 9439          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9440          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9441          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9442          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9443          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9444          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9445          *ILOOP = *ILOOP + 1;
                                                   >> 9446          VX = *VP1X;
                                                   >> 9447          VY = *VP1Y;
                                                   >> 9448          VZ = *VP1Z;
                                                   >> 9449          }
                                                   >> 9450 
                                                   >> 9451          AFP = 4;
                                                   >> 9452          ZFP = 2;
                                                   >> 9453          //PEVA = PEVA + 3;
                                                   >> 9454          IOUNSTABLE = 1;
                                                   >> 9455          }
                                                   >> 9456          if ((AFP==8) && (ZFP==4)){
                                                   >> 9457 // 8Be  -> 4He + 4He
                                                   >> 9458           AFP = 4;
                                                   >> 9459           ZFP = 2;
                                                   >> 9460          IOUNSTABLE = 1;
                                                   >> 9461          unstable_tke(8.0,4.0,4.0,2.0,
                                                   >> 9462          VX,VY,VZ,
                                                   >> 9463          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9464          BU_TAB_TEMP[*ILOOP][0] = 2.0;
                                                   >> 9465          BU_TAB_TEMP[*ILOOP][1] = 4.0;
                                                   >> 9466          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9467          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9468          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9469          *ILOOP = *ILOOP + 1;
                                                   >> 9470          }
                                                   >> 9471          if ((AFP==8) && (ZFP==6)){
                                                   >> 9472 // 8C  -> 2p + 6Be
                                                   >> 9473           AFP = 6;
                                                   >> 9474           ZFP = 4;
                                                   >> 9475           //PEVA = PEVA + 2;
                                                   >> 9476          IOUNSTABLE = 1;
                                                   >> 9477 
                                                   >> 9478          unstable_tke(8.0,6.0,7.0,5.0,
                                                   >> 9479          VX,VY,VZ,
                                                   >> 9480          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9481          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9482          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9483          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9484          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9485          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9486          *ILOOP = *ILOOP + 1;
                                                   >> 9487          VX = *VP1X;
                                                   >> 9488          VY = *VP1Y;
                                                   >> 9489          VZ = *VP1Z;
                                                   >> 9490 
                                                   >> 9491          unstable_tke(7.0,5.0,6.0,4.0,
                                                   >> 9492          VX,VY,VZ,
                                                   >> 9493          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9494          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9495          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9496          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9497          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9498          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9499          *ILOOP = *ILOOP + 1;
                                                   >> 9500          VX = *VP1X;
                                                   >> 9501          VY = *VP1Y;
                                                   >> 9502          VZ = *VP1Z;
                                                   >> 9503          }
                                                   >> 9504 
                                                   >> 9505          if((AFP==9) && (ZFP==2)){
                                                   >> 9506 // 9He -> 8He + n
                                                   >> 9507            AFP = 8;
                                                   >> 9508            ZFP = 2;
                                                   >> 9509            //NEVA = NEVA + 1;
                                                   >> 9510          IOUNSTABLE = 1;
                                                   >> 9511 
                                                   >> 9512          unstable_tke(9.0,2.0,8.0,2.0,
                                                   >> 9513          VX,VY,VZ,
                                                   >> 9514          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9515          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9516          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9517          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9518          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9519          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9520          *ILOOP = *ILOOP + 1;
                                                   >> 9521          VX = *VP1X;
                                                   >> 9522          VY = *VP1Y;
                                                   >> 9523          VZ = *VP1Z;
                                                   >> 9524          }
                                                   >> 9525 
                                                   >> 9526          if((AFP==9) && (ZFP==5)){
                                                   >> 9527 // 9B -> 4He + 4He + p  ->
                                                   >> 9528           AFP = 4;
                                                   >> 9529           ZFP = 2;
                                                   >> 9530           //PEVA = PEVA + 1;
                                                   >> 9531          IOUNSTABLE = 1;
                                                   >> 9532          unstable_tke(9.0,5.0,8.0,4.0,
                                                   >> 9533          VX,VY,VZ,
                                                   >> 9534          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9535          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9536          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9537          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9538          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9539          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9540          *ILOOP = *ILOOP + 1;
                                                   >> 9541          VX = *VP1X;
                                                   >> 9542          VY = *VP1Y;
                                                   >> 9543          VZ = *VP1Z;
                                                   >> 9544 
                                                   >> 9545          unstable_tke(8.0,4.0,4.0,2.0,
                                                   >> 9546          VX,VY,VZ,
                                                   >> 9547          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9548          BU_TAB_TEMP[*ILOOP][0] = 2.0;
                                                   >> 9549          BU_TAB_TEMP[*ILOOP][1] = 4.0;
                                                   >> 9550          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9551          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9552          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9553          *ILOOP = *ILOOP + 1;
                                                   >> 9554          VX = *VP1X;
                                                   >> 9555          VY = *VP1Y;
                                                   >> 9556          VZ = *VP1Z;
                                                   >> 9557          }
                                                   >> 9558 
                                                   >> 9559          if((AFP==10) && (ZFP==2)){
                                                   >> 9560 // 10He -> 8He + 2n
                                                   >> 9561            AFP = 8;
                                                   >> 9562            ZFP = 2;
                                                   >> 9563            //NEVA = NEVA + 2;
                                                   >> 9564          IOUNSTABLE = 1;
                                                   >> 9565 // 10He -> 9He + n
                                                   >> 9566          unstable_tke(10.0,2.0,9.0,2.0,
                                                   >> 9567          VX,VY,VZ,
                                                   >> 9568          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9569          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9570          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9571          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9572          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9573          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9574          *ILOOP = *ILOOP + 1;
                                                   >> 9575          VX = *VP1X;
                                                   >> 9576          VY = *VP1Y;
                                                   >> 9577          VZ = *VP1Z;
                                                   >> 9578 
                                                   >> 9579 // 9He -> 8He + n
                                                   >> 9580          unstable_tke(9.0,2.0,8.0,2.0,
                                                   >> 9581          VX,VY,VZ,
                                                   >> 9582          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9583          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9584          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9585          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9586          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9587          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9588          *ILOOP = *ILOOP + 1;
                                                   >> 9589          VX = *VP1X;
                                                   >> 9590          VY = *VP1Y;
                                                   >> 9591          VZ = *VP1Z;
                                                   >> 9592          }
                                                   >> 9593          if ((AFP==10) && (ZFP==3)){
                                                   >> 9594 // 10Li -> 9Li + n  ->
                                                   >> 9595           AFP = 9;
                                                   >> 9596           ZFP = 3;
                                                   >> 9597           //NEVA = NEVA + 1;
                                                   >> 9598          IOUNSTABLE = 1;
                                                   >> 9599          unstable_tke(10.0,3.0,9.0,3.0,
                                                   >> 9600          VX,VY,VZ,
                                                   >> 9601          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9602          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9603          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9604          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9605          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9606          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9607          *ILOOP = *ILOOP + 1;
                                                   >> 9608          VX = *VP1X;
                                                   >> 9609          VY = *VP1Y;
                                                   >> 9610          VZ = *VP1Z;
                                                   >> 9611          }
                                                   >> 9612          if ((AFP==10) && (ZFP==7)){
                                                   >> 9613 // 10N -> 9C + p  ->
                                                   >> 9614           AFP = 9;
                                                   >> 9615           ZFP = 6;
                                                   >> 9616           //PEVA = PEVA + 1;
                                                   >> 9617          IOUNSTABLE = 1;
                                                   >> 9618          unstable_tke(10.0,7.0,9.0,6.0,
                                                   >> 9619          VX,VY,VZ,
                                                   >> 9620          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9621          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9622          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9623          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9624          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9625          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9626          *ILOOP = *ILOOP + 1;
                                                   >> 9627          VX = *VP1X;
                                                   >> 9628          VY = *VP1Y;
                                                   >> 9629          VZ = *VP1Z;
                                                   >> 9630          }
                                                   >> 9631 
                                                   >> 9632          if((AFP==11) && (ZFP==7)){
                                                   >> 9633 // 11N -> 10C + p  ->
                                                   >> 9634           AFP = 10;
                                                   >> 9635           ZFP = 6;
                                                   >> 9636           //PEVA = PEVA + 1;
                                                   >> 9637          IOUNSTABLE = 1;
                                                   >> 9638          unstable_tke(11.0,7.0,10.0,6.0,
                                                   >> 9639          VX,VY,VZ,
                                                   >> 9640          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9641          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9642          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9643          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9644          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9645          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9646          *ILOOP = *ILOOP + 1;
                                                   >> 9647          VX = *VP1X;
                                                   >> 9648          VY = *VP1Y;
                                                   >> 9649          VZ = *VP1Z;
                                                   >> 9650          }
                                                   >> 9651          if ((AFP==12) && (ZFP==8)){
                                                   >> 9652 // 12O -> 10C + 2p  ->
                                                   >> 9653           AFP = 10;
                                                   >> 9654           ZFP = 6;
                                                   >> 9655           //PEVA = PEVA + 2;
                                                   >> 9656          IOUNSTABLE = 1;
                                                   >> 9657 
                                                   >> 9658          unstable_tke(12.0,8.0,11.0,7.0,
                                                   >> 9659          VX,VY,VZ,
                                                   >> 9660          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9661          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9662          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9663          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9664          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9665          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9666          *ILOOP = *ILOOP + 1;
                                                   >> 9667          VX = *VP1X;
                                                   >> 9668          VY = *VP1Y;
                                                   >> 9669          VZ = *VP1Z;
                                                   >> 9670 
                                                   >> 9671          unstable_tke(11.0,7.0,10.0,6.0,
                                                   >> 9672          VX,VY,VZ,
                                                   >> 9673          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9674          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9675          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9676          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9677          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9678          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9679          *ILOOP = *ILOOP + 1;
                                                   >> 9680          VX = *VP1X;
                                                   >> 9681          VY = *VP1Y;
                                                   >> 9682          VZ = *VP1Z;
                                                   >> 9683          }
                                                   >> 9684          if ((AFP==15) && (ZFP==9)){
                                                   >> 9685 // 15F -> 14O + p  ->
                                                   >> 9686           AFP = 14;
                                                   >> 9687           ZFP = 8;
                                                   >> 9688           //PEVA = PEVA + 1;
                                                   >> 9689          IOUNSTABLE = 1;
                                                   >> 9690          unstable_tke(15.0,9.0,14.0,8.0,
                                                   >> 9691          VX,VY,VZ,
                                                   >> 9692          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9693          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9694          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9695          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9696          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9697          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9698          *ILOOP = *ILOOP + 1;
                                                   >> 9699          VX = *VP1X;
                                                   >> 9700          VY = *VP1Y;
                                                   >> 9701          VZ = *VP1Z;
                                                   >> 9702          }
                                                   >> 9703 
                                                   >> 9704          if ((AFP==16) && (ZFP==9)){
                                                   >> 9705 // 16F -> 15O + p  ->
                                                   >> 9706           AFP = 15;
                                                   >> 9707           ZFP = 8;
                                                   >> 9708           //PEVA = PEVA + 1;
                                                   >> 9709          IOUNSTABLE = 1;
                                                   >> 9710          unstable_tke(16.0,9.0,15.0,8.0,
                                                   >> 9711          VX,VY,VZ,
                                                   >> 9712          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9713          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9714          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9715          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9716          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9717          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9718          *ILOOP = *ILOOP + 1;
                                                   >> 9719          VX = *VP1X;
                                                   >> 9720          VY = *VP1Y;
                                                   >> 9721          VZ = *VP1Z;
                                                   >> 9722          }
                                                   >> 9723 
                                                   >> 9724          if ((AFP==16) && (ZFP==10)){
                                                   >> 9725 // 16Ne -> 14O + 2p  ->
                                                   >> 9726           AFP = 14;
                                                   >> 9727           ZFP = 8;
                                                   >> 9728           //PEVA = PEVA + 2;
                                                   >> 9729          IOUNSTABLE = 1;
                                                   >> 9730          unstable_tke(16.0,10.0,15.0,9.0,
                                                   >> 9731          VX,VY,VZ,
                                                   >> 9732          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9733          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9734          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9735          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9736          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9737          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9738          *ILOOP = *ILOOP + 1;
                                                   >> 9739          VX = *VP1X;
                                                   >> 9740          VY = *VP1Y;
                                                   >> 9741          VZ = *VP1Z;
                                                   >> 9742 
                                                   >> 9743          unstable_tke(15.0,9.0,14.0,8.0,
                                                   >> 9744          VX,VY,VZ,
                                                   >> 9745          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9746          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9747          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9748          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9749          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9750          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9751          *ILOOP = *ILOOP + 1;
                                                   >> 9752          VX = *VP1X;
                                                   >> 9753          VY = *VP1Y;
                                                   >> 9754          VZ = *VP1Z;
                                                   >> 9755          }
                                                   >> 9756          if((AFP==18) && (ZFP==11)){
                                                   >> 9757 // 18Na -> 17Ne + p  ->
                                                   >> 9758           AFP = 17;
                                                   >> 9759           ZFP = 10;
                                                   >> 9760           //PEVA = PEVA + 1;
                                                   >> 9761          IOUNSTABLE = 1;
                                                   >> 9762          unstable_tke(18.0,11.0,17.0,10.0,
                                                   >> 9763          VX,VY,VZ,
                                                   >> 9764          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9765          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9766          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9767          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9768          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9769          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9770          *ILOOP = *ILOOP + 1;
                                                   >> 9771          VX = *VP1X;
                                                   >> 9772          VY = *VP1Y;
                                                   >> 9773          VZ = *VP1Z;
                                                   >> 9774          }
                                                   >> 9775          if((AFP==19) && (ZFP==11)){
                                                   >> 9776 // 19Na -> 18Ne + p  ->
                                                   >> 9777          AFP = 18;
                                                   >> 9778          ZFP = 10;
                                                   >> 9779          //PEVA = PEVA + 1;
                                                   >> 9780          IOUNSTABLE = 1;
                                                   >> 9781          unstable_tke(19.0,11.0,18.0,10.0,
                                                   >> 9782          VX,VY,VZ,
                                                   >> 9783          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9784          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9785          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9786          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9787          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9788          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9789          *ILOOP = *ILOOP + 1;
                                                   >> 9790          VX = *VP1X;
                                                   >> 9791          VY = *VP1Y;
                                                   >> 9792          VZ = *VP1Z;
                                                   >> 9793          }
                                                   >> 9794          if (ZFP>=4 && (AFP-ZFP)==1){
                                                   >> 9795 // Heavy residue is treated as 3He
                                                   >> 9796            NEVA = AFP - 3;
                                                   >> 9797            PEVA = ZFP - 2;
                                                   >> 9798 
                                                   >> 9799          for(G4int I = 0;I< NEVA;I++){
                                                   >> 9800         unstable_tke(G4double(AFP-I),G4double(ZFP),
                                                   >> 9801          G4double(AFP-I-1),G4double(ZFP),
                                                   >> 9802          VX,VY,VZ,
                                                   >> 9803          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9804          BU_TAB_TEMP[*ILOOP][0] = 0.0;
                                                   >> 9805          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9806          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9807          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9808          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9809          *ILOOP = *ILOOP + 1;
                                                   >> 9810          VX = *VP1X;
                                                   >> 9811          VY = *VP1Y;
                                                   >> 9812          VZ = *VP1Z;
                                                   >> 9813          }
                                                   >> 9814         for( G4int I = 0;I<PEVA;I++){
                                                   >> 9815         unstable_tke(G4double(AFP-NEVA-I),G4double(ZFP-I),
                                                   >> 9816          G4double(AFP-NEVA-I-1),G4double(ZFP-I-1),
                                                   >> 9817          VX,VY,VZ,
                                                   >> 9818          &(*VP1X),&(*VP1Y),&(*VP1Z),&VP2X,&VP2Y,&VP2Z);
                                                   >> 9819          BU_TAB_TEMP[*ILOOP][0] = 1.0;
                                                   >> 9820          BU_TAB_TEMP[*ILOOP][1] = 1.0;
                                                   >> 9821          BU_TAB_TEMP[*ILOOP][2] = VP2X;
                                                   >> 9822          BU_TAB_TEMP[*ILOOP][3] = VP2Y;
                                                   >> 9823          BU_TAB_TEMP[*ILOOP][4] = VP2Z;
                                                   >> 9824          *ILOOP = *ILOOP + 1;
                                                   >> 9825          VX = *VP1X;
                                                   >> 9826          VY = *VP1Y;
                                                   >> 9827          VZ = *VP1Z;
                                                   >> 9828          }
                                                   >> 9829 
                                                   >> 9830          AFP = 3;
                                                   >> 9831          ZFP = 2;
                                                   >> 9832          IOUNSTABLE = 1;
                                                   >> 9833          }
                                                   >> 9834 //
                                                   >> 9835       *AFPNEW = AFP;
                                                   >> 9836       *ZFPNEW = ZFP;
                                                   >> 9837       return;
11708 }                                               9838 }
11709                                                 9839 
11710 //                                              9840 //
11711 //                                              9841 //
11712 void G4Abla::unstable_tke(G4double ain,      << 9842 void G4Abla::unstable_tke(G4double ain,G4double zin,G4double anew,G4double znew,G4double vxin,G4double vyin,G4double vzin,G4double *v1x,G4double *v1y,G4double *v1z,G4double *v2x,G4double *v2y,G4double *v2z){
11713                           G4double zin,      << 9843 //
11714                           G4double anew,     << 9844       G4double EKIN_P1=0.,ekin_tot=0.;
11715                           G4double znew,     << 9845       G4double PX1,PX2,PY1,PY2,PZ1,PZ2,PTOT;
11716                           G4double vxin,     << 9846       G4double RNDT,CTET1,STET1,RNDP,PHI1,ETOT_P1,ETOT_P2;
11717                           G4double vyin,     << 9847       G4double MASS,MASS1,MASS2;
11718                           G4double vzin,     << 9848       G4double vxout=0.,vyout=0.,vzout=0.;
11719                           G4double* v1x,     << 9849       G4int iain,izin,ianew,iznew,inin,innew;
11720                           G4double* v1y,     << 9850 //
11721                           G4double* v1z,     << 9851       G4double C = 29.97924580;//         cm/ns
11722                           G4double* v2x,     << 9852       G4double AMU = 931.4940; //         MeV/C^2
11723                           G4double* v2y,     << 9853 //
11724                           G4double* v2z)     << 9854       iain = idnint(ain);
11725 {                                            << 9855       izin = idnint(zin);
11726     //                                       << 9856       inin = iain - izin;
11727     G4double EKIN_P1 = 0., ekin_tot = 0.;    << 9857       ianew = idnint(anew);
11728     G4double PX1, PX2, PY1, PY2, PZ1, PZ2, P << 9858       iznew = idnint(znew);
11729     G4double RNDT, CTET1, STET1, RNDP, PHI1, << 9859       innew = ianew - iznew;
11730     G4double MASS, MASS1, MASS2;             << 9860 //
11731     G4double vxout = 0., vyout = 0., vzout = << 9861       if(izin>12){
11732     G4int iain, izin, ianew, iznew, inin, in << 9862       mglms(ain,zin,3,&MASS);
11733     //                                       << 9863       mglms(anew,znew,3,&MASS1);
11734     G4double C = 29.97924580; //         cm/ << 9864       mglms(ain-anew,zin-znew,3,&MASS2);
11735     G4double AMU = 931.4940;  //         MeV << 9865       ekin_tot = MASS-MASS1-MASS2;
11736                               //             << 9866       }else{
11737     iain = idnint(ain);                      << 9867     //  ekin_tot = MEXP(ININ,IZIN)-(MEXP(INNEW,IZNEW)+MEXP(ININ-INNEW,IZIN-IZNEW));
11738     izin = idnint(zin);                      << 9868       ekin_tot = masses->massexp[inin][izin]-(masses->massexp[innew][iznew]+masses->massexp[inin-innew][izin-iznew]);
11739     inin = iain - izin;                      << 9869       if(izin>12)std::cout << "*** ZIN > 12 ***" << izin << std::endl;
11740     ianew = idnint(anew);                    << 9870       }
11741     iznew = idnint(znew);                    << 9871 
11742     innew = ianew - iznew;                   << 9872       if( ekin_tot<0.00 ){
11743     //                                       << 9873 //         if( iain.ne.izin .and. izin.ne.0 ){
11744     if (ain == 0)                            << 9874 //            print *,"Negative Q-value in UNSTABLE_TKE"
11745         return;                              << 9875 //            print *,"ekin_tot=",ekin_tot
11746     //                                       << 9876 //            print *,"ain,zin=",ain,zin,MEXP(ININ,IZIN)
11747     if (izin > 12)                           << 9877 //            print *,"anew,znew=",anew,znew,MEXP(INNEW,IZNEW)
11748     {                                        << 9878 //            print *
11749         mglms(ain, zin, 3, &MASS);           << 9879 //          }
11750         mglms(anew, znew, 3, &MASS1);        << 9880         ekin_tot=0.0;
11751         mglms(ain - anew, zin - znew, 3, &MA << 9881       }
11752         ekin_tot = MASS - MASS1 - MASS2;     << 9882 //
11753     }                                        << 9883       EKIN_P1 = ekin_tot*(ain-anew)/ ain;
11754     else                                     << 9884       ETOT_P1 = EKIN_P1 + anew * AMU;
11755     {                                        << 9885       PTOT = anew*AMU*std::sqrt((EKIN_P1/(anew*AMU)+1.0)*(EKIN_P1/(anew*AMU)+1.0)-1.0);  // MeV/C
11756         //  ekin_tot =                       << 9886 //
11757         //  MEXP(ININ,IZIN)-(MEXP(INNEW,IZNE << 9887       RNDT = G4AblaRandom::flat();
11758         ekin_tot =                           << 9888       CTET1 = 2.0*RNDT-1.0;
11759             masses->massexp[inin][izin] - (m << 9889       STET1 = std::sqrt(1.0-CTET1*CTET1);
11760         if (izin > 12)                       << 9890       RNDP = G4AblaRandom::flat();
11761             std::cout << "*** ZIN > 12 ***"  << 9891       PHI1 = RNDP*2.0*3.141592654;
11762     }                                        << 9892       PX1 = PTOT * STET1*std::cos(PHI1);
11763                                              << 9893       PY1 = PTOT * STET1*std::sin(PHI1);
11764     if (ekin_tot < 0.00)                     << 9894       PZ1 = PTOT * CTET1;
11765     {                                        << 9895       *v1x = C * PX1 / ETOT_P1;
11766         //         if( iain.ne.izin .and. iz << 9896       *v1y = C * PY1 / ETOT_P1;
11767         //            print *,"Negative Q-va << 9897       *v1z = C * PZ1 / ETOT_P1;
11768         //            print *,"ekin_tot=",ek << 9898       lorentz_boost(vxin,vyin,vzin,*v1x,*v1y,*v1z,&vxout,&vyout,&vzout);
11769         //            print *,"ain,zin=",ain << 9899       *v1x = vxout;
11770         //            print *,"anew,znew=",a << 9900       *v1y = vyout;
11771         //            print *                << 9901       *v1z = vzout;
11772         //          }                        << 9902 //
11773         ekin_tot = 0.0;                      << 9903       PX2 = - PX1;
11774     }                                        << 9904       PY2 = - PY1;
11775     //                                       << 9905       PZ2 = - PZ1;
11776     EKIN_P1 = ekin_tot * (ain - anew) / ain; << 9906       ETOT_P2 = (ekin_tot - EKIN_P1) + (ain-anew) * AMU;
11777     ETOT_P1 = EKIN_P1 + anew * AMU;          << 9907       *v2x = C * PX2 / ETOT_P2;
11778     PTOT = anew * AMU * std::sqrt((EKIN_P1 / << 9908       *v2y = C * PY2 / ETOT_P2;
11779                                              << 9909       *v2z = C * PZ2 / ETOT_P2;
11780     RNDT = G4AblaRandom::flat();             << 9910       lorentz_boost(vxin,vyin,vzin,*v2x,*v2y,*v2z,&vxout,&vyout,&vzout);
11781     CTET1 = 2.0 * RNDT - 1.0;                << 9911       *v2x = vxout;
11782     STET1 = std::sqrt(1.0 - CTET1 * CTET1);  << 9912       *v2y = vyout;
11783     RNDP = G4AblaRandom::flat();             << 9913       *v2z = vzout;
11784     PHI1 = RNDP * 2.0 * 3.141592654;         << 9914 //
11785     PX1 = PTOT * STET1 * std::cos(PHI1);     << 9915    return;
11786     PY1 = PTOT * STET1 * std::sin(PHI1);     << 
11787     PZ1 = PTOT * CTET1;                      << 
11788     *v1x = C * PX1 / ETOT_P1;                << 
11789     *v1y = C * PY1 / ETOT_P1;                << 
11790     *v1z = C * PZ1 / ETOT_P1;                << 
11791     lorentz_boost(vxin, vyin, vzin, *v1x, *v << 
11792     *v1x = vxout;                            << 
11793     *v1y = vyout;                            << 
11794     *v1z = vzout;                            << 
11795     //                                       << 
11796     PX2 = -PX1;                              << 
11797     PY2 = -PY1;                              << 
11798     PZ2 = -PZ1;                              << 
11799     ETOT_P2 = (ekin_tot - EKIN_P1) + (ain -  << 
11800     *v2x = C * PX2 / ETOT_P2;                << 
11801     *v2y = C * PY2 / ETOT_P2;                << 
11802     *v2z = C * PZ2 / ETOT_P2;                << 
11803     lorentz_boost(vxin, vyin, vzin, *v2x, *v << 
11804     *v2x = vxout;                            << 
11805     *v2y = vyout;                            << 
11806     *v2z = vzout;                            << 
11807     //                                       << 
11808     return;                                  << 
11809 }                                               9916 }
11810 //                                              9917 //
11811 //******************************************    9918 //**************************************************************************
11812 //                                              9919 //
11813 void G4Abla::lorentz_boost(G4double VXRIN,   << 9920 void G4Abla::lorentz_boost(G4double VXRIN,G4double VYRIN,G4double VZRIN,G4double VXIN,G4double VYIN,G4double VZIN,G4double *VXOUT,G4double *VYOUT,G4double *VZOUT){
11814                            G4double VYRIN,   << 9921 //
11815                            G4double VZRIN,   << 9922 // Calculate velocities of a given fragment from frame 1 into frame 2.
11816                            G4double VXIN,    << 9923 // Frame 1 is moving with velocity v=(vxr,vyr,vzr) relative to frame 2.
11817                            G4double VYIN,    << 9924 // Velocity of the fragment in frame 1 -> vxin,vyin,vzin
11818                            G4double VZIN,    << 9925 // Velocity of the fragment in frame 2 -> vxout,vyout,vzout
11819                            G4double* VXOUT,  << 9926 //
11820                            G4double* VYOUT,  << 9927       G4double  VXR,VYR,VZR;
11821                            G4double* VZOUT)  << 9928       G4double  GAMMA,VR,C,CC,DENO,VXNOM,VYNOM,VZNOM;
11822 {                                            << 9929 //
11823     //                                       << 9930       C = 29.9792458;        // cm/ns
11824     // Calculate velocities of a given fragm << 9931       CC = C*C;
11825     // Frame 1 is moving with velocity v=(vx << 9932 //
11826     // Velocity of the fragment in frame 1 - << 9933 // VXR,VYR,VZR are velocities of frame 1 relative to frame 2; to go from 1 to 2
11827     // Velocity of the fragment in frame 2 - << 9934 // we need to multiply them by -1
11828     //                                       << 9935       VXR = -1.0 * VXRIN;
11829     G4double VXR, VYR, VZR;                  << 9936       VYR = -1.0 * VYRIN;
11830     G4double GAMMA, VR, C, CC, DENO, VXNOM,  << 9937       VZR = -1.0 * VZRIN;
11831     //                                       << 9938 //
11832     C = 29.9792458; // cm/ns                 << 9939       VR = std::sqrt(VXR*VXR + VYR*VYR + VZR*VZR);
11833     CC = C * C;                              << 9940       if(VR<1e-9){
11834     //                                       << 9941          *VXOUT = VXIN;
11835     // VXR,VYR,VZR are velocities of frame 1 << 9942          *VYOUT = VYIN;
11836     // 2 we need to multiply them by -1      << 9943          *VZOUT = VZIN;
11837     VXR = -1.0 * VXRIN;                      << 9944          return;
11838     VYR = -1.0 * VYRIN;                      << 9945       }
11839     VZR = -1.0 * VZRIN;                      << 9946       GAMMA = 1.0/std::sqrt(1.0 - VR*VR/CC);
11840     //                                       << 9947       DENO = 1.0 - VXR*VXIN/CC - VYR*VYIN/CC - VZR*VZIN/CC;
11841     VR = std::sqrt(VXR * VXR + VYR * VYR + V << 
11842     if (VR < 1e-9)                           << 
11843     {                                        << 
11844         *VXOUT = VXIN;                       << 
11845         *VYOUT = VYIN;                       << 
11846         *VZOUT = VZIN;                       << 
11847         return;                              << 
11848     }                                        << 
11849     GAMMA = 1.0 / std::sqrt(1.0 - VR * VR /  << 
11850     DENO = 1.0 - VXR * VXIN / CC - VYR * VYI << 
11851                                              << 
11852     // X component                           << 
11853     VXNOM = -GAMMA * VXR + (1.0 + (GAMMA - 1 << 
11854             (GAMMA - 1.0) * VXR * VYR / (VR  << 
11855                                              << 
11856     *VXOUT = VXNOM / (GAMMA * DENO);         << 
11857                                                 9948 
11858     // Y component                           << 9949 // X component
11859     VYNOM = -GAMMA * VYR + (1.0 + (GAMMA - 1 << 9950       VXNOM = -GAMMA*VXR + (1.0+(GAMMA-1.0)*VXR*VXR/(VR*VR))*VXIN + (GAMMA-1.0)*VXR*VYR/(VR*VR)*VYIN + (GAMMA-1.0)*VXR*VZR/(VR*VR)*VZIN;
11860             (GAMMA - 1.0) * VXR * VYR / (VR  << 
11861                                                 9951 
11862     *VYOUT = VYNOM / (GAMMA * DENO);         << 9952       *VXOUT = VXNOM / (GAMMA * DENO);
11863                                                 9953 
11864     // Z component                           << 9954 // Y component
11865     VZNOM = -GAMMA * VZR + (1.0 + (GAMMA - 1 << 9955       VYNOM = -GAMMA*VYR + (1.0+(GAMMA-1.0)*VYR*VYR/(VR*VR))*VYIN + (GAMMA-1.0)*VXR*VYR/(VR*VR)*VXIN + (GAMMA-1.0)*VYR*VZR/(VR*VR)*VZIN;
11866             (GAMMA - 1.0) * VXR * VZR / (VR  << 9956 
                                                   >> 9957       *VYOUT = VYNOM / (GAMMA * DENO);
                                                   >> 9958 
                                                   >> 9959 // Z component
                                                   >> 9960       VZNOM = -GAMMA*VZR + (1.0+(GAMMA-1.0)*VZR*VZR/(VR*VR))*VZIN + (GAMMA-1.0)*VXR*VZR/(VR*VR)*VXIN + (GAMMA-1.0)*VYR*VZR/(VR*VR)*VYIN;
                                                   >> 9961 
                                                   >> 9962       *VZOUT = VZNOM / (GAMMA * DENO);
                                                   >> 9963 
                                                   >> 9964      return;
                                                   >> 9965 }
                                                   >> 9966 
                                                   >> 9967 void G4Abla::fission(G4double AF,G4double ZF,G4double EE,G4double JPRF,
                                                   >> 9968         G4double *VX1_FISSION_par,G4double *VY1_FISSION_par,G4double *VZ1_FISSION_par,
                                                   >> 9969         G4double *VX2_FISSION_par,G4double *VY2_FISSION_par,G4double *VZ2_FISSION_par,
                                                   >> 9970         G4int *ZFP1,G4int *AFP1,G4int *SFP1, G4int *ZFP2,G4int *AFP2,G4int *SFP2,G4int *imode_par, 
                                                   >> 9971         G4double *VX_EVA_SC_par, G4double *VY_EVA_SC_par, G4double *VZ_EVA_SC_par,
                                                   >> 9972         G4double EV_TEMP[200][6],G4int *IEV_TAB_FIS_par, G4int *NbLam0_par){
                                                   >> 9973 ///
                                                   >> 9974        G4double EFF1=0.,EFF2=0.,VFF1=0.,VFF2=0.,
                                                   >> 9975                  AF1=0.,ZF1=0.,AF2=0.,ZF2=0.,
                                                   >> 9976                  AFF1=0.,ZFF1=0.,AFF2=0.,ZFF2=0.,
                                                   >> 9977                  vz1_eva=0., vx1_eva=0.,vy1_eva=0.,
                                                   >> 9978                  vz2_eva=0., vx2_eva=0.,vy2_eva=0.,
                                                   >> 9979                  vx_eva_sc=0.,vy_eva_sc=0.,vz_eva_sc=0.,
                                                   >> 9980                  VXOUT=0.,VYOUT=0.,VZOUT=0.,
                                                   >> 9981                  VX2OUT=0.,VY2OUT=0.,VZ2OUT=0.;
                                                   >> 9982        G4int IEV_TAB_FIS=0,IEV_TAB_TEMP=0;
                                                   >> 9983        G4double EV_TEMP1[200][6], EV_TEMP2[200][6],mtota=0.;
                                                   >> 9984        G4int inttype = 0,inum=0;
                                                   >> 9985        IEV_TAB_SSC=0;
                                                   >> 9986        (*imode_par)=0;
                                                   >> 9987        G4int NbLam0= (*NbLam0_par);
                                                   >> 9988 
                                                   >> 9989        for(G4int I1=0;I1<200;I1++)
                                                   >> 9990        for(G4int I2=0;I2<6;I2++){
                                                   >> 9991        EV_TEMP[I1][I2] = 0.0;
                                                   >> 9992        EV_TEMP1[I1][I2] = 0.0;
                                                   >> 9993        EV_TEMP2[I1][I2] = 0.0;
                                                   >> 9994        }
                                                   >> 9995 
                                                   >> 9996        G4double et = EE - JPRF * JPRF * 197. * 197./(2.*0.4*931.*std::pow(AF,5.0/3.0)*1.16*1.16);
                                                   >> 9997 
                                                   >> 9998        fissionDistri(AF,ZF,et,AF1,ZF1,EFF1,VFF1,AF2,ZF2,EFF2,VFF2,
                                                   >> 9999                      vx_eva_sc,vy_eva_sc,vz_eva_sc,&NbLam0);
                                                   >> 10000 
                                                   >> 10001 //  Lambda particles 
                                                   >> 10002       G4int NbLam1=0;
                                                   >> 10003       G4int NbLam2=0;
                                                   >> 10004       G4double pbH = (AF1 - ZF1) / (AF1 - ZF1 + AF2 - ZF2);  
                                                   >> 10005       for(G4int i=0;i<NbLam0;i++){
                                                   >> 10006        if(G4AblaRandom::flat()<pbH){
                                                   >> 10007         NbLam1++;
                                                   >> 10008        }else{
                                                   >> 10009         NbLam2++;
                                                   >> 10010        }
                                                   >> 10011       }
                                                   >> 10012 //     Copy of the evaporated particles from saddle to scission
                                                   >> 10013        for(G4int IJ = 0; IJ< IEV_TAB_SSC;IJ++){
                                                   >> 10014              EV_TEMP[IJ][0] = EV_TAB_SSC[IJ][0];
                                                   >> 10015              EV_TEMP[IJ][1] = EV_TAB_SSC[IJ][1];
                                                   >> 10016              EV_TEMP[IJ][2] = EV_TAB_SSC[IJ][2];
                                                   >> 10017              EV_TEMP[IJ][3] = EV_TAB_SSC[IJ][3];
                                                   >> 10018              EV_TEMP[IJ][4] = EV_TAB_SSC[IJ][4];
                                                   >> 10019              EV_TEMP[IJ][5] = EV_TAB_SSC[IJ][5];
                                                   >> 10020        }
                                                   >> 10021        IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_SSC;
                                                   >> 10022 
                                                   >> 10023 //    Velocities
                                                   >> 10024       G4double VZ1_FISSION = (2.0 * G4AblaRandom::flat() - 1.0) * VFF1;
                                                   >> 10025       G4double VPERP1 = std::sqrt(VFF1*VFF1 - VZ1_FISSION*VZ1_FISSION);
                                                   >> 10026       G4double ALPHA1 = G4AblaRandom::flat() * 2. * 3.142;
                                                   >> 10027       G4double VX1_FISSION = VPERP1 * std::sin(ALPHA1);
                                                   >> 10028       G4double VY1_FISSION = VPERP1 * std::cos(ALPHA1);
                                                   >> 10029       G4double VX2_FISSION = - VX1_FISSION / VFF1 * VFF2;
                                                   >> 10030       G4double VY2_FISSION = - VY1_FISSION / VFF1 * VFF2;
                                                   >> 10031       G4double VZ2_FISSION = - VZ1_FISSION / VFF1 * VFF2;
                                                   >> 10032 //
                                                   >> 10033 // Fission fragment 1
                                                   >> 10034       if( (ZF1<=0.0) || (AF1<=0.0) || (AF1<ZF1) ){
                                                   >> 10035        std::cout << "F1 unphysical: "<<ZF<< " "<<AF<< " "<<EE<< " "<<ZF1<< " "<<AF1 << std::endl;
                                                   >> 10036       }else{
                                                   >> 10037 // fission and IMF emission are not allowed
                                                   >> 10038      opt->optimfallowed = 0; //  IMF is not allowed
                                                   >> 10039      fiss->ifis = 0;         //  fission is not allowed
                                                   >> 10040      gammaemission=1;
                                                   >> 10041      G4int FF11=0, FIMF11=0;
                                                   >> 10042      G4double ZIMFF1=0., AIMFF1=0.,TKEIMF1=0.,JPRFOUT=0.;
                                                   >> 10043 //
                                                   >> 10044      evapora(ZF1,AF1,&EFF1,0., &ZFF1, &AFF1, &mtota, &vz1_eva, &vx1_eva,&vy1_eva, &FF11, &FIMF11, &ZIMFF1, &AIMFF1,&TKEIMF1, &JPRFOUT, &inttype, &inum,EV_TEMP1,&IEV_TAB_TEMP,&NbLam1);
11867                                                 10045 
11868     *VZOUT = VZNOM / (GAMMA * DENO);         << 10046                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){ 
                                                   >> 10047                EV_TEMP[IJ+IEV_TAB_FIS][0] = EV_TEMP1[IJ][0];
                                                   >> 10048                EV_TEMP[IJ+IEV_TAB_FIS][1] = EV_TEMP1[IJ][1];
                                                   >> 10049 // Lorentz kinematics
                                                   >> 10050 //               EV_TEMP(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
                                                   >> 10051 //               EV_TEMP(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
                                                   >> 10052 //               EV_TEMP(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
                                                   >> 10053 // Lorentz transformation
                                                   >> 10054                lorentz_boost(VX1_FISSION,VY1_FISSION,VZ1_FISSION,
                                                   >> 10055                 EV_TEMP1[IJ][2],EV_TEMP1[IJ][3],EV_TEMP1[IJ][4],
                                                   >> 10056                 &VXOUT,&VYOUT,&VZOUT);
                                                   >> 10057                lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
                                                   >> 10058                 VXOUT,VYOUT,VZOUT,
                                                   >> 10059                 &VX2OUT,&VY2OUT,&VZ2OUT);
                                                   >> 10060                EV_TEMP[IJ+IEV_TAB_FIS][2] = VX2OUT;
                                                   >> 10061                EV_TEMP[IJ+IEV_TAB_FIS][3] = VY2OUT;
                                                   >> 10062                EV_TEMP[IJ+IEV_TAB_FIS][4] = VZ2OUT;
                                                   >> 10063                //
                                                   >> 10064                }
                                                   >> 10065                IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_TEMP;
11869                                                 10066 
11870     return;                                  << 10067       }
11871 }                                            << 10068 //
                                                   >> 10069 // Fission fragment 2
                                                   >> 10070       if( (ZF2<=0.0) || (AF2<=0.0) || (AF2<ZF2) ){
                                                   >> 10071        std::cout << "F2 unphysical: "<<ZF<< " "<<AF<< " "<<EE<< " "<<ZF2<< " "<<AF2 << std::endl;
                                                   >> 10072       }else{
                                                   >> 10073 // fission and IMF emission are not allowed
                                                   >> 10074      opt->optimfallowed = 0; //  IMF is not allowed
                                                   >> 10075      fiss->ifis = 0;         //  fission is not allowed
                                                   >> 10076      gammaemission=1;
                                                   >> 10077      G4int FF22=0, FIMF22=0;
                                                   >> 10078      G4double ZIMFF2=0., AIMFF2=0.,TKEIMF2=0.,JPRFOUT=0.;
                                                   >> 10079 //
                                                   >> 10080      evapora(ZF2,AF2,&EFF2,0., &ZFF2, &AFF2, &mtota, &vz2_eva, &vx2_eva,&vy2_eva, &FF22, &FIMF22, &ZIMFF2, &AIMFF2,&TKEIMF2, &JPRFOUT, &inttype, &inum,EV_TEMP2,&IEV_TAB_TEMP,&NbLam2);
11872                                                 10081 
11873 void G4Abla::fission(G4double AF,            << 10082                for(G4int IJ = 0; IJ< IEV_TAB_TEMP;IJ++){
11874                      G4double ZF,            << 10083                EV_TEMP[IJ+IEV_TAB_FIS][0] = EV_TEMP2[IJ][0];
11875                      G4double EE,            << 10084                EV_TEMP[IJ+IEV_TAB_FIS][1] = EV_TEMP2[IJ][1];
11876                      G4double JPRF,          << 10085 // Lorentz kinematics
11877                      G4double* VX1_FISSION_p << 10086 //               EV_TEMP(IJ+IEV_TAB,3) = EV_TEMP(IJ,3) + VX_PREF
11878                      G4double* VY1_FISSION_p << 10087 //               EV_TEMP(IJ+IEV_TAB,4) = EV_TEMP(IJ,4) + VY_PREF
11879                      G4double* VZ1_FISSION_p << 10088 //               EV_TEMP(IJ+IEV_TAB,5) = EV_TEMP(IJ,5) + VZ_PREF
11880                      G4double* VX2_FISSION_p << 10089 // Lorentz transformation
11881                      G4double* VY2_FISSION_p << 10090                lorentz_boost(VX2_FISSION,VY2_FISSION,VZ2_FISSION,
11882                      G4double* VZ2_FISSION_p << 10091                 EV_TEMP2[IJ][2],EV_TEMP2[IJ][3],EV_TEMP2[IJ][4],
11883                      G4int* ZFP1,            << 10092                 &VXOUT,&VYOUT,&VZOUT);
11884                      G4int* AFP1,            << 10093                lorentz_boost(vx_eva_sc,vy_eva_sc,vz_eva_sc,
11885                      G4int* SFP1,            << 10094                 VXOUT,VYOUT,VZOUT,
11886                      G4int* ZFP2,            << 10095                 &VX2OUT,&VY2OUT,&VZ2OUT);
11887                      G4int* AFP2,            << 10096                EV_TEMP[IJ+IEV_TAB_FIS][2] = VX2OUT;
11888                      G4int* SFP2,            << 10097                EV_TEMP[IJ+IEV_TAB_FIS][3] = VY2OUT;
11889                      G4int* imode_par,       << 10098                EV_TEMP[IJ+IEV_TAB_FIS][4] = VZ2OUT;
11890                      G4double* VX_EVA_SC_par << 10099                //
11891                      G4double* VY_EVA_SC_par << 10100                }
11892                      G4double* VZ_EVA_SC_par << 10101                IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_TEMP;
11893                      G4double EV_TEMP[indexp << 10102       }
11894                      G4int* IEV_TAB_FIS_par, << 10103 //
11895                      G4int* NbLam0_par)      << 10104 // Lorentz kinematics 
11896 {                                            << 10105 //      vx1_fission = vx1_fission + vx1_eva
11897     ///                                      << 10106 //      vy1_fission = vy1_fission + vy1_eva
11898     G4double EFF1 = 0., EFF2 = 0., VFF1 = 0. << 10107 //      vz1_fission = vz1_fission + vz1_eva
11899              AFF2 = 0., ZFF2 = 0., vz1_eva = << 10108 //      vx2_fission = vx2_fission + vx2_eva
11900              vx_eva_sc = 0., vy_eva_sc = 0., << 10109 //      vy2_fission = vy2_fission + vy2_eva
11901              VY2OUT = 0., VZ2OUT = 0.;       << 10110 //      vz2_fission = vz2_fission + vz2_eva
11902     G4int IEV_TAB_FIS = 0, IEV_TAB_TEMP = 0; << 10111 // The v_eva_sc contribution is considered in the calling subroutine
11903     G4double EV_TEMP1[indexpart][6], EV_TEMP << 10112 // Lorentz transformations
11904     G4int inttype = 0, inum = 0;             << 10113                lorentz_boost(vx1_eva,vy1_eva,vz1_eva,
11905     IEV_TAB_SSC = 0;                         << 10114                 VX1_FISSION,VY1_FISSION,VZ1_FISSION,
11906     (*imode_par) = 0;                        << 10115                 &VXOUT,&VYOUT,&VZOUT);
11907     G4int NbLam0 = (*NbLam0_par);            << 10116                VX1_FISSION = VXOUT;
11908                                              << 10117                VY1_FISSION = VYOUT;
11909     for (G4int I1 = 0; I1 < indexpart; I1++) << 10118                VZ1_FISSION = VZOUT;
11910         for (G4int I2 = 0; I2 < 6; I2++)     << 10119                lorentz_boost(vx2_eva,vy2_eva,vz2_eva,
11911         {                                    << 10120                 VX2_FISSION,VY2_FISSION,VZ2_FISSION,
11912             EV_TEMP[I1][I2] = 0.0;           << 10121                 &VXOUT,&VYOUT,&VZOUT);
11913             EV_TEMP1[I1][I2] = 0.0;          << 10122                VX2_FISSION = VXOUT;
11914             EV_TEMP2[I1][I2] = 0.0;          << 10123                VY2_FISSION = VYOUT;
11915         }                                    << 10124                VZ2_FISSION = VZOUT;
11916                                              << 10125 //
11917     G4double et = EE - JPRF * JPRF * 197. *  << 10126  (*ZFP1) = idnint(ZFF1);
11918                                              << 10127  (*AFP1) = idnint(AFF1);
11919     fissionDistri(AF, ZF, et, AF1, ZF1, EFF1 << 10128  (*SFP1) = NbLam1;
11920                                              << 10129  (*VX1_FISSION_par) = VX1_FISSION;
11921     //  Lambda particles                     << 10130  (*VY1_FISSION_par) = VY1_FISSION;
11922     G4int NbLam1 = 0;                        << 10131  (*VZ1_FISSION_par) = VZ1_FISSION;
11923     G4int NbLam2 = 0;                        << 10132  (*VX_EVA_SC_par)=vx_eva_sc;
11924     G4double pbH = (AF1 - ZF1) / (AF1 - ZF1  << 10133  (*VY_EVA_SC_par)=vy_eva_sc;
11925     for (G4int i = 0; i < NbLam0; i++)       << 10134  (*VZ_EVA_SC_par)=vz_eva_sc;
11926     {                                        << 10135  (*ZFP2) = idnint(ZFF2);
11927         if (G4AblaRandom::flat() < pbH)      << 10136  (*AFP2) = idnint(AFF2);
11928         {                                    << 10137  (*SFP2) = NbLam2;
11929             NbLam1++;                        << 10138  (*VX2_FISSION_par) = VX2_FISSION;
11930         }                                    << 10139  (*VY2_FISSION_par) = VY2_FISSION;
11931         else                                 << 10140  (*VZ2_FISSION_par) = VZ2_FISSION;
11932         {                                    << 10141  (*IEV_TAB_FIS_par) = IEV_TAB_FIS;
11933             NbLam2++;                        << 10142  (*NbLam0_par) = NbLam1 + NbLam2;
11934         }                                    << 10143  if(NbLam0>(NbLam1 + NbLam2))varntp->kfis = 25;
11935     }                                        << 10144  return;
11936     //     Copy of the evaporated particles  << 
11937     for (G4int IJ = 0; IJ < IEV_TAB_SSC; IJ+ << 
11938     {                                        << 
11939         EV_TEMP[IJ][0] = EV_TAB_SSC[IJ][0];  << 
11940         EV_TEMP[IJ][1] = EV_TAB_SSC[IJ][1];  << 
11941         EV_TEMP[IJ][2] = EV_TAB_SSC[IJ][2];  << 
11942         EV_TEMP[IJ][3] = EV_TAB_SSC[IJ][3];  << 
11943         EV_TEMP[IJ][4] = EV_TAB_SSC[IJ][4];  << 
11944         EV_TEMP[IJ][5] = EV_TAB_SSC[IJ][5];  << 
11945     }                                        << 
11946     IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_SSC; << 
11947                                              << 
11948     //    Velocities                         << 
11949     G4double VZ1_FISSION = (2.0 * G4AblaRand << 
11950     G4double VPERP1 = std::sqrt(VFF1 * VFF1  << 
11951     G4double ALPHA1 = G4AblaRandom::flat() * << 
11952     G4double VX1_FISSION = VPERP1 * std::sin << 
11953     G4double VY1_FISSION = VPERP1 * std::cos << 
11954     G4double VX2_FISSION = -VX1_FISSION / VF << 
11955     G4double VY2_FISSION = -VY1_FISSION / VF << 
11956     G4double VZ2_FISSION = -VZ1_FISSION / VF << 
11957     //                                       << 
11958     // Fission fragment 1                    << 
11959     if ((ZF1 <= 0.0) || (AF1 <= 0.0) || (AF1 << 
11960     {                                        << 
11961         std::cout << "F1 unphysical: " << ZF << 
11962     }                                        << 
11963     else                                     << 
11964     {                                        << 
11965         // fission and IMF emission are not  << 
11966         opt->optimfallowed = 0; //  IMF is n << 
11967         fiss->ifis = 0;         //  fission  << 
11968         gammaemission = 1;                   << 
11969         G4int FF11 = 0, FIMF11 = 0;          << 
11970         G4double ZIMFF1 = 0., AIMFF1 = 0., T << 
11971         //                                   << 
11972         evapora(ZF1,                         << 
11973                 AF1,                         << 
11974                 &EFF1,                       << 
11975                 0.,                          << 
11976                 &ZFF1,                       << 
11977                 &AFF1,                       << 
11978                 &mtota,                      << 
11979                 &vz1_eva,                    << 
11980                 &vx1_eva,                    << 
11981                 &vy1_eva,                    << 
11982                 &FF11,                       << 
11983                 &FIMF11,                     << 
11984                 &ZIMFF1,                     << 
11985                 &AIMFF1,                     << 
11986                 &TKEIMF1,                    << 
11987                 &JPRFOUT,                    << 
11988                 &inttype,                    << 
11989                 &inum,                       << 
11990                 EV_TEMP1,                    << 
11991                 &IEV_TAB_TEMP,               << 
11992                 &NbLam1);                    << 
11993                                              << 
11994         for (G4int IJ = 0; IJ < IEV_TAB_TEMP << 
11995         {                                    << 
11996             EV_TEMP[IJ + IEV_TAB_FIS][0] = E << 
11997             EV_TEMP[IJ + IEV_TAB_FIS][1] = E << 
11998             // Lorentz kinematics            << 
11999             //               EV_TEMP(IJ+IEV_ << 
12000             //               EV_TEMP(IJ+IEV_ << 
12001             //               EV_TEMP(IJ+IEV_ << 
12002             // Lorentz transformation        << 
12003             lorentz_boost(VX1_FISSION,       << 
12004                           VY1_FISSION,       << 
12005                           VZ1_FISSION,       << 
12006                           EV_TEMP1[IJ][2],   << 
12007                           EV_TEMP1[IJ][3],   << 
12008                           EV_TEMP1[IJ][4],   << 
12009                           &VXOUT,            << 
12010                           &VYOUT,            << 
12011                           &VZOUT);           << 
12012             lorentz_boost(vx_eva_sc, vy_eva_ << 
12013             EV_TEMP[IJ + IEV_TAB_FIS][2] = V << 
12014             EV_TEMP[IJ + IEV_TAB_FIS][3] = V << 
12015             EV_TEMP[IJ + IEV_TAB_FIS][4] = V << 
12016             //                               << 
12017         }                                    << 
12018         IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_ << 
12019     }                                        << 
12020     //                                       << 
12021     // Fission fragment 2                    << 
12022     if ((ZF2 <= 0.0) || (AF2 <= 0.0) || (AF2 << 
12023     {                                        << 
12024         std::cout << "F2 unphysical: " << ZF << 
12025     }                                        << 
12026     else                                     << 
12027     {                                        << 
12028         // fission and IMF emission are not  << 
12029         opt->optimfallowed = 0; //  IMF is n << 
12030         fiss->ifis = 0;         //  fission  << 
12031         gammaemission = 1;                   << 
12032         G4int FF22 = 0, FIMF22 = 0;          << 
12033         G4double ZIMFF2 = 0., AIMFF2 = 0., T << 
12034         //                                   << 
12035         evapora(ZF2,                         << 
12036                 AF2,                         << 
12037                 &EFF2,                       << 
12038                 0.,                          << 
12039                 &ZFF2,                       << 
12040                 &AFF2,                       << 
12041                 &mtota,                      << 
12042                 &vz2_eva,                    << 
12043                 &vx2_eva,                    << 
12044                 &vy2_eva,                    << 
12045                 &FF22,                       << 
12046                 &FIMF22,                     << 
12047                 &ZIMFF2,                     << 
12048                 &AIMFF2,                     << 
12049                 &TKEIMF2,                    << 
12050                 &JPRFOUT,                    << 
12051                 &inttype,                    << 
12052                 &inum,                       << 
12053                 EV_TEMP2,                    << 
12054                 &IEV_TAB_TEMP,               << 
12055                 &NbLam2);                    << 
12056                                              << 
12057         for (G4int IJ = 0; IJ < IEV_TAB_TEMP << 
12058         {                                    << 
12059             EV_TEMP[IJ + IEV_TAB_FIS][0] = E << 
12060             EV_TEMP[IJ + IEV_TAB_FIS][1] = E << 
12061             // Lorentz kinematics            << 
12062             //               EV_TEMP(IJ+IEV_ << 
12063             //               EV_TEMP(IJ+IEV_ << 
12064             //               EV_TEMP(IJ+IEV_ << 
12065             // Lorentz transformation        << 
12066             lorentz_boost(VX2_FISSION,       << 
12067                           VY2_FISSION,       << 
12068                           VZ2_FISSION,       << 
12069                           EV_TEMP2[IJ][2],   << 
12070                           EV_TEMP2[IJ][3],   << 
12071                           EV_TEMP2[IJ][4],   << 
12072                           &VXOUT,            << 
12073                           &VYOUT,            << 
12074                           &VZOUT);           << 
12075             lorentz_boost(vx_eva_sc, vy_eva_ << 
12076             EV_TEMP[IJ + IEV_TAB_FIS][2] = V << 
12077             EV_TEMP[IJ + IEV_TAB_FIS][3] = V << 
12078             EV_TEMP[IJ + IEV_TAB_FIS][4] = V << 
12079             //                               << 
12080         }                                    << 
12081         IEV_TAB_FIS = IEV_TAB_FIS + IEV_TAB_ << 
12082     }                                        << 
12083     //                                       << 
12084     // Lorentz kinematics                    << 
12085     //      vx1_fission = vx1_fission + vx1_ << 
12086     //      vy1_fission = vy1_fission + vy1_ << 
12087     //      vz1_fission = vz1_fission + vz1_ << 
12088     //      vx2_fission = vx2_fission + vx2_ << 
12089     //      vy2_fission = vy2_fission + vy2_ << 
12090     //      vz2_fission = vz2_fission + vz2_ << 
12091     // The v_eva_sc contribution is consider << 
12092     // Lorentz transformations               << 
12093     lorentz_boost(vx1_eva, vy1_eva, vz1_eva, << 
12094     VX1_FISSION = VXOUT;                     << 
12095     VY1_FISSION = VYOUT;                     << 
12096     VZ1_FISSION = VZOUT;                     << 
12097     lorentz_boost(vx2_eva, vy2_eva, vz2_eva, << 
12098     VX2_FISSION = VXOUT;                     << 
12099     VY2_FISSION = VYOUT;                     << 
12100     VZ2_FISSION = VZOUT;                     << 
12101     //                                       << 
12102     (*ZFP1) = idnint(ZFF1);                  << 
12103     (*AFP1) = idnint(AFF1);                  << 
12104     (*SFP1) = NbLam1;                        << 
12105     (*VX1_FISSION_par) = VX1_FISSION;        << 
12106     (*VY1_FISSION_par) = VY1_FISSION;        << 
12107     (*VZ1_FISSION_par) = VZ1_FISSION;        << 
12108     (*VX_EVA_SC_par) = vx_eva_sc;            << 
12109     (*VY_EVA_SC_par) = vy_eva_sc;            << 
12110     (*VZ_EVA_SC_par) = vz_eva_sc;            << 
12111     (*ZFP2) = idnint(ZFF2);                  << 
12112     (*AFP2) = idnint(AFF2);                  << 
12113     (*SFP2) = NbLam2;                        << 
12114     (*VX2_FISSION_par) = VX2_FISSION;        << 
12115     (*VY2_FISSION_par) = VY2_FISSION;        << 
12116     (*VZ2_FISSION_par) = VZ2_FISSION;        << 
12117     (*IEV_TAB_FIS_par) = IEV_TAB_FIS;        << 
12118     (*NbLam0_par) = NbLam1 + NbLam2;         << 
12119     if (NbLam0 > (NbLam1 + NbLam2))          << 
12120         varntp->kfis = 25;                   << 
12121     return;                                  << 
12122 }                                               10145 }
12123 //******************************************    10146 //*************************************************************************
12124 //                                              10147 //
12125 void G4Abla::tke_bu(G4double Z, G4double A,  << 10148 void G4Abla::tke_bu(G4double Z,G4double A,G4double ZALL,G4double AAL,G4double *VX,G4double *VY,G4double *VZ){
12126 {                                            << 
12127                                                 10149 
12128     G4double V_over_V0, R0, RALL, RHAZ, R, T << 10150        G4double V_over_V0,R0,RALL,RHAZ,R,TKE,Ekin,V,VPERP,ALPHA1;
12129                                                 10151 
12130     V_over_V0 = 6.0;                         << 10152        V_over_V0 = 6.0;
12131     R0 = 1.16;                               << 10153        R0 = 1.16;
12132                                                 10154 
12133     if (Z < 1.0)                             << 10155        if(Z < 1.0){
12134     {                                        << 
12135         *VX = 0.0;                              10156         *VX = 0.0;
12136         *VY = 0.0;                              10157         *VY = 0.0;
12137         *VZ = 0.0;                              10158         *VZ = 0.0;
12138         return;                                 10159         return;
12139     }                                        << 10160        }
12140                                                 10161 
12141     RALL = R0 * std::pow(V_over_V0, 1.0 / 3. << 10162        RALL = R0 * std::pow(V_over_V0,1.0/3.0) * std::pow(AAL,1.0/3.0);
12142     RHAZ = G4double(haz(1));                 << 10163        RHAZ = G4double(haz(1));
12143     R = std::pow(RHAZ, 1.0 / 3.0) * RALL;    << 10164        R = std::pow(RHAZ,1.0/3.0) * RALL;
12144     TKE = 1.44 * Z * ZALL * R * R * (1.0 - A << 10165        TKE = 1.44 * Z * ZALL * R*R * (1.0 - A/AAL)*(1.0 - A/AAL) / std::pow(RALL,3.0);
12145                                              << 10166 
12146     Ekin = TKE * (AAL - A) / AAL;            << 10167        Ekin = TKE * (AAL - A) / AAL;
12147     //       print*,'!!!',IDNINT(AAl),IDNINT << 10168 //       print*,'!!!',IDNINT(AAl),IDNINT(A),IDNINT(ZALL),IDNINT(Z)
12148     V = std::sqrt(Ekin / A) * 1.3887;        << 10169        V = std::sqrt(Ekin/A) * 1.3887;
12149     *VZ = (2.0 * G4double(haz(1)) - 1.0) * V << 10170        *VZ = (2.0 * G4double(haz(1)) - 1.0) * V;
12150     VPERP = std::sqrt(V * V - (*VZ) * (*VZ)) << 10171        VPERP = std::sqrt(V*V - (*VZ)*(*VZ));
12151     ALPHA1 = G4double(haz(1)) * 2.0 * 3.142; << 10172        ALPHA1 = G4double(haz(1)) * 2.0 * 3.142;
12152     *VX = VPERP * std::sin(ALPHA1);          << 10173        *VX = VPERP * std::sin(ALPHA1);
12153     *VY = VPERP * std::cos(ALPHA1);          << 10174        *VY = VPERP * std::cos(ALPHA1);
12154     return;                                  << 10175  return;
12155 }                                               10176 }
12156                                                 10177 
12157 G4double G4Abla::haz(G4int k)                   10178 G4double G4Abla::haz(G4int k)
12158 {                                               10179 {
12159     // const G4int pSize = 110;              << 10180  // const G4int pSize = 110;
12160     // static G4ThreadLocal G4double p[pSize << 10181  // static G4ThreadLocal G4double p[pSize];
12161     static G4ThreadLocal G4int ix = 0;       << 10182   static G4ThreadLocal G4long ix = 0;
12162     static G4ThreadLocal G4double x = 0.0, y << 10183   static G4ThreadLocal G4double x = 0.0, y = 0.0;
12163     //  k =< -1 on initialise                << 10184   //  k =< -1 on initialise                                        
12164     //  k = -1 c'est reproductible           << 10185   //  k = -1 c'est reproductible                                   
12165     //  k < -1 || k > -1 ce n'est pas reprod << 10186   //  k < -1 || k > -1 ce n'est pas reproductible
12166     /*                                       << 10187 /*
12167       // Zero is invalid random seed. Set pr << 10188   // Zero is invalid random seed. Set proper value from our random seed collection:
12168       collection: if(ix == 0) {              << 10189   if(ix == 0) {
12169         //    ix = hazard->ial;              << 10190     //    ix = hazard->ial;
12170       }                                      << 10191   }
12171     */                                       << 10192 */
12172     if (k <= -1)                             << 10193   if (k <= -1) { //then                                             
12173     { // then                                << 10194     if(k == -1) { //then                                            
12174         if (k == -1)                         << 10195       ix = 0;
12175         { // then                            << 10196     }
12176             ix = 0;                          << 10197     else {
12177         }                                    << 10198       x = 0.0;
12178         else                                 << 10199       y = secnds(G4int(x));
12179         {                                    << 10200       ix = G4int(y * 100 + 43543000);
12180             x = 0.0;                         << 10201       if(mod(ix,2) == 0) {
12181             y = secnds(G4int(x));            << 10202   ix = ix + 1;
12182             ix = G4int(y * 100 + 43543000);  << 10203       }
12183             if (mod(ix, 2) == 0)             << 10204     }}
12184             {                                << 
12185                 ix = ix + 1;                 << 
12186             }                                << 
12187         }                                    << 
12188     }                                        << 
12189                                                 10205 
12190     return G4AblaRandom::flat();             << 10206   return G4AblaRandom::flat();
12191 }                                               10207 }
12192                                                 10208 
12193 //  Random generator according to the           10209 //  Random generator according to the
12194 //  powerfunction y = x**(lambda) in the ran    10210 //  powerfunction y = x**(lambda) in the range from xmin to xmax
12195 //  xmin, xmax and y are integers.              10211 //  xmin, xmax and y are integers.
12196 //  lambda must be different from -1 !          10212 //  lambda must be different from -1 !
12197 G4int G4Abla::IPOWERLIMHAZ(G4double lambda,  << 10213 G4int G4Abla::IPOWERLIMHAZ(G4double lambda,G4int xmin,G4int xmax){
12198 {                                            << 10214        G4double y,l_plus,rxmin,rxmax;
12199     G4double y, l_plus, rxmin, rxmax;        << 10215          l_plus = lambda + 1.;
12200     l_plus = lambda + 1.;                    << 10216          rxmin = G4double(xmin) - 0.5;
12201     rxmin = G4double(xmin) - 0.5;            << 10217          rxmax = G4double(xmax) + 0.5;
12202     rxmax = G4double(xmax) + 0.5;            << 10218 //       y=(HAZ(k)*(rxmax**l_plus-rxmin**l_plus)+ rxmin**l_plus)**(1.E0/l_plus)
12203     //       y=(HAZ(k)*(rxmax**l_plus-rxmin* << 10219          y=std::pow(G4AblaRandom::flat()*(std::pow(rxmax,l_plus)-std::pow(rxmin,l_plus))+ std::pow(rxmin,l_plus),1.0/l_plus);
12204     //       rxmin**l_plus)**(1.E0/l_plus)   << 10220          return nint(y);
12205     y = std::pow(G4AblaRandom::flat() * (std << 10221 }
12206                  1.0 / l_plus);              << 10222 
12207     return nint(y);                          << 10223 void G4Abla::AMOMENT(G4double AABRA,G4double APRF, G4int IMULTIFR,G4double *PX,G4double *PY,G4double *PZ){
12208 }                                            << 10224 
12209                                              << 10225       G4int ISIGOPT = 0;
12210 void G4Abla::AMOMENT(G4double AABRA, G4doubl << 10226       G4double GOLDHA_BU=0.,GOLDHA=0.;
12211 {                                            << 10227       G4double PI = 3.141592653589793;
12212                                              << 10228       //nu = 1.d0
12213     G4int ISIGOPT = 0;                       << 
12214     G4double GOLDHA_BU = 0., GOLDHA = 0.;    << 
12215     G4double PI = 3.141592653589793;         << 
12216     // nu = 1.d0                             << 
12217                                                 10229 
12218     //  G4double BETAP = sqrt(1.0 - 1.0/sqrt    10230     //  G4double BETAP = sqrt(1.0 - 1.0/sqrt(1.0+EAP/931.494));
12219     //  G4double GAMMAP = 1.0 / sqrt(1. - BE    10231     //  G4double GAMMAP = 1.0 / sqrt(1. - BETAP*BETAP);
12220     //  G4double FACT_PROJ = (GAMMAP + 1.) /    10232     //  G4double FACT_PROJ = (GAMMAP + 1.) / (BETAP * GAMMAP);
12221                                                 10233 
12222     // G4double R = 1.160 * pow(APRF,1.0/3.0 << 10234      // G4double R = 1.160 * pow(APRF,1.0/3.0);
12223                                                 10235 
12224     //  G4double RNDT = double(haz(1));         10236     //  G4double RNDT = double(haz(1));
12225     //  G4double CTET = 2.0*RNDT-1.0;           10237     //  G4double CTET = 2.0*RNDT-1.0;
12226     //  G4double TETA = acos(CTET);             10238     //  G4double TETA = acos(CTET);
12227     //  G4double RNDP = double(haz(1));         10239     //  G4double RNDP = double(haz(1));
12228     //  G4double PHI = RNDP*2.0*PI;             10240     //  G4double PHI = RNDP*2.0*PI;
12229     //  G4double STET = sqrt(1.0-CTET*CTET);    10241     //  G4double STET = sqrt(1.0-CTET*CTET);
12230     //      RX = R * STET * DCOS(PHI)        << 10242 //      RX = R * STET * DCOS(PHI)
12231     //      RY = R * STET * DSIN(PHI)        << 10243 //      RY = R * STET * DSIN(PHI)
12232     //      RZ = R * CTET                    << 10244 //      RZ = R * CTET
12233                                                 10245 
12234     //  G4double RZ = 0.0;                      10246     //  G4double RZ = 0.0;
12235     //  G4double RY = R * sin(PHI);             10247     //  G4double RY = R * sin(PHI);
12236     //  G4double RX = R * cos(PHI);             10248     //  G4double RX = R * cos(PHI);
12237                                                 10249 
12238     // In MeV/C                              << 10250 // In MeV/C
12239     G4double V0_over_VBU = 1.0 / 6.0;        << 10251       G4double V0_over_VBU = 1.0 / 6.0;
12240     G4double SIGMA_0 = 118.50;               << 10252       G4double SIGMA_0 = 118.50;
12241     G4double Efermi = 5.0 * SIGMA_0 * SIGMA_ << 10253       G4double Efermi = 5.0 * SIGMA_0 * SIGMA_0 / (2.0 * 931.4940);
12242                                              << 10254 
12243     if (IMULTIFR == 1)                       << 10255       if(IMULTIFR==1){
12244     {                                        << 10256        if(ISIGOPT == 0){
12245         if (ISIGOPT == 0)                    << 10257 // "Fermi model" picture:
12246         {                                    << 10258 // Influence of expansion:
12247             // "Fermi model" picture:        << 10259         SIGMA_0 = SIGMA_0 * std::pow(V0_over_VBU,1.0/3.0);
12248             // Influence of expansion:       << 10260 // To take into account the influence of thermal motion of nucleons (see W. Bauer,
12249             SIGMA_0 = SIGMA_0 * std::pow(V0_ << 10261 // PRC 51 (1995) 803)
12250             // To take into account the infl << 10262 //        Efermi = 5.D0 * SIGMA_0 * SIGMA_0 / (2.D0 * 931.49D0)
12251             // W. Bauer, PRC 51 (1995) 803)  << 10263 
12252             //        Efermi = 5.D0 * SIGMA_ << 10264         GOLDHA_BU = SIGMA_0 * std::sqrt((APRF*(AABRA-APRF))/(AABRA-1.0));
12253                                              << 10265         GOLDHA    = GOLDHA_BU*std::sqrt(1.0 +
12254             GOLDHA_BU = SIGMA_0 * std::sqrt( << 10266                     5.0 * PI*PI / 12.0 * (T_freeze_out / Efermi)*(T_freeze_out / Efermi));
12255             GOLDHA =                         << 10267 //       PRINT*,'AFTER BU fermi:',IDNINT(AABRA),IDNINT(APRF),GOLDHA,
12256                 GOLDHA_BU * std::sqrt(1.0 +  << 10268 //     &                          GOLDHA_BU
12257             //       PRINT*,'AFTER BU fermi: << 10269        }else{
12258             //     &                         << 10270 // Thermal equilibrium picture (<=> to Boltzmann distribution in momentum with sigma2=M*T)
12259         }                                    << 10271 // The factor (AABRA-APRF)/AP comes from momentum conservation:
12260         else                                 << 10272         GOLDHA_BU = std::sqrt(APRF *  T_freeze_out * 931.494 *
12261         {                                    << 10273                    (AABRA - APRF) / AABRA);
12262             // Thermal equilibrium picture ( << 10274         GOLDHA   = GOLDHA_BU;
12263             // with sigma2=M*T) The factor ( << 10275 //       PRINT*,'AFTER BU therm:',IDNINT(AABRA),IDNINT(APRF),GOLDHA,
12264             // conservation:                 << 10276 //     &                          GOLDHA_BU
12265             GOLDHA_BU = std::sqrt(APRF * T_f << 10277        }
12266             GOLDHA = GOLDHA_BU;              << 10278       }else{
12267             //       PRINT*,'AFTER BU therm: << 10279       GOLDHA = SIGMA_0 * std::sqrt((APRF*(AABRA-APRF))/(AABRA-1.0));
12268             //     &                         << 10280       }
12269         }                                    << 10281 
12270     }                                        << 10282       G4int IS = 0;
12271     else                                     << 10283       mom123:  
12272     {                                        << 10284       *PX = G4double(gausshaz(1,0.0,GOLDHA));
12273         GOLDHA = SIGMA_0 * std::sqrt((APRF * << 10285       IS = IS +1;
12274     }                                        << 10286       if(IS>100){
12275                                              << 10287       std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING PX IN Rn07.FOR. A VALUE WILL BE FORCED." << std::endl;
12276     G4int IS = 0;                            << 10288       *PX = (AABRA-1.0)*931.4940;
12277 mom123:                                      << 10289       }
12278     *PX = G4double(gausshaz(1, 0.0, GOLDHA)) << 10290       if(std::abs(*PX)>= AABRA*931.494){
12279     IS = IS + 1;                             << 10291 //       PRINT*,'VX > C',PX,IDNINT(APRF)
12280     if (IS > 100)                            << 10292        goto mom123;
12281     {                                        << 10293       }
12282         std::cout << "WARNING: GAUSSHAZ CALL << 10294       IS = 0;
12283                      "CALCULATING PX IN Rn07 << 10295       mom456:  
12284                   << std::endl;              << 10296       *PY = G4double(gausshaz(1,0.0,GOLDHA));
12285         *PX = (AABRA - 1.0) * 931.4940;      << 10297       IS = IS +1;
12286     }                                        << 10298       if(IS>100){
12287     if (std::abs(*PX) >= AABRA * 931.494)    << 10299       std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING PY IN Rn07.FOR. A VALUE WILL BE FORCED." << std::endl;
12288     {                                        << 10300       *PY = (AABRA-1.0)*931.4940;
12289         //       PRINT*,'VX > C',PX,IDNINT(A << 10301       }
12290         goto mom123;                         << 10302       if(std::abs(*PY)>= AABRA*931.494){
12291     }                                        << 10303 //       PRINT*,'VX > C',PX,IDNINT(APRF)
12292     IS = 0;                                  << 10304        goto mom456;
12293 mom456:                                      << 10305       }
12294     *PY = G4double(gausshaz(1, 0.0, GOLDHA)) << 10306       IS = 0;
12295     IS = IS + 1;                             << 10307       mom789:  
12296     if (IS > 100)                            << 10308       *PZ = G4double(gausshaz(1,0.0,GOLDHA));
12297     {                                        << 10309       IS = IS +1;
12298         std::cout << "WARNING: GAUSSHAZ CALL << 10310       if(IS>100){
12299                      "CALCULATING PY IN Rn07 << 10311       std::cout << "WARNING: GAUSSHAZ CALLED MORE THAN 100 TIMES WHEN CALCULATING PZ IN Rn07.FOR. A VALUE WILL BE FORCED." << std::endl;
12300                   << std::endl;              << 10312       *PZ = (AABRA-1.0)*931.4940;
12301         *PY = (AABRA - 1.0) * 931.4940;      << 10313       }
12302     }                                        << 10314       if(std::abs(*PZ)>= AABRA*931.494){
12303     if (std::abs(*PY) >= AABRA * 931.494)    << 10315 //       PRINT*,'VX > C',PX,IDNINT(APRF)
12304     {                                        << 10316        goto mom789;
12305         //       PRINT*,'VX > C',PX,IDNINT(A << 10317       }
12306         goto mom456;                         << 10318  return;
12307     }                                        << 
12308     IS = 0;                                  << 
12309 mom789:                                      << 
12310     *PZ = G4double(gausshaz(1, 0.0, GOLDHA)) << 
12311     IS = IS + 1;                             << 
12312     if (IS > 100)                            << 
12313     {                                        << 
12314         std::cout << "WARNING: GAUSSHAZ CALL << 
12315                      "CALCULATING PZ IN Rn07 << 
12316                   << std::endl;              << 
12317         *PZ = (AABRA - 1.0) * 931.4940;      << 
12318     }                                        << 
12319     if (std::abs(*PZ) >= AABRA * 931.494)    << 
12320     {                                        << 
12321         //       PRINT*,'VX > C',PX,IDNINT(A << 
12322         goto mom789;                         << 
12323     }                                        << 
12324     return;                                  << 
12325 }                                               10319 }
12326                                                 10320 
12327 G4double G4Abla::gausshaz(G4int k, G4double     10321 G4double G4Abla::gausshaz(G4int k, G4double xmoy, G4double sig)
12328 {                                               10322 {
12329     // Gaussian random numbers:              << 10323   // Gaussian random numbers:
12330                                                 10324 
12331     //   1005       C*** TIRAGE ALEATOIRE DA << 10325   //   1005       C*** TIRAGE ALEATOIRE DANS UNE GAUSSIENNE DE LARGEUR SIG ET MOYENNE XMOY
12332     //   MOYENNE XMOY                        << 10326   static G4ThreadLocal G4int  iset = 0;
12333     static G4ThreadLocal G4int iset = 0;     << 10327   static G4ThreadLocal G4double v1,v2,r,fac,gset,fgausshaz;
12334     static G4ThreadLocal G4double v1, v2, r, << 10328 
12335                                              << 10329   if(iset == 0) { //then                                              
12336     if (iset == 0)                           << 10330     do {
12337     { // then                                << 10331       v1 = 2.0*haz(k) - 1.0;
12338         do                                   << 10332       v2 = 2.0*haz(k) - 1.0;
12339         {                                    << 10333       r = std::pow(v1,2) + std::pow(v2,2);
12340             v1 = 2.0 * haz(k) - 1.0;         << 10334     } while(r >= 1);
12341             v2 = 2.0 * haz(k) - 1.0;         << 10335 
12342             r = std::pow(v1, 2) + std::pow(v << 10336     fac = std::sqrt(-2.*std::log(r)/r);
12343         } while (r >= 1);                    << 10337     gset = v1*fac;
12344                                              << 10338     fgausshaz = v2*fac*sig+xmoy;
12345         fac = std::sqrt(-2. * std::log(r) /  << 10339     iset = 1;
12346         gset = v1 * fac;                     << 10340   }
12347         fgausshaz = v2 * fac * sig + xmoy;   << 10341   else {
12348         iset = 1;                            << 10342     fgausshaz=gset*sig+xmoy;
12349     }                                        << 10343     iset=0;
12350     else                                     << 10344   }
12351     {                                        << 10345   return fgausshaz;                                                         
12352         fgausshaz = gset * sig + xmoy;       << 
12353         iset = 0;                            << 
12354     }                                        << 
12355     return fgausshaz;                        << 
12356 }                                               10346 }
12357                                                 10347