Import Geant4 10.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2017-12-08 12:52:30 +01:00
parent 98e455a940
commit fc6af9e721
2166 changed files with 276760 additions and 100873 deletions
@@ -3,7 +3,7 @@
==========================================================
Geant4 - an Object-Oriented Toolkit for Physics Simulation
==========================================================
$Id: History 94861 2015-12-14 10:00:31Z gcosmo $
$Id: History 106719 2017-10-20 09:44:30Z gcosmo $
---------------------------------------------------------------------
History file for the ABLA evaporation/fission model
@@ -16,6 +16,10 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19 October 2017 - Jose Luis Rodriguez Sanchez (hadr-abla-V10-03-00)
--------------------------------------------------
- New C++ version of abla07
11 December 2015 - Davide Mancusi (hadr-abla-V10-02-00)
--------------------------------------------------
- Fix bug in de-excitation of boosted nucleon remnants.
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -45,10 +46,9 @@
#include "G4AblaRandom.hh"
#include "G4AblaDataDefs.hh"
#include "G4AblaFissionBase.hh"
/**
* Class containing ABLA de-excitation code.
* Class containing ABLA++ de-excitation code.
*/
class G4Abla {
@@ -95,18 +95,14 @@ public:
*
* @param nucleusA mass number of the nucleus
* @param nucleusZ charge number of the nucleus
* @param nucleusMass mass of the nucleus
* @param excitationEnergy excitation energy of the nucleus
* @param angularMomentum angular momentum of the nucleus (produced as output by INCL4)
* @param recoilEnergy recoil energy of the nucleus
* @param momX momentum x-component
* @param momY momentum y-component
* @param momZ momentum z-component
* @param eventnumber number of the event
*/
void breakItUp(G4int nucleusA, G4int nucleusZ, G4double nucleusMass, G4double excitationEnergy,
G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ,
G4int eventnumber);
void DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber);
// Evaporation
public:
@@ -116,6 +112,13 @@ public:
*/
void initEvapora();
/**
* Initialize ABLA parameters.
*
*/
void SetParameters();
void SetParametersG4(G4int z, G4int a);
/**
* Coefficient of collective enhancement including damping
* Input: z,a,bet,sig,u
@@ -156,30 +159,128 @@ public:
*/
void evapora(G4double zprf, G4double aprf, G4double *ee_par, G4double jprf,
G4double *zf_par, G4double *af_par, G4double *mtota_par,
G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par,
G4int *ff_par, G4int *inttype_par, G4int *inum_par);
G4double *vleva_par, G4double *vxeva_par, G4double *vyeva_par,
G4int *ff_par, G4int *fimf_par, G4double *fzimf, G4double *faimf, G4double *tkeimf_par,G4double *jprfout,G4int *inttype_par, G4int *inum_par,G4double EV_TEMP[200][5],G4int *iev_tab_temp_par);
/**
* Calculation of particle emission probabilities.
*/
void direct(G4double zprf,G4double a, G4double ee, G4double jprf,
G4double *probp_par, G4double *probn_par, G4double *proba_par,
G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sba_par, G4double *ecn_par,
G4double *ecp_par,G4double *eca_par, G4double *bp_par, G4double *ba_par, G4int, G4int inum, G4int itest);
void direct(G4double zprf,G4double a, G4double ee, G4double jprf, G4double *probp_par, G4double *probd_par, G4double *probt_par, G4double *probn_par, G4double *probhe_par, G4double *proba_par, G4double *probg_par,G4double *probimf_par, G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sbd_par, G4double *sbt_par, G4double *sbhe_par, G4double *sba_par, G4double *ecn_par, G4double *ecp_par,G4double *ecd_par,G4double *ect_par,G4double *eche_par, G4double *eca_par, G4double *ecg_par, G4double *bp_par, G4double *bd_par, G4double *bt_par, G4double *bhe_par, G4double *ba_par,G4double *sp,G4double *sd,G4double *st,G4double *she,G4double *sa, G4double * ef, G4double *ts1, G4int inttype, G4int inum, G4int itest, G4int *sortie, G4double *tcn,
G4double *jprfn, G4double *jprfp, G4double *jprfd, G4double *jprft, G4double *jprfhe, G4double *jprfa, G4double *tsum);
/**
* Calculation of fission and the particle emission probabilities after fission.
*/
void fission(G4double AF,G4double ZF,G4double EE,G4double JPRF,
G4double *VX1_FISSION,G4double *VY1_FISSION,G4double *VZ1_FISSION,
G4double *VX2_FISSION,G4double *VY2_FISSION,G4double *VZ2_FISSION,
G4int *ZFP1,G4int *AFP1,G4int *ZFP2,G4int *AFP2,G4int *imode,
G4double *VX_EVA_SC, G4double *VY_EVA_SC, G4double *VZ_EVA_SC,
G4double EV_TEMP[200][5],G4int *IEV_TAB_FIS);
/**
* Calculation of lorentz's boost
*/
void lorentz_boost(G4double VXRIN,G4double VYRIN,G4double VZRIN,G4double VXIN,G4double VYIN,G4double VZIN,G4double *VXOUT,G4double *VYOUT,G4double *VZOUT);
/**
* Calculation of unstable nuclei
*/
void unstable_nuclei(G4int AFP,G4int ZFP,G4int *AFPNEW,G4int *ZFPNEW,G4int &IOUNSTABLE,G4double VX,G4double VY,G4double VZ,G4double *VP1X,G4double *VP1Y,G4double *VP1Z,G4double BU_TAB_TEMP[200][5],G4int *ILOOP);
/**
* Calculation of unstable nuclei tke
*/
void unstable_tke(G4double AIN,G4double ZIN,G4double ANEW,G4double ZNEW,G4double VXIN,G4double VYIN,G4double VZIN,G4double *V1X,G4double *V1Y,G4double *V1Z,G4double *V2X,G4double *V2Y,G4double *V2Z);
/**
* Calculation of tke for breakup fragments
*/
void tke_bu(G4double Z,G4double A,G4double ZALL,G4double AAL,G4double *VX,G4double *VY,G4double *VZ);
/**
* Calculation of the angular momentum of breakup fragments
* according to Goldhaber model
*/
void AMOMENT(G4double AABRA,G4double APRF,G4int IMULTIFR,G4double *PX,G4double *PY,G4double *PZ);
/**
* Calculation of particle emission barriers.
*/
void barrs(G4int Z1,G4int A1,G4int Z2,G4int A2,G4double *sBARR,G4double *sOMEGA);
/**
* Calculation of particle emission between the saddle and scission point.
*/
void evap_postsaddle(G4double A, G4double Z, G4double E_scission_pre, G4double *E_scission_post, G4double *A_scission, G4double *Z_scission,
G4double &vx_eva,G4double &vy_eva,G4double &vz_eva);
/**
* Calculation of imfs.
*/
void imf(G4double ACN,G4double ZCN,G4double TEMP,G4double EE,G4double *ZIMF,G4double *AIMF,G4double *BIMF,G4double *SBIMF,G4double *TIMF,G4double JPRF);
/**
* Calculation of omega at saddle point.
*/
void fomega_sp(G4double AF,G4double Y,G4double *MFCD,G4double *sOMEGA,G4double *sHOMEGA);
/**
* Calculation of omega at ground state.
*/
void fomega_gs(G4double AF,G4double ZF,G4double *K1,G4double *sOMEGA,G4double *sHOMEGA);
/**
* Calculation of tunnelling effect in fission.
*/
G4double tunnelling(G4double A,G4double ZPRF,G4double Y,G4double EE,G4double EF,G4double TEMP,G4double DENSG,G4double DENSF,G4double ENH_FACT);
/**
* Calculation of fission width at the saddle point according to B&W.
*/
void fission_width(G4double ZPRF,G4double A,G4double EE,G4double BS,G4double BK,G4double EF,G4double Y,G4double *GF,G4double *TEMP,G4double JPR,G4int IEROT,G4int FF_ALLOWED,G4int OPTCOL,G4int OPTSHP,G4double DENSG);
/**
* Calculation of unbound nuclei.
*/
void unbound(G4double SN,G4double SP,G4double SD,G4double ST,G4double SHE,G4double SA,G4double BP,G4double BD,G4double BT,G4double BHE,G4double BA,G4double *PROBF,G4double *PROBN,G4double *PROBP,G4double *PROBD,G4double *PROBT,G4double *PROBHE,G4double *PROBA,G4double *PROBIMF,G4double *PROBG,G4double *ECN,G4double *ECP,G4double *ECD,G4double *ECT,G4double *ECHE,G4double *ECA);
/**
* Calculation of the fission distribution.
*/
void fissionDistri(G4double &a,G4double &z,G4double &e,
G4double &a1,G4double &z1,G4double &e1,G4double &v1,
G4double &a2,G4double &z2,G4double &e2,G4double &v2,
G4double &vx_eva_sc,G4double &vy_eva_sc,G4double &vz_eva_sc);
/**
* Calculation of even-odd effects in fission.
*/
void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out);
/**
* Functions for the fission model.
*/
G4double umass(G4double z,G4double n,G4double beta);
G4double ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d);
G4double Uwash(double E, double Ecrit,double Freduction,double gamma);
G4double frldm(double z,double n,double beta);
G4double eflmac_profi(double a,double z);
G4double gausshaz(int k, double xmoy, double sig);
G4double haz(G4int k);
/**
* Level density parameters.
*/
void densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk,
G4double *temp, G4int optshp, G4int optcol, G4double defbet);
void densniv(G4double a, G4double z, G4double ee, G4double ef, G4double *dens, G4double bshell, G4double bs, G4double bk,
G4double *temp, G4int optshp, G4int optcol, G4double defbet, G4double *ecor, G4double jprf, G4int ifis,G4double *qr);
/**
* This subroutine calculates the fission barriers
* of the liquid-drop model of Myers and Swiatecki (1967).
* Analytic parameterization of Dahlinger 1982
* replaces tables. Barrier heights from Myers and Swiatecki
* Calculation of the fission probability modified by transient time effects.
*/
G4double bfms67(G4double zms, G4double ams);
void part_fiss(G4double BET,G4double GP,G4double GF,G4double Y,G4double TAUF,G4double TS1,G4double TSUM,G4int *CHOICE,G4double ZF,G4double AF,G4double FT,G4double *T_LAPSE,G4double *GF_LOC);
G4double func_trans(G4double TIME,G4double ZF,G4double AF,G4double BET,G4double Y,G4double FT,G4double T_0);
/**
* This subroutine calculates the ordinary legendre polynomials of
@@ -240,16 +341,50 @@ public:
*/
void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax);
/**
* Calculation of decay widths for light particles.
*/
G4double width(G4double AMOTHER,G4double ZMOTHER,G4double APART,G4double ZPART,G4double TEMP,G4double B1,G4double SB1,G4double EXC);
/**
* Calculation of penetration factors for light charged particles.
*/
G4double pen(G4double A, G4double ap, G4double omega, G4double T);
/**
* Calculation of mean value of orbital angular momentum.
*/
void lorb(G4double AMOTHER,G4double ADAUGHTER,G4double LMOTHER,G4double EEFINAL,G4double *LORBITAL,G4double *SIGMA_LORBITAL);
/**
* Calculation of BS and BK for the nuclear-level density.
*/
void bsbkbc(G4double A,G4double Z,G4double *BS,G4double *BK,G4double *BC);
/**
* Special functions used for the emission of particles.
*/
G4double erf(G4double x);
G4double gammp(G4double a, G4double x);
void gcf(G4double *gammcf,G4double a,G4double x,G4double gln);
void gser(G4double *gamser,G4double a,G4double x,G4double gln);
G4double fvmaxhaz(G4double T);
G4double fvmaxhaz_neut(G4double x);
/**
* Random numbers.
*/
G4double haz(G4int k);
void standardRandom(G4double *rndm, G4long *seed);
/**
* TIRAGE ALEATOIRE DANS UNE EXPONENTIELLLE : Y=EXP(-X/T)
* LOGARITHM OF THE GAMM FUNCTION
*/
G4double expohaz(G4int k, G4double T);
G4double gammln(G4double xx);
/**
* DISTRIBUTION DE MAXWELL
@@ -266,6 +401,17 @@ public:
*/
G4double fmaxhaz(G4double T);
/**
* tirage aleatoire dans une maxwellienne
*/
G4double fmaxhaz_old(G4double T);
/**
* Random generator according to the
powerfunction y = x**(lambda) in the range from xmin to xmax
*/
G4int IPOWERLIMHAZ(G4double lambda,G4int xmin,G4int xmax);
/**
*
*/
@@ -275,25 +421,25 @@ public:
*
*/
void guet(G4double *x_par, G4double *z_par, G4double *find_par);
/**
* Limits of existing nuclei
*/
void isostab_lim(G4int z, G4int *nmin, G4int *nmax);
/**
* Fill the data array for INCL
*/
void FillData(G4int IMULTBU,G4int IEV_TAB);
public:
// Coordinate system transformations:
void lorab(G4double gam, G4double eta, G4double ein, G4double pin[],
G4double *eout, G4double pout[]);
void translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec);
void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1,
G4double phi1, G4double gamrem, G4double etrem, G4double R[][4],
G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]);
void rotab(G4double R[4][4], G4double pin[4], G4double pout[4]);
// Utils
G4int min(G4int a, G4int b);
G4double min(G4double a, G4double b);
G4int max(G4int a, G4int b);
G4double max(G4double a, G4double b);
G4double DSIGN(G4double a, G4double b);
G4int ISIGN(G4int a, G4int b);
G4int nint(G4double number);
G4int secnds(G4int x);
G4int mod(G4int a, G4int b);
@@ -310,13 +456,17 @@ public:
private:
G4int verboseLevel;
G4int ilast;
G4AblaFissionBase *fissionModel;
G4double T_freeze_out_in;
G4int IEV_TAB_SSC;
G4double BU_TAB[200][11],EV_TAB[200][5],EV_TAB_SSC[200][5];
G4int gammaemission;
G4double T_freeze_out;
G4Pace *pace;
G4Ald *ald;
G4Eenuc *eenuc;
G4Ec2sub *ec2sub;
G4Ecld *ecld;
G4Mexp *masses;
G4Fb *fb;
G4Fiss *fiss;
G4Opt *opt;
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -73,6 +74,21 @@ public:
G4double dm[PACESIZEROWS][PACESIZECOLS];
};
#define MASSIZEROWS 154
#define MASSIZECOLS 13
class G4Mexp {
public:
G4Mexp() {};
~G4Mexp() {};
G4double massexp[MASSIZEROWS][MASSIZECOLS];
G4double bind[MASSIZEROWS][MASSIZECOLS];
G4int mexpiop[MASSIZEROWS][MASSIZECOLS];
};
#define EC2SUBROWS 154
#define EC2SUBCOLS 99
/**
@@ -115,6 +131,9 @@ public:
#define ECLDROWS 154
#define ECLDCOLS 99
#define ECLDROWSbeta 251
#define ECLDCOLSbeta 137
/**
* Shell corrections and deformations.
*/
@@ -145,6 +164,21 @@ public:
* beta2 = std::sqrt(5/(4pi)) * alpha
*/
G4double alpha[ECLDROWS][ECLDCOLS];
/**
* RMS function for lcp emission barriers
*/
G4double rms[ECLDROWS][ECLDCOLS];
/**
* Beta2 deformations
*/
G4double beta2[ECLDROWSbeta][ECLDCOLSbeta];
/**
* Beta4 deformations
*/
G4double beta4[ECLDROWSbeta][ECLDCOLSbeta];
};
class G4Fiss {
@@ -154,13 +188,13 @@ class G4Fiss {
public:
G4Fiss()
:akap(0.0), bet(0.0), homega(0.0), koeff(0.0), ifis(0.0),
optshp(0), optxfis(0), optles(0), optcol(0)
:bet(0.0), ifis(0.0), ucr(0.0), dcr(0.0), optshp(0), optxfis(0), optct(0), optcol(0),
at(0), zt(0)
{};
~G4Fiss() {};
G4double akap,bet,homega,koeff,ifis;
G4int optshp, optxfis,optles,optcol;
G4double bet,ifis,ucr,dcr;
G4int optshp, optxfis,optct,optcol,at,zt;
};
#define FBROWS 101
@@ -187,12 +221,11 @@ class G4Opt {
public:
G4Opt()
:optemd(0), optcha(0), eefac(0.0)
:optemd(0), optcha(0), optshpimf(0), optimfallowed(0)
{};
~G4Opt() {};
G4int optemd,optcha;
G4double eefac;
G4int optemd,optcha,optshpimf,optimfallowed;
};
#define EENUCSIZE 2002
@@ -329,9 +362,9 @@ public:
avv[i] = 0;
zvv[i] = 0;
enerj[i] = 0.0;
plab[i] = 0.0;
tetlab[i] = 0.0;
philab[i] = 0.0;
pxlab[i] = 0.0;
pylab[i] = 0.0;
pzlab[i] = 0.0;
full[i] = false;
}
}
@@ -420,12 +453,14 @@ public:
G4int nProton = 0, nNeutron = 0;
G4int nPiPlus = 0, nPiZero = 0, nPiMinus = 0;
G4int nH2 = 0, nHe3 = 0, nAlpha = 0;
G4int nGamma=0;
G4int nFragments = 0;
G4int nParticles = 0;
for(G4int i = 0; i < ntrack; i++) {
nParticles++;
if(avv[i] == 1 && zvv[i] == 1) nProton++; // Count multiplicities
if(avv[i] == 1 && zvv[i] == 0) nNeutron++;
if(avv[i] == 0 && zvv[i] == 0) nGamma++;
if(avv[i] == -1 && zvv[i] == 1) nPiPlus++;
if(avv[i] == -1 && zvv[i] == 0) nPiZero++;
if(avv[i] == -1 && zvv[i] == -1) nPiMinus++;
@@ -608,6 +643,9 @@ public:
* Momentum.
*/
G4double plab[VARNTPSIZE];
G4double pxlab[VARNTPSIZE];
G4double pylab[VARNTPSIZE];
G4double pzlab[VARNTPSIZE];
/**
* Theta angle.
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -1,101 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4AblaFission_hh
#define G4AblaFission_hh 1
#include "G4AblaFissionBase.hh"
#include "G4AblaRandom.hh"
class G4AblaFission : public G4AblaFissionBase {
public:
G4AblaFission();
~G4AblaFission();
void doFission(G4double &A, G4double &Z, G4double &E,
G4double &A1, G4double &Z1, G4double &E1, G4double &K1,
G4double &A2, G4double &Z2, G4double &E2, G4double &K2);
/**
*
*/
G4double spdef(G4int a, G4int z, G4int optxfis);
/**
*
*/
G4double fissility(G4int a, G4int z, G4int optxfis);
// void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf,
// G4double *zf_par, G4double *af_par, G4double *mtota_par,
// G4double *pleva_par, G4double *pxeva_par);
// G4double bfms67(G4double zms, G4double ams);
// void lpoly(G4double x, G4int n, G4double pl[]);
// G4double expohaz(G4int k, G4double T);
// G4double fd(G4double E);
// G4double f(G4double E);
// G4double fmaxhaz(G4double k, G4double T);
void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out);
G4double umass(G4double z,G4double n,G4double beta);
G4double ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d);
void fissionDistri(G4double &a,G4double &z,G4double &e,
G4double &a1,G4double &z1,G4double &e1,G4double &v1,
G4double &a2,G4double &z2,G4double &e2,G4double &v2);
void standardRandom(G4double *rndm, G4long *seed);
G4double haz(G4int k);
G4double gausshaz(int k, double xmoy, double sig);
G4int min(G4int a, G4int b);
G4double min(G4double a, G4double b);
G4int max(G4int a, G4int b);
G4double max(G4double a, G4double b);
G4int nint(G4double number);
G4int secnds(G4int x);
G4int mod(G4int a, G4int b);
G4double dmod(G4double a, G4double b);
G4double dint(G4double a);
G4int idint(G4double a);
G4double utilabs(G4double a);
G4double dmin1(G4double a, G4double b, G4double c);
private:
};
#endif
@@ -1,77 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4AblaFissionBase_hh
#define G4AblaFissionBase_hh 1
#ifdef ABLAXX_IN_GEANT4_MODE
#include "globals.hh"
#else
#include "G4INCLGeant4Compat.hh"
#endif
//#include "G4InclUtils.hh"
/*
* Abstract interface to fission models.
*/
class G4AblaFissionBase {
public:
G4AblaFissionBase();
virtual ~G4AblaFissionBase();
virtual void doFission(G4double &A, G4double &Z, G4double &E,
G4double &A1, G4double &Z1, G4double &E1, G4double &K1,
G4double &A2, G4double &Z2, G4double &E2, G4double &K2) = 0;
void setVerboseLevel(G4int level) {
verboseLevel = level;
}
void about() {
// G4cout << ";; " << aboutModel << G4endl;
}
void setAboutString(G4String anAbout) {
aboutModel = anAbout;
}
private:
G4int verboseLevel;
G4String aboutModel;
};
#endif
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -85,11 +86,40 @@ public:
*/
G4bool setPace2(G4int A, G4int Z, G4double value);
G4double getAlpha(G4int A, G4int Z);
/**
* Set the value of RMS.
*/
G4bool setRms(G4int A, G4int Z, G4double value);
/**
* Set the value of experimental masses.
*/
G4bool setMexp(G4int A, G4int Z, G4double value);
/**
* Set the value of experimental masses ID.
*/
G4bool setMexpID(G4int A, G4int Z, G4int value);
/**
* Set the value of beta2 deformation.
*/
G4bool setBeta2(G4int A, G4int Z, G4double value);
/**
* Set the value of beta4 deformation.
*/
G4bool setBeta4(G4int A, G4int Z, G4double value);
/**
* Get the value of Alpha.
*/
G4double getAlpha(G4int A, G4int Z);
/**
* Get the value of Ecnz.
*/
G4double getEcnz(G4int A, G4int Z);
/**
@@ -102,6 +132,31 @@ public:
*/
G4double getPace2(G4int A, G4int Z);
/**
* Get the value of RMS.
*/
G4double getRms(G4int A, G4int Z);
/**
* Get the value of experimental masses.
*/
G4double getMexp(G4int A, G4int Z);
/**
* Get the value of experimental masses ID.
*/
G4int getMexpID(G4int A, G4int Z);
/**
* Get the value of beta2 deformation.
*/
G4double getBeta2(G4int A, G4int Z);
/**
* Get the value of beta4 deformation.
*/
G4double getBeta4(G4int A, G4int Z);
G4int getAlphaRows();
G4int getAlphaCols();
@@ -118,10 +173,24 @@ private:
static const G4int paceRows = 500;
static const G4int paceCols = 500;
static const G4int rmsRows = 154;
static const G4int rmsCols = 99;
static const G4int betaRows = 251;
static const G4int betaCols = 137;
static const G4int massRows = 154;
static const G4int massCols = 13;
G4double alpha[alphaRows][alphaCols];
G4double ecnz[alphaRows][alphaCols];
G4double vgsld[alphaRows][alphaCols];
G4double pace2[paceRows][paceCols];
G4double rms[rmsRows][rmsCols];
G4double mexp[massRows][massCols];
G4int mexpid[massRows][massCols];
G4double beta2[betaRows][betaCols];
G4double beta4[betaRows][betaCols];
};
#endif
@@ -11,7 +11,7 @@
#
# Generated on : 24/9/2010
#
# $Id: sources.cmake 89640 2015-04-24 07:34:42Z gcosmo $
# $Id: sources.cmake 106719 2017-10-20 09:44:30Z gcosmo $
#
#------------------------------------------------------------------------------
@@ -47,22 +47,18 @@ include(Geant4MacroDefineModule)
GEANT4_DEFINE_MODULE(NAME G4hadronic_abla_abla
HEADERS
G4AblaDataDefs.hh
G4AblaFission.hh
G4AblaRandom.hh
G4AblaInterface.hh
G4AblaDataFile.hh
G4Abla.hh
G4AblaVirtualData.hh
G4AblaFissionBase.hh
SOURCES
G4AblaVirtualData.cc
G4AblaFissionBase.cc
G4Abla.cc
G4AblaRandom.cc
G4AblaDataFile.cc
G4AblaInterface.cc
G4AblaFission.cc
GRANULAR_DEPENDENCIES
G4baryons
@@ -100,4 +96,4 @@ GEANT4_DEFINE_MODULE(NAME G4hadronic_abla_abla
G4track
G4intercoms
LINK_LIBRARIES)# List any source specific properties here
LINK_LIBRARIES)# List any source specific properties here
File diff suppressed because it is too large Load Diff
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -82,15 +83,17 @@ bool G4AblaDataFile::readData()
G4Exception("G4AblaDataFile::readData()","ABLA_001",
FatalException, ed);
}
G4String dataPath(getenv("G4ABLADATA"));
#else
G4String dataPath(theConfig->getABLAv3pCxxDataFilePath().c_str());
G4String dataPath(theConfig->getABLAXXDataFilePath().c_str());
#endif
G4String flAlphaFile(dataPath + "/flalpha.dat");
G4String frldmFile( dataPath + "/frldm.dat");
G4String vgsldFile( dataPath + "/vgsld.dat");
G4String pace2File( dataPath + "/pace2.dat");
G4String rmsFile( dataPath + "/rms.dat");
G4String defoFile( dataPath + "/defo.dat");
G4String massFile( dataPath + "/mass2003.dat");
if(verboseLevel > 1) {
// G4cout <<"Data path = " << dataPath << G4endl;
@@ -104,31 +107,45 @@ bool G4AblaDataFile::readData()
std::ifstream frldmin(frldmFile.c_str());
std::ifstream vgsldin(vgsldFile.c_str());
std::ifstream pace2in(pace2File.c_str());
std::ifstream rmsin(rmsFile.c_str());
std::ifstream defoin(defoFile.c_str());
std::ifstream massin(massFile.c_str());
std::filebuf *buf1 = flalphain.rdbuf();
std::filebuf *buf2 = frldmin.rdbuf();
std::filebuf *buf3 = vgsldin.rdbuf();
std::filebuf *buf4 = pace2in.rdbuf();
if (!((buf1->is_open()) && (buf2->is_open()) && (buf3->is_open()) && (buf4->is_open()))) {
std::filebuf *buf5 = rmsin.rdbuf();
std::filebuf *buf6 = defoin.rdbuf();
std::filebuf *buf7 = massin.rdbuf();
if (!((buf1->is_open()) && (buf2->is_open()) && (buf3->is_open()) && (buf4->is_open()) && (buf5->is_open()) && (buf6->is_open()) && (buf7->is_open()))) {
#ifdef ABLAXX_IN_GEANT4_MODE
G4ExceptionDescription ed;
ed << " Data missing: could not find ABLA data file in " << dataPath
<< "defined by environment variable G4ABLADATA" << G4endl;
G4Exception("G4AblaDataFile::readData()", "ABLA002", FatalException, ed);
G4Exception("G4AblaDataFile::readData()", "ABLA", FatalException, ed);
#else
std::cerr << "Error opening file." << std::endl;
#endif
}
G4double fflalpha, ffrldm, fvgsld, fpace2;
G4double fflalpha, ffrldm, fvgsld, fpace2, frms;
int fj,fk,a2,a3,a4;
G4double fbeta2,fbeta4;
G4double a7;
const G4int rows = 99;
const G4int cols = 154;
const G4int rowsbeta = 137;
const G4int colsbeta = 251;
const G4int rowsmass = 13;
const G4int colsmass = 154;
const G4int massnumbers = 263;
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
setAlpha(j, i, 0.0);
setEcnz( j, i, 0.0);
setVgsld(j, i, 0.0);
setRms(j, i, 0.0);
}
}
@@ -136,15 +153,51 @@ bool G4AblaDataFile::readData()
for(int j = 0; j < cols; j++) {
flalphain >> fflalpha;
frldmin >> ffrldm;
vgsldin >> fvgsld;
vgsldin >> fvgsld;
rmsin >> frms;
setAlpha(j, i, fflalpha);
setEcnz( j, i, ffrldm);
setVgsld(j, i, fvgsld);
setRms(j, i, frms);
}
}
for(int i = 0; i < rowsbeta; i++) {
for(int j = 0; j < colsbeta; j++) {
setBeta2(j, i, 0.0);
setBeta4(j, i, 0.0);
}
}
for(int i = 0; i < 8983; i++) {
defoin >> fj >> fk >> fbeta2 >> fbeta4;
setBeta2(fk, fj, fbeta2);
setBeta4(fk, fj, fbeta4);
}
for(int i = 0; i < rowsmass; i++) {
for(int j = 0; j < colsmass; j++) {
setMexp(j, i, 0.0);
setMexpID(j,i,0);
}
}
massin >> a2 >> a3 >> a4 >> a7 ;
while(!massin.eof()){
//
if(a3<13.){
setMexpID(a2,a3,1);
setMexp(a2,a3,938.7829835*a3+939.5653301*a2-1.*a4*a7/1000.);
}
massin >> a2 >> a3 >> a4 >> a7 ;
}
flalphain.close();
frldmin.close();
vgsldin.close();
rmsin.close();
defoin.close();
massin.close();
G4String str1, str2, str3;
for(int i = 0; i < 500; i++) {
File diff suppressed because it is too large Load Diff
@@ -1,43 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
#include "globals.hh"
#include "G4AblaFissionBase.hh"
G4AblaFissionBase::G4AblaFissionBase()
{
verboseLevel = 0;
}
G4AblaFissionBase::~G4AblaFissionBase() {}
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -43,6 +44,8 @@
#include "G4IonTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4PhysicalConstants.hh"
//#include "G4INCLParticleTable.hh"
//#include "G4INCLGlobals.hh"
#include <iostream>
#include <cmath>
@@ -54,6 +57,7 @@ G4AblaInterface::G4AblaInterface() :
eventNumber(0)
{
theABLAModel->initEvapora();
theABLAModel->SetParameters();
}
G4AblaInterface::~G4AblaInterface() {
@@ -68,23 +72,18 @@ G4ReactionProductVector *G4AblaInterface::DeExcite(G4Fragment &aFragment) {
const G4int ARem = aFragment.GetA_asInt();
const G4int ZRem = aFragment.GetZ_asInt();
const G4double nuclearMass = aFragment.GetGroundStateMass() / MeV;
const G4double eStarRem = aFragment.GetExcitationEnergy() / MeV;
const G4double jRem = aFragment.GetAngularMomentum().mag() / hbar_Planck;
const G4LorentzVector &pRem = aFragment.GetMomentum();
const G4double eTotRem = pRem.e();
const G4double eKinRem = (eTotRem - pRem.invariantMass()) / MeV;
const G4double pxRem = pRem.x() / MeV;
const G4double pyRem = pRem.y() / MeV;
const G4double pzRem = pRem.z() / MeV;
eventNumber++;
theABLAModel->breakItUp(ARem, ZRem,
nuclearMass,
theABLAModel->DeexcitationAblaxx(ARem, ZRem,
eStarRem,
jRem,
eKinRem,
pxRem,
pyRem,
pzRem,
@@ -108,9 +107,10 @@ G4ReactionProductVector *G4AblaInterface::DeExcite(G4Fragment &aFragment) {
G4ParticleDefinition *G4AblaInterface::toG4ParticleDefinition(G4int A, G4int Z) const {
if (A == 1 && Z == 1) return G4Proton::Proton();
else if(A == 1 && Z == 0) return G4Neutron::Neutron();
else if(A == 0 && Z == 1) return G4PionPlus::PionPlus();
else if(A == 0 && Z == -1) return G4PionMinus::PionMinus();
else if(A == 0 && Z == 0) return G4PionZero::PionZero();
else if(A == -1 && Z == 1) return G4PionPlus::PionPlus();
else if(A == -1 && Z == -1) return G4PionMinus::PionMinus();
else if(A == -1 && Z == 0) return G4PionZero::PionZero();
else if(A == 0 && Z == 0) return G4Gamma::Gamma();
else if(A == 2 && Z == 1) return G4Deuteron::Deuteron();
else if(A == 3 && Z == 1) return G4Triton::Triton();
else if(A == 3 && Z == 2) return G4He3::He3();
@@ -141,16 +141,16 @@ G4ReactionProduct *G4AblaInterface::toG4Particle(G4int A, G4int Z,
}
void G4AblaInterface::ModelDescription(std::ostream& outFile) const {
outFile << "ABLA V3 does not provide an implementation of the ApplyYourself method!\n\n";
outFile << "ABLA++ does not provide an implementation of the ApplyYourself method!\n\n";
}
void G4AblaInterface::DeExciteModelDescription(std::ostream& outFile) const {
outFile << "ABLA V3 is a statistical model for nuclear de-excitation. It simulates\n"
outFile << "ABLA++ is a statistical model for nuclear de-excitation. It simulates\n"
<< "evaporation of neutrons, protons and alpha particles, as well as fission\n"
<< "where applicable. The code included in Geant4 is a C++ translation of the\n"
<< "original Fortran code. More details about the physics are available in the\n"
<< "the Geant4 Physics Reference Manual and in the reference articles.\n\n"
<< "References: A.R. Junghans et al., Nucl. Phys. A629 (1998) 635;\n"
<< " J. Benlliure et al., Nucl. Phys. A628 (1998) 458.\n\n"; }
<< "Reference:\n"
<< "A. Kelic, M. V. Ricciardi, and K. H. Schmidt, in Proceedings of Joint ICTP-IAEA Advanced Workshop on Model Codes for Spallation Reactions, ICTP Trieste, Italy, 48 February 2008, edited by D. Filges, S. Leray, Y. Yariv, A. Mengoni, A. Stanculescu, and G. Mank (IAEA INDC(NDS)-530, Vienna, 2008), pp. 181221.\n\n"; }
#endif // ABLAXX_IN_GEANT4_MODE
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -51,6 +52,5 @@ namespace G4AblaRandom {
return G4INCL::Random::shoot();
#endif
}
}
@@ -24,9 +24,10 @@
// ********************************************************************
//
// ABLAXX statistical de-excitation model
// Jose Luis Rodriguez, CEA (translation from ABLA07 and contact person)
// Pekka Kaitaniemi, HIP (translation)
// Christelle Schmidt, IPNL (fission code)
// Davide Mancusi, CEA (contact person INCL/ABLA)
// Davide Mancusi, CEA (contact person INCL)
// Aatos Heikkinen, HIP (project coordination)
//
#define ABLAXX_IN_GEANT4_MODE 1
@@ -70,6 +71,42 @@ bool G4AblaVirtualData::setPace2(int A, int Z, double value)
return true;
}
bool G4AblaVirtualData::setRms(int A, int Z, double value)
{
rms[A][Z] = value;
return true;
}
bool G4AblaVirtualData::setMexp(int A, int Z, double value)
{
mexp[A][Z] = value;
return true;
}
bool G4AblaVirtualData::setMexpID(int A, int Z, int value)
{
mexpid[A][Z] = value;
return true;
}
bool G4AblaVirtualData::setBeta2(int A, int Z, double value)
{
beta2[A][Z] = value;
return true;
}
bool G4AblaVirtualData::setBeta4(int A, int Z, double value)
{
beta4[A][Z] = value;
return true;
}
double G4AblaVirtualData::getAlpha(int A, int Z)
{
return alpha[A][Z];
@@ -90,6 +127,31 @@ double G4AblaVirtualData::getPace2(int A, int Z)
return pace2[A][Z];
}
double G4AblaVirtualData::getRms(int A, int Z)
{
return rms[A][Z];
}
double G4AblaVirtualData::getMexp(int A, int Z)
{
return mexp[A][Z];
}
int G4AblaVirtualData::getMexpID(int A, int Z)
{
return mexpid[A][Z];
}
double G4AblaVirtualData::getBeta2(int A, int Z)
{
return beta2[A][Z];
}
double G4AblaVirtualData::getBeta4(int A, int Z)
{
return beta4[A][Z];
}
int G4AblaVirtualData::getAlphaRows()
{
return alphaRows;