ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4Abla.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4Abla.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // ABLAXX statistical de-excitation model
27 // Jose Luis Rodriguez, GSI (translation from ABLA07 and contact person)
28 // Pekka Kaitaniemi, HIP (initial translation of ablav3p)
29 // Aleksandra Kelic, GSI (ABLA07 code)
30 // Davide Mancusi, CEA (contact person INCL)
31 // Aatos Heikkinen, HIP (project coordination)
32 //
33 #define ABLAXX_IN_GEANT4_MODE 1
34 
35 #include "globals.hh"
36 
37 #ifndef G4Abla_hh
38 #define G4Abla_hh 1
39 
40 #ifdef ABLAXX_IN_GEANT4_MODE
41 #include "globals.hh"
42 #else
43 #include "G4INCLGeant4Compat.hh"
44 #include "G4INCLConfig.hh"
45 #endif
46 
47 #include "G4AblaRandom.hh"
48 #include "G4AblaDataDefs.hh"
49 
54 class G4Abla {
55 
56 public:
64 #ifdef ABLAXX_IN_GEANT4_MODE
65  G4Abla(G4Volant *aVolant, G4VarNtp *aVarntp);
66 #else
67  G4Abla(G4INCL::Config *config, G4Volant *aVolant, G4VarNtp *aVarntp);
68 #endif
69 
73  ~G4Abla();
74 
76  G4Abla(G4Abla const &other);
77 
79  G4Abla &operator=(G4Abla const &other);
80 
84  void setVerboseLevel(G4int level);
85 
90  return volant;
91  }
92 
105  void DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber);
106 
120  void DeexcitationAblaxx(G4int nucleusA, G4int nucleusZ, G4double excitationEnergy, G4double angularMomentum, G4double momX, G4double momY, G4double momZ, G4int eventnumber, G4int nucleusS);
121 
122  // Evaporation
123 public:
128  void initEvapora();
129 
134  void SetParameters();
135  void SetParametersG4(G4int z, G4int a);
136 
149  void qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr);
150 
155  void mglw(G4double a, G4double z, G4double *el);
156 
160  void mglms(G4double a, G4double z, G4int refopt4, G4double *el);
161 
165  G4double spdef(G4int a, G4int z, G4int optxfis);
166 
170  G4double fissility(G4int a, G4int z, G4int ny, G4double sn, G4double slam, G4int optxfis);
171 
175  void evapora(G4double zprf, G4double aprf, G4double *ee_par, G4double jprf,
176  G4double *zf_par, G4double *af_par, G4double *mtota_par,
177  G4double *vleva_par, G4double *vxeva_par, G4double *vyeva_par,
178  G4int *ff_par, G4int *fimf_par, G4double *fzimf, G4double *faimf, G4double *tkeimf_par,G4double *jprfout,G4int *inttype_par, G4int *inum_par,G4double EV_TEMP[200][6],G4int *iev_tab_temp_par, G4int *nblam0);
179 
180 
184  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 *problamb0_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sbd_par, G4double *sbt_par, G4double *sbhe_par, G4double *sba_par,G4double *slamb0_par, G4double *ecn_par, G4double *ecp_par, G4double *ecd_par, G4double *ect_par,G4double *eche_par,G4double *eca_par, G4double *ecg_par, G4double *eclamb0_par, G4double *bp_par, G4double *bd_par, G4double *bt_par, G4double *bhe_par, G4double *ba_par,G4double *sp_par,G4double *sd_par,G4double *st_par,G4double *she_par,G4double *sa_par, G4double *ef_par,G4double *ts1_par, G4int, G4int inum, G4int itest, G4int *sortie, G4double *tcn,G4double *jprfn_par, G4double *jprfp_par, G4double *jprfd_par, G4double *jprft_par, G4double *jprfhe_par, G4double *jprfa_par, G4double *jprflamb0_par, G4double *tsum_par, G4int NbLam0);
185 
186 
190 void fission(G4double AF,G4double ZF,G4double EE,G4double JPRF,
191  G4double *VX1_FISSION,G4double *VY1_FISSION,G4double *VZ1_FISSION,
192  G4double *VX2_FISSION,G4double *VY2_FISSION,G4double *VZ2_FISSION,
193  G4int *ZFP1,G4int *AFP1,G4int *SFP1,G4int *ZFP2,G4int *AFP2,G4int *SFP2,G4int *imode,
194  G4double *VX_EVA_SC, G4double *VY_EVA_SC, G4double *VZ_EVA_SC,
195  G4double EV_TEMP[200][6],G4int *IEV_TAB_FIS,G4int *NbLam0);
196 
197 
201 void lorentz_boost(G4double VXRIN,G4double VYRIN,G4double VZRIN,G4double VXIN,G4double VYIN,G4double VZIN,G4double *VXOUT,G4double *VYOUT,G4double *VZOUT);
202 
206 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][6],G4int *ILOOP);
207 
211 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);
212 
216 void tke_bu(G4double Z,G4double A,G4double ZALL,G4double AAL,G4double *VX,G4double *VY,G4double *VZ);
217 
222 void AMOMENT(G4double AABRA,G4double APRF,G4int IMULTIFR,G4double *PX,G4double *PY,G4double *PZ);
223 
227  void barrs(G4int Z1,G4int A1,G4int Z2,G4int A2,G4double *sBARR,G4double *sOMEGA);
228 
232  void evap_postsaddle(G4double A, G4double Z, G4double E_scission_pre, G4double *E_scission_post, G4double *A_scission, G4double *Z_scission,
233 G4double &vx_eva,G4double &vy_eva,G4double &vz_eva,G4int *NbLam0_par);
234 
238  void imf(G4double ACN,G4double ZCN,G4double TEMP,G4double EE,G4double *ZIMF,G4double *AIMF,G4double *BIMF,G4double *SBIMF,G4double *TIMF,G4double JPRF);
239 
243  void fomega_sp(G4double AF,G4double Y,G4double *MFCD,G4double *sOMEGA,G4double *sHOMEGA);
244 
248  void fomega_gs(G4double AF,G4double ZF,G4double *K1,G4double *sOMEGA,G4double *sHOMEGA);
249 
254 
258  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);
259 
263 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);
264 
271  G4double &vx_eva_sc,G4double &vy_eva_sc,
272  G4double &vz_eva_sc,G4int *NbLam0_par);
273 
277  void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out);
278 
284  G4double Uwash(G4double E, G4double Ecrit,G4double Freduction,G4double gamma);
288  G4double haz(G4int k);
289 
293  void densniv(G4double a, G4double z, G4double ee, G4double ef, G4double *dens, G4double bshell, G4double bs, G4double bk,
294  G4double *temp, G4int optshp, G4int optcol, G4double defbet, G4double *ecor, G4double jprf, G4int ifis,G4double *qr);
295 
299  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);
300 
302 
310  void lpoly(G4double x, G4int n, G4double pl[]);
311 
318  G4double eflmac(G4int ia, G4int iz, G4int flag, G4int optshp);
319 
324  void appariem(G4double a, G4double z, G4double *del);
325 
330  void parite(G4double n, G4double *par);
331 
336  G4double tau(G4double bet, G4double homega, G4double ef, G4double t);
337 
342  G4double cram(G4double bet, G4double homega);
343 
349  G4double bipol(G4int iflag, G4double y);
350 
360  void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax);
361 
365  G4double width(G4double AMOTHER,G4double ZMOTHER,G4double APART,G4double ZPART,G4double TEMP,G4double B1,G4double SB1,G4double EXC);
366 
371 
375  void lorb(G4double AMOTHER,G4double ADAUGHTER,G4double LMOTHER,G4double EEFINAL,G4double *LORBITAL,G4double *SIGMA_LORBITAL);
376 
380  void bsbkbc(G4double A,G4double Z,G4double *BS,G4double *BK,G4double *BC);
381 
386 
388 
389  void gcf(G4double *gammcf,G4double a,G4double x,G4double gln);
390 
391  void gser(G4double *gamser,G4double a,G4double x,G4double gln);
392 
394 
396 
400  void standardRandom(G4double *rndm, G4long *seed);
401 
406 
411 
415  G4double f(G4double E);
416 
421 
426 
432 
437 
441  void guet(G4double *x_par, G4double *z_par, G4double *find_par);
442 
446  void isostab_lim(G4int z, G4int *nmin, G4int *nmax);
447 
451  void FillData(G4int IMULTBU,G4int IEV_TAB);
452 
457 
463 
464 public:
465  // Utils
466  G4int min(G4int a, G4int b);
468  G4int max(G4int a, G4int b);
471  G4int ISIGN(G4int a, G4int b);
472  G4int nint(G4double number);
473  G4int secnds(G4int x);
474  G4int mod(G4int a, G4int b);
482  return ec2sub;
483  }
484 
485 private:
490  G4double BU_TAB[200][12],EV_TAB[200][6],EV_TAB_SSC[200][6];
505 #ifndef ABLAXX_IN_GEANT4_MODE
506  G4INCL::Config *theConfig;
507 #endif
508 };
509 
510 #endif