Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * 21 // * Parts of this code which have been devel 22 // * et al under contract (31-465) to the King 23 // * Science and Technology (KACST), the Natio 24 // * Mathematics and Physics (NCMP), Saudi Ara 25 // * 26 // * By using, copying, modifying or distri 27 // * any work based on the software) you ag 28 // * use in resulting scientific publicati 29 // * acceptance of all terms of the Geant4 Sof 30 // ******************************************* 31 // 32 /// \file hadronic/Hadr02/include/G4UrQMD1_3In 33 /// \brief Definition of the G4UrQMD1_3Interfa 34 // 35 // 36 37 #ifndef G4UrQMD1_3Interface_hh 38 #define G4UrQMD1_3Interface_hh 39 40 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 41 // 42 // MODULE: G4UrQMD1_3Model.hh 43 // 44 // Version: 0.B 45 // Date: 20/12/12 46 // Author: Kh. Abdel-Waged and Nuha 47 // Revised by: V.V. Uzhinskii 48 // SPONSERED BY 49 // Customer: KAUST/NCMP 50 // Contract: 31-465 51 // 52 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 53 // 54 // 55 // Class Description 56 // 57 // 58 // Class Description - End 59 // 60 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 61 ////////////////////////////////////////////// 62 63 #include "G4SystemOfUnits.hh" 64 #include "globals.hh" 65 66 // coms 67 // 68 const G4int nmax = 500; 69 const G4int nspl = 500; 70 const G4int smax = 500; 71 // comres 72 const G4int minnuc = 1; 73 const G4int minmes = 100; 74 const G4int maxmes = 132; 75 const G4int numnuc = 16; 76 const G4int numdel = 10; 77 const G4int maxnuc = minnuc + numnuc - 1; 78 const G4int mindel = minnuc + maxnuc; 79 const G4int maxdel = mindel + numdel - 1; 80 const G4int minres = minnuc + 1; 81 const G4int maxres = maxdel; 82 const G4int numlam = 13; 83 const G4int numsig = 9; 84 const G4int numcas = 6; 85 const G4int numome = 1; 86 const G4int minlam = mindel + numdel; 87 const G4int maxlam = minlam + numlam - 1; 88 const G4int minsig = minlam + numlam; 89 const G4int maxsig = minsig + numsig - 1; 90 const G4int mincas = minsig + numsig; 91 const G4int maxcas = mincas + numcas - 1; 92 const G4int minome = mincas + numcas; 93 const G4int maxome = minome + numome - 1; 94 const G4int minbar = minnuc; 95 const G4int maxbar = maxome; 96 const G4int offmeson = minmes; 97 const G4int maxmeson = maxmes; 98 const G4int maxbra = 11; 99 const G4int maxbrm = 25; 100 const G4int maxbrs1 = 10; 101 const G4int maxbrs2 = 3; 102 const G4int nsigs = 10; 103 const G4int itblsz = 100; 104 const G4int maxreac = 13; 105 const G4int maxpsig = 12; 106 // 107 // comwid 108 // 109 const G4int widnsp = 120; 110 const G4double mintab = 0.10; 111 const G4double maxtab1 = 5.0; 112 const G4double maxtab2 = 50.0; 113 const G4int tabver = 9; 114 // 115 // options 116 // 117 const G4int numcto = 400; 118 const G4int numctp = 400; 119 const G4int maxstables = 20; 120 // 121 // colltab (collision tables) 122 // 123 const G4int ncollmax = 100; 124 // 125 // inputs 126 // 127 const G4int aamax = 300; 128 // 129 // newpart (new created particles) 130 // 131 const G4int mprt = 200; 132 const G4int oprt = 2; 133 // 134 // boxinc 135 // 136 const G4int bptmax = 20; 137 // 138 139 // This next line is required as the default v 140 // four bytes long, whereas storage for G4bool 141 // 142 // comnorm 143 const G4int n = 400; 144 // 145 // comstr 146 const G4int njspin = 8; 147 // 148 // iso 149 const G4int jmax = 7; 150 151 // This next line is required as the default v 152 // four bytes long, whereas storage for G4bool 153 // 154 155 typedef G4int ftnlogical; 156 157 //....oooOO0OOooo........oooOO0OOooo........oo 158 // 159 // Standard common block for UrQMD 160 // Common options for coms.f 161 // 20 commons 162 // 163 // 164 struct ccurqmd13urqmdparams 165 { 166 G4int u_at, u_zt, u_ap, u_zp; 167 G4double u_elab, u_imp; 168 G4int u_sptar, u_spproj; 169 }; 170 171 //....oooOO0OOooo........oooOO0OOooo........oo 172 173 struct ccurqmd13sys 174 { 175 G4int npart, nbar, nmes, ctag, nsteps, uid 176 nhardres, nsoftres, ndecres, nelcoll, nb 177 }; 178 179 //....oooOO0OOooo........oooOO0OOooo........oo 180 181 struct ccurqmd13rsys 182 { 183 G4double time, acttime, bdist, bimp, bmin, 184 }; 185 186 struct ccurqmd13comseed 187 { 188 ftnlogical firstseed; 189 }; 190 191 //....oooOO0OOooo........oooOO0OOooo........oo 192 193 struct ccurqmd13logic 194 { 195 ftnlogical lsct[nmax], logSky, logYuk, log 196 }; 197 198 //....oooOO0OOooo........oooOO0OOooo........oo 199 200 struct ccurqmd13mdprop 201 { 202 G4double r0_t[nmax], rx_t[nmax], ry_t[nmax 203 }; 204 205 //....oooOO0OOooo........oooOO0OOooo........oo 206 207 struct ccurqmd13cuts 208 { 209 G4double cutmax, cutPau, cutCb, cutYuk, cu 210 }; 211 212 //....oooOO0OOooo........oooOO0OOooo........oo 213 214 struct ccurqmd13spdata 215 { 216 G4double spx[nspl], spPauy[nspl], outPau[n 217 outYuk[nspl], spSkyy[nspl], outSky[nspl] 218 }; 219 220 //....oooOO0OOooo........oooOO0OOooo........oo 221 222 struct ccurqmd13isys 223 { 224 G4int spin[nmax], ncoll[nmax], charge[nmax 225 origin[nmax], strid[nmax], uid[nmax]; 226 }; 227 228 //....oooOO0OOooo........oooOO0OOooo........oo 229 230 struct ccurqmd13coor 231 { 232 G4double r0[nmax], rx[nmax], ry[nmax], rz[ 233 fmass[nmax], rww[nmax], dectime[nmax]; 234 }; 235 236 //....oooOO0OOooo........oooOO0OOooo........oo 237 238 struct ccurqmd13frag 239 { 240 G4double tform[nmax], xtotfac[nmax]; 241 }; 242 243 //....oooOO0OOooo........oooOO0OOooo........oo 244 245 struct ccurqmd13aios 246 { 247 G4double airx[nmax], airy[nmax], airz[nmax 248 aory[4][nmax], aorz[4][nmax], aopx[4][nm 249 }; 250 251 //....oooOO0OOooo........oooOO0OOooo........oo 252 253 struct ccurqmd13pots 254 { 255 G4double Cb0, Yuk0, Pau0, Sky20, Sky30, ga 256 da, db, dtimestep; 257 }; 258 259 //....oooOO0OOooo........oooOO0OOooo........oo 260 261 struct ccurqmd13scoor 262 { 263 G4double r0s[smax], rxs[smax], rys[smax], 264 sfmass[smax]; 265 }; 266 267 //....oooOO0OOooo........oooOO0OOooo........oo 268 269 struct ccurqmd13sisys 270 { 271 G4int sspin[smax], scharge[smax], sityp[sm 272 }; 273 274 //....oooOO0OOooo........oooOO0OOooo........oo 275 276 struct ccurqmd13ssys 277 { 278 G4int nspec; 279 }; 280 281 //....oooOO0OOooo........oooOO0OOooo........oo 282 283 struct ccurqmd13rtdelay 284 { 285 G4double p0td[nmax][2], pxtd[nmax][2], pyt 286 }; 287 288 //....oooOO0OOooo........oooOO0OOooo........oo 289 290 struct ccurqmd13itdelay 291 { 292 G4int ityptd[nmax][2], iso3td[nmax][2]; 293 }; 294 295 //....oooOO0OOooo........oooOO0OOooo........oo 296 297 struct ccurqmd13svinfo 298 { 299 G4int itypt[2], uidt[2], origint[2], iso3t 300 }; 301 302 //....oooOO0OOooo........oooOO0OOooo........oo 303 304 struct ccurqmd13ffermi 305 { 306 G4double ffermpx[nmax], ffermpy[nmax], ffe 307 }; 308 309 //....oooOO0OOooo........oooOO0OOooo........oo 310 311 struct ccurqmd13peq 312 { 313 G4double peq1, peq2; 314 }; 315 316 //....oooOO0OOooo........oooOO0OOooo........oo 317 // 318 // Definition for Collision Term 319 // Commons comres 320 // 4 commons 321 // 322 323 struct ccurqmd13versioning 324 { 325 char versiontag[45]; 326 }; 327 328 //....oooOO0OOooo........oooOO0OOooo........oo 329 330 struct ccurqmd13resonances 331 { 332 G4double massres[maxbar - minbar + 1], wid 333 G4double massmes[maxmes - minmes + 1]; 334 G4double widmes[maxmes - minmes + 1]; 335 G4double mmesmn[maxmes - minmes + 1]; 336 G4double branres[maxdel - minnuc][maxbra + 337 G4double branmes[maxmes - minmes][maxbrm + 338 339 G4double branbs1[maxsig - minlam][maxbrs1 340 G4double branbs2[maxcas - mincas][maxbrs2 341 342 G4int bs1type[maxbrs1 + 1][4], bs2type[max 343 G4int lbs1[maxsig - minlam][maxbrs1 + 1]; 344 G4int lbs2[maxcas - mincas][maxbrs2 + 1]; 345 G4int lbm[maxmes - minmes][maxbrm + 1]; 346 347 G4int jres[maxbar - minbar + 1]; 348 G4int jmes[maxmes - minmes + 1]; 349 G4int lbr[maxdel - minnuc][maxbra + 1]; 350 G4int brtype[maxbra + 1][4]; 351 G4int pares[maxbar - minbar + 1], pames[ma 352 G4int bmtype[maxbrm + 1][4]; 353 G4int isores[maxbar - minbar + 1], isomes[ 354 G4int strres[maxbar - minbar + 1], strmes[ 355 G4int mlt2it[maxmes - minmes]; 356 }; 357 358 //....oooOO0OOooo........oooOO0OOooo........oo 359 360 struct ccurqmd13sigtabi 361 { 362 G4int sigmaln[maxreac][2][maxpsig]; 363 G4int sigmainf[20][nsigs]; 364 }; 365 366 //....oooOO0OOooo........oooOO0OOooo........oo 367 368 struct ccurqmd13sigtabr 369 { 370 G4double sigmas[itblsz][nsigs], sigmascal[ 371 }; 372 373 //....oooOO0OOooo........oooOO0OOooo........oo 374 375 // comwid 376 struct ccurqmd13decaywidth 377 { 378 G4double tabx[widnsp]; 379 G4double fbtaby[2][maxbar - minbar + 1][wi 380 G4double pbtaby[maxbra + 1][maxbar - minba 381 G4double fmtaby[2][maxmes - minmes + 1][wi 382 G4double pmtaby[maxbrm + 1][maxmes - minme 383 G4int wtabflg; 384 }; 385 386 //....oooOO0OOooo........oooOO0OOooo........oo 387 388 struct ccurqmd13brwignorm 389 { 390 G4double bwbarnorm[maxbar - minbar + 1]; 391 G4double bwmesnorm[maxmes - minmes + 1]; 392 }; 393 394 //....oooOO0OOooo........oooOO0OOooo........oo 395 396 struct ccurqmd13xsections 397 { 398 G4double tabxnd[widnsp]; 399 G4double frrtaby[maxdel - 1][2][2][widnsp] 400 }; 401 402 //....oooOO0OOooo........oooOO0OOooo........oo 403 404 struct ccurqmd13tabnames 405 { 406 char tabname[77]; 407 }; 408 409 //....oooOO0OOooo........oooOO0OOooo........oo 410 // 411 // options 412 // 413 struct ccurqmd13options 414 { 415 G4int CTOption[numcto]; 416 G4double CTParam[numctp]; 417 }; 418 419 //....oooOO0OOooo........oooOO0OOooo........oo 420 421 struct ccurqmd13optstrings 422 { 423 char ctodc[numcto][2]; 424 char ctpdc[numctp][2]; 425 }; 426 427 //....oooOO0OOooo........oooOO0OOooo........oo 428 429 struct ccurqmd13loptions 430 { 431 ftnlogical fixedseed, bf13, bf14, bf15, bf 432 }; 433 434 //....oooOO0OOooo........oooOO0OOooo........oo 435 436 struct ccurqmd13stables 437 { 438 G4int nstable; 439 G4int stabvec[maxstables]; 440 }; 441 442 //....oooOO0OOooo........oooOO0OOooo........oo 443 // 444 // colltab 445 // 446 struct ccurqmd13colltab 447 { 448 G4double cttime[ncollmax + 1], ctsqrts[nco 449 G4int cti1[ncollmax], cti2[ncollmax]; 450 G4int nct, actcol; 451 ftnlogical ctvalid[ncollmax]; 452 G4int ctsav[ncollmax]; 453 G4int nsav, apt; 454 G4double ctcolfluc[ncollmax]; 455 }; 456 457 //....oooOO0OOooo........oooOO0OOooo........oo 458 // 459 // inputs 460 // 461 struct ccurqmd13inputs 462 { 463 G4int nevents, spityp[2], prspflg; 464 G4int trspflg, spiso3[2], outsteps, bflag, 465 G4int nsrt, firstev, npb; 466 }; 467 468 //....oooOO0OOooo........oooOO0OOooo........oo 469 470 struct ccurqmd13input2 471 { 472 G4double srtmin, srtmax, pbeam, betann, be 473 G4double pbmin, pbmax; 474 }; 475 476 //....oooOO0OOooo........oooOO0OOooo........oo 477 478 struct ccurqmd13protarints 479 { 480 G4int pt_iso3[2][aamax], pt_ityp[2][aamax] 481 G4int pt_charge[2][aamax], pt_aa[2], pt_ui 482 }; 483 484 //....oooOO0OOooo........oooOO0OOooo........oo 485 486 struct ccurqmd13protarreals 487 { 488 G4double pt_r0[2][aamax], pt_rx[2][aamax], 489 pt_dectime[2][aamax]; 490 G4double pt_p0[2][aamax], pt_px[2][aamax], 491 G4double pt_rho[2][aamax]; 492 G4double pt_pmax[2][aamax]; 493 }; 494 495 //....oooOO0OOooo........oooOO0OOooo........oo 496 497 // newpart 498 struct ccurqmd13inewpart 499 { 500 G4int itypnew[mprt], i3new[mprt], itot[mpr 501 G4int iline, strcount, pslot[oprt], nstrin 502 iso3old[oprt]; 503 }; 504 505 //....oooOO0OOooo........oooOO0OOooo........oo 506 507 struct ccurqmd13rnewpart 508 { 509 G4double pnew[mprt][5], xnew[mprt][4], bet 510 pznn, pnn, mstring[2], pnnout, xtotfacol 511 }; 512 513 //....oooOO0OOooo........oooOO0OOooo........oo 514 515 struct ccurqmd13fnewpart 516 { 517 G4double leadfac[mprt]; 518 }; 519 520 //....oooOO0OOooo........oooOO0OOooo........oo 521 // 522 // boxinc 523 // 524 struct ccurqmd13boxic 525 { 526 G4int cbox; 527 G4int boxflag; 528 G4int mbox; 529 G4int bptityp[bptmax], bptiso3[bptmax], bp 530 G4int edensflag, para, solid, mbflag, mtes 531 }; 532 533 //....oooOO0OOooo........oooOO0OOooo........oo 534 535 struct ccurqmd13boxrc 536 { 537 G4double bptpmax[bptmax]; 538 G4double edens; 539 G4double lbox; 540 G4double lboxhalbe; 541 G4double lboxd; 542 G4double mbp0, mbpx, mbpy, mbpz; 543 }; 544 545 //....oooOO0OOooo........oooOO0OOooo........oo 546 // comnorm 547 struct ccurqmd13normsplin 548 { 549 G4double x_norm[n][4], y_norm[n][4]; 550 G4double y2a[n][4], y2b[n][4], dx; 551 }; 552 553 //....oooOO0OOooo........oooOO0OOooo........oo 554 // comstr 555 struct ccurqmd13FRGSPA 556 { 557 G4double pjspns, pmix1s[njspin][3], pmix2s 558 }; 559 560 //....oooOO0OOooo........oooOO0OOooo........oo 561 562 struct ccurqmd13FRGCPA 563 { 564 G4double pjspnc, pmix1c[njspin][3], pmix2c 565 }; 566 567 //....oooOO0OOooo........oooOO0OOooo........oo 568 569 struct ccurqmd13coparm 570 { 571 G4double parm[njspin]; 572 }; 573 574 //....oooOO0OOooo........oooOO0OOooo........oo 575 576 struct ccurqmd13const 577 { 578 G4double pi; 579 }; 580 581 //....oooOO0OOooo........oooOO0OOooo........oo 582 //// freezeout 583 // 584 struct ccurqmd13frcoor 585 { 586 G4double frr0[nmax], frrx[nmax], frry[nmax 587 frpz[nmax]; 588 }; 589 590 //....oooOO0OOooo........oooOO0OOooo........oo 591 // input 592 struct ccurqmd13values 593 { 594 G4double valint[1]; 595 }; 596 597 //....oooOO0OOooo........oooOO0OOooo........oo 598 // cascinit 599 struct ccurqmd13ini 600 { 601 ftnlogical bcorr; 602 }; 603 604 //....oooOO0OOooo........oooOO0OOooo........oo 605 // iso 606 struct ccurqmd13factorials 607 { 608 G4double logfak[101]; 609 }; 610 611 //....oooOO0OOooo........oooOO0OOooo........oo 612 struct ccurqmd13cgks 613 { 614 G4double cgktab[jmax + 1][2 * jmax + 1][2 615 }; 616 617 //....oooOO0OOooo........oooOO0OOooo........oo 618 // UrQMD 619 // 620 struct ccurqmd13energies 621 { 622 G4double ekinbar, ekinmes, esky2, esky3, e 623 }; 624 625 //....oooOO0OOooo........oooOO0OOooo........oo 626 // urqmd 627 extern "C" 628 { 629 extern int time_(); 630 extern void loginit_(); 631 extern void sseed_(int*); 632 extern void uinit_(int*); 633 extern void urqmd_(); 634 extern int pdgid_(int*, int*); // ityp 635 636 extern void g4urqmdblockdata_(); 637 638 // urqmdparams 639 extern struct ccurqmd13urqmdparams urqmdpara 640 // coms 641 extern struct ccurqmd13sys sys_; 642 extern struct ccurqmd13rsys rsys_; 643 extern struct ccurqmd13comseed comseed_; 644 extern struct ccurqmd13logic logic_; 645 extern struct ccurqmd13mdprop mdprop_; 646 extern struct ccurqmd13cuts cuts_; 647 extern struct ccurqmd13spdata spdata_; 648 extern struct ccurqmd13isys isys_; 649 extern struct ccurqmd13coor coor_; 650 extern struct ccurqmd13frag frag_; 651 extern struct ccurqmd13aios aios_; 652 extern struct ccurqmd13pots pots_; 653 extern struct ccurqmd13scoor scoor_; 654 extern struct ccurqmd13sisys sisys_; 655 extern struct ccurqmd13ssys ssys_; 656 extern struct ccurqmd13rtdelay rtdelay_; 657 extern struct ccurqmd13itdelay itdelay_; 658 extern struct ccurqmd13svinfo svinfo_; 659 extern struct ccurqmd13ffermi ffermi_; 660 extern struct ccurqmd13peq peq_; 661 // comres 662 extern struct ccurqmd13versioning versioning 663 extern struct ccurqmd13resonances resonances 664 extern struct ccurqmd13sigtabi sigtabi_; 665 extern struct ccurqmd13sigtabr sigtabr_; 666 667 // comwid 668 extern struct ccurqmd13decaywidth decaywidth 669 extern struct ccurqmd13brwignorm brwignorm_; 670 extern struct ccurqmd13xsections xsections_; 671 extern struct ccurqmd13tabnames tabnames_; 672 // options 673 extern struct ccurqmd13options options_; 674 extern struct ccurqmd13optstrings optstrings 675 extern struct ccurqmd13loptions loptions_; 676 extern struct ccurqmd13stables stables_; 677 // colltab 678 extern struct ccurqmd13colltab colltab_; 679 // inputs 680 extern struct ccurqmd13inputs inputs_; 681 extern struct ccurqmd13input2 input2_; 682 extern struct ccurqmd13protarints protarints 683 extern struct ccurqmd13protarreals protarrea 684 // newpart 685 extern struct ccurqmd13inewpart inewpart_; 686 extern struct ccurqmd13rnewpart rnewpart_; 687 extern struct ccurqmd13fnewpart fnewpart_; 688 // bocinc 689 extern struct ccurqmd13boxic boxic_; 690 extern struct ccurqmd13boxrc boxrc_; 691 // comnorm 692 struct ccurqmd13normsplin normsplin_; 693 // comstr 694 struct ccurqmd13FRGSPA FRGSPA_; 695 struct ccurqmd13FRGCPA FRGCPA_; 696 struct ccurqmd13coparm coparm_; 697 struct ccurqmd13const const_; 698 // freezeout 699 struct ccurqmd13frcoor frcoor_; 700 // urqmd 701 extern struct ccurqmd13energies energies_; 702 // input 703 extern struct ccurqmd13values values_; 704 // cascinit 705 extern struct ccurqmd13ini ini_; 706 // iso 707 extern struct ccurqmd13factorials factorials 708 extern struct ccurqmd13cgks cgks_; 709 } 710 711 //....oooOO0OOooo........oooOO0OOooo........oo 712 #endif 713