G4Abla.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // $Id$ 
00027 // Translation of INCL4.2/ABLA V3 
00028 // Pekka Kaitaniemi, HIP (translation)
00029 // Christelle Schmidt, IPNL (fission code)
00030 // Alain Boudard, CEA (contact person INCL/ABLA)
00031 // Aatos Heikkinen, HIP (project coordination)
00032 
00033 #include "globals.hh"
00034 
00035 #include "G4AblaDataDefs.hh"
00036 #include "G4InclDataDefs.hh"
00037 
00042 class G4Abla {
00043 
00044 public:
00048   G4Abla();
00049 
00057   G4Abla(G4Hazard *aHazard, G4Volant *aVolant, G4VarNtp *aVarntp);
00058 
00064   G4Abla(G4Hazard *hazard, G4Volant *volant);
00065 
00069   ~G4Abla();
00070 
00074   void setVerboseLevel(G4int level);
00075 
00090   void breakItUp(G4double nucleusA, G4double nucleusZ, G4double nucleusMass, G4double excitationEnergy,
00091                  G4double angularMomentum, G4double recoilEnergy, G4double momX, G4double momY, G4double momZ,
00092                  G4int eventnumber);
00093 
00094   // Evaporation
00095 public:
00100   void initEvapora();
00101 
00114   void qrot(G4double z, G4double a, G4double bet, G4double sig, G4double u, G4double *qr);
00115 
00120   void mglw(G4double a, G4double z, G4double *el);
00121 
00125   void mglms(G4double a, G4double z, G4int refopt4, G4double *el);
00126 
00130   //  G4double spdef(G4int a, G4int z, G4int optxfis);
00131 
00135   //  G4double fissility(int a,int z, int optxfis);
00136 
00140   void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf, 
00141                G4double *zf_par, G4double *af_par, G4double *mtota_par,
00142                G4double *pleva_par, G4double *pxeva_par, G4double *pyeva_par,
00143                G4int *ff_par, G4int *inttype_par, G4int *inum_par);
00144 
00148   void direct(G4double zprf,G4double a, G4double ee, G4double jprf, 
00149               G4double *probp_par, G4double *probn_par, G4double *proba_par, 
00150               G4double *probf_par, G4double *ptotl_par, G4double *sn_par, G4double *sbp_par, G4double *sba_par, G4double *ecn_par, 
00151               G4double *ecp_par,G4double *eca_par, G4double *bp_par, G4double *ba_par, G4int inttype, G4int inum, G4int itest);
00152 
00156   void densniv(G4double a, G4double z, G4double ee, G4double esous, G4double *dens, G4double bshell, G4double bs, G4double bk, 
00157                G4double *temp, G4int optshp, G4int optcol, G4double defbet);
00158 
00165   G4double bfms67(G4double zms, G4double ams);
00166 
00174   void lpoly(G4double x, G4int n, G4double pl[]);
00175 
00182   G4double eflmac(G4int ia, G4int iz, G4int flag, G4int optshp);
00183 
00188   void appariem(G4double a, G4double z, G4double *del);
00189 
00194   void parite(G4double n, G4double *par);
00195 
00200   G4double tau(G4double bet, G4double homega, G4double ef, G4double t);
00201 
00206   G4double cram(G4double bet, G4double homega);
00207 
00213   G4double bipol(int iflag, G4double y);
00214 
00224   void barfit(G4int iz, G4int ia, G4int il, G4double *sbfis, G4double *segs, G4double *selmax);
00225 
00229   G4double expohaz(G4int k, G4double T);
00230 
00234   G4double fd(G4double E);
00235 
00239   G4double f(G4double E);
00240 
00244   G4double fmaxhaz(G4double T);
00245 
00249   G4double pace2(G4double a, G4double z);
00250 
00254   void guet(G4double *x_par, G4double *z_par, G4double *find_par);
00255 
00256   // Fission
00257 public:
00261   G4double spdef(G4int a, G4int z, G4int optxfis);
00262 
00266   G4double fissility(G4int a, G4int z, G4int optxfis);
00267 
00268 //   void evapora(G4double zprf, G4double aprf, G4double ee, G4double jprf,
00269 //             G4double *zf_par, G4double *af_par, G4double *mtota_par,
00270 //             G4double *pleva_par, G4double *pxeva_par);
00271 //  G4double bfms67(G4double zms, G4double ams);
00272   //  void lpoly(G4double x, G4int n, G4double pl[]);
00273   //  G4double expohaz(G4int k, G4double T);
00274   //  G4double fd(G4double E);
00275   //  G4double f(G4double E);
00276   //  G4double fmaxhaz(G4double k, G4double T);
00277   void even_odd(G4double r_origin,G4double r_even_odd,G4int &i_out);
00278   G4double umass(G4double z,G4double n,G4double beta);
00279   G4double ecoul(G4double z1,G4double n1,G4double beta1,G4double z2,G4double n2,G4double beta2,G4double d);
00280   void fissionDistri(G4double &a,G4double &z,G4double &e,
00281                      G4double &a1,G4double &z1,G4double &e1,G4double &v1,
00282                      G4double &a2,G4double &z2,G4double &e2,G4double &v2);
00283   void standardRandom(G4double *rndm, G4long *seed);
00284   G4double haz(G4int k);
00285   G4double gausshaz(int k, double xmoy, double sig);
00286 
00287     
00288 public:
00289   // Coordinate system transformations:
00290   void lorab(G4double gam, G4double eta, G4double ein, G4double pin[],
00291              G4double *eout, G4double pout[]);
00292 
00293   void translab(G4double gamrem, G4double etrem, G4double csrem[4], G4int nopart, G4int ndec);
00294   void translabpf(G4double masse1, G4double t1, G4double p1, G4double ctet1,
00295                   G4double phi1, G4double gamrem, G4double etrem, G4double R[][4],
00296                   G4double *plab1, G4double *gam1, G4double *eta1, G4double csdir[]);
00297 
00298   void rotab(G4double R[4][4], G4double pin[4], G4double pout[4]);
00299 
00300   // Utils
00301   G4int min(G4int a, G4int b);
00302   G4double min(G4double a, G4double b);
00303   G4int max(G4int a, G4int b);
00304   G4double max(G4double a, G4double b);
00305 
00306   G4int nint(G4double number);
00307   G4int secnds(G4int x);
00308   G4int mod(G4int a, G4int b);
00309   G4double dmod(G4double a, G4double b);
00310   G4double dint(G4double a);
00311   G4int idint(G4double a);
00312   G4int idnint(G4double value);
00313   G4double utilabs(G4double a);
00314   G4double dmin1(G4double a, G4double b, G4double c);
00315 
00316 private:
00317   G4int verboseLevel;
00318   G4int ilast;
00319 
00320   G4Pace *pace;
00321   G4Hazard *hazard;
00322   G4Ald *ald;
00323   G4Ablamain *ablamain;
00324   G4Emdpar *emdpar;
00325   G4Eenuc *eenuc;
00326   G4Ec2sub *ec2sub;
00327   G4Ecld *ecld; 
00328   G4Fb *fb;
00329   G4Fiss *fiss;
00330   G4Opt *opt;
00331   G4Volant *volant;
00332   G4VarNtp *varntp;  
00333 };

Generated on Mon May 27 17:47:36 2013 for Geant4 by  doxygen 1.4.7