Ignore:
Timestamp:
Apr 6, 2009, 12:30:29 PM (15 years ago)
Author:
garnier
Message:

update processes

Location:
trunk/source/processes/hadronic/models/incl/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/hadronic/models/incl/src/G4Abla.cc

    r819 r962  
    2424// ********************************************************************
    2525//
    26 // $Id: G4Abla.cc,v 1.14 2007/12/03 19:36:06 miheikki Exp $
     26// $Id: G4Abla.cc,v 1.19 2008/09/15 08:16:45 kaitanie Exp $
    2727// Translation of INCL4.2/ABLA V3
    2828// Pekka Kaitaniemi, HIP (translation)
     
    3636#include "G4InclAblaDataFile.hh"
    3737#include "Randomize.hh"
    38 #include <assert.h>
     38#include "G4InclRandomNumbers.hh"
     39#include "G4Ranecu.hh"
     40#include "G4AblaFissionSimfis18.hh"
     41#include "G4AblaFission.hh"
    3942
    4043G4Abla::G4Abla()
    4144{
    42 
     45  verboseLevel = 0;
     46  ilast = 0;
    4347}
    4448
     
    4650{
    4751  verboseLevel = 0;
    48 
     52  ilast = 0;
    4953  volant = volant; // ABLA internal particle data
    5054  volant->iv = 0;
    5155  hazard = hazard; // Random seeds
    5256
     57  randomGenerator = new G4InclGeant4Random();
     58  //randomGenerator = new G4Ranecu();
    5359  varntp = new G4VarNtp();
    5460  pace = new G4Pace();
    5561  ald = new G4Ald();
    56   ablamain = new G4Ablamain();
    57   emdpar = new G4Emdpar();
    5862  eenuc = new G4Eenuc();
    5963  ec2sub = new G4Ec2sub();
     
    6771{
    6872  verboseLevel = 0;
    69  
     73  ilast = 0;
    7074  volant = aVolant; // ABLA internal particle data
    7175  volant->iv = 0;
     
    7478  varntp->ntrack = 0;
    7579 
     80  randomGenerator = new G4InclGeant4Random();
     81  //randomGenerator = new G4Ranecu();
     82
     83  // ABLA fission
     84  //  fissionModel = new G4AblaFissionSimfis18(hazard, randomGenerator);
     85  fissionModel = new G4AblaFission(hazard, randomGenerator);
     86  if(verboseLevel > 0) {
     87    fissionModel->about();
     88  }
     89  verboseLevel = 0;
    7690  pace = new G4Pace();
    7791  ald = new G4Ald();
    78   ablamain = new G4Ablamain();
    79   emdpar = new G4Emdpar();
    8092  eenuc = new G4Eenuc();
    8193  ec2sub = new G4Ec2sub();
     
    88100G4Abla::~G4Abla()
    89101{
     102  delete randomGenerator;
    90103  delete pace;
    91104  delete ald;
    92   delete ablamain;
    93   delete emdpar;
    94105  delete eenuc;
    95106  delete ec2sub;
     
    111122                       G4int eventnumber)
    112123{
    113   // C *************************  EVAPORATION KHS *********       
    114 
    115124  const G4double uma = 931.4942;
    116125  const G4double melec = 0.511;
     
    118127  const G4double fmn = 939.56563;
    119128
    120   // Rotation matrix...
    121   G4double sitet = 0.0;
    122   G4double R[4][4];
    123 
    124   G4double plab1, gam1, eta1;
    125 
    126   G4double plab2, gam2, eta2;
    127 
    128   G4double stet1;
    129   G4double stet2;
    130  
    131   G4int nbpevap;
    132   G4int mempaw = 0, memiv = 0;
    133 
     129  G4double alrem = 0.0, berem = 0.0, garem = 0.0;
     130  G4double R[4][4]; // Rotation matrix
    134131  G4double csdir1[4];
    135132  G4double csdir2[4];
    136 
    137133  G4double csrem[4];
    138   G4double alrem = 0.0, berem = 0.0, garem = 0.0;
    139 
    140134  G4double pfis_rem[4];
    141135  G4double pf1_rem[4];
     136  for(G4int init_i = 0; init_i < 4; init_i++) {
     137    csdir1[init_i] = 0.0;
     138    csdir2[init_i] = 0.0;
     139    csrem[init_i] = 0.0;
     140    pfis_rem[init_i] = 0.0;
     141    pf1_rem[init_i] = 0.0;
     142    for(G4int init_j = 0; init_j < 4; init_j++) {
     143      R[init_i][init_j] = 0.0;
     144    }
     145  }
     146
     147  G4double plab1 = 0.0, gam1 = 0.0, eta1 = 0.0;
     148  G4double plab2 = 0.0, gam2 = 0.0, eta2 = 0.0;
     149
     150  G4double sitet = 0.0;
     151  G4double stet1 = 0.0;
     152  G4double stet2 = 0.0;
     153 
     154  G4int nbpevap = 0;
     155  G4int mempaw = 0, memiv = 0;
    142156
    143157  G4double e_evapo = 0.0;
    144   G4double el;
    145   G4double fmcv;
    146 
    147   G4double aff1;
    148   G4double zff1;
    149   G4double eff1;
    150    
    151   G4double aff2;
    152   G4double zff2;
    153   G4double eff2;
    154 
    155   G4double v1, v2;
     158  G4double el = 0.0;
     159  G4double fmcv = 0.0;
     160
     161  G4double aff1 = 0.0;
     162  G4double zff1 = 0.0;
     163  G4double eff1 = 0.0;
     164  G4double aff2 = 0.0;
     165  G4double zff2 = 0.0;
     166  G4double eff2 = 0.0;
     167
     168  G4double v1 = 0.0, v2 = 0.0;
    156169
    157170  G4double t2 = 0.0;
    158   G4double ctet1;
     171  G4double ctet1 = 0.0;
    159172  G4double ctet2 = 0.0;
    160   G4double phi1;
     173  G4double phi1 = 0.0;
    161174  G4double phi2 = 0.0;
    162175  G4double p2 = 0.0;
    163   G4double epf2_out = 0.0 ; ///AH adding initialization
     176  G4double epf2_out = 0.0 ;
    164177  G4int lma_pf1 = 0, lmi_pf1 = 0;
    165178  G4int lma_pf2 = 0, lmi_pf2 = 0;
    166179  G4int nopart = 0;
    167180
    168   G4double cst, sst, csf, ssf;
     181  G4double cst = 0.0, sst = 0.0, csf = 0.0, ssf = 0.0;
    169182 
    170   G4double zf, af, mtota, pleva, pxeva, pyeva;
     183  G4double zf = 0.0, af = 0.0, mtota = 0.0, pleva = 0.0, pxeva = 0.0, pyeva = 0.0;
    171184  G4int ff = 0;
    172185  G4int inum = eventnumber;
    173   G4int inttype;
     186  G4int inttype = 0;
    174187  G4double esrem = excitationEnergy;
    175188 
     
    181194
    182195  G4double erecrem = recoilEnergy;
    183   G4double trem;
     196  G4double trem = 0.0;
    184197  G4double pxrem = momX;
    185198  G4double pyrem = momY;
    186199  G4double pzrem = momZ;
    187200
    188   G4double remmass;
     201  G4double remmass = 0.0;
    189202 
     203  volant->clear(); // Clean up an initialize ABLA output.
     204  varntp->clear(); // Clean up an initialize ABLA output.
    190205  varntp->ntrack = 0;
    191   volant->iv = 0;
     206    volant->iv = 0;
     207  //volant->iv = 1;
    192208 
    193209  G4double pcorem = std::sqrt(erecrem*(erecrem +2.*938.2796*nucleusA));
    194210    // G4double pcorem = std::sqrt(std::pow(momX,2) + std::pow(momY,2) + std::pow(momZ,2));
    195     // assert(isnan(pcorem) == false);
    196   if(esrem >= 1.0e-3) { //then         
    197     //   void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf,
    198     //         G4double *zf_par, G4double *af_par, G4double *mtota_par,
    199     //         G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par,
    200     //         G4double *ff_par, G4int *inttype_par, G4int *inum_par);
    201     //     G4cout <<"Evaporating nucleus: " << G4endl;
    202     //     G4cout <<"A = " << aprf << " Z = " << zprf << G4endl;
     211  if(pcorem != 0) { // Guard against division by zero.
     212    alrem = pxrem/pcorem;
     213    berem = pyrem/pcorem;
     214    garem = pzrem/pcorem;
     215  } else {
     216    alrem = 0.0;
     217    berem = 0.0;
     218    garem = 0.0;
     219  }
     220
     221  G4int idebug = 0;
     222  G4int itest = 0;
     223  if(idebug == 1) {
     224    zprf =   81.;
     225    aprf =   201.;
     226    //    ee =   86.5877686;
     227    ee = 300.0;
     228    jprf =   32.;
     229    zf =   0.;
     230    af =   0.;
     231    mtota =   0.;
     232    pleva =   0.;
     233    pxeva =   0.;
     234    pyeva =   0.;
     235    ff =  -1;
     236    inttype =  0;
     237    inum =  2;
     238  }
     239  if(itest == 1) {
     240    G4cout <<" PK::: EVAPORA event  " << inum << G4endl;
     241    G4cout <<" PK:::    zprf =   " << zprf << G4endl;
     242    G4cout <<" PK:::    aprf =   " << aprf << G4endl;
     243    G4cout <<" PK:::      ee =   " << ee << G4endl;
     244    G4cout <<" PK:::      eeDiff =   " << ee - 86.5877686 << G4endl;
     245    G4cout <<" PK:::    jprf =   " << jprf << G4endl;
     246    G4cout <<" PK:::      zf =   " << zf << G4endl;
     247    G4cout <<" PK:::      af =   " << af << G4endl;
     248    G4cout <<" PK:::   mtota =   " << mtota << G4endl;
     249    G4cout <<" PK:::   pleva =   " << pleva << G4endl;
     250    G4cout <<" PK:::   pxeva =   " << pxeva << G4endl;
     251    G4cout <<" PK:::   pyeva =   " << pyeva << G4endl;
     252    G4cout <<" PK:::      ff =  " << ff << G4endl;
     253    G4cout <<" PK::: inttype =  " << inttype << G4endl;
     254    G4cout <<" PK:::    inum =  " << inum << G4endl;
     255  }
     256
     257  if(esrem >= 1.0e-3) {
    203258    evapora(zprf,aprf,ee,jprf, &zf, &af, &mtota, &pleva, &pxeva, &pyeva, &ff, &inttype, &inum);
    204     // assert(isnan(pleva) == false);
    205     // assert(isnan(pxeva) == false);
    206     // assert(isnan(pyeva) == false);
    207259  }
    208260  else {
     
    213265    pyeva = pyrem;
    214266    pleva = pzrem;
    215   } //   endif
    216   // assert(isnan(zf) == false);
    217   // assert(isnan(af) == false);
    218   // assert(isnan(ee) == false);
    219   //                                                                       
    220   // AFP,ZFP is the final fragment if no fission occurs (FF=0)                   
    221   // In case of fission (FF=1) it is the nucleus that undergoes fission.         
    222 //   G4double zfp = idnint(zf);                                                 
    223 //   G4double afp = idnint(af);
    224 
    225   if (ff == 1) { //then   
    226     // ---------------------  Here, a FISSION occures --------------------------
    227     //                                                                       
    228     //  FEE: (EE) energy of fissioning nucleus ABOVE the fission barrier.         
    229     //
    230     //   calcul des impulsions des particules evaporees (avant fission)
    231     //                 dans le systeme labo:
    232 
     267  }
     268
     269  if (ff == 1) {
     270    // Fission:
     271    // variable ee: Energy of fissioning nucleus above the fission barrier.         
     272    // Calcul des impulsions des particules evaporees (avant fission)
     273    // dans le systeme labo.
     274
     275    if(verboseLevel > 2)
     276      G4cout << __FILE__ << ":" << __LINE__ << " Entering fission code." << G4endl;
    233277    trem = double(erecrem);
    234278    remmass = pace2(aprf,zprf) + aprf*uma - zprf*melec; // canonic
    235     remmass = mcorem  + double(esrem);                  // ok
    236     remmass = mcorem;                                   //cugnon
     279//     remmass = mcorem  + double(esrem);                       // ok
     280//     remmass = mcorem;                                        //cugnon
    237281    varntp->kfis = 1;
    238282    G4double gamrem = (remmass + trem)/remmass;
    239283    G4double etrem = std::sqrt(trem*(trem + 2.0*remmass))/remmass;
    240     // assert(isnan(etrem) == false);
     284
    241285    //  This is not treated as accurately as for the non fission case for which
    242286    //  the remnant mass is computed to satisfy the energy conservation
     
    247291    mglms(aprf,zprf,0,&el);
    248292    remmass = zprf*fmp + (aprf-zprf)*fmn + el + double(esrem);
    249 
    250293    gamrem = std::sqrt(std::pow(pcorem,2) + std::pow(remmass,2))/remmass;
    251     // assert(isnan(gamrem) == false);
    252294    etrem = pcorem/remmass;
    253     // assert(isnan(etrem) == false);
    254295   
    255     alrem = pxrem/pcorem;
    256     // assert(isnan(alrem) == false);
    257     berem = pyrem/pcorem;
    258     // assert(isnan(berem) == false);
    259     garem = pzrem/pcorem;
    260     // assert(isnan(garem) == false);
    261 
    262296    csrem[0] = 0.0; // Should not be used.
    263297    csrem[1] = alrem;
    264298    csrem[2] = berem;
    265299    csrem[3] = garem;
    266      
     300    if(verboseLevel > 1) {
     301      G4cout << __FILE__ << ":" << __LINE__ << " momRem = (" << pxrem << ", " << pyrem << ", " << pzrem << ")" << G4endl;
     302      G4cout << __FILE__ << ":" << __LINE__ << " csrem = (" << csrem[1] << ", " << csrem[2] << ", " << csrem[3] << ")" << G4endl;
     303    }
     304
    267305    // C Pour Vérif Remnant = evapo(Pre fission) + Noyau_fissionant (systÚme  Remnant)
    268306    G4double bil_e = 0.0;
     
    273311   
    274312    for(G4int iloc = 1; iloc <= volant->iv; iloc++) { //DO iloc=1,iv
    275       // assert(isnan(volant->zpcv[iloc]) == false);
    276       //      assert(volant->acv[iloc] != 0);
    277       //      assert(volant->zpcv[iloc] != 0);
    278313      mglms(double(volant->acv[iloc]),double(volant->zpcv[iloc]),0,&el);
    279       // assert(isnan(el) == false);
    280314      masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el;
    281       // assert(isnan(masse) == false);
    282315      bil_e = bil_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2));
    283       // assert(isnan(bil_e) == false);
    284316      bil_px = bil_px + volant->pcv[iloc]*(volant->xcv[iloc]);
    285317      bil_py = bil_py + volant->pcv[iloc]*(volant->ycv[iloc]);
     
    315347    //                       G4double &a2,G4double &z2,G4double &e2,G4double &v2);
    316348
    317     fissionDistri(af,zf,ee,aff1,zff1,eff1,v1,aff2,zff2,eff2,v2);
    318 
     349    //fissionModel->fissionDistri(af,zf,ee,aff1,zff1,eff1,v1,aff2,zff2,eff2,v2);
     350    fissionModel->doFission(af,zf,ee,aff1,zff1,eff1,v1,aff2,zff2,eff2,v2);
    319351    // C verif des A et Z decimaux:
    320352    G4int na_f = int(std::floor(af + 0.5));
     
    342374    //G4double ef = fb->efa[kboud][jboud]; // barriere de fission
    343375    G4double ef = fb->efa[jboud][kboud]; // barriere de fission
    344     // assert(isnan(ef) == false);
    345376    varntp->estfis = ee + ef;           // copie dans le ntuple   
    346377     
     
    355386    // C   Attention aux parametres, ici 0=OPTSHP, NO microscopic correct.
    356387    mglms(af,zf,0,&el);
    357     // assert(isnan(el) == false);
    358388    G4double massef = zf*fmp + (af - zf)*fmn + el + ee + ef;
    359     // assert(isnan(massef) == false);
    360389    mglms(double(aff1),double(zff1),0,&el);
    361     // assert(isnan(el) == false);
    362390    G4double masse1 = zff1*fmp + (aff1-zff1)*fmn + el + eff1;
    363     // assert(isnan(masse1) == false);
    364391    mglms(aff2,zff2,0,&el);
    365     // assert(isnan(el) == false);
    366392    G4double masse2 = zff2*fmp + (aff2 - zff2)*fmn + el + eff2;
    367     // assert(isnan(masse2) == false);
    368393    // C        WRITE(6,*) 'MASSEF,MASSE1,MASSE2',MASSEF,MASSE1,MASSE2     
    369394    G4double b = massef - masse1 - masse2;
     
    376401    } //endif
    377402    G4double t1 = b*(b + 2.0*masse2)/(2.0*massef);
    378     // assert(isnan(t1) == false);
    379403    G4double p1 = std::sqrt(t1*(t1 + 2.0*masse1));
    380     // assert(isnan(p1) == false);
    381404   
    382405    G4double rndm;
    383     standardRandom(&rndm, &(hazard->igraine[13]));
     406    rndm = randomGenerator->getRandom();
     407    //    standardRandom(&rndm, &(hazard->igraine[13]));
    384408    ctet1 = 2.0*rndm - 1.0;
    385     standardRandom(&rndm,&(hazard->igraine[9]));
     409    //    standardRandom(&rndm,&(hazard->igraine[9]));
     410    rndm = randomGenerator->getRandom();
    386411    phi1 = rndm*2.0*3.141592654;
    387412           
     
    389414    G4double peva = std::pow(pxeva,2) + std::pow(pyeva,2) + std::pow(pleva,2);
    390415    G4double gamfis = std::sqrt(std::pow(massef,2) + peva)/massef;
    391     // assert(isnan(gamfis) == false);
    392416    peva = std::sqrt(peva);
    393     // assert(isnan(peva) == false);
    394417    G4double etfis = peva/massef;
    395418     
    396     G4double epf1_in;
    397     G4double epf1_out;
     419    G4double epf1_in = 0.0;
     420    G4double epf1_out = 0.0;
    398421
    399422    // C ----Matrice de rotation (noyau de fission -> Remnant)
    400423    if(peva >= 1.0e-4) {
    401424      sitet = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2))/peva;
    402       // assert(isnan(sitet) == false);
    403425    }
    404426    if(sitet > 1.0e-5) { //then
     
    448470              &ffpxeva1, &ffpyeva1, &ff1, &ftype1, &inum);
    449471      // C On ajoute le fragment:
    450       // assert(af1 > 0);
    451472      volant->iv = volant->iv + 1;
    452       // assert(af1 != 0);
    453       // assert(zf1 != 0);
    454473      volant->acv[volant->iv] = af1;
    455474      volant->zpcv[volant->iv] = zf1;
     475      if(verboseLevel > 2) {
     476        G4cout << __FILE__ << ":" << __LINE__ << " Added: zf1 = " << zf1 << " af1 = " << af1 << " at index " << volant->iv << G4endl;
     477        volant->dump();
     478      }
    456479      if(verboseLevel > 2) {
    457480        G4cout <<"Added fission fragment: a = " << volant->acv[volant->iv] << " z = " << volant->zpcv[volant->iv] << G4endl;
    458481      }
    459482      peva = std::sqrt(std::pow(ffpxeva1,2) + std::pow(ffpyeva1,2) + std::pow(ffpleva1,2));
    460       // assert(isnan(peva) == false);
    461483      volant->pcv[volant->iv] = peva;
    462484      if(peva > 0.001) { // then
     
    480502        mglms(volant->acv[iloc], volant->zpcv[iloc],0,&el);
    481503        masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el;
    482         // assert(isnan(masse) == false);
    483504        bil1_e = bil1_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2));
    484         // assert(isnan(bil1_e) == false);
    485505        bil1_px = bil1_px + volant->pcv[iloc]*(volant->xcv[iloc]);
    486506        bil1_py = bil1_py + volant->pcv[iloc]*(volant->ycv[iloc]);
     
    493513
    494514      // calcul des impulsions des particules evaporees dans le systeme Remnant:
    495       if(verboseLevel > 2) {
     515      if(verboseLevel > 2)
    496516        G4cout <<"2nd Translab (pf1 evap): Adding indices from " << nbpevap+1 << " to " << volant->iv << G4endl;
    497       }
    498517      nopart = varntp->ntrack - 1;
    499518      translab(gam1,eta1,csdir1,nopart,nbpevap+1);
     
    531550      volant->acv[volant->iv] = af2;
    532551      volant->zpcv[volant->iv] = zf2;
     552      if(verboseLevel > 2)
     553        G4cout << __FILE__ << ":" << __LINE__ << " Added: zf2 = " << zf2 << " af2 = " << af2 << " at index " << volant->iv << G4endl;
    533554      if(verboseLevel > 2) {
    534555        G4cout <<"Added fission fragment: a = " << volant->acv[volant->iv] << " z = " << volant->zpcv[volant->iv] << G4endl;
    535556      }
    536557      peva = std::sqrt(std::pow(ffpxeva2,2) + std::pow(ffpyeva2,2) + std::pow(ffpleva2,2));
    537       // assert(isnan(peva) == false);
    538558      volant->pcv[volant->iv] = peva;
    539559      //      exit(0);
     
    558578        masse = volant->zpcv[iloc]*fmp + (volant->acv[iloc] - volant->zpcv[iloc])*fmn + el;
    559579        bil2_e = bil2_e + std::sqrt(std::pow(volant->pcv[iloc],2) + std::pow(masse,2));
    560         // assert(isnan(bil2_e) == false);
    561580        bil2_px = bil2_px + volant->pcv[iloc]*(volant->xcv[iloc]);
    562581        bil2_py = bil2_py + volant->pcv[iloc]*(volant->ycv[iloc]);
     
    569588      //      G4double ctet2 = -ctet1;
    570589      ctet2 = -1.0*ctet1;
    571       assert(std::fabs(ctet2) <= 1.0);
    572       // assert(isnan(ctet2) == false);
    573590      phi2 = dmod(phi1+3.141592654,6.283185308);
    574       // assert(isnan(phi2) == false);
    575591      G4double p2 = std::sqrt(t2*(t2+2.0*masse2));
    576       // assert(isnan(p2) == false);
    577592     
    578593      //   void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1,
     
    583598      // C  calcul des impulsions des particules evaporees dans le systeme Remnant:
    584599      // c
    585       if(verboseLevel > 2) {
    586         G4cout <<"3rd Translab (pf2 evap): Adding indices from " << nbpevap+1 << " to " << volant->iv << G4endl;
    587       }
     600    if(verboseLevel > 2)
     601      G4cout <<"3rd Translab (pf2 evap): Adding indices from " << nbpevap+1 << " to " << volant->iv << G4endl;
    588602      nopart = varntp->ntrack - 1;
    589603      translab(gam2,eta2,csdir2,nopart,nbpevap+1);
     
    603617     
    604618    stet1 = std::sqrt(1.0 - std::pow(ctet1,2));
    605     // assert(isnan(stet1) == false);
    606619    pf1_rem[1] = p1*stet1*std::cos(phi1);
    607620    pf1_rem[2] = p1*stet1*std::sin(phi1);
     
    612625
    613626    stet2 = std::sqrt(1.0 - std::pow(ctet2,2));
    614     assert(std::pow(ctet2,2) >= 0.0);
    615     assert(std::pow(ctet2,2) <= 1.0);
    616     // assert(isnan(stet2) == false);
    617627   
    618628    G4double pf2_rem[4];
     
    672682    // C
    673683    //    G4double mempaw, memiv;
    674     if(verboseLevel > 2) {
     684    if(verboseLevel > 2)
    675685      G4cout <<"4th Translab: Adding indices from " << memiv << " to " << volant->iv << G4endl;
    676     }
    677686    translab(gamrem,etrem,csrem,mempaw,memiv);
    678687    // C *******************  END of fission calculations ************************
     688    if(verboseLevel > 2) {
     689      G4cout <<"Dump at the end of fission event " << G4endl;
     690      volant->dump();
     691      G4cout <<"End of dump." << G4endl;
     692    }
    679693  }
    680694  else {
     
    689703    volant->acv[volant->iv] = af;
    690704    volant->zpcv[volant->iv] = zf;
     705    if(verboseLevel > 2)
     706      G4cout << __FILE__ << ":" << __LINE__ << " Added: zf = " << zf << " af = " << af << " at index " << volant->iv << G4endl;
    691707    G4double peva = std::sqrt(std::pow(pxeva,2)+std::pow(pyeva,2)+std::pow(pleva,2));
    692     // assert(isnan(peva) == false);
    693708    volant->pcv[volant->iv] = peva;
    694709    if(peva > 0.001) { //then
     
    726741      }
    727742      if(volant->acv[j] > 0) {
    728         assert(volant->acv[j] != 0);
    729         //      assert(volant->zpcv[j] != 0);
    730743        mglms(volant->acv[j],volant->zpcv[j],0,&el);
    731744        fmcv = volant->zpcv[j]*fmp + (volant->acv[j] - volant->zpcv[j])*fmn + el;
    732745        e_evapo = e_evapo + std::sqrt(std::pow(volant->pcv[j],2) + std::pow(fmcv,2));
    733         // assert(isnan(e_evapo) == false);
    734746      }
    735747    } // enddo
     
    741753     
    742754    G4double gamrem = std::sqrt(std::pow(pcorem,2)+std::pow(remmass,2))/remmass;
    743     // assert(isnan(gamrem) == false);
    744755    G4double etrem = pcorem/remmass;
    745756
    746     if(verboseLevel > 2) {
     757    if(verboseLevel > 2)
    747758      G4cout <<"5th Translab (no fission): Adding indices from " << 1 << " to " << volant->iv << G4endl;
    748     }
    749759    nopart = varntp->ntrack - 1;
    750760    translab(gamrem,etrem,csrem,nopart,1);
    751761                 
     762    if(verboseLevel > 2) {
     763      G4cout <<"Dump at the end of evaporation event " << G4endl;
     764      volant->dump();
     765      G4cout <<"End of dump." << G4endl;
     766    }
    752767    // C End of the (FISSION - NO FISSION) condition (FF=1 or 0)                                         
    753768  } //end if
     
    758773void G4Abla::initEvapora()
    759774{
    760   //      6     C *******************************************************************                                                                     
    761   //      7     C                                                                       
    762   //      8     C      SUBROUTINE ABLAINIT(STATUS,TSTAT,NAME,FPATH)
    763   //      9     C********************************************************************                     
    764   //     10     
    765   //     11           SUBROUTINE INIT_EVAPORA(RACINE)
    766   //     12                           
    767   //     13     C********************************************************************                                                                       
    768   //     14     C     ON INPUT:  INPUT PARAMETERS FROM FILE                             
    769   //     15     C--------------------------------------------------------------------- 
    770   //     16     C     ON OUTPUT:                                                       
    771   //     17     C     STATUS - FLAG FOR END OF INPUT FILE                               
    772   //     18     C     TSTAT  - FLAG FOR NTUPLE-OUTPUT                                   
    773   //     19     C     NAME   - NAME FOR ISOTOPIC PRODUCTION CROSS SECTION FILES         
    774   //     20     C     FPATH  - PATH FOR  "          "        "        "    "           
    775   //     21     C---------------------------------------------------------------------
    776   //     22     C
    777   //     23     C     Modification 5-january-2000 by KHS and BJ
    778   //     24     C
    779   //     25     C     New treatment of dissipation.
    780   //     26     C     See report of Beatriz Jurado, Jan. 2000
    781   //     27     C
    782   //     28     C---------------------------------------------------------------------
    783   //     29     C   
    784   //     30     C     MODIFICATION 6-aug-1999 by JB and MVR
    785   //     31     C
    786   //     32     C Some problems arised from an uncorrect evaluation of the fission barrier
    787   //     33     C { 1) shell correction ( ECGNZ(J,K) ) was not subctracted (20-jul-99)
    788   //     34     C   2) fiss. barrier EF was calc. before ang. mom. correct. (6-aug-99) }
    789   //     35     C
    790   //     36     C--------------------------------------------------------------------- 
    791775  //     37     C     PROJECTILE AND TARGET PARAMETERS + CROSS SECTIONS                 
    792776  //     38     C     COMMON /ABLAMAIN/ AP,ZP,AT,ZT,EAP,BETA,BMAXNUC,CRTOT,CRNUC,       
     
    996980  }
    997981 
    998   for(int z = 0; z < 98; z++) { //do 30  z = 0,98,1                                                 
     982  for(int z = 0; z < 99; z++) { //do 30  z = 0,98,1                                                 
    999983    for(int n = 0; n < 154; n++) { //do 31  n = 0,153,1                                             
    1000984      ecld->ecfnz[n][z] = 0.e0;
     
    1003987      ecld->alpha[n][z] = dataInterface->getAlpha(n,z);
    1004988      ecld->vgsld[n][z] = dataInterface->getVgsld(n,z);
     989      //      if(ecld->ecgnz[n][z] != 0.0) G4cout <<"ecgnz[" << n << "][" << z << "] = " << ecld->ecgnz[n][z] << G4endl;
    1005990    }
    1006991  }
     
    10171002void G4Abla::qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr)
    10181003{
    1019   // QROT INCLUDING DAMPING                                               
    1020   // INPUT: Z,A,BET,SIG,U                                                 
    1021   // OUTPUT: QR - COLLECTIVE ENHANCEMENT FACTOR                           
    1022   //
    1023   // SEE  JUNGHANS ET AL., NUCL. PHYS. A 629 (1998) 635                   
    1024   //
    1025   //
    1026   // FR(U) EXPONENTIAL FUNCTION TO DEFINE DAMPING                       
    1027   // UCR   CRITICAL ENERGY FOR DAMPING                                   
    1028   // DCR   WIDTH OF DAMPING                                             
    1029   // BET   BETA-DEFORMATION !                                           
    1030   // SIG   PERPENDICULAR SPIN CUTOFF FACTOR                             
    1031   //   U   ENERGY                                                       
    1032   //  QR   COEFFICIENT OF COLLECTIVE ENHANCEMENT                         
    1033   //   A   MASS NUMBER                                                   
    1034   //   Z   CHARGE NUMBER                                                 
    1035 
    1036   G4double ucr,dcr,ponq,dn,n,dz;
    1037 
    1038   dcr = 10.0;
    1039 
    1040   ucr = 40.0;
     1004  G4double ucr = 10.0; // Critical energy for damping.
     1005  G4double dcr = 40.0; // Width of damping.
     1006  G4double ponq = 0.0, dn = 0.0, n = 0.0, dz = 0.0;
    10411007
    10421008  if(((std::fabs(bet)-1.15) < 0) || ((std::fabs(bet)-1.15) == 0)) {
     
    10851051  // USUALLY AN OBSOLETE OPTION
    10861052
    1087   G4int a1,z1;
     1053  G4int a1 = 0, z1 = 0;
    10881054  G4double xv = 0.0, xs = 0.0, xc = 0.0, xa = 0.0;                                   
    10891055
     
    11431109    // binding energy incl. pairing contr. is calculated from               
    11441110    // function eflmac                                                       
    1145     assert(a1 != 0);
    11461111    (*el) = eflmac(a1,z1,0,refopt4);
    1147     // assert(isnan((*el)) == false);
    11481112    if (refopt4 > 0) {
    11491113      if (refopt4 != 2) {
    11501114        (*el) = (*el) + ec2sub->ecnz[a1-z1][z1];
    11511115        //(*el) = (*el) + ec2sub->ecnz[z1][a1-z1];
    1152         //assert(isnan((*el)) == false);
    11531116      }
    11541117    }
     
    11671130  // RANGING FROM FISSILITY X=0.30 TO X=1.00 IN STEPS OF 0.02             
    11681131
    1169   G4int index;
    1170   G4double x,v,dx;
     1132  G4int index = 0;
     1133  G4double x = 0.0, v = 0.0, dx = 0.0;
    11711134
    11721135  const G4int alpha2Size = 37;
     
    12161179  //           2 : ANDREYEV                                     
    12171180
    1218   G4double aa,zz,i;
     1181  G4double aa = 0.0, zz = 0.0, i = 0.0;
    12191182  G4double fissilityResult = 0.0;
    12201183
     
    12561219  G4int inum = (*inum_par);
    12571220
     1221  G4int idebug = 0;
     1222
     1223  if(idebug == 666) {
     1224    zprf =   81.;
     1225    aprf =   201.;
     1226    //    ee =   86.5877686;
     1227    ee = 300.0;
     1228    jprf =   32.;
     1229    zf =   0.;
     1230    af =   0.;
     1231    mtota =   0.;
     1232    pleva =   0.;
     1233    pxeva =   0.;
     1234    pyeva =   0.;
     1235    ff =  -1;
     1236    inttype =  0;
     1237    inum =  2;
     1238    G4cout <<" PK::: EVAPORA event  " << inum << G4endl;
     1239    G4cout <<" PK:::    zprf =   " << zprf << G4endl;
     1240    G4cout <<" PK:::    aprf =   " << aprf << G4endl;
     1241    G4cout <<" PK:::      ee =   " << ee << G4endl;
     1242    G4cout <<" PK:::      eeDiff =   " << ee - 86.5877686 << G4endl;
     1243    G4cout <<" PK:::    jprf =   " << jprf << G4endl;
     1244    G4cout <<" PK:::      zf =   " << zf << G4endl;
     1245    G4cout <<" PK:::      af =   " << af << G4endl;
     1246    G4cout <<" PK:::   mtota =   " << mtota << G4endl;
     1247    G4cout <<" PK:::   pleva =   " << pleva << G4endl;
     1248    G4cout <<" PK:::   pxeva =   " << pxeva << G4endl;
     1249    G4cout <<" PK:::   pyeva =   " << pyeva << G4endl;
     1250    G4cout <<" PK:::      ff =  " << ff << G4endl;
     1251    G4cout <<" PK::: inttype =  " << inttype << G4endl;
     1252    G4cout <<" PK:::    inum =  " << inum << G4endl;
     1253  }
    12581254  //    533     C                                                                       
    12591255  //    534     C     INPUT:                                                           
     
    13481344  // SAVE -> static
    13491345       
    1350   static G4int sortie;                           
    1351   static G4double epsiln,probp,probn,proba,ptotl,e; 
    1352   static G4double sn,sbp,sba,x,amoins,zmoins,ecn,ecp,eca,bp,ba;         
    1353   static G4double pteva;                       
    1354 
    1355   static G4int itest;
    1356   static G4double probf;
    1357 
    1358   static G4int k, j, il;
    1359 
    1360   static G4double ctet1,stet1,phi1;
    1361   static G4double sbfis,rnd;
    1362   static G4double selmax;
    1363   static G4double segs;
    1364   static G4double ef;
    1365   static G4int irndm;
    1366 
    1367   static G4double pc, malpha;
     1346  static G4int sortie = 0;                           
     1347  static G4double epsiln = 0.0, probp = 0.0, probn = 0.0, proba = 0.0, ptotl = 0.0, e = 0.0; 
     1348  static G4double sn = 0.0, sbp = 0.0, sba = 0.0, x = 0.0, amoins = 0.0, zmoins = 0.0;
     1349  G4double ecn = 0.0, ecp = 0.0,eca = 0.0, bp = 0.0, ba = 0.0;         
     1350  static G4double pteva = 0.0;                       
     1351
     1352  static G4int itest = 0;
     1353  static G4double probf = 0.0;
     1354
     1355  static G4int k = 0, j = 0, il = 0;
     1356
     1357  static G4double ctet1 = 0.0, stet1 = 0.0, phi1 = 0.0;
     1358  static G4double sbfis = 0.0, rnd = 0.0;
     1359  static G4double selmax = 0.0;
     1360  static G4double segs = 0.0;
     1361  static G4double ef = 0.0;
     1362  static G4int irndm = 0;
     1363
     1364  static G4double pc = 0.0, malpha = 0.0;
    13681365
    13691366  zf = zprf;
     
    13921389  direct(zf,af,ee,jprf,&probp,&probn,&proba,&probf,&ptotl,
    13931390         &sn,&sbp,&sba,&ecn,&ecp,&eca,&bp,&ba,inttype,inum,itest); //:::FIXME::: Call
    1394   // assert(isnan(proba) == false);
    1395   // assert(isnan(probp) == false); 
    1396   // assert(isnan(probn) == false);
    1397   // assert(isnan(probf) == false); 
    1398   assert((eca+ba) >= 0);
    1399   assert((ecp+bp) >= 0);
    1400   // assert(isnan(ecp) == false);
    1401   // assert(isnan(ecn) == false);
    1402   // assert(isnan(bp) == false);
    1403   // assert(isnan(ba) == false);
     1391  if((eca+ba) < 0) {
     1392    eca = 0.0;
     1393    ba = 0.0;
     1394  }
    14041395  k = idnint(zf);
    14051396  j = idnint(af-zf);
     
    14111402  il  = idnint(jprf);
    14121403  barfit(k,k+j,il,&sbfis,&segs,&selmax);
    1413   // assert(isnan(sbfis) == false);
    14141404 
    14151405  if ((fiss->optshp == 1) || (fiss->optshp == 3)) { //then                     
     
    14231413  ef = fb->efa[j][k];
    14241414  //  ef = fb->efa[j][k];
    1425   // assert(isnan(fb->efa[j][k]) == false);
    14261415  // here the final steps of the evaporation are calculated               
    14271416  if ((sortie == 1) || (ptotl == 0.e0)) {
     
    14601449  // random number for the evaporation                                     
    14611450  //  x = double(Rndm(irndm))*ptotl;
    1462   x = double(haz(1))*ptotl;
    1463 
     1451  // x = double(haz(1))*ptotl;
     1452  x = randomGenerator->getRandom() * ptotl;
    14641453//   G4cout <<"proba = " << proba << G4endl;
    14651454//   G4cout <<"probp = " << probp << G4endl;
     
    14711460    // alpha evaporation                                                     
    14721461    if (itest == 1) {
    1473       G4cout <<"< alpha evaporation >" << G4endl;
     1462      G4cout <<"PK::: < alpha evaporation >" << G4endl;
    14741463    }
    14751464    amoins = 4.0;
    14761465    zmoins = 2.0;
    14771466    epsiln = sba + eca;
    1478     assert((std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) >= 0);
    14791467    pc = std::sqrt(std::pow((1.0 + (eca+ba)/3.72834e3),2) - 1.0) * 3.72834e3;
    1480     // assert(isnan(pc) == false);
    14811468    malpha = 4.0;
    14821469
     
    14901477    // proton evaporation                                                   
    14911478    if (itest == 1) {
    1492       G4cout <<"< proton evaporation >" << G4endl;
     1479      G4cout <<"PK::: < proton evaporation >" << G4endl;
    14931480    }
    14941481    amoins = 1.0;
    14951482    zmoins = 1.0;
    14961483    epsiln = sbp + ecp;
    1497     assert((std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) >= 0);
    14981484    pc = std::sqrt(std::pow((1.0 + (ecp + bp)/9.3827e2),2) - 1.0) * 9.3827e2;
    1499     // assert(isnan(pc) == false);
    15001485    malpha = 0.0;
    15011486    // volant:
    15021487    volant->iv = volant->iv + 1;
    1503     volant->acv[volant->iv] = 1.;
     1488    volant->acv[volant->iv] = 1.0;
    15041489    volant->zpcv[volant->iv] = 1.;
    15051490    volant->pcv[volant->iv] = pc;
     
    15081493    // neutron evaporation                                                   
    15091494    if (itest == 1) {
    1510       G4cout <<"< neutron evaporation >" << G4endl;
     1495      G4cout <<"PK::: < neutron evaporation >" << G4endl;
    15111496    }
    15121497    amoins = 1.0;
    15131498    zmoins = 0.0;
    15141499    epsiln = sn + ecn;
    1515     assert((std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) >= 0);
    15161500    pc = std::sqrt(std::pow((1.0 + (ecn)/9.3956e2),2) - 1.0) * 9.3956e2;
    1517     // assert(isnan(pc) == false);
     1501    if(itest == 1) {
     1502      G4cout <<"PK::: pc " << pc << G4endl;
     1503    }
    15181504    malpha = 0.0;
    15191505 
     
    15231509    volant->zpcv[volant->iv] = 0.;
    15241510    volant->pcv[volant->iv] = pc;
     1511
     1512    if(volant->getTotalMass() > 209 && verboseLevel > 0) {
     1513      volant->dump();
     1514      G4cout <<"DEBUGA Total = " << volant->getTotalMass() << G4endl;
     1515    }
    15251516  }
    15261517  else {
     
    15301521    // fission fragment mass distribution is calulated in subroutine fisdis 
    15311522    if (itest == 1) {
    1532       G4cout <<"< fission >" << G4endl;
     1523      G4cout <<"PK::: < fission >" << G4endl;
    15331524    }
    15341525    amoins = 0.0;
     
    15391530    pc = 0.0;
    15401531    ff = 1;
    1541     //    ff = 0; // For testing, allows to disable fission!
     1532    // ff = 0; // For testing, allows to disable fission!
    15421533  }
    15431534
    15441535  if (itest == 1) {
    1545     G4cout <<"sn,sbp,sba,ef" << sn << "," << sbp << "," << sba <<"," << ef << G4endl;
    1546     G4cout <<"probn,probp,proba,probf,ptotl " <<","<< probn <<","<< probp <<","<< proba <<","<< probf <<","<< ptotl << G4endl;
     1536    G4cout << std::setprecision(9) <<"PK::: SN,SBP,SBA,EF  " << sn << "  " << sbp << "  " << sba <<"  " << ef << G4endl;
     1537    G4cout << std::setprecision(9) <<"PK::: PROBN,PROBP,PROBA,PROBF,PTOTL  " <<"  "<< probn <<"  "<< probp <<"  "<< proba <<"  "<< probf <<"  "<< ptotl << G4endl;
    15471538  }
    15481539
     
    15571548
    15581549  if(ff == 0) {
    1559     standardRandom(&rnd,&(hazard->igraine[8]));
     1550    rnd = randomGenerator->getRandom();
     1551    //    standardRandom(&rnd,&(hazard->igraine[8]));
    15601552    ctet1 = 2.0*rnd - 1.0;
    1561     standardRandom(&rnd,&(hazard->igraine[4]));
     1553    rnd = randomGenerator->getRandom();
     1554    //    standardRandom(&rnd,&(hazard->igraine[4]));
    15621555    phi1 = rnd*2.0*3.141592654;
    15631556    stet1 = std::sqrt(1.0 - std::pow(ctet1,2));
    1564     // assert(isnan(stet1) == false);
    15651557    volant->xcv[volant->iv] = stet1*std::cos(phi1);
    15661558    volant->ycv[volant->iv] = stet1*std::sin(phi1);
     
    15691561    pyeva = pyeva - pc * volant->ycv[volant->iv];
    15701562    pleva = pleva - pc * ctet1;
    1571     // assert(isnan(pleva) == false);
    15721563  }
    15731564
     
    15991590                    G4double *ba_par, G4int inttype, G4int inum, G4int itest)
    16001591{
    1601   G4int dummy0;
     1592  G4int dummy0 = 0;
    16021593 
    16031594  G4double probp = (*probp_par);
     
    16801671  // - AVERAGE KINETIC ENERGIES (2*T) AND EFFECTIVE BARRIERS     
    16811672
    1682   static G4double bk;
    1683   static G4int afp;
    1684   static G4double at; // = 0.0;
    1685   static G4double bet; // = 0.0;
    1686   static G4double bs;
    1687   static G4double bshell;
    1688   static G4double cf;
    1689   static G4double dconst;
    1690   static G4double defbet;
    1691   static G4double denomi;
    1692   static G4double densa;
    1693   static G4double densf;
    1694   static G4double densg;
    1695   static G4double densn;
    1696   static G4double densp;
    1697   static G4double edyn;
    1698   static G4double eer;
    1699   static G4double ef;
    1700   static G4double ft;
    1701   static G4double ga; // = 0.0;
    1702   static G4double gf; // = 0.0;
    1703   static G4double gn; // = 0.0;
    1704   static G4double gngf;
    1705   static G4double gp; // = 0.0;
    1706   static G4double gsum;
     1673  static G4double bk = 0.0;
     1674  static G4int afp = 0;
     1675  static G4double at = 0.0;
     1676  static G4double bs = 0.0;
     1677  static G4double bshell = 0.0;
     1678  static G4double cf = 0.0;
     1679  static G4double dconst = 0.0;
     1680  static G4double defbet = 0.0;
     1681  static G4double denomi = 0.0;
     1682  static G4double densa = 0.0;
     1683  static G4double densf = 0.0;
     1684  static G4double densg = 0.0;
     1685  static G4double densn = 0.0;
     1686  static G4double densp = 0.0;
     1687  static G4double edyn = 0.0;
     1688  static G4double eer = 0.0;
     1689  static G4double ef = 0.0;
     1690  static G4double ft = 0.0;
     1691  static G4double ga = 0.0;
     1692  static G4double gf = 0.0;
     1693  static G4double gn = 0.0;
     1694  static G4double gngf = 0.0;
     1695  static G4double gp = 0.0;
     1696  static G4double gsum = 0.0;
    17071697  static G4double hbar = 6.582122e-22; // = 0.0;
    1708   static G4double homega; // = 0.0;
    1709   static G4double iflag;
    1710   static G4int il;
    1711   static G4int ilast;
    1712   static G4int imaxwell;
    1713   static G4int in;
    1714   static G4int iz;
    1715   static G4int j;
    1716   static G4int k;
    1717   static G4double ma1z;
    1718   static G4double ma1z1;
    1719   static G4double ma4z2;
    1720   static G4double maz;
    1721   static G4double nprf;
    1722   static G4double nt;
    1723   static G4double parc;
     1698  static G4double iflag = 0.0;
     1699  static G4int il = 0;
     1700  static G4int imaxwell = 0;
     1701  static G4int in = 0;
     1702  static G4int iz = 0;
     1703  static G4int j = 0;
     1704  static G4int k = 0;
     1705  static G4double ma1z = 0.0;
     1706  static G4double ma1z1 = 0.0;
     1707  static G4double ma4z2 = 0.0;
     1708  static G4double maz = 0.0;
     1709  static G4double nprf = 0.0;
     1710  static G4double nt = 0.0;
     1711  static G4double parc = 0.0;
    17241712  static G4double pi = 3.14159265;
    1725   static G4double pt;
    1726   static G4double ra;
    1727   static G4double rat;
    1728   static G4double refmod;
    1729   static G4double rf;
    1730   static G4double rn;
    1731   static G4double rnd;
    1732   static G4double rnt;
    1733   static G4double rp;
    1734   static G4double rpt;
    1735   static G4double sa;
    1736   static G4double sbf;
    1737   static G4double sbfis;
    1738   static G4double segs;
    1739   static G4double selmax;
    1740   static G4double sp;
    1741   static G4double tauc;
    1742   static G4double tconst;
    1743   static G4double temp;
    1744   static G4double ts1;
    1745   static G4double tsum;
    1746   static G4double wf; // = 0.0;
    1747   static G4double wfex;
    1748   static G4double xx;
    1749   static G4double y;
     1713  static G4double pt = 0.0;
     1714  static G4double ra = 0.0;
     1715  static G4double rat = 0.0;
     1716  static G4double refmod = 0.0;
     1717  static G4double rf = 0.0;
     1718  static G4double rn = 0.0;
     1719  static G4double rnd = 0.0;
     1720  static G4double rnt = 0.0;
     1721  static G4double rp = 0.0;
     1722  static G4double rpt = 0.0;
     1723  static G4double sa = 0.0;
     1724  static G4double sbf = 0.0;
     1725  static G4double sbfis = 0.0;
     1726  static G4double segs = 0.0;
     1727  static G4double selmax = 0.0;
     1728  static G4double sp = 0.0;
     1729  static G4double tauc = 0.0;
     1730  static G4double tconst = 0.0;
     1731  static G4double temp = 0.0;
     1732  static G4double ts1 = 0.0;
     1733  static G4double tsum = 0.0;
     1734  static G4double wf = 0.0;
     1735  static G4double wfex = 0.0;
     1736  static G4double xx = 0.0;
     1737  static G4double y = 0.0;
    17501738
    17511739  imaxwell = 1;
     
    17571745
    17581746  // no limit if statistical model is calculated.                         
    1759   if (bet <= 1.0e-16) {
     1747  if (fiss->bet <= 1.0e-16) {
    17601748    edyn = 10000.0;
    17611749  }
     
    17631751  // just a change of name until the end of this subroutine               
    17641752  eer = ee;
     1753  if(verboseLevel > 2)
     1754    G4cout << __FILE__ << ":" << __LINE__ << " eer = " << eer << G4endl;
    17651755  if (inum == 1) {
    17661756    ilast = 1;
     
    17841774    mglw(a-4.0,zprf-2.0,&ma4z2);
    17851775  }
    1786   // assert(isnan(maz) == false);
    1787   // assert(isnan(ma1z) == false);
    1788   // assert(isnan(ma1z1) == false);
    1789   // assert(isnan(ma4z2) == false);
    17901776 
    17911777  // separation energies and effective barriers                     
     
    18041790
    18051791  sbp = sp + bp;
    1806   // assert(isnan(sbp) == false);
    1807   // assert(isinf(sbp) == false);
    18081792  if (a-4.0 <= 0.0) {
    18091793    sba = 1.0e+75;
     
    18171801
    18181802  sba = sa + ba;
    1819   // assert(isnan(sba) == false);
    1820   // assert(isinf(sba) == false);
    18211803 direct30:
    18221804
     
    18331815    il = idnint(jprf);
    18341816    barfit(k,k+j,il,&sbfis,&segs,&selmax);
    1835     // assert(isnan(sbfis) == false);
    18361817    if ((fiss->optshp == 1) || (fiss->optshp == 3)) {
    18371818      //      fb->efa[k][j] = G4double(sbfis) -  ecld->ecgnz[j][k];
     
    18571838      fb->efa[j][k] = 0.0;
    18581839    }
    1859     // assert(isnan(fb->efa[j][k]) == false);
    18601840   
    18611841    // factor with jprf should be 0.0025d0 - 0.01d0 for                     
     
    18671847    }
    18681848    xx = fissility((k+j),k,fiss->optxfis);
    1869     // assert(isnan(xx) == false);
    1870     // assert(isinf(xx) == false);
    18711849   
    18721850    y = 1.00 - xx;
     
    18781856    }
    18791857    bs = bipol(1,y);
    1880     // assert(isnan(bs) == false);
    1881     // assert(isinf(bs) == false);
    18821858    bk = bipol(2,y);
    1883     // assert(isnan(bk) == false);
    1884     // assert(isinf(bk) == false);
    18851859  }
    18861860  else {
     
    18951869  in = afp - iz;
    18961870  bshell = ecld->ecfnz[in][iz];
    1897   // assert(isnan(bshell) == false);
    18981871
    18991872  // ld saddle point deformation                                         
     
    19051878  // a.r.j. 6.8.97                                                         
    19061879  defbet = 1.58533e0 * spdef(idnint(a),idnint(zprf),fiss->optxfis);
    1907   // assert(isnan(defbet) == false);
    19081880 
    19091881  // level density and temperature at the saddle point                     
     
    19191891  //   G4cout <<"densf = " << densf << G4endl;
    19201892  //   G4cout <<"temp = " << temp << G4endl;
    1921   // assert(isnan(densf) == false);
    1922   // assert(isnan(temp) == false);
    1923   //  assert(temp != 0);
    19241893  ft = temp;
    19251894  if (iz >= 2) {
     
    19291898    // level density and temperature in the proton daughter                 
    19301899    densniv(a-1.0,zprf-1.0e0,ee,sbp,&densp, bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet);
    1931     assert(temp >= 0);
    1932     // assert(isnan(temp) == false);
    19331900    pt = temp;
    19341901    if (imaxwell == 1) {
     
    19461913      iflag = iflag + 1;
    19471914      if(iflag >= 10) {
    1948         standardRandom(&rnd,&(hazard->igraine[5]));
     1915        rnd = randomGenerator->getRandom();
     1916        //      standardRandom(&rnd,&(hazard->igraine[5]));
    19491917        ecp=std::sqrt(rnd)*(eer-sbp);
    1950         // assert(isnan(ecp) == false);
    19511918        goto direct2914;
    19521919      }
     
    19761943    densniv(a-1.0,zprf,ee,sn,&densn,bshell, 1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet);
    19771944    nt = temp;
    1978 
     1945    if(itest == 1)
     1946      G4cout <<"PK::: nt = " << nt <<G4endl;
    19791947    if (imaxwell == 1) {
    19801948      // valentina - random kinetic energy in a maxwelliam distribution
     
    19881956
    19891957      iflag=0;
    1990 
     1958    direct1915:
    19911959      ecn = fmaxhaz(rnt);
     1960      if(verboseLevel > 2) {
     1961        G4cout <<"rnt = " << rnt << G4endl;
     1962        G4cout << __FILE__ << ":" << __LINE__ << " ecn = " << ecn << G4endl;
     1963      }
    19921964      iflag=iflag+1;
    19931965      if(iflag >= 10) {
    1994         standardRandom(&rnd,&(hazard->igraine[6]));
     1966        rnd = randomGenerator->getRandom();
     1967        //      standardRandom(&rnd,&(hazard->igraine[6]));
    19951968        ecn = std::sqrt(rnd)*(eer-sn);
    1996         // assert(isnan(ecn) == false);
     1969        if(verboseLevel > 2)
     1970          G4cout << __FILE__ << ":" << __LINE__ << " ecn = " << ecn << G4endl;
    19971971        goto direct2915;
    19981972      }
    1999       //       if((ecn+sn) > eer) {
    2000       //        goto direct1915;
    2001       //       }
    2002       //       else {
    2003       //        ecn = 2.e0 * nt;
    2004       //       }
    2005       if((ecn + sn) <= eer) {
    2006         ecn = 2.0 * nt;
    2007       }
     1973      if((ecn+sn) > eer) {
     1974        goto direct1915;
     1975      }
     1976    }
     1977    else {
     1978        ecn = 2.e0 * nt;
     1979        if(verboseLevel > 2)
     1980          G4cout << __FILE__ << ":" << __LINE__ << " ecn = " << ecn << G4endl;
     1981    }
     1982//       if((ecn + sn) <= eer) {
     1983//      ecn = 2.0 * nt;
     1984//      G4cout << __FILE__ << ":" << __LINE__ << " ecn = " << ecn << G4endl;
     1985//       }
    20081986    direct2915:
    20091987      dummy0 = 0;
    20101988      //      G4cout <<"" <<G4endl;
    2011     }
    2012   }
     1989  }
    20131990  else {
    20141991    densn = 0.0;
     
    20211998    defbet = 1.5 * (ecld->alpha[in-2][iz-2]);
    20221999
     2000    // For debugging:
     2001    //    bshell = -10.7;
     2002    //    defbet = -0.06105;
     2003    // G4cout <<"ecgnz N = " << in-2 << G4endl;
     2004    // G4cout <<"ecgnz Z = " << iz-2 << G4endl;
     2005    //  G4cout <<"bshell = " << bshell << G4endl;
     2006    // G4cout <<"defbet = " << defbet << G4endl;
    20232007    // level density and temperature in the alpha daughter                   
    20242008    densniv(a-4.0,zprf-2.0e0,ee,sba,&densa,bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet);
     2009    // G4cout <<"densa = " << densa << G4endl;
     2010    // G4cout <<"temp = " << temp << G4endl;
    20252011
    20262012    // valentina - random kinetic energy in a maxwelliam distribution
     
    20392025      iflag=iflag+1;
    20402026      if(iflag >= 10) {
    2041         standardRandom(&rnd,&(hazard->igraine[7]));
     2027        rnd = randomGenerator->getRandom();
     2028        //      standardRandom(&rnd,&(hazard->igraine[7]));
    20422029        eca=std::sqrt(rnd)*(eer-sba);
    2043         // assert(isnan(eca) == false);
    20442030        goto direct2916;
    20452031      }
     
    20472033        goto direct1916;
    20482034      }
    2049       else {
    2050         eca = 2.0 * at;
    2051       }
     2035    }
     2036    else {
     2037      eca = 2.0 * at;
     2038    }
    20522039    direct2916:
    20532040      dummy0 = 0;
    20542041      //      G4cout <<"" << G4endl;
    2055     }
    2056     else {
    2057       densa = 0.0;
    2058       eca = 0.0;
    2059       at = 0.0;
    2060     }
    2061   } // PK
     2042  }
     2043  else {
     2044    densa = 0.0;
     2045    eca = 0.0;
     2046    at = 0.0;
     2047  }
     2048  //} // PK
    20622049
    20632050  // special treatment for unbound nuclei                                               
     
    20872074  // compound nucleus level density                                       
    20882075  densniv(a,zprf,ee,0.0e0,&densg,bshell,1.e0,1.e0,&temp,int(fiss->optshp),int(fiss->optcol),defbet);
    2089   // assert(isnan(densg) == false);
    2090   // assert(isnan(temp) == false);
    20912076 
    20922077  if ( densg > 0.e0) {
     
    20972082    ga = (std::pow(a,(2.0/3.0))/fiss->akap)*densa/densg/pi*2.0*std::pow(at,2);
    20982083    gf = densf/densg/pi/2.0*ft;
    2099     // assert(isnan(gf) == false);
    2100    
    2101     //     assert(isnan(gp) == false);
    2102     //     assert(isnan(gn) == false);
    2103     //     assert(isnan(ga) == false);
    2104     //     assert(isnan(ft) == false);
    2105     //    assert(ft != 0);
    2106     //    assert(isnan(gf) == false);
    21072084   
    21082085    if(itest == 1) {
     
    21172094
    21182095  gsum = ga + gp + gn;
    2119   // assert(isinf(gsum) == false);
    2120   // assert(isnan(gsum) == false);
    21212096  if (gsum > 0.0) {
    21222097    ts1  = hbar / gsum;
     
    21622137    rp = 1.0;
    21632138    rn = densn/densp*std::pow((nt/pt),2);
    2164     // assert(isnan(rn) == false);
    21652139    ra = densa*2.0/densp*std::pow((at/pt),2);
    2166     // assert(isnan(ra) == false);
    21672140    goto direct50;
    21682141  }
     
    21732146  // cramers and weidenmueller factors for the dynamical hindrances of     
    21742147  // fission                                                               
    2175   if (bet <= 1.0e-16) {
     2148  if (fiss->bet <= 1.0e-16) {
    21762149    cf = 1.0;
    21772150    wf = 1.0;
    21782151  }
    21792152  else if (sbf > 0.0e0) {
    2180     cf = cram(bet,homega);
     2153    cf = cram(fiss->bet,fiss->homega);
    21812154    // if fission barrier ef=0.d0 then fission is the only possible     
    21822155    // channel. to avoid std::log(0) in function tau                         
     
    21902163    else {
    21912164      // transient time tau()                                                 
    2192       tauc = tau(bet,homega,ef,ft);
    2193       // assert(isnan(tauc) == false);
     2165      tauc = tau(fiss->bet,fiss->homega,ef,ft);
    21942166    }
    21952167    wfex = (tauc - tsum)/ts1;
     
    22162188  tconst = 0.7;
    22172189  dconst = 12.0/std::sqrt(a);
    2218   // assert(isnan(dconst) == false);
    22192190  nprf = a - zprf;
    22202191
    22212192  if (fiss->optshp >= 2) { //then                                           
    22222193    parite(nprf,&parc);
    2223     // assert(isnan(parc) == false);
    22242194    dconst = dconst*parc;
    22252195  }
     
    22412211    else {
    22422212      rn=gngf;
    2243       // assert(isnan(rn) == false);
    22442213      rp=gngf*gp/gn;
    2245       // assert(isnan(rp) == false);     
    22462214      ra=gngf*ga/gn;
    2247       // assert(isnan(ra) == false);     
    22482215    }
    22492216  } else {
    2250     // assert(isnan(cf) == false);
    2251     // assert(isinf(gn) == false);
    2252     // assert(isinf(gf) == false);
    2253     // assert(isinf(cf) == false);       
    2254     assert(gn > 0 || (gf != 0 && cf != 0));
    22552217    rn = gn/(gf*cf);
    22562218//     G4cout <<"rn = " << G4endl;
    22572219//     G4cout <<"gn = " << gn << " gf = " << gf << " cf = " << cf << G4endl;
    2258     // assert(isnan(rn) == false);
    22592220    rp = gp/(gf*cf);
    2260     // assert(isnan(rp) == false);   
    22612221    ra = ga/(gf*cf);
    2262     // assert(isnan(ra) == false);   
    22632222  }
    22642223 direct50:
    22652224  // relative decay probabilities                                         
    2266   // assert(isnan(ra) == false);
    2267   // assert(isnan(rp) == false);
    2268   // assert(isnan(rn) == false);
    2269   // assert(isnan(rf) == false);
    2270  
    22712225  denomi = rp+rn+ra+rf;
    2272   // assert(isnan(denomi) == false);
    2273   assert(denomi > 0);
    22742226  // decay probabilities after transient time
    22752227  probf = rf/denomi;
    2276   // assert(isnan(probf) == false);
    22772228  probp = rp/denomi;
    2278   // assert(isnan(probp) == false);
    22792229  probn = rn/denomi;
    2280   // assert(isnan(probn) == false);
    22812230  proba = ra/denomi;
    2282   // assert(isnan(proba) == false);
    2283   // assert(isinf(proba) == false);
    22842231 
    22852232  // new treatment of grange-weidenmueller factor, 5.1.2000, khs !!!
    22862233
    22872234  // decay probabilites with transient time included
    2288   // assert(isnan(wf) == false);
    2289   assert(std::fabs(probf) <= 1.0);
    22902235  probf = probf * wf;
    22912236  if(probf == 1.0) {
     
    23002245  }
    23012246 direct70:
    2302   // assert(isnan(probp) == false);
    2303   // assert(isnan(probn) == false);
    2304   // assert(isnan(probf) == false); 
    2305   // assert(isnan(proba) == false);
    23062247  ptotl = probp+probn+proba+probf;
    2307   // assert(isnan(ptotl) == false);
    23082248 
    23092249  ee = eer;
     
    23112251
    23122252  // Return values:
    2313   // assert(isnan(proba) == false);
    23142253  (*probp_par) = probp;
    23152254  (*probn_par) = probn;
     
    23782317  //   1544     C                                                                       
    23792318  //   1545     C                                                                       
    2380   G4double afp;
    2381   G4double delta0;
    2382   G4double deltau;
    2383   G4double deltpp;
    2384   G4double e;
     2319  G4double afp = 0.0;
     2320  G4double delta0 = 0.0;
     2321  G4double deltau = 0.0;
     2322  G4double deltpp = 0.0;
     2323  G4double e = 0.0;
    23852324  G4double ecor = 0.0;
    2386   G4double ecor1;
    2387   G4double ecr;
    2388   G4double er;
    2389   G4double fe;
    2390   G4double fp;
    2391   G4double he;
    2392   G4double iz;
    2393   G4double pa;
    2394   G4double para;
    2395   G4double parz;
    2396   G4double ponfe;
    2397   G4double ponniv;
    2398   G4double qr;
    2399   G4double sig;
    2400   G4double y01;
    2401   G4double y11;
    2402   G4double y2;
    2403   G4double y21;
    2404   G4double y1;
    2405   G4double y0;
     2325  G4double ecor1 = 0.0;
     2326  G4double ecr = 0.0;
     2327  G4double er = 0.0;
     2328  G4double fe = 0.0;
     2329  G4double fp = 0.0;
     2330  G4double he = 0.0;
     2331  G4double iz = 0.0;
     2332  G4double pa = 0.0;
     2333  G4double para = 0.0;
     2334  G4double parz = 0.0;
     2335  G4double ponfe = 0.0;
     2336  G4double ponniv = 0.0;
     2337  G4double qr = 0.0;
     2338  G4double sig = 0.0;
     2339  G4double y01 = 0.0;
     2340  G4double y11 = 0.0;
     2341  G4double y2 = 0.0;
     2342  G4double y21 = 0.0;
     2343  G4double y1 = 0.0;
     2344  G4double y0 = 0.0;
    24062345
    24072346  G4double pi6 = std::pow(3.1415926535,2) / 6.0;
     
    24532392      //      deltpp = -0.25e0* (delta0/std::pow(std::sqrt(a),2)) * pa /pi6 + 2.e0*delta0/std::sqrt(a);
    24542393      deltpp = -0.25e0* std::pow((delta0/std::sqrt(a)),2) * pa /pi6 + 2.e0*delta0/std::sqrt(a);
    2455       // assert(isnan(deltpp) == false);
    24562394     
    24572395      parite(a,&para);
    24582396      if (para < 0.0) {
    24592397        e = e - delta0/std::sqrt(a);
    2460         // assert(isnan(e) == false);
    24612398      } else {                                                         
    24622399        parite(z,&parz);
    24632400        if (parz > 0.e0) {
    24642401          e = e - 2.0*delta0/std::sqrt(a);
    2465           // assert(isnan(e) == false);
    24662402        } else {
    24672403          e = e;
    2468           // assert(isnan(e) == false);
    24692404        }
    24702405      }
     
    25102445  if (ee < 5.0) {
    25112446    y1 = std::sqrt(pa*ecor);
    2512     // assert(isnan(y1) == false);
    25132447    for(int j = 0; j < 5; j++) {
    25142448      y2 = pa*ecor*(1.e0-std::exp(-y1));
    2515       // assert(isnan(y2) == false);
    25162449      y1 = std::sqrt(y2);
    2517       // assert(isnan(y1) == false);
    25182450    }
    25192451   
    25202452    y0 = pa/y1;
    2521     // assert(isnan(y0) == false);
    2522     assert(y0 != 0.0);
    25232453    (*temp)=1.0/y0;
    25242454    (*dens) = std::exp(y0*ecor)/ (std::pow((std::pow(ecor,3)*y0),0.5)*std::pow((1.0-0.5*y0*ecor*std::exp(-y1)),0.5))* std::exp(y1)*(1.0-std::exp(-y1))*0.1477045;
     
    25262456      ecor1=1.0;
    25272457      y11 = std::sqrt(pa*ecor1);
    2528       // assert(isnan(y11) == false);
    25292458      for(int j = 0; j < 7; j++) {
    25302459        y21 = pa*ecor1*(1.0-std::exp(-y11));
    2531         // assert(isnan(21) == false);
    25322460        y11 = std::sqrt(y21);
    2533         // assert(isnan(y11) == false);
    25342461      }
    25352462
    25362463      y01 = pa/y11;
    2537       // assert(isnan(y01) == false);
    25382464      (*dens) = (*dens)*std::pow((y01/y0),1.5);
    25392465      (*temp) = (*temp)*std::pow((y01/y0),1.5);
     
    25422468  else {
    25432469    ponniv = 2.0*std::sqrt(pa*ecor);
    2544     // assert(isnan(ponniv) == false);
    25452470    if (ponniv > 700.0) {
    25462471      ponniv = 700.0;
     
    25492474    // fermi gas state density                                               
    25502475    (*dens) = std::pow(pa,(-0.25e0))*std::pow(ecor,(-1.25e0))*std::exp(ponniv) * 0.1477045e0;
    2551     // assert(isnan(std::sqrt(ecor/pa)) == false);
    25522476    (*temp) = std::sqrt(ecor/pa);
    25532477  }
     
    25662490
    25672491  (*dens) = (*dens) * qr;
     2492  if(verboseLevel > 2) {
     2493    G4cout <<"PK::: dens = " << (*dens) << G4endl;
     2494    G4cout <<"PK::: AFP, IZ, ECOR, ECOR1 " << afp << " " << iz << " " << ecor << " " << ecor1 << G4endl;
     2495  }
    25682496}
    25692497
     
    25762504  // replaces tables. Barrier heights from Myers and Swiatecki !!!                                                                 
    25772505
    2578   G4double nms,ims,ksims,xms, ums;
     2506  G4double nms = 0.0, ims = 0.0, ksims = 0.0, xms = 0.0, ums = 0.0;
    25792507
    25802508  nms = ams - zms;
     
    26232551  //       otherwise   - return pairing (= -1/2 dpn + 1/2 (Dp + Dn))   
    26242552
    2625   G4double eflmacResult;
    2626 
    2627   G4int in;
    2628   G4double z,n,a,av,as,a0,c1,c4,b1,b3,f,ca,w,dp,dn,dpn,efl,pi;
    2629   G4double rmac,bs,h,r0,kf,ks,kv,rp,ay,aden,x0,y0,mh,mn,esq,ael,i;
    2630   pi = 3.141592653589793238e0;
     2553  G4double eflmacResult = 0.0;
     2554
     2555  G4int in = 0;
     2556  G4double z = 0.0, n = 0.0, a = 0.0, av = 0.0, as = 0.0;
     2557  G4double a0 = 0.0, c1 = 0.0, c4 = 0.0, b1 = 0.0, b3 = 0.0;
     2558  G4double f = 0.0, ca = 0.0, w = 0.0, dp = 0.0, dn = 0.0, dpn = 0.0, efl = 0.0;
     2559  G4double rmac = 0.0, bs = 0.0, h = 0.0, r0 = 0.0, kf = 0.0, ks = 0.0;
     2560  G4double kv = 0.0, rp = 0.0, ay = 0.0, aden = 0.0, x0 = 0.0, y0 = 0.0;
     2561  G4double mh = 0.0, mn = 0.0, esq = 0.0, ael = 0.0, i = 0.0;
     2562  G4double pi = 3.141592653589793238e0;
    26312563
    26322564  // fundamental constants
     
    26962628  dp  = rmac*bs/std::pow(z,(1.0/3.0));
    26972629  dpn = h/bs/std::pow(a,(2.0/3.0));
    2698   // assert(isnan(dpn) == false);
    26992630 
    27002631  c1  = 3.0/5.0*esq/r0;
    2701   // assert(isnan(c1) == false);
    2702   // assert(isinf(c1) == false);
    2703  
    27042632  c4  = 5.0/4.0*std::pow((3.0/(2.0*pi)),(2.0/3.0)) * c1;
    2705   // assert(isnan(c4) == false);
    2706   // assert(isinf(c4) == false);
    2707  
    2708   // assert(isnan(pi) == false);
    2709   // assert(isnan(z) == false);
    2710   // assert(isnan(a) == false);
    2711   // assert(isnan(r0) == false);
    27122633  kf  = std::pow((9.0*pi*z/(4.0*a)),(1.0/3.0))/r0;
    2713   // assert(isnan(kf) == false);
    2714   // assert(isinf(kf) == false);
    27152634 
    27162635  f = -1.0/8.0*rp*rp*esq/std::pow(r0,3) * (145.0/48.0 - 327.0/2880.0*std::pow(kf,2) * std::pow(rp,2) + 1527.0/1209600.0*std::pow(kf,4) * std::pow(rp,4));
     
    27722691  // ENERGY OF A SPECIFIC NUCLEUS                                     
    27732692
    2774   double para,parz;
     2693  double para = 0.0, parz = 0.0;
    27752694  // A                 MASS NUMBER                                     
    27762695  // Z                 NUCLEAR CHARGE                                 
     
    27872706    parite(z, &parz);
    27882707    if (parz > 0.0) {
    2789       // assert(isnan(std::sqrt(a)) == false);
    27902708      (*del) = -12.0/std::sqrt(a);
    27912709    }
    27922710    else {
    2793       // assert(isnan(std::sqrt(a)) == false);
    27942711      (*del) = 12.0/std::sqrt(a);
    27952712    }
     
    28042721  // RETURNS -1 IF N IS ODD AND +1 IF N IS EVEN                       
    28052722
    2806   G4double n1, n2, n3;
     2723  G4double n1 = 0.0, n2 = 0.0, n3 = 0.0;
    28072724
    28082725  // N                 NUMBER TO BE TESTED                             
     
    28332750  // T      - NUCLEAR TEMPERATURE                                       
    28342751
    2835   G4double tauResult;
    2836 
    2837   G4double tlim;
    2838   tlim = 8.e0 * ef;
     2752  G4double tauResult = 0.0;
     2753
     2754  G4double tlim = 8.e0 * ef;
    28392755  if (t > tlim) {
    28402756    t = tlim;
     
    28442760  if (bet/(std::sqrt(2.0)*10.0*(homega/6.582122)) <= 1.0) {
    28452761    tauResult = std::log(10.0*ef/t)/(bet*1.0e21);
    2846     //    assert(isnan(tauResult) == false);
    28472762  }
    28482763  else {
    28492764    tauResult = std::log(10.0*ef/t)/ (2.0*std::pow((10.0*homega/6.582122),2))*(bet*1.0e-21);
    2850     // assert(isnan(tauResult) == false);
    28512765  } //end if                                                           
    28522766
     
    28682782  }
    28692783
    2870   // assert(isnan(cramResult) == false);
    28712784  return cramResult;
    28722785}
     
    28832796  // LINEAR INTERPOLATION OF BS BK TABLE                               
    28842797
    2885   int i;
    2886 
    2887   G4double bipolResult;
     2798  int i = 0;
     2799
     2800  G4double bipolResult = 0.0;
    28882801
    28892802  const int bsbkSize = 54;
     
    29082821
    29092822  i = idint(y/(2.0e-02)) + 1;
    2910   assert(i >= 1);
    29112823   
    29122824  if(i >= bsbkSize) {
     
    29252837  }
    29262838 
    2927   // assert(isnan(bipolResult) == false);
    29282839  return bipolResult;
    29292840}
     
    29982909
    29992910  G4double pa[7],pz[7],pl[10];
    3000   G4double a,z,amin,amax,amin2,amax2,aa,zz,bfis;
    3001   G4double bfis0,ell,el,egs,el80,el20,elmax,sel80,sel20,x,y,q,qa,qb;
    3002   G4double aj,ak,a1,a2;
    3003 
    3004   G4int i,j,k,m;
    3005   G4int l;
     2911  for(G4int init_i = 0; init_i < 7; init_i++) {
     2912    pa[init_i] = 0.0;
     2913    pz[init_i] = 0.0;
     2914  }
     2915  for(G4int init_i = 0; init_i < 10; init_i++) {
     2916    pl[init_i] = 0.0;
     2917  }
     2918
     2919  G4double a = 0.0, z = 0.0, amin = 0.0, amax = 0.0, amin2 = 0.0;
     2920  G4double amax2 = 0.0, aa = 0.0, zz = 0.0, bfis = 0.0;
     2921  G4double bfis0 = 0.0, ell = 0.0, el = 0.0, egs = 0.0, el80 = 0.0, el20 = 0.0;
     2922  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;
     2923  G4double aj = 0.0, ak = 0.0, a1 = 0.0, a2 = 0.0;
     2924
     2925  G4int i = 0, j = 0, k = 0, m = 0;
     2926  G4int l = 0;
    30062927
    30072928  G4double emncof[4][5] = {{-9.01100e+2,-1.40818e+3, 2.77000e+3,-7.06695e+2, 8.89867e+2},
     
    31103031
    31113032  bfis=bfis0;
    3112   // assert(isnan(bfis) == false);
    31133033 
    31143034  (*sbfis)=bfis;
     
    31553075  }
    31563076
    3157   // assert(isnan(elmax) == false);
    31583077  (*selmax)=elmax;
    31593078
     
    31643083
    31653084  x = sel20/(*selmax);
    3166   // assert(isnan(x) == false);
    31673085  y = sel80/(*selmax);
    3168   // assert(isnan(y) == false);
    31693086 
    31703087  if(el <= sel20) {
     
    32523169  // TIRAGE ALEATOIRE DANS UNE EXPONENTIELLLE : Y=EXP(-X/T)
    32533170
    3254   // assert(isnan((-1*T*std::log(haz(k)))) == false);
    32553171  return (-1.0*T*std::log(haz(k)));
    32563172}
     
    32813197
    32823198  // ial generateur pour le cascade (et les iy pour eviter les correlations)
    3283   static G4int i;
     3199  static G4int i = 0;
    32843200  static G4int itest = 0;
    32853201  // programme principal
     
    32883204  p[pSize-1] = 8.0;
    32893205  G4double x = 0.1;
    3290   G4double x1;
    3291   G4double y;
     3206  G4double x1 = 0.0;
     3207  G4double y = 0.0;
    32923208
    32933209  if (itest == 1) {
     
    33123228  // par regression lineaire
    33133229 fmaxhaz120:
    3314   standardRandom(&y, &(hazard->igraine[17]));
     3230    y = randomGenerator->getRandom();
     3231  //  standardRandom(&y, &(hazard->igraine[17]));
    33153232  i = nint(y*100);
    33163233
     
    33363253  // Révisée pour a, z flottants 25/4/2002                           =
    33373254
    3338   G4double pace2;
     3255  G4double pace2 = 0.0;
    33393256
    33403257  G4int ii = idint(a+0.5);
     
    33833300  const G4int qcols = 70;
    33843301  G4double q[qrows][qcols];
     3302  for(G4int init_i = 0; init_i < qrows; init_i++) {
     3303    for(G4int init_j = 0; init_j < qcols; init_j++) {
     3304      q[init_i][init_j] = 0.0;
     3305    }
     3306  }
    33853307
    33863308  G4int ix=G4int(std::floor(x+0.5));
     
    34313353  (*z_par) = z;
    34323354  (*find_par) = find;
    3433 }
    3434 
    3435 
    3436 // Fission code
    3437 
    3438 void G4Abla::even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out)     
    3439 {
    3440   // Procedure to calculate I_OUT from R_IN in a way that
    3441   // on the average a flat distribution in R_IN results in a
    3442   // fluctuating distribution in I_OUT with an even-odd effect as
    3443   // given by R_EVEN_ODD
    3444 
    3445   //     /* ------------------------------------------------------------ */
    3446   //     /* EXAMPLES :                                                   */
    3447   //     /* ------------------------------------------------------------ */
    3448   //     /*    If R_EVEN_ODD = 0 :                                       */
    3449   //     /*           CEIL(R_IN)  ----                                   */
    3450   //     /*                                                              */
    3451   //     /*              R_IN ->                                         */
    3452   //     /*            (somewhere in between CEIL(R_IN) and FLOOR(R_IN)) */                                            */
    3453   //     /*                                                              */
    3454   //     /*           FLOOR(R_IN) ----       --> I_OUT                   */
    3455   //     /* ------------------------------------------------------------ */
    3456   //     /*    If R_EVEN_ODD > 0 :                                       */
    3457   //     /*      The interval for the above treatment is                 */
    3458   //     /*         larger for FLOOR(R_IN) = even and                    */
    3459   //     /*         smaller for FLOOR(R_IN) = odd                        */
    3460   //     /*    For R_EVEN_ODD < 0 : just opposite treatment              */
    3461   //     /* ------------------------------------------------------------ */
    3462 
    3463   //     /* ------------------------------------------------------------ */
    3464   //     /* On input:   R_ORIGIN    nuclear charge (real number)         */
    3465   //     /*             R_EVEN_ODD  requested even-odd effect            */
    3466   //     /* Intermediate quantity: R_IN = R_ORIGIN + 0.5                 */
    3467   //     /* On output:  I_OUT       nuclear charge (integer)             */
    3468   //     /* ------------------------------------------------------------ */
    3469 
    3470   //      G4double R_ORIGIN,R_IN,R_EVEN_ODD,R_REST,R_HELP;
    3471   G4double r_in,r_rest,r_help;
    3472   G4double r_floor;
    3473   G4double r_middle;
    3474   //      G4int I_OUT,N_FLOOR;
    3475   G4int n_floor;
    3476 
    3477   r_in = r_origin + 0.5;
    3478   r_floor = (float)((int)(r_in));
    3479   if (r_even_odd < 0.001) {
    3480     i_out = (int)(r_floor);
    3481   }
    3482   else {
    3483     r_rest = r_in - r_floor;
    3484     r_middle = r_floor + 0.5;
    3485     n_floor = (int)(r_floor);
    3486     if (n_floor%2 == 0) {
    3487       // even before modif.
    3488       r_help = r_middle + (r_rest - 0.5) * (1.0 - r_even_odd);
    3489     }
    3490     else {
    3491       // odd before modification
    3492       r_help = r_middle + (r_rest - 0.5) * (1.0 + r_even_odd);
    3493     }
    3494     i_out = (int)(r_help);
    3495   }
    3496 }
    3497 
    3498 G4double G4Abla::umass(G4double z,G4double n,G4double beta)
    3499 {
    3500   // liquid-drop mass, Myers & Swiatecki, Lysekil, 1967
    3501   // pure liquid drop, without pairing and shell effects
    3502 
    3503   // On input:    Z     nuclear charge of nucleus
    3504   //              N     number of neutrons in nucleus
    3505   //              beta  deformation of nucleus
    3506   // On output:   binding energy of nucleus
    3507 
    3508   G4double a,umass;
    3509   G4double alpha;
    3510   G4double xcom,xvs,xe;
    3511   const G4double pi = 3.1416;
    3512      
    3513   a = n + z;
    3514   alpha = ( std::sqrt(5.0/(4.0*pi)) ) * beta;
    3515   // assert(isnan(alpha) == false);
    3516  
    3517   xcom = 1.0 - 1.7826 * ((a - 2.0*z)/a)*((a - 2.0*z)/a);
    3518   // assert(isnan(xcom) == false);
    3519   // factor for asymmetry dependence of surface and volume term
    3520   xvs = - xcom * ( 15.4941 * a -
    3521                    17.9439 * std::pow(a,0.66667) * (1.0+0.4*alpha*alpha) );
    3522   // sum of volume and surface energy
    3523   xe = z*z * (0.7053/(std::pow(a,0.33333)) * (1.0-0.2*alpha*alpha) - 1.1529/a);
    3524   // assert(isnan(xe) == false);
    3525   umass = xvs + xe;
    3526  
    3527   return umass;
    3528 }
    3529 
    3530 G4double G4Abla::ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d)
    3531 {
    3532   // Coulomb potential between two nuclei
    3533   // surfaces are in a distance of d
    3534   // in a tip to tip configuration
    3535 
    3536   // approximate formulation
    3537   // On input: Z1      nuclear charge of first nucleus
    3538   //           N1      number of neutrons in first nucleus
    3539   //           beta1   deformation of first nucleus
    3540   //           Z2      nuclear charge of second nucleus
    3541   //           N2      number of neutrons in second nucleus
    3542   //           beta2   deformation of second nucleus
    3543   //           d       distance of surfaces of the nuclei
    3544 
    3545   //      G4double Z1,N1,beta1,Z2,N2,beta2,d,ecoul;
    3546   G4double ecoul;
    3547   G4double dtot;
    3548   const G4double r0 = 1.16;
    3549 
    3550   dtot = r0 * ( std::pow((z1+n1),0.33333) * (1.0+(2.0/3.0)*beta1)
    3551                 + std::pow((z2+n2),0.33333) * (1.0+(2.0/3.0)*beta2) ) + d;
    3552   ecoul = z1 * z2 * 1.44 / dtot;
    3553 
    3554   // assert(isnan(ecoul) == false);
    3555   return ecoul;
    3556 }
    3557 
    3558 void G4Abla::fissionDistri(G4double &a,G4double &z,G4double &e,
    3559                            G4double &a1,G4double &z1,G4double &e1,G4double &v1,
    3560                            G4double &a2,G4double &z2,G4double &e2,G4double &v2)
    3561 {
    3562   //  On input: A, Z, E (mass, atomic number and exc. energy of compound nucleus
    3563   //                     before fission)
    3564   //  On output: Ai, Zi, Ei (mass, atomic number and exc. energy of fragment 1 and 2
    3565   //                     after fission)
    3566 
    3567   //  Additionally calculated but not put in the parameter list:
    3568   //  Kinetic energy of prefragments EkinR1, EkinR2
    3569 
    3570   //  Translation of SIMFIS18.PLI (KHS, 2.1.2001)
    3571 
    3572   // This program calculates isotopic distributions of fission fragments
    3573   // with a semiempirical model                     
    3574   // Copy from SIMFIS3, KHS, 8. February 1995       
    3575   // Modifications made by Jose Benlliure and KHS in August 1996
    3576   // Energy counted from lowest barrier (J. Benlliure, KHS 1997)
    3577   // Some bugs corrected (J. Benlliure, KHS 1997)         
    3578   // Version used for thesis S. Steinhaueser (August 1997)
    3579   // (Curvature of LD potential increased by factor of 2!)
    3580 
    3581   // Weiter veraendert mit der Absicht, eine Version zu erhalten, die
    3582   // derjenigen entspricht, die von J. Benlliure et al.
    3583   // in Nucl. Phys. A 628 (1998) 458 verwendet wurde,
    3584   // allerdings ohne volle Neutronenabdampfung.
    3585 
    3586   // The excitation energy was calculate now for each fission channel
    3587   // separately. The dissipation from saddle to scission was taken from
    3588   // systematics, the deformation energy at scission considers the shell
    3589   // effects in a simplified way, and the fluctuation is included.
    3590   // KHS, April 1999
    3591 
    3592   // The width in N/Z was carefully adapted to values given by Lang et al.
    3593 
    3594   // The width and eventually a shift in N/Z (polarization) follows the
    3595   // following rules:                                       
    3596 
    3597   // The line N/Z following UCD has an angle of std::atan(Zcn/Ncn)
    3598   // to the horizontal axis on a chart of nuclides.
    3599   // (For 238U the angle is 32.2 deg.)
    3600 
    3601   // The following relations hold: (from Armbruster)
    3602   //
    3603   // sigma(N) (A=const) = sigma(Z) (A=const)
    3604   // sigma(A) (N=const) = sigma(Z) (N=const)
    3605   // sigma(A) (Z=const) = sigma(N) (Z=const)
    3606   //
    3607   // From this we get:
    3608   // sigma(Z) (N=const) * N = sigma(N) (Z=const) * Z
    3609   // sigma(A) (Z=const) = sigma(Z) (A=const) * A/Z
    3610   // sigma(N) (Z=const) = sigma(Z) (A=const) * A/Z
    3611   // Z*sigma(N) (Z=const) = N*sigma(Z) (N=const) = A*sigma(Z) (A=const)
    3612 
    3613   // Excitation energy now calculated above the lowest potential point
    3614   // Inclusion of a distribution of excitation energies             
    3615 
    3616   // Several modifications, starting from SIMFIS12: KHS November 2000
    3617   // This version seems to work quite well for 238U.                 
    3618   // The transition from symmetric to asymmetric fission around 226Th
    3619   // is reasonably well reproduced, although St. I is too strong and St. II
    3620   // is too weak. St. I and St. II are also weakly seen for 208Pb.
    3621 
    3622   // Extensions for an event generator of fission events (21.11.2000,KHS)
    3623 
    3624   // Defalt parameters (IPARS) rather carefully adjusted to
    3625   // pre-neutron mass distributions of Vives et al. (238U + n)
    3626   // Die Parameter Fgamma1 und Fgamma2 sind kleiner als die resultierenden
    3627   // Breiten der Massenverteilungen!!! 
    3628   // Fgamma1 und Fgamma2 wurden angepaï¿œ, so daï¿œ
    3629   // Sigma-A(ST-I) = 3.3, Sigma-A(St-II) = 5.8 (nach Vives)
    3630 
    3631   // Parameters of the model carefully adjusted by KHS (2.2.2001) to
    3632   // 238U + 208Pb, 1000 A MeV, Timo Enqvist et al.         
    3633 
    3634 
    3635   G4double     n;
    3636   G4double     nlight1,nlight2;
    3637   G4double     aheavy1,alight1,aheavy2,alight2;
    3638   G4double     eheavy1,elight1,eheavy2,elight2;
    3639   G4double     zheavy1_shell,zheavy2_shell;
    3640   G4double     zlight1,zlight2;
    3641   G4double     masscurv;
    3642   G4double     sasymm1,sasymm2,ssymm,ysum,yasymm;
    3643   G4double     ssymm_mode1,ssymm_mode2;
    3644   G4double     cz_asymm1_saddle,cz_asymm2_saddle;
    3645   // Curvature at saddle, modified by ld-potential
    3646   G4double     wzasymm1_saddle, wzasymm2_saddle, wzsymm_saddle;
    3647   G4double     wzasymm1_scission, wzasymm2_scission, wzsymm_scission;
    3648   G4double     wzasymm1,wzasymm2,wzsymm;
    3649   G4double     nlight1_eff, nlight2_eff;
    3650   G4int  imode = 0;
    3651   G4double     rmode;
    3652   G4double     z1mean = 0.0, z2mean = 0.0, z1width = 0.0, za1width = 0.0;
    3653   //      G4double     Z1,Z2,N1R,N2R,A1R,A2R,N1,N2,A1,A2;
    3654   G4double     n1r,n2r,a1r,a2r,n1,n2;
    3655 
    3656   G4double     zsymm,nsymm,asymm;
    3657   G4double     n1mean = 0.0, n2mean, n1width;
    3658   G4double     dueff;
    3659   // effective shell effect at lowest barrier
    3660   G4double     eld;
    3661   // Excitation energy with respect to ld barrier
    3662   G4double     re1,re2,re3;
    3663   G4double     eps1,eps2;
    3664   G4double     n1ucd,n2ucd,z1ucd,z2ucd;
    3665   G4double     beta = 0.0, beta1 = 0.0, beta2 = 0.0;
    3666 
    3667   G4double     dn1_pol;
    3668   // shift of most probable neutron number for given Z,
    3669   // according to polarization
    3670   G4int  i_help;
    3671 
    3672   //   /* Parameters of the semiempirical fission model */
    3673   G4double a_levdens;
    3674   //           /* level-density parameter */
    3675   G4double a_levdens_light1,a_levdens_light2;
    3676   G4double a_levdens_heavy1,a_levdens_heavy2;
    3677   const G4double r_null = 1.16;
    3678   //          /* radius parameter */
    3679   G4double epsilon_1_saddle,epsilon0_1_saddle;
    3680   G4double epsilon_2_saddle,epsilon0_2_saddle,epsilon_symm_saddle;
    3681   G4double epsilon_1_scission,epsilon0_1_scission;
    3682   G4double epsilon_2_scission,epsilon0_2_scission;
    3683   G4double epsilon_symm_scission;
    3684   //                                   /* modified energy */
    3685   G4double e_eff1_saddle,e_eff2_saddle;
    3686   G4double epot0_mode1_saddle,epot0_mode2_saddle,epot0_symm_saddle;
    3687   G4double epot_mode1_saddle,epot_mode2_saddle,epot_symm_saddle;
    3688   G4double e_defo, e_defo1,e_defo2, e_scission = 0.0, e_asym;
    3689   G4double e1exc = 0.0, e2exc = 0.0;
    3690   G4double e1exc_sigma,e2exc_sigma;
    3691   G4double e1final,e2final;
    3692 
    3693   const G4double r0 = 1.16;
    3694   G4double tker;
    3695   G4double ekin1,ekin2;
    3696   //      G4double EkinR1,EkinR2,E1,E2,V1,V2;
    3697   G4double ekinr1,ekinr2;
    3698   G4int icz,k;
    3699 
    3700   //   Input parameters:
    3701   //OMMENT(Nuclear charge number);
    3702   //      G4double Z;
    3703   //OMMENT(Nuclear mass number);
    3704   //      G4double A;
    3705   //OMMENT(Excitation energy above fission barrier);
    3706   //      G4double E;
    3707 
    3708   //   Model parameters:
    3709   //OMMENT(position of heavy peak valley 1);
    3710   const G4double nheavy1 = 83.0;
    3711   //OMMENT(position of heavy peak valley 2);
    3712   const G4double nheavy2 = 90.0;
    3713   //OMMENT(Shell effect for valley 1);
    3714   const G4double delta_u1_shell = -2.65;
    3715   //        Parameter (Delta_U1_shell = -2)
    3716   //OMMENT(Shell effect for valley 2);
    3717   const G4double delta_u2_shell = -3.8;
    3718   //        Parameter (Delta_U2_shell = -3.2)
    3719   //OMMENT(I: used shell effect);
    3720   G4double delta_u1;
    3721   //omment(I: used shell effect);
    3722   G4double delta_u2;
    3723   //OMMENT(Curvature of asymmetric valley 1);
    3724   const G4double cz_asymm1_shell = 0.7;
    3725   //OMMENT(Curvature of asymmetric valley 2);
    3726   const G4double cz_asymm2_shell = 0.15;
    3727   //OMMENT(Factor for width of distr. valley 1);
    3728   const G4double fwidth_asymm1 = 0.63;
    3729   //OMMENT(Factor for width of distr. valley 2);
    3730   const G4double fwidth_asymm2 = 0.97;
    3731   //       Parameter (CZ_asymm2_scission = 0.12)
    3732   //OMMENT(Parameter x: a = A/x);
    3733   const G4double xlevdens = 12.0;
    3734   //OMMENT(Factor to gamma_heavy1);
    3735   const G4double fgamma1 = 2.0;
    3736   //OMMENT(I: fading of shells (general));
    3737   G4double gamma;
    3738   //OMMENT(I: fading of shell 1);
    3739   G4double gamma_heavy1;
    3740   //OMMENT(I: fading of shell 2);
    3741   G4double gamma_heavy2;
    3742   //OMMENT(Zero-point energy at saddle);
    3743   const G4double e_zero_point = 0.5;
    3744   //OMMENT(I: friction from saddle to scission);
    3745   G4double e_saddle_scission;
    3746   //OMMENT(Friction factor);
    3747   const G4double friction_factor = 1.0;
    3748   //OMMENT(I: Internal counter for different modes); INIT(0,0,0)
    3749   //      Integer*4 I_MODE(3)
    3750   //OMMENT(I: Yield of symmetric mode);
    3751   G4double ysymm = 0.0;
    3752   //OMMENT(I: Yield of asymmetric mode 1);
    3753   G4double yasymm1 = 0.0;
    3754   //OMMENT(I: Yield of asymmetric mode 2);
    3755   G4double yasymm2 = 0.0;
    3756   //OMMENT(I: Effective position of valley 1);
    3757   G4double nheavy1_eff;
    3758   //OMMENT(I: position of heavy peak valley 1);
    3759   G4double zheavy1;
    3760   //omment(I: Effective position of valley 2);
    3761   G4double nheavy2_eff;
    3762   //OMMENT(I: position of heavy peak valley 2);
    3763   G4double zheavy2;
    3764   //omment(I: Excitation energy above saddle 1);
    3765   G4double eexc1_saddle;
    3766   //omment(I: Excitation energy above saddle 2);
    3767   G4double eexc2_saddle;
    3768   //omment(I: Excitation energy above lowest saddle);
    3769   G4double eexc_max;
    3770   //omment(I: Effective mass mode 1);
    3771   G4double aheavy1_mean;
    3772   //omment(I: Effective mass mode 2);
    3773   G4double aheavy2_mean;
    3774   //omment(I: Width of symmetric mode);
    3775   G4double wasymm_saddle;
    3776   //OMMENT(I: Width of asymmetric mode 1);
    3777   G4double waheavy1_saddle;
    3778   //OMMENT(I: Width of asymmetric mode 2);
    3779   G4double waheavy2_saddle;
    3780   //omment(I: Width of symmetric mode);
    3781   G4double wasymm;
    3782   //OMMENT(I: Width of asymmetric mode 1);
    3783   G4double waheavy1;
    3784   //OMMENT(I: Width of asymmetric mode 2);
    3785   G4double waheavy2;
    3786   //OMMENT(I: Even-odd effect in Z);
    3787   G4double r_e_o,r_e_o_exp;
    3788   //OMMENT(I: Curveture of symmetric valley);
    3789   G4double cz_symm;
    3790   //OMMENT(I: Curvature of mass distribution for fixed Z);
    3791   G4double cn;
    3792   //OMMENT(I: Curvature of Z distribution for fixed A);
    3793   G4double cz;
    3794   //OMMENT(Minimum neutron width for constant Z);
    3795   const G4double sigzmin = 1.16;
    3796   //OMMENT(Surface distance of scission configuration);
    3797   const G4double d = 2.0;
    3798 
    3799   //   /* Charge polarisation from Wagemanns p. 397: */
    3800   //OMMENT(Charge polarisation standard I);
    3801   const G4double cpol1 = 0.65;
    3802   //OMMENT(Charge polarisation standard II);
    3803   const G4double cpol2 = 0.55;
    3804   //OMMENT(=1: Polarisation simult. in N and Z);
    3805   const G4int nzpol = 1;
    3806   //OMMENT(=1: test output, =0: no test output);
    3807   const G4int itest = 0;
    3808      
    3809   //      G4double UMASS, ECOUL, reps1, reps2, rn1_pol;
    3810   G4double reps1, reps2, rn1_pol;
    3811   //      Float_t HAZ,GAUSSHAZ;
    3812   G4int kkk = 0;
    3813   //  G4int kkk = 10; // PK
    3814  
    3815   //     I_MODE = 0;
    3816 
    3817   if(itest == 1) {
    3818     G4cout << " cn mass " << a << G4endl;
    3819     G4cout << " cn charge " << z << G4endl;
    3820     G4cout << " cn energy " << e << G4endl;
    3821   }
    3822 
    3823   //     /* average Z of asymmetric and symmetric components: */
    3824   n = a - z;  /* neutron number of the fissioning nucleus */
    3825 
    3826   k = 0;
    3827   icz = 0;
    3828   if ( (std::pow(z,2)/a < 25.0) || (n < nheavy2) || (e > 500.0) ) {
    3829     icz = -1;
    3830     //          GOTO 1002;
    3831     goto milledeux;
    3832   }
    3833 
    3834   nlight1 = n - nheavy1;
    3835   nlight2 = n - nheavy2;
    3836        
    3837   //    /* Polarisation assumed for standard I and standard II:
    3838   //      Z - Zucd = cpol (for A = const);
    3839   //      from this we get (see Armbruster)
    3840   //      Z - Zucd =  Acn/Ncn * cpol (for N = const)                        */
    3841 
    3842   zheavy1_shell = ((nheavy1/n) * z) - ((a/n) * cpol1);
    3843   zheavy2_shell = ((nheavy2/n) * z) - ((a/n) * cpol2);
    3844 
    3845   e_saddle_scission =
    3846     (-24.0 + 0.02227 * (std::pow(z,2))/(std::pow(a,0.33333)) ) * friction_factor;
    3847    
    3848   //      /* Energy dissipated from saddle to scission                        */
    3849   //      /* F. Rejmund et al., Nucl. Phys. A 678 (2000) 215, fig. 4 b        */
    3850   //      E_saddle_scission = DMAX1(0.,E_saddle_scission);
    3851   if (e_saddle_scission > 0.) {
    3852     e_saddle_scission = e_saddle_scission;
    3853   }
    3854   else {
    3855     e_saddle_scission = 0.;
    3856   }
    3857   //     /* Semiempirical fission model: */
    3858 
    3859   //    /* Fit to experimental result on curvature of potential at saddle */
    3860   //           /* reference:                                              */
    3861   //    /* IF Z**2/A < 33.15E0 THEN
    3862   //       MassCurv = 30.5438538E0 - 4.00212049E0 * Z**2/A
    3863   //                               + 0.11983384E0 * Z**4 / (A**2) ;
    3864   //     ELSE
    3865   //       MassCurv = 10.E0 ** (7.16993332E0 - 0.26602401E0 * Z**2/A
    3866   //                               + 0.00283802E0 * Z**4 / (A**2)) ;  */
    3867   //  /* New parametrization of T. Enqvist according to Mulgin et al. 1998 */
    3868   if ( (std::pow(z,2))/a < 34.0) {
    3869     masscurv =  std::pow( 10.0,(-1.093364 + 0.082933 * (std::pow(z,2)/a)
    3870                            - 0.0002602 * (std::pow(z,4)/std::pow(a,2))) );
    3871   } else {
    3872     masscurv = std::pow( 10.0,(3.053536 - 0.056477 * (std::pow(z,2)/a)
    3873                           + 0.0002454 * (std::pow(z,4)/std::pow(a,2))) );
    3874   }
    3875 
    3876   cz_symm = (8.0/std::pow(z,2)) * masscurv;
    3877 
    3878   if(itest == 1) {
    3879     G4cout << "cz_symmetry= " << cz_symm << G4endl;
    3880   }
    3881 
    3882   if (cz_symm < 0) {
    3883     icz = -1;
    3884     //          GOTO 1002;
    3885     goto milledeux;
    3886   }
    3887 
    3888   //  /* proton number in symmetric fission (centre) */
    3889   zsymm  = z/2.0;
    3890   nsymm  = n/2.0;
    3891   asymm = nsymm + zsymm;
    3892 
    3893   zheavy1 = (cz_symm*zsymm + cz_asymm1_shell*zheavy1_shell)/(cz_symm + cz_asymm1_shell);
    3894   zheavy2 = (cz_symm*zsymm + cz_asymm2_shell*zheavy2_shell)/(cz_symm + cz_asymm2_shell);
    3895   //            /* position of valley due to influence of liquid-drop potential */
    3896   nheavy1_eff = (zheavy1 + (a/n * cpol1))*(n/z);
    3897   nheavy2_eff = (zheavy2 + (a/n * cpol2))*(n/z);
    3898   nlight1_eff = n - nheavy1_eff;
    3899   nlight2_eff = n - nheavy2_eff;
    3900   //  /* proton number of light fragments (centre) */
    3901   zlight1 = z - zheavy1;
    3902   //  /* proton number of light fragments (centre) */
    3903   zlight2 = z - zheavy2;
    3904   aheavy1 = nheavy1_eff + zheavy1;
    3905   aheavy2 = nheavy2_eff + zheavy2;
    3906   aheavy1_mean = aheavy1;
    3907   aheavy2_mean = aheavy2;
    3908   alight1 = nlight1_eff + zlight1;
    3909   alight2 = nlight2_eff + zlight2;
    3910 
    3911   a_levdens = a / xlevdens;
    3912   a_levdens_heavy1 = aheavy1 / xlevdens;
    3913   a_levdens_heavy2 = aheavy2 / xlevdens;
    3914   a_levdens_light1 = alight1 / xlevdens;
    3915   a_levdens_light2 = alight2 / xlevdens;
    3916   gamma = a_levdens / (0.4 * (std::pow(a,1.3333)) );
    3917   gamma_heavy1 = ( a_levdens_heavy1 / (0.4 * (std::pow(aheavy1,1.3333)) ) ) * fgamma1;
    3918   gamma_heavy2 = a_levdens_heavy2 / (0.4 * (std::pow(aheavy2,1.3333)) );
    3919 
    3920   cz_asymm1_saddle = cz_asymm1_shell + cz_symm;
    3921   cz_asymm2_saddle = cz_asymm2_shell + cz_symm;
    3922        
    3923   // Up to here: Ok! Checked CS 10/10/05           
    3924 
    3925   cn = umass(zsymm,(nsymm+1.),0.0) + umass(zsymm,(nsymm-1.),0.0)
    3926     + 1.44 * (std::pow(zsymm,2))/
    3927     ( (std::pow(r_null,2)) *
    3928       ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) *
    3929       ( std::pow((asymm+1.0),0.33333) + std::pow((asymm-1.0),0.33333) ) )
    3930     - 2.0 * umass(zsymm,nsymm,0.0)
    3931     - 1.44 * (std::pow(zsymm,2))/
    3932     ( ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) *
    3933       ( 2.0 * r_null * (std::pow(asymm,0.33333)) ) );
    3934        
    3935   // /* shell effect in valley of mode 1 */
    3936   delta_u1 = delta_u1_shell + (std::pow((zheavy1_shell-zheavy1),2))*cz_asymm1_shell;
    3937   // /* shell effect in valley of mode 2 */
    3938   delta_u2 = delta_u2_shell + (std::pow((zheavy2_shell-zheavy2),2))*cz_asymm2_shell;
    3939 
    3940   //     /* liquid drop energies
    3941   //        at the centres of the different shell effects
    3942   //        with respect to liquid drop at symmetry: */
    3943   epot0_mode1_saddle = (std::pow((zheavy1-zsymm),2)) * cz_symm;
    3944   epot0_mode2_saddle = (std::pow((zheavy2-zsymm),2)) * cz_symm;
    3945   epot0_symm_saddle = 0.0;
    3946      
    3947   if (itest == 1) {
    3948     G4cout << "check zheavy1 = " << zheavy1  << G4endl;
    3949     G4cout << "check zheavy2 = " << zheavy2  << G4endl;
    3950     G4cout << "check zsymm = " << zsymm  << G4endl;
    3951     G4cout << "check czsymm = " << cz_symm  << G4endl;
    3952     G4cout << "check epot0_mode1_saddle = " << epot0_mode1_saddle  << G4endl;
    3953     G4cout << "check epot0_mode2_saddle = " << epot0_mode2_saddle  << G4endl;
    3954     G4cout << "check epot0_symm_saddle = " << epot0_symm_saddle  << G4endl;
    3955     G4cout << "delta_u1 = " << delta_u1 << G4endl;
    3956     G4cout << "delta_u2 = " << delta_u2 << G4endl;
    3957   }
    3958      
    3959   //     /* energies including shell effects
    3960   //        at the centres of the different shell effects
    3961   //        with respect to liquid drop at symmetry: */
    3962   epot_mode1_saddle = epot0_mode1_saddle + delta_u1;
    3963   epot_mode2_saddle = epot0_mode2_saddle + delta_u2;
    3964   epot_symm_saddle = epot0_symm_saddle;
    3965   if (itest == 1) {
    3966     G4cout << "check epot_mode1_saddle = " << epot_mode1_saddle  << G4endl;
    3967     G4cout << "check epot_mode2_saddle = " << epot_mode2_saddle  << G4endl;
    3968     G4cout << "check epot_symm_saddle = " << epot_symm_saddle  << G4endl;
    3969   }
    3970 
    3971   //     /* Minimum of potential with respect to ld potential at symmetry */
    3972   dueff = min(epot_mode1_saddle,epot_mode2_saddle);
    3973   dueff = min(dueff,epot_symm_saddle);
    3974   dueff = dueff - epot_symm_saddle;
    3975 
    3976   eld = e + dueff + e_zero_point;
    3977      
    3978   if (itest == 1) {
    3979     G4cout << "check dueff = " << dueff  << G4endl;
    3980     G4cout << "check e = " << e  << G4endl;
    3981     G4cout << "check e_zero_point = " << e_zero_point  << G4endl;
    3982     G4cout << "check eld = " << eld  << G4endl;
    3983   }
    3984   // Up to here: Ok! Checked CS 10/10/05
    3985      
    3986   //          /* E = energy above lowest effective barrier */
    3987   //          /* Eld = energy above liquid-drop barrier */
    3988 
    3989   //     /* Due to this treatment the energy E on input means the excitation  */
    3990   //     /* energy above the lowest saddle.                                   */
    3991 
    3992   //  /* These energies are not used */
    3993   eheavy1 = e * aheavy1 / a;
    3994   eheavy2 = e * aheavy2 / a;
    3995   elight1 = e * alight1 / a;
    3996   elight2 = e * alight2 / a;
    3997 
    3998   epsilon0_1_saddle = eld - e_zero_point - epot0_mode1_saddle;
    3999   //            /* excitation energy at saddle mode 1 without shell effect */
    4000   epsilon0_2_saddle = eld - e_zero_point - epot0_mode2_saddle;
    4001   //            /* excitation energy at saddle mode 2 without shell effect */
    4002 
    4003   epsilon_1_saddle = eld - e_zero_point - epot_mode1_saddle;
    4004   //            /* excitation energy at saddle mode 1 with shell effect */
    4005   epsilon_2_saddle = eld - e_zero_point - epot_mode2_saddle;
    4006   //            /* excitation energy at saddle mode 2 with shell effect */
    4007   epsilon_symm_saddle = eld - e_zero_point - epot_symm_saddle;
    4008 
    4009   //  /* global parameters */
    4010   eexc1_saddle = epsilon_1_saddle;
    4011   eexc2_saddle = epsilon_2_saddle;
    4012   eexc_max = max(eexc1_saddle,eexc2_saddle);
    4013   eexc_max = max(eexc_max,eld);
    4014        
    4015   //         /* EEXC_MAX is energy above the lowest saddle */
    4016 
    4017 
    4018   epsilon0_1_scission = eld + e_saddle_scission - epot0_mode1_saddle;
    4019   //                    /* excitation energy without shell effect */
    4020   epsilon0_2_scission = eld + e_saddle_scission - epot0_mode2_saddle;
    4021   //                    /* excitation energy without shell effect */
    4022 
    4023   epsilon_1_scission = eld + e_saddle_scission - epot_mode1_saddle;
    4024   //                    /* excitation energy at scission */
    4025   epsilon_2_scission = eld+ e_saddle_scission - epot_mode2_saddle;
    4026   //                    /* excitation energy at scission */
    4027   epsilon_symm_scission = eld + e_saddle_scission - epot_symm_saddle;
    4028   //           /* excitation energy of symmetric fragment at scission */
    4029 
    4030   //     /* Calculate widhts at the saddle:                */
    4031 
    4032   e_eff1_saddle = epsilon0_1_saddle - delta_u1 * (std::exp((-epsilon_1_saddle*gamma)));
    4033    
    4034   if (e_eff1_saddle > 0.0) {
    4035     wzasymm1_saddle = std::sqrt( (0.5 *
    4036                              (std::sqrt(1.0/a_levdens*e_eff1_saddle)) /
    4037                              (cz_asymm1_shell * std::exp((-epsilon_1_saddle*gamma)) + cz_symm) ) );
    4038   }
    4039   else {
    4040     wzasymm1_saddle = 1.0;
    4041   }
    4042 
    4043   e_eff2_saddle = epsilon0_2_saddle - delta_u2 * (std::exp((-epsilon_2_saddle*gamma)));
    4044   if (e_eff2_saddle > 0.0) {
    4045     wzasymm2_saddle = std::sqrt( (0.5 *
    4046                              (std::sqrt(1.0/a_levdens*e_eff2_saddle)) /
    4047                              (cz_asymm2_shell * std::exp((-epsilon_2_saddle*gamma)) + cz_symm) ) );
    4048   }
    4049   else {
    4050     wzasymm2_saddle = 1.0;
    4051   }
    4052 
    4053   if (eld > e_zero_point) {
    4054     if ( (eld + epsilon_symm_saddle) < 0.0)  {
    4055       G4cout << "<e> eld + epsilon_symm_saddle < 0" << G4endl;
    4056     }
    4057     wzsymm_saddle = std::sqrt( (0.5 *
    4058                            (std::sqrt(1.0/a_levdens*(eld+epsilon_symm_saddle))) / cz_symm ) );
    4059   } else {
    4060     wzsymm_saddle = 1.0;
    4061   }
    4062 
    4063   if (itest == 1) {
    4064     G4cout << "wz1(saddle) = " << wzasymm1_saddle << G4endl;
    4065     G4cout << "wz2(saddle) = " << wzasymm2_saddle << G4endl;
    4066     G4cout << "wzsymm(saddle) = " << wzsymm_saddle << G4endl;
    4067   }
    4068      
    4069   //     /* Calculate widhts at the scission point: */
    4070   //     /* fits of ref. Beizin 1991 (Plots brought to GSI by Sergei Zhdanov) */
    4071 
    4072   wzsymm_scission = wzsymm_saddle;
    4073 
    4074   if (e_saddle_scission == 0.0) {
    4075 
    4076     wzasymm1_scission = wzasymm1_saddle;
    4077     wzasymm2_scission = wzasymm2_saddle;
    4078 
    4079   }
    4080   else {
    4081 
    4082     if (nheavy1_eff > 75.0) {
    4083       wzasymm1_scission = (std::sqrt(21.0)) * z/a;
    4084       wzasymm2_scission = (std::sqrt (max( (70.0-28.0)/3.0*(z*z/a-35.0)+28.,0.0 )) ) * z/a;
    4085     }
    4086     else {
    4087       wzasymm1_scission = wzasymm1_saddle;
    4088       wzasymm2_scission = wzasymm2_saddle;
    4089     }
    4090 
    4091   }
    4092 
    4093   wzasymm1_scission = max(wzasymm1_scission,wzasymm1_saddle);
    4094   wzasymm2_scission = max(wzasymm2_scission,wzasymm2_saddle);
    4095 
    4096   wzasymm1 = wzasymm1_scission * fwidth_asymm1;
    4097   wzasymm2 = wzasymm2_scission * fwidth_asymm2;
    4098   wzsymm = wzsymm_scission;
    4099 
    4100   /*      if (ITEST == 1) {
    4101           G4cout << "WZ1(scission) = " << WZasymm1_scission << G4endl;
    4102           G4cout << "WZ2(scission) = " << WZasymm2_scission << G4endl;
    4103           G4cout << "WZsymm(scission) = " << WZsymm_scission << G4endl;
    4104           }
    4105           if (ITEST == 1) {
    4106           G4cout << "WZ1(scission) final= " << WZasymm1 << G4endl;
    4107           G4cout << "WZ2(scission) final= " << WZasymm2 << G4endl;
    4108           G4cout << "WZsymm(scission) final= " << WZsymm << G4endl;
    4109           } */
    4110      
    4111   wasymm = wzsymm * a/z;
    4112   waheavy1 = wzasymm1 * a/z;
    4113   waheavy2 = wzasymm2 * a/z;
    4114 
    4115   wasymm_saddle = wzsymm_saddle * a/z;
    4116   waheavy1_saddle = wzasymm1_saddle * a/z;
    4117   waheavy2_saddle = wzasymm2_saddle * a/z;
    4118 
    4119   if (itest == 1) {
    4120     G4cout << "wasymm = " << wzsymm << G4endl;
    4121     G4cout << "waheavy1 = " << waheavy1 << G4endl;
    4122     G4cout << "waheavy2 = " << waheavy2 << G4endl;
    4123   }
    4124   // Up to here: Ok! Checked CS 11/10/05
    4125            
    4126   if ( (epsilon0_1_saddle - delta_u1*std::exp((-epsilon_1_saddle*gamma_heavy1))) < 0.0) {
    4127     sasymm1 = -10.0;
    4128   }
    4129   else {
    4130     sasymm1 = 2.0 * std::sqrt( a_levdens * (epsilon0_1_saddle -
    4131                                        delta_u1*(std::exp((-epsilon_1_saddle*gamma_heavy1))) ) );
    4132   }
    4133 
    4134   if ( (epsilon0_2_saddle - delta_u2*std::exp((-epsilon_2_saddle*gamma_heavy2))) < 0.0) {
    4135     sasymm2 = -10.0;
    4136   }
    4137   else {
    4138     sasymm2 = 2.0 * std::sqrt( a_levdens * (epsilon0_2_saddle -
    4139                                        delta_u2*(std::exp((-epsilon_2_saddle*gamma_heavy2))) ) );
    4140   }
    4141              
    4142   if (epsilon_symm_saddle > 0.0) {
    4143     ssymm = 2.0 * std::sqrt( a_levdens*(epsilon_symm_saddle) );
    4144   }
    4145   else {
    4146     ssymm = -10.0;
    4147   }
    4148      
    4149   if (ssymm > -10.0) {
    4150     ysymm = 1.0;
    4151 
    4152     if (epsilon0_1_saddle < 0.0) {
    4153       //  /* low energy */
    4154       yasymm1 = std::exp((sasymm1-ssymm)) * wzasymm1_saddle / wzsymm_saddle * 2.0;
    4155       //           /* factor of 2 for symmetry classes */
    4156     }
    4157     else {
    4158       //        /* high energy */
    4159       ssymm_mode1 = 2.0 * std::sqrt( a_levdens*(epsilon0_1_saddle) );
    4160       yasymm1 = ( std::exp((sasymm1-ssymm)) - std::exp((ssymm_mode1 - ssymm)) ) 
    4161         * wzasymm1_saddle / wzsymm_saddle * 2.0;
    4162     }
    4163 
    4164     if (epsilon0_2_saddle < 0.0) {
    4165       //  /* low energy */
    4166       yasymm2 = std::exp((sasymm2-ssymm)) * wzasymm2_saddle / wzsymm_saddle * 2.0;
    4167       //           /* factor of 2 for symmetry classes */
    4168     }
    4169     else {
    4170       //        /* high energy */
    4171       ssymm_mode2 = 2.0 * std::sqrt( a_levdens*(epsilon0_2_saddle) );
    4172       yasymm2 = ( std::exp((sasymm2-ssymm)) - std::exp((ssymm_mode2 - ssymm)) ) 
    4173         * wzasymm2_saddle / wzsymm_saddle * 2.0;
    4174     }       
    4175     //                            /* difference in the exponent in order */
    4176     //                            /* to avoid numerical overflow         */
    4177 
    4178   }
    4179   else {
    4180     if ( (sasymm1 > -10.0) && (sasymm2 > -10.0) ) {
    4181       ysymm = 0.0;
    4182       yasymm1 = std::exp(sasymm1) * wzasymm1_saddle * 2.0;
    4183       yasymm2 = std::exp(sasymm2) * wzasymm2_saddle * 2.0;
    4184     }
    4185   }
    4186        
    4187   //  /* normalize */
    4188   ysum = ysymm + yasymm1 + yasymm2;
    4189   if (ysum > 0.0) {
    4190     ysymm = ysymm / ysum;
    4191     yasymm1 = yasymm1 / ysum;
    4192     yasymm2 = yasymm2 / ysum;
    4193     yasymm = yasymm1 + yasymm2;
    4194   }
    4195   else {
    4196     ysymm = 0.0;
    4197     yasymm1 = 0.0;
    4198     yasymm2 = 0.0;
    4199     //        /* search minimum threshold and attribute all events to this mode */
    4200     if ( (epsilon_symm_saddle < epsilon_1_saddle) && (epsilon_symm_saddle < epsilon_2_saddle) ) {
    4201       ysymm = 1.0;
    4202     }
    4203     else {
    4204       if (epsilon_1_saddle < epsilon_2_saddle) {
    4205         yasymm1 = 1.0;
    4206       }
    4207       else {
    4208         yasymm2 = 1.0;
    4209       }
    4210     }
    4211   }
    4212 
    4213   if (itest == 1) {
    4214     G4cout << "ysymm normalized= " << ysymm  << G4endl;
    4215     G4cout << "yasymm1 normalized= " << yasymm1  << G4endl;
    4216     G4cout << "yasymm2 normalized= " << yasymm2  << G4endl;
    4217   }
    4218   // Up to here: Ok! Ckecked CS 11/10/05     
    4219      
    4220   //      /* even-odd effect */
    4221   //      /* simple parametrization KHS, Nov. 2000. From Rejmund et al. */
    4222   if ((int)(z) % 2 == 0) {
    4223     r_e_o_exp = -0.017 * (e_saddle_scission + eld) * (e_saddle_scission + eld);
    4224     if ( r_e_o_exp < -307.0) {
    4225       r_e_o_exp = -307.0;
    4226       r_e_o = std::pow(10.0,r_e_o_exp);
    4227     }
    4228     else {
    4229       r_e_o = std::pow(10.0,r_e_o_exp);
    4230     }
    4231   }
    4232   else {
    4233     r_e_o = 0.0;
    4234   }
    4235    
    4236   //      $LOOP;    /* event loop */
    4237   //     I_COUNT = I_COUNT + 1;
    4238 
    4239   //     /* random decision: symmetric or asymmetric */
    4240   //     /* IMODE = 1 means asymmetric fission, mode 1,
    4241   //        IMODE = 2 means asymmetric fission, mode 2,
    4242   //        IMODE = 3 means symmetric  */
    4243   //      RMODE = dble(HAZ(k));
    4244   //      rmode = rnd.rndm(); 
    4245   rmode = haz(k);
    4246   // Cast for test CS 11/10/05
    4247   //      RMODE = 0.54;   
    4248   //  rmode = 0.54;
    4249   if (rmode < yasymm1) {
    4250     imode = 1;
    4251   }
    4252   if ( (rmode > yasymm1) && (rmode < (yasymm1+yasymm2)) ) {
    4253     imode = 2;
    4254   }
    4255   if ( (rmode > yasymm1) && (rmode > (yasymm1+yasymm2)) ) {
    4256     imode = 3;
    4257   }
    4258 
    4259   //     /* determine parameters of the Z distribution */
    4260   // force imode (for testing, PK)
    4261   // imode = 3;
    4262   if (imode == 1) {
    4263     z1mean = zheavy1;
    4264     z1width = wzasymm1;
    4265   }
    4266   if (imode == 2) {
    4267     z1mean = zheavy2;
    4268     z1width = wzasymm2;
    4269   }
    4270   if (imode == 3) {
    4271     z1mean = zsymm;
    4272     z1width = wzsymm;
    4273   }
    4274 
    4275   if (itest == 1) {
    4276     G4cout << "nbre aleatoire tire " << rmode << G4endl;
    4277     G4cout << "fission mode " << imode << G4endl;
    4278     G4cout << "z1mean= " << z1mean << G4endl;
    4279     G4cout << "z1width= " << z1width << G4endl;
    4280   }
    4281                      
    4282   //     /* random decision: Z1 and Z2 at scission: */
    4283   z1 = 1.0;
    4284   z2 = 1.0;
    4285   while  ( (z1<5.0) || (z2<5.0) ) {
    4286     //         Z1 = dble(GAUSSHAZ(K,sngl(Z1mean),sngl(Z1width)));
    4287     //   z1 = rnd.gaus(z1mean,z1width);
    4288     z1 = gausshaz(k, z1mean, z1width);
    4289     z2 = z - z1;
    4290   }
    4291   if (itest == 1) {
    4292     G4cout << "ff charge sample " << G4endl;
    4293     G4cout << "z1 =  " << z1 << G4endl;
    4294     G4cout << "z2 = " << z2 << G4endl;
    4295   }
    4296 
    4297   //     CALL EVEN_ODD(Z1,R_E_O,I_HELP);
    4298   //         /* Integer proton number with even-odd effect */
    4299   //     Z1 = REAL(I_HELP)
    4300   //      /* Z1 = INT(Z1+0.5E0); */
    4301   z2 = z - z1;
    4302 
    4303   //     /* average N of both fragments: */
    4304   if (imode == 1) {
    4305     n1mean = (z1 + cpol1 * a/n) * n/z;
    4306   }
    4307   if (imode == 2) {
    4308     n1mean = (z1 + cpol2 * a/n) * n/z;
    4309   }
    4310   /*       CASE(99)   ! only for testing;
    4311            N1UCD = Z1 * N/Z;
    4312            N2UCD = Z2 * N/Z;
    4313            re1 = UMASS(Z1,N1UCD,0.6) +;
    4314            &         UMASS(Z2,N2UCD,0.6) +;
    4315            &         ECOUL(Z1,N1UCD,0.6,Z2,N2UCD,0.6,d);
    4316            re2 = UMASS(Z1,N1UCD+1.,0.6) +;
    4317            &         UMASS(Z2,N2UCD-1.,0.6) +;
    4318            &         ECOUL(Z1,N1UCD+1.,0.6,Z2,N2UCD-1.,0.6,d);
    4319            re3 = UMASS(Z1,N1UCD+2.,0.6) +;
    4320            &         UMASS(Z2,N2UCD-2.,0.6) +;
    4321            &         ECOUL(Z1,N1UCD+2.,0.6,Z2,N2UCD-2.,0.6,d);
    4322            eps2 = (re1-2.0*re2+re3) / 2.0;
    4323            eps1 = re2 - re1 - eps2;
    4324            DN1_POL = - eps1 / (2.0 * eps2);
    4325            N1mean = N1UCD + DN1_POL; */
    4326   if (imode == 3) {
    4327     n1ucd = z1 * n/z;
    4328     n2ucd = z2 * n/z;
    4329     re1 = umass(z1,n1ucd,0.6) + umass(z2,n2ucd,0.6) + ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,d);
    4330     re2 = umass(z1,n1ucd+1.,0.6) + umass(z2,n2ucd-1.,0.6) + ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,d);
    4331     re3 = umass(z1,n1ucd+2.,0.6) + umass(z2,n2ucd-2.,0.6) + ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,d);
    4332     eps2 = (re1-2.0*re2+re3) / 2.0;
    4333     eps1 = re2 - re1 - eps2;
    4334     dn1_pol = - eps1 / (2.0 * eps2);
    4335     n1mean = n1ucd + dn1_pol;
    4336   }
    4337   // all fission modes features have been checked CS 11/10/05
    4338   n2mean = n - n1mean;
    4339   z2mean = z - z1mean;
    4340      
    4341   //   /* Excitation energies */
    4342   //     /* formulated in energies in close consistency with the fission model */
    4343 
    4344   //     /* E_defo = UMASS(Z*0.5E0,N*0.5E0,0.6E0) -
    4345   //                 UMASS(Z*0.5E0,N*0.5E0,0);   */
    4346   //       /* calculates the deformation energy of the liquid drop for
    4347   //          deformation beta = 0.6 which is most probable at scission */
    4348 
    4349   //    /* N1R and N2R provisionaly taken without fluctuations in
    4350   //       polarisation:                                              */
    4351   n1r = n1mean;
    4352   n2r = n2mean;
    4353   a1r = n1r + z1;
    4354   a2r = n2r + z2;
    4355 
    4356   if (imode == 1) { /* N = 82 */;
    4357     //! /* Eexc at scission */
    4358     e_scission = max(epsilon_1_scission,1.0);
    4359     if (n1mean > (n * 0.5) ) {
    4360       //! /* 1. fragment is spherical */
    4361       beta1 = 0.0;
    4362       beta2 = 0.6;
    4363       e1exc = epsilon_1_scission * a1r / a;
    4364       e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0);
    4365       e2exc = epsilon_1_scission * a2r / a + e_defo;
    4366     }
    4367     else {
    4368       //!                       /* 2. fragment is spherical */
    4369       beta1 = 0.6;
    4370       beta2 = 0.0;
    4371       e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0);
    4372       e1exc = epsilon_1_scission * a1r / a + e_defo;
    4373       e2exc = epsilon_1_scission * a2r / a;
    4374     }
    4375   }
    4376            
    4377   if (imode == 2) {
    4378     //! /* N appr. 86 */
    4379     e_scission = max(epsilon_2_scission,1.0);
    4380     if (n1mean >  (n * 0.5) ) {
    4381       //! /* 2. fragment is spherical */
    4382       beta1 = (n1r - nheavy2) * 0.034 + 0.3;
    4383       e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0);
    4384       e1exc = epsilon_2_scission * a1r / a + e_defo;
    4385       beta2 = 0.6 - beta1;
    4386       e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0);
    4387       e2exc = epsilon_2_scission * a2r / a + e_defo;
    4388     }
    4389     else {
    4390       //!                      /* 1. fragment is spherical */
    4391       beta2 = (n2r - nheavy2) * 0.034 + 0.3;
    4392       e_defo = umass(z2,n2r,beta2) - umass(z2,n2r,0.0);
    4393       e2exc = epsilon_2_scission * a2r / a + e_defo;
    4394       beta1 = 0.6 - beta2;
    4395       e_defo = umass(z1,n1r,beta1) - umass(z1,n1r,0.0);
    4396       e1exc = epsilon_2_scission * a1r / a + e_defo;
    4397     }
    4398   }
    4399          
    4400   if (imode == 3) {
    4401     // ! /* Symmetric fission channel */
    4402 
    4403     //             /* the fit function for beta is the deformation for
    4404     //                optimum energy at the scission point, d = 2 */
    4405     //             /* beta  : deformation of symmetric fragments */
    4406     //             /* beta1 : deformation of first fragment */
    4407     //             /* beta2 : deformation of second fragment */
    4408     beta =  0.177963 + 0.0153241 * zsymm - 0.000162037 * zsymm*zsymm;
    4409     beta1 = 0.177963 + 0.0153241 * z1 - 0.000162037 * z1*z1;
    4410     //            beta1 = 0.6
    4411     e_defo1 = umass(z1,n1r,beta1) - umass(z1,n1r,0.0);
    4412     beta2 = 0.177963 + 0.0153241 * z2 - 0.000162037 * z2*z2;
    4413     //            beta2 = 0.6
    4414     e_defo2 = umass(z2,n2r,beta2) - umass(z2,n2r,0.0);
    4415     e_asym = umass(z1 , n1r, beta1) + umass(z2, n2r ,beta2)
    4416       + ecoul(z1,n1r,beta1,z2,n2r,beta2,2.0)
    4417       - 2.0 * umass(zsymm,nsymm,beta)
    4418       - ecoul(zsymm,nsymm,beta,zsymm,nsymm,beta,2.0);
    4419     //            E_asym = CZ_symm * (Z1 - Zsymm)**2
    4420     e_scission = max((epsilon_symm_scission - e_asym),1.0);
    4421     //         /*  $LIST(Z1,N1R,Z2,N2R,E_asym,E_scission); */
    4422     e1exc = e_scission * a1r / a + e_defo1;
    4423     e2exc = e_scission * a2r / a + e_defo2;
    4424   }
    4425   // Energies checked for all the modes CS 11/10/05
    4426          
    4427   //    /* random decision: N1R and N2R at scission, before evaporation: */
    4428   //    /* CN =       UMASS(Zsymm , Nsymm + 1.E0,0) +
    4429   //                UMASS(Zsymm, Nsymm - 1.E0,0)
    4430   //                 + 1.44E0 * (Zsymm)**2 /
    4431   //                 (r_null**2 * ((Asymm+1)**1/3 + (Asymm-1)**1/3)**2 )
    4432   //                 - 2.E0 * UMASS(Zsymm,Nsymm,0)
    4433   //                 - 1.44E0 * (Zsymm)**2 / (r_null * 2.E0 * (Asymm)**1/3)**2; */
    4434 
    4435 
    4436   //    /* N1width = std::sqrt(0.5E0 * std::sqrt(1.E0/A_levdens*(Eld+E_saddle_scission)) / CN); */
    4437   //    /* 8. 9. 1998: KHS (see also consideration in the first comment block)
    4438   //       sigma_N(Z=const) = A/Z  * sigma_Z(A=const)
    4439   //       sigma_Z(A=const) = 0.4 to 0.5  (from Lang paper Nucl Phys. A345 (1980) 34)
    4440   //       sigma_N(Z=const) = 0.45 * A/Z  (= 1.16 for 238U)
    4441   //       therefore: SIGZMIN = 1.16                                              */
    4442 
    4443   if ( (imode == 1) || (imode == 2) ) {
    4444     cn=(umass(z1,n1mean+1.,beta1) + umass(z1,n1mean-1.,beta1)
    4445         + umass(z2,n2mean+1.,beta2) + umass(z2,n2mean-1.,beta2)
    4446         + ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0)
    4447         + ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0)
    4448         - 2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
    4449         - 2.0 * umass(z1, n1mean, beta1)
    4450         - 2.0 * umass(z2, n2mean, beta2) ) * 0.5;
    4451     //          /* Coulomb energy neglected for the moment! */
    4452     //           IF (E_scission.lt.0.) Then
    4453     //             write(6,*)'<E> E_scission < 0, MODE 1,2'
    4454     //           ENDIF
    4455     //           IF (CN.lt.0.) Then
    4456     //             write(6,*)'CN < 0, MODE 1,2'
    4457     //           ENDIF
    4458     n1width=std::sqrt( (0.5 * (std::sqrt(1.0/a_levdens*(e_scission)))/cn) );
    4459     n1width=max(n1width, sigzmin);
    4460 
    4461     //          /* random decision: N1R and N2R at scission, before evaporation: */
    4462     n1r = 1.0;
    4463     n2r = 1.0;
    4464     while  ( (n1r<5.0) || (n2r<5.0) ) {
    4465       //             n1r = dble(gausshaz(k,sngl(n1mean),sngl(n1width)));
    4466       //                n1r = rnd.gaus(n1mean,n1width);
    4467       n1r = gausshaz(k, n1mean, n1width);
    4468       n2r = n - n1r;
    4469     }     
    4470     //           N1R = GAUSSHAZ(K,N1mean,N1width)
    4471     if (itest == 1) {
    4472       G4cout << "after neutron sample " << n1r << G4endl;
    4473     }     
    4474     n1r = (float)( (int)((n1r+0.5)) );
    4475     n2r = n - n1r;
    4476  
    4477     even_odd(z1,r_e_o,i_help);
    4478     //         /*  proton number with even-odd effect */
    4479     z1 = (float)(i_help);
    4480     z2 = z - z1;
    4481 
    4482     a1r = z1 + n1r;
    4483     a2r = z2 + n2r;
    4484   }
    4485        
    4486   if (imode == 3) {
    4487     //!  /* When(3) */
    4488     if (nzpol > 0.0) {
    4489       //           /* We treat a simultaneous split in Z and N to determine polarisation */
    4490       cz = ( umass(z1-1., n1mean+1.,beta1)
    4491              +  umass(z2+1., n2mean-1.,beta1)
    4492              +  umass(z1+1., n1mean-1.,beta2)
    4493              +  umass(z2 - 1., n2mean + 1.,beta2)
    4494              +  ecoul(z1-1.,n1mean+1.,beta1,z2+1.,n2mean-1.,beta2,2.0)
    4495              +  ecoul(z1+1.,n1mean-1.,beta1,z2-1.,n2mean+1.,beta2,2.0)
    4496              -  2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
    4497              -  2.0 * umass(z1, n1mean,beta1)
    4498              -  2.0 * umass(z2, n2mean,beta2) ) * 0.5;
    4499       //           IF (E_scission.lt.0.) Then
    4500       //             write(6,*) '<E> E_scission < 0, MODE 1,2'
    4501       //           ENDIF
    4502       //           IF (CZ.lt.0.) Then
    4503       //             write(6,*) 'CZ < 0, MODE 1,2'
    4504       //           ENDIF
    4505       za1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cz) );
    4506       za1width=std::sqrt( (max((za1width*za1width-(1.0/12.0)),0.1)) );
    4507       //                        /* Check the value of 0.1 ! */
    4508       //                        /* Shephard correction */
    4509       a1r = z1 + n1mean;
    4510       a1r = (float)((int)((a1r+0.5)));
    4511       a2r = a - a1r;
    4512       //           /* A1R and A2R are integer numbers now */
    4513       //        /* $LIST(A1R,A2R,ZA1WIDTH); */
    4514 
    4515       n1ucd = n/a * a1r;
    4516       n2ucd = n/a * a2r;
    4517       z1ucd = z/a * a1r;
    4518       z2ucd = z/a * a2r;
    4519 
    4520       re1 = umass(z1ucd-1.,n1ucd+1.,beta1) + umass(z2ucd+1.,n2ucd-1.,beta2)
    4521         + ecoul(z1ucd-1.,n1ucd+1.,beta1,z2ucd+1.,n2ucd-1.,beta2,d);
    4522       re2 = umass(z1ucd,n1ucd,beta1) + umass(z2ucd,n2ucd,beta2)
    4523         + ecoul(z1ucd,n1ucd,beta1,z2ucd,n2ucd,beta2,d);
    4524       re3 = umass(z1ucd+1.,n1ucd-1.,beta1) + umass(z2ucd-1.,n2ucd+1.,beta2) +
    4525         + ecoul(z1ucd+1.,n1ucd-1.,beta1,z2ucd-1.,n2ucd+1.,beta2,d);
    4526                  
    4527       eps2 = (re1-2.0*re2+re3) / 2.0;
    4528       eps1 = (re3 - re1)/2.0;
    4529       dn1_pol = - eps1 / (2.0 * eps2);
    4530       z1 = z1ucd + dn1_pol;
    4531       if (itest == 1) {
    4532         G4cout << "before proton sample " << z1 << G4endl;
    4533       } 
    4534       //           Z1 = dble(GAUSSHAZ(k,sngl(Z1),sngl(ZA1width)));
    4535       //           z1 = rnd.gaus(z1,za1width);
    4536       z1 = gausshaz(k, z1, za1width);
    4537       if (itest == 1) {
    4538         G4cout << "after proton sample " << z1 << G4endl;
    4539       }   
    4540       even_odd(z1,r_e_o,i_help);
    4541       //         /* proton number with even-odd effect */
    4542       z1 = (float)(i_help);
    4543       z2 = (float)((int)( (z - z1 + 0.5)) );
    4544 
    4545       n1r = a1r - z1;
    4546       n2r = n - n1r;
    4547     }
    4548     else {
    4549       //           /* First division of protons, then adjustment of neutrons */
    4550       cn = ( umass(z1, n1mean+1.,beta1) + umass(z1, n1mean-1., beta1)
    4551              + umass(z2, n2mean+1.,beta2) + umass(z2, n2mean-1., beta2)
    4552              + ecoul(z1,n1mean+1.,beta1,z2,n2mean-1.,beta2,2.0)
    4553              + ecoul(z1,n1mean-1.,beta1,z2,n2mean+1.,beta2,2.0)
    4554              - 2.0 * ecoul(z1,n1mean,beta1,z2,n2mean,beta2,2.0)
    4555              - 2.0 * umass(z1, n1mean, 0.6)
    4556              - 2.0 * umass(z2, n2mean, 0.6) ) * 0.5;
    4557       //          /* Coulomb energy neglected for the moment! */
    4558       //           IF (E_scission.lt.0.) Then
    4559       //             write(6,*) '<E> E_scission < 0, MODE 1,2'
    4560       //           Endif
    4561       //           IF (CN.lt.0.) Then
    4562       //             write(6,*) 'CN < 0, MODE 1,2'
    4563       //           Endif
    4564       n1width=std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*(e_scission)) / cn) );
    4565       n1width=max(n1width, sigzmin);
    4566 
    4567       //          /* random decision: N1R and N2R at scission, before evaporation: */
    4568       //           N1R = dble(GAUSSHAZ(k,sngl(N1mean),sngl(N1width)));
    4569       //           n1r = rnd.gaus(n1mean,n1width);
    4570       n1r = gausshaz(k, n1mean, n1width);
    4571       n1r = (float)( (int)((n1r+0.5)) );
    4572       n2r = n - n1r;
    4573 
    4574       even_odd(z1,r_e_o,i_help);
    4575       //         /* Integer proton number with even-odd effect */
    4576       z1 = (float)(i_help);
    4577       z2 = z - z1;
    4578 
    4579       a1r = z1 + n1r;
    4580       a2r = z2 + n2r;
    4581          
    4582     }
    4583   }
    4584 
    4585   if (itest == 1) {
    4586     G4cout << "remid imode = " << imode << G4endl;
    4587     G4cout << "n1width =  " << n1width << G4endl;
    4588     G4cout << "n1r = " << n1r << G4endl;
    4589     G4cout << "a1r = " << a1r << G4endl;
    4590     G4cout << "n2r = " << n2r << G4endl;
    4591     G4cout << "a2r = " << a2r << G4endl;
    4592   }
    4593   // Up to here: checked CS 11/10/05   
    4594        
    4595   //      /* Extracted from Lang et al. Nucl. Phys. A 345 (1980) 34 */
    4596   e1exc_sigma = 5.5;
    4597   e2exc_sigma = 5.5;
    4598 
    4599  neufcentquatrevingtsept:
    4600   //       E1final = dble(Gausshaz(k,sngl(E1exc),sngl(E1exc_sigma)));
    4601   //       E2final = dble(Gausshaz(k,sngl(E2exc),sngl(E2exc_sigma)));
    4602   //        e1final = rnd.gaus(e1exc,e1exc_sigma);
    4603   //        e2final = rnd.gaus(e2exc,e2exc_sigma);
    4604   e1final = gausshaz(k, e1exc, e1exc_sigma);
    4605   e2final = gausshaz(k, e2exc, e2exc_sigma);
    4606   if ( (e1final < 0.0) || (e2final < 0.0) ) goto neufcentquatrevingtsept;
    4607   if (itest == 1) {
    4608     G4cout << "sampled exc 1 " << e1final << G4endl;
    4609     G4cout << "sampled exc 2 " << e2final << G4endl;
    4610   }
    4611 
    4612   //      /* OUTPUT QUANTITIES OF THE EVENT GENERATOR:        */
    4613 
    4614   //      /* Quantities before neutron evaporation            */
    4615 
    4616   //      /* Neutron number of prefragments: N1R and N2R      */
    4617   //      /* Atomic number of fragments: Z1 and Z2            */
    4618   //      /* Kinetic energy of fragments: EkinR1, EkinR2      *7
    4619 
    4620   //      /* Quantities after neutron evaporation:            */
    4621 
    4622   //      /* Neutron number of fragments: N1 and N2           */
    4623   //      /* Mass number of fragments: A1 and A2              */
    4624   //      /* Atomic number of fragments: Z1 and Z2            */
    4625   //      /* Number of evaporated neutrons: N1R-N1 and N2R-N2 */
    4626   //      /* Kinetic energy of fragments: EkinR1*A1/A1R and
    4627   //                                      EkinR2*A2/A2R       */
    4628 
    4629   n1 = n1r;
    4630   n2 = n2r;
    4631   a1 = n1 + z1;
    4632   a2 = n2 + z2;
    4633   e1 = e1final;
    4634   e2 = e2final;
    4635 
    4636   //       /* Pre-neutron-emission total kinetic energy: */
    4637   tker = (z1 * z2 * 1.44) /
    4638     ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) +
    4639       r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 );
    4640   //       /* Pre-neutron-emission kinetic energy of 1. fragment: */
    4641   ekinr1 = tker * a2 / a;
    4642   //       /* Pre-neutron-emission kinetic energy of 2. fragment: */
    4643   ekinr2 = tker * a1 / a;
    4644 
    4645   v1 = std::sqrt( (ekinr1/a1) ) * 1.3887;
    4646   v2 = std::sqrt( (ekinr2/a2) ) * 1.3887;
    4647 
    4648   if (itest == 1) {
    4649     G4cout << "ekinr1 " << ekinr1 << G4endl;
    4650     G4cout << "ekinr2 " << ekinr2 << G4endl;
    4651   }
    4652 
    4653  milledeux:       
    4654   //**************************
    4655   //*** only symmetric fission
    4656   //**************************
    4657   // Symmetric fission: Ok! Checked CS 10/10/05
    4658   if ( (icz == -1) || (a1 < 0.0) || (a2 < 0.0) ) {
    4659     //           IF (z.eq.92) THEN
    4660     //              write(6,*)'symmetric fission'
    4661     //              write(6,*)'Z,A,E,A1,A2,icz,Atot',Z,A,E,A1,A2,icz,Atot
    4662     //           END IF
    4663 
    4664     if (itest == 1) {
    4665       G4cout << "milledeux: liquid-drop option "  << G4endl;
    4666     }
    4667 
    4668     n = a-z;
    4669     //  proton number in symmetric fission (centre) *
    4670     zsymm  = z / 2.0;
    4671     nsymm  = n / 2.0;
    4672     asymm = nsymm + zsymm;
    4673 
    4674     a_levdens = a / xlevdens;
    4675 
    4676     masscurv = 2.0;
    4677     cz_symm = 8.0 / std::pow(z,2) * masscurv;
    4678 
    4679     wzsymm = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cz_symm) ) ;
    4680 
    4681     if (itest == 1) {
    4682       G4cout << " symmetric high energy fission " << G4endl;
    4683       G4cout << "wzsymm " << wzsymm << G4endl;
    4684     }
    4685 
    4686     z1mean = zsymm;
    4687     z1width = wzsymm;
    4688 
    4689     // random decision: Z1 and Z2 at scission: */
    4690     z1 = 1.0;
    4691     z2 = 1.0;
    4692     while  ( (z1 < 5.0) || (z2 < 5.0) ) {
    4693       //           z1 = dble(gausshaz(kkk,sngl(z1mean),sngl(z1width)));
    4694       //           z1 = rnd.gaus(z1mean,z1width);
    4695       z1 = gausshaz(kkk, z1mean, z1width);
    4696       z2 = z - z1;
    4697     }
    4698 
    4699     if (itest == 1) {
    4700       G4cout << " z1 " << z1 << G4endl;
    4701       G4cout << " z2 " << z2 << G4endl;
    4702     }
    4703     if (itest == 1) {
    4704       G4cout << " zsymm " << zsymm << G4endl;
    4705       G4cout << " nsymm " << nsymm << G4endl;
    4706       G4cout << " asymm " << asymm << G4endl;
    4707     }
    4708     //          CN =  UMASS(Zsymm , Nsymm + 1.E0) + UMASS(Zsymm, Nsymm - 1.E0)
    4709     //    #            + 1.44E0 * (Zsymm)**2 /
    4710     //    #            (r_null**2 * ((Asymm+1)**(1./3.) +
    4711     //    #            (Asymm-1)**(1./3.))**2 )
    4712     //    #            - 2.E0 * UMASS(Zsymm,Nsymm)
    4713     //    #            - 1.44E0 * (Zsymm)**2 /
    4714     //    #            (r_null * 2.E0 * (Asymm)**(1./3.))**2
    4715 
    4716     n1ucd = z1 * n/z;
    4717     n2ucd = z2 * n/z;
    4718     re1 = umass(z1,n1ucd,0.6) + umass(z2,n2ucd,0.6) +
    4719       ecoul(z1,n1ucd,0.6,z2,n2ucd,0.6,2.0);
    4720     re2 = umass(z1,n1ucd+1.,0.6) + umass(z2,n2ucd-1.,0.6) +
    4721       ecoul(z1,n1ucd+1.,0.6,z2,n2ucd-1.,0.6,2.0);
    4722     re3 = umass(z1,n1ucd+2.,0.6) + umass(z2,n2ucd-2.,0.6) +
    4723       ecoul(z1,n1ucd+2.,0.6,z2,n2ucd-2.,0.6,2.0);
    4724     reps2 = (re1-2.0*re2+re3)/2.0;
    4725     reps1 = re2 - re1 -reps2;
    4726     rn1_pol = -reps1/(2.0*reps2);
    4727     n1mean = n1ucd + rn1_pol;
    4728     n2mean = n - n1mean;
    4729 
    4730     if (itest == 1) {
    4731       G4cout << " n1mean " << n1mean << G4endl;
    4732       G4cout << " n2mean " << n2mean << G4endl;
    4733     }
    4734 
    4735     cn = (umass(z1,n1mean+1.,0.0) + umass(z1,n1mean-1.,0.0) +
    4736           + umass(z2,n2mean+1.,0.0) + umass(z2,n2mean-1.,0.0)
    4737           - 2.0 * umass(z1,n1mean,0.0) +
    4738           - 2.0 * umass(z2,n2mean,0.0) ) * 0.5;
    4739     //      This is an approximation! Coulomb energy is neglected.
    4740 
    4741     n1width = std::sqrt( (0.5 * std::sqrt(1.0/a_levdens*e) / cn) );
    4742 
    4743     if (itest == 1) {
    4744       G4cout << " cn " << cn << G4endl;
    4745       G4cout << " n1width " << n1width << G4endl;
    4746     }
    4747        
    4748     // random decision: N1R and N2R at scission, before evaporation: */
    4749     //       N1R = dfloat(NINT(GAUSSHAZ(KKK,sngl(N1mean),sngl(N1width))));
    4750     //      n1r = (float)( (int)(rnd.gaus(n1mean,n1width)) );
    4751     n1r = (float)( (int)(gausshaz(k, n1mean,n1width)) );
    4752     n2r = n - n1r;
    4753     // Mass of first and second fragment */
    4754     a1 = z1 + n1r;
    4755     a2 = z2 + n2r;
    4756 
    4757     e1 = e*a1/(a1+a2);
    4758     e2 = e - e*a1/(a1+a2);
    4759     if (itest == 1) {
    4760       G4cout << " n1r " << n1r << G4endl;
    4761       G4cout << " n2r " << n2r << G4endl;
    4762     }
    4763 
    4764   }
    4765 
    4766   if (itest == 1) {
    4767     G4cout << " a1 " << a1 << G4endl;
    4768     G4cout << " z1 " << z1 << G4endl;
    4769     G4cout << " a2 " << a2 << G4endl;
    4770     G4cout << " z2 " << z2 << G4endl;
    4771     G4cout << " e1 " << e1 << G4endl;
    4772     G4cout << " e2 " << e << G4endl;
    4773   }
    4774 
    4775   //       /* Pre-neutron-emission total kinetic energy: */
    4776   tker = (z1 * z2 * 1.44) /
    4777     ( r0 * std::pow(a1,0.33333) * (1.0 + 2.0/3.0 * beta1) +
    4778       r0 * std::pow(a2,0.33333) * (1.0 + 2.0/3.0 * beta2) + 2.0 );
    4779   //       /* Pre-neutron-emission kinetic energy of 1. fragment: */
    4780   ekin1 = tker * a2 / a;
    4781   //       /* Pre-neutron-emission kinetic energy of 2. fragment: */
    4782   ekin2 = tker * a1 / a;
    4783 
    4784   v1 = std::sqrt( (ekin1/a1) ) * 1.3887;
    4785   v2 = std::sqrt( (ekin2/a2) ) * 1.3887;
    4786 
    4787   if (itest == 1) {
    4788     G4cout << " kinetic energies " << G4endl;
    4789     G4cout << " ekin1 " << ekin1 << G4endl;
    4790     G4cout << " ekin2 " << ekin2 << G4endl;
    4791   }
    47923355}
    47933356
     
    48223385
    48233386  // C Matrice de rotation dans le labo:
     3387  G4double avv = 0.0, zvv = 0.0, enerj = 0.0, plab = 0.0, tetlab = 0.0, philab = 0.0;
     3388  G4int itypcasc = 0;
    48243389  G4double sitet = std::sqrt(std::pow(csrem[1],2)+std::pow(csrem[2],2));
    4825   G4double cstet, siphi, csphi;
     3390  G4double cstet = 0.0, siphi = 0.0, csphi = 0.0;
    48263391  G4double R[4][4];
    4827 
     3392  for(G4int init_i = 0; init_i < 4; init_i++) {
     3393    for(G4int init_j = 0; init_j < 4; init_j++) {
     3394      R[init_i][init_j] = 0.0;
     3395    }
     3396  }
     3397  if(verboseLevel > 1)
     3398    G4cout <<"csrem = " << csrem[1] << ", " << csrem[2] << ", " << csrem[3] << ")" << G4endl;
    48283399  if(sitet > 1.0e-6) { //then
    48293400    cstet = csrem[3];
     
    48613432  G4double plabf[4];
    48623433  G4double bidon = 0.0;
    4863 
     3434  for(G4int init_i = 0; init_i < 4; init_i++) {
     3435    plabi[init_i] = 0.0;
     3436    plabf[init_i] = 0.0;
     3437  }
     3438  ndec = 1;
    48643439  for(G4int i = ndec; i <= volant->iv; i++) { //do i=ndec,iv
    48653440    intp = i + nopart;
     3441    if(volant->copied[i]) continue; // Avoid double copying
     3442#ifdef USE_LEGACY_CODE
    48663443    varntp->ntrack = varntp->ntrack + 1;
     3444#endif
    48673445    if(nint(volant->acv[i]) == 0 && nint(volant->zpcv[i]) == 0) {
    4868       if(verboseLevel > 2) {
    4869         G4cout <<"Error: Particles with A = 0 Z = 0 detected! " << G4endl;
     3446      if(verboseLevel > -1) {
     3447        G4cout << __FILE__ << ":" << __LINE__ << " Error: Particles with A = 0 Z = 0 detected! " << G4endl;
    48703448      }
    48713449      continue;
     
    48763454      }
    48773455    }
     3456#ifdef USE_LEGACY_CODE
    48783457    varntp->avv[intp] = nint(volant->acv[i]);
    48793458    varntp->zvv[intp] = nint(volant->zpcv[i]);
    48803459    varntp->itypcasc[intp] = 0;   
     3460#else
     3461    avv = nint(volant->acv[i]);
     3462    zvv = nint(volant->zpcv[i]);
     3463    itypcasc = 0;   
     3464#endif
    48813465    // transformation de lorentz remnan --> labo:
     3466#ifdef USE_LEGACY_CODE
    48823467    if (varntp->avv[intp] == -1) { //then
     3468#else
     3469    if(avv == -1) {
     3470#endif
    48833471      masse = 138.00;   // cugnon
    48843472      // c              if (avv(intp).eq.1)  masse=938.2796     !cugnon
     
    48873475    else {
    48883476      mglms(double(volant->acv[i]),double(volant->zpcv[i]),0, &el);
    4889       // assert(isnan(el) == false);
    48903477      masse = volant->zpcv[i]*938.27 + (volant->acv[i] - volant->zpcv[i])*939.56 + el;
    48913478    } //end if
    48923479       
    48933480    er = std::sqrt(std::pow(volant->pcv[i],2) + std::pow(masse,2));
    4894     // assert(isnan(er) == false);
    48953481    plabi[1] = volant->pcv[i]*(volant->xcv[i]);
    48963482    plabi[2] = volant->pcv[i]*(volant->ycv[i]);
     
    48983484       
    48993485    ptrav2 = std::pow(plabi[1],2) + std::pow(plabi[2],2) + std::pow(plabi[3],2);
    4900     // assert(isnan(ptrav2) == false);
     3486#ifdef USE_LEGACY_CODE
    49013487    varntp->plab[intp] = std::sqrt(ptrav2);
     3488#else
     3489    plab = std::sqrt(ptrav2);
     3490#endif
     3491#ifdef USE_LEGACY_CODE
     3492    if(std::abs(varntp->plab[intp] - 122.009) < 1.0e-3) {
     3493      G4cout <<__FILE__ << ":" << __LINE__ << " Error: varntp->plab["<< intp <<"] = " << varntp->plab[intp] << G4endl;
     3494     
     3495      volant->dump();
     3496      varntp->dump();
     3497#
     3498      G4cout <<"varntp->plab[intp] = " << varntp->plab[intp] << G4endl;
     3499      G4cout <<"ndec (starting index for loop) = " << ndec << G4endl;
     3500      G4cout <<"volant->iv (stopping index for loop) = " << volant->iv << G4endl;
     3501      G4cout <<"i (current position) = " << i << G4endl;
     3502      G4cout <<"intp (index for writing to varntp) = " << intp << G4endl;
     3503      //      exit(0);
     3504    }
     3505#endif
     3506
     3507#ifdef USE_LEGACY_CODE
    49023508    varntp->enerj[intp] = std::sqrt(ptrav2 + std::pow(masse,2)) - masse;
    4903 
     3509#else
     3510    enerj = std::sqrt(ptrav2 + std::pow(masse,2)) - masse;
     3511#endif
    49043512    // Rotation dans le labo:
    49053513    for(G4int j = 1; j <= 3; j++) { //do j=1,3
    49063514      plabf[j] = 0.0;
    49073515      for(G4int k = 1; k <= 3; k++) { //do k=1,3
    4908         plabf[j] = plabf[j] + R[k][j]*plabi[k]; // :::Fixme::: (indices?)
     3516        //plabf[j] = plabf[j] + R[k][j]*plabi[k]; // :::Fixme::: (indices?)
     3517        plabf[j] = plabf[j] + R[j][k]*plabi[k]; // :::Fixme::: (indices?)
    49093518      } // end do
    49103519    }  // end do
    49113520    // C impulsions dans le nouveau systeme copiees dans /volant/
     3521#ifdef USE_LEGACY_CODE
    49123522    volant->pcv[i] = varntp->plab[intp];
     3523#else
     3524    volant->pcv[i] = plab;
     3525#endif
    49133526    ptrav2 = std::sqrt(std::pow(plabf[1],2) + std::pow(plabf[2],2) + std::pow(plabf[3],2));
    49143527    if(ptrav2 >= 1.0e-6) { //then
     
    49233536    } //endif
    49243537    // impulsions dans le nouveau systeme copiees dans /VAR_NTP/       
     3538#ifdef USE_LEGACY_CODE
    49253539    if(varntp->plab[intp] >= 1.0e-6) { //then
     3540#else
     3541    if(plab >= 1.0e-6) { //then
     3542#endif
     3543#ifdef USE_LEGACY_CODE
    49263544      bidon = plabf[3]/(varntp->plab[intp]);
    4927       // assert(isnan(bidon) == false);
     3545#else
     3546      bidon = plabf[3]/plab;
     3547#endif
    49283548      if(bidon > 1.0) {
    49293549        bidon = 1.0;
     
    49323552        bidon = -1.0;
    49333553      }
     3554#ifdef USE_LEGACY_CODE
    49343555      varntp->tetlab[intp] = std::acos(bidon);
    49353556      sitet = std::sin(varntp->tetlab[intp]);
     
    49373558      varntp->tetlab[intp] = varntp->tetlab[intp]*57.2957795;
    49383559      varntp->philab[intp] = varntp->philab[intp]*57.2957795;
     3560#else
     3561      tetlab = std::acos(bidon);
     3562      sitet = std::sin(tetlab);
     3563      philab = std::atan2(plabf[2],plabf[1]);       
     3564      tetlab = tetlab*57.2957795;
     3565      philab = philab*57.2957795;
     3566#endif
    49393567    }
    49403568    else {
     3569#ifdef USE_LEGACY_CODE
    49413570      varntp->tetlab[intp] = 90.0;
    49423571      varntp->philab[intp] = 0.0;
     3572#else
     3573      tetlab = 90.0;
     3574      philab = 0.0;
     3575#endif
    49433576    } // endif
     3577    volant->copied[i] = true;
     3578#ifndef USE_LEGACY_CODE
     3579    varntp->addParticle(avv, zvv, enerj, plab, tetlab, philab);
     3580#else
     3581    G4cout <<__FILE__ << ":" << __LINE__ << " volant -> varntp: " << " intp = " << intp << "Avv = " << varntp->avv[intp] << " Zvv = " << varntp->zvv[intp] << " Plab = " << varntp->plab[intp] << G4endl;
     3582    G4cout <<__FILE__ << ":" << __LINE__ << " volant index i = " << i << " varnpt index intp = " << intp << G4endl;
     3583#endif
    49443584  } // end do
    49453585}
     
    49713611  G4double plabi[4];
    49723612  G4double plabf[4];
     3613  for(G4int init_i = 0; init_i < 4; init_i++) {
     3614    plabi[init_i] = 0.0;
     3615    plabf[init_i] = 0.0;
     3616  }
     3617
    49733618  // C ----Transformation de Lorentz Noyau fissionnant --> Remnant:     
    49743619  plabi[1] = p1*sitet*std::cos(phi1);
     
    49803625    plabf[j] = 0.0;
    49813626    for(G4int k = 1; k <= 3; k++) { //do k=1,3
    4982       //      plabf[j] = plabf[j] + R[j][k]*plabi[k];
    4983       plabf[j] = plabf[j] + R[k][j]*plabi[k];
     3627      plabf[j] = plabf[j] + R[j][k]*plabi[k];
     3628      //plabf[j] = plabf[j] + R[k][j]*plabi[k];
    49843629    } //end do
    49853630  } //end do
     
    50293674    pout[i] = 0.0;
    50303675    for(G4int j = 1; j <= 3; j++) { //do j=1,3
    5031       //      pout[i] = pout[i] + R[i][j]*pin[j];
    5032       pout[i] = pout[i] + R[j][i]*pin[j];
     3676      pout[i] = pout[i] + R[i][j]*pin[j];
     3677      //pout[i] = pout[i] + R[j][i]*pin[j];
    50333678    } // enddo
    50343679  } //enddo
     
    50433688  (*seed) = (*seed); // Avoid warning during compilation.
    50443689  // Use Geant4 G4UniformRand
    5045   (*rndm) = G4UniformRand();
     3690  (*rndm) = randomGenerator->getRandom();
    50463691}
    50473692
     
    50503695  const G4int pSize = 110;
    50513696  static G4double p[pSize];
    5052   static G4long ix,i;
    5053   static G4double x,y,a,haz;
     3697  static G4long ix = 0, i = 0;
     3698  static G4double x = 0.0, y = 0.0, a = 0.0, haz = 0.0;
    50543699  //  k =< -1 on initialise                                       
    50553700  //  k = -1 c'est reproductible                                   
     
    50793724    // the behavior of the routines in C++ and FORTRAN versions is no
    50803725    // longer exactly the same!
    5081     standardRandom(&x, &ix);
     3726    x = randomGenerator->getRandom();
     3727    //    standardRandom(&x, &ix);
    50823728    for(G4int i = 0; i < pSize; i++) { //do i=1,110                                                 
    5083       standardRandom(&(p[i]), &ix);
    5084     }
     3729      p[i] = randomGenerator->getRandom();
     3730      //      standardRandom(&(p[i]), &ix);
     3731    }
     3732    a = randomGenerator->getRandom();
    50853733    standardRandom(&a, &ix);
    50863734    k = 0;
     
    50893737  i = nint(100*a)+1;
    50903738  haz = p[i];
    5091   standardRandom(&a, &ix);
     3739  a = randomGenerator->getRandom();
     3740  //  standardRandom(&a, &ix);
    50923741  p[i] = a;
    50933742
    50943743  hazard->ial = ix;
    5095  
    50963744  return haz;
    50973745}
    5098 
    5099 
    5100 G4double G4Abla::gausshaz(int k, double xmoy, double sig)
    5101 {
    5102   // Gaussian random numbers:
    5103 
    5104   //   1005       C*** TIRAGE ALEATOIRE DANS UNE GAUSSIENNE DE LARGEUR SIG ET MOYENNE XMOY
    5105   static G4int  iset = 0;
    5106   static G4double v1,v2,r,fac,gset,gausshaz;
    5107 
    5108   if(iset == 0) { //then                                             
    5109     do {
    5110       v1 = 2.0*haz(k) - 1.0;
    5111       v2 = 2.0*haz(k) - 1.0;
    5112       r = std::pow(v1,2) + std::pow(v2,2);
    5113     } while(r >= 1);
    5114 
    5115     fac = std::sqrt(-2.*std::log(r)/r);
    5116     // assert(isnan(fac) == false);
    5117     gset = v1*fac;
    5118     gausshaz = v2*fac*sig+xmoy;
    5119     iset = 1;
    5120   }
    5121   else {
    5122     gausshaz=gset*sig+xmoy;
    5123     iset=0;
    5124   }
    5125 
    5126   return gausshaz;                                                         
    5127 }
    5128 
    51293746
    51303747// Utilities
     
    51723789G4int G4Abla::nint(G4double number)
    51733790{
    5174   G4double intpart;
    5175   G4double fractpart;
     3791  G4double intpart = 0.0;
     3792  G4double fractpart = 0.0;
    51763793  fractpart = std::modf(number, &intpart);
    51773794  if(number == 0) {
  • trunk/source/processes/hadronic/models/incl/src/G4AblaEvaporation.cc

    r819 r962  
    2424// ********************************************************************
    2525//
    26 // $Id: G4AblaEvaporation.cc,v 1.3 2007/10/11 08:20:08 gcosmo Exp $
     26// $Id: G4AblaEvaporation.cc,v 1.4 2008/10/24 21:07:40 dennis Exp $
    2727//
    2828#include <numeric>
     
    121121  G4double nucleusA = theNucleus.GetA();
    122122  G4double nucleusZ = theNucleus.GetZ();
    123   G4double nucleusMass = G4NucleiProperties::GetAtomicMass(nucleusA, nucleusZ);
     123  G4double nucleusMass = G4NucleiProperties::GetNuclearMass(nucleusA, nucleusZ);
    124124  G4double excitationEnergy = theNucleus.GetExcitationEnergy();
    125125  G4double angularMomentum = 0.0; // Don't know how to get this quantity... From Geant4???
     
    147147  }
    148148
    149   //  G4double mTar  = G4NucleiProperties::GetAtomicMass(A, Z); // Mass of the target nucleus
     149  //  G4double mTar  = G4NucleiProperties::GetNuclearMass(A, Z); // Mass of the target nucleus
    150150  varntp->exini = exitationE;
    151151
  • trunk/source/processes/hadronic/models/incl/src/G4Incl.cc

    r819 r962  
    2424// ********************************************************************
    2525//
    26 // $Id: G4Incl.cc,v 1.14 2007/12/04 09:49:49 gcosmo Exp $
     26// $Id: G4Incl.cc,v 1.20 2008/11/06 10:11:27 kaitanie Exp $
    2727// Translation of INCL4.2/ABLA V3
    2828// Pekka Kaitaniemi, HIP (translation)
     
    3333#include "G4Incl.hh"
    3434#include <iostream>
    35 #include <assert.h>
    3635#include "Randomize.hh"
     36#include "G4InclRandomNumbers.hh"
     37#include "G4Ranecu.hh"
    3738
    3839G4Incl::G4Incl()
     
    4748  derivGausFunction = 4;
    4849  densFunction = 5;
     50
     51  //  randomGenerator = new G4InclGeant4Random();
     52  randomGenerator = new G4Ranecu();
    4953}
    5054
     
    5256{
    5357  verboseLevel = 0;
    54  
     58
    5559  // Set functions to be used for integration routine. 
    5660  wsaxFunction = 0;
     
    6670  saxw = aSaxw;
    6771  ws = aWs;
     72
     73  //randomGenerator = new G4Ranecu();
     74  randomGenerator = new G4InclGeant4Random();
    6875}
    6976
     
    8794  varntp = aVarntp;
    8895
     96  //  randomGenerator = new G4InclGeant4Random();
     97  randomGenerator = new G4Ranecu();
    8998  light_gaus_nuc = new G4LightGausNuc();
    9099  light_nuc = new G4LightNuc();
     
    118127G4Incl::~G4Incl()
    119128{
     129  delete randomGenerator;
    120130  delete light_gaus_nuc;
    121131  delete light_nuc;
     
    321331  const G4double melec = 0.511;
    322332
    323   G4double   pcorem;
    324   G4double   pxrem;
    325   G4double   pyrem;
    326   G4double   pzrem;
     333  G4double   pcorem = 0.0;
     334  G4double   pxrem = 0.0;
     335  G4double   pyrem = 0.0;
     336  G4double   pzrem = 0.0;
    327337
    328338  G4double ap = 0.0, zp = 0.0, mprojo = 0.0, pbeam = 0.0;
    329339
     340  varntp->clear();
    330341  if(calincl->f[6] == 3.0) { // pi+
    331342    mprojo = 139.56995;
     
    392403  G4int ibert = 1;
    393404
    394   G4int nopart;
    395   G4int izrem;
    396   G4int iarem;
    397   G4double esrem;
    398   G4double erecrem;
    399   G4double berem;
    400   G4double garem;
    401   G4double bimpac;
    402   G4int jrem;
    403   G4double alrem;
     405  G4int nopart = 0;
     406  G4int izrem = 0;
     407  G4int iarem = 0;
     408  G4double esrem = 0.0;
     409  G4double erecrem = 0.0;
     410  G4double berem = 0.0;
     411  G4double garem = 0.0;
     412  G4double bimpac = 0.0;
     413  G4int jrem = 0;
     414  G4double alrem = 0.0;
    404415
    405416  /**
    406417   * Coulomb barrier treatment.
    407418   */
    408   G4double probaTrans;
    409   G4double rndm;
     419  G4double probaTrans = 0.0;
     420  G4double rndm = 0.0;
    410421  if((calincl->f[6] == 1.0) || (calincl->f[6] >= 6.0)) {
    411422    probaTrans = coulombTransm(calincl->f[2],ap,zp,calincl->f[0],calincl->f[1]);
     
    656667  const G4double melec = 0.511;
    657668
    658   G4double pcorem;
    659   G4double pxrem;
    660   G4double pyrem;
    661   G4double pzrem;
     669  G4double pcorem = 0.0;
     670  G4double pxrem = 0.0;
     671  G4double pyrem = 0.0;
     672  G4double pzrem = 0.0;
    662673
    663674  G4double ap = 0.0, zp = 0.0, mprojo = 0.0, pbeam = 0.0;
     675
     676  varntp->clear();
    664677
    665678  // pi+
     
    737750  G4int ibert = 1;
    738751
    739   G4int nopart;
    740   G4int izrem;
    741   G4int iarem;
    742   G4double esrem;
    743   G4double erecrem;
    744   G4double berem;
    745   G4double garem;
    746   G4double bimpac;
    747   G4int jrem;
    748   G4double alrem;
     752  G4int nopart = 0;
     753  G4int izrem = 0;
     754  G4int iarem = 0;
     755  G4double esrem = 0.0;
     756  G4double erecrem = 0.0;
     757  G4double berem = 0.0;
     758  G4double garem = 0.0;
     759  G4double bimpac = 0.0;
     760  G4int jrem = 0;
     761  G4double alrem = 0.0;
    749762
    750763  // Coulomb barrier
    751764 
    752   G4double probaTrans;
    753   G4double rndm;
     765  G4double probaTrans = 0.0;
     766  G4double rndm = 0.0;
    754767
    755768  if((calincl->f[6] == 1.0) || (calincl->f[6] >= 6.0)) {
     
    765778  // Call the actual INCL routine:
    766779  pnu(&ibert, &nopart,&izrem,&iarem,&esrem,&erecrem,&alrem,&berem,&garem,&bimpac,&jrem);
    767 
     780//   nopart=1;
     781//   kind[0]=1;
     782//   ep[0]=799.835;
     783//   alpha[0]=0.08716;
     784//   beta[0]=0.;
     785//   gam[0]=0.99619;
     786//   izrem=82;
     787//   iarem=208;
     788//   esrem=200.;
     789//   erecrem=0.18870;
     790//   alrem=-0.47101;
     791//   berem=0.;
     792//   garem=0.88213;
     793//   bimpac=2.;
    768794  forceAbsor(&nopart, &iarem, &izrem, &esrem, &erecrem, &alrem, &berem, &garem, &jrem);
    769795  G4double aprf = double(iarem);    // mass number of the prefragment
     
    836862        }
    837863      }
    838 
     864     
    839865      if(kind[j] == 3) {
    840866        varntp->avv[j] = -1;
     
    938964    pcorem = std::sqrt(erecrem*(erecrem + 2.0 * 938.2796 * iarem));   // cugnon
    939965    mcorem = 938.2796 * iarem;                               // cugnon
    940                
     966    varntp->pcorem = pcorem;
     967    varntp->mcorem = mcorem;
    941968    // Note: Il faut negliger l'energie d'excitation (ESREM) pour que le bilan
    942969    // d'impulsion soit correct a la sortie de la cascade.....et prendre la
     
    945972    pyrem = pcorem * berem;
    946973    pzrem = pcorem * garem;
    947        
     974    varntp->pxrem = pxrem;
     975    varntp->pyrem = pyrem;
     976    varntp->pzrem = pzrem;
    948977    pxbil = pxbil + pxrem;
    949978    pybil = pybil + pyrem;
     
    963992
    964993    // on recopie le remnant dans le ntuple
    965     //  varntp->ntrack = varntp->ntrack + 1;
     994    // varntp->ntrack = varntp->ntrack + 1;
    966995    varntp->massini = iarem;
    967996    varntp->mzini = izrem;
    968997    varntp->exini = esrem;
    969998
     999    if(verboseLevel > 2) {
     1000      G4cout << __FILE__ << ":" << __LINE__ << "Dump varntp after cascade: " << G4endl;
     1001      varntp->dump();
     1002    }
    9701003    // Evaporation/fission:
    9711004    evaporationResult->ntrack = 0;
     
    9731006                    erecrem, pxrem, pyrem, pzrem, eventnumber);
    9741007
    975     //    assert(evaporationResult->ntrack > 0);
    976     for(G4int evaporatedParticle = 1; evaporatedParticle < evaporationResult->ntrack; evaporatedParticle++) {
     1008    if(verboseLevel > 2) {
     1009      G4cout << __FILE__ << ":" << __LINE__ << "Dump evaporationResult after evaporation: " << G4endl;
     1010      evaporationResult->dump();
     1011    }
     1012    for(G4int evaporatedParticle = 0; evaporatedParticle < evaporationResult->ntrack; evaporatedParticle++) {
    9771013      if(evaporationResult->avv[evaporatedParticle] == 0 && evaporationResult->zvv[evaporatedParticle] == 0) { //Fix: Skip "empty" particles with A = 0 and Z = 0
    978         continue;
     1014        // continue;
    9791015      }
    9801016      varntp->kfis = evaporationResult->kfis;
     
    10091045    evaporationResult->ntrack = -1;
    10101046  }
     1047  if(verboseLevel > 2) {
     1048    G4cout << __FILE__ << ":" << __LINE__ << "Dump varntp after combining: " << G4endl;
     1049    varntp->dump();
     1050  }
    10111051}
    10121052
     
    10251065  // input: should contain a seed (ial, odd and of 5 digits) to start the work.     
    10261066
    1027   G4double xrand;
    1028   G4double ialdep;
    1029   G4int imat;
    1030   G4int iamat, izmat;
     1067  G4double xrand = 0.0;
     1068  G4double ialdep = 0.0;
     1069  G4int imat = 0;
     1070  G4int iamat = 0, izmat = 0;
    10311071
    10321072  // for the 19 secondary seeds of hazard:
     
    10451085  if(initRandomSeed) {
    10461086    ialdep=hazard->ial;
    1047     for(int i = 0; i < IGRAINESIZE; i++) {
    1048       for(int j = 0; j < nbtirhaz[i]; j++) {
     1087    for(G4int i = 0; i < IGRAINESIZE; i++) {
     1088      for(G4int j = 0; j < nbtirhaz[i]; j++) {
    10491089        standardRandom(&xrand,&(hazard->ial));
    10501090      }
     
    10951135void G4Incl::initMaterial(G4int izmat, G4int iamat, G4int imat)
    10961136{
    1097   G4double res_dws;
    1098   G4double fnor;
    1099 
    1100   G4double rcour, geom;
    1101   G4int nbr;
    1102 
    1103   G4double step, f_r;
     1137  G4double res_dws = 0.0;
     1138  G4double fnor = 0.0;
     1139
     1140  G4double rcour = 0.0, geom = 0.0;
     1141  G4int nbr = 0;
     1142
     1143  G4double step = 0.0, f_r = 0.0;
    11041144
    11051145  // rms espace r, espace p, fermi momentum and energy for light gauss nuc.     
     
    11331173  }
    11341174 
    1135   const G4double fmp = 938.2796;
     1175  const G4double fmp = 938.2796; // From INCL data
    11361176
    11371177  // parametres moyens de densite de la cible (fermi 2 parametres)
     
    11421182  }
    11431183  else if(iamat >= 19) {
    1144     ws->r0 = light_nuc->r[iamat];
    1145     ws->adif = light_nuc->a[iamat];
     1184    ws->r0 = light_nuc->r[iamat-1];
     1185    ws->adif = light_nuc->a[iamat-1];
    11461186    ws->rmaxws = ws->r0 + (ws->xfoisa)*(ws->adif);
    11471187  }
    11481188  else if(iamat >= 6) {
    1149     ws->r0 = light_nuc->r[iamat];
    1150     ws->adif = light_nuc->a[iamat];
    1151     ws->rmaxws = 5.5 + 0.3*(iamat-6.)/12.;
     1189    ws->r0 = light_nuc->r[iamat-1];
     1190    ws->adif = light_nuc->a[iamat-1];
     1191    ws->rmaxws = 5.5 + 0.3*(double(iamat)-6.)/12.;
    11521192  }
    11531193  else if(iamat >= 2) {
     
    11721212    if(iamat == 3 && izmat == 2) {
    11731213      ws->r0 = light_gaus_nuc->rms1t[7]; // Orig: rms1t(8)
    1174       light_gaus_nuc->pfln[7] = light_gaus_nuc->pf1t[7]*1.291;   //!sqrt(5/3)=1.291
     1214      light_gaus_nuc->pfln[7] = light_gaus_nuc->pf1t[7]*1.291;   //!std::sqrt(5/3)=1.291
    11751215      light_gaus_nuc->tfln[7] = std::sqrt(std::pow(light_gaus_nuc->pfln[7],2) + fmp*fmp) - fmp;
    11761216      light_gaus_nuc->vnuc[7] = light_gaus_nuc->tfln[7] + 3.86;
     
    11811221    if(iamat == 4) {
    11821222      ws->r0 = light_gaus_nuc->rms1t[8]; // Orig: rms1t(9)
    1183       light_gaus_nuc->pfln[8] = light_gaus_nuc->pf1t[8]*1.291;   // !sqrt(5/3)=1.291
     1223      light_gaus_nuc->pfln[8] = light_gaus_nuc->pf1t[8]*1.291;   // !std::sqrt(5/3)=1.291
    11841224      light_gaus_nuc->tfln[8] = std::sqrt(std::pow(light_gaus_nuc->pfln[8],2) + fmp*fmp) - fmp;
    11851225      light_gaus_nuc->vnuc[8] = light_gaus_nuc->tfln[8] + 9.43;
     
    11941234
    11951235  // bmax for sigma geom and various projectiles (p,n,pion/d/t/he3/he4/)
    1196   G4int j;
     1236  G4int j = 0;
    11971237  for(G4int i = 0; i < MATGEOSIZE; i++) { // Orig: do i=1,6
    11981238    j = i;
     
    14401480  G4double q[qsize];
    14411481  G4double f[qsize];
     1482  for(G4int init_i = 0; init_i < qsize; init_i++) {
     1483    q[init_i] = 0.0;
     1484    f[init_i] = 0.0;
     1485  }
     1486
    14421487  G4double dq=0.01;
    14431488  q[0]=0.0;
     
    14801525G4double G4Incl::integrate(G4double ami, G4double ama, G4double step, G4int functionChoice)
    14811526{
    1482   G4double res;
     1527  G4double res = 0.0;
    14831528  G4double x1[5];
     1529  for(G4int init_i = 0; init_i < 5; init_i++) {
     1530    x1[init_i] = 0.0;
     1531  }
    14841532  G4double ri = ami;
    14851533  G4double ra = ama;
    1486   G4int nb;
     1534  G4int nb = 0;
    14871535  G4double acont = 1.0;
    14881536  G4double dr = step;
     
    15381586void G4Incl::spl2ab()
    15391587{
    1540   G4int i, j, k;
     1588  G4int i = 0, j = 0, k = 0;
    15411589
    15421590  for(i=0; i <= spl2->n-3; i++) {
     
    15611609G4double G4Incl::splineab(G4double xv)
    15621610{
    1563   G4double tz;
     1611  G4double tz = xv-spl2->x[0];
    15641612  G4int j;
    1565  
    1566   tz = xv-spl2->x[0];
    15671613
    15681614  if(tz < 0) {
     
    16191665  G4int l = (*l_p);
    16201666
    1621   G4double minus_b1, minus_b2, minus_b3;
    1622   //alog
    1623   G4double aml1;
    1624   G4double aml2;
    1625   G4double amlnew;
    1626   G4double arg;
    1627   G4double b1;
    1628   G4double b2;
    1629   G4double b3;
    1630   G4double bb2;
    1631   G4double be;
     1667  G4double minus_b1 = 0.0, minus_b2 = 0.0, minus_b3 = 0.0;
     1668  G4double aml1 = 0.0;
     1669  G4double aml2 = 0.0;
     1670  G4double amlnew = 0.0;
     1671  G4double arg = 0.0;
     1672  G4double b1 = 0.0;
     1673  G4double b2 = 0.0;
     1674  G4double b3 = 0.0;
     1675  G4double bb2 = 0.0;
     1676  G4double be = 0.0;
    16321677  G4double bmass[2000];
    1633   G4double bmax2;
    1634   G4double c1;
    1635   G4double c2;
    1636   G4double cb0;
    1637   G4double cchi;
    1638   G4double ccr;
    1639   G4double cg;
    1640   G4double cif;
    1641   G4double cmultn;
    1642   G4double cobe;
    1643   G4double coeffb0;
    1644   G4double comom;
    1645   G4double cstet;
    1646   G4double dis1;
    1647   G4double dis2;
    1648   G4double dis3;
    1649   G4double dist;
    1650   G4double eb0;
    1651   G4double ecoreh5;
    1652   G4double efer;
    1653   G4double egs;
    1654   G4double eh5;
    1655   G4double eh6;
    1656   G4double eij;
    1657   G4double ekout;
    1658   G4double elead;
    1659   G4double energie_in;
    1660   G4double ener_max;
    1661   G4double eout;
     1678  for(G4int init_i = 0; init_i < 2000; init_i++) {
     1679    bmass[init_i] = 0.0;
     1680  }
     1681  G4double bmax2 = 0.0;
     1682  G4double c1 = 0.0;
     1683  G4double c2 = 0.0;
     1684  G4double cb0 = 0.0;
     1685  G4double cchi = 0.0;
     1686  G4double ccr = 0.0;
     1687  G4double cg = 0.0;
     1688  G4double cif = 0.0;
     1689  G4double cmultn = 0.0;
     1690  G4double cobe = 0.0;
     1691  G4double coeffb0 = 0.0;
     1692  G4double comom = 0.0;
     1693  G4double cstet = 0.0;
     1694  G4double dis1 = 0.0;
     1695  G4double dis2 = 0.0;
     1696  G4double dis3 = 0.0;
     1697  G4double dist = 0.0;
     1698  G4double eb0 = 0.0;
     1699  G4double ecoreh5 = 0.0;
     1700  G4double efer = 0.0;
     1701  G4double egs = 0.0;
     1702  G4double eh5 = 0.0;
     1703  G4double eh6 = 0.0;
     1704  G4double eij = 0.0;
     1705  G4double ekout = 0.0;
     1706  G4double elead = 0.0;
     1707  G4double energie_in = 0.0;
     1708  G4double ener_max = 0.0;
     1709  G4double eout = 0.0;
    16621710  G4double eps_c[BL1SIZE];
    1663   G4double epsv;
    1664   G4double erecg;
    1665   G4double erem;
    1666   G4double exi;
    1667   G4double expob0;
    1668   G4double factemp;
    1669   G4double fffc;
    1670   G4double fm;
    1671   G4double g1;
    1672   G4double g2;
    1673   G4double ge;
    1674   G4double geff;
    1675   G4double gg;
    1676   G4double gl1;
    1677   G4double gl2;
    1678   G4double gpsg;
    1679   G4int i1;
    1680   G4int i20;
    1681   G4int ic33;
    1682   G4int ich1;
    1683   G4int ich2;
    1684   G4int ich3;
    1685   G4int ich4;
    1686   G4int ichd;
    1687   G4int ichpion;
    1688   G4int idecf;
    1689   G4int idep;
    1690   G4int iej;
    1691   G4int iejn;
    1692   G4int iejp;
    1693   G4int i_emax;
    1694   G4int iflag;
     1711  for(G4int init_i = 0; init_i < BL1SIZE; init_i++) {
     1712    eps_c[init_i] = 0.0;
     1713  }
     1714  G4double epsv = 0.0;
     1715  G4double erecg = 0.0;
     1716  G4double erem = 0.0;
     1717  G4double exi = 0.0;
     1718  G4double expob0 = 0.0;
     1719  G4double factemp = 0.0;
     1720  G4double fffc = 0.0;
     1721  G4double fm = 0.0;
     1722  G4double g1 = 0.0;
     1723  G4double g2 = 0.0;
     1724  G4double ge = 0.0;
     1725  G4double geff = 0.0;
     1726  G4double gg = 0.0;
     1727  G4double gl1 = 0.0;
     1728  G4double gl2 = 0.0;
     1729  G4double gpsg = 0.0;
     1730  G4int i1 = 0;
     1731  G4int i20 = 0;
     1732  G4int ic33 = 0;
     1733  G4int ich1 = 0;
     1734  G4int ich2 = 0;
     1735  G4int ich3 = 0;
     1736  G4int ich4 = 0;
     1737  G4int ichd = 0;
     1738  G4int ichpion = 0;
     1739  G4int idecf = 0;
     1740  G4int idep = 0;
     1741  G4int iej = 0;
     1742  G4int iejn = 0;
     1743  G4int iejp = 0;
     1744  G4int i_emax = 0;
     1745  G4int iflag = 0;
    16951746  G4int iflag20 = 0;
    16961747  G4int iflag40 = 0;
    16971748  G4int iflag60 = 0;
    16981749  G4int ilm = 0;
    1699   G4int imin;
     1750  G4int imin = 0;
    17001751  G4int indic[3000];
    1701   G4int inrem;
    1702   G4int ip;
     1752  for(G4int init_i = 0; init_i < 3000; init_i++) {
     1753    indic[init_i] = 0;
     1754  }
     1755  G4int inrem = 0;
     1756  G4int ip = 0;
    17031757  G4int ipi[2000];
    1704   G4int iqe;
    1705   G4int irem;
    1706   G4int irst_avatar;
     1758  for(G4int init_i = 0; init_i < 2000; init_i++) {
     1759    ipi[init_i] = 0;
     1760  }
     1761  G4int iqe = 0;
     1762  G4int irem = 0;
     1763  G4int irst_avatar = 0;
    17071764  G4int isos = 0;
    1708   G4int itch;
    1709   G4int iteste;
    1710   G4int itt;
    1711   G4int ixr1;
    1712   G4int ixr2;
    1713   G4int ixr3;
     1765  G4int itch = 0;
     1766  G4int iteste = 0;
     1767  G4int itt = 0;
     1768  G4int ixr1 = 0;
     1769  G4int ixr2 = 0;
     1770  G4int ixr3 = 0;
    17141771  //  G4int k;
    1715   G4int kcol;
    1716   G4int kd;
     1772  G4int kcol = 0;
     1773  G4int kd = 0;
    17171774  //  G4int klm = 0;
    17181775//   G4int l1;
    17191776//   G4int l2;
    1720   G4int ldel;
    1721   G4int lead;
    1722   G4int led;
    1723   G4int lnew;
     1777  G4int ldel = 0;
     1778  G4int lead = 0;
     1779  G4int led = 0;
     1780  G4int lnew = 0;
    17241781  G4int lp = 0;
    1725   G4int lp1;
    1726   G4double mcdd;
     1782  G4int lp1 = 0;
     1783  G4double mcdd = 0.0;
    17271784  //G4double mg;
    1728   G4int mg;
    1729   G4double mpaul1;
    1730   G4double mpaul2;
    1731   G4double mrdd;
    1732   G4double mrdn;
    1733   G4double mrdp;
    1734   G4double mrnd;
    1735   G4double mrnn;
    1736   G4double mrpd;
    1737   G4int n20;
    1738   G4int nbalttf;
    1739   G4int nbquit;
    1740   G4int nbtest;
    1741   G4int nc[300];
    1742   G4int ncol;
    1743   G4int ncol_2c;
    1744   G4int next;
    1745   G4int nmiss;
    1746   G4int np;
    1747   G4int npidir;
    1748   G4int npion = 0;
    1749   G4int npproj[300];
    1750   G4int npx;
    1751   G4int nsum_col;
    1752   G4double p1v;
    1753   G4double p2v;
    1754   G4double p3_c[BL1SIZE];
    1755   G4double p3v;
    1756   G4double pfrem1;
    1757   G4double pfrem2;
    1758   G4double pfrem3;
    1759   G4double pfreml;
    1760   G4double pfreml2;
    1761   G4double phi;
    1762   G4double p_mod;
    1763   G4double pot;
    1764   G4double pout1;
    1765   G4double pout2;
    1766   G4double pout3;
    1767   G4double pppp;
    1768   G4double prem1;
    1769   G4double prem2;
    1770   G4double prem3;
    1771   G4double psf;
    1772   G4double pspr;
    1773   G4double ptotl;
    1774   G4double qdeut;
    1775   G4double qqq;
    1776   G4double r22;
    1777   G4double rcm1;
    1778   G4double rcm2;
    1779   G4double rcm3;
    1780   G4double rcorr;
    1781   G4double rhopi;
    1782   G4double rndm;
    1783   G4double rr;
    1784   G4double rrrr;
    1785   G4double s;
    1786   G4double s1t1;
    1787   G4double s2t1;
    1788   G4double s3t1;
    1789   G4double schi;
    1790   G4double sepa;
    1791   G4double sif;
    1792   G4double sitet;
    1793   G4double sp1t1;
    1794   G4double sp2t1;
    1795   G4double sp3t1;
    1796   G4double sq = 0.0;
    1797   G4double sueps;
    1798   G4double t[50];
    1799   G4double t0;
    1800   G4double t1;
    1801   G4double t2;
    1802   G4double t3;
    1803   G4double t33;
    1804   G4double t4;
    1805   G4double t5;
    1806   G4double t6;
    1807   G4double t7;
    1808   G4double t8;
    1809   G4double tau;
    1810   G4double tbid;
    1811   G4double tdel;
    1812   G4double temfin;
    1813   G4double tim;
    1814   G4double timi;
    1815   G4double tlabu;
    1816   G4double tp;
    1817   G4double tref;
    1818   G4double tri;
    1819   G4double tt31;
    1820   G4double tt32;
    1821   G4double tt33;
    1822   G4double tt34;
    1823   G4double tt35;
    1824   G4double tt36;
    1825   G4double tte;
    1826   G4double u;
    1827   G4double v;
    1828   G4double var_ab;
    1829   G4double x;
    1830   G4double x1l1;
    1831   G4double x1l2;
     1785  G4int mg = 0;
     1786  G4double mpaul1 = 0.0;
     1787  G4double mpaul2 = 0.0;
     1788  G4double mrdd = 0.0;
     1789  G4double mrdn = 0.0;
     1790  G4double mrdp = 0.0;
     1791  G4double mrnd = 0.0;
     1792  G4double mrnn = 0.0;
     1793  G4double mrpd = 0.0;
     1794  G4int n20 = 0;
     1795  G4int nbalttf = 0;
     1796  G4int nbquit = 0;
     1797  G4int nbtest = 0;
     1798  G4int nc[300];
     1799  G4int npproj[300];
     1800  for(G4int init_i = 0; init_i < 300; init_i++) {
     1801    nc[init_i] = 0;
     1802    npproj[init_i] = 0;
     1803  }
     1804  G4int ncol = 0;
     1805  G4int ncol_2c = 0;
     1806  G4int next = 0;
     1807  G4int nmiss = 0;
     1808  G4int np = 0;
     1809  G4int npidir = 0;
     1810  G4int npion = 0;
     1811  G4int npx = 0;
     1812  G4int nsum_col = 0;
     1813  G4double p1v = 0.0;
     1814  G4double p2v = 0.0;
     1815  G4double p3v = 0.0;
     1816  G4double pfrem1 = 0.0;
     1817  G4double pfrem2 = 0.0;
     1818  G4double pfrem3 = 0.0;
     1819  G4double pfreml = 0.0;
     1820  G4double pfreml2 = 0.0;
     1821  G4double phi = 0.0;
     1822  G4double p_mod = 0.0;
     1823  G4double pot = 0.0;
     1824  G4double pout1 = 0.0;
     1825  G4double pout2 = 0.0;
     1826  G4double pout3 = 0.0;
     1827  G4double pppp = 0.0;
     1828  G4double prem1 = 0.0;
     1829  G4double prem2 = 0.0;
     1830  G4double prem3 = 0.0;
     1831  G4double psf = 0.0;
     1832  G4double pspr = 0.0;
     1833  G4double ptotl = 0.0;
     1834  G4double qdeut = 0.0;
     1835  G4double qqq = 0.0;
     1836  G4double r22 = 0.0;
     1837  G4double rcm1 = 0.0;
     1838  G4double rcm2 = 0.0;
     1839  G4double rcm3 = 0.0;
     1840  G4double rcorr = 0.0;
     1841  G4double rhopi = 0.0;
     1842  G4double rndm = 0.0;
     1843  G4double rr = 0.0;
     1844  G4double rrrr = 0.0;
     1845  G4double s = 0.0;
     1846  G4double s1t1 = 0.0;
     1847  G4double s2t1 = 0.0;
     1848  G4double s3t1 = 0.0;
     1849  G4double schi = 0.0;
     1850  G4double sepa = 0.0;
     1851  G4double sif = 0.0;
     1852  G4double sitet = 0.0;
     1853  G4double sp1t1 = 0.0;
     1854  G4double sp2t1 = 0.0;
     1855  G4double sp3t1 = 0.0;
     1856  G4double sq = 0.0;
     1857  G4double sueps = 0.0;
     1858  G4double t[50];
     1859  for(G4int init_i = 0; init_i < 50; init_i++) {
     1860    t[init_i] = 0.0;
     1861  }
     1862  G4double t0 = 0.0;
     1863  G4double t1 = 0.0;
     1864  G4double t2 = 0.0;
     1865  G4double t3 = 0.0;
     1866  G4double t33 = 0.0;
     1867  G4double t4 = 0.0;
     1868  G4double t5 = 0.0;
     1869  G4double t6 = 0.0;
     1870  G4double t7 = 0.0;
     1871  G4double t8 = 0.0;
     1872  G4double tau = 0.0;
     1873  G4double tbid = 0.0;
     1874  G4double tdel = 0.0;
     1875  G4double temfin = 0.0;
     1876  G4double tim = 0.0;
     1877  G4double timi = 0.0;
     1878  G4double tlabu = 0.0;
     1879  G4double tp = 0.0;
     1880  G4double tref = 0.0;
     1881  G4double tri = 0.0;
     1882  G4double tt31 = 0.0;
     1883  G4double tt32 = 0.0;
     1884  G4double tt33 = 0.0;
     1885  G4double tt34 = 0.0;
     1886  G4double tt35 = 0.0;
     1887  G4double tt36 = 0.0;
     1888  G4double tte = 0.0;
     1889  G4double u = 0.0;
     1890  G4double v = 0.0;
     1891  G4double var_ab = 0.0;
     1892  G4double x = 0.0;
     1893  G4double x1l1 = 0.0;
     1894  G4double x1l2 = 0.0;
    18321895  G4double x1_target = 0.0;
    18331896  G4double x2_target = 0.0;
    18341897  G4double x3_target = 0.0;
    1835   G4double x2cour;
    1836   G4double x2l1;
    1837   G4double x2l2;
    1838   G4double x3l1;
    1839   G4double x3l2;
    1840   G4double xapres;
    1841   G4double xavant;
    1842   G4double xbl1;
    1843   G4double xbl2;
    1844   G4double xc;
    1845   G4double xe;
    1846   G4double xga;
    1847   G4double xl1;
    1848   G4double xl2;
    1849   G4double xl3;
    1850   G4double xlab;
    1851   G4double xleng;
    1852   G4double xlengm;
    1853   G4double xmodp;
    1854   G4double xpb;
    1855   G4double xq;
    1856   G4double xr1;
    1857   G4double xr2;
    1858   G4double xr3;
    1859   G4double xr4;
    1860   G4double xr5;
    1861   G4double xr6;
    1862   G4double xr7;
    1863   G4double xr8;
    1864   G4double xv;
    1865   G4double xxx;
    1866   G4double xy1;
    1867   G4double xy2;
    1868   G4double xy3;
    1869   G4double xye;
    1870   G4double y;
    1871   G4double q1[BL1SIZE];
    1872   G4double q2[BL1SIZE];
    1873   G4double q3[BL1SIZE];
    1874   G4double q4[BL1SIZE];
     1898  G4double x2cour = 0.0;
     1899  G4double x2l1 = 0.0;
     1900  G4double x2l2 = 0.0;
     1901  G4double x3l1 = 0.0;
     1902  G4double x3l2 = 0.0;
     1903  G4double xapres = 0.0;
     1904  G4double xavant = 0.0;
     1905  G4double xbl1 = 0.0;
     1906  G4double xbl2 = 0.0;
     1907  G4double xc = 0.0;
     1908  G4double xe = 0.0;
     1909  G4double xga = 0.0;
     1910  G4double xl1 = 0.0;
     1911  G4double xl2 = 0.0;
     1912  G4double xl3 = 0.0;
     1913  G4double xlab = 0.0;
     1914  G4double xleng = 0.0;
     1915  G4double xlengm = 0.0;
     1916  G4double xmodp = 0.0;
     1917  G4double xpb = 0.0;
     1918  G4double xq = 0.0;
     1919  G4double xr1 = 0.0;
     1920  G4double xr2 = 0.0;
     1921  G4double xr3 = 0.0;
     1922  G4double xr4 = 0.0;
     1923  G4double xr5 = 0.0;
     1924  G4double xr6 = 0.0;
     1925  G4double xr7 = 0.0;
     1926  G4double xr8 = 0.0;
     1927  G4double xv = 0.0;
     1928  G4double xxx = 0.0;
     1929  G4double xy1 = 0.0;
     1930  G4double xy2 = 0.0;
     1931  G4double xy3 = 0.0;
     1932  G4double xye = 0.0;
     1933  G4double y = 0.0;
     1934  G4double p3_c[BL1SIZE];
     1935  G4double q1[BL1SIZE];
     1936  G4double q2[BL1SIZE];
     1937  G4double q3[BL1SIZE];
     1938  G4double q4[BL1SIZE];
     1939  G4double ym[BL1SIZE];
     1940  for(G4int init_i = 0; init_i < BL1SIZE; init_i++) {
     1941    q1[init_i] = 0.0;
     1942    q2[init_i] = 0.0;
     1943    q3[init_i] = 0.0;
     1944    q4[init_i] = 0.0;
     1945    ym[init_i] = 0.0;
     1946  }
    18751947  G4double y1[BL3SIZE];
    1876   G4double y2[BL3SIZE];
    1877   G4double y3[BL3SIZE];
    1878   //  G4double ym[2000];
    1879   G4double ym[BL1SIZE];
    1880   G4double z;
    1881   G4double za_i;
    1882   G4double zai2;
    1883   G4double zshif;
     1948  G4double y2[BL3SIZE];
     1949  G4double y3[BL3SIZE];
     1950  for(G4int init_i = 0; init_i < BL1SIZE; init_i++) {
     1951    y1[init_i] = 0.0;
     1952    y2[init_i] = 0.0;
     1953    y3[init_i] = 0.0;
     1954  }
     1955  G4double z = 0.0;
     1956  G4double za_i = 0.0;
     1957  G4double zai2 = 0.0;
     1958  G4double zshif = 0.0;
    18841959  G4double ztouch = 0.0;
    1885   G4double ztu;
     1960  G4double ztu = 0.0;
    18861961
    18871962  // LIEGE INC-model as a subroutine
     
    22092284  // end for logging
    22102285
    2211   //  G4int jparticip[300];
    22122286  G4int jparticip[BL1SIZE];
     2287  for(G4int i = 0; i < BL1SIZE; i++) {
     2288    jparticip[i] = 0;
     2289  }
     2290
    22132291  G4double beproj = 0.;
    2214   bl3->ia2 = G4int(calincl->f[0]); // f(1)->f[0] and so on..., calincl added
    2215   G4int iz2 = G4int(calincl->f[1]);
     2292  bl3->ia2 = G4int(std::floor(calincl->f[0] + 0.1)); // f(1)->f[0] and so on..., calincl added
     2293  G4int iz2 = G4int(std::floor(calincl->f[1] + 0.1));
    22162294  G4double r02 = 1.12;
    22172295  kindstruct->kindf7 = int(std::floor(calincl->f[6] + 0.1));
     
    22632341
    22642342  // parametres moyens de densite de la cible (fermi 2 parametres)
    2265   if (bl3->ia2 > 28) { //then
     2343  if (bl3->ia2 >= 28) { //then
    22662344    ws->r0 = (2.745e-4*bl3->ia2+1.063)*std::pow(G4double(bl3->ia2),0.33333333);
    22672345    ws->adif = 1.63e-4*bl3->ia2 + 0.510;
    22682346    ws->rmaxws = ws->r0 + ws->xfoisa*(ws->adif);
    22692347  }
    2270   else if(bl3->ia2 >= 0.19) { //then
    2271     ws->r0 = light_nuc->r[bl3->ia2];
    2272     ws->adif = light_nuc->a[bl3->ia2];
     2348  else if(bl3->ia2 >= 19) { //then
     2349    ws->r0 = light_nuc->r[bl3->ia2-1];
     2350    ws->adif = light_nuc->a[bl3->ia2-1];
    22732351    ws->rmaxws = ws->r0 + ws->xfoisa*(ws->adif);
    22742352  }
    22752353  else if(bl3->ia2>=6) { //then
    2276     ws->r0 = 1.581*(light_nuc->a[bl3->ia2]) * (2.0 + 5.0 * (light_nuc->r[bl3->ia2])/(2.0 + 3.0*(light_nuc->r[bl3->ia2])));
    2277     ws->adif = light_nuc->a[bl3->ia2];
    2278     ws->rmaxws = 5.5 + 0.3*(bl3->ia2 - 6.0)/12.0;
     2354    ws->r0 = 1.581*(light_nuc->a[bl3->ia2-1]) * (2.0 + 5.0 * (light_nuc->r[bl3->ia2-1]))/(2.0 + 3.0*(light_nuc->r[bl3->ia2-1]));
     2355    ws->adif = light_nuc->a[bl3->ia2-1];
     2356    ws->rmaxws = 5.5 + 0.3*(double(bl3->ia2) - 6.0)/12.0;
    22792357  }
    22802358  else if(bl3->ia2 >= 2) { // then
     
    23212399 
    23222400  G4double tnr = tlab;
    2323   assert((tnr*tnr + 2.0*tlab*fmpinc) >= 0);
    2324   assert((tnr+fmpinc) != 0);
    23252401  G4double binc = std::sqrt(tnr*tnr + 2.0*tlab*fmpinc)/(tnr+fmpinc);
    2326   assert((1.0 - binc*binc) > 0);
    23272402  G4double ginc=1.0/std::sqrt(1.0 - binc*binc);
    23282403  G4double pinc = fmpinc*binc*ginc;
    2329 
    2330 //   for(G4int i = 0; i < ia; i++) {
    2331 //     jparticip[i]=0;
    2332 //   }
    2333   for(G4int i = 0; i < 300; i++) {
    2334     jparticip[i] = 0;
    2335   }
    23362404
    23372405  for(G4int bli = 0; bli < BL1SIZE; bli++) {
     
    24242492      else {
    24252493        // deutons
    2426         tlabu = tlab/bl3->ia1;
     2494        tlabu = tlab/double(bl3->ia1);
    24272495        if (tlabu <= 400) {
    24282496          coeffb0 = -0.0035*tlabu + 6.86;
     
    25552623      standardRandom(&u, &(hazard->igraine[10]));
    25562624      cstet = u*2 - 1;
    2557       assert((1.0 - std::pow(cstet,2)) >= 0);
    25582625      sitet = std::sqrt(1.0 - std::pow(cstet,2));
    25592626      standardRandom(&v, &(hazard->igraine[11]));
     
    25752642
    25762643    bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp);
    2577     // assert(isnan(bl1->eps[i]) == false);
    2578     // assert(isnan(energyTest(i)) == false);
    25792644
    25802645    sp1t1 = sp1t1 + bl1->p1[i];
     
    25942659  bl1->p3[bl3->ia1] = -sp3t1;
    25952660  bl1->eps[bl3->ia1] = w(bl1->p1[bl3->ia1],bl1->p2[bl3->ia1],bl1->p3[bl3->ia1],fmp);
    2596   // assert(isnan(bl1->eps[bl3->ia1]) == false);
    2597   // assert(isnan(energyTest(bl3->ia1)) == false);
    25982661 
    25992662  // deutons
     
    26312694      t[5] = 6.283185*t[5];   // t(6) -> t[5]                                     
    26322695      t1 = t[1];              // t(2)->t[1]                                           
    2633       assert((1.0 - t1*t1) >= 0);
    26342696      t2 = std::sqrt(1.0 - t1*t1);                                       
    26352697      t3 = std::cos(t[2]);  //t(3)->t[2]                                           
    26362698      t4 = std::sin(t[2]);   //t(3)->t[2]                                                                                     
    26372699      t5 = t[4];       // t(5)->t[4]                                                 
    2638       assert((1.0 - t5*t5) >= 0);
    26392700      t6 = std::sqrt(1.0 - t5*t5);                                         
    26402701      t7 = std::cos(t[5]);   //t(6) -> t[5]                                             
     
    26672728      bl1->ind1[i] = 0;                                                     
    26682729      bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp);                           
    2669       // assert(isnan(bl1->eps[i]) == false);
    2670       // assert(isnan(energyTest(i)) == false);
    26712730      bl9->hel[i] = 0.0;
    26722731      efer = efer + bl1->eps[i] - fmp;                                       
     
    26802739    bl3->x2[ia] = -s2t1;
    26812740    bl3->x3[ia] = -s3t1;
    2682     // assert(isnan(bl3->x3[ia]) == false);
    26832741    bl1->p1[ia] = -sp1t1;
    26842742    bl1->p2[ia] = -sp2t1;
    26852743    bl1->p3[ia] = -sp3t1;
    26862744
    2687     assert((std::pow(bl1->p1[ia],2) + std::pow(bl1->p2[ia],2) + std::pow(bl1->p3[ia],2)) >= 0);
    26882745    p_mod = std::sqrt(std::pow(bl1->p1[ia],2) + std::pow(bl1->p2[ia],2) + std::pow(bl1->p3[ia],2));
    26892746    if(p_mod > ((bl10->pf)+0.05)) {
     
    26922749
    26932750    bl1->eps[ia] = w(bl1->p1[ia],bl1->p2[ia],bl1->p3[ia],fmp);
    2694     // assert(isnan(energyTest(ia)) == false);
    26952751   
    26962752    efer = efer + bl1->eps[ia]-fmp;                                       
     
    27202776      t[5] = 6.283185*t[5]; //t(6)->t[5]
    27212777      t1 = t[1]; // t(2)->t[1]
    2722       assert((1.0 - t1*t1) >= 0);
    27232778      t2 = std::sqrt(1.0 - t1*t1);
    27242779      t3 = std::cos(t[2]);  //t(3)->t[2]
    27252780      t4 = std::sin(t[2]); //t(3)->t[2]
    27262781      t5 = t[4]; //t(5)->t[4]
    2727       assert((1.0 - t5*t5) >= 0);
    27282782      t6 = std::sqrt(1.0 - t5*t5);
    27292783      t7 = std::cos(t[5]);  //t(6)->t[5]
     
    27532807      bl1->ind1[i] = 0;
    27542808      bl1->eps[i] = w(bl1->p1[i],bl1->p2[i],bl1->p3[i],fmp);
    2755       // assert(isnan(energyTest(i)) == false);
    27562809
    27572810      bl9->hel[i] = 0.0;
    27582811      efer = efer + bl1->eps[i] - fmp;
    27592812    }
    2760     x1_target = x1_target/bl3->ia2;
    2761     x2_target = x2_target/bl3->ia2;
    2762     x3_target = x3_target/bl3->ia2;
     2813    x1_target = x1_target/double(bl3->ia2);
     2814    x2_target = x2_target/double(bl3->ia2);
     2815    x3_target = x3_target/double(bl3->ia2);
    27632816  }
    27642817
     
    27732826  }
    27742827
    2775   assert(z >= 0);
    27762828  z = std::sqrt(z);
    27772829  // random azimuthal direction of the impact parameter (sept 99)
     
    28102862      for(G4int i = 1; i <= bl3->ia1; i++) {
    28112863      //      for(G4int i = 1; i < bl3->ia1; i++) {
    2812         // assert(isnan(ginc) == false);
    2813         assert(ginc != 0);
    28142864        bl3->x3[i] = bl3->x3[i]/ginc;
    2815         // assert(isnan(bl3->x3[i]) == false);
    28162865        zai2 = ws->rmaxws*(ws->rmaxws) - std::pow((b+bl3->x1[i]),2) - std::pow(bl3->x2[i],2);
    28172866        if (zai2 < 0.0) {
     
    28282877        ilm = i;
    28292878        xlengm = xleng;
    2830         // assert(isnan(ztu) == false);
    28312879        ztouch = ztu;
    28322880        //      goto pnu21;
     
    28762924  b1 = (binc - be)/(1.0 - be*binc);
    28772925  b2 = -be;
    2878   assert((1.0 - b1*b1) > 0);
    28792926  g1 = 1.0/std::sqrt(1.0 - b1*b1);
    28802927  g2 = 1.0;
     
    28832930  if (kindstruct->kindf7 <= 2) {
    28842931    bl1->eps[1] = g1*fmp + v0;
    2885     assert((std::pow(bl1->eps[1],2) - std::pow(fmp,2)) >= 0);
    28862932    bl1->p3[1] = std::sqrt(std::pow(bl1->eps[1],2) - std::pow(fmp,2));
    2887     // assert(isnan(energyTest(1)) == false);
    28882933  }
    28892934  else {
     
    29002945      if((energie_in) <= (bl3->ia1*fmp)) {
    29012946        for(G4int i = 1; i <= bl3->ia1; i++) {
    2902           bl1->eps[i] = energie_in/bl3->ia1;
     2947          bl1->eps[i] = energie_in/double(bl3->ia1);
    29032948          bl1->p1[i] = 0.0;
    29042949          bl1->p2[i] = 0.0;
    2905           bl1->p3[i] = pinc/bl3->ia1;
    2906           // assert(isnan(energyTest(i)) == false);
     2950          bl1->p3[i] = pinc/double(bl3->ia1);
    29072951        }
    29082952        goto pnu1871;
     
    29282972        bl1->eps[i] = g1*(eps_c[i] + b1*p3_c[i]);
    29292973        bl1->p3[i] = g1*(b1*tte + p3_c[i]);
    2930         // assert(isnan(energyTest(i)) == false);
    29312974        sueps = sueps + bl1->eps[i];
    29322975      } //enddo
    29332976
    2934       assert(sueps != 0);
    29352977      cobe = (tlab + fmpinc)/sueps;
    29362978
     
    29472989      }
    29482990      for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1
    2949         // assert(isnan(energyTest(i)) == false);
    29502991        arg = std::pow((cobe*(bl1->eps[i])),2)-pm2;
    29512992        if (arg <= 0.) { //then ! put maximum momentum to 0.
     
    29983039      for(G4int i = 1; i <= bl3->ia1; i++) { //do i=1,bl3->ia1
    29993040      //      for(G4int i = 1; i < bl3->ia1; i++) { //do i=1,bl3->ia1
    3000         // assert(isnan(energyTest(i)) == false);
    30013041        arg = std::pow((cobe*(bl1->eps[i])),2) - pm2;
    30023042        comom = std::sqrt(arg/(std::pow(bl1->eps[i],2) - pm2));
    3003         // assert(isnan(comom) == false);
    30043043        bl1->p1[i] = comom*(bl1->p1[i]);
    30053044        bl1->p2[i] = comom*(bl1->p2[i]);
    30063045        bl1->p3[i] = comom*(bl1->p3[i]);
    30073046        bl1->eps[i] = bl1->eps[i]*cobe;
    3008         // assert(isnan(energyTest(i)) == false);
    30093047        if (std::fabs(am(bl1->p1[i],bl1->p2[i],bl1->p3[i],bl1->eps[i])-fmp) > 0.01) {
    30103048          if(verboseLevel > 2) {
     
    30293067      //   bl2->k = bl2->k + 1;
    30303068      //                tref=ref(x1(i),x2(i),x3(i),p1(i),p2(i),p3(i),eps(i),r22)          p-n04740
    3031       // assert(isnan(energyTest(i)) == false);
    30323069      tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22);
    3033       // assert(isnan(tref) == false);
    30343070      if (tref > bl4->tmax5) {
    30353071        goto pnu45;
     
    30373073
    30383074      bl2->k = bl2->k + 1;
    3039       assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE));
    30403075      bl2->crois[bl2->k]=tref;
    30413076      bl2->ind[bl2->k]=i;
     
    30613096        }
    30623097        eij=am(bl1->p1[i]+bl1->p1[j],bl1->p2[i]+bl1->p2[j],bl1->p3[i]+bl1->p3[j],bl1->eps[i]+bl1->eps[j]);
    3063         // assert(isnan(eij) == false);
    30643098        if (eij < 1925.0) {
    30653099          continue;
     
    30673101        isos=bl1->ind2[i]+bl1->ind2[j];
    30683102
    3069         // assert(isnan(eij) == false);
    3070         // assert(isnan(isos) == false);
    30713103        if (31.0*(bl3->rab2) > totalCrossSection(eij,0,isos)) {
    30723104          continue;
     
    30743106
    30753107        bl2->k = bl2->k + 1;
    3076         assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE));
    30773108        if (j == 1) {
    30783109          kcol = kcol + 1;
     
    30963127      // here for incoming pions:
    30973128      for(G4int i = bl3->ia1+1; i <= ia; i++) { //do i=ia1+1,ia
    3098         // assert(isnan(energyTest(i)) == false);
    30993129        tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22);
    3100         // assert(isnan(tref) == false);
    3101         // assert(isnan(tref) == false);
    31023130        if (tref < bl4->tmax5) {
    31033131          bl2->k = bl2->k + 1;
    3104           assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE));
    31053132          bl2->crois[bl2->k] = tref;
    31063133          bl2->ind[bl2->k] = i;
     
    31233150          goto pnu36;
    31243151        }
    3125         // assert(isnan(energyTest(i)) == false);
    31263152        tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22);
    3127         // assert(isnan(tref) == false);
    31283153        if(verboseLevel > 3) {
    31293154          if(tref < 0.0) {
     
    31393164        t1 = bl3->x1[i]*(bl1->p1[i])+bl3->x2[i]*(bl1->p2[i])+bl3->x3[i]*(bl1->p3[i]);                     
    31403165        t2 = bl1->p1[i]*(bl1->p1[i])+bl1->p2[i]*(bl1->p2[i])+bl1->p3[i]*(bl1->p3[i]);               
    3141         assert(t2 != 0);
    31423166        t3 = t1/t2;
    31433167        t4 = bl3->x1[i]*(bl3->x1[i])+bl3->x2[i]*(bl3->x2[i])+bl3->x3[i]*(bl3->x3[i]);
     
    31573181        }
    31583182        tref = (-1.0*t3 - std::sqrt(t5))*(bl1->eps[i]); 
    3159         // assert(isnan(tref) == false);
    31603183        if (tref > bl4->tmax5) {
    31613184          continue;
     
    31643187      pnu37:
    31653188        bl2->k = bl2->k + 1;
    3166         assert((bl2->k >= 0) && (bl2->k < BL2INDSIZE));
    31673189        bl2->crois[bl2->k] = tref;
    31683190        bl2->ind[bl2->k] = i;
     
    31743196      for(G4int i = bl3->ia1+1; i <= ia; i++) { //do  39 i=ia1+1,ia
    31753197        npproj[i] = 0;
    3176         // assert(isnan(energyTest(i)) == false);
    31773198        tref = ref(bl3->x1[i], bl3->x2[i], bl3->x3[i], bl1->p1[i], bl1->p2[i], bl1->p3[i], bl1->eps[i], r22); // line 2609
    3178         // assert(isnan(tref) == false);
    31793199        if(verboseLevel > 3) {
    31803200          if(tref < 0.0) {
     
    31983218        }
    31993219        eij=am(bl1->p1[i]+bl1->p1[ilm],bl1->p2[i]+bl1->p2[ilm],bl1->p3[i]+bl1->p3[ilm],bl1->eps[i]+bl1->eps[ilm]);
    3200         // assert(isnan(eij) == false);
    32013220        if (eij < 1925.0) {
    32023221          continue;
    32033222        }
    32043223        isos=bl1->ind2[i]+bl1->ind2[ilm];                                             
    3205         // assert(isnan(eij) == false);
    3206         // assert(isnan(isos) == false);
    32073224        if (31.*(bl3->rab2) > totalCrossSection(eij,0,isos)) {
    32083225          continue;
     
    33543371  }
    33553372
    3356   // assert(isnan(tau) == false);
    33573373  if(verboseLevel > 3) {
    33583374    G4cout <<"next = " << next << G4endl;
     
    35213537
    35223538  // parameters for the next colliding pair
    3523   // assert(isnan(energyTest(l1)) == false);
    3524   // assert(isnan(energyTest(l2)) == false);
    35253539  t[9] = bl1->eps[bl9->l1] + bl1->eps[bl9->l2]; //t(10)->t[9]
    35263540  t0 = 1.0/t[9]; // t(10)->t[9]
     
    35443558  }
    35453559
    3546   assert(bl1->eps[bl9->l1] != 0);
    35473560  bl1->ta = tau/bl1->eps[bl9->l1];
    35483561  x1l1 = bl3->x1[bl9->l1] + bl1->p1[bl9->l1]*(bl1->ta);
     
    35503563  x3l1 = bl3->x3[bl9->l1] + bl1->p3[bl9->l1]*(bl1->ta);
    35513564
    3552   assert(bl1->eps[bl9->l2] != 0);
    35533565  bl1->ta = tau/bl1->eps[bl9->l2];
    35543566  x1l2 = bl3->x1[bl9->l2] + bl1->p1[bl9->l2]*(bl1->ta);
     
    35723584  // if (k3 == 1) go to 260
    35733585  // if (k4 == 0) go to 260
    3574   mg=bl1->ind1[bl9->l1]+bl1->ind1[bl9->l2];
     3586  if(k3 != 1 && k4 != 0) {
     3587    mg=bl1->ind1[bl9->l1]+bl1->ind1[bl9->l2];
     3588    isos=bl1->ind2[bl9->l1]+bl1->ind2[bl9->l2];
     3589  }
    35753590  if((k3 != 1) && (k4 != 0) && (mg == 1)) {
    3576     isos=bl1->ind2[bl9->l1]+bl1->ind2[bl9->l2];
    35773591    // if (mg != 1) go to 260
    35783592    ldel = bl9->l2;
     
    35803594      ldel = bl9->l1;
    35813595    }
    3582     // assert(isnan(energyTest(ldel)) == false);
    35833596    bl6->xx10 = std::sqrt(std::pow(bl1->eps[ldel],2) - std::pow(bl1->p1[ldel],2) - std::pow(bl1->p2[ldel],2) - std::pow(bl1->p3[ldel],2));
    35843597    bl6->isa = bl1->ind2[ldel];
    3585     // assert(isnan(sq) == false);
    3586     // assert(isnan(mg) == false);
    3587     // assert(isnan(isos) == false);
    35883598    bmax2 = totalCrossSection(sq,mg,isos)/31.415926;
    35893599    if (k5 == 0 && mg != 0) {
     
    35933603  }
    35943604  else {
    3595     // assert(isnan(sq) == false);
    3596     // assert(isnan(mg) == false);
    3597     // assert(isnan(isos) == false);
    35983605    bmax2 = totalCrossSection(sq,mg,isos)/31.41592;
    35993606  }
     
    36493656  if (irst_avatar == 1) {
    36503657    for(G4int i = 1; i <= bl9->l1; i = i + bl9->l1 - 1) { // bugfix!
    3651       assert(bl1->eps[i] != 0);
    3652       // assert(isnan(energyTest(i)) == false);
    36533658      bl1->ta = tau/bl1->eps[i];                                               
    36543659      bl3->x1[i] = bl3->x1[i] + bl1->p1[i]*(bl1->ta);                                     
     
    36653670  else {
    36663671    for(G4int i = 1; i <= ia; i++) {
    3667       // assert(isnan(energyTest(i)) == false);
    3668       assert(bl1->eps[i] != 0);
    36693672      bl1->ta = tau/bl1->eps[i];
    36703673      bl3->x1[i] = bl3->x1[i] + bl1->p1[i]*(bl1->ta);
     
    37163719  ich3 = bl1->ind2[bl9->l1];
    37173720  ich4 = bl1->ind2[bl9->l2];
    3718   // assert(isnan(energyTest(l1)) == false);
    3719   // assert(isnan(energyTest(l2)) == false);
    37203721  aml1 = std::sqrt(std::pow(bl1->eps[bl9->l1],2) - std::pow(bl1->p1[bl9->l1],2) - std::pow(bl1->p2[bl9->l1],2) - std::pow(bl1->p3[bl9->l1],2));
    37213722  aml2 = std::sqrt(std::pow(bl1->eps[bl9->l2],2) - std::pow(bl1->p1[bl9->l2],2) - std::pow(bl1->p2[bl9->l2],2) - std::pow(bl1->p3[bl9->l2],2));
     
    37673768    G4cout <<"Momentum: p1 = " << bl1->p1[bl9->l2] << " p2 = " << bl1->p2[bl9->l2] << " p3 = " << bl1->p3[bl9->l2] << G4endl;
    37683769  }
    3769   // assert(isnan(energyTest(l1)) == false);
    3770   // assert(isnan(energyTest(l2)) == false);
    37713770//   bl9->l1 = l1;
    37723771//   bl9->l2 = l2;
     
    37773776//   l1 = bl9->l1;
    37783777//   l2 = bl9->l2;
    3779   // assert(isnan(energyTest(l1)) == false);
    3780   // assert(isnan(energyTest(l2)) == false);
    37813778  if(verboseLevel > 3) {
    37823779    G4cout <<"End of collis call" << G4endl;
     
    38223819  }
    38233820  // restitution de l1 et l2 si rejet de la col. par pauli:
    3824   // assert(isnan(energyTest(l1)) == false);
    3825   // assert(isnan(energyTest(l2)) == false);
    38263821  bl1->p1[bl9->l1] = t[20]; //t(21)->t[20]
    38273822  bl1->p2[bl9->l1] = t[21]; //t(22)->t[21]
     
    38363831  bl1->ind2[bl9->l1] = ich3;
    38373832  bl1->ind2[bl9->l2] = ich4;
    3838   // assert(isnan(energyTest(l1)) == false);
    3839   // assert(isnan(energyTest(l2)) == false);
    38403833
    38413834  if (bl2->k == 0) {
     
    38963889    }
    38973890
    3898     if(egs < (efer-(bl3->ia2-nbalttf)*tf)) {
     3891    if(egs < (efer- double(bl3->ia2-nbalttf)*tf)) {
    38993892      if(varavat->kveux == 1) {
    39003893        varavat->bloc_cdpp[iavat] = 1;
     
    39823975  bl1->p3[bl9->l1] = bl1->p3[bl9->l2];
    39833976  bl1->eps[bl9->l1] = bl1->eps[bl9->l2];
    3984   // assert(isnan(energyTest(l1)) == false);
    39853977
    39863978  bl3->x1[bl9->l1] = bl3->x1[bl9->l2];
     
    39953987  bl1->p3[bl9->l2] = xr3;
    39963988  bl1->eps[bl9->l2] = xr4;
    3997   // assert(isnan(energyTest(l2)) == false);
    39983989 
    39993990  bl3->x1[bl9->l2] = xr5;
     
    40434034      led = 1;
    40444035    }
    4045     if((ich1+ich2-1) == 0) {
     4036    if((ich1+ich2-1) > 0) {
    40464037      mcdd = mcdd + 1;
    40474038      led = 1;
     
    40594050    aml1 = am(bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],bl1->eps[bl9->l1]);
    40604051    aml2 = am(bl1->p1[bl9->l2],bl1->p2[bl9->l2],bl1->p3[bl9->l2],bl1->eps[bl9->l2]);
    4061     // assert(isnan(aml1) == false);
    4062     // assert(isnan(aml2) == false);
    40634052   
    40644053    t[36] = (aml2*(bl1->p1[bl9->l1]) - aml1*(bl1->p1[bl9->l2]))/(aml1+aml2); //t(37)->t[36]
     
    40744063    t[42] = t[42]/t[45]; //t(N)->t[N-1]
    40754064    t[43] = t[43]/t[45]; //t(N)->t[N-1]
    4076     t[45] = t[45]/t[46];
     4065    t[44] = t[44]/t[45];
    40774066    cif = (t[33]*t[36] + t[34]*t[37] + t[35]*t[38])/t[39]/t[40]; //t(N)->t[N-1]
    40784067   
     
    41034092    bl1->p3[bl9->l1] = aml1*tt36/(aml1 + aml2) + t[38]; //t(39)->t[38]
    41044093    bl1->eps[bl9->l1] = w(bl1->p1[bl9->l1],bl1->p2[bl9->l1],bl1->p3[bl9->l1],aml1);
    4105     // assert(isnan(energyTest(l1)) == false);
    41064094    bl1->p1[bl9->l2] = aml2*tt34/(aml1 + aml2) - t[36]; //t(37)->t[36]
    41074095    bl1->p2[bl9->l2] = aml2*tt35/(aml1 + aml2) - t[37]; //t(38)->t[37]
    41084096    bl1->p3[bl9->l2] = aml2*tt36/(aml1 + aml2) - t[38]; //t(39)->t[38]
    41094097    bl1->eps[bl9->l2] = w(bl1->p1[bl9->l2],bl1->p2[bl9->l2],bl1->p3[bl9->l2],aml2);
    4110     // assert(isnan(energyTest(l2)) == false);
    41114098  }
    41124099  // l-conservation
     
    41884175
    41894176  tref=ref(bl3->x1[bl9->l1], bl3->x2[bl9->l1], bl3->x3[bl9->l1], bl1->p1[bl9->l1], bl1->p2[bl9->l1], bl1->p3[bl9->l1], bl1->eps[bl9->l1],r22); // line 3502
    4190   // assert(isnan(tref) == false);
    41914177 
    41924178  if(verboseLevel > 3) {
     
    42044190
    42054191  tref=ref(bl3->x1[bl9->l2], bl3->x2[bl9->l2], bl3->x3[bl9->l2], bl1->p1[bl9->l2], bl1->p2[bl9->l2], bl1->p3[bl9->l2], bl1->eps[bl9->l2],r22); // line 3516
    4206   // assert(isnan(tref) == false);
    42074192 
    42084193  if(verboseLevel > 3) {
     
    42824267  // largeur variable du delta (phase space factor G4introduced 4/2001)
    42834268  amlnew = std::sqrt(std::pow(bl1->eps[lnew],2)-std::pow(bl1->p1[lnew],2)-std::pow(bl1->p2[lnew],2)-std::pow(bl1->p3[lnew],2));
    4284   // assert(isnan(amlnew) == false);
    42854269 
    42864270  geff = bl1->eps[lnew]/amlnew;
    42874271  qqq = std::sqrt((std::pow(amlnew,2) - std::pow((fmp+fmpi),2))*(std::pow(amlnew,2) - std::pow((fmp-fmpi),2)))/(2.0*amlnew);
    4288   // assert(isnan(qqq) == false);
    42894272 
    42904273  psf = std::pow(qqq,3)/(std::pow(qqq,3) + 5832000.0);
    42914274  tdel = -hc/(g0*psf)*std::log(rndm)*geff;                                 
    4292   // assert(isnan(tdel) == false);
    42934275 
    42944276  if(tdel <= bl4->tmax5) {
     
    43174299  t[33] = bl1->eps[bl9->l1]; //t(34)->t[33]
    43184300  var_ab = std::pow(bl1->eps[bl9->l1],2) - std::pow(bl1->p1[bl9->l1],2) - std::pow(bl1->p2[bl9->l1],2) - std::pow(bl1->p3[bl9->l1],2);
    4319   assert(var_ab > 0);
    43204301  ym[npion] = 0.0;
    43214302
     
    43314312  //  }
    43324313  // PK
    4333   // assert(isnan(ym[npion]) == false);
    4334   assert(ym[npion] != 0);
    4335   // assert(isnan(pcm(ym[npion], fmp, fmpi)) == false);
    43364314  if(varavat->kveux == 1) {
    43374315    varavat->del1avat[iavat] = bl1->ind1[bl9->l1];
     
    43444322    G4cout <<"q1 = " << q1[npion] << " q2 = " << q2[npion] << " q3 = " << q3[npion] << " q4 = " << q4[npion] << G4endl;
    43454323  }
    4346   assert(ym[npion] != 0);
    43474324  decay2(&(bl1->p1[bl9->l1]), &(bl1->p2[bl9->l1]), &(bl1->p3[bl9->l1]), &(bl1->eps[bl9->l1]), &(q1[npion]), &(q2[npion]), &(q3[npion]),
    43484325         &(q4[npion]), &(ym[npion]), &fmp, &fmpi, &(bl9->hel[bl9->l1]));
     
    44044381    }
    44054382  }
    4406   if(egs >= (efer-(bl3->ia2-nbalttf)*tf)) {
     4383  if(egs >= (efer - double(bl3->ia2-nbalttf)*tf)) {
    44074384    goto pnu850;
    44084385  }
     
    47324709 
    47334710  var_ab = std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2);
    4734   assert(var_ab > 0);
    47354711  gpsg = 0.0;
    47364712  if (var_ab > 0.0) {
     
    47984774  itch = itch - (1 + bl1->ind2[bl9->l1])/2;
    47994775  var_ab = std::pow(bl1->p1[bl9->l1],2) + std::pow(bl1->p2[bl9->l1],2) + std::pow(bl1->p3[bl9->l1],2);
    4800   assert(var_ab > 0);
    48014776  gpsg = 0.0;
    48024777  if(var_ab > 0.0) {
     
    49684943    npion = npion + 1;
    49694944    var_ab = std::pow(bl1->eps[i],2) - std::pow(bl1->p1[i],2) - std::pow(bl1->p2[i],2) - std::pow(bl1->p3[i],2);
    4970     assert(var_ab > 0);
    49714945    ym[npion] = 0.0;
    49724946
     
    54275401  G4double e1 = (*e1_p);
    54285402
    5429   G4double debugOutput;
     5403  G4double debugOutput = 0.0;
    54305404  debugOutput = am(p1,p2,p3,e1);
    5431   // assert(isnan(debugOutput) == false);
    54325405
    54335406  G4double pout11 = (*pout11_p);
     
    54575430
    54585431  // Variables:
    5459   G4double a;
    5460   G4double aaa;
    5461   G4double aac;
     5432  G4double a = 0.0;
     5433  G4double aaa = 0.0;
     5434  G4double aac = 0.0;
    54625435  //  G4double alog;
    5463   G4double alphac;
     5436  G4double alphac = 0.0;
    54645437  //  G4double amax1;
    5465   G4double apt;
    5466   G4double argu;
    5467   G4double b;
    5468   G4double btmax;
    5469   G4double cfi;
    5470   G4double cpt;
    5471   G4double ctet;
    5472   G4double e3;
    5473   G4double ecm;
     5438  G4double apt = 0.0;
     5439  G4double argu = 0.0;
     5440  G4double b = 0.0;
     5441  G4double btmax = 0.0;
     5442  G4double cfi = 0.0;
     5443  G4double cpt = 0.0;
     5444  G4double ctet = 0.0;
     5445  G4double e3 = 0.0;
     5446  G4double ecm = 0.0;
    54745447  G4double ex[3];
    54755448  G4double ey[3];
    54765449  G4double ez[3];
    5477   G4double f3;
    5478   G4double f3max;
    5479   G4double fi;
    5480   G4double fracpn;
    5481   G4double heli;
    5482   G4int iexpi;
    5483   G4int ii;
    5484   G4int index;
    5485   G4int index2;
    5486   G4int isi;
    5487   G4double pin;
    5488   G4double pl;
    5489   G4double pnorm;
     5450  G4double qq[3];
     5451  for(G4int init_i = 0; init_i < 3; init_i++) {
     5452    ex[init_i] = 0.0;
     5453    ey[init_i] = 0.0;
     5454    ez[init_i] = 0.0;
     5455    qq[init_i] = 0.0;
     5456  }
     5457  G4double f3 = 0.0;
     5458  G4double f3max = 0.0;
     5459  G4double fi = 0.0;
     5460  G4double fracpn = 0.0;
     5461  G4double heli = 0.0;
     5462  G4int iexpi = 0;
     5463  G4int ii = 0;
     5464  G4int index = 0;
     5465  G4int index2 = 0;
     5466  G4int isi = 0;
     5467  G4double pin = 0.0;
     5468  G4double pl = 0.0;
     5469  G4double pnorm = 0.0;
    54905470  //  G4double pq = 0.0;
    5491   G4double psq;
    5492   G4double qq[3];
    5493   G4double qq4;
    5494   G4double ranres;
    5495   G4double rndm;
    5496   G4double s;
    5497   G4double s1;
     5471  G4double psq = 0.0;
     5472  G4double qq4 = 0.0;
     5473  G4double ranres = 0.0;
     5474  G4double rndm = 0.0;
     5475  G4double s = 0.0;
     5476  G4double s1 = 0.0;
    54985477  //  G4double sel;
    5499   G4double sfi;
    5500   G4double stet;
    5501   G4double t;
    5502   G4double x;
    5503   G4double xkh;
    5504   G4double xp1;
    5505   G4double xp2;
    5506   G4double xp3;
    5507   G4double xx;
    5508   G4double y;
    5509   G4double yn;
    5510   G4double z;
    5511   G4double zn;
    5512   G4double zz;
     5478  G4double sfi = 0.0;
     5479  G4double stet = 0.0;
     5480  G4double t = 0.0;
     5481  G4double x = 0.0;
     5482  G4double xkh = 0.0;
     5483  G4double xp1 = 0.0;
     5484  G4double xp2 = 0.0;
     5485  G4double xp3 = 0.0;
     5486  G4double xx = 0.0;
     5487  G4double y = 0.0;
     5488  G4double yn = 0.0;
     5489  G4double z = 0.0;
     5490  G4double zn = 0.0;
     5491  G4double zz = 0.0;
    55135492
    55145493  // !!!  q4 = -1*q4;
     
    55395518  np = 0;
    55405519  psq = p1*p1 + p2*p2 + p3*p3;
    5541   assert(psq >= 0);
    55425520  pnorm = std::sqrt(psq);
    55435521  ecm = e1 + eout1;
    5544   // assert(isnan(ecm) == false);
    55455522 
    55465523  if(ecm < 1925.0) {
     
    55525529  }
    55535530
    5554   // assert(isnan(bl8->rathr) == false);
    55555531  if(ecm < (2065.0 + bl8->rathr)) {
    55565532    goto collis17;
     
    55795555
    55805556 collis19:
    5581   // assert(isnan(bl8->ramass) == false);
    55825557  if((ecm-2170.4-bl8->ramass) <= 0) {
    55835558    goto collis17;
     
    56065581  standardRandom(&rndm, &(hazard->igraine[10]));
    56075582
    5608   // assert(isnan(ecm) == false);
    5609   // assert(isnan(iso) == false);
    56105583  s1 = lowEnergy(ecm, 1, iso);
    5611   // assert(isnan(s1) == false);
    56125584 
    56135585  if(m1 != 0) {
    5614     assert((e1*e1 - psq) >= 0);
    56155586    bl6->xx10=std::sqrt(e1*e1-psq);
    56165587    bl6->isa=is1;
    5617     // assert(isnan(bl6->isa) == false);
    56185588  }
    56195589  else {
    5620     assert((std::pow(eout1,2)-psq) >= 0);
    56215590    bl6->xx10 = std::sqrt(std::pow(eout1,2)-psq);
    56225591    bl6->isa = is2;
    5623     // assert(isnan(bl6->isa) == false);
    56245592  }
    56255593
    56265594  s = s1 + srec(ecm,bl6->xx10, iso,int(bl6->isa));
    5627   // assert(isnan(s) == false);
    5628   assert(s != 0);
    56295595  a = (s - s1)/s;
    5630   // assert(isnan(a) == false);
    56315596 
    56325597  if((rndm-a) <= 0) {
     
    56485613  standardRandom(&rndm, &(hazard->igraine[0]));
    56495614  s = lowEnergy(ecm,0,iso);
    5650   // assert(isnan(ecm) == false);
    5651   // assert(isnan(iso) == false);
    56525615  a = deltaProductionCrossSection(ecm,iso);
    56535616  a = s/(s+a);
     
    56625625  // j.c et al, prc56(1997)2431
    56635626 collis17:
    5664   assert((std::pow(ecm,2) - 4.0*xm2) >= 0);
    56655627  pl = 0.5*ecm*std::sqrt(std::pow(ecm,2) - 4.0*xm2)/xm;
    56665628  x = 0.001*pl;
    5667   // assert(isnan(x) == false);
    56685629 
    56695630  if (iso == 0) {
     
    56985659 collis82:
    56995660  debugOutput = am(p1,p2,p3,e1);
    5700   // assert(isnan(debugOutput) == false);
    57015661 
    57025662  btmax = 4.0*psq*b;
     
    57055665  ranres = rndm;
    57065666  y = 1.0 - rndm*(1.0 - z);
    5707   assert(y >= 0);
    57085667  t = std::log(y)/b;
    57095668  iexpi = 0;
     
    57335692        //      y = 1.0 - ranres*(10.0 - z);
    57345693        y = 1.0 - ranres*(1.0 - z);
    5735         assert(y >= 0);
    57365694        t = std::log(y)/alphac;
    57375695      }
     
    57445702  }     
    57455703
    5746   assert((1.0 - std::pow(ctet,2)) >= 0);
    57475704  stet = std::sqrt(1.0 - std::pow(ctet,2));
    57485705  standardRandom(&rndm, &(hazard->igraine[2]));
     
    57545711
    57555712  debugOutput = am(p1,p2,p3,e1);
    5756   // assert(isnan(debugOutput) == false);
    57575713
    57585714  if(xx >= (zz*1.0e-8)) {
    5759     assert(xx >= 0);
    57605715    yn=std::sqrt(xx);
    57615716    zn=yn*pnorm;
    5762     assert(pnorm != 0);
    57635717    ez[0] = p1/pnorm; // ez(1) -> ez[0] and so on...
    57645718    ez[1] = p2/pnorm;
    57655719    ez[2] = p3/pnorm;
    5766     assert(yn != 0);
    57675720    ex[0] = p2/yn;
    57685721    ex[1] = -p1/yn;
    57695722    ex[2] = 0.0;     
    5770     assert(zn != 0);
    57715723    ey[0] = p1*p3/zn;
    57725724    ey[1] = p2*p3/zn;
     
    57855737  pout13 = -p3;
    57865738  debugOutput = am(p1,p2,p3,e1);
    5787   // assert(isnan(debugOutput) == false);
    57885739
    57895740  // backward scattering according the parametrization of ref
     
    58045755
    58055756  debugOutput = am(p1,p2,p3,e1);
    5806   // assert(isnan(debugOutput) == false);
    58075757  goto exitRoutine;
    58085758
     
    58355785  y = std::pow(ecm,2);
    58365786  q2 = (y - std::pow(1076.0,2))*(y - std::pow(800.0,2))/y/4.0;                                 
    5837   assert(q2 >= 0);
    58385787  q3 = std::pow((std::sqrt(q2)),3);                                                 
    58395788  f3max = q3/(q3 + std::pow(180.0,3));                                     
    58405789  y = std::pow(x,2);
    58415790  q2 = (y - std::pow(1076.0,2))*(y - std::pow(800.0,2))/y/4.0;                                 
    5842   assert(q2 >= 0);
    58435791  q3 = std::pow((std::sqrt(q2)),3);                                                 
    58445792  f3 = q3/(q3 + std::pow(180.0,3));
     
    58535801  pin = pnorm;
    58545802  pnorm = pcm(ecm,xm,xmdel);
    5855   // assert(isnan(pnorm) == false);
    58565803  if (pnorm <= 0) {
    58575804    pnorm = 0.000001;
     
    58735820
    58745821  standardRandom(&rndm, &(hazard->igraine[5]));
    5875   assert((std::pow(ecm,2) - 4.0*xm2) >= 0);
    58765822  x = 0.001*0.5*ecm*std::sqrt(std::pow(ecm,2) - 4.0*xm2)/xm;
    58775823  if(x < 1.4) {
     
    58885834  }
    58895835 
    5890   assert((1.0 - std::pow(ctet,2)) >= 0);
    58915836  stet = std::sqrt(1.0 - std::pow(ctet,2));
    58925837  standardRandom(&rndm, &(hazard->igraine[6]));
     
    58995844  zz = p3*p3;
    59005845  if(xx >= (zz*1.0e-8)) {
    5901     assert(xx >= 0);
    59025846    yn = std::sqrt(xx);
    59035847    zn = yn*pin;
     
    59225866  // end of correction angular distribution of delta production
    59235867
    5924   assert((xp1*xp1 + xp2*xp2 + xp3*xp3 + xm*xm) >= 0);
    59255868  e3 = std::sqrt(xp1*xp1 + xp2*xp2 + xp3*xp3 + xm*xm);
    59265869  if(k4 != 0) {
     
    59345877  qq[1] = xp2;
    59355878  qq[2] = xp3;
    5936   assert((xp1*xp1 + xp2*xp2 + xp3*xp3 + xmdel*xmdel) >= 0);
    59375879  qq4 = std::sqrt(xp1*xp1 + xp2*xp2 + xp3*xp3 + xmdel*xmdel);
    59385880  heli = std::pow(ctet,2);
     
    59635905  }
    59645906  debugOutput = am(p1,p2,p3,e1);
    5965   // assert(isnan(debugOutput) == false);
    59665907
    59675908  if (iso == 0) {
     
    59705911  if (rndm > 0.333333) {
    59715912    debugOutput = am(p1,p2,p3,e1);
    5972     // assert(isnan(debugOutput) == false);
    59735913    goto exitRoutine;
    59745914  }
     
    59805920  if (index == 1) {
    59815921    debugOutput = am(p1,p2,p3,e1);
    5982     // assert(isnan(debugOutput) == false);
    59835922    goto exitRoutine;
    59845923  }
     
    59905929  ip = -2;
    59915930  debugOutput = am(p1,p2,p3,e1);
    5992   // assert(isnan(debugOutput) == false);
    59935931  goto exitRoutine;
    59945932
     
    59985936  ip = 2;
    59995937  debugOutput = am(p1,p2,p3,e1);
    6000   // assert(isnan(debugOutput) == false);
    60015938  goto exitRoutine;
    60025939
     
    60065943  pout13 = -p3;
    60075944  debugOutput = am(p1,p2,p3,e1);
    6008   // assert(isnan(debugOutput) == false);
    60095945  goto exitRoutine;
    60105946
     
    60285964  }
    60295965  debugOutput = am(p1,p2,p3,e1);
    6030   // assert(isnan(debugOutput) == false);
    60315966
    60325967  // symmetrization of charges in pn -> n delta
     
    60565991 collis170:
    60575992  pnorm = pcm(ecm,xm,xm);
    6058   // assert(isnan(pnorm) == false);
    60595993  standardRandom(&rndm, &(hazard->igraine[11]));
    60605994  ctet = -1.0 + 2.0*rndm;
     
    60625996    ctet = sign(1.0,ctet);
    60635997  }
    6064   assert((1.0 - ctet*ctet) >= 0);
    60655998  stet = std::sqrt(1.0 - ctet*ctet);
    60665999  standardRandom(&rndm, &(hazard->igraine[12]));
     
    60736006  m1 = 0;
    60746007  m2 = 0;
    6075   assert((p1*p1 + p2*p2 + p3*p3 + xm*xm) >= 0);
    60766008  e1 = std::sqrt(p1*p1 + p2*p2 + p3*p3 + xm*xm);
    60776009  eout1 = ecm - e1;
    60786010  debugOutput = am(p1,p2,p3,e1);
    6079   // assert(isnan(debugOutput) == false);
    60806011
    60816012  if (iso == 0) {
     
    60886019 exitRoutine:
    60896020  debugOutput = am(p1,p2,p3,e1);
    6090   // assert(isnan(debugOutput) == false);
    60916021  (*p1_p) = p1;// Was pq
    60926022  (*p2_p) = p2;
     
    60966026
    60976027  debugOutput = am(pout11,pout12,pout13,eout1);
    6098   // assert(isnan(debugOutput) == false);
    60996028  (*pout11_p) = pout11;
    61006029  (*pout12_p) = pout12;
     
    61526081  G4double hel = (*hel_p);
    61536082
    6154   G4double rndm;
     6083  G4double rndm = 0.0;
    61556084
    61566085  G4double xe = wp;
     
    61646093  // PK
    61656094  G4double xq = pcm(xi,x1,x2);                                                 
    6166   // assert(isnan(xq) == false);
    6167   G4double ctet, stet;
    6168 
    6169   G4double fi, cfi, sfi;
    6170   G4double sal, cal;
    6171   G4double t1, t2;
    6172   G4double w1;
    6173   G4double beta;
     6095  G4double ctet = 0.0, stet = 0.0;
     6096
     6097  G4double fi = 0.0, cfi = 0.0, sfi = 0.0;
     6098  G4double sal = 0.0, cal = 0.0;
     6099  G4double t1 = 0.0, t2 = 0.0;
     6100  G4double w1 = 0.0;
     6101  G4double beta = 0.0;
    61746102
    61756103  if(verboseLevel > 3) {
     
    61866114      ctet = sign(1.0,ctet);
    61876115    }
    6188     assert((1.0 - std::pow(ctet,2)) >= 0);
    61896116    stet = std::sqrt(1.0 - std::pow(ctet,2));
    61906117    standardRandom(&rndm, &(hazard->igraine[9]));
     
    61956122  cfi = std::cos(fi);
    61966123  sfi = std::sin(fi);
    6197   assert((b1*b1+b2*b2+b3*b3) >= 0);
    61986124  beta = std::sqrt(b1*b1+b2*b2+b3*b3);
    6199   // assert(isnan(beta) == false);
    6200   assert(beta != 0);
    6201 
    6202   assert((std::pow(b1,2) + std::pow(b2,2)) >= 0);
     6125
    62036126  sal = std::sqrt(std::pow(b1,2) + std::pow(b2,2))/beta;
    62046127  cal = b3/beta;
     
    62066129  if((beta >= 1.0e-10) || (sal >= 1.0e-6)) {
    62076130    t1 = ctet + cal*stet*sfi/sal;
    6208     assert(sal != 0);
    62096131    t2 = stet/sal;                                                       
    62106132    q1 = xq*(b1*t1 + b2*t2*cfi)/beta;
     
    62206142  hel = 0.0;                                                       
    62216143  w1 = q1*q1 + q2*q2 + q3*q3;
    6222   assert((w1 + x2*x2) >= 0);
    62236144  wq = std::sqrt(w1 + x2*x2);
    62246145  p1 = -q1;
    62256146  p2 = -q2;
    62266147  p3 = -q3;
    6227   assert((w1+x1*x1) >= 0);
    62286148  wp = std::sqrt(w1+x1*x1);
    62296149  loren(&q1, &q2, &q3, &b1, &b2, &b3, &wq);
     
    62516171{
    62526172  // time
    6253   G4double t[10];
     6173  G4double t[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
    62546174
    62556175  t[0] = bl1->p1[i]/bl1->eps[i] - bl1->p1[j]/bl1->eps[j]; // t(1)->t[0]
     
    62756195void G4Incl::newt(G4int l1, G4int l2)
    62766196{
    6277   G4int ig, id, kg, kd;
    6278   G4int iy, ix;
    6279   G4double E;
     6197  G4int ig = 0, id = 0, kg = 0, kd = 0;
     6198  G4int iy = 0, ix = 0;
     6199  G4double E = 0.0;
    62806200
    62816201  G4int ia = bl3->ia1 + bl3->ia2;
     
    63496269    bl6->isa=bl1->ind2[ix];
    63506270  newt61:
    6351     // assert(isnan(E) == false);
    6352     // assert(isnan(iy) == false);
    6353     // assert(isnan(bl1->ind2[ig]) == false);
    6354     // assert(isnan(bl1->ind2[id]) == false);
    63556271    if ((31.*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[ig]+bl1->ind2[id])) {
    63566272      goto newt50;
     
    63876303    bl6->isa=bl1->ind2[ix];
    63886304  newt63:
    6389     // assert(isnan(E) == false);
    6390     // assert(isnan(iy) == false);
    6391     // assert(isnan(bl1->ind2[kg]) == false);
    6392     // assert(isnan(bl1->ind2[kd]) == false);
    63936305    if ((31.*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[kg]+bl1->ind2[kd])) {
    63946306      continue;
     
    64046316void G4Incl::new1(G4int l1)
    64056317{
    6406   G4int ia, iy, ix;
    6407   G4double E;
     6318  G4int ia = 0, iy = 0, ix = 0;
     6319  G4double E = 0.0;
    64086320
    64096321  ia=bl3->ia1+bl3->ia2;
     
    64456357    bl6->isa=bl1->ind2[ix];
    64466358  new161:
    6447     // assert(isnan(E) == false);
    6448     // assert(isnan(iy) == false);
    6449     // assert(isnan(bl1->ind2[i]) == false);
    6450     // assert(isnan(bl1->ind2[l1]) == false);
    64516359    if ((31.*(bl3->rab2)) > totalCrossSection(E ,iy,bl1->ind2[i]+bl1->ind2[l1])) {
    64526360      continue;
     
    64816389    bl6->isa=bl1->ind2[ix];
    64826390  new171:
    6483     // assert(isnan(E) == false);
    6484     // assert(isnan(iy) == false);
    6485     // assert(isnan(bl1->ind2[i]) == false);
    6486     // assert(isnan(bl1->ind2[l1]) == false);
    64876391    if ((31.0*(bl3->rab2)) > totalCrossSection(E,iy,bl1->ind2[i]+bl1->ind2[l1])) {
    64886392      continue;
     
    65046408                  G4double q4, G4int npion, G4int l1)
    65056409{
    6506   G4double t[10];
     6410  G4double t[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
    65076411
    65086412  G4int ia = bl3->ia1 + bl3->ia2;
     
    65186422    }
    65196423
    6520     assert(q4 != 0);
    6521     assert(bl1->eps[i] != 0);
    65226424    t[0] = bl1->p1[i]/bl1->eps[i] - q1/q4;
    65236425    t[1] = bl1->p2[i]/bl1->eps[i] - q2/q4;
     
    65396441    G4double xx2 = t[3]*t[3] + t[4]*t[4] + t[5]*t[5] + (bl1->ta)*t[6];
    65406442    G4double E = std::sqrt(std::pow((bl1->eps[i]+q4),2) - std::pow((bl1->p1[i]+q1),2) - std::pow((bl1->p2[i]+q2),2) - std::pow((bl1->p3[i]+q3),2));
    6541     // assert(isnan(E) == false);
    65426443    if ((31.0*xx2) > pionNucleonCrossSection(E)) {
    65436444      continue;
     
    65536454                  G4double q4, G4int npion, G4int l1)
    65546455{
    6555   G4double t[10];
    6556   G4double E, xx2;
    6557   G4int ia;
     6456  G4double t[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
     6457  G4double E = 0.0, xx2 = 0.0;
     6458  G4int ia = 0;
    65586459
    65596460  if(bl5->nesc[l1] > 0) {
     
    65616462  }
    65626463
    6563   assert(q4 != 0);
    6564   assert(bl1->eps[l1] != 0);
    65656464  t[0] = bl1->p1[l1]/bl1->eps[l1] - q1/q4;
    65666465  t[1] = bl1->p2[l1]/bl1->eps[l1] - q2/q4;
     
    65856484  xx2 = t[3]*t[3] + t[4]*t[4] + t[5]*t[5] + (bl1->ta)*t[6];
    65866485  E = std::sqrt(std::pow((bl1->eps[l1]+q4),2) - std::pow((bl1->p1[l1]+q1),2) - std::pow((bl1->p2[l1]+q2),2) - std::pow((bl1->p3[l1]+q3),2));
    6587   // assert(isnan(E) == false);
    65886486  if ((31.0*xx2) > pionNucleonCrossSection(E)) {
    65896487    return;
     
    66336531  //   3760           common/ws/r0,adif,rmaxws,drws,nosurf,xfoisa,npaulstr,bmax
    66346532
    6635   G4double pmod, pr2;
    6636   G4double xr2, rdeq, dx2, dp2;
    6637   G4double rs, vol;
    6638   G4int nl;
    6639   G4int ia;
     6533  G4double pmod = 0.0, pr2 = 0.0;
     6534  G4double xr2 = 0.0, rdeq = 0.0, dx2 = 0.0, dp2 = 0.0;
     6535  G4double rs = 0.0, vol = 0.0;
     6536  G4int nl = 0;
     6537  G4int ia = 0;
    66406538
    66416539  if (ws->npaulstr == 2) {
     
    66486546    if (pmod < 270.0) {
    66496547      return 1.0;
    6650     }
    6651     else {
     6548    } else {
    66526549      return 0.0;
    66536550    }
    6654   }
    6655   else {
     6551  } else {
    66566552    // Statistic Pauli blocking
    66576553    xr2 = xr*xr;
     
    66596555    vol = std::pow((40.0*3.1415926/3.0),2) * (std::pow((xr*pr)/(2.0*3.1415926*197.13),3));
    66606556    rs = std::sqrt(bl3->x1[l]*bl3->x1[l] + bl3->x2[l]*bl3->x2[l] + bl3->x3[l]*bl3->x3[l]);
    6661     // assert(isnan(rs) == false);
    66626557    if (ws->nosurf <= 0) {
    66636558      // modifs a.b.: r2 -> rmaxws pour la densite en w.s.
    66646559      rdeq = ws->rmaxws;
    6665     }
    6666     else {
     6560    } else {
    66676561      rdeq = ws->r0;
    66686562    }
     
    66836577          if(((nl - 1)/vol/2.0) > 1.0) {
    66846578            return 1.0;
    6685           }
    6686           else {
     6579          } else {
    66876580            return ((nl - 1)/vol/2.0);
    66886581          }
     
    66906583        nl = nl + 1;
    66916584      }
    6692     }
    6693     else {
     6585    } else {
    66946586      return 0.0;
    66956587    }
     
    67096601  G4double plab = E*std::sqrt(E*E-3.52e6)/1876.6;
    67106602  G4double p1 = 0.001*plab;
    6711   G4double alp;
     6603  G4double alp = 0.0;
    67126604
    67136605  if(plab > 2000.0) {
     
    67566648  // m=0,1,2 for nucleon-nucleon,nucleon-delta,delta,delta
    67576649
    6758   G4double stotResult;
     6650  G4double stotResult = 0.0;
    67596651  G4double sine = 0.0;
    67606652
    67616653  if((m-1) < 0) {
    6762     // assert(isnan(E) == false);
    6763     // assert(isnan(i) == false);
    67646654    sine = deltaProductionCrossSection(E,int(i));
    67656655  }
     
    67746664
    67756665  stotResult = sine + lowEnergy(E,m,i);
    6776   // assert(isnan(stotResult) == false);
    67776666  return stotResult;
    67786667}
     
    67816670{
    67826671  G4double E = Ein;
    6783   G4double s;
    6784   G4double x, y;
    6785   G4double srecResult;
     6672  G4double s = 0.0;
     6673  G4double x = 0.0, y = 0.0;
     6674  G4double srecResult = 0.0;
    67866675
    67876676  if (i*i == 16) {
     
    67916680  if(E <= (938.3 + d)) {
    67926681    return 0.0;
    6793   }
    6794   else {
     6682  } else {
    67956683    if(E < (938.3 + d + 2.0)) {
    67966684      E = 938.3 + d + 2.0;
     
    67996687    x = (s - 3.523e6)/(s - std::pow((938.3 + d),2));
    68006688    y = s/(s - std::pow((d - 938.3),2));
    6801     // assert(isnan(E) == false);
    6802     // assert(isnan(i) == false);
    68036689    srecResult = 0.5*x*y*deltaProductionCrossSection(E, i);
    68046690    srecResult = srecResult*(32.0 + i*i*(isa*isa - 5))/64.0;
     
    68776763//   }
    68786764  double scali=1.0;
    6879   double plab;
    6880   double p1;
    6881   double sproResult;
    6882 
    6883   double EE=E-(bl8->rathr);
    6884 
    6885   // assert(isnan(EE) == false);
     6765  double plab = 0.0;
     6766  double p1 = 0.0;
     6767  double sproResult = 0.0;
     6768
     6769  double EE = E -(bl8->rathr);
     6770
    68866771  if(EE*EE-3.53e6 < 0) {
    68876772    goto spro22;
    68886773  }
    6889   plab=EE*std::sqrt(EE*EE-3.52e6)/1876.6;
    6890   // assert(isnan(plab) == false);
    6891   p1=0.001*plab;
     6774  plab = EE * std::sqrt(EE*EE - 3.52e6)/1876.6;
     6775  p1 = 0.001*plab;
    68926776  if (plab > 800.) {
    68936777    goto spro1;
    68946778  }
    68956779  spro22:
    6896   sproResult=0.0;
     6780  sproResult = 0.0;
    68976781  return sproResult;
    68986782
     
    69116795  sproResult=(24.2+8.9*p1-31.1/std::sqrt(p1))*scali;
    69126796  return sproResult;
    6913   spro3: sproResult=(33.0 + 196.0*std::sqrt(std::pow(std::fabs(p1-0.95),5))-31.1/std::sqrt(p1))*scali;
     6797  spro3: sproResult = (33.0 + 196.0*std::sqrt(std::pow(std::fabs(p1 - 0.95),5)) - 31.1/std::sqrt(p1))*scali;
    69146798  return sproResult;
    69156799  spro10: if (plab < 2000.) {
    69166800    goto spro11;
    69176801  }
    6918   sproResult=(41.+(60.*p1-54.)*std::exp(-1.2*p1)-77./(p1+1.5))*scali;
     6802  sproResult = (41.0 + (60.0*p1 - 54.0)*std::exp(-1.2*p1) - 77.0/(p1 + 1.5))*scali;
    69196803  return sproResult;
    69206804  spro11: if (plab < 1500.) {
    69216805    goto spro12;
    69226806  }
    6923   sproResult=41.+60.*(p1-0.9)*std::exp(-1.2*p1)-1250./(p1+50.)+4.*std::pow((p1-1.3),2);
     6807  sproResult = 41.0 + 60.0*(p1 - 0.9)*std::exp(-1.2*p1) - 1250.0/(p1 + 50.0)+4.0*std::pow((p1-1.3),2);
     6808  sproResult = sproResult*scali;
     6809  return sproResult;
     6810 spro12: sproResult=23.5 + 24.6/(1.0 + std::exp(-10.0*p1 + 12.0)) - 1250.0/(p1 + 50.0) + 4.0*std::pow((p1 - 1.3),2);
    69246811  sproResult=sproResult*scali;
    69256812  return sproResult;
    6926  spro12: sproResult=23.5+24.6/(1.+std::exp(-10.*p1+12.))-1250./(p1+50.)+4.*std::pow((p1-1.3),2);
    6927   sproResult=sproResult*scali;
    6928   return sproResult;
    6929 
    69306813}
    69316814
     
    69386821  G4double y = x*x;
    69396822  G4double q2 = (y-std::pow(1076.0,2))*(y-std::pow(800.0,2))/y/4.0;
    6940   assert(q2 >= 0);
    6941   G4double q3, f3;
    6942   G4double spn;
     6823  G4double q3 = 0.0, f3 = 0.0;
     6824  G4double spn = 0.0;
    69436825
    69446826  if(q2 <= 0) {
    69456827    return 0.0;
    6946   }
    6947   else {
     6828  } else {
    69486829    q3 = std::pow((std::sqrt(q2)),3);
    69496830    f3 = q3/(q3+std::pow(180.0,3));
     
    69616842  // of the nucleus and r is the target radius
    69626843
    6963   G4double x;
     6844  G4double x = 0.0;
    69646845  G4double barr = 0.0;
    69656846
    69666847  // We need enough energy to escape from the potential well.
    69676848  if (E > v0) {
    6968     x = std::sqrt(E*(E-v0));
    6969     // assert(isnan(x) == false);
    6970     barr = 4.*x/(E+E-v0+x+x);
    6971     // assert(isnan(barr) == false);
     6849    x = std::sqrt(E*(E - v0));
     6850    barr = 4.0*x/(E + E - v0 + x + x);
    69726851    if (iz > 0) {
    69736852      G4double b = izn*1.44/r;
    6974       G4double px = std::sqrt((E-v0)/b);
    6975       // assert(isnan(px) == false);
     6853      G4double px = std::sqrt((E - v0)/b);
    69766854     
    69776855      if (px < 1.0) {
    6978         G4double g = izn/137.03*std::sqrt(2.*938.3/(E-v0))*(std::acos(px)-px*std::sqrt(1.-px*px));
    6979         // assert(isnan(g) == false);
     6856        G4double g = izn/137.03*std::sqrt(2.0*938.3/(E - v0))*(std::acos(px) - px*std::sqrt(1.0 - px*px));
    69806857        if (g > 35.){
    69816858          barr=0.0;
    6982         }
    6983         else {
     6859        } else {
    69846860          barr = barr*std::exp(-2.0*g);
    69856861        }
    69866862        return barr;
    6987       }
    6988       else {
     6863      } else {
    69896864        return barr;
    69906865      }
    6991     }
    6992     else {
     6866    } else {
    69936867      return barr;
    69946868    }
    6995   }
    6996   else {
     6869  } else {
    69976870    return barr;
    69986871  }
     
    70036876  const G4double  pf = 270.339 , pf2 = 73083.4;
    70046877
    7005   G4double ref;
    7006   G4double t1, t3, t4, t5;
     6878  G4double ref = 0.0;
     6879  G4double t1 = 0.0, t3 = 0.0, t4 = 0.0, t5 = 0.0;
    70076880 
    7008   G4double t2 = p1*p1+p2*p2+p3*p3;
    7009   assert(t2 >= 0);
     6881  G4double t2 = p1*p1 + p2*p2 + p3*p3;
    70106882  G4double p = std::sqrt(t2);
    70116883  G4double r = r2;
    7012   G4double xv;
    7013   G4double s;
     6884  G4double xv = 0.0;
     6885  G4double s = 0.0;
    70146886 
    70156887  if (ws->nosurf <= 0) {
    70166888    xv = p/pf;
    7017     // assert(isnan(xv) == false);
    70186889    r = interpolateFunction(xv);
    7019     // assert(isnan(r) == false);
    70206890    r = r*r;
    70216891    if (t2 > pf2) {
     
    70396909  if (t5 > 0) {
    70406910    ref = (-t3 + std::sqrt(t5))*E;
    7041     // assert(isnan(ref) == false);
    70426911    return ref;
    70436912  }
     
    70786947  }
    70796948
    7080   bl3->ia2 = int(calincl->f[0]); // f(1) -> f[0]
     6949  bl3->ia2 = int(std::floor(calincl->f[0] + 0.1)); // f(1) -> f[0]
    70816950  sep = 6.8309;
    70826951
     
    71056974      bmaxt = ws->bmax;
    71066975      proba_trans = coulombTransm(calincl->f[2],bl3->ia1,iz1,calincl->f[0],calincl->f[1]);
    7107       // assert(isnan(proba_trans) == false);
    7108      
    71096976      proba = forceAbs(1,calincl->f[0],calincl->f[1],calincl->f[2],bmaxt,proba_trans);
    7110       // assert(isnan(proba) == false);
    71116977     
    71126978      standardRandom(&alea,&(hazard->igraine[4]));
     
    71196985     
    71206986      del = std::sqrt(std::pow(((calincl->f[0] + 1.0)*fmpinc + calincl->f[2]),2) - pbeam2);
    7121       // assert(isnan(del) == false);
    71226987     
    71236988      (*erecrem) = pbeam2/((calincl->f[0] + 1.0)*fmpinc+calincl->f[2] + del);
     
    71397004      bmaxt = ws->bmax;
    71407005      proba_trans = coulombTransm(calincl->f[2],bl3->ia1,iz1,calincl->f[0],calincl->f[1]);
    7141       // assert(isnan(proba_trans) == false);
    7142      
    71437006      proba = forceAbs(1,calincl->f[0],calincl->f[1],calincl->f[2],bmaxt,proba_trans);
    7144       // assert(isnan(proba) == false);
    71457007     
    71467008      standardRandom(&alea,&(hazard->igraine[4]));
     
    71537015     
    71547016      del = std::sqrt(std::pow(((calincl->f[0]+1.)*fmpinc+calincl->f[2]),2)-pbeam2);
    7155       // assert(isnan(del) == false);
    71567017     
    71577018      (*erecrem) = pbeam2/((calincl->f[0] + 1.0)*fmpinc + calincl->f[2] + del);
     
    71907051
    71917052  sig_exp = xabs2(zp, ap, zt, at, ep);
    7192   // assert(isnan(sig_exp) == false);
    7193  
    71947053  sig_incl = crossSection(int(iprojo), ep, at);
    7195   // assert(isnan(sig_incl) == false);
    71967054 
    71977055  proba = (sig_exp-pt*sig_incl)/(pt*(sig_g - sig_incl));
     
    72687126  gcm = (ap*(dp1 + E/938.0) + at)/(std::pow((std::pow(ap,2) + std::pow(at,2) + dp2*ap*(E + 938.0)*at/938.e0),dph));
    72697127  bcm = std::sqrt(dp1-dp1/(std::pow(gcm,2)));
    7270   // assert(isnan(bcm) == false);
    72717128 
    72727129  plab = ap*std::sqrt(dp2*938.0*E + E*E);                                   
    7273   // assert(isnan(plab) == false);
    72747130  ecmp = gcm*(E+938.0)*ap - bcm*gcm*plab - ap*938.0;                     
    72757131  ecmt = gcm*938.0*at - at*938.0;
     
    72817137  rm = (197.32/137.01)*zp*zt/ecm;                                     
    72827138  bigr = rp + rt + 1.2*(std::pow(ap,dpth) + std::pow(at,dpth))/(std::pow(ecm,dpth));                   
    7283   // assert(isnan(bigr) == false);
    72847139
    72857140  bigb = 1.44*zp*zt/bigr;                                             
    7286   // assert(isnan(bigb) == false);
    72877141 
    72887142  if ((nint(zp) == 1) && (nint(at) > 56)) {
     
    74207274  }
    74217275
    7422 //  if(isnan(sig)) {
    7423 //    sig = 0.0;
    7424 //  }
    7425 
    74267276  return sig;
    74277277}
     
    74317281  (*seed) = (*seed); // Avoid warning during compilation.
    74327282  // Use Geant4 G4UniformRand
    7433   (*rndm) = G4UniformRand();
     7283  //  (*rndm) = G4UniformRand();
     7284  (*rndm) = randomGenerator->getRandom();
    74347285}
    74357286
     
    75167367                                 {-0.01087e+0,2.6494e+0,-2.5173e+0}};
    75177368
    7518   G4double apow[3], epow[5];
    7519   G4int ii, jj;
     7369  G4double apow[3] = {0.0, 0.0, 0.0}, epow[5] = {0.0, 0.0, 0.0};
     7370  G4int ii = 0, jj = 0;
    75207371
    75217372  if(A >= 27.0) {
    75227373    ii = 3;       
    75237374    jj = 4;
    7524   }
    7525   else {
     7375  } else {
    75267376    ii = 3;
    75277377    jj = 5;
     
    75457395        }
    75467396      }
    7547     }
    7548     else {
     7397    } else {
    75497398      for(G4int i = 0; i < ii; i++ ) {
    75507399        for(G4int j = 0; j < jj; j++) {
     
    75537402      }
    75547403    }
    7555   }
    7556   else {
     7404  } else {
    75577405    for(G4int i = 0; i < ii; i++) {
    75587406      for(G4int j = 0; j < jj; j++) {
     
    75677415G4double G4Incl::coulombTransm(G4double E, G4double fm1, G4double z1, G4double fm2, G4double z2)
    75687416{
    7569   G4double eta,rho;
     7417  G4double eta = 0.0, rho = 0.0;
    75707418  const G4double c2 = 0.00516;
    75717419  const G4double c3 = 0.007165;
    75727420  const G4double uma = 938.0;
    7573   G4double ml;
     7421  G4double ml = 0.0;
    75747422 
    75757423  G4double ecm = E*fm2/(fm1+fm2);
     
    76037451  static G4double psi = rho*y;                                                         
    76047452
    7605   static G4int i0, j0;
     7453  static G4int i0 = 0, j0 = 0;
    76067454 
    7607   static G4double prob;
    7608   static G4double dumm, x, cx;
    7609   static G4double t, t1, t2, t3;
    7610   static G4double f, g;
    7611   static G4double temp, temp1, temp2;
    7612   static G4double xk, delp0, delp1, delx0, delx1;
     7455  static G4double prob = 0.0;
     7456  static G4double dumm = 0.0, x = 0.0, cx = 0.0;
     7457  static G4double t = 0.0, t1 = 0.0, t2 = 0.0, t3 = 0.0;
     7458  static G4double f = 0.0, g = 0.0;
     7459  static G4double temp = 0.0, temp1 = 0.0, temp2 = 0.0;
     7460  static G4double xk = 0.0, delp0 = 0.0, delp1 = 0.0, delx0 = 0.0, delx1 = 0.0;
    76137461
    76147462  if (rho > y) {                                                 
    76157463    if (psi > dp4 && psi < 50.0) {                           
    76167464      prob = clmb2(rho,eta,&dumm);                                       
    7617     }
    7618     else {
     7465    } else {
    76197466      x = std::exp(std::log(eta)/6.0);
    76207467      prob = std::sqrt(dp1 - y*x/(c0 + c1 * std::pow(x,3) + rho * x));
    76217468    }
    76227469    (*ml) = 0;
    7623   }                                                           
    7624   else {
     7470  } else {
    76257471    x = rho/y;                                                         
    76267472    if (psi <= psi0[0]) {
     
    76317477      if (eta > dp1) {                                         
    76327478        t3 = std::log(psi)+dp2*gamma - dp1 + dp1/(12.e0*std::pow(eta,2))+dp1/(12.e1*std::pow(eta,4));
    7633       }                                                       
    7634       else {                                                         
     7479      } else {                                                         
    76357480        t3 = std::log(dp2*rho) + gamma - dp1/(dp1 + std::pow(eta,2)) + s3*std::pow(eta,2) + s4*std::pow(eta,4);   
    76367481      }
     
    76397484      prob = cx/(std::pow(g,2)+std::pow(f,2));                                           
    76407485      (*ml) = 3;
    7641     }                                                         
    7642     else if (psi <= psi0[ln0-1]) {
     7486    } else if (psi <= psi0[ln0-1]) {
    76437487      if (x <= x0[0]) {
    76447488        temp = std::log(psi/psi0[0]);
     
    76537497        prob = cx/std::pow(prob,2);                                             
    76547498        (*ml) = 1;
    7655       }                                                       
    7656       else {                                                         
     7499      } else {                                                         
    76577500        temp1 = std::log(x/x0[0]);
    76587501        i0 = min(max(1 + int(temp1/delx0),1),lt0-1);                                     
     
    76667509        (*ml)=2;                                                       
    76677510      }
    7668     }
    7669     else if (psi <= psi1[ln1-1]) {
     7511    } else if (psi <= psi1[ln1-1]) {
    76707512      if (x <= x1[0]) {
    76717513        temp = std::log(psi/psi1[0]);
     
    76787520        prob = cx/std::pow(prob,2);                                             
    76797521        (*ml) = 1;
    7680       }                                                       
    7681       else {                                                         
     7522      } else {                                                         
    76827523        temp1 = std::log(x/x1[0]);
    76837524        i0 = min(max(1+int(temp1/delx1),1),lt1-1);                                   
     
    76917532        (*ml)=2;                                                       
    76927533      }
    7693     }
    7694     else {
     7534    } else {
    76957535      prob = clmb2(rho,eta,&dumm);                                       
    76967536      (*ml) = 4;                                             
     
    77227562  const G4double x1 = 0.01;
    77237563  const G4double xi = 100;                                       
    7724   static G4double x,temp,prob;
    7725   static G4int i;
     7564  static G4double x = 0.0, temp = 0.0, prob = 0.0;
     7565  static G4int i = 0;
    77267566
    77277567  x = dp1/(dp1 + std::sqrt(dph*rho*eta));                                     
    77287568  if (x < x1) {                                                 
    77297569    temp = t0[2] * std::pow((x/x1),dpth);
    7730   }                                       
    7731   else {
     7570  } else {
    77327571    i = int(std::floor(xi*x));                                                         
    77337572    i = i + 1;
     
    77507589  if(a < b) {
    77517590    return a;
    7752   }
    7753   else {
     7591  } else {
    77547592    return b;
    77557593  }
     
    77607598  if(a < b) {
    77617599    return a;
    7762   }
    7763   else {
     7600  } else {
    77647601    return b;
    77657602  }
     
    77707607  if(a > b) {
    77717608    return a;
    7772   }
    7773   else {
     7609  } else {
    77747610    return b;
    77757611  }
     
    77807616  if(a > b) {
    77817617    return a;
    7782   }
    7783   else {
     7618  } else {
    77847619    return b;
    77857620  }
     
    77977632    if(fractpart < 0.5) {
    77987633      return int(std::floor(number));
    7799     }
    7800     else {
     7634    } else {
    78017635      return int(std::ceil(number));
    78027636    }
     
    78057639    if(fractpart < -0.5) {
    78067640      return int(std::floor(number));
    7807     }
    7808     else {
     7641    } else {
    78097642      return int(std::ceil(number));
    78107643    }
     
    78457678G4double G4Incl::pcm(G4double E, G4double A, G4double C)
    78467679{
    7847 //   assert(((std::pow(E,2)-std::pow((A+C),2))*(std::pow(E,2)-std::pow((A-C),2))) >= 0);
    7848 //   assert(E != 0);
    78497680  return (0.5*std::sqrt((std::pow(E,2)-std::pow((A+C),2))*(std::pow(E,2)-std::pow((A-C),2)))/E);
    78507681}
  • trunk/source/processes/hadronic/models/incl/src/G4InclAblaDataFile.cc

    r819 r962  
    2424// ********************************************************************
    2525//
    26 // $Id: G4InclAblaDataFile.cc,v 1.5 2007/12/03 19:36:06 miheikki Exp $
     26// $Id: G4InclAblaDataFile.cc,v 1.7 2008/06/25 17:20:04 kaitanie Exp $
    2727// Translation of INCL4.2/ABLA V3
    2828// Pekka Kaitaniemi, HIP (translation)
     
    8787 
    8888  G4double flalpha, frldm, vgsld, pace2;
    89   const G4int rows = 98;
    90   const G4int cols = 153;
     89  const G4int rows = 99;
     90  const G4int cols = 154;
    9191  const G4int massnumbers = 263;
    92   for(int i = 0; i < rows; i++) {
    93     for(int j = 0; j < cols; j++) {
     92  for(int i = 0; i < cols; i++) {
     93    for(int j = 0; j < rows; j++) {
    9494      setAlpha(j, i, 0.0);
    9595      setEcnz( j, i, 0.0);
     
    9898  }
    9999 
    100   for(int i = 0; i < rows; i++) {
    101     for(int j = 0; j < cols; j++) {
     100  for(int i = 0; i < cols; i++) {
     101    for(int j = 0; j < rows; j++) {
    102102      flalphain >> flalpha;
    103103      frldmin >> frldm;
    104104      vgsldin >> vgsld;     
    105       setAlpha(j, i, flalpha);
    106       setEcnz( j, i, frldm);
    107       setVgsld(j, i, vgsld);     
     105      setAlpha(i, j, flalpha);
     106      setEcnz( i, j, frldm);
     107      setVgsld(i, j, vgsld);     
    108108    }
    109109  }
Note: See TracChangeset for help on using the changeset viewer.