952{
953
954
956
957
958
959
960
961
962
963
964 static const G4int gPDG = 22;
966 static const G4int nPDG = 2112;
969 static const G4int pPDG = 2212;
972 static const G4int lPDG = 3122;
977 static const G4int dPDG = 90001001;
978 static const G4int aPDG = 90002002;
998 static const G4double mN2 = mNeut*mNeut;
999 static const G4double mP2 = mProt*mProt;
1000 static const G4double mL2 = mLamb*mLamb;
1001 static const G4double mA2 = mAlph*mAlph;
1002 static const G4double mNP = mNeut+mProt;
1003
1004
1005
1006
1007
1012
1013
1014#ifdef debug
1015 G4cout<<
"G4QNucleus::EvaporBaryon: *Called*, a="<<a<<GetThis()<<
",alph="<<evalph<<
G4endl;
1016#endif
1018
1019
1026
1027
1028
1029
1032
1033
1036 if(DAPBarr>SAPBarr)SAPBarr=DAPBarr;
1037
1038
1043#ifdef debug
1044 G4cout<<
"G4QN::EB:pB="<<PBarr<<
",aB="<<ABarr<<
",ppB="<<PPBarr<<
",paB="<<PABarr<<
G4endl;
1045#endif
1046 if(a==-2)
1047 {
1048 if(Z==1 || N==1)
1049 {
1050 G4int nucPDG = -2112;
1055 if(N>0)
1056 {
1057 nucPDG = -2212;
1058 piPDG = -211;
1059 nucM = mProt;
1060 del = aDppQPDG;
1062 }
1063 if(totMass > mPi+nucM+nucM)
1064 {
1069 {
1070 G4cerr<<
"***G4QNucl::EvapBary: (anti) tM="<<totMass<<
"-> 2N="<<nucPDG<<
"(M="
1071 <<nucM<<
") + pi="<<piPDG<<
"(M="<<mPi<<
")"<<
G4endl;
1072
1073 return false;
1074 }
1075 n14M+=pi4M;
1080 return true;
1081 }
1082 else
1083 {
1084 G4cerr<<
"***G4QNucleus::EvaporateBaryon: M="<<totMass
1085 <<
", M="<<totMass<<
" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<
G4endl;
1086
1087 return false;
1088 }
1089 }
1090 else if(Z==2 || N==2)
1091 {
1092 G4int nucPDG = -2112;
1096 if(N==2)
1097 {
1098 nucPDG = -2212;
1099 piPDG = -211;
1100 nucM = mProt;
1101 del = aDppQPDG;
1102 }
1103 if(totMass > mPi+mPi+nucM+nucM)
1104 {
1109 {
1110 G4cerr<<
"***G4QNucl::EvapBary: (anti) tM="<<totMass<<
"-> 2N="<<nucPDG<<
"(M="
1111 <<nucM<<
") + 2pi="<<piPDG<<
"(M="<<mPi<<
")"<<
G4endl;
1112
1113 return false;
1114 }
1116 n14M+=hpi4M;
1117 n24M+=hpi4M;
1122 return true;
1123 }
1124 else
1125 {
1126 G4cerr<<
"***G4QNucleus::EvaporateBaryon: M="<<totMass
1127 <<
", M="<<totMass<<
" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<
G4endl;
1128
1129 return false;
1130 }
1131 }
1132 else if(Z==-2)
1133 {
1135 h2mom=h1mom;
1138 if(!
DecayIn2(h1mom,h2mom))
return false;
1139 }
1140 else if(N==-2)
1141 {
1143 h2mom=h1mom;
1146 if(!
DecayIn2(h1mom,h2mom))
return false;
1147 }
1148 else if(N==-1 && Z==-1)
1149 {
1154 if(!
DecayIn2(h1mom,h2mom))
return false;
1155 }
1156 else if(Z==-1 && S==-1)
1157 {
1162 if(!
DecayIn2(h1mom,h2mom))
return false;
1163 }
1164 else
1165 {
1170 if(!
DecayIn2(h1mom,h2mom))
return false;
1171 }
1174 return true;
1175 }
1176 else if(a==2)
1177 {
1178 if(Z<0||N<0)
1179 {
1180 G4int nucPDG = 2112;
1185 if(N<0)
1186 {
1187 nucPDG = 2212;
1188 nucM = mProt;
1189 piPDG = 211;
1190 db = PPQPDG;
1191 pi_value = PIPQPDG;
1192 }
1193 if(totMass>mPi+nucM+nucM)
1194 {
1199 {
1200 G4cerr<<
"***G4QNucl::EvapBary: tM="<<totMass<<
"-> 2N="<<nucPDG<<
"(M="
1201 <<nucM<<
") + pi="<<piPDG<<
"(M="<<mPi<<
")"<<
G4endl;
1202
1203 return false;
1204 }
1205 n14M+=n24M;
1210 return true;
1211 }
1212 else
1213 {
1214 G4cerr<<
"***G4QNucleus::EvaporateBaryon: M="<<totMass
1215 <<
", M="<<totMass<<
" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<
G4endl;
1216
1217 return false;
1218 }
1219 }
1220 else if(Z==2)
1221 {
1223 h2mom=h1mom;
1226 if(!
DecayIn2(h1mom,h2mom))
return false;
1227 }
1228 else if(N==2)
1229 {
1231 h2mom=h1mom;
1234 if(!
DecayIn2(h1mom,h2mom))
return false;
1235 }
1236 else if(N==1&&Z==1)
1237 {
1238 if(totMass<=mNP)
1239 {
1240#ifdef debug
1241 G4cout<<
"G4QNucl::EvaporateBaryon: Photon ### d+g ###, dM="<<totMass-mNP<<
G4endl;
1242#endif
1247 }
1248 else
1249 {
1254 }
1255 if(!
DecayIn2(h1mom,h2mom))
return false;
1256 }
1257 else if(Z==1&&S==1)
1258 {
1263 if(!
DecayIn2(h1mom,h2mom))
return false;
1264 }
1265 else
1266 {
1271 if(!
DecayIn2(h1mom,h2mom))
return false;
1272 }
1275 return true;
1276 }
1277 else if(a>2)
1278 {
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1368#ifdef debug
1369 G4cout<<
"G4QNuc::EvaB:a>2, totM="<<totMass<<
" > GSMass="<<GSMass<<
",d="<<totMass-GSMass
1371#endif
1382 if(Z>0)
1383 {
1384 PQPDG=
G4QPDGCode(90000000+1000*(1000*S+Z-1)+N);
1385 GSResNp=PQPDG.GetMass();
1388 pp2m=(tM2-mpls*mpls)*(tM2-mmin*mmin)/qtM2;
1389 if(pp2m>=0.000001)
1390 {
1391 pFlag=true;
1392 pBnd=mProt-GSMass+GSResNp;
1394#ifdef debug
1395 G4cout<<
"G4QNuc::EvapBaryon:pm="<<eMax+sqrt(pp2m+GSResNp*GSResNp)<<
" = M="<<totMass
1396 <<
", sm="<<GSResNp+mProt+PBarr<<
",pp2="<<pp2m<<
",pB="<<pBnd<<
G4endl;
1397#endif
1398 pExcess=eMax-mProt+pBnd;
1399 }
1400 else pExcess=pBnd;
1401 if(Z>1)
1402 {
1403 ppQPDG=
G4QPDGCode(90000000+1000*(1000*S+Z-2)+N);
1404 GSResPP=ppQPDG.GetMass();
1405#ifdef debug
1407 G4cout<<
"G4QNucl::EvapBaryon: ppM="<<GSResPP<<
",T="<<
sm-GSMass<<
",E="<<totMass-
sm
1409#endif
1410 if(GSResPP+mProt+mProt+SPPBarr<totMass) ppFlag=true;
1411 if(Z>2&&a>3)
1412 {
1413
1414
1415
1416
1417
1418 if(N>1&&a>5)
1419 {
1420 paQPDG =
G4QPDGCode(90000000+1000*(1000*S+Z-3)+N-2);
1421 GSResPA=paQPDG.GetMass();
1422#ifdef debug
1423 G4double s_value=GSResPA+mAlph+mProt+SAPBarr;
1424 G4cout<<
"G4QN::EB:paM="<<GSResPA<<
",T="<<s_value-GSMass<<
",E="<<totMass-s_value<<
G4endl;
1425#endif
1426 if(GSResPA+mProt+SAPBarr+mAlph<totMass) paFlag=true;
1427 }
1428 }
1429 if(N>0&&a>3)
1430 {
1431
1432
1433
1434
1435
1436 }
1437 if(S>0&&a>3)
1438 {
1439
1440
1441
1442
1443
1444 }
1445 if(N>1&&a>4)
1446 {
1447 if(a>6)
1448 {
1449 if(S>1)
1450 {
1451
1452
1453
1454
1455
1456 }
1457 if(N>2&&S>0)
1458 {
1459
1460
1461
1462
1463
1464 }
1465 if(Z>2&&S>0)
1466 {
1467
1468
1469
1470
1471
1472 }
1473 if(N>3)
1474 {
1475
1476
1477
1478
1479
1480 }
1481 if(Z>2&&N>2)
1482 {
1483
1484
1485
1486
1487
1488 }
1489 if(N>3)
1490 {
1491
1492
1493
1494
1495
1496 }
1497 if(a>9)
1498 {
1499 if(Z>3&&N>3&&S>0)
1500 {
1501
1502
1503
1504
1505
1506 }
1507 if(Z>3&&N>4)
1508 {
1509
1510
1511
1512
1513
1514 }
1515 if(Z>4&&N>3)
1516 {
1517
1518
1519
1520
1521
1522 }
1523 if(a>12&&N>5&&Z>5)
1524 {
1525
1526
1527
1528
1529
1530 }
1531 }
1532 }
1533 if(N>3&&Z>3&&a>8)
1534 {
1535 aaQPDG =
G4QPDGCode(90000000+1000*(1000*S+Z-4)+N-4);
1536 GSResAA=aaQPDG.GetMass();
1537#ifdef debug
1538 G4double s_value=GSResAA+mAlph+mAlph+SAABarr;
1539 G4cout<<
"G4QNucl::EvapBaryon: a="<<GSResNP<<
",T="<<s_value-GSMass<<
",E="<<totMass-s_value
1540 <<
",A="<<SAABarr<<
G4endl;
1541#endif
1542 if(GSResAA+mAlph+mAlph+SAABarr<totMass) aaFlag=true;
1543 }
1544 if(N>2&&a>5)
1545 {
1546 naQPDG =
G4QPDGCode(90000000+1000*(1000*S+Z-2)+N-3);
1547 GSResNA=naQPDG.GetMass();
1548#ifdef debug
1549 G4double s_value=GSResNA+mAlph+mNeut;
1550 G4cout<<
"G4QNucl::EvapBary: M="<<GSResNA<<
",T="<<s_value-GSMass<<
",E="<<totMass-s_value
1552#endif
1553 if(GSResNA+mNeut+mAlph+ABarr<totMass) naFlag=true;
1554 }
1555 if(S>0&&a>5)
1556 {
1557 laQPDG =
G4QPDGCode(90000000+1000*(1000*S+Z-1002)+N-2);
1558 GSResLA=laQPDG.GetMass();
1559 if(GSResLA+mLamb+mAlph+ABarr<totMass) laFlag=true;
1560 }
1561 AQPDG =
G4QPDGCode(90000000+1000*(1000*S+Z-2)+N-2);
1562 GSResNa=AQPDG.GetMass();
1563 mpls=GSResNa+mAlph;
1564 mmin=GSResNa-mAlph;
1565 ap2m=(tM2-mpls*mpls)*(tM2-mmin*mmin)/qtM2;
1566 if(ap2m>=0.000001)
1567 {
1568 aFlag=true;
1569 aBnd=mAlph-GSMass+GSResNa;
1571#ifdef debug
1572 G4cout<<
"G4QNuc::EvapBar:m="<<eMax+sqrt(ap2m+GSResNa*GSResNa)<<
" = M="<<totMass
1573 <<
", sm="<<GSResNp+mProt+PBarr<<
",pp2="<<pp2m<<
",pB="<<pBnd<<
G4endl;
1574#endif
1575 aExcess=eMax-mAlph+aBnd;
1576 }
1577 else aExcess=pBnd;
1578 }
1579 }
1580 if(N>0)
1581 {
1582 if(Z>0)
1583 {
1584 npQPDG=
G4QPDGCode(90000000+1000*(1000*S+Z-1)+N-1);
1585 GSResNP=npQPDG.GetMass();
1586#ifdef debug
1587 G4double s_value=GSResNP+mNeut+mProt;
1588 G4cout<<
"G4QNucl::EvapBaryon: npM="<<GSResNP<<
",T="<<s_value-GSMass<<
",E="<<totMass-s_value
1590#endif
1591 if(GSResNP+mNeut+mProt+PBarr<totMass) npFlag=true;
1592 }
1593 if(N>1)
1594 {
1595
1596
1597
1598
1599
1600 }
1601 if(S>0)
1602 {
1603
1604
1605
1606
1607
1608 }
1609 }
1610 if(S>0)
1611 {
1612 if(Z>0)
1613 {
1614 plQPDG=
G4QPDGCode(90000000+1000*(1000*(S-1)+Z-1)+N);
1615 GSResPL=plQPDG.GetMass();
1616 if(GSResPL+mProt+PBarr+mLamb<totMass) plFlag=true;
1617 }
1618 if(S>1)
1619 {
1620
1621
1622
1623
1624
1625 }
1626 }
1627 }
1632 if(N>0)
1633 {
1634 NQPDG=
G4QPDGCode(90000000+1000*(1000*S+Z)+N-1);
1635 GSResNn=NQPDG.GetMass();
1636#ifdef debug
1637 G4cout<<
"G4QNucleus::EvapBaryon: M(A-N)="<<GSResNn<<
",Z="<<Z
1638 <<
",N="<<N<<
",S="<<S<<
G4endl;
1639#endif
1642 np2m=(tM2-mpls*mpls)*(tM2-mmin*mmin)/qtM2;
1643 if(np2m>=0.000001)
1644 {
1645 nFlag=true;
1646 nBnd=mNeut-GSMass+GSResNn;
1648#ifdef debug
1649 G4cout<<
"G4QNuc::EvapBaryon:nm="<<eMax+sqrt(np2m+GSResNn*GSResNn)<<
" = M="<<totMass
1650 <<
", sm="<<GSResNn+mNeut<<
",np2="<<np2m<<
",nB="<<nBnd<<
G4endl;
1651#endif
1652 nExcess=eMax-mNeut+nBnd;
1653 }
1654 else nExcess=nBnd;
1655 if(N>1)
1656 {
1657 nnQPDG=
G4QPDGCode(90000000+1000*(1000*S+Z)+N-2);
1658 GSResNN=nnQPDG.GetMass();
1659 if(GSResNN+mNeut+mNeut<totMass) nnFlag=true;
1660 if(N>2)
1661 {
1662
1663
1664
1665
1666
1667 }
1668 if(S>0)
1669 {
1670
1671
1672
1673
1674
1675 }
1676 }
1677 if(S>0)
1678 {
1679 nlQPDG=
G4QPDGCode(90000000+1000*(1000*(S-1)+Z)+N-1);
1680 GSResNL=nlQPDG.GetMass();
1681 if(GSResNL+mNeut+mLamb<totMass) nlFlag=true;
1682 if(S>1)
1683 {
1684
1685
1686
1687
1688
1689 }
1690 }
1691 }
1696 if(S>0)
1697 {
1698 LQPDG=
G4QPDGCode(90000000+1000*(1000*(S-1)+Z)+N);
1699 GSResNl=LQPDG.GetMass();
1702 lp2m=(tM2-mpls*mpls)*(tM2-mmin*mmin)/qtM2;
1703 if(lp2m>=0.000001)
1704 {
1705 lFlag=true;
1706 lBnd=mLamb-GSMass+GSResNl;
1708#ifdef debug
1709 G4cout<<
"G4QNuc::EvapBaryon:lm="<<eMax+sqrt(lp2m+GSResNl*GSResNl)<<
" = M="<<totMass
1710 <<
", sm="<<GSResNl+mLamb<<
",lp2="<<lp2m<<
",lB="<<lBnd<<
G4endl;
1711#endif
1712 lExcess=eMax-mLamb+lBnd;
1713 }
1714 else lExcess=lBnd;
1715 if(S>1)
1716 {
1717 llQPDG=
G4QPDGCode(90000000+1000*(1000*(S-2)+Z)+N);
1718 GSResLL=llQPDG.GetMass();
1719 if(GSResLL+mLamb+mLamb<totMass) llFlag=true;
1720 if(S>2)
1721 {
1722
1723
1724
1725
1726
1727 }
1728 }
1729 }
1730 G4bool nSecF = nnFlag||npFlag||nlFlag||naFlag;
1731 G4bool pSecF = npFlag||ppFlag||plFlag||paFlag;
1732 G4bool lSecF = nlFlag||plFlag||llFlag||laFlag;
1733 G4bool aSecF = naFlag||paFlag||laFlag||aaFlag;
1734
1735
1736
1737
1738 G4bool secB = nSecF||pSecF||lSecF||aSecF;
1739
1740#ifdef debug
1741 G4cout<<
"G4QNucl::EvapBary:n="<<nSecF<<
",p="<<pSecF<<
",l="<<lSecF<<
",a="<<aSecF<<
",nn="
1742 <<nnFlag<<", np="<<npFlag<<",pp="<<ppFlag<<",pa="<<paFlag<<",na="<<naFlag<<",aa="
1744#endif
1747 if(secB)
1748
1749 {
1750 if(!nSecF) nFlag=false;
1751 if(!pSecF) pFlag=false;
1752 if(!lSecF) lFlag=false;
1753 if(!aSecF) aFlag=false;
1754#ifdef debug
1755 G4cout<<
"G4QNuc::EB:nF="<<nFlag<<
",pF="<<pFlag<<
",lF="<<lFlag<<
",aF="<<aFlag<<
G4endl;
1756#endif
1758 if(nFlag&&nExcess>maxE) maxE=nExcess;
1759 if(pFlag&&pExcess>maxE) maxE=pExcess;
1760 if(lFlag&&lExcess>maxE) maxE=lExcess;
1761 if(lFlag&&aExcess>maxE) maxE=aExcess;
1763 if(pFlag)pMin+= PBarr;
1767 if(aFlag)aMin+= ABarr;
1769 if(nFlag&&nMin<minE) minE=nMin;
1770 if(pFlag&&pMin<minE) minE=pMin;
1771 if(lFlag&&lMin<minE) minE=lMin;
1772 if(evalph&&aFlag&&aMin<minE) minE=aMin;
1773
1774#ifdef debug
1775 G4cout<<
"G4QNucleus::EvapBaryon: nE="<<nExcess<<
">"<<nMin<<
",pE="<<pExcess<<
">"<<pMin
1776 <<",sE="<<lExcess<<">"<<lMin<<",E="<<aExcess<<">"<<aMin<<",miE="<<minE<<"<maE="
1778#endif
1779
1781
1782
1783
1784
1786 if( ( (pFlag && pExcess > pMin) ||
1787 (nFlag && nExcess > nMin) ||
1788 (lFlag && lExcess > lMin) ||
1789 (aFlag && aExcess > aMin) ) && minE<maxE )
1790 {
1794 if(mi<0.)
1795 {
1796 uW-=mi;
1797 mm_value-=mi;
1798 mi=0.;
1799 }
1800
1801 if(ma<mm_value)
1802 {
1803 ma=mm_value;
1804
1805 }
1806#ifdef debug
1807 G4cout<<
"G4QNuc::EvapBary:iE="<<minE<<
",aE="<<maxE<<
",mi="<<mi<<
",mm="<<mm_value<<
",ma="
1809#endif
1812
1813
1814
1816 if(xMa>1.)xMa=1.;
1817 if(xMi<0.)xMi=0.;
1818 if(xMi>xMa)
1819 {
1820 G4cerr<<
"***G4QNucleus::EvapBaryon: M="<<mm_value/ma<<
",xi="<<xMi<<
",xa="<<xMa<<
G4endl;
1821 return false;
1822 }
1823 xMi=sqrt(xMi);
1824 xMa=sqrt(xMa);
1825#ifdef debug
1826 G4cout<<
"G4QNuc:EvapBaryon:mi="<<mi<<
",ma="<<ma<<
", xi="<<xMi<<
",xa="<<xMa<<
G4endl;
1827#endif
1830#ifdef debug
1831 G4cout<<
"G4QNucleus::EvaporateBaryon: Power="<<powr<<
",RevPower="<<revP<<
G4endl;
1832#endif
1833 G4double minR=pow(1.-xMa*xMa,powr);
1834 G4double maxR=pow(1.-xMi*xMi,powr);
1835#ifdef debug
1836 G4cout<<
"G4QNucleus::EvaporateBaryon: miR="<<minR<<
", maR="<<maxR<<
G4endl;
1837#endif
1841 while(cond&&cntr<cntm)
1842 {
1844
1847 if(x<xMi||x>xMa)
1848 {
1849#ifdef debug
1850 G4cerr<<
"**G4QNucl::EvapB:R="<<R<<
",xi="<<xMi<<
" < "<<x<<
" < xa="<<xMa<<
G4endl;
1851#endif
1852 if(x<xMi) x=xMi;
1853 else x=xMa;
1854 x2 = x*x;
1855 }
1857
1858 if(rn<x/xMa)
1859 {
1860 tk= ma*x2-uW;
1863#ifdef debug
1864 G4cout<<
"G4QNuc::EvapB:t="<<tk<<
",pM="<<pMin<<
",pB="<<pBnd<<
",n="<<nMin<<
",a="
1866#endif
1867 if(pFlag&&tk>pMin)
1868 {
1870
1871#ifdef debug
1872 G4cout<<
"G4QN::EB:Proton="<<kin<<
",CB="<<PBarr<<
",B="<<pBnd<<
",M="<<pMin
1874#endif
1876 }
1877 psum+=zCBPP;
1879 if(nFlag&&tk>nMin)
1880 {
1882#ifdef debug
1884#endif
1886 }
1887 psum+=nCBPP;
1888 nCBPP+=zCBPP;
1890 if(lFlag&&tk>lMin)
1891 {
1893#ifdef debug
1895#endif
1897 }
1898 psum+=lCBPP;
1899 lCBPP+=nCBPP;
1900 if(evalph&&aFlag&&tk>aMin)
1901 {
1903
1904#ifdef debug
1905 G4cout<<
"G4QN::EB:Alpha="<<kin<<
",CB="<<ABarr<<
",p="
1907#endif
1908 psum+=
CoulBarPenProb(ABarr,kin,2,4)*sqrt(kin)*evalph*Z*(Z-1)*N*(N-1)
1909 *6/a1/(a-2)/(a-3);
1910 }
1912#ifdef debug
1913 G4cout<<
"G4QNuc::EvapB:"<<r<<
",p="<<zCBPP<<
",pn="<<nCBPP<<
",pnl="<<lCBPP<<
",t="
1915#endif
1916 cond = false;
1917 if (r&&r>lCBPP)
1918 {
1919#ifdef debug
1920 G4cout<<
"G4QNuc::EvaB:ALPHA is selected for evap, r="<<r<<
">"<<lCBPP<<
G4endl;
1921#endif
1922 PDG=aPDG;
1923 }
1924 else if(r&&r>nCBPP&&r<=lCBPP)
1925 {
1926#ifdef debug
1927 G4cout<<
"G4QNuc::EvaB:LAMBDA is selected for evap,r="<<r<<
"<"<<lCBPP<<
G4endl;
1928#endif
1929 PDG=lPDG;
1930 }
1931 else if(r&&r>zCBPP&&r<=nCBPP)
1932 {
1933#ifdef debug
1934 G4cout<<
"G4QNuc::EvaBar: N is selected for evapor,r="<<r<<
"<"<<nCBPP<<
G4endl;
1935#endif
1936 PDG=nPDG;
1937 }
1938 else if(r&&r<=zCBPP)
1939 {
1940#ifdef debug
1941 G4cout<<
"G4QNuc::EvaBar: P is selected for evapor,r="<<r<<
"<"<<zCBPP<<
G4endl;
1942#endif
1943 PDG=pPDG;
1944 }
1945 else cond=true;
1946 }
1947#ifdef debug
1948 G4cout<<
"G4QNuc::EvapBar:c="<<cond<<
",x="<<x<<
",cnt="<<cntr<<
",R="<<R<<
",ma="<<ma
1949 <<
",rn="<<rn<<
"<r="<<x/xMa<<
",tk="<<tk<<
",ni="<<nMin<<
",pi="<<pMin<<
G4endl;
1950#endif
1951 cntr++;
1952 }
1953 if(cntr<cntm)
1954 {
1956 if (PDG==aPDG)
1957 {
1958 tk-=aBnd-mAlph;
1959 p2=tk*tk-mA2;
1960 if(p2>ap2m)
1961 {
1962 p2=ap2m;
1963 tk=sqrt(p2+mA2);
1964 }
1965 eMass=mAlph;
1966 bQPDG=aQPDG;
1967 rQPDG=AQPDG;
1968 }
1969 else if(PDG==pPDG)
1970 {
1971 tk-=pBnd-mProt;
1972 p2=tk*tk-mP2;
1973 if(p2>pp2m)
1974 {
1975 p2=pp2m;
1976 tk=sqrt(p2+mP2);
1977 }
1978 eMass=mProt;
1979 bQPDG=pQPDG;
1980 rQPDG=PQPDG;
1981 }
1982 else if(PDG==nPDG)
1983 {
1984 tk-=nBnd-mNeut;
1985 p2=tk*tk-mN2;
1986#ifdef debug
1987 G4cout<<
"G4QNucleus::EvaporateBaryon:np2="<<p2<<
",np2m="<<np2m<<
G4endl;
1988#endif
1989 if(p2>np2m)
1990 {
1991 p2=np2m;
1992 tk=sqrt(p2+mN2);
1993 }
1994 eMass=mNeut;
1995 bQPDG=nQPDG;
1996 rQPDG=NQPDG;
1997 }
1998 else if(PDG==lPDG)
1999 {
2000 tk-=lBnd-mLamb;
2001 p2=tk*tk-mL2;
2002 if(p2>lp2m)
2003 {
2004 p2=lp2m;
2005 tk=sqrt(p2+mL2);
2006 }
2007 eMass=mLamb;
2008 bQPDG=lQPDG;
2009 rQPDG=LQPDG;
2010 }
2011 else G4cerr<<
"***G4QNucleus::EvaporateBaryon: PDG="<<PDG<<
G4endl;
2014 if (rEn2 > p2) rMass=sqrt(rEn2-p2);
2015 else rMass=0.0;
2016
2017
2018 G4bool nnCond = !nnFlag || (nnFlag && GSResNN+mNeut > rMass);
2019 G4bool npCond = !npFlag || (npFlag && GSResNP+mProt+PBarr > rMass);
2020 G4bool nlCond = !nlFlag || (nlFlag && GSResNL+mLamb > rMass);
2021 G4bool naCond = !naFlag || (naFlag && GSResNA+mAlph+ABarr > rMass);
2022 G4bool pnCond = !npFlag || (npFlag && GSResNP+mNeut > rMass);
2023 if(barf) pnCond = !npFlag || (npFlag && GSResNP+mNeut+PBarr > rMass);
2024 G4bool ppCond = !ppFlag || (ppFlag && GSResPP+mProt+PPBarr > rMass);
2025 if(barf) ppCond = !ppFlag || (ppFlag && GSResPP+mProt+SPPBarr > rMass);
2026 G4bool plCond = !plFlag || (plFlag && GSResPL+mLamb > rMass);
2027 if(barf) plCond = !plFlag || (plFlag && GSResPL+mLamb+PBarr > rMass);
2028 G4bool paCond = !paFlag || (paFlag && GSResPA+mAlph+APBarr > rMass);
2029 if(barf) paCond = !paFlag || (paFlag && GSResPA+mAlph+SAPBarr > rMass);
2030 G4bool lnCond = !nlFlag || (nlFlag && GSResNL+mNeut > rMass);
2031 G4bool lpCond = !plFlag || (plFlag && GSResPL+mProt+PBarr > rMass);
2032 G4bool llCond = !llFlag || (llFlag && GSResLL+mLamb > rMass);
2033 G4bool laCond = !laFlag || (laFlag && GSResLA+mAlph+ABarr > rMass);
2034 G4bool anCond = !naFlag || (naFlag && GSResNA+mNeut > rMass);
2035 if(barf) anCond = !naFlag || (naFlag && GSResNA+mNeut+ABarr > rMass);
2036 G4bool apCond = !paFlag || (paFlag && GSResPA+mProt+PABarr > rMass);
2037 if(barf) apCond = !paFlag || (paFlag && GSResPA+mProt+SAPBarr > rMass);
2038 G4bool alCond = !laFlag || (laFlag && GSResLA+mLamb > rMass);
2039 if(barf) alCond = !laFlag || (laFlag && GSResLA+mLamb+ABarr > rMass);
2040 G4bool aaCond = !aaFlag || (aaFlag && GSResAA+mAlph+AABarr > rMass);
2041 if(barf) aaCond = !aaFlag || (aaFlag && GSResAA+mAlph+SAABarr > rMass);
2042#ifdef debug
2043 G4cout<<
"G4QNucl::EvaB:"<<PDG<<
", E="<<tk<<
", rM="<<rMass<<
", ";
2044 if(PDG==pPDG)
G4cout<<
"PN="<<GSResNP+mNeut<<
"("<<pnCond<<
"),PP="
2045 <<GSResPP+mProt+PPBarr<<"("<<ppCond<<"),PL="
2046 <<GSResPL+mLamb<<"("<<plCond<<"),PA="
2047 <<GSResPA+mAlph+APBarr<<"("<<paCond;
2048 else if(PDG==nPDG)
G4cout<<
"NN="<<GSResNN+mNeut<<
"("<<nnCond<<
"),NP="
2049 <<GSResNP+mProt+PBarr<<"("<<npCond<<"),NL="
2050 <<GSResNL+mLamb<<"("<<nlCond<<"),NA="
2051 <<GSResNA+mAlph+ABarr<<"("<<naCond;
2052 else if(PDG==lPDG)
G4cout<<
"LN="<<GSResNL+mNeut<<
"("<<lnCond<<
"),LP="
2053 <<GSResPL+mProt+PBarr<<"("<<lpCond<<"),LL="
2054 <<GSResLL+mLamb<<"("<<llCond<<"),LA="
2055 <<GSResLA+mAlph+ABarr<<"("<<laCond;
2056 else if(PDG==aPDG)
G4cout<<
"AN="<<GSResNA+mNeut<<
"("<<anCond<<
"),AP="
2057 <<GSResPA+mProt+PABarr<<"("<<apCond<<"),AL="
2058 <<GSResLA+mLamb<<"("<<alCond<<"),AA="
2059 <<GSResAA+mAlph+AABarr<<"("<<aaCond;
2061#endif
2062 three=false;
2063
2064
2065 if(PDG==pPDG&&(pnCond&&ppCond&&plCond&&paCond))
2066 {
2067#ifdef debug
2068 G4cout<<
"G4QN::EB:*p*: n="<<pnCond<<
",p="<<ppCond<<
",l="<<plCond<<
",a="<<paCond
2070#endif
2071 fMass=mProt;
2072 fQPDG=pQPDG;
2074 if(N&&GSResNP!=GSMass&&fMass+PBarr+mNeut+GSResNP<totMass)
2075 {
2076 if(barf) nLim+=(N+N)*pow(totMass-mNeut-mProt-PBarr-GSResNP,2);
2077 else nLim+=(N+N)*pow(totMass-mNeut-mProt-GSResNP,2);
2078 }
2080 if(Z>1&&GSResPP!=GSMass&&fMass+mProt+SPPBarr+GSResPP<totMass)
2081 {
2082 if(barf) zLim+=(Z-1)*pow(totMass-mProt-mProt-SPPBarr-GSResPP,2);
2083 else zLim+=(Z-1)*pow(totMass-mProt-mProt-GSResPP,2);
2084 }
2086 if(S&&GSResPL!=GSMass&&fMass+PBarr+mLamb+GSResPL<totMass)
2087 {
2088 if(barf) sLim+=(S+S)*pow(totMass-mProt-mLamb-PBarr-GSResPL,2);
2089 else sLim+=(S+S)*pow(totMass-mProt-mLamb-GSResPL,2);
2090 }
2092 if(evalph&&Z>2&&N>1&&a>4&&GSResPL!=GSMass&&fMass+SAPBarr+mAlph+GSResPA<totMass)
2093 {
2094 if(barf) aLim+=pow(totMass-mProt-mAlph-SAPBarr-GSResPA,2)*evalph*
2095 (Z-1)*(Z-2)*N*(N-1)*12/(a-2)/(a-3)/(a-4);
2096 else aLim+=pow(totMass-mProt-mAlph-GSResPA,2)*evalph*(Z-1)*(Z-2)*N*(N-1)
2097 *12/(a-2)/(a-3)/(a-4);
2098 }
2100#ifdef debug
2101 G4cout<<
"G4QNuc::EvaB:p, r="<<r<<
",n="<<nLim<<
",z="<<zLim<<
",s="<<sLim<<
",a="
2103#endif
2104 three=true;
2105 if(!aLim) three=false;
2106 else if(r>sLim)
2107 {
2108 eMass = mAlph;
2109 dbQPDG= PAQPDG;
2110 rMass = GSResPA;
2111 rQPDG = paQPDG;
2112#ifdef debug
2114#endif
2115 }
2116 else if(zLim<sLim&&r>zLim&&r<=sLim)
2117 {
2118 eMass = mLamb;
2119 dbQPDG= PLQPDG;
2120 rMass = GSResPL;
2121 rQPDG = plQPDG;
2122#ifdef debug
2124#endif
2125 }
2126 else if(nLim<zLim&&r>nLim&&r<=zLim)
2127 {
2128 eMass = mProt;
2129 dbQPDG= PPQPDG;
2130 rMass = GSResPP;
2131 rQPDG = ppQPDG;
2132#ifdef debug
2134#endif
2135 }
2136 else if(r<=nLim)
2137 {
2138 eMass = mNeut;
2139 dbQPDG= NPQPDG;
2140 rMass = GSResNP;
2141 rQPDG = npQPDG;
2142#ifdef debug
2144#endif
2145 }
2146 else three=false;
2147 }
2148 else if(PDG==nPDG&&(nnCond&&npCond&&nlCond&&naCond))
2149 {
2150#ifdef debug
2151 G4cout<<
"G4QN::EB:*n*: n="<<nnCond<<
",p="<<npCond<<
",l="<<nlCond<<
",a="<<naCond
2153#endif
2154 fMass=mNeut;
2155 fQPDG=nQPDG;
2157 if(N>1&&GSResNN!=GSMass&&fMass+mNeut+GSResNN<totMass)
2158 nLim+=(N-1)*pow(totMass-mNeut-mNeut-GSResNN,2);
2160 if(Z&&GSResNP!=GSMass&&fMass+mProt+PBarr+GSResNP<totMass)
2161 {
2162 if(barf) zLim+=(Z+Z)*pow(totMass-mNeut-mProt-PBarr-GSResNP,2);
2163 else zLim+=(Z+Z)*pow(totMass-mNeut-mProt-GSResNP,2);
2164 }
2166 if(S&&GSResNL!=GSMass&&fMass+mLamb+GSResNL<totMass)
2167 sLim+=(S+S)*pow(totMass-mNeut-mLamb-GSResNL,2);
2169 if(evalph&&Z>1&&N>2&&a>4&&GSResNA!=GSMass&&fMass+mAlph+ABarr+GSResNA<totMass)
2170 {
2171 if(barf) aLim+=pow(totMass-mNeut-mAlph-ABarr-GSResNA,2)*
2172 evalph*Z*(Z-1)*(N-1)*(N-2)*12/(a-2)/(a-3)/(a-4);
2173 else aLim+=pow(totMass-mNeut-mAlph-GSResNA,2)*
2174 evalph*Z*(Z-1)*(N-1)*(N-2)*12/(a-2)/(a-3)/(a-4);
2175 }
2177#ifdef debug
2178 G4cout<<
"G4QN::EB:n, r="<<r<<
",n="<<nLim<<
",z="<<zLim<<
",s="<<sLim<<
",a="<<aLim
2180#endif
2181 three=true;
2182 if(!aLim) three=false;
2183 else if(r>sLim)
2184 {
2185 eMass = mAlph;
2186 dbQPDG= NAQPDG;
2187 rMass = GSResNA;
2188 rQPDG = naQPDG;
2189#ifdef debug
2191#endif
2192 }
2193 else if(zLim<sLim&&r>zLim&&r<=sLim)
2194 {
2195 eMass = mLamb;
2196 dbQPDG= NLQPDG;
2197 rMass = GSResNL;
2198 rQPDG = nlQPDG;
2199#ifdef debug
2201#endif
2202 }
2203 else if(nLim<zLim&&r>nLim&&r<=zLim)
2204 {
2205 eMass = mProt;
2206 dbQPDG= NPQPDG;
2207 rMass = GSResNP;
2208 rQPDG = npQPDG;
2209#ifdef debug
2211#endif
2212 }
2213 else if(r<=nLim)
2214 {
2215 eMass = mNeut;
2216 dbQPDG= NNQPDG;
2217 rMass = GSResNN;
2218 rQPDG = nnQPDG;
2219#ifdef debug
2221#endif
2222 }
2223 else three=false;
2224 }
2225 else if(PDG==lPDG&&(lnCond&&lpCond&&llCond&&laCond))
2226 {
2227#ifdef debug
2228 G4cout<<
"G4QN::EB:*l*: n="<<lnCond<<
",p="<<lpCond<<
",l="<<llCond<<
",a="<<laCond
2230#endif
2231 fMass=mLamb;
2232 fQPDG=lQPDG;
2234 if(N&&GSResNL!=GSMass&&fMass+mNeut+GSResNL<totMass)
2235 nLim+=(N+N)*pow(totMass-mNeut-mLamb-GSResNL,2);
2237 if(Z&&GSResPL!=GSMass&&fMass+mProt+PBarr+GSResPL<totMass)
2238 {
2239 if(barf) zLim+=(Z+Z)*pow(totMass-mProt-mLamb-PBarr-GSResPL,2);
2240 else zLim+=(Z+Z)*pow(totMass-mProt-mLamb-GSResPL,2);
2241 }
2243 if(S>1&&GSResLL!=GSMass&&fMass+mLamb+GSResLL<totMass)
2244 sLim+=(S-1)*pow(totMass-mLamb-mLamb-GSResLL,2);
2246 if(evalph&&Z>1&&N>1&&a>4&&GSResLA!=GSMass&&fMass+mAlph+ABarr+GSResLA<totMass)
2247 {
2248 if(barf) aLim+=pow(totMass-mLamb-mAlph-ABarr-GSResLA,2)*
2249 evalph*Z*(Z-1)*N*(N-1)*12/(a-2)/(a-3)/(a-4);
2250 else aLim+=pow(totMass-mLamb-mAlph-GSResLA,2)*
2251 evalph*Z*(Z-1)*N*(N-1)*12/(a-2)/(a-3)/(a-4);
2252 }
2254#ifdef debug
2255 G4cout<<
"G4QN::EB:l, r="<<r<<
",n="<<nLim<<
",z="<<zLim<<
",s="<<sLim<<
",a="<<aLim
2257#endif
2258 three=true;
2259 if(!aLim) three=false;
2260 else if(r>sLim)
2261 {
2262 eMass = mAlph;
2263 dbQPDG= LAQPDG;
2264 rMass = GSResLA;
2265 rQPDG = laQPDG;
2266#ifdef debug
2268#endif
2269 }
2270 else if(zLim<sLim&&r>zLim&&r<=sLim)
2271 {
2272 eMass = mLamb;
2273 dbQPDG= LLQPDG;
2274 rMass = GSResLL;
2275 rQPDG = llQPDG;
2276#ifdef debug
2278#endif
2279 }
2280 else if(nLim<zLim&&r>nLim&&r<=zLim)
2281 {
2282 eMass = mProt;
2283 dbQPDG= PLQPDG;
2284 rMass = GSResPL;
2285 rQPDG = plQPDG;
2286#ifdef debug
2288#endif
2289 }
2290 else if(r<=nLim)
2291 {
2292 eMass = mNeut;
2293 dbQPDG= NLQPDG;
2294 rMass = GSResNL;
2295 rQPDG = nlQPDG;
2296#ifdef debug
2298#endif
2299 }
2300 else three=false;
2301 }
2302 else if(PDG==aPDG&&(anCond&&apCond&&alCond&&aaCond))
2303 {
2304#ifdef debug
2305 G4cout<<
"G4QN::EB:*a*: n="<<anCond<<
",p="<<apCond<<
",l="<<alCond<<
",a="<<aaCond
2307#endif
2308 fMass=mAlph;
2309 fQPDG=aQPDG;
2311 if(N>2&&GSResNA!=GSMass&&fMass+mNeut+ABarr+GSResNA<totMass)
2312 {
2313 if(barf) nLim+=(N-2)*pow(totMass-mNeut-mAlph-ABarr-GSResNA,2);
2314 else nLim+=(N-2)*pow(totMass-mNeut-mAlph-GSResNA,2);
2315 }
2317 if(Z>2&&GSResPA!=GSMass&&fMass+mProt+SAPBarr+GSResPA<totMass)
2318 {
2319 if(barf) zLim+=(Z-2)*pow(totMass-mProt-mAlph-SAPBarr-GSResPA,2);
2320 else zLim+=(Z-2)*pow(totMass-mProt-mAlph-GSResPA,2);
2321 }
2323 if(S&&GSResLA!=GSMass&&fMass+mLamb+ABarr+GSResLA<totMass)
2324 {
2325 if(barf) sLim+=S*pow(totMass-mLamb-mAlph-ABarr-GSResLA,2);
2326 else sLim+=S*pow(totMass-mLamb-mAlph-GSResLA,2);
2327 }
2329 if(evalph&&Z>3&&N>3&&a>7&&GSResAA!=GSMass&&fMass+mAlph+SAABarr+GSResAA<totMass)
2330 {
2331 if(barf) aLim+=pow(totMass-mAlph-mAlph-SAABarr-GSResAA,2)*
2332 evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*12/(a-5)/(a-6)/(a-7);
2333 else aLim+=pow(totMass-mAlph-mAlph-GSResAA,2)*
2334 evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*12/(a-5)/(a-6)/(a-7);
2335 }
2337#ifdef debug
2338 G4cout<<
"G4QN::EB:a, r="<<r<<
",n="<<nLim<<
",z="<<zLim<<
",s="<<sLim<<
",a="<<aLim
2340#endif
2341 three=true;
2342 if(!aLim) three=false;
2343 else if(r>sLim)
2344 {
2345 eMass = mAlph;
2346 dbQPDG= AAQPDG;
2347 rMass = GSResAA;
2348 rQPDG = aaQPDG;
2349#ifdef debug
2351#endif
2352 }
2353 else if(zLim<sLim&&r>zLim&&r<=sLim)
2354 {
2355 eMass = mLamb;
2356 dbQPDG= LAQPDG;
2357 rMass = GSResLA;
2358 rQPDG = laQPDG;
2359#ifdef debug
2361#endif
2362 }
2363 else if(nLim<zLim&&r>nLim&&r<=zLim)
2364 {
2365 eMass = mProt;
2366 dbQPDG= PAQPDG;
2367 rMass = GSResPA;
2368 rQPDG = paQPDG;
2369#ifdef debug
2371#endif
2372 }
2373 else if(r<=nLim)
2374 {
2375 eMass = mNeut;
2376 dbQPDG= NAQPDG;
2377 rMass = GSResNA;
2378 rQPDG = naQPDG;
2379#ifdef debug
2381#endif
2382 }
2383 else three=false;
2384 }
2385 else three=false;
2386 if(rMass<1600.)
2387 {
2388 if (rQPDG==pQPDG)rMass=mProt;
2389 else if(rQPDG==nQPDG)rMass=mNeut;
2390 else if(rQPDG==lQPDG)rMass=mLamb;
2391 }
2392#ifdef debug
2393 G4cout<<
"G4QNucleus::EvaporateBary:evaBar="<<eMass<<bQPDG<<
",resN="<<rMass<<rQPDG
2394 <<
",secB="<<fMass<<
",three="<<three<<
G4endl;
2395#endif
2396 }
2397 }
2398 else
2399 {
2401 if(nFlag&&mNeut+GSResNn<totMass)
2402 {
2403 G4double ken=totMass-mNeut-GSResNn;
2405 }
2407 if(pFlag&&mProt+PBarr+GSResNp<totMass)
2408 {
2409 G4double ken=totMass-mProt-GSResNp;
2410 if(barf) ken-=PBarr;
2412 }
2414 if(lFlag&&mLamb+GSResNl<totMass)
2415 {
2416 G4double ken=totMass-mLamb-GSResNl;
2418 }
2420 if(evalph&&aFlag&&mAlph+GSResNa+ABarr<totMass)
2421 {
2422 G4double ken=totMass-mAlph-GSResNa;
2423 if(barf) ken-=ABarr;
2424 aLim+=
CoulBarPenProb(ABarr,ken,2,4)*sqrt(ken)*evalph*Z*(Z-1)*N*(N-1)
2425 *6/a1/(a-2)/(a-3);
2426 }
2428#ifdef debug
2429 G4cout<<
"G4QNucl::EvapBar:2Decay r="<<r<<
",nLim="<<nLim<<
",zLim="<<zLim<<
",sLim="
2430 <<sLim<<
",nF="<<nFlag<<
",pF="<<pFlag<<
",lF="<<lFlag<<
",aF="<<aFlag<<
G4endl;
2431#endif
2432 if (aFlag&&r>sLim)
2433 {
2434 bQPDG=aQPDG;
2435 eMass=mAlph;
2436 rQPDG=AQPDG;
2437 rMass=GSResNa;
2438 }
2439 else if(lFlag&&r>=zLim&&r<=sLim&&zLim<sLim)
2440 {
2441 bQPDG=lQPDG;
2442 eMass=mLamb;
2443 rQPDG=LQPDG;
2444 rMass=GSResNl;
2445 }
2446 else if(nFlag&&r>=nLim&&r<=zLim&&nLim<zLim)
2447 {
2448 bQPDG=pQPDG;
2449 eMass=mProt;
2450 rQPDG=PQPDG;
2451 rMass=GSResNp;
2452 }
2453 else if(pFlag&&r<nLim)
2454 {
2455 bQPDG=nQPDG;
2456 eMass=mNeut;
2457 rQPDG=NQPDG;
2458 rMass=GSResNn;
2459 }
2460 else
2461 {
2462#ifdef debug
2463 G4cout<<
"G4QNucleus::EvaporateBaryon: Photon #2-B#, dM="<<totMass-GSMass<<
G4endl;
2464#endif
2465 bQPDG=gQPDG;
2467 eMass=0.;
2468 rMass=GSMass;
2469 }
2470#ifdef debug
2471 G4cout<<
"G4QNucl::EvaporateBaryon: b="<<eMass<<bQPDG<<
",r="<<rMass<<rQPDG<<
G4endl;
2472#endif
2473 }
2474 if(three)
2475 {
2476#ifdef debug
2477 G4cout<<
"G4QNucl::EvaporateBaryon:Decay in 3 particles"<<
G4endl;
2478#endif
2483 {
2484#ifdef debug
2485 G4cout<<
"*G4QNucl::EvaporateBaryon:Decay M="<<totMass<<
",b="<<eMass<<bQPDG
2486 <<
",f="<<fMass<<fQPDG<<
",r="<<rMass<<rQPDG<<
G4endl;
2487#endif
2488 return false;
2489 }
2490 h1mom+=h3mom;
2491 bQPDG=dbQPDG;
2492 }
2493 else
2494 {
2495 if(eMass+rMass<totMass&&cntr<cntm)
2496 {
2497#ifdef debug
2498 G4cout<<
"G4QN::EvaB:eM="<<eMass<<
"+rM="<<rMass<<
" ="<<eMass+rMass<<
" < "<<totMass
2499 <<
",c="<<cntr<<
" < cm="<<cntm<<
", bPDG="<<bQPDG<<
", rPDG="<<rQPDG<<
G4endl;
2500#endif
2501 if(rMass<1600.)
2502 {
2503 if (rQPDG==pQPDG)rMass=mProt;
2504 else if(rQPDG==nQPDG)rMass=mNeut;
2505 else if(rQPDG==lQPDG)rMass=mLamb;
2506 }
2509 }
2510 else if(totMass>mNeut+GSResNn)
2511 {
2512#ifdef debug
2513 G4cout<<
"G4QNucl::EvaporateBaryon: Neutron , dM="<<totMass-GSResNn-mNeut<<
G4endl;
2514#endif
2515 bQPDG=nQPDG;
2516 rQPDG=NQPDG;
2519 }
2520 else if(totMass>mProt+PBarr+GSResNp)
2521 {
2522#ifdef debug
2523 G4cout<<
"G4QNucl::EvaporateBaryon: Proton , dM="<<totMass-GSResNp-mProt<<
G4endl;
2524#endif
2525 bQPDG=pQPDG;
2526 rQPDG=PQPDG;
2529 }
2530 else if(totMass>mAlph+ABarr+GSResNa)
2531 {
2532#ifdef debug
2533 G4cout<<
"G4QNucl::EvaporateBaryon: Alpha , dM="<<totMass-GSResNa-mAlph<<
G4endl;
2534#endif
2535 bQPDG=aQPDG;
2536 rQPDG=AQPDG;
2539 }
2540 else if(totMass>GSMass)
2541 {
2542#ifdef debug
2543 G4cout<<
"G4QNucl::EvaporateBaryon:Photon ### 2 ###, dM="<<totMass-GSMass<<
G4endl;
2544#endif
2545 bQPDG=gQPDG;
2549 }
2550 else
2551 {
2552 G4cerr<<
"***G4QNucl::EvaporateBaryon: Cann't evaporate even gamma (1)"<<
G4endl;
2553 return false;
2554 }
2555 }
2556 }
2557 else
2558 {
2559 if(secB)
2560
2561 {
2562#ifdef debug
2563 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in 2 baryons"<<
G4endl;
2564#endif
2566
2568 if(aSecF)alp=evalph*Z*(Z-1)*N*(N-1)*10/(a-2)/(a-3)/(a-4);
2570 if(nnFlag&&totMass>mNeut+mNeut+GSResNN)
2571 nnLim+=N*(N-1)*pow(totMass-mNeut-mNeut-GSResNN,2);
2573 if(npFlag&&totMass>mNeut+mProt+PBarr+GSResNP)
2574 {
2575 if(barf) nzLim+=2*N*Z*pow(totMass-mNeut-mProt-PBarr-GSResNP,2);
2576 else nzLim+=2*N*Z*pow(totMass-mNeut-mProt-GSResNP,2);
2577 }
2579 if(ppFlag&&totMass>mProt+mProt+SPPBarr+GSResPP)
2580 {
2581 if(barf) zzLim+=Z*(Z-1)*pow(totMass-mProt-mProt-SPPBarr-GSResPP,2);
2582 else zzLim+=Z*(Z-1)*pow(totMass-mProt-mProt-GSResPP,2);
2583 }
2585 if(nlFlag&&totMass>mNeut+mLamb+GSResNL)
2586 nlLim+=2*N*S*pow(totMass-mNeut-mLamb-GSResNL,2);
2588 if(plFlag&&totMass>mProt+PBarr+mLamb+GSResPL)
2589 {
2590 if(barf) zlLim+=2*Z*S*pow(totMass-mProt-mLamb-PBarr-GSResPL,2);
2591 else zlLim+=2*Z*S*pow(totMass-mProt-mLamb-GSResPL,2);
2592 }
2594 if(llFlag&&totMass>mLamb+mLamb+GSResLL)
2595 llLim+=S*(S-1)*pow(totMass-mLamb-mLamb-GSResLL,2);
2597 if(naFlag&&totMass>mNeut+mAlph+ABarr+GSResNA)
2598 {
2599 if(barf) naLim+=(N-3)*alp*pow(totMass-mNeut-mAlph-ABarr-GSResNA,2);
2600 else naLim+=(N-3)*alp*pow(totMass-mNeut-mAlph-GSResNA,2);
2601 }
2603 if(paFlag&&totMass>mProt+SAPBarr+mAlph+GSResPA)
2604 {
2605 if(barf) zaLim+=(Z-3)*alp*pow(totMass-mProt-mAlph-SAPBarr-GSResPA,2);
2606 else zaLim+=(Z-3)*alp*pow(totMass-mProt-mAlph-GSResPA,2);
2607 }
2609 if(laFlag&&totMass>mLamb+mAlph+ABarr+GSResLA)
2610 {
2611 if(barf) laLim+=S*alp*pow(totMass-mLamb-mAlph-ABarr-GSResLA,2);
2612 else laLim+=S*alp*pow(totMass-mLamb-mAlph-GSResLA,2);
2613 }
2615 if(evalph&&aaFlag&&totMass>mAlph+mAlph+SAABarr+GSResAA)
2616 {
2617 if(barf) aaLim+=alp*pow(totMass-mAlph-mAlph-SAABarr-GSResAA,2)*
2618 evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7);
2619 else aaLim+=alp*pow(totMass-mAlph-mAlph-GSResAA,2)*
2620 evalph*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7);
2621 }
2623 if (aaLim&&laLim<r)
2624 {
2625 dbQPDG= AAQPDG;
2626 eMass=mAlph;
2627 fMass=mAlph;
2628 rQPDG=aaQPDG;
2629 rMass=GSResAA;
2630#ifdef debug
2631 G4cout<<
"G4QNuc::EvapBaryon: A+A, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2632#endif
2633 }
2634 else if(aaLim&&zaLim<r&&r<laLim)
2635 {
2636 dbQPDG= LAQPDG;
2637 eMass=mAlph;
2638 fMass=mLamb;
2639 rQPDG=laQPDG;
2640 rMass=GSResLA;
2641#ifdef debug
2642 G4cout<<
"G4QNuc::EvapBaryon: A+L, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2643#endif
2644 }
2645 else if(aaLim&&naLim<r&&r<zaLim)
2646 {
2647 dbQPDG= PAQPDG;
2648 eMass=mAlph;
2649 fMass=mProt;
2650 rQPDG=paQPDG;
2651 rMass=GSResPA;
2652#ifdef debug
2653 G4cout<<
"G4QNuc::EvapBaryon: A+P, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2654#endif
2655 }
2656 else if(aaLim&&llLim<r&&r<naLim)
2657 {
2658 dbQPDG= NAQPDG;
2659 eMass=mAlph;
2660 fMass=mNeut;
2661 rQPDG=naQPDG;
2662 rMass=GSResNA;
2663#ifdef debug
2664 G4cout<<
"G4QNuc::EvapBaryon: A+N, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2665#endif
2666 }
2667 else if(aaLim&&zlLim<r&&r<llLim)
2668 {
2669 dbQPDG= LLQPDG;
2670 eMass=mLamb;
2671 fMass=mLamb;
2672 rQPDG=llQPDG;
2673 rMass=GSResLL;
2674#ifdef debug
2675 G4cout<<
"G4QNuc::EvapBaryon: L+L, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2676#endif
2677 }
2678 else if(aaLim&&nlLim<r&&r<zlLim)
2679 {
2680 dbQPDG= PLQPDG;
2681 eMass=mLamb;
2682 fMass=mProt;
2683 rQPDG=plQPDG;
2684 rMass=GSResPL;
2685#ifdef debug
2686 G4cout<<
"G4QNuc::EvapBaryon: L+p, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2687#endif
2688 }
2689 else if(aaLim&&zzLim<r&&r<nlLim)
2690 {
2691 dbQPDG= NLQPDG;
2692 eMass=mLamb;
2693 fMass=mNeut;
2694 rQPDG=nlQPDG;
2695 rMass=GSResNL;
2696#ifdef debug
2697 G4cout<<
"G4QNuc::EvapBaryon: L+n, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2698#endif
2699
2700 }
2701 else if(aaLim&&nzLim<r&&r<zzLim)
2702 {
2703 dbQPDG= PPQPDG;
2704 eMass=mProt;
2705 fMass=mProt;
2706 rQPDG=ppQPDG;
2707 rMass=GSResPP;
2708#ifdef debug
2709 G4cout<<
"G4QNuc::EvapBaryon: p+p, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2710#endif
2711 }
2712 else if(aaLim&&nnLim<r&&r<nzLim)
2713 {
2714 dbQPDG= NPQPDG;
2715 eMass=mNeut;
2716 fMass=mProt;
2717 rQPDG=npQPDG;
2718 rMass=GSResNP;
2719#ifdef debug
2720 G4cout<<
"G4QNuc::EvapBaryon: n+p, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2721#endif
2722 }
2723 else if(aaLim&&r<nnLim)
2724 {
2725 dbQPDG= NNQPDG;
2726 eMass=mNeut;
2727 fMass=mNeut;
2728 rQPDG=nnQPDG;
2729 rMass=GSResNN;
2730#ifdef debug
2731 G4cout<<
"G4QNuc::EvapBaryon: n+n, e="<<eMass<<
",f="<<fMass<<
",r="<<rMass<<
G4endl;
2732#endif
2733 }
2734
2735 else if(nFlag)
2736 {
2737#ifdef debug
2738 G4cout<<
"G4QNucleus::EvaporateBaryon:Photon ### Decay in neutron ###"<<
G4endl;
2739#endif
2740 tpd=false;
2741 bQPDG=nQPDG;
2742 rQPDG=NQPDG;
2743 eMass=mNeut;
2744 rMass=GSResNn;
2745 }
2746 else if(pFlag)
2747 {
2748#ifdef debug
2749 G4cout<<
"G4QNucleus::EvaporateBaryon:Photon ### Decay in proton ###"<<
G4endl;
2750#endif
2751 tpd=false;
2752 bQPDG=pQPDG;
2753 rQPDG=PQPDG;
2754 eMass=mProt;
2755 rMass=GSResNp;
2756 }
2757 else if(aFlag)
2758 {
2759#ifdef debug
2760 G4cout<<
"G4QNucleus::EvaporateBaryon:Photon ### Decay in alpha ###"<<
G4endl;
2761#endif
2762 tpd=false;
2763 bQPDG=aQPDG;
2764 rQPDG=AQPDG;
2765 eMass=mAlph;
2766 rMass=GSResNa;
2767 }
2768 else if(lFlag)
2769 {
2770#ifdef debug
2771 G4cout<<
"G4QNucleus::EvaporateBaryon:Photon ### Decay in Lambda ###"<<
G4endl;
2772#endif
2773 tpd=false;
2774 bQPDG=lQPDG;
2775 rQPDG=LQPDG;
2776 eMass=mLamb;
2777 rMass=GSResNl;
2778 }
2779 else
2780 {
2781#ifdef debug
2782 G4cout<<
"G4QNuc::EvaporBaryon: Photon ### 3-Big ###,dM="<<totMass-GSMass<<
G4endl;
2783#endif
2784 tpd=false;
2785 bQPDG=gQPDG;
2787 eMass=0.;
2788 rMass=GSMass;
2789 }
2790 if(tpd)
2791 {
2796 {
2797#ifdef debug
2798 G4cout<<
"*G4QNucl::EvaporateBaryon:Decay M="<<totMass<<
",b="<<eMass<<bQPDG
2799 <<
",f="<<fMass<<fQPDG<<
",r="<<rMass<<rQPDG<<
G4endl;
2800#endif
2801 return false;
2802 }
2803 h1mom+=h3mom;
2804 bQPDG=dbQPDG;
2805#ifdef debug
2808 G4cout<<
"G4QNuc::EvapBar:s="<<sma<<
",e="<<eMass<<
",f="<<fMass<<
",d="<<dma<<
",rM="
2810#endif
2811 }
2812 else
2813 {
2814 if(rMass<1600.)
2815 {
2816 if (rQPDG==pQPDG)rMass=mProt;
2817 else if(rQPDG==nQPDG)rMass=mNeut;
2818 else if(rQPDG==lQPDG)rMass=mLamb;
2819 }
2823 {
2824#ifdef debug
2825 G4cout<<
"***G4QNucleus::EvaporateBaryon: Emergency Decay M="<<totMass<<
",b="
2827#endif
2828 return false;
2829 }
2834#ifdef debug
2835 G4cout<<
"G4QNuc::EvapBaryon: Emergency decay is done for b="<<bQPDG<<h1->
GetQC()
2836 <<h1mom<<h1mom.
m()<<
", r="<<rQPDG<<h2->
GetQC()<<h2mom<<h2mom.
m()<<
G4endl;
2837#endif
2838 return true;
2839 }
2840 }
2841 else
2842 {
2843#ifdef debug
2844 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in Baryon+Resid"<<
G4endl;
2845#endif
2846
2848 if(nFlag&&mNeut+GSResNn<totMass)
2849 {
2850 G4double ken=totMass-mNeut-GSResNn;
2852 }
2854 if(pFlag&&mProt+PBarr+GSResNp<totMass)
2855 {
2856 G4double ken=totMass-mProt-GSResNp;
2857 if(barf) ken-=PBarr;
2859 }
2861 if(lFlag&&mLamb+GSResNl<totMass)
2862 {
2863 G4double ken=totMass-mLamb-GSResNl;
2865 }
2867 if(aFlag&&mAlph+GSResNa+ABarr<totMass)
2868 {
2869 G4double ken=totMass-mAlph-GSResNa;
2870 if(barf) ken-=ABarr;
2871 aLim+=
CoulBarPenProb(ABarr,ken,2,4)*sqrt(ken)*evalph*Z*(Z-1)*N*(N-1)
2872 *6/a1/(a-2)/(a-3);
2873#ifdef debug
2874 G4cout<<
"G4QNucleus::EvaporateBaryon:al="<<evalph<<
",k="<<ken<<
",P="
2876#endif
2877 }
2879#ifdef debug
2880 G4cout<<
"G4QN::EB:DecIn2#2#r="<<r<<
",nL="<<nLim<<
",zL="<<zLim<<
",sL="<<sLim<<
",aL="
2881 <<aLim<<
",nF="<<nFlag<<
",pF="<<pFlag<<
",lF="<<lFlag<<
",aF="<<aFlag<<
G4endl;
2882#endif
2883 if (aFlag&&r>sLim)
2884 {
2885 bQPDG=aQPDG;
2886 eMass=mAlph;
2887 rQPDG=AQPDG;
2888 rMass=GSResNa;
2889#ifdef debug
2890 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in A + rA="<<GSResNa+mAlph<<
G4endl;
2891#endif
2892 }
2893 else if(lFlag&&r>zLim&&r<sLim)
2894 {
2895 bQPDG=lQPDG;
2896 eMass=mLamb;
2897 rQPDG=LQPDG;
2898 rMass=GSResNl;
2899#ifdef debug
2900 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in L + rA="<<GSResNl+mLamb<<
G4endl;
2901#endif
2902 }
2903 else if(pFlag&&r>nLim&&r<zLim)
2904 {
2905 bQPDG=pQPDG;
2906 eMass=mProt;
2907 rQPDG=PQPDG;
2908 rMass=GSResNp;
2909#ifdef debug
2910 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in P + rA="<<GSResNp+mProt<<
G4endl;
2911#endif
2912 }
2913 else if(nFlag&&r<nLim)
2914 {
2915 bQPDG=nQPDG;
2916 eMass=mNeut;
2917 rQPDG=NQPDG;
2918 rMass=GSResNn;
2919#ifdef debug
2920 G4cout<<
"G4QNucleus::EvaporateBaryon: Decay in N + rA="<<GSResNn+mNeut<<
G4endl;
2921#endif
2922 }
2923 else if(mProt+GSResNp<totMass)
2924 {
2925#ifdef debug
2926 G4cout<<
"G4QNucl::EvapBar: Emergency Proton, dM="<<totMass-GSResNp-mProt<<
G4endl;
2927#endif
2928 bQPDG=pQPDG;
2929 rQPDG=PQPDG;
2930 eMass=mProt;
2931 rMass=GSResNp;
2932 }
2933 else if(mAlph+GSResNa<totMass)
2934 {
2935#ifdef debug
2936 G4cout<<
"G4QNucl::EvapBar: Emergency Alpha, dM="<<totMass-GSResNa-mAlph<<
G4endl;
2937#endif
2938 bQPDG=aQPDG;
2939 rQPDG=AQPDG;
2940 eMass=mAlph;
2941 rMass=GSResNa;
2942 }
2943 else
2944 {
2945#ifdef debug
2946 G4cout<<
"G4QNuc::EvapBaryon: Photon ### 4-Big ###, dM="<<totMass-GSMass<<
G4endl;
2947#endif
2948 bQPDG=gQPDG;
2950 eMass=0.;
2951 rMass=GSMass;
2952 }
2953 if(rMass<1600.)
2954 {
2955 if (rQPDG==pQPDG)rMass=mProt;
2956 else if(rQPDG==nQPDG)rMass=mNeut;
2957 else if(rQPDG==lQPDG)rMass=mLamb;
2958 }
2961 }
2962 }
2964 {
2965#ifdef debug
2966 G4cout<<
"*G4QNucleus::EvaporateBaryon: Decay M="<<totMass<<
",b="<<bQPDG<<h1->
GetQC()
2967 <<eMass<<
",r="<<rQPDG<<h2->
GetQC()<<rMass<<
G4endl;
2968#endif
2969 return false;
2970 }
2971#ifdef debug
2972 G4cout<<
"G4QN::EvaB: **RESULT** b="<<bQPDG<<h1mom<<
", r="<<rQPDG<<h2mom<<
G4endl;
2973#endif
2978#ifdef debug
2979 G4cout<<
"G4QNucleus::EvaporateBaryon: Evaporation is done for b="<<bQPDG<<h1->
GetQC()
2980 <<h1mom<<h1mom.
m()<<
", r="<<rQPDG<<h2->
GetQC()<<h2mom<<h2mom.
m()<<
G4endl;
2981#endif
2982 return true;
2983 }
2984 else if(a==1)
2985 {
2986#ifdef debug
2987 G4cerr<<
"***G4QNucleus::EvaporateBaryon: ??? A=1"<<
G4endl;
2988#endif
2991 if (Z>0)
2992 {
2995 }
2996 else if(N>0)
2997 {
3000 }
3001 else if(S>0)
3002 {
3005 }
3006 else return false;
3007 return true;
3008 }
3009 if(a<-2)
G4cerr<<
"***G4QNucleus::EvaporateBaryon: A="<<a<<
G4endl;
3010 return false;
3011}
G4double CoulBarPenProb(const G4double &CB, const G4double &E, const G4int &C, const G4int &B)