Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4Abla.hh
Go to the documentation of this file.
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 // $Id$
27 // Translation of INCL4.2/ABLA V3
28 // Pekka Kaitaniemi, HIP (translation)
29 // Christelle Schmidt, IPNL (fission code)
30 // Alain Boudard, CEA (contact person INCL/ABLA)
31 // Aatos Heikkinen, HIP (project coordination)
32 
33 #include "globals.hh"
34 
35 #include "G4AblaDataDefs.hh"
36 #include "G4InclDataDefs.hh"
37 
42 class G4Abla {
43 
44 public:
48  G4Abla();
49 
57  G4Abla(G4Hazard *aHazard, G4Volant *aVolant, G4VarNtp *aVarntp);
58 
64  G4Abla(G4Hazard *hazard, G4Volant *volant);
65 
69  ~G4Abla();
70 
74  void setVerboseLevel(G4int level);
75 
90  void breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy,
91  G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ,
92  G4int eventnumber);
93 
94  // Evaporation
95 public:
100  void initEvapora();
101 
114  void qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr);
115 
120  void mglw(G4double a, G4double z, G4double *el);
121 
125  void mglms(G4double a, G4double z, G4int refopt4, G4double *el);
126 
130  // G4double spdef(G4int a, G4int z, G4int optxfis);
131 
135  // G4double fissility(int a,int z, int optxfis);
136 
140  void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf,
141  G4double *zf_par, G4double *af_par, G4double *mtota_par,
142  G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par,
143  G4int *ff_par, G4int *inttype_par, G4int *inum_par);
144 
148  void direct(G4double zprf,G4double a, G4double ee, G4double jprf,
149  G4double *probp_par, G4double *probn_par, G4double *proba_par,
150  G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sba_par, G4double *ecn_par,
151  G4double *ecp_par,G4double *eca_par, G4double *bp_par, G4double *ba_par, G4int inttype, G4int inum, G4int itest);
152 
156  void densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk,
157  G4double *temp, G4int optshp, G4int optcol, G4double defbet);
158 
165  G4double bfms67(G4double zms, G4double ams);
166 
174  void lpoly(G4double x, G4int n, G4double pl[]);
175 
182  G4double eflmac(G4int ia, G4int iz, G4int flag, G4int optshp);
183 
188  void appariem(G4double a, G4double z, G4double *del);
189 
194  void parite(G4double n, G4double *par);
195 
200  G4double tau(G4double bet, G4double homega, G4double ef, G4double t);
201 
206  G4double cram(G4double bet, G4double homega);
207 
213  G4double bipol(int iflag, G4double y);
214 
224  void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax);
225 
230 
234  G4double fd(G4double E);
235 
239  G4double f(G4double E);
240 
245 
250 
254  void guet(G4double *x_par, G4double *z_par, G4double *find_par);
255 
256  // Fission
257 public:
261  G4double spdef(G4int a, G4int z, G4int optxfis);
262 
266  G4double fissility(G4int a, G4int z, G4int optxfis);
267 
268 // void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf,
269 // G4double *zf_par, G4double *af_par, G4double *mtota_par,
270 // G4double *pleva_par, G4double *pxeva_par);
271 // G4double bfms67(G4double zms, G4double ams);
272  // void lpoly(G4double x, G4int n, G4double pl[]);
273  // G4double expohaz(G4int k, G4double T);
274  // G4double fd(G4double E);
275  // G4double f(G4double E);
276  // G4double fmaxhaz(G4double k, G4double T);
277  void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out);
281  G4double &a1,G4double &z1,G4double &e1,G4double &v1,
282  G4double &a2,G4double &z2,G4double &e2,G4double &v2);
283  void standardRandom(G4double *rndm, G4long *seed);
284  G4double haz(G4int k);
285  G4double gausshaz(int k, double xmoy, double sig);
286 
287 
288 public:
289  // Coordinate system transformations:
290  void lorab(G4double gam, G4double eta, G4double ein, G4double pin[],
291  G4double *eout, G4double pout[]);
292 
293  void translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec);
294  void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1,
295  G4double phi1, G4double gamrem, G4double etrem, G4double R[][4],
296  G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]);
297 
298  void rotab(G4double R[4][4], G4double pin[4], G4double pout[4]);
299 
300  // Utils
301  G4int min(G4int a, G4int b);
303  G4int max(G4int a, G4int b);
305 
306  G4int nint(G4double number);
307  G4int secnds(G4int x);
308  G4int mod(G4int a, G4int b);
311  G4int idint(G4double a);
315 
316 private:
317  G4int verboseLevel;
318  G4int ilast;
319 
320  G4Pace *pace;
321  G4Hazard *hazard;
322  G4Ald *ald;
323  G4Ablamain *ablamain;
324  G4Emdpar *emdpar;
325  G4Eenuc *eenuc;
326  G4Ec2sub *ec2sub;
327  G4Ecld *ecld;
328  G4Fb *fb;
329  G4Fiss *fiss;
330  G4Opt *opt;
331  G4Volant *volant;
332  G4VarNtp *varntp;
333 };