// // ******************************************************************** // * 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. * // * * // * Parts of this code which have been developed by Abdel-Waged * // * et al under contract (31-465) to the King Abdul-Aziz City for * // * Science and Technology (KACST), the National Centre of * // * Mathematics and Physics (NCMP), Saudi Arabia. * // * * // * 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. * // ******************************************************************** // /// \file G4UrQMD1_3Interface.hh /// \brief Definition of the G4UrQMD1_3Interface class #ifndef G4UrQMD1_3Interface_hh #define G4UrQMD1_3Interface_hh // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // // MODULE: G4UrQMD1_3Model.hh // // Version: 0.B // Date: 20/12/12 // Author: Kh. Abdel-Waged and Nuha Felemban // Revised by: V.V. Uzhinskii // SPONSERED BY // Customer: KAUST/NCMP // Contract: 31-465 // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // // // Class Description // // // Class Description - End // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /////////////////////////////////////////////////////////////////////////////// #include "G4SystemOfUnits.hh" #include "globals.hh" // coms // const G4int nmax = 500; const G4int nspl = 500; const G4int smax = 500; // comres const G4int minnuc = 1; const G4int minmes = 100; const G4int maxmes = 132; const G4int numnuc = 16; const G4int numdel = 10; const G4int maxnuc = minnuc + numnuc - 1; const G4int mindel = minnuc + maxnuc; const G4int maxdel = mindel + numdel - 1; const G4int minres = minnuc + 1; const G4int maxres = maxdel; const G4int numlam = 13; const G4int numsig = 9; const G4int numcas = 6; const G4int numome = 1; const G4int minlam = mindel + numdel; const G4int maxlam = minlam + numlam - 1; const G4int minsig = minlam + numlam; const G4int maxsig = minsig + numsig - 1; const G4int mincas = minsig + numsig; const G4int maxcas = mincas + numcas - 1; const G4int minome = mincas + numcas; const G4int maxome = minome + numome - 1; const G4int minbar = minnuc; const G4int maxbar = maxome; const G4int offmeson = minmes; const G4int maxmeson = maxmes; const G4int maxbra = 11; const G4int maxbrm = 25; const G4int maxbrs1 = 10; const G4int maxbrs2 = 3; const G4int nsigs = 10; const G4int itblsz = 100; const G4int maxreac = 13; const G4int maxpsig = 12; // // comwid // const G4int widnsp = 120; const G4double mintab = 0.10; const G4double maxtab1 = 5.0; const G4double maxtab2 = 50.0; const G4int tabver = 9; // // options // const G4int numcto = 400; const G4int numctp = 400; const G4int maxstables = 20; // // colltab (collision tables) // const G4int ncollmax = 100; // // inputs // const G4int aamax = 300; // // newpart (new created particles) // const G4int mprt = 200; const G4int oprt = 2; // // boxinc // const G4int bptmax = 20; // // This next line is required as the default version of FORTRAN LOGICAL is // four bytes long, whereas storage for G4bool is one byte. // // comnorm const G4int n = 400; // // comstr const G4int njspin = 8; // // iso const G4int jmax = 7; // This next line is required as the default version of FORTRAN LOGICAL is // four bytes long, whereas storage for G4bool is one byte. // typedef G4int ftnlogical; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // Standard common block for UrQMD // Common options for coms.f // 20 commons // // struct ccurqmd13urqmdparams { G4int u_at, u_zt, u_ap, u_zp; G4double u_elab, u_imp; G4int u_sptar, u_spproj; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13sys { G4int npart, nbar, nmes, ctag, nsteps, uid_cnt, ranseed, event, ap, at, zp, zt, eos, dectag, nhardres, nsoftres, ndecres, nelcoll, nblcoll; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13rsys { G4double time, acttime, bdist, bimp, bmin, ebeam, ecm; }; struct ccurqmd13comseed { ftnlogical firstseed; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13logic { ftnlogical lsct[nmax], logSky, logYuk, logCb, logPau; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13mdprop { G4double r0_t[nmax], rx_t[nmax], ry_t[nmax], rz_t[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13cuts { G4double cutmax, cutPau, cutCb, cutYuk, cutSky, cutdww; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13spdata { G4double spx[nspl], spPauy[nspl], outPau[nspl], spCby[nspl], outCb[nspl], spYuky[nspl], outYuk[nspl], spSkyy[nspl], outSky[nspl], spdwwy[nspl], outdww[nspl]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13isys { G4int spin[nmax], ncoll[nmax], charge[nmax], ityp[nmax], lstcoll[nmax], iso3[nmax], origin[nmax], strid[nmax], uid[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13coor { G4double r0[nmax], rx[nmax], ry[nmax], rz[nmax], p0[nmax], px[nmax], py[nmax], pz[nmax], fmass[nmax], rww[nmax], dectime[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13frag { G4double tform[nmax], xtotfac[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13aios { G4double airx[nmax], airy[nmax], airz[nmax], aipx[nmax], aipy[nmax], aipz[nmax], aorx[4][nmax], aory[4][nmax], aorz[4][nmax], aopx[4][nmax], aopy[4][nmax], aopz[4][nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13pots { G4double Cb0, Yuk0, Pau0, Sky20, Sky30, gamSky, gamYuk, drPau, dpPau, gw, sgw, delr, fdel, dt, da, db, dtimestep; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13scoor { G4double r0s[smax], rxs[smax], rys[smax], rzs[smax], p0s[smax], pxs[smax], pys[smax], pzs[smax], sfmass[smax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13sisys { G4int sspin[smax], scharge[smax], sityp[smax], siso3[smax], suid[smax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13ssys { G4int nspec; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13rtdelay { G4double p0td[nmax][2], pxtd[nmax][2], pytd[nmax][2], pztd[nmax][2], fmasstd[nmax][2]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13itdelay { G4int ityptd[nmax][2], iso3td[nmax][2]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13svinfo { G4int itypt[2], uidt[2], origint[2], iso3t[2]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13ffermi { G4double ffermpx[nmax], ffermpy[nmax], ffermpz[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13peq { G4double peq1, peq2; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // Definition for Collision Term // Commons comres // 4 commons // struct ccurqmd13versioning { char versiontag[45]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13resonances { G4double massres[maxbar - minbar + 1], widres[maxbar - minbar + 1]; G4double massmes[maxmes - minmes + 1]; G4double widmes[maxmes - minmes + 1]; G4double mmesmn[maxmes - minmes + 1]; G4double branres[maxdel - minnuc][maxbra + 1]; G4double branmes[maxmes - minmes][maxbrm + 1]; G4double branbs1[maxsig - minlam][maxbrs1 + 1]; G4double branbs2[maxcas - mincas][maxbrs2 + 1]; G4int bs1type[maxbrs1 + 1][4], bs2type[maxbrs2 + 1][4]; G4int lbs1[maxsig - minlam][maxbrs1 + 1]; G4int lbs2[maxcas - mincas][maxbrs2 + 1]; G4int lbm[maxmes - minmes][maxbrm + 1]; G4int jres[maxbar - minbar + 1]; G4int jmes[maxmes - minmes + 1]; G4int lbr[maxdel - minnuc][maxbra + 1]; G4int brtype[maxbra + 1][4]; G4int pares[maxbar - minbar + 1], pames[maxmes - minmes + 1]; G4int bmtype[maxbrm + 1][4]; G4int isores[maxbar - minbar + 1], isomes[maxmes - minmes + 1]; G4int strres[maxbar - minbar + 1], strmes[maxmes - minmes + 1]; G4int mlt2it[maxmes - minmes]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13sigtabi { G4int sigmaln[maxreac][2][maxpsig]; G4int sigmainf[20][nsigs]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13sigtabr { G4double sigmas[itblsz][nsigs], sigmascal[5][nsigs]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // comwid struct ccurqmd13decaywidth { G4double tabx[widnsp]; G4double fbtaby[2][maxbar - minbar + 1][widnsp]; G4double pbtaby[maxbra + 1][maxbar - minbar + 1][2][widnsp]; G4double fmtaby[2][maxmes - minmes + 1][widnsp]; G4double pmtaby[maxbrm + 1][maxmes - minmes + 1][2][widnsp]; G4int wtabflg; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13brwignorm { G4double bwbarnorm[maxbar - minbar + 1]; G4double bwmesnorm[maxmes - minmes + 1]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13xsections { G4double tabxnd[widnsp]; G4double frrtaby[maxdel - 1][2][2][widnsp]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13tabnames { char tabname[77]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // options // struct ccurqmd13options { G4int CTOption[numcto]; G4double CTParam[numctp]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13optstrings { char ctodc[numcto][2]; char ctpdc[numctp][2]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13loptions { ftnlogical fixedseed, bf13, bf14, bf15, bf16, bf17, bf18, bf19, bf20; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13stables { G4int nstable; G4int stabvec[maxstables]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // colltab // struct ccurqmd13colltab { G4double cttime[ncollmax + 1], ctsqrts[ncollmax], ctsigtot[ncollmax], tmin; G4int cti1[ncollmax], cti2[ncollmax]; G4int nct, actcol; ftnlogical ctvalid[ncollmax]; G4int ctsav[ncollmax]; G4int nsav, apt; G4double ctcolfluc[ncollmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // inputs // struct ccurqmd13inputs { G4int nevents, spityp[2], prspflg; G4int trspflg, spiso3[2], outsteps, bflag, srtflag, efuncflag; G4int nsrt, firstev, npb; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13input2 { G4double srtmin, srtmax, pbeam, betann, betatar, betapro; G4double pbmin, pbmax; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13protarints { G4int pt_iso3[2][aamax], pt_ityp[2][aamax], pt_spin[2][aamax]; G4int pt_charge[2][aamax], pt_aa[2], pt_uid[2][aamax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13protarreals { G4double pt_r0[2][aamax], pt_rx[2][aamax], pt_ry[2][aamax], pt_rz[2][aamax], pt_fmass[2][aamax], pt_dectime[2][aamax]; G4double pt_p0[2][aamax], pt_px[2][aamax], pt_py[2][aamax], pt_pz[2][aamax]; G4double pt_rho[2][aamax]; G4double pt_pmax[2][aamax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // newpart struct ccurqmd13inewpart { G4int itypnew[mprt], i3new[mprt], itot[mprt], inew[mprt], nexit; G4int iline, strcount, pslot[oprt], nstring1, nstring2, sidnew[mprt], itypold[oprt], iso3old[oprt]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13rnewpart { G4double pnew[mprt][5], xnew[mprt][4], betax, betay, betaz, pold[oprt][5], p0nn, pxnn, pynn, pznn, pnn, mstring[2], pnnout, xtotfacold[oprt]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13fnewpart { G4double leadfac[mprt]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // boxinc // struct ccurqmd13boxic { G4int cbox; G4int boxflag; G4int mbox; G4int bptityp[bptmax], bptiso3[bptmax], bptpart[bptmax]; G4int edensflag, para, solid, mbflag, mtest; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13boxrc { G4double bptpmax[bptmax]; G4double edens; G4double lbox; G4double lboxhalbe; G4double lboxd; G4double mbp0, mbpx, mbpy, mbpz; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // comnorm struct ccurqmd13normsplin { G4double x_norm[n][4], y_norm[n][4]; G4double y2a[n][4], y2b[n][4], dx; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // comstr struct ccurqmd13FRGSPA { G4double pjspns, pmix1s[njspin][3], pmix2s[njspin][3], pbars, parqls, parrs; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13FRGCPA { G4double pjspnc, pmix1c[njspin][3], pmix2c[njspin][3], pbarc; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13coparm { G4double parm[njspin]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13const { G4double pi; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //// freezeout // struct ccurqmd13frcoor { G4double frr0[nmax], frrx[nmax], frry[nmax], frrz[nmax], frp0[nmax], frpx[nmax], frpy[nmax], frpz[nmax]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // input struct ccurqmd13values { G4double valint[1]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // cascinit struct ccurqmd13ini { ftnlogical bcorr; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // iso struct ccurqmd13factorials { G4double logfak[101]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... struct ccurqmd13cgks { G4double cgktab[jmax + 1][2 * jmax + 1][2 * jmax + 1][jmax + 1][jmax + 1]; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // UrQMD // struct ccurqmd13energies { G4double ekinbar, ekinmes, esky2, esky3, eyuk, ecb, epau; }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // urqmd extern "C" { extern int time_(); extern void loginit_(); extern void sseed_(int*); extern void uinit_(int*); extern void urqmd_(); extern int pdgid_(int*, int*); // ityp extern void g4urqmdblockdata_(); // urqmdparams extern struct ccurqmd13urqmdparams urqmdparams_; // coms extern struct ccurqmd13sys sys_; extern struct ccurqmd13rsys rsys_; extern struct ccurqmd13comseed comseed_; extern struct ccurqmd13logic logic_; extern struct ccurqmd13mdprop mdprop_; extern struct ccurqmd13cuts cuts_; extern struct ccurqmd13spdata spdata_; extern struct ccurqmd13isys isys_; extern struct ccurqmd13coor coor_; extern struct ccurqmd13frag frag_; extern struct ccurqmd13aios aios_; extern struct ccurqmd13pots pots_; extern struct ccurqmd13scoor scoor_; extern struct ccurqmd13sisys sisys_; extern struct ccurqmd13ssys ssys_; extern struct ccurqmd13rtdelay rtdelay_; extern struct ccurqmd13itdelay itdelay_; extern struct ccurqmd13svinfo svinfo_; extern struct ccurqmd13ffermi ffermi_; extern struct ccurqmd13peq peq_; // comres extern struct ccurqmd13versioning versioning_; extern struct ccurqmd13resonances resonances_; extern struct ccurqmd13sigtabi sigtabi_; extern struct ccurqmd13sigtabr sigtabr_; // comwid extern struct ccurqmd13decaywidth decaywidth_; extern struct ccurqmd13brwignorm brwignorm_; extern struct ccurqmd13xsections xsections_; extern struct ccurqmd13tabnames tabnames_; // options extern struct ccurqmd13options options_; extern struct ccurqmd13optstrings optstrings_; extern struct ccurqmd13loptions loptions_; extern struct ccurqmd13stables stables_; // colltab extern struct ccurqmd13colltab colltab_; // inputs extern struct ccurqmd13inputs inputs_; extern struct ccurqmd13input2 input2_; extern struct ccurqmd13protarints protarints_; extern struct ccurqmd13protarreals protarreals_; // newpart extern struct ccurqmd13inewpart inewpart_; extern struct ccurqmd13rnewpart rnewpart_; extern struct ccurqmd13fnewpart fnewpart_; // bocinc extern struct ccurqmd13boxic boxic_; extern struct ccurqmd13boxrc boxrc_; // comnorm struct ccurqmd13normsplin normsplin_; // comstr struct ccurqmd13FRGSPA FRGSPA_; struct ccurqmd13FRGCPA FRGCPA_; struct ccurqmd13coparm coparm_; struct ccurqmd13const const_; // freezeout struct ccurqmd13frcoor frcoor_; // urqmd extern struct ccurqmd13energies energies_; // input extern struct ccurqmd13values values_; // cascinit extern struct ccurqmd13ini ini_; // iso extern struct ccurqmd13factorials factorials_; extern struct ccurqmd13cgks cgks_; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif