- Timestamp:
- Jun 18, 2010, 11:42:07 AM (14 years ago)
- Location:
- trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc
r1228 r1315 28 28 // 29 29 // 30 // $Id: G4QEnvironment.cc,v 1.16 0 2009/12/03 18:09:07mkossov Exp $31 // GEANT4 tag $Name: geant4-09-0 3$30 // $Id: G4QEnvironment.cc,v 1.166 2010/06/10 16:09:49 mkossov Exp $ 31 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 32 32 // 33 33 // ---------------- G4QEnvironment ---------------- … … 103 103 G4cout<<"*G4QE::Const:iH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; 104 104 #endif 105 if(curQH->GetPDGCode() == 10) // Chipolino is found in the input -> Decay 106 { 107 G4QContent chQC=curQH->GetQC(); // Quark content of the Hadron-Chipolino 108 G4QChipolino QCh(chQC); // Define a Chipolino instance for the Hadron 109 G4LorentzVector ch4M=curQH->Get4Momentum(); // 4Mom of the Hadron-Chipolino 110 G4QPDGCode h1QPDG=QCh.GetQPDG1(); // QPDG of the first hadron 111 G4double h1M =h1QPDG.GetMass();// Mass of the first hadron 112 G4QPDGCode h2QPDG=QCh.GetQPDG2(); // QPDG of the second hadron 113 G4double h2M =h2QPDG.GetMass();// Mass of the second hadron 114 G4double chM2 =ch4M.m2(); // Squared Mass of the Chipolino 115 if( sqr(h1M+h2M) < chM2 ) // Decay is possible 116 { 117 G4LorentzVector h14M(0.,0.,0.,h1M); 118 G4LorentzVector h24M(0.,0.,0.,h2M); 119 if(!G4QHadron(ch4M).DecayIn2(h14M,h24M)) 120 { 121 G4cerr<<"***G4QE::Constr: CM="<<std::sqrt(chM2)<<" -> h1="<<h1QPDG<<"("<<h1M 122 <<") + h2="<<h1QPDG<<"("<<h2M<<") = "<<h1M+h2M<<" **Failed**"<<G4endl; 123 throw G4QException("**G4QEnvironment::Constr:QChip DecIn2 error"); 124 } 125 delete curQH; // Kill the primary Chipolino 126 G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); 127 theQHadrons.push_back(h1H); // (delete equivalent) 128 curQH = new G4QHadron(h1H); // ... just to remember independently 129 theProjectiles.push_back(curQH); // Remember it for the error message 130 131 #ifdef debug 132 G4cout<<"G4QE::Constr: QChipolino -> H1="<<h1QPDG<<h14M<<G4endl; 133 #endif 134 curQH = new G4QHadron(h2QPDG.GetPDGCode(),h24M); 135 theQHadrons.push_back(curQH); // (delete equivalent) 136 #ifdef debug 137 G4cout<<"G4QE::Constr: QChipolino -> H2="<<h2QPDG<<h24M<<G4endl; 138 #endif 139 } 140 else 141 { 142 G4cerr<<"***G4QE::Const:iH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum() 143 <<", chipoM="<<std::sqrt(chM2)<<" < m1="<<h1M<<"("<<h1QPDG<<") + m2=" 144 <<h2M<<"("<<h2QPDG<<") = "<<h1M+h2M<<G4endl; 145 throw G4QException("G4QEnvironment::HadronizeQEnv: LowMassChipolino in Input"); 146 } 147 } 105 148 theQHadrons.push_back(curQH); // (delete equivalent) 106 curQH = new G4QHadron( projHadrons[ih]); // ... to remember107 theProjectiles.push_back(curQH); 149 curQH = new G4QHadron(curQH); // ... just to remember independently 150 theProjectiles.push_back(curQH); // Remenber it for the error message 108 151 } 109 152 } … … 116 159 theQHadrons.push_back(curQH); // (delete equivalent) 117 160 } 118 if (nHadrons<0) G4cout<<"** G4QE::Const:NH="<<nHadrons<<" < 0 !"<<G4endl;161 if (nHadrons<0) G4cout<<"***Warning****G4QE::Const:NH="<<nHadrons<<" < 0 !"<<G4endl; 119 162 return; 120 163 } … … 1390 1433 static const G4QPDGCode s0QPDG(3122); 1391 1434 static const G4double mPi0 = G4QPDGCode(111).GetMass(); 1435 //static const G4double dPi0 = mPi0+mPi0; 1436 static const G4double fPi0 = 4*mPi0; 1392 1437 static const G4double mPi = G4QPDGCode(211).GetMass(); 1393 1438 static const G4double mK = G4QPDGCode(321).GetMass(); … … 1722 1767 totInC += pQ->GetQC().GetCharge(); 1723 1768 } // End of TotInitial4Momentum summation LOOP over Quasmons 1724 G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries1769 G4int nsHadr = theQHadrons.size(); // Update the value of #of OUTPUT entries 1725 1770 if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons 1726 1771 { … … 1734 1779 } 1735 1780 #endif 1736 //G4int c3Max = 27; 1781 // @@ Experimental calculations 1782 G4QContent totInQC=theEnvironment.GetQCZNS(); 1783 G4LorentzVector totIn4M=theEnvironment.Get4Momentum(); 1784 for (G4int is=0; is<nQuasmons; is++) // Sum 4mom's of Quasmons for comparison 1785 { 1786 G4Quasmon* pQ = theQuasmons[is]; 1787 totIn4M += pQ->Get4Momentum(); 1788 totInQC += pQ->GetQC(); 1789 } // End of TotInitial4Momentum/QC summation LOOP over Quasmons 1790 G4double totMass=totIn4M.m(); 1791 G4QNucleus totN(totInQC); 1792 G4double totM=totN.GetMZNS(); 1793 G4double excE = totMass-totM; 1794 // @@ End of experimental calculations 1795 G4int envA=theEnvironment.GetA(); 1796 //G4int c3Max = 27; // Big number (and any #0) slowes dow a lot 1737 1797 //G4int c3Max = 9; // Max#of "no hadrons" steps (reduced below?) 1738 //G4int c3Max = 3; 1798 G4int c3Max = 3; 1799 if(excE > fPi0) c3Max=(G4int)(excE/mPi0); // Try more for big excess 1739 1800 //G4int c3Max = 1; 1740 G4int c3Max = 0; 1801 //if(excE > dPi0) c3Max=(G4int)(excE/mPi0); // Try more for big excess 1802 //G4int c3Max = 0; 1803 //if(excE > mPi0) c3Max=(G4int)(excE/mPi0); // Try more for big excess 1804 //G4int c3Max = 0; // It closes the force decay of Quasmon at all! 1805 // 1741 1806 //G4int premC = 27; 1742 1807 //G4int premC = 3; 1743 1808 G4int premC = 1; 1744 G4int envA=theEnvironment.GetA();1745 1809 //if(envA>1&&envA<13) premC = 24/envA; 1746 //if(envA>1&&envA<19) premC = 36/envA;1747 //if(envA>1&&envA< 25) premC = 48/envA;1748 //if(envA>1&&envA< 41) premC = 80/envA;1810 if(envA>1&&envA<19) premC = 36/envA; 1811 //if(envA>1&&envA<31) premC = 60/envA; 1812 //if(envA>1&&envA<61) premC = 120/envA; 1749 1813 G4int sumstat= 2; // Sum of statuses of all Quasmons 1750 1814 G4bool force = false; // Prototype of the Force Major Flag 1751 1815 G4int cbR =0; // Counter of the "Stoped by Coulomb Barrier" 1752 1816 // 1753 G4int cbRM =0; //** MaxCounter of "StopedByCoulombBarrier" **1817 //G4int cbRM =0; //** MaxCounter of "StopedByCoulombBarrier" ** 1754 1818 //G4int cbRM =1; // MaxCounter of the "StopedByCoulombBarrier" 1755 1819 //G4int cbRM =3; // MaxCounter of the "StopedByCoulombBarrier" 1756 1820 //G4int cbRM =9; // MaxCounter of the "Stoped byCoulombBarrier" 1821 G4int cbRM = c3Max; // MaxCounter of the "StopedByCoulombBarrier" 1757 1822 G4int totC = 0; // Counter to break the "infinit" loop 1758 1823 //G4int totCM = 227; // Limit for the "infinit" loop counter 1759 1824 G4int totCM = envA; // Limit for the "infinit" loop counter 1760 1825 //G4int totCM = 27; // Limit for this counter 1761 G4int nCnMax = 1; // MaxCounterOfHadrFolts for shortCutSolutions1826 //G4int nCnMax = 1; // MaxCounterOfHadrFolts for shortCutSolutions 1762 1827 //G4int nCnMax = 3; // MaxCounterOfHadrFolts for shortCutSolutions 1763 1828 //G4int nCnMax = 9; // MaxCounterOfHadrFolts for shortCutSolutions 1829 G4int nCnMax = c3Max; // MaxCounterOfHadrFolts for shortCutSolutions 1764 1830 G4bool first=true; // Flag of the first interaction (only NucMedia) 1765 1831 G4int cAN=0; // Counter of the nucleon absorptions … … 2389 2455 { // ^ 2390 2456 G4cerr<<"***G4QE::HQE:tM="<<ttM<<"->h1="<<h1QPDG<<"("<<h1M // ^ 2391 <<")+h2="<<h1QPDG<<"("<<h2M<<" ="<<h1M+h2M<<G4endl;// ^2457 <<")+h2="<<h1QPDG<<"("<<h2M<<")="<<h1M+h2M<<G4endl; // ^ 2392 2458 throw G4QException("**G4QE::HadrQEnv:QChip (1) DecIn2 error");//^ 2393 2459 } // ^ … … 4053 4119 4054 4120 //Evaporate Residual Nucleus 4055 void G4QEnvironment::EvaporateResidual(G4QHadron* qH )4056 {// ================================================ 4121 void G4QEnvironment::EvaporateResidual(G4QHadron* qH, G4bool fCGS) 4122 {// ============================================================== 4057 4123 static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); 4058 4124 static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0); … … 4102 4168 if(!thePDG) thePDG = theQC.GetSPDGCode(); // If there is no PDG code, get it from QC 4103 4169 if(thePDG==10&&theQC.GetBaryonNumber()>0) thePDG=theQC.GetZNSPDGCode(); 4104 if(theS>0) thePDG-=theS*999999; // @@ May hide hypernuclear problems (G4) 4170 if(theS>0) thePDG-=theS*999999; // @@ May hide hypernuclear problems (G4) ! @@ 4105 4171 G4double totGSM = G4QNucleus(thePDG).GetGSMass();// TheGroundStMass of theTotalResNucleus 4106 4172 if(theBN==2) … … 4136 4202 #endif 4137 4203 G4Quasmon* quasH = new G4Quasmon(theQC,q4M); 4138 if( !CheckGroundState(quasH,true))4204 if(fCGS && !CheckGroundState(quasH, true) ) 4139 4205 { 4140 4206 #ifdef debug … … 4300 4366 if(ExCount>=MaxExCnt) 4301 4367 { 4302 G4cerr<<"*G4QEnv::Fragment:Exception.Target="<<theTargetPDG<<". Projectiles:"<<G4endl;4303 4368 G4int nProj=theProjectiles.size(); 4369 G4cerr<<"*G4QEnv::Fragment:Exception.Target="<<theTargetPDG<<". #Proj="<<nProj<<G4endl; 4304 4370 if(nProj) for(G4int ipr=0; ipr<nProj; ipr++) 4305 4371 { … … 4308 4374 } 4309 4375 throw G4QException("G4QEnvironment::Fragment:This reaction caused the CHIPSException"); 4310 //G4Exception("G4QEnvironment::Fragment","027",FatalException,"GeneralCHIPSException");4311 4376 } 4312 4377 // Put the postponed hadrons in the begining of theFragments and clean them up … … 4369 4434 static const G4double mXiZ = G4QPDGCode(3322).GetMass(); 4370 4435 static const G4double mXiM = G4QPDGCode(3312).GetMass(); 4436 static const G4double mOmM = G4QPDGCode(3334).GetMass(); 4371 4437 #ifdef debug 4372 4438 static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); … … 7006 7072 G4int nSM=0; // A#0f unavoidable Sigma- 7007 7073 G4int nSP=0; // A#0f unavoidable Sigma+ 7008 G4int nXZ=0; // A#0f unavoidable Xi -7009 G4int nXM=0; // A#0f unavoidable Xi 07010 //G4int nOM=0; // A#0f unavoidable Omega-7074 G4int nXZ=0; // A#0f unavoidable Xi0 7075 G4int nXM=0; // A#0f unavoidable Xi- 7076 G4int nOM=0; // A#0f unavoidable Omega- 7011 7077 // @@ Now it does not include more complicated clusters as Omega-,Xi- (Improve) 7012 7078 if(nC < 0) // Negative hypernucleus … … 7034 7100 nL-=nX-nC; 7035 7101 } 7102 // @@ Don't close this warning as it costs days to find out this growing point! 7036 7103 else G4cout<<"-Warning-G4QEn::FSI:*Improve*,-nC<=nL,nL>nB, PDG="<<hPDG<<G4endl; 7037 7104 } … … 7068 7135 } 7069 7136 } 7070 #ifdef pdebug 7137 else if(nL > nB && ((nL-nB)/2)*2 == nL-nB && nC+nL <= nB+nB)// Omega- can be used 7138 { 7139 nOM=(nL-nB)/2; // This is how many Omega- can be made 7140 nL=nB+nB-nL-nC; // a#of Lambdas should be 0 ! 7141 nSP=nOM-nC; 7142 } 7143 // @@ Do not close this warning as it costs days to find out this growing point ! 7071 7144 else G4cout<<"-Warning-G4QEn::FSI:*Improve*,nC>nB-nL,nC<=nB, PDG="<<hPDG<<G4endl; 7072 #endif7073 7145 } 7074 7146 else … … 7081 7153 G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-momentum of the hypernucleus 7082 7154 G4double reM=r4M.m(); // Real mass of the hypernucleus 7083 // Subtract Lamb/Sig/Xi from the Nucleus and decay7155 // Subtract Lamb/Sig/Xi/Omega from the Nucleus and decay 7084 7156 G4int SS=nL+nSP+nSM+nXZ+nXM; 7085 if(SS<nB ) // Should not be Xi'sin the nucleus7157 if(SS<nB && !nOM) // Should not be Xi's or Omeg in the nucleus 7086 7158 { 7087 7159 G4int rlPDG = hPDG-nL*1000000-nSP*1000999-nSM*999001; … … 7091 7163 G4cout<<"G4QEnvironment::FSI:*G4* nS+="<<nSP<<", nS-="<<nSM<<", nL="<<nL<<G4endl; 7092 7164 #endif 7093 if(nSP ||nSM)7165 if(nSP || nSM) 7094 7166 { 7095 7167 if(nL) … … 7275 7347 else // If this Error shows up (lowProbable appearance) => now it is left as is 7276 7348 { 7277 G4 double d=rlM+MLa-reM;7278 G4cerr<<"G4QE::F:R="<<rlM<<",S+="<<nSP<<",S-="<<nSM<<",L="<<nL<<",d="<<d<<G4endl;7279 d=rnM+mPi0-reM;7280 G4cerr<<"-W-G4QE::FSI:HypN="<<hPDG<<", M="<<reM<<"<"<<rnM+mPi0<<",d="<<d<<G4endl;7349 G4cout<<"-Warning-G4QEnv::F:R="<<rlM<<",S+="<<nSP<<",S-="<<nSM<<",L="<<nL<<",d1=" 7350 <<rlM+MLa-reM<<G4endl; 7351 G4cout<<"-Warning-G4QEnv::FSI:HyperN="<<hPDG<<", M="<<reM<<"<"<<rnM+mPi0<<", d2=" 7352 <<rnM+mPi0-reM<<G4endl; 7281 7353 //throw G4QException("G4QEnvironment::FSInteract: Hypernuclear conversion"); 7282 7354 } 7283 7355 #endif 7284 7356 } 7285 else if(SS==nB )7357 else if(SS==nB && !nOM) // Decay with Xi, but without residual nucleus 7286 7358 { 7287 7359 #ifdef pdebug … … 7444 7516 fM*=fS; 7445 7517 sM+=sS; 7446 if(reM>fM+sM-eps) // can be split or decayed 7518 G4double mm=fM+sM; 7519 G4double MM=reM+eps; 7520 if(MM<=mm && fPDG==3122 && sPDG==3222) // Lamba,Sigma+ => Xi0,p (can be 50%) 7521 { 7522 fPDG= 2212; 7523 fM = mProt; 7524 sPDG= 3322; 7525 sM = mXiZ; 7526 mm = fM+sM; 7527 } 7528 if(MM>mm) // can be split or decayed 7447 7529 { 7448 7530 G4LorentzVector f4M(0.,0.,0.,fM); 7449 7531 G4LorentzVector s4M(0.,0.,0.,sM); 7450 7532 G4double sum=fM+sM; 7451 if(fabs(reM-sum)< eps) // splitting7533 if(fabs(reM-sum)<=eps) // splitting 7452 7534 { 7453 7535 f4M=r4M*(fM/sum); … … 7481 7563 } 7482 7564 } 7483 else G4cout<<"-Warning-G4QE::FSI:*Improve* S2, PDG="<<hPDG<<",M="<<reM<<G4endl; 7484 //else if(reM>rnM+mPi0-eps&&!nSP&&!nSM) // Lambda->N only if Sigmas are absent 7485 //{ 7486 // G4int nPi=static_cast<G4int>((reM-rnM)/mPi0); 7487 // if (nPi>nL) nPi=nL; 7488 // G4double npiM=nPi*mPi0; 7489 // G4LorentzVector n4M(0.,0.,0.,rnM); 7490 // G4LorentzVector h4M(0.,0.,0.,npiM); 7491 // G4double sum=rnM+npiM; 7492 // if(fabs(reM-sum)<eps) 7493 // { 7494 // n4M=r4M*(rnM/sum); 7495 // h4M=r4M*(npiM/sum); 7496 // } 7497 // else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) 7498 // { 7499 // G4cerr<<"**G4QE::FSI:HypN,M="<<reM<<"<A+n*Pi0="<<sum<<",d="<<sum-reM<<G4endl; 7500 // throw G4QException("***G4QEnvironment::FSInter: Hypernuclear decay error"); 7501 // } 7502 // curHadr->Set4Momentum(n4M); 7503 // curHadr->SetQPDG(G4QPDGCode(rnPDG)); // converted hypernucleus 7565 // @@ Don't close this warning as it costs days to find out this growing point! 7566 else G4cout<<"-Warning-G4QE::FSI:*Improve* S2, PDG="<<hPDG<<",M="<<reM<<",fS=" 7567 <<fS<<",sS="<<sS<<",fM="<<fM<<",sM="<<sM<<G4endl; 7568 } 7569 // @@ Do not close this warning as it costs days to find out this growing point ! 7570 else G4cout<<"-Warning-G4QE::FSI:*Improve* 3Body's necessary,PDG="<<hPDG<<G4endl; 7571 } 7572 // @@ Do not close this warning as it costs days to find out this growing point ! 7573 else G4cout<<"-Warning-G4QE::FSI:*Improve* MultyD, SP="<<SP<<",PDG="<<hPDG<<G4endl; 7574 } 7575 else if(nOM) // Decay with Omega-, but without residual nucleus 7576 { 7504 7577 #ifdef pdebug 7505 // G4cout<<"*G4QE::FSI:HN="<<r4M<<"->A="<<rnPDG<<n4M<<",n*Pi0="<<nPi<<h4M 7506 // <<G4endl; 7507 #endif 7508 // if(nPi>1) h4M=h4M/nPi; // split the 4-mom if necessary 7509 // for(G4int ihn=0; ihn<nPi; ihn++) // loop over additional pions 7510 // { 7511 // G4QHadron* thePion = new G4QHadron(111,h4M);// Make a New Hadr for the pion 7512 // theQHadrons.push_back(thePion); // (del.eq.- user is responsible for del) 7513 // //theFragments->push_back(thePion); // (delete equivalent for the pion) 7514 // } 7515 // if(rnPDG==90000002) // Additional action with curHadr change 7516 // { 7517 // G4LorentzVector newLV=n4M/2.; 7518 // curHadr->Set4Momentum(newLV); 7519 // curHadr->SetQPDG(G4QPDGCode(90000001)); 7520 // G4QHadron* secHadr = new G4QHadron(curHadr); 7521 // theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) 7522 // } 7523 // else if(rnPDG==90002000) // Additional action with curHadr change 7524 // { 7525 // G4LorentzVector newLV=n4M/2.; 7526 // curHadr->Set4Momentum(newLV); 7527 // curHadr->SetQPDG(G4QPDGCode(90001000)); 7528 // G4QHadron* secHadr = new G4QHadron(curHadr); 7529 // theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) 7530 // } 7531 // // @@ Add multybaryon decays if necessary 7532 //} 7533 //else if(reM>rnM-eps) // Decay in nonstange and gamma 7534 //{ 7535 // G4LorentzVector n4M(0.,0.,0.,rnM); 7536 // G4LorentzVector h4M(0.,0.,0.,0.); 7537 // G4double sum=rnM; 7538 // if(fabs(reM-sum)<eps) n4M=r4M; 7539 // else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) 7540 // { 7541 // G4cerr<<"**G4QE::FSI:HypN,M="<<reM<<"<A+n*Pi0="<<sum<<",d="<<sum-reM<<G4endl; 7542 // throw G4QException("***G4QEnvironment::FSInt:Hypernuclear GammaDecay error"); 7543 // } 7544 // curHadr->Set4Momentum(n4M); 7545 // curHadr->SetQPDG(G4QPDGCode(rnPDG)); // converted hypernucleus 7578 G4cout<<"G4QEnvir::FSI:Omega-,B="<<nB<<",SP="<<nSP<<",OM="<<nOM<<",L="<<nL<<G4endl; 7579 #endif 7580 G4int SP=0; 7581 if(nL) ++SP; 7582 if(nSP) ++SP; 7583 if(nOM) ++SP; 7584 if(!nL) 7585 { 7586 G4int fPDG= 3334; 7587 G4double fM = mOmM; 7588 G4int fS = nOM; 7589 G4int sPDG= 3222; 7590 G4double sM = mSigP; 7591 G4int sS = nSP; 7546 7592 #ifdef pdebug 7547 // G4cout<<"*G4QE::FSI:HyN="<<r4M<<"->A="<<rnPDG<<n4M<<",gamma="<<h4M<<G4endl; 7548 #endif 7549 // G4QHadron* theGamma = new G4QHadron(22,h4M);// Make a New Hadr for the gamma 7550 // theQHadrons.push_back(theGamma); // (del.eq.- user is responsible for del) 7551 // if(rnPDG==90000002) // Additional action with curHadr change 7552 // { 7553 // G4LorentzVector newLV=n4M/2.; 7554 // curHadr->Set4Momentum(newLV); 7555 // curHadr->SetQPDG(G4QPDGCode(90000001)); 7556 // G4QHadron* secHadr = new G4QHadron(curHadr); 7557 // theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) 7558 // } 7559 // else if(rnPDG==90002000) // Additional action with curHadr change 7560 // { 7561 // G4LorentzVector newLV=n4M/2.; 7562 // curHadr->Set4Momentum(newLV); 7563 // curHadr->SetQPDG(G4QPDGCode(90001000)); 7564 // G4QHadron* secHadr = new G4QHadron(curHadr); 7565 // theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) 7566 // } 7567 // // @@ Add multybaryon decays if necessary 7568 //} 7569 //else // If this Error shows up (lowProbable appearance) => now it is left as is 7570 //{ 7571 // G4double d=rlM+MLa-reM; 7572 //G4cerr<<"G4QE::F:R="<<rlM<<",S+="<<nSP<<",S-="<<nSM<<",L="<<nL<<",d="<<d<<G4endl; 7573 // d=rnM+mPi0-reM; 7574 // G4cerr<<"-W-G4QE::FSI:HyN="<<hPDG<<",M="<<reM<<"<"<<rnM+mPi0<<",d="<<d<<G4endl; 7575 // //throw G4QException("G4QEnvironment::FSInteract: Hypernuclear conversion"); 7576 //} 7577 } // End of decay in 2 7578 } 7579 } 7593 G4cout<<"G4QEnvironment::FSI:2HypD,fS="<<fS<<",fPDG="<<sPDG<<",fM="<<fM<<",sS=" 7594 <<sS<<",sPDG="<<sPDG<<",sM="<<sM<<",rM="<<reM<<G4endl; 7595 #endif 7596 fM*=fS; 7597 sM+=sS; 7598 if(reM>fM+sM-eps) // can be split or decayed 7599 { 7600 G4LorentzVector f4M(0.,0.,0.,fM); 7601 G4LorentzVector s4M(0.,0.,0.,sM); 7602 G4double sum=fM+sM; 7603 if(fabs(reM-sum)<eps) // splitting 7604 { 7605 f4M=r4M*(fM/sum); 7606 s4M=r4M*(sM/sum); 7607 } 7608 else if(reM<sum || !G4QHadron(r4M).DecayIn2(f4M,s4M)) 7609 { 7610 G4cerr<<"***G4QE::FSI:Hyp,M="<<reM<<"<OM+SP="<<sum<<",d="<<sum-reM<<G4endl; 7611 throw G4QException("***G4QEnvironment::FSInter: HypernucOnlyStran3 error"); 7612 } 7580 7613 #ifdef pdebug 7614 G4cout<<"G4QEnv::FSI:OHNuc="<<r4M<<hPDG<<"->First="<<fS<<f4M<<fPDG<<",Second=" 7615 <<sS<<s4M<<sPDG<<G4endl; 7616 #endif 7617 if(fS>1) 7618 { 7619 f4M/=fS; // split the Hyperons 4-mom if necessary 7620 for(G4int il=1; il<fS; il++) // loop over excessive Hyperons 7621 { 7622 G4QHadron* theHyp = new G4QHadron(fPDG,f4M);// Make NewHadr for theHyper 7623 theQHadrons.push_back(theHyp); // (del.eq.- user is respons for del) 7624 } 7625 } 7626 curHadr->Set4Momentum(f4M); 7627 curHadr->SetQPDG(G4QPDGCode(fPDG)); // converted hypernucleus 7628 if(sS>1) s4M/=sS; // split the Hyperon 4-mom if necessary 7629 for(G4int il=0; il<sS; il++) // loop over excessive 7630 { 7631 G4QHadron* theHyp = new G4QHadron(sPDG,s4M);// Make NewHadr for theHyperon 7632 theQHadrons.push_back(theHyp); // (del.eq.- user is respons for del) 7633 } 7634 } 7635 // @@ Don't close this warning as it costs days to find out this growing point! 7636 else G4cout<<"-Warning-G4QE::FSI:*Improve* OMSP, PDG="<<hPDG<<",M="<<reM<<",nSP=" 7637 <<nSP<<",nOM="<<nOM<<",mOM="<<fM<<",mSP="<<sM<<G4endl; 7638 } 7639 // @@ Do not close this warning as it costs days to find out this growing point ! 7640 else G4cout<<"-Warning-G4QE::FSI:*Improve* nLamb="<<nL<<" # 0, PDG="<<hPDG<<G4endl; 7641 } 7642 // @@ Do not close this warning as it costs days to find out this growing point ! 7581 7643 else G4cout<<"-Warning-G4QE::FSI:*Improve*,S="<<SS<<">B="<<nB<<",PDG="<<hPDG<<G4endl; 7582 #endif7583 7644 } 7584 //unsigned nHd=theQHadrons.size()-1;7585 //if(hd==nHd && !fOK)7586 //{7587 // G4cout<<"---Warning---G4QE::FSI: The Last #"<<hd<<" hadron must be filled"<<G4endl;7588 // fOK=true;7589 // curHadr = new G4QHadron(theQHadrons[hd]);7590 //}7591 //if(fOK) theFragments->push_back(curHadr); //(del eq. - user is responsible for del)7592 //else hd--;7593 7645 if(!fOK) hd--; 7594 7646 } // … … 8605 8657 G4cout<<"G4QE::CGS: Fill Quasm "<<valQ<<quas4M<<" in any form"<<G4endl; 8606 8658 #endif 8607 EvaporateResidual(quasH ); // Try to evaporate residual(del.eq.)8659 EvaporateResidual(quasH, false); // Try to evaporate residual quasmon (del.eq.) 8608 8660 #ifdef debug 8609 8661 G4cout<<"G4QE::CGS: Fill envir "<<theEQC<<enva4M<<" in any form"<<G4endl; … … 8611 8663 // @@ Substitute by EvaporateResidual (if it is not used in the evaporateResid) 8612 8664 envaH->Set4Momentum(enva4M); 8613 EvaporateResidual(envaH); // Try to evaporate residual (del.eq.)8665 EvaporateResidual(envaH); // Try to evaporate residual environment(del.eq.) 8614 8666 // Kill environment as it is already included in the decay 8615 8667 theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); … … 8638 8690 G4cout<<"G4QE::CGS: fill newQH "<<valQ<<quas4M<<quas4M.m()<<" inAnyForm"<<G4endl; 8639 8691 #endif 8640 EvaporateResidual(quasH ); // Try to evaporate residual(del.eq.)8692 EvaporateResidual(quasH, false); // Try to evaporate residual quasmon (del.eq.) 8641 8693 } 8642 8694 else … … 8689 8741 G4cout<<"G4QE::CGS: Fill nucleus "<<reTQC<<nuc4M<<" in any form"<<G4endl; 8690 8742 #endif 8691 EvaporateResidual(nucH ); // Try to evaporate residual(del.eq.)8743 EvaporateResidual(nucH, false); // Try to evaporate residual nucleus(del.eq.) 8692 8744 } 8693 8745 } … … 8749 8801 G4cout<<"G4QE::CGS: Fill Resid "<<reTQC<<quas4M<<" in any form"<<G4endl; 8750 8802 #endif 8751 EvaporateResidual(rqH ); // Try to evaporate residual(del.eq.)8803 EvaporateResidual(rqH, false);//Try to evaporate residual quasmon (del.eq.) 8752 8804 if(envPDG!=90000000) theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), 8753 8805 G4LorentzVector(0.,0.,0.,0.)); … … 8971 9023 <<ipiQC<<ipi4M<<G4endl; 8972 9024 #endif 8973 EvaporateResidual(rqH ); // Try to evaporate residual (del.eq.)9025 EvaporateResidual(rqH, false); // Try to evaporate residual (del.eq.) 8974 9026 if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) 8975 9027 ,G4LorentzVector(0.,0.,0.,0.)); … … 9059 9111 G4cout<<"G4QE::CGS:FilFr "<<nnQPDG<<quas4M<<" inAnyForm"<<G4endl; 9060 9112 #endif 9061 EvaporateResidual(rqH ); // Try to evaporate residual(del.eq.)9113 EvaporateResidual(rqH, false); // Try to evaporate resQ (del.eq.) 9062 9114 if(envPDG!=90000000) theEnvironment= 9063 9115 G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); … … 9117 9169 G4cout<<"G4QE::CGS:FilTC "<<tcQPDG<<tc4M<<" inAnyForm"<<G4endl; 9118 9170 #endif 9119 EvaporateResidual(tcH ); // Try to evaporate(d.e.)9171 EvaporateResidual(tcH, false);// Try to evaporate hadron (d.e.) 9120 9172 } 9121 9173 } … … 9158 9210 G4cout<<"G4QE::CGS:Fill GSRes "<<reTQC<<quas4M<<" inAnyForm"<<G4endl; 9159 9211 #endif 9160 EvaporateResidual(rqH ); // Try to evaporate(d.e.)9212 EvaporateResidual(rqH, false); // Try to evaporate residHadron (d.e.) 9161 9213 if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) 9162 9214 ,G4LorentzVector(0.,0.,0.,0.)); -
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QIsotope.cc
r1228 r1315 25 25 // 26 26 // 27 // $Id: G4QIsotope.cc,v 1.1 3 2009/08/28 14:49:10mkossov Exp $28 // GEANT4 tag $Name: geant4-09-0 3$27 // $Id: G4QIsotope.cc,v 1.16 2010/05/28 15:03:46 mkossov Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ---------------- G4QIsotope class ---------------- … … 86 86 #endif 87 87 // If an error is found in this initialization, please, correct the simple tree below 88 vector<pair<G4int,G4double> >*a1=new vector<pair<G4int,G4double> >; 88 vector<pair<G4int,G4double> >*a1=new vector<pair<G4int,G4double> >; // 1-H 89 89 a1->push_back(make_pair(0,.99985)); 90 90 a1->push_back(make_pair(1,1.)); 91 91 natEl.push_back(a1); 92 vector<pair<G4int,G4double> >*a2=new vector<pair<G4int,G4double> >; 92 vector<pair<G4int,G4double> >*a2=new vector<pair<G4int,G4double> >; // 2-He 93 93 a2->push_back(make_pair(2,.999999863)); 94 94 a2->push_back(make_pair(1,1.)); 95 95 natEl.push_back(a2); 96 vector<pair<G4int,G4double> >*a3=new vector<pair<G4int,G4double> >; 96 vector<pair<G4int,G4double> >*a3=new vector<pair<G4int,G4double> >; // 3-Li 97 97 a3->push_back(make_pair(4,.925)); 98 98 a3->push_back(make_pair(3,1.)); 99 99 natEl.push_back(a3); 100 vector<pair<G4int,G4double> >*a4=new vector<pair<G4int,G4double> >; 100 vector<pair<G4int,G4double> >*a4=new vector<pair<G4int,G4double> >; // 4-Be 101 101 a4->push_back(make_pair(5,1.)); 102 102 natEl.push_back(a4); 103 vector<pair<G4int,G4double> >*a5=new vector<pair<G4int,G4double> >; 103 vector<pair<G4int,G4double> >*a5=new vector<pair<G4int,G4double> >; // 5-B 104 104 a5->push_back(make_pair(6,.801)); 105 105 a5->push_back(make_pair(5,1.)); 106 106 natEl.push_back(a5); 107 vector<pair<G4int,G4double> >*a6=new vector<pair<G4int,G4double> >; 107 vector<pair<G4int,G4double> >*a6=new vector<pair<G4int,G4double> >; // 6-C 108 108 a6->push_back(make_pair(6,.989)); 109 109 a6->push_back(make_pair(7,1.)); 110 110 natEl.push_back(a6); 111 vector<pair<G4int,G4double> >*a7=new vector<pair<G4int,G4double> >; 111 vector<pair<G4int,G4double> >*a7=new vector<pair<G4int,G4double> >; // 7-N 112 112 a7->push_back(make_pair(7,.9963)); 113 113 a7->push_back(make_pair(8,1.)); 114 114 natEl.push_back(a7); 115 vector<pair<G4int,G4double> >*a8=new vector<pair<G4int,G4double> >; 115 vector<pair<G4int,G4double> >*a8=new vector<pair<G4int,G4double> >; // 8-O 116 116 a8->push_back(make_pair(8,.9976)); 117 117 a8->push_back(make_pair(10,.9996)); 118 118 a8->push_back(make_pair(9,1.)); 119 119 natEl.push_back(a8); 120 vector<pair<G4int,G4double> >*a9=new vector<pair<G4int,G4double> >; 120 vector<pair<G4int,G4double> >*a9=new vector<pair<G4int,G4double> >; // 9-F 121 121 a9->push_back(make_pair(10,1.)); 122 122 natEl.push_back(a9); 123 vector<pair<G4int,G4double> >*b0=new vector<pair<G4int,G4double> >; 123 vector<pair<G4int,G4double> >*b0=new vector<pair<G4int,G4double> >; // 10-Ne 124 124 b0->push_back(make_pair(10,.9948)); 125 125 b0->push_back(make_pair(11,.9975)); 126 126 b0->push_back(make_pair(12,1.)); 127 127 natEl.push_back(b0); 128 vector<pair<G4int,G4double> >*b1=new vector<pair<G4int,G4double> >; 128 vector<pair<G4int,G4double> >*b1=new vector<pair<G4int,G4double> >; // 11-Na 129 129 b1->push_back(make_pair(12,1.)); 130 130 natEl.push_back(b1); 131 vector<pair<G4int,G4double> >*b2=new vector<pair<G4int,G4double> >; 131 vector<pair<G4int,G4double> >*b2=new vector<pair<G4int,G4double> >; // 12-Mg 132 132 b2->push_back(make_pair(12,.7899)); 133 133 b2->push_back(make_pair(13,.8899)); 134 134 b2->push_back(make_pair(14,1.)); 135 135 natEl.push_back(b2); 136 vector<pair<G4int,G4double> >*b3=new vector<pair<G4int,G4double> >; 136 vector<pair<G4int,G4double> >*b3=new vector<pair<G4int,G4double> >; // 13-Al 137 137 b3->push_back(make_pair(14,1.)); 138 138 natEl.push_back(b3); 139 vector<pair<G4int,G4double> >*b4=new vector<pair<G4int,G4double> >; 139 vector<pair<G4int,G4double> >*b4=new vector<pair<G4int,G4double> >; // 14-Si 140 140 b4->push_back(make_pair(14,.9223)); 141 141 b4->push_back(make_pair(15,.969)); 142 142 b4->push_back(make_pair(16,1.)); 143 143 natEl.push_back(b4); 144 vector<pair<G4int,G4double> >*b5=new vector<pair<G4int,G4double> >; 144 vector<pair<G4int,G4double> >*b5=new vector<pair<G4int,G4double> >; // 15-P 145 145 b5->push_back(make_pair(16,1.)); 146 146 natEl.push_back(b5); 147 vector<pair<G4int,G4double> >*b6=new vector<pair<G4int,G4double> >; 147 vector<pair<G4int,G4double> >*b6=new vector<pair<G4int,G4double> >; // 16-S 148 148 b6->push_back(make_pair(16,.9502)); 149 149 b6->push_back(make_pair(18,.9923)); … … 151 151 b6->push_back(make_pair(20,1.)); 152 152 natEl.push_back(b6); 153 vector<pair<G4int,G4double> >*b7=new vector<pair<G4int,G4double> >; 153 vector<pair<G4int,G4double> >*b7=new vector<pair<G4int,G4double> >; // 17-Cl 154 154 b7->push_back(make_pair(18,.7577)); 155 155 b7->push_back(make_pair(20,1.)); 156 156 natEl.push_back(b7); 157 vector<pair<G4int,G4double> >*b8=new vector<pair<G4int,G4double> >; 157 vector<pair<G4int,G4double> >*b8=new vector<pair<G4int,G4double> >; // 18-Ar 158 158 b8->push_back(make_pair(22,.996)); 159 159 b8->push_back(make_pair(18,.99937)); 160 160 b8->push_back(make_pair(20,1.)); 161 161 natEl.push_back(b8); 162 vector<pair<G4int,G4double> >*b9=new vector<pair<G4int,G4double> >; 162 vector<pair<G4int,G4double> >*b9=new vector<pair<G4int,G4double> >; // 19-K 163 163 b9->push_back(make_pair(20,.932581)); 164 164 b9->push_back(make_pair(22,.999883)); 165 165 b9->push_back(make_pair(21,1.)); 166 166 natEl.push_back(b9); 167 vector<pair<G4int,G4double> >*c0=new vector<pair<G4int,G4double> >; 167 vector<pair<G4int,G4double> >*c0=new vector<pair<G4int,G4double> >; // 20-Ca 168 168 c0->push_back(make_pair(20,.96941)); 169 169 c0->push_back(make_pair(24,.99027)); … … 173 173 c0->push_back(make_pair(26,1.)); 174 174 natEl.push_back(c0); 175 vector<pair<G4int,G4double> >*c1=new vector<pair<G4int,G4double> >; 175 vector<pair<G4int,G4double> >*c1=new vector<pair<G4int,G4double> >; // 21-Sc 176 176 c1->push_back(make_pair(24,1.)); 177 177 natEl.push_back(c1); 178 vector<pair<G4int,G4double> >*c2=new vector<pair<G4int,G4double> >; 179 c2->push_back(make_pair( 1,.738));180 c2->push_back(make_pair( 1,.818));181 c2->push_back(make_pair( 1,.891));182 c2->push_back(make_pair( 1,.946));183 c2->push_back(make_pair( 1,1.));178 vector<pair<G4int,G4double> >*c2=new vector<pair<G4int,G4double> >; // 22-Ti 179 c2->push_back(make_pair(26,.738)); 180 c2->push_back(make_pair(24,.818)); 181 c2->push_back(make_pair(25,.891)); 182 c2->push_back(make_pair(27,.946)); 183 c2->push_back(make_pair(28,1.)); 184 184 natEl.push_back(c2); 185 vector<pair<G4int,G4double> >*c3=new vector<pair<G4int,G4double> >; 185 vector<pair<G4int,G4double> >*c3=new vector<pair<G4int,G4double> >; // 23-V 186 186 c3->push_back(make_pair(28,.9975)); 187 187 c3->push_back(make_pair(27,1.)); 188 188 natEl.push_back(c3); 189 vector<pair<G4int,G4double> >*c4=new vector<pair<G4int,G4double> >; 189 vector<pair<G4int,G4double> >*c4=new vector<pair<G4int,G4double> >; // 24-Cr 190 190 c4->push_back(make_pair(28,.8379)); 191 191 c4->push_back(make_pair(29,.9329)); … … 193 193 c4->push_back(make_pair(30,1.)); 194 194 natEl.push_back(c4); 195 vector<pair<G4int,G4double> >*c5=new vector<pair<G4int,G4double> >; 195 vector<pair<G4int,G4double> >*c5=new vector<pair<G4int,G4double> >; // 25-Mn 196 196 c5->push_back(make_pair(30,1.)); 197 197 natEl.push_back(c5); 198 vector<pair<G4int,G4double> >*c6=new vector<pair<G4int,G4double> >; 198 vector<pair<G4int,G4double> >*c6=new vector<pair<G4int,G4double> >; // 26-Fe 199 199 c6->push_back(make_pair(30,.9172)); 200 200 c6->push_back(make_pair(28,.9762)); … … 202 202 c6->push_back(make_pair(32,1.)); 203 203 natEl.push_back(c6); 204 vector<pair<G4int,G4double> >*c7=new vector<pair<G4int,G4double> >; 204 vector<pair<G4int,G4double> >*c7=new vector<pair<G4int,G4double> >; // 27-Co 205 205 c7->push_back(make_pair(32,1.)); 206 206 natEl.push_back(c7); 207 vector<pair<G4int,G4double> >*c8=new vector<pair<G4int,G4double> >; 207 vector<pair<G4int,G4double> >*c8=new vector<pair<G4int,G4double> >; // 28-Ni 208 208 c8->push_back(make_pair(30,.68077)); 209 209 c8->push_back(make_pair(32,.943)); … … 212 212 c8->push_back(make_pair(36,1.)); 213 213 natEl.push_back(c8); 214 vector<pair<G4int,G4double> >*c9=new vector<pair<G4int,G4double> >; 214 vector<pair<G4int,G4double> >*c9=new vector<pair<G4int,G4double> >; // 29-Cu 215 215 c9->push_back(make_pair(34,.6917)); 216 216 c9->push_back(make_pair(36,1.)); 217 217 natEl.push_back(c9); 218 vector<pair<G4int,G4double> >*d0=new vector<pair<G4int,G4double> >; 218 vector<pair<G4int,G4double> >*d0=new vector<pair<G4int,G4double> >; // 30-Zn 219 219 d0->push_back(make_pair(34,.486)); 220 220 d0->push_back(make_pair(36,.765)); … … 223 223 d0->push_back(make_pair(40,1.)); 224 224 natEl.push_back(d0); 225 vector<pair<G4int,G4double> >*d1=new vector<pair<G4int,G4double> >; 225 vector<pair<G4int,G4double> >*d1=new vector<pair<G4int,G4double> >; // 31-Ga 226 226 d1->push_back(make_pair(38,.60108)); 227 227 d1->push_back(make_pair(40,1.)); 228 228 natEl.push_back(d1); 229 vector<pair<G4int,G4double> >*d2=new vector<pair<G4int,G4double> >; 229 vector<pair<G4int,G4double> >*d2=new vector<pair<G4int,G4double> >; // 32-Ge 230 230 d2->push_back(make_pair(42,.3594)); 231 231 d2->push_back(make_pair(40,.6360)); … … 234 234 d2->push_back(make_pair(44,1.)); 235 235 natEl.push_back(d2); 236 vector<pair<G4int,G4double> >*d3=new vector<pair<G4int,G4double> >; 236 vector<pair<G4int,G4double> >*d3=new vector<pair<G4int,G4double> >; // 33-As 237 237 d3->push_back(make_pair(42,1.)); 238 238 natEl.push_back(d3); 239 vector<pair<G4int,G4double> >*d4=new vector<pair<G4int,G4double> >; 239 vector<pair<G4int,G4double> >*d4=new vector<pair<G4int,G4double> >; // 34-Se 240 240 d4->push_back(make_pair(46,.4961)); 241 241 d4->push_back(make_pair(44,.7378)); … … 245 245 d4->push_back(make_pair(40,1.)); 246 246 natEl.push_back(d4); 247 vector<pair<G4int,G4double> >*d5=new vector<pair<G4int,G4double> >; 247 vector<pair<G4int,G4double> >*d5=new vector<pair<G4int,G4double> >; // 35-Br 248 248 d5->push_back(make_pair(44,.5069)); 249 249 d5->push_back(make_pair(46,1.)); 250 250 natEl.push_back(d5); 251 vector<pair<G4int,G4double> >*d6=new vector<pair<G4int,G4double> >; 251 vector<pair<G4int,G4double> >*d6=new vector<pair<G4int,G4double> >; // 36-Kr 252 252 d6->push_back(make_pair(48,.57)); 253 253 d6->push_back(make_pair(50,.743)); … … 257 257 d6->push_back(make_pair(42,1.)); 258 258 natEl.push_back(d6); 259 vector<pair<G4int,G4double> >*d7=new vector<pair<G4int,G4double> >; 259 vector<pair<G4int,G4double> >*d7=new vector<pair<G4int,G4double> >; // 37-Rb 260 260 d7->push_back(make_pair(48,.7217)); 261 261 d7->push_back(make_pair(50,1.)); 262 262 natEl.push_back(d7); 263 vector<pair<G4int,G4double> >*d8=new vector<pair<G4int,G4double> >; 263 vector<pair<G4int,G4double> >*d8=new vector<pair<G4int,G4double> >; // 38-sr 264 264 d8->push_back(make_pair(50,.8258)); 265 265 d8->push_back(make_pair(48,.9244)); … … 267 267 d8->push_back(make_pair(46,1.)); 268 268 natEl.push_back(d8); 269 vector<pair<G4int,G4double> >*d9=new vector<pair<G4int,G4double> >; 269 vector<pair<G4int,G4double> >*d9=new vector<pair<G4int,G4double> >; // 39-Y 270 270 d9->push_back(make_pair(50,1.)); 271 271 natEl.push_back(d9); 272 vector<pair<G4int,G4double> >*e0=new vector<pair<G4int,G4double> >; 272 vector<pair<G4int,G4double> >*e0=new vector<pair<G4int,G4double> >; // 40-Zr 273 273 e0->push_back(make_pair(50,.5145)); 274 274 e0->push_back(make_pair(54,.6883)); 275 e0->push_back(make_pair(5 3,.8598));275 e0->push_back(make_pair(52,.8598)); 276 276 e0->push_back(make_pair(51,.972)); 277 277 e0->push_back(make_pair(56,1.)); 278 278 natEl.push_back(e0); 279 vector<pair<G4int,G4double> >*e1=new vector<pair<G4int,G4double> >; 279 vector<pair<G4int,G4double> >*e1=new vector<pair<G4int,G4double> >; // 41-Nb 280 280 e1->push_back(make_pair(52,1.)); 281 281 natEl.push_back(e1); 282 vector<pair<G4int,G4double> >*e2=new vector<pair<G4int,G4double> >; 282 vector<pair<G4int,G4double> >*e2=new vector<pair<G4int,G4double> >; // 42-Mo 283 283 e2->push_back(make_pair(56,.2413)); 284 284 e2->push_back(make_pair(54,.4081)); … … 289 289 e2->push_back(make_pair(52,1.)); 290 290 natEl.push_back(e2); 291 vector<pair<G4int,G4double> >*e3=new vector<pair<G4int,G4double> >; 291 vector<pair<G4int,G4double> >*e3=new vector<pair<G4int,G4double> >; // 43-Tc 292 292 e3->push_back(make_pair(55,1.)); 293 293 natEl.push_back(e3); 294 vector<pair<G4int,G4double> >*e4=new vector<pair<G4int,G4double> >; 294 vector<pair<G4int,G4double> >*e4=new vector<pair<G4int,G4double> >; // 44-Ru 295 295 e4->push_back(make_pair(58,.316)); 296 296 e4->push_back(make_pair(60,.502)); … … 301 301 e4->push_back(make_pair(54,1.)); 302 302 natEl.push_back(e4); 303 vector<pair<G4int,G4double> >*e5=new vector<pair<G4int,G4double> >; 303 vector<pair<G4int,G4double> >*e5=new vector<pair<G4int,G4double> >; // 45-Rh 304 304 e5->push_back(make_pair(58,1.)); 305 305 natEl.push_back(e5); 306 vector<pair<G4int,G4double> >*e6=new vector<pair<G4int,G4double> >; 306 vector<pair<G4int,G4double> >*e6=new vector<pair<G4int,G4double> >; // 46-Pd 307 307 e6->push_back(make_pair(60,.2733)); 308 308 e6->push_back(make_pair(62,.5379)); … … 312 312 e6->push_back(make_pair(56,1.)); 313 313 natEl.push_back(e6); 314 vector<pair<G4int,G4double> >*e7=new vector<pair<G4int,G4double> >; 314 vector<pair<G4int,G4double> >*e7=new vector<pair<G4int,G4double> >; // 47-Ag 315 315 e7->push_back(make_pair(60,.51839)); 316 316 e7->push_back(make_pair(62,1.)); 317 317 natEl.push_back(e7); 318 vector<pair<G4int,G4double> >*e8=new vector<pair<G4int,G4double> >; 318 vector<pair<G4int,G4double> >*e8=new vector<pair<G4int,G4double> >; // 48-Cd 319 319 e8->push_back(make_pair(66,.2873)); 320 320 e8->push_back(make_pair(64,.5286)); … … 326 326 e8->push_back(make_pair(60,1.)); 327 327 natEl.push_back(e8); 328 vector<pair<G4int,G4double> >*e9=new vector<pair<G4int,G4double> >; 328 vector<pair<G4int,G4double> >*e9=new vector<pair<G4int,G4double> >; // 49-In 329 329 e9->push_back(make_pair(66,.9577)); 330 330 e9->push_back(make_pair(64,1.)); 331 331 natEl.push_back(e9); 332 vector<pair<G4int,G4double> >*f0=new vector<pair<G4int,G4double> >; 332 vector<pair<G4int,G4double> >*f0=new vector<pair<G4int,G4double> >; // 50-Sn 333 333 f0->push_back(make_pair(70,.3259)); 334 334 f0->push_back(make_pair(68,.5681)); … … 341 341 f0->push_back(make_pair(64,1.)); 342 342 //f0->push_back(make_pair(64,.9964)); 343 //f0->push_back(make_pair(65,1.)); // Nine isotopes is the maximum, so Sn1 55 is out343 //f0->push_back(make_pair(65,1.)); // Nine isotopes is the maximum, so Sn115 is out 344 344 natEl.push_back(f0); 345 vector<pair<G4int,G4double> >*f1=new vector<pair<G4int,G4double> >; 345 vector<pair<G4int,G4double> >*f1=new vector<pair<G4int,G4double> >; // 51-Sb 346 346 f1->push_back(make_pair(70,.5736)); 347 347 f1->push_back(make_pair(72,1.)); 348 348 natEl.push_back(f1); 349 vector<pair<G4int,G4double> >*f2=new vector<pair<G4int,G4double> >; 349 vector<pair<G4int,G4double> >*f2=new vector<pair<G4int,G4double> >; // 52-Te 350 350 f2->push_back(make_pair(78,.3387)); 351 351 f2->push_back(make_pair(76,.6557)); … … 357 357 f2->push_back(make_pair(68,1.)); 358 358 natEl.push_back(f2); 359 vector<pair<G4int,G4double> >*f3=new vector<pair<G4int,G4double> >; 359 vector<pair<G4int,G4double> >*f3=new vector<pair<G4int,G4double> >; // 53-I 360 360 f3->push_back(make_pair(74,1.)); 361 361 natEl.push_back(f3); 362 vector<pair<G4int,G4double> >*f4=new vector<pair<G4int,G4double> >; 362 vector<pair<G4int,G4double> >*f4=new vector<pair<G4int,G4double> >; // 54-Xe 363 363 f4->push_back(make_pair(78,.269)); 364 364 f4->push_back(make_pair(75,.533)); … … 371 371 f4->push_back(make_pair(72,1.)); 372 372 natEl.push_back(f4); 373 vector<pair<G4int,G4double> >*f5=new vector<pair<G4int,G4double> >; 373 vector<pair<G4int,G4double> >*f5=new vector<pair<G4int,G4double> >; // 55-Cs 374 374 f5->push_back(make_pair(78,1.)); 375 375 natEl.push_back(f5); 376 vector<pair<G4int,G4double> >*f6=new vector<pair<G4int,G4double> >; 376 vector<pair<G4int,G4double> >*f6=new vector<pair<G4int,G4double> >; // 56-Ba 377 377 f6->push_back(make_pair(82,.717)); 378 378 f6->push_back(make_pair(81,.8293)); … … 383 383 f6->push_back(make_pair(76,1.)); 384 384 natEl.push_back(f6); 385 vector<pair<G4int,G4double> >*f7=new vector<pair<G4int,G4double> >; 385 vector<pair<G4int,G4double> >*f7=new vector<pair<G4int,G4double> >; // 57-La 386 386 f7->push_back(make_pair(82,.999098)); 387 387 f7->push_back(make_pair(81,1.)); 388 388 natEl.push_back(f7); 389 vector<pair<G4int,G4double> >*f8=new vector<pair<G4int,G4double> >; 389 vector<pair<G4int,G4double> >*f8=new vector<pair<G4int,G4double> >; // 58-Ce 390 390 f8->push_back(make_pair(82,.8843)); 391 391 f8->push_back(make_pair(84,.9956)); … … 393 393 f8->push_back(make_pair(78,1.)); 394 394 natEl.push_back(f8); 395 vector<pair<G4int,G4double> >*f9=new vector<pair<G4int,G4double> >; 395 vector<pair<G4int,G4double> >*f9=new vector<pair<G4int,G4double> >; // 59-Pr 396 396 f9->push_back(make_pair(82,1.)); 397 397 natEl.push_back(f9); 398 vector<pair<G4int,G4double> >*g0=new vector<pair<G4int,G4double> >; 398 vector<pair<G4int,G4double> >*g0=new vector<pair<G4int,G4double> >; // 60-Nd 399 399 g0->push_back(make_pair(82,.2713)); 400 400 g0->push_back(make_pair(84,.5093)); … … 405 405 g0->push_back(make_pair(90,1.)); 406 406 natEl.push_back(g0); 407 vector<pair<G4int,G4double> >*g1=new vector<pair<G4int,G4double> >; 407 vector<pair<G4int,G4double> >*g1=new vector<pair<G4int,G4double> >; // 61-Pm 408 408 g1->push_back(make_pair(85,1.)); 409 409 natEl.push_back(g1); 410 vector<pair<G4int,G4double> >*g2=new vector<pair<G4int,G4double> >; 410 vector<pair<G4int,G4double> >*g2=new vector<pair<G4int,G4double> >; // 62-Sm 411 411 g2->push_back(make_pair(90,.267)); 412 412 g2->push_back(make_pair(92,.494)); … … 417 417 g2->push_back(make_pair(82,1.)); 418 418 natEl.push_back(g2); 419 vector<pair<G4int,G4double> >*g3=new vector<pair<G4int,G4double> >; 419 vector<pair<G4int,G4double> >*g3=new vector<pair<G4int,G4double> >; // 63-Eu 420 420 g3->push_back(make_pair(90,.522)); 421 421 g3->push_back(make_pair(89,1.)); 422 422 natEl.push_back(g3); 423 vector<pair<G4int,G4double> >*g4=new vector<pair<G4int,G4double> >; 423 vector<pair<G4int,G4double> >*g4=new vector<pair<G4int,G4double> >; // 64-Gd 424 424 g4->push_back(make_pair(94,.2484)); 425 425 g4->push_back(make_pair(96,.4670)); … … 430 430 g4->push_back(make_pair(88,1.)); 431 431 natEl.push_back(g4); 432 vector<pair<G4int,G4double> >*g5=new vector<pair<G4int,G4double> >; 432 vector<pair<G4int,G4double> >*g5=new vector<pair<G4int,G4double> >; // 65-Tb 433 433 g5->push_back(make_pair(94,1.)); 434 434 natEl.push_back(g5); 435 vector<pair<G4int,G4double> >*g6=new vector<pair<G4int,G4double> >; 435 vector<pair<G4int,G4double> >*g6=new vector<pair<G4int,G4double> >; // 66-Dy 436 436 g6->push_back(make_pair(98,.282)); 437 437 g6->push_back(make_pair(96,.537)); … … 442 442 g6->push_back(make_pair(90,1.)); 443 443 natEl.push_back(g6); 444 vector<pair<G4int,G4double> >*g7=new vector<pair<G4int,G4double> >; 444 vector<pair<G4int,G4double> >*g7=new vector<pair<G4int,G4double> >; // 67-Ho 445 445 g7->push_back(make_pair(98,1.)); 446 446 natEl.push_back(g7); 447 vector<pair<G4int,G4double> >*g8=new vector<pair<G4int,G4double> >; 447 vector<pair<G4int,G4double> >*g8=new vector<pair<G4int,G4double> >; // 68-Er 448 448 g8->push_back(make_pair( 98,.3360)); 449 449 g8->push_back(make_pair(100,.6040)); … … 453 453 g8->push_back(make_pair( 94,1.)); 454 454 natEl.push_back(g8); 455 vector<pair<G4int,G4double> >*g9=new vector<pair<G4int,G4double> >; 455 vector<pair<G4int,G4double> >*g9=new vector<pair<G4int,G4double> >; // 69-Tm 456 456 g9->push_back(make_pair(100,1.)); 457 457 natEl.push_back(g9); 458 vector<pair<G4int,G4double> >*h0=new vector<pair<G4int,G4double> >; 458 vector<pair<G4int,G4double> >*h0=new vector<pair<G4int,G4double> >; // 70-Yb 459 459 h0->push_back(make_pair(104,.3180)); 460 460 h0->push_back(make_pair(102,.5370)); … … 465 465 h0->push_back(make_pair( 98,1.)); 466 466 natEl.push_back(h0); 467 vector<pair<G4int,G4double> >*h1=new vector<pair<G4int,G4double> >; 467 vector<pair<G4int,G4double> >*h1=new vector<pair<G4int,G4double> >; // 71-Lu 468 468 h1->push_back(make_pair(104,.9741)); 469 469 h1->push_back(make_pair(105,1.)); 470 470 natEl.push_back(h1); 471 vector<pair<G4int,G4double> >*h2=new vector<pair<G4int,G4double> >; 471 vector<pair<G4int,G4double> >*h2=new vector<pair<G4int,G4double> >; // 72-Hf 472 472 h2->push_back(make_pair(108,.35100)); 473 473 h2->push_back(make_pair(106,.62397)); … … 477 477 h2->push_back(make_pair(102,1.)); 478 478 natEl.push_back(h2); 479 vector<pair<G4int,G4double> >*h3=new vector<pair<G4int,G4double> >; 479 vector<pair<G4int,G4double> >*h3=new vector<pair<G4int,G4double> >; // 73-Ta 480 480 h3->push_back(make_pair(108,.99988)); 481 481 h3->push_back(make_pair(107,1.)); 482 482 natEl.push_back(h3); 483 vector<pair<G4int,G4double> >*h4=new vector<pair<G4int,G4double> >; 483 vector<pair<G4int,G4double> >*h4=new vector<pair<G4int,G4double> >; // 74-W 484 484 h4->push_back(make_pair(110,.307)); 485 485 h4->push_back(make_pair(112,.593)); … … 488 488 h4->push_back(make_pair(106,1.)); 489 489 natEl.push_back(h4); 490 vector<pair<G4int,G4double> >*h5=new vector<pair<G4int,G4double> >; 490 vector<pair<G4int,G4double> >*h5=new vector<pair<G4int,G4double> >; // 75-Re 491 491 h5->push_back(make_pair(112,.626)); 492 492 h5->push_back(make_pair(110,1.)); 493 493 natEl.push_back(h5); 494 vector<pair<G4int,G4double> >*h6=new vector<pair<G4int,G4double> >; 494 vector<pair<G4int,G4double> >*h6=new vector<pair<G4int,G4double> >; // 78-Os 495 495 h6->push_back(make_pair(116,.410)); 496 496 h6->push_back(make_pair(114,.674)); … … 501 501 h6->push_back(make_pair(108,1.)); 502 502 natEl.push_back(h6); 503 vector<pair<G4int,G4double> >*h7=new vector<pair<G4int,G4double> >; 503 vector<pair<G4int,G4double> >*h7=new vector<pair<G4int,G4double> >; // 77-Ir 504 504 h7->push_back(make_pair(116,.627)); 505 505 h7->push_back(make_pair(114,1.)); 506 506 natEl.push_back(h7); 507 vector<pair<G4int,G4double> >*h8=new vector<pair<G4int,G4double> >; 507 vector<pair<G4int,G4double> >*h8=new vector<pair<G4int,G4double> >; // 78-Pt 508 508 h8->push_back(make_pair(117,.338)); 509 509 h8->push_back(make_pair(116,.667)); … … 513 513 h8->push_back(make_pair(112,1.)); 514 514 natEl.push_back(h8); 515 vector<pair<G4int,G4double> >*h9=new vector<pair<G4int,G4double> >; 515 vector<pair<G4int,G4double> >*h9=new vector<pair<G4int,G4double> >; // 79-Au 516 516 h9->push_back(make_pair(118,1.)); 517 517 natEl.push_back(h9); 518 vector<pair<G4int,G4double> >*i0=new vector<pair<G4int,G4double> >; 518 vector<pair<G4int,G4double> >*i0=new vector<pair<G4int,G4double> >; // 80-Hg 519 519 i0->push_back(make_pair(122,.2986)); 520 520 i0->push_back(make_pair(120,.5296)); … … 525 525 i0->push_back(make_pair(116,1.)); 526 526 natEl.push_back(i0); 527 vector<pair<G4int,G4double> >*i1=new vector<pair<G4int,G4double> >; 527 vector<pair<G4int,G4double> >*i1=new vector<pair<G4int,G4double> >; // 81-Tl 528 528 i1->push_back(make_pair(124,.70476)); 529 529 i1->push_back(make_pair(122,1.)); 530 530 natEl.push_back(i1); 531 vector<pair<G4int,G4double> >*i2=new vector<pair<G4int,G4double> >; 531 vector<pair<G4int,G4double> >*i2=new vector<pair<G4int,G4double> >; // 82-Pb 532 532 i2->push_back(make_pair(126,.524)); 533 533 i2->push_back(make_pair(124,.765)); … … 535 535 i2->push_back(make_pair(122,1.)); 536 536 natEl.push_back(i2); 537 vector<pair<G4int,G4double> >*i3=new vector<pair<G4int,G4double> >; 537 vector<pair<G4int,G4double> >*i3=new vector<pair<G4int,G4double> >; // 83-Bi 538 538 i3->push_back(make_pair(126,1.)); 539 539 natEl.push_back(i3); 540 vector<pair<G4int,G4double> >*i4=new vector<pair<G4int,G4double> >; 540 vector<pair<G4int,G4double> >*i4=new vector<pair<G4int,G4double> >; // 84-Po 541 541 i4->push_back(make_pair(125,1.)); 542 542 natEl.push_back(i4); 543 vector<pair<G4int,G4double> >*i5=new vector<pair<G4int,G4double> >; 543 vector<pair<G4int,G4double> >*i5=new vector<pair<G4int,G4double> >; // 85-At 544 544 i5->push_back(make_pair(136,1.)); 545 545 natEl.push_back(i5); 546 vector<pair<G4int,G4double> >*i6=new vector<pair<G4int,G4double> >; 546 vector<pair<G4int,G4double> >*i6=new vector<pair<G4int,G4double> >; // 86-Ru 547 547 i6->push_back(make_pair(136,1.)); 548 548 natEl.push_back(i6); 549 vector<pair<G4int,G4double> >*i7=new vector<pair<G4int,G4double> >; 549 vector<pair<G4int,G4double> >*i7=new vector<pair<G4int,G4double> >; // 87-Fr 550 550 i7->push_back(make_pair(138,1.)); 551 551 natEl.push_back(i7); 552 vector<pair<G4int,G4double> >*i8=new vector<pair<G4int,G4double> >; 552 vector<pair<G4int,G4double> >*i8=new vector<pair<G4int,G4double> >; // 88-Ra 553 553 i8->push_back(make_pair(138,1.)); 554 554 natEl.push_back(i8); 555 vector<pair<G4int,G4double> >*i9=new vector<pair<G4int,G4double> >; 555 vector<pair<G4int,G4double> >*i9=new vector<pair<G4int,G4double> >; // 89-Ac 556 556 i9->push_back(make_pair(142,1.)); 557 557 natEl.push_back(i9); 558 vector<pair<G4int,G4double> >*j0=new vector<pair<G4int,G4double> >; 558 vector<pair<G4int,G4double> >*j0=new vector<pair<G4int,G4double> >; // 90-Th 559 559 j0->push_back(make_pair(142,1.)); 560 560 natEl.push_back(j0); 561 vector<pair<G4int,G4double> >*j1=new vector<pair<G4int,G4double> >; 561 vector<pair<G4int,G4double> >*j1=new vector<pair<G4int,G4double> >; // 91-Pa 562 562 j1->push_back(make_pair(140,1.)); 563 563 natEl.push_back(j1); 564 vector<pair<G4int,G4double> >*j2=new vector<pair<G4int,G4double> >; 564 vector<pair<G4int,G4double> >*j2=new vector<pair<G4int,G4double> >; // 92-U 565 565 j2->push_back(make_pair(146,.992745)); 566 566 j2->push_back(make_pair(143,.999945)); 567 567 j2->push_back(make_pair(142,1.)); 568 568 natEl.push_back(j2); 569 vector<pair<G4int,G4double> >*j3=new vector<pair<G4int,G4double> >; 569 vector<pair<G4int,G4double> >*j3=new vector<pair<G4int,G4double> >; // 93-Np 570 570 j3->push_back(make_pair(144,1.)); 571 571 natEl.push_back(j3); 572 vector<pair<G4int,G4double> >*j4=new vector<pair<G4int,G4double> >; 572 vector<pair<G4int,G4double> >*j4=new vector<pair<G4int,G4double> >; // 94-Pu 573 573 j4->push_back(make_pair(150,1.)); 574 574 natEl.push_back(j4); 575 vector<pair<G4int,G4double> >*j5=new vector<pair<G4int,G4double> >; 575 vector<pair<G4int,G4double> >*j5=new vector<pair<G4int,G4double> >; // 95-Am 576 576 j5->push_back(make_pair(148,1.)); 577 577 natEl.push_back(j5); 578 vector<pair<G4int,G4double> >*j6=new vector<pair<G4int,G4double> >; 578 vector<pair<G4int,G4double> >*j6=new vector<pair<G4int,G4double> >; // 96-Cm 579 579 j6->push_back(make_pair(151,1.)); 580 580 natEl.push_back(j6); 581 vector<pair<G4int,G4double> >*j7=new vector<pair<G4int,G4double> >; 581 vector<pair<G4int,G4double> >*j7=new vector<pair<G4int,G4double> >; // 97-Bk 582 582 j7->push_back(make_pair(150,1.)); 583 583 natEl.push_back(j7); 584 vector<pair<G4int,G4double> >*j8=new vector<pair<G4int,G4double> >; 584 vector<pair<G4int,G4double> >*j8=new vector<pair<G4int,G4double> >; // 98-Cf 585 585 j8->push_back(make_pair(153,1.)); 586 586 natEl.push_back(j8); 587 vector<pair<G4int,G4double> >*j9=new vector<pair<G4int,G4double> >; 587 vector<pair<G4int,G4double> >*j9=new vector<pair<G4int,G4double> >; // 99-Es 588 588 j9->push_back(make_pair(157,1.)); 589 589 natEl.push_back(j9); 590 vector<pair<G4int,G4double> >*k0=new vector<pair<G4int,G4double> >; 590 vector<pair<G4int,G4double> >*k0=new vector<pair<G4int,G4double> >; // 100-Fm 591 591 k0->push_back(make_pair(157,1.)); 592 592 natEl.push_back(k0); 593 vector<pair<G4int,G4double> >*k1=new vector<pair<G4int,G4double> >; 593 vector<pair<G4int,G4double> >*k1=new vector<pair<G4int,G4double> >; // 101-Md 594 594 k1->push_back(make_pair(157,1.)); 595 595 natEl.push_back(k1); 596 vector<pair<G4int,G4double> >*k2=new vector<pair<G4int,G4double> >; 596 vector<pair<G4int,G4double> >*k2=new vector<pair<G4int,G4double> >; // 102-No 597 597 k2->push_back(make_pair(157,1.)); 598 598 natEl.push_back(k2); 599 vector<pair<G4int,G4double> >*k3=new vector<pair<G4int,G4double> >; 599 vector<pair<G4int,G4double> >*k3=new vector<pair<G4int,G4double> >; // 103-Lr 600 600 k3->push_back(make_pair(157,1.)); 601 601 natEl.push_back(k3); 602 vector<pair<G4int,G4double> >*k4=new vector<pair<G4int,G4double> >; 602 vector<pair<G4int,G4double> >*k4=new vector<pair<G4int,G4double> >; // 104-Rf 603 603 k4->push_back(make_pair(157,1.)); 604 604 natEl.push_back(k4); 605 vector<pair<G4int,G4double> >*k5=new vector<pair<G4int,G4double> >; 605 vector<pair<G4int,G4double> >*k5=new vector<pair<G4int,G4double> >; // 105-Db 606 606 k5->push_back(make_pair(157,1.)); 607 607 natEl.push_back(k5); 608 vector<pair<G4int,G4double> >*k6=new vector<pair<G4int,G4double> >; 608 vector<pair<G4int,G4double> >*k6=new vector<pair<G4int,G4double> >; // 106-Sg 609 609 k6->push_back(make_pair(157,1.)); 610 610 natEl.push_back(k6); 611 vector<pair<G4int,G4double> >*k7=new vector<pair<G4int,G4double> >; 611 vector<pair<G4int,G4double> >*k7=new vector<pair<G4int,G4double> >; // 107-Bh 612 612 k7->push_back(make_pair(155,1.)); 613 613 natEl.push_back(k7); 614 vector<pair<G4int,G4double> >*k8=new vector<pair<G4int,G4double> >; 614 vector<pair<G4int,G4double> >*k8=new vector<pair<G4int,G4double> >; // 108-Hs 615 615 k8->push_back(make_pair(157,1.)); 616 616 natEl.push_back(k8); 617 vector<pair<G4int,G4double> >*k9=new vector<pair<G4int,G4double> >; 617 vector<pair<G4int,G4double> >*k9=new vector<pair<G4int,G4double> >; // 109-Mt 618 618 k9->push_back(make_pair(157,1.)); 619 619 natEl.push_back(k9); -
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc
r1228 r1315 25 25 // 26 26 // 27 // $Id: G4QNucleus.cc,v 1.11 6 2009/12/14 16:41:52mkossov Exp $28 // GEANT4 tag $Name: geant4-09-0 3$27 // $Id: G4QNucleus.cc,v 1.118 2010/06/10 08:37:27 mkossov Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ---------------- G4QNucleus ---------------- … … 958 958 static const G4int nPDG = 2112; // PDGCode of neutron 959 959 static const G4QPDGCode nQPDG(nPDG); // QPDGCode of neutron 960 static const G4QPDGCode anQPDG(-nPDG); // QPDGCode of anti-neutron 960 961 static const G4int pPDG = 2212; // PDGCode of proton 961 962 static const G4QPDGCode pQPDG(pPDG); // QPDGCode of proton 963 static const G4QPDGCode apQPDG(-pPDG); // QPDGCode of anti-proton 962 964 static const G4int lPDG = 3122; // PDGCode of Lambda 963 965 static const G4QPDGCode lQPDG(lPDG); // QPDGCode of Lambda 966 static const G4QPDGCode aDppQPDG(-2224); // QPDGCode of anti-Delta++ 967 static const G4QPDGCode aDmQPDG(-1114); // QPDGCode of anti-Delta- 968 static const G4QPDGCode alQPDG(-lPDG); // QPDGCode of anti-Lambda 964 969 static const G4int dPDG = 90001001; // PDGCode of deutron 965 970 static const G4int aPDG = 90002002; // PDGCode of ALPHA … … 1031 1036 G4cout<<"G4QN::EB:pB="<<PBarr<<",aB="<<ABarr<<",ppB="<<PPBarr<<",paB="<<PABarr<<G4endl; 1032 1037 #endif 1033 if(a==2) 1038 if(a==-2) 1039 { 1040 if(Z==1 || N==1) 1041 { 1042 G4int nucPDG = -2112; 1043 G4int piPDG = 211; 1044 G4double nucM = mNeut; 1045 G4QPDGCode del = aDmQPDG; 1046 G4QPDGCode nuc = anQPDG; 1047 if(N>0) 1048 { 1049 nucPDG = -2212; 1050 piPDG = -211; 1051 nucM = mProt; 1052 del = aDppQPDG; 1053 nuc = apQPDG; 1054 } 1055 if(totMass > mPi+nucM+nucM) 1056 { 1057 G4LorentzVector n14M(0.,0.,0.,nucM); 1058 G4LorentzVector n24M(0.,0.,0.,nucM); 1059 G4LorentzVector pi4M(0.,0.,0.,mPi); 1060 if(!DecayIn3(n14M, n24M, pi4M)) 1061 { 1062 G4cerr<<"***G4QNucl::EvapBary: (anti) tM="<<totMass<<"-> 2N="<<nucPDG<<"(M=" 1063 <<nucM<<") + pi="<<piPDG<<"(M="<<mPi<<")"<<G4endl; 1064 //throw G4QException("G4QNucl::EvapBary:ISO-dibaryon DecayIn3 did not succeed"); 1065 return false; 1066 } 1067 n14M+=pi4M; 1068 h1->SetQPDG(del); 1069 h2->SetQPDG(nuc); 1070 h1->Set4Momentum(n14M); 1071 h2->Set4Momentum(n24M); 1072 return true; 1073 } 1074 else 1075 { 1076 G4cerr<<"***G4QNucleus::EvaporateBaryon: M="<<totMass 1077 <<", M="<<totMass<<" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<G4endl; 1078 //throw G4QException("***G4QNucl::EvaporateBaryon: ISO-dibaryon under Mass Shell"); 1079 return false; 1080 } 1081 } 1082 else if(Z==2 || N==2) 1083 { 1084 G4int nucPDG = -2112; 1085 G4int piPDG = 211; 1086 G4double nucM = mNeut; 1087 G4QPDGCode del = aDmQPDG; 1088 if(N==2) 1089 { 1090 nucPDG = -2212; 1091 piPDG = -211; 1092 nucM = mProt; 1093 del = aDppQPDG; 1094 } 1095 if(totMass > mPi+mPi+nucM+nucM) 1096 { 1097 G4LorentzVector n14M(0.,0.,0.,nucM); 1098 G4LorentzVector n24M(0.,0.,0.,nucM); 1099 G4LorentzVector pi4M(0.,0.,0.,mPi+mPi); 1100 if(!DecayIn3(n14M, n24M, pi4M)) 1101 { 1102 G4cerr<<"***G4QNucl::EvapBary: (anti) tM="<<totMass<<"-> 2N="<<nucPDG<<"(M=" 1103 <<nucM<<") + 2pi="<<piPDG<<"(M="<<mPi<<")"<<G4endl; 1104 //throw G4QException("G4QNucl::EvapBary:ISO-dibaryon DecayIn3 did not succeed"); 1105 return false; 1106 } 1107 G4LorentzVector hpi4M=pi4M/2.; 1108 n14M+=hpi4M; 1109 n24M+=hpi4M; 1110 h1->SetQPDG(del); 1111 h2->SetQPDG(del); 1112 h1->Set4Momentum(n14M); 1113 h2->Set4Momentum(n24M); 1114 return true; 1115 } 1116 else 1117 { 1118 G4cerr<<"***G4QNucleus::EvaporateBaryon: M="<<totMass 1119 <<", M="<<totMass<<" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<G4endl; 1120 //throw G4QException("***G4QNucl::EvaporateBaryon: ISO-dibaryon under Mass Shell"); 1121 return false; 1122 } 1123 } 1124 else if(Z==-2) 1125 { 1126 h1mom=G4LorentzVector(0.,0.,0.,mProt); 1127 h2mom=h1mom; 1128 h1->SetQPDG(apQPDG); 1129 h2->SetQPDG(apQPDG); 1130 if(!DecayIn2(h1mom,h2mom)) return false; 1131 } 1132 else if(N==-2) 1133 { 1134 h1mom=G4LorentzVector(0.,0.,0.,mNeut); 1135 h2mom=h1mom; 1136 h1->SetQPDG(anQPDG); 1137 h2->SetQPDG(anQPDG); 1138 if(!DecayIn2(h1mom,h2mom)) return false; 1139 } 1140 else if(N==-1 && Z==-1) 1141 { 1142 h1mom=G4LorentzVector(0.,0.,0.,mProt); 1143 h2mom=G4LorentzVector(0.,0.,0.,mNeut); 1144 h1->SetQPDG(apQPDG); 1145 h2->SetQPDG(anQPDG); 1146 if(!DecayIn2(h1mom,h2mom)) return false; 1147 } 1148 else if(Z==-1 && S==-1) 1149 { 1150 h1mom=G4LorentzVector(0.,0.,0.,mProt); 1151 h2mom=G4LorentzVector(0.,0.,0.,mLamb); 1152 h1->SetQPDG(apQPDG); 1153 h2->SetQPDG(alQPDG); 1154 if(!DecayIn2(h1mom,h2mom)) return false; 1155 } 1156 else 1157 { 1158 h1mom=G4LorentzVector(0.,0.,0.,mNeut); 1159 h2mom=G4LorentzVector(0.,0.,0.,mLamb); 1160 h1->SetQPDG(anQPDG); 1161 h2->SetQPDG(alQPDG); 1162 if(!DecayIn2(h1mom,h2mom)) return false; 1163 } 1164 h1->Set4Momentum(h1mom); 1165 h2->Set4Momentum(h2mom); 1166 return true; 1167 } 1168 else if(a==2) 1034 1169 { 1035 1170 if(Z<0||N<0) … … 1565 1700 if(evalph&&aFlag&&aMin<minE) minE=aMin; 1566 1701 1567 #ifdef p pdebug1702 #ifdef pdebug 1568 1703 G4cout<<"G4QNucleus::EvapBaryon: nE="<<nExcess<<">"<<nMin<<",pE="<<pExcess<<">"<<pMin 1569 1704 <<",sE="<<lExcess<<">"<<lMin<<",E="<<aExcess<<">"<<aMin<<",miE="<<minE<<"<maE=" … … 2017 2152 else if(PDG==lPDG&&(lnCond&&lpCond&&llCond&&laCond)) // l+b+RN decay can't happen 2018 2153 { //@@ Take into account Coulomb Barier Penetration Probability 2019 #ifdef p pdebug2154 #ifdef pdebug 2020 2155 G4cout<<"G4QN::EB:*l*: n="<<lnCond<<",p="<<lpCond<<",l="<<llCond<<",a="<<laCond 2021 2156 <<G4endl; … … 2274 2409 if(!DecayIn3(h1mom,h2mom,h3mom)) 2275 2410 { 2276 #ifdef p pdebug2411 #ifdef pdebug 2277 2412 G4cout<<"*G4QNucl::EvaporateBaryon:Decay M="<<totMass<<",b="<<eMass<<bQPDG 2278 2413 <<",f="<<fMass<<fQPDG<<",r="<<rMass<<rQPDG<<G4endl; … … 2689 2824 rQPDG=LQPDG; 2690 2825 rMass=GSResNl; 2691 #ifdef p pdebug2826 #ifdef pdebug 2692 2827 G4cout<<"G4QNucleus::EvaporateBaryon: Decay in L + rA="<<GSResNl+mLamb<<G4endl; 2693 2828 #endif … … 2799 2934 return true; 2800 2935 } 2801 if(a< 1) G4cerr<<"***G4QNucleus::EvaporateBaryon: A="<<a<<G4endl;2936 if(a<-2) G4cerr<<"***G4QNucleus::EvaporateBaryon: A="<<a<<G4endl; 2802 2937 return false; 2803 2938 } … … 3387 3522 G4ThreeVector delta(0.,0.,0.); // Prototype of the distance between nucleons 3388 3523 G4ThreeVector* places= new G4ThreeVector[theA]; // Vector of 3D positions 3389 G4bool freeplace= false;// flag of free space available3524 G4bool freeplace= false; // flag of free space available 3390 3525 G4double nucDist2= nucleonDistance*nucleonDistance; // @@ can be a common static 3391 3526 G4double maxR= GetRadius(0.01); // there are cond no nucleons at this density 3392 G4ThreeVector sumPos(0.,0.,0.); // Vector of the current 3D sum 3393 while(i<theA) // LOOP over all nucleons 3527 G4ThreeVector sumPos(0.,0.,0.); // Vector of the current 3D sum 3528 G4ThreeVector minPos(0.,0.,0.); // Minimum nucleon 3D position 3529 G4double mirPos=maxR; // Proto MinimumRadius of the nucleonPosition 3530 G4int failCNT=0; // Counter of bad attempts 3531 G4int maxCNT=27; // Limit for the bad attempts 3532 while( i < theA && maxR > 0.) // LOOP over all nucleons 3394 3533 { 3395 3534 rPos = maxR*pow(G4UniformRand(),third); // Get random radius of the nucleon position … … 3404 3543 // @@ Gaussian oscilator distribution is good only up to He4 (s-wave). Above: p-wave 3405 3544 // (1+k*(r^2/R^2)]*exp[-r^2/R^2]. A=s+p=4+3*4=16 (M.K.) So Li,Be,C,N,O are wrong 3406 if(i==lastN) aPos=-rPos*sumPos.unit(); // TheLast tries to compensate CenterOfGravity3545 if(i==lastN) aPos=-rPos*sumPos.unit(); // TheLast tries toCompensate CenterOfGravity 3407 3546 else aPos=rPos*G4RandomDirection(); // It uses the standard G4 function 3408 3547 freeplace = true; // Imply that there is a free space … … 3426 3565 if (eFermi <= CoulombBarrier()) freeplace=false; 3427 3566 } 3428 if(freeplace) 3429 { 3430 #ifdef debug 3431 G4cout<<"G4QNucl::ChoosePositions: fill nucleon i="<<i<<", V="<<aPos<<G4endl; 3567 if(rPos<mirPos) 3568 { 3569 mirPos=rPos; 3570 minPos=aPos; 3571 } 3572 if( freeplace || failCNT > maxCNT ) 3573 { 3574 if( failCNT > maxCNT ) aPos=minPos; 3575 #ifdef debug 3576 G4cout<<"G4QNuc::ChoosePos:->> fill N["<<i<<"], R="<<aPos<<", f="<<failCNT<<G4endl; 3432 3577 #endif 3433 3578 places[i]=aPos; 3434 3579 sumPos+=aPos; 3435 3580 ++i; 3436 } 3581 failCNT=0; 3582 mirPos=maxR; 3583 } 3584 else ++failCNT; 3437 3585 } 3438 3586 } … … 3961 4109 if((thePDG || thePDG==10) && theQC.GetBaryonNumber()>0) thePDG=theQC.GetZNSPDGCode(); 3962 4110 G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of theTotalNucleus 3963 if( theBN<1|| thePDG<80000000 || thePDG==90000000) // Hadron, anti-nucleous, or vacuum4111 if(!theBN || thePDG<80000000 || thePDG==90000000) // Hadron, anti-nucleous, or vacuum 3964 4112 { 3965 4113 #ifdef debug … … 3969 4117 { 3970 4118 #ifdef qdebug 3971 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (1) qH="<<G4endl; 3972 else 4119 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (1) qH=0"<<G4endl; 3973 4120 #endif 3974 4121 delete qH; 3975 #ifdef qdebug3976 qH=0; // @Not necessary@(can't be checked)3977 #endif3978 4122 G4cout<<"-Warning-G4QNucleus::EvapNuc:vacuum,4Mom="<<q4M<<G4endl; 3979 4123 } 3980 4124 else // Put input to the output (delete equivalent) 3981 4125 { 4126 G4cout<<"-Warning-G4QNucleus::EvapNuc:vacuum, Called for Meson PDG="<<thePDG<<G4endl; 3982 4127 evaHV->push_back(qH); 3983 #ifdef qdebug3984 qH=0; // @Not necessary@(can't be checked)3985 #endif3986 4128 } 3987 4129 return; … … 4005 4147 #endif 4006 4148 evaHV->push_back(qH); // TheFundamentalParticles must be FilledAsTheyAre (del.eq) 4007 #ifdef qdebug4008 qH=0; // @Not necessary@(can't be checked)4009 #endif4010 4149 return; 4011 4150 } … … 4019 4158 <<theBN<<", Z="<<theC<<", N="<<theN<<", S="<<theS<<G4endl; 4020 4159 #endif 4021 if(thePDG==91000000||thePDG==90001000||thePDG==90000001) 4160 if(theBN<-2) 4161 { 4162 G4cout<<"-Warning-G4QNuc::EvapNuc: Evapor of anti-nuclei is not implemented yet PDG=" 4163 <<thePDG<<G4endl; 4164 evaHV->push_back(qH); 4165 return; 4166 } 4167 else if(thePDG==91000000||thePDG==90001000||thePDG==90000001) // Excited Lambda* or N* 4022 4168 //else if(2>3)// One can easily close this decay as it will be done later (time of calc?) 4023 4169 { … … 4031 4177 #endif 4032 4178 evaHV->push_back(qH); // (delete equivalent) 4179 return; 4180 } 4181 else if(totMass<gsM) 4182 { 4033 4183 #ifdef qdebug 4034 qH=0; // @Not necessary@(can't be checked) 4035 #endif 4036 return; 4037 } 4038 else if(totMass<gsM) 4039 { 4040 #ifdef qdebug 4041 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (2) qH="<<G4endl; 4042 else 4184 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (2) qH=0"<<G4endl; 4043 4185 #endif 4044 4186 delete qH; 4045 #ifdef qdebug4046 qH=0; // @Not necessary@4047 #endif4048 4187 G4cerr<<"***G4QN::EvaNuc:Baryon "<<thePDG<<" is belowMassShell, M="<<totMass<<G4endl; 4049 4188 throw G4QException("G4QNucleus::EvaporateNucleus: Baryon is below Mass Shell"); … … 4059 4198 if(d>142.) // @@ to avoid more precise calculations 4060 4199 { 4061 if(thePDG==90001000) // D+-> n + pi+4200 if(thePDG==90001000) // p* -> n + pi+ 4062 4201 { 4063 4202 gsM=mNeut; … … 4066 4205 decM=mPi; 4067 4206 } 4068 else if(thePDG==90000001) // D+ -> n + pi+4207 else if(thePDG==90000001) // n* -> p + pi- 4069 4208 { 4070 4209 gsM=mProt; … … 4073 4212 decM=mPi; 4074 4213 } 4075 else 4214 else // decay in Pi0 4076 4215 { 4077 4216 decPDG=111; … … 4084 4223 { 4085 4224 #ifdef qdebug 4086 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (3) qH="<<G4endl; 4087 else 4225 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (3) qH=0"<<G4endl; 4088 4226 #endif 4089 4227 delete qH; 4090 #ifdef qdebug4091 qH=0; // @Not necessary@4092 #endif4093 4228 G4cerr<<"***G4QNuc::EvaNuc:h="<<thePDG<<"(GSM="<<gsM<<")+gam>tM="<<totMass<<G4endl; 4094 4229 throw G4QException("G4QNucleus::EvaporateNucleus:BaryonDecay In Baryon+Gam Error"); … … 4109 4244 evaHV->push_back(curG); // Fill gamma/pion (delete equivalent) 4110 4245 #ifdef qdebug 4111 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (4) qH="<<G4endl; 4112 else 4246 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (4) qH=0"<<G4endl; 4113 4247 #endif 4114 4248 delete qH; 4249 } 4250 } 4251 else if(thePDG==89000000||thePDG==89999000||thePDG==89999999) // anti-Lambda* or anti-N* 4252 //else if(2>3)// One can easily close this decay as it will be done later (time of calc?) 4253 { 4254 G4double gsM=mNeut; 4255 if(thePDG==89999000) gsM=mProt; 4256 else if(thePDG==89000000) gsM=mLamb; 4257 if(fabs(totMass-gsM)<.001) 4258 { 4259 #ifdef debug 4260 G4cout<<"G4QNu::EvaNucl:(aB*),GSM="<<gsM<<", H="<<thePDG<<qH->Get4Momentum()<<G4endl; 4261 #endif 4262 evaHV->push_back(qH); // (delete equivalent) 4263 return; 4264 } 4265 else if(totMass<gsM) 4266 { 4115 4267 #ifdef qdebug 4116 qH=0; // @Not necessary@ 4117 #endif 4268 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (2a) qH=0"<<G4endl; 4269 #endif 4270 delete qH; 4271 G4cerr<<"*G4QN::EvaNuc:antiBaryon="<<thePDG<<" below MassShell, M="<<totMass<<G4endl; 4272 throw G4QException("G4QNucleus::EvaporateNucleus: anti-Baryon is below Mass Shell"); 4273 } 4274 else // Decay in gamma or charged pion (@@ neutral) 4275 { 4276 G4double d=totMass-gsM; 4277 #ifdef debug 4278 G4cout<<"G4QN::EvaporNucl: PDG="<<thePDG<<",M="<<totMass<<">"<<gsM<<",d="<<d<<G4endl; 4279 #endif 4280 G4int decPDG=22; 4281 G4double decM=0.; 4282 if(d>142.) // @@ to avoid more precise calculations 4283 { 4284 if(thePDG==89999000) // anti (p* -> n + pi+) 4285 { 4286 gsM=mNeut; 4287 thePDG=89999999; 4288 decPDG=-211; 4289 decM=mPi; 4290 } 4291 else if(thePDG==89999999) // anti (n* -> p + pi-) 4292 { 4293 gsM=mProt; 4294 thePDG=89999000; 4295 decPDG=211; 4296 decM=mPi; 4297 } 4298 else // decay in Pi0 4299 { 4300 decPDG=111; 4301 decM=mPi0; 4302 } 4303 } 4304 G4LorentzVector h4Mom(0.,0.,0.,gsM); // GSMass must be updated in previous while-LOOP 4305 G4LorentzVector g4Mom(0.,0.,0.,decM); 4306 if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) 4307 { 4308 #ifdef qdebug 4309 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (3a) qH=0"<<G4endl; 4310 #endif 4311 delete qH; 4312 G4cerr<<"**G4QNuc::EvaNuc:ah="<<thePDG<<"(GSM="<<gsM<<")+gam>tM="<<totMass<<G4endl; 4313 throw G4QException("G4QNucleus::EvaporateNucleus:BaryonDecay In Baryon+Gam Error"); 4314 } 4315 #ifdef debug 4316 G4cout<<"G4QNucl::EvaNuc:aM="<<totMass<<q4M<<"->"<<thePDG<<h4Mom<<"+g="<<g4Mom<<",n=" 4317 <<evaHV->size()<<G4endl; 4318 #endif 4319 G4QHadron* curH = new G4QHadron(thePDG, h4Mom); 4320 #ifdef debug 4321 G4cout<<"G4QNucleus::EvaporateNucleus: antiHadr="<<thePDG<<h4Mom<<G4endl; 4322 #endif 4323 evaHV->push_back(curH); // Fill Baryon (delete equiv.) 4324 G4QHadron* curMes = new G4QHadron(decPDG, g4Mom); 4325 #ifdef debug 4326 G4cout<<"G4QNucleus::EvaporateNucleus: (anti) Gamma(pion)4M="<<g4Mom<<G4endl; 4327 #endif 4328 evaHV->push_back(curMes); // Fill gamma/pion (delete equivalent) 4329 #ifdef qdebug 4330 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (4a) qH=0"<<G4endl; 4331 #endif 4332 delete qH; 4118 4333 } 4119 4334 } … … 4142 4357 evaHV->push_back(curM); // (delete equivalent) 4143 4358 #ifdef qdebug 4144 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (5) qH="<<G4endl; 4145 else 4146 #endif 4147 delete qH; // *** New correction *** 4359 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (5) qH=0"<<G4endl; 4360 #endif 4361 delete qH; 4362 return; 4363 } 4364 else if(totMass<gsM+mPi) 4365 { 4148 4366 #ifdef qdebug 4149 qH=0; // @Not necessary@ 4150 #endif 4151 return; 4152 } 4153 else if(totMass<gsM+mPi) 4154 { 4155 #ifdef qdebug 4156 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (6) qH="<<G4endl; 4157 else 4367 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (6) qH=0"<<G4endl; 4158 4368 #endif 4159 4369 delete qH; 4160 #ifdef qdebug4161 qH=0; // @Not necessary@4162 #endif4163 4370 G4cerr<<"***G4QN::EvaNuc:Delta "<<thePDG<<" is belowMassShell, M="<<totMass<<G4endl; 4164 4371 throw G4QException("G4QNucleus::EvaporateNucleus: Delta is below Mass Shell"); … … 4171 4378 { 4172 4379 #ifdef qdebug 4173 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (7) qH="<<G4endl; 4174 else 4380 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (7) qH=0"<<G4endl; 4175 4381 #endif 4176 4382 delete qH; 4177 #ifdef qdebug4178 qH=0; // @Not necessary@4179 #endif4180 4383 G4cerr<<"***G4QNuc::EvaNuc:Dh="<<thePDG<<"N+pi="<<gsM+mPi<<">tM="<<totMass<<G4endl; 4181 4384 throw G4QException("G4QNucleus::EvaporateNucleus: DeltaDecInBaryon+Pi Error"); … … 4196 4399 evaHV->push_back(curG); // Fill the pion (delete equivalent) 4197 4400 #ifdef qdebug 4198 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (8) qH="<<G4endl; 4199 else 4401 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (8) qH=0"<<G4endl; 4200 4402 #endif 4201 4403 delete qH; 4404 } 4405 } 4406 else if((thePDG==89998001||thePDG==90000998) && totMass>1080.) // @@ to avoid threshold 4407 //else if(2>3)// One can easily close this decay as it will be done later (time of calc?) 4408 { 4409 G4double gsM=mNeut; 4410 G4int barPDG=-2112; 4411 G4int mesPDG=211; 4412 if(thePDG==89998001) 4413 { 4414 gsM=mProt; 4415 barPDG=-2212; 4416 mesPDG=-211; 4417 } 4418 if(fabs(totMass-gsM-mPi)<.001) 4419 { 4420 #ifdef debug 4421 G4cout<<"G4QN::EvaporateNuc:(A)GSM="<<gsM<<",H="<<thePDG<<qH->Get4Momentum()<<G4endl; 4422 #endif 4423 G4LorentzVector h4Mom=q4M*(gsM/totMass); // At rest in CM 4424 G4QHadron* curB = new G4QHadron(barPDG,h4Mom); 4425 evaHV->push_back(curB); // (delete equivalent) 4426 G4LorentzVector g4Mom=q4M*(mPi/totMass); 4427 G4QHadron* curM = new G4QHadron(mesPDG,g4Mom); 4428 evaHV->push_back(curM); // (delete equivalent) 4202 4429 #ifdef qdebug 4203 qH=0;4204 #endif 4205 }4206 }4207 else if(theBN>0&&theS<0)4208 {4209 DecayAntiStrange(qH,evaHV);4430 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (5a) qH=0"<<G4endl; 4431 #endif 4432 delete qH; 4433 return; 4434 } 4435 else if(totMass<gsM+mPi) 4436 { 4210 4437 #ifdef qdebug 4211 qH=0; // @Not necessary@ 4212 #endif 4213 }// "AntyStrangeNucleus" (del.eq.) 4214 else if(theBN>0&&(theC<0||theC>theBN-theS)) 4215 { 4216 DecayIsonucleus(qH,evaHV); 4438 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (6a) qH=0"<<G4endl; 4439 #endif 4440 delete qH; 4441 G4cerr<<"***G4QN::EvaNuc:aDelta "<<thePDG<<" is belowMassShell, M="<<totMass<<G4endl; 4442 throw G4QException("G4QNucleus::EvaporateNucleus: anti-Delta is below Mass Shell"); 4443 } 4444 else // Decay in gamma or charged pion (@@ neutral) 4445 { 4446 G4LorentzVector h4Mom(0.,0.,0.,gsM); // GSMass must be updated in previous while-LOOP 4447 G4LorentzVector g4Mom(0.,0.,0.,mPi); 4448 if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) 4449 { 4217 4450 #ifdef qdebug 4218 qH=0; // @Not necessary@ 4219 #endif 4220 }//"UnavoidIsonucl" 4221 else if(theBN==2) 4222 { 4223 DecayDibaryon(qH,evaHV); 4451 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (7a) qH=0"<<G4endl; 4452 #endif 4453 delete qH; 4454 G4cerr<<"***G4QNuc::EvaNuc:aD="<<thePDG<<"N+pi="<<gsM+mPi<<">tM="<<totMass<<G4endl; 4455 throw G4QException("G4QNucleus::EvaporateNucleus:AntiDeltaDecayInBaryon+Pi Error"); 4456 } 4457 #ifdef debug 4458 G4cout<<"G4QNuc::EvaNuc:(aD) "<<totMass<<q4M<<"->"<<thePDG<<h4Mom<<" + pi="<<g4Mom 4459 <<", nH="<<evaHV->size()<<G4endl; 4460 #endif 4461 G4QHadron* curH = new G4QHadron(barPDG,h4Mom); 4462 #ifdef debug 4463 G4cout<<"G4QNucleus::EvaporateNucl: Nucleon="<<thePDG<<h4Mom<<G4endl; 4464 #endif 4465 evaHV->push_back(curH); // Fill the nucleon (delete equiv.) 4466 G4QHadron* curMes = new G4QHadron(mesPDG,g4Mom); 4467 #ifdef debug 4468 G4cout<<"G4QE::EvaporateR: Pion="<<g4Mom<<G4endl; 4469 #endif 4470 evaHV->push_back(curMes); // Fill the pion (delete equivalent) 4224 4471 #ifdef qdebug 4225 qH=0; // @Not necessary@ 4226 #endif 4227 } //=> "Dibaryon" case (del eq.) 4228 else if(thePDG==89999003||thePDG==90002999) //=> "ISO-dibarion" (analyse and decay) 4472 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (8a) qH=0"<<G4endl; 4473 #endif 4474 delete qH; 4475 } 4476 } 4477 else if(theBN>0&&theS<0) DecayAntiStrange(qH,evaHV); // "AntyStrangeNucleus" (del.eq.) 4478 else if(theBN>0&&(theC<0||theC>theBN-theS))DecayIsonucleus(qH,evaHV);//"Isonucleus"(d.e.) 4479 else if((thePDG==89999003 || thePDG==90002999) && totMass>2020.) //=> "ISO-dibarion" 4229 4480 { 4230 4481 // @@ Check that it never comes here !! … … 4246 4497 { 4247 4498 #ifdef qdebug 4248 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (9) qH="<<G4endl; 4249 else 4499 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (9) qH=0"<<G4endl; 4250 4500 #endif 4251 4501 delete qH; 4252 #ifdef qdebug4253 qH=0; // @Not necessary@4254 #endif4255 4502 G4cerr<<"***G4QNucleus::EvaporateNucleus: tM="<<totMass<<"-> 2N="<<nucPDG<<"(M=" 4256 4503 <<nucM<<") + pi="<<piPDG<<"(M="<<mPi<<")"<<G4endl; … … 4258 4505 } 4259 4506 #ifdef qdebug 4260 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (10) qH="<<G4endl; 4261 else 4507 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (10) qH=0"<<G4endl; 4262 4508 #endif 4263 4509 delete qH; 4264 #ifdef qdebug4265 qH=0; // @Not necessary@4266 #endif4267 4510 G4QHadron* h1H = new G4QHadron(nucPDG,n14M); 4268 4511 #ifdef debug … … 4284 4527 { 4285 4528 #ifdef qdebug 4286 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (11) qH="<<G4endl; 4287 else 4529 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (11) qH=0"<<G4endl; 4288 4530 #endif 4289 4531 delete qH; 4290 #ifdef qdebug4291 qH=0; // @Not necessary@4292 #endif4293 4532 G4cerr<<"***G4QNucleus::EvapNucleus: IdPDG="<<thePDG<<", q4M="<<q4M<<", M="<<totMass 4294 4533 <<" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<G4endl; … … 4296 4535 } 4297 4536 } 4298 else if((thePDG==90000002||thePDG==90001001||thePDG==90002000)&&totMass>2020.) //=> Iso DB4537 else if((thePDG==90000002||thePDG==90001001||thePDG==90002000)&&totMass>2020.) //=> IsoBP 4299 4538 { 4300 4539 // @@ Pi0 can be taken into account ! … … 4333 4572 } 4334 4573 #ifdef qdebug 4335 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (12) qH="<<G4endl; 4336 else 4574 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (12) qH=0"<<G4endl; 4337 4575 #endif 4338 4576 delete qH; 4339 #ifdef qdebug4340 qH=0; // @Not necessary@4341 #endif4342 4577 G4QHadron* h1H = new G4QHadron(n1PDG,n14M); 4343 4578 #ifdef debug … … 4359 4594 { 4360 4595 #ifdef qdebug 4361 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (13) qH="<<G4endl; 4362 else 4596 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (13) qH=0"<<G4endl; 4363 4597 #endif 4364 4598 delete qH; 4365 #ifdef qdebug4366 qH=0; // @Not necessary@4367 #endif4368 4599 G4cerr<<"***G4QNuc::EvaporateNucleus: IdPDG="<<thePDG<<", q4M="<<q4M<<", M="<<totMass 4369 4600 <<" < M1+M2+Pi, d="<<totMass-n1M-n2M-mPi<<G4endl; … … 4371 4602 } 4372 4603 } 4604 else if(theBN==2) DecayDibaryon(qH, evaHV); //=> "Dibaryon" case (del eq.) 4605 else if((thePDG==90000997 || thePDG==89997001) && totMass>2020.) //=> "anti-ISO-dibarion" 4606 { 4607 // @@ Check that it never comes here !! 4608 G4int nucPDG = -2112; 4609 G4double nucM = mNeut; 4610 G4int piPDG = 211; 4611 if(thePDG==90002999) 4612 { 4613 nucPDG = -2212; 4614 nucM = mProt; 4615 piPDG = -211; 4616 } 4617 if(totMass>mPi+nucM+nucM) 4618 { 4619 G4LorentzVector n14M(0.,0.,0.,nucM); 4620 G4LorentzVector n24M(0.,0.,0.,nucM); 4621 G4LorentzVector pi4M(0.,0.,0.,mPi); 4622 if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) 4623 { 4624 #ifdef qdebug 4625 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (9a) qH=0"<<G4endl; 4626 #endif 4627 delete qH; 4628 G4cerr<<"***G4QNucleus::EvaporateNucleus:antiM="<<totMass<<"-> 2aN="<<nucPDG<<"(M=" 4629 <<nucM<<") + pi="<<piPDG<<"(M="<<mPi<<")"<<G4endl; 4630 throw G4QException("G4QNucleus::EvaporateNucleus:Anti-ISO-DibaryonDecayIn3 error"); 4631 } 4632 #ifdef qdebug 4633 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (10a) qH=0"<<G4endl; 4634 #endif 4635 delete qH; 4636 G4QHadron* h1H = new G4QHadron(nucPDG,n14M); 4637 #ifdef debug 4638 G4cout<<"G4QNucleus::EvaporateNucleus:(I) antiBar1="<<nucPDG<<n14M<<G4endl; 4639 #endif 4640 evaHV->push_back(h1H); // (delete equivalent) 4641 G4QHadron* h2H = new G4QHadron(nucPDG,n24M); 4642 #ifdef debug 4643 G4cout<<"G4QNucleus::EvaporateNucleus:(I) antiBar2="<<nucPDG<<n24M<<G4endl; 4644 #endif 4645 evaHV->push_back(h2H); // (delete equivalent) 4646 G4QHadron* piH = new G4QHadron(piPDG,pi4M); 4647 #ifdef debug 4648 G4cout<<"G4QNucleus::EvaporateNucleus:(I) (anti) Pi="<<piPDG<<pi4M<<G4endl; 4649 #endif 4650 evaHV->push_back(piH); // (delete equivalent) 4651 } 4652 else 4653 { 4654 #ifdef qdebug 4655 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (11a) qH=0"<<G4endl; 4656 #endif 4657 delete qH; 4658 G4cerr<<"***G4QNucleus::EvapNucleus: aIdPDG="<<thePDG<<", q4M="<<q4M<<", M="<<totMass 4659 <<" < M_2N+Pi, d="<<totMass-2*nucM-mPi<<G4endl; 4660 throw G4QException("G4QNucleus::EvaporateNucleus:AntiISODiBaryon is underMassShell"); 4661 } 4662 } 4663 else if((thePDG==89999998||thePDG==89998999||thePDG==89998000)&&totMass>2020.)//=>AnIsoBP 4664 { 4665 // @@ Pi0 can be taken into account ! 4666 G4int n1PDG = -2212; 4667 G4int n2PDG = -2112; 4668 G4int piPDG = 211; // dummy initialization 4669 G4double n1M = mProt; 4670 G4double n2M = mNeut; 4671 if (thePDG==89998000) piPDG = -211; // anti ( pp -> np + pi- ) 4672 else if(thePDG==89999998) piPDG = 211; // anti ( nn -> np + pi- ) 4673 else // anti ( np -> 50%(nnpi+) 50%(pppi-) ) 4674 { 4675 if(G4UniformRand()>.5) 4676 { 4677 n1PDG=-2112; 4678 n1M=mNeut; 4679 piPDG = -211; 4680 } 4681 else 4682 { 4683 n2PDG=-2212; 4684 n2M=mProt; 4685 piPDG = 211; 4686 } 4687 } 4688 if(totMass>mPi+n1M+n2M) 4689 { 4690 G4LorentzVector n14M(0.,0.,0.,n1M); 4691 G4LorentzVector n24M(0.,0.,0.,n2M); 4692 G4LorentzVector pi4M(0.,0.,0.,mPi); 4693 if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) 4694 { 4695 G4cerr<<"**G4QNucl::EvapNucleus:IsoDN,antiM="<<totMass<<"-> N1="<<n1PDG<<"(M="<<n1M 4696 <<") + N2="<<n2PDG<<"(M="<<n2M<<") + pi="<<piPDG<<" (Mpi="<<mPi<<")"<<G4endl; 4697 throw G4QException("G4QNucl::EvaporateNucleus:AntiExcitedDibaryon DecayIn3 error"); 4698 } 4699 #ifdef qdebug 4700 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (12a) qH=0"<<G4endl; 4701 #endif 4702 delete qH; 4703 G4QHadron* h1H = new G4QHadron(n1PDG,n14M); 4704 #ifdef debug 4705 G4cout<<"G4QNucleus::EvaporateNucleus: antiBar1="<<n1PDG<<n14M<<G4endl; 4706 #endif 4707 evaHV->push_back(h1H); // (delete equivalent) 4708 G4QHadron* h2H = new G4QHadron(n2PDG,n24M); 4709 #ifdef debug 4710 G4cout<<"G4QNucleus::EvaporateNucleus: antiBar2="<<n2PDG<<n24M<<G4endl; 4711 #endif 4712 evaHV->push_back(h2H); // (delete equivalent) 4713 G4QHadron* piH = new G4QHadron(piPDG,pi4M); 4714 #ifdef debug 4715 G4cout<<"G4QNucleus::EvaporateNucleus: (anti)Pi="<<piPDG<<pi4M<<G4endl; 4716 #endif 4717 evaHV->push_back(piH); // (delete equivalent) 4718 } 4719 else 4720 { 4721 #ifdef qdebug 4722 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (13a) qH=0"<<G4endl; 4723 #endif 4724 delete qH; 4725 G4cerr<<"***G4QNuc::EvaporateNucleus:andPDG="<<thePDG<<", q4M="<<q4M<<", M="<<totMass 4726 <<" < M1+M2+Pi, d="<<totMass-n1M-n2M-mPi<<G4endl; 4727 throw G4QException("G4QNucleus::EvaporateNucleus:AntiDiBarState is under MassShell"); 4728 } 4729 } 4730 else if(theBN==-2) DecayAntiDibaryon(qH,evaHV); //=> "Anti-Dibaryon" case (del eq.) 4373 4731 else if(fabs(totMass-totGSM)<.001) // Fill as it is or decay Be8, He5, Li5 (@@ add more) 4374 4732 { … … 4379 4737 { 4380 4738 DecayAlphaAlpha(qH,evaHV); 4381 #ifdef qdebug4382 qH=0; // @Not necessary@4383 #endif4384 4739 } // "Alpha+Alpha Decay" case (del eq.) 4385 4740 else if(thePDG==90004002) 4386 4741 { 4387 4742 DecayAlphaDiN(qH,evaHV); 4388 #ifdef qdebug4389 qH=0; // @Not necessary@4390 #endif4391 4743 } // Decay alpha+2p(alpha+2n is stable) 4392 4744 else if((theC==theBN||theN==theBN||theS==theBN)&&theBN>1) 4393 4745 { 4394 4746 DecayMultyBaryon(qH,evaHV); 4395 #ifdef qdebug4396 qH=0; // @Not necessary@4397 #endif4398 4747 } 4399 4748 else if(theBN==5) 4400 4749 { 4401 4750 DecayAlphaBar(qH,evaHV); 4402 #ifdef qdebug4403 qH=0; // @Not necessary@4404 #endif4405 4751 } // Decay unstable A5 system (del eq.) 4406 4752 else 4407 4753 { 4408 4754 evaHV->push_back(qH); 4409 #ifdef qdebug4410 qH=0;4411 #endif4412 4755 } // Fill as it is (del eq.) 4413 4756 } 4414 else if(theBN>1 &&thePDG>88000000&&thePDG<89000000)//==> 2antiK in the nucleus (!Comment!)4757 else if(theBN>1 && thePDG>88000000 && thePDG<89000000) //==> 2antiK in the nucleus 4415 4758 { 4416 4759 G4cout<<"---Warning---G4QNucl::EvaNuc:MustNotBeHere.PDG="<<thePDG<<",S="<<theS<<G4endl; … … 4444 4787 { 4445 4788 #ifdef qdebug 4446 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (14) qH="<<G4endl; 4447 else 4789 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (14) qH=0"<<G4endl; 4448 4790 #endif 4449 4791 delete qH; 4450 #ifdef qdebug4451 qH=0; // @Not necessary@4452 #endif4453 4792 G4cout<<"***G4QNucleus::EvaNuc:tM="<<totMass<<"-> N="<<nucPDG<<"(M="<<nucM<<") + k1=" 4454 4793 <<k1PDG<<"(M="<<mK1<<") + k2="<<k2PDG<<"(M="<<mK2<<")"<<G4endl; … … 4456 4795 } 4457 4796 #ifdef qdebug 4458 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (15) qH="<<G4endl; 4459 else 4797 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (15) qH=0"<<G4endl; 4460 4798 #endif 4461 4799 delete qH; 4462 #ifdef qdebug4463 qH=0; // @Not necessary@4464 #endif4465 4800 G4QHadron* k1H = new G4QHadron(k1PDG,k14M); 4466 4801 #ifdef debug … … 4492 4827 G4double GSMass =qNuc.GetGSMass(); // GSMass of the Total Residual Nucleus 4493 4828 G4QContent totQC=qNuc.GetQCZNS(); // QuarkCont of theTotalResidNucleus (theQC) 4494 G4int bA =qNuc.GetA(); // A#of baryons in theTotal Residual Nucleus 4495 G4int bZ =qNuc.GetZ(); // A#of protons in theTotal Residual Nucleus 4496 G4int bN =qNuc.GetN(); // A#of neutrons in theTotal ResidualNucleus 4497 G4int bS =qNuc.GetS(); // A#of lambdas in theTotal Residual Nucleus 4829 G4int bA =qNuc.GetA(); // A#of baryons in Total Residual Nucleus 4830 G4int bZ =qNuc.GetZ(); // A#of protons in the Total ResidualNucleus 4831 G4int bN =qNuc.GetN(); // A#of neutrons in the TotalResidualNucleus 4832 #ifdef ppdebug 4833 G4cout<<"G4QN::EvaNuc: theBN="<<theBN<<", bA="<<bA<<", bZ="<<bZ<<", bN="<<bN<<G4endl; 4834 #endif 4835 G4int bS =qNuc.GetS(); // A#of lambdas in the Total ResidualNucleus 4498 4836 #ifdef debug 4499 4837 if(bZ==2&&bN==5)G4cout<<"G4QNucleus::EvaNucl: (2,5) GSM="<<GSMass<<" > " … … 4516 4854 #endif 4517 4855 evaHV->push_back(qH); 4518 #ifdef qdebug4519 qH=0; // @Not necessary@ (Can't be checked)4520 #endif4521 4856 return; 4522 4857 } … … 4586 4921 delete theLast; //When kill, DON'T forget to delete lastQHadron asAnInstance! 4587 4922 #ifdef qdebug 4588 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (16) qH="<<G4endl; 4589 else 4923 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (16) qH=0"<<G4endl; 4590 4924 #endif 4591 4925 delete qH; 4592 #ifdef qdebug4593 qH=0; // @Not necessary@4594 #endif4595 4926 #ifdef debug 4596 4927 G4cout<<"G4QNucleus::EvaporateNucl: EVH "<<totPDG<<q4M<<" fill AsIs"<<G4endl; … … 4607 4938 delete theLast; //When kill,DON'T forget to delete lastQHadron asAnInstance 4608 4939 #ifdef qdebug 4609 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (17) qH="<<G4endl; 4610 else 4940 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (17) qH=0"<<G4endl; 4611 4941 #endif 4612 4942 delete qH; 4613 #ifdef qdebug4614 qH=0; // @Not necessary@4615 #endif4616 4943 #ifdef debug 4617 4944 G4cout<<"***G4QNucleus::EvaNucl: EVH "<<totPDG<<q4M<<" fill AsIs"<<G4endl; … … 4626 4953 delete evH; 4627 4954 #ifdef qdebug 4628 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (18) qH="<<G4endl; 4629 else 4955 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (18) qH=0"<<G4endl; 4630 4956 #endif 4631 4957 delete qH; 4632 #ifdef qdebug4633 qH=0; // @Not necessary@4634 #endif4635 4958 theLast->Set4Momentum(last4M);// Already exists:don't create&fill,->set4Mom 4636 4959 G4QHadron* nucH = new G4QHadron(thePDG,r4Mom); // Create QHadron for qH-nuc … … 4661 4984 { 4662 4985 #ifdef qdebug 4663 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (19) qH="<<G4endl; 4664 else 4986 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (19) qH=0"<<G4endl; 4665 4987 #endif 4666 4988 delete qH; 4667 #ifdef qdebug4668 qH=0; // @Not necessary@4669 #endif4670 4989 G4cerr<<"**G4QN::EvaNuc:h="<<thePDG<<"(GSM="<<GSMass<<")+g>tM="<<totMass<<G4endl; 4671 4990 throw G4QException("G4QNucleus::EvaporateNucleus: Decay in Gamma failed"); … … 4686 5005 evaHV->push_back(curG); // Fill the gamma (delete equivalent) 4687 5006 #ifdef qdebug 4688 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (20) qH="<<G4endl; 4689 else 5007 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (20) qH=0"<<G4endl; 4690 5008 #endif 4691 5009 delete qH; 4692 #ifdef qdebug 4693 qH=0; // @Not necessary@ 4694 #endif 4695 } 4696 } 4697 else if(bA==2) 4698 { 4699 DecayDibaryon(qH,evaHV); 4700 #ifdef qdebug 4701 qH=0; // @Not necessary@ 4702 #endif 4703 }// Decay the residual dibaryon (del.equivalent) 4704 else if(bA>0&&bS<0) 4705 { 4706 DecayAntiStrange(qH,evaHV); 4707 #ifdef qdebug 4708 qH=0; // @Not necessary@ 4709 #endif 4710 }// Decay nucleus with antistrangeness 5010 } 5011 } 5012 else if(bA>0&&bS<0) DecayAntiStrange(qH,evaHV);// Decay nucleus with antistrangeness 5013 else if(bA==2) DecayDibaryon(qH,evaHV); // Decay the residual dibaryon (del.equivalent) 5014 else if(bA==-2) DecayAntiDibaryon(qH,evaHV); // Decay residual anti-dibaryon (del.eq) 4711 5015 else if(totMass<GSMass+.003&&(bsCond||dbsCond))//==>" M<GSM but decay is possible" case 4712 5016 { 4713 #ifdef debug5017 #ifdef pdebug 4714 5018 G4cout<<"G4QN::EvN:2B="<<dbsCond<<",B="<<bsCond<<",M="<<totMass<<"<"<<GSMass<<G4endl; 4715 5019 #endif … … 4858 5162 <<",p="<<totMass-pResM-mProt<<",l="<<totMass-lResM-mLamb<<G4endl; 4859 5163 #endif 4860 4861 if ( thePDG == 90004004 || 4862 4863 (thePDG == 90002004 && totMass > mHel6+.003) || 4864 4865 (bA > 4 && bsCond && bN > 1 && bZ > 1 && totMass > aResM+mAlph) || 4866 5164 if ( thePDG == 90004004 || 5165 (thePDG == 90002004 && totMass > mHel6+.003) || 5166 (bA > 4 && bsCond && bN > 1 && bZ > 1 && totMass > aResM+mAlph) || 4867 5167 (bA > 1 && bsCond && ( (bN > 0 && totMass > nResM+mNeut) || 4868 5168 (bZ > 0 && totMass > pResM+mProt) || 4869 (bS > 0 && totMass > lResM+mLamb) ) ) ||5169 (bS > 0 && totMass > lResM+mLamb) ) ) || 4870 5170 (bA > 2 && 4871 5171 (( bN > 0 && bZ > 0 && … … 5001 5301 { 5002 5302 evaHV->push_back(qH); // Fill as it is (delete equivalent) 5003 #ifdef qdebug5004 qH=0; // @Not necessary@ (Can't be checked)5005 #endif5006 5303 G4cout<<"---Warning---G4QNucleus::EvaNuc:rP="<<pResPDG<<",rN="<<nResPDG<<",rL=" 5007 5304 <<lResPDG<<",N="<<bN<<",Z="<<bZ<<",L="<<bS<<",totM="<<totMass<<",n=" … … 5014 5311 { 5015 5312 #ifdef qdebug 5016 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (21) qH="<<G4endl; 5017 else 5313 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (21) qH=0"<<G4endl; 5018 5314 #endif 5019 5315 delete qH; 5020 #ifdef qdebug5021 qH=0;5022 #endif5023 5316 G4QHadron* HadrB = new G4QHadron(barPDG,a4Mom); 5024 5317 #ifdef debug … … 5041 5334 { 5042 5335 evaHV->push_back(qH); // Fill as it is (delete equivalent) 5043 #ifdef qdebug5044 qH=0; // @Not necessary@ (Can't be checked)5045 #endif5046 5336 G4cout<<"---Warning---G4QN::EvN:rNN="<<nnResPDG<<",rNP="<<npResPDG<<",rPP=" 5047 5337 <<ppResPDG<<",N="<<bN<<",Z="<<bZ<<",L="<<bS<<",tM="<<totMass<<",nn=" … … 5054 5344 { 5055 5345 #ifdef qdebug 5056 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (22) qH="<<G4endl; 5057 else 5346 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (22) qH=0"<<G4endl; 5058 5347 #endif 5059 5348 delete qH; 5060 #ifdef qdebug5061 qH=0; // @Not necessary@5062 #endif5063 5349 G4QHadron* HadrB = new G4QHadron(barPDG,a4Mom); 5064 5350 #ifdef debug … … 5087 5373 #endif 5088 5374 evaHV->push_back(qH); // FillAsItIs (del.eq.) 5089 #ifdef qdebug5090 qH=0; // @Not necessary@ (Can't be checked)5091 #endif5092 5375 return; 5093 5376 } … … 5099 5382 #endif 5100 5383 evaHV->push_back(qH); // Correct or fill as it is 5101 #ifdef qdebug5102 qH=0; // @Not necessary@ (can't be checked)5103 #endif5104 5384 return; 5105 5385 } 5106 5386 } 5107 else // ===> Evaporation of excited system5108 { 5109 #ifdef debug5387 else // ===> Evaporation of the excited system 5388 { 5389 #ifdef pdebug 5110 5390 G4cout<<"G4QN::EvaNuc:***EVA***tPDG="<<thePDG<<",M="<<totMass<<">GSM="<<GSMass<<",d=" 5111 5391 <<totMass-GSMass<<", N="<<qNuc.Get4Momentum()<<qNuc.Get4Momentum().m()<<G4endl; … … 5141 5421 #endif 5142 5422 evaHV->push_back(qH); // fill AsItIs 5143 #ifdef qdebug5144 qH=0; // @Not necessary@ (Can't be checked)5145 #endif5146 5423 return; 5147 5424 } … … 5170 5447 #endif 5171 5448 #ifdef qdebug 5172 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (23) qH="<<G4endl; 5173 else 5449 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (23) qH=0"<<G4endl; 5174 5450 #endif 5175 5451 delete qH; 5176 #ifdef qdebug5177 qH=0; // @Not necessary@5178 #endif5179 5452 if(bB<2) evaHV->push_back(bHadron); // Fill EvaporatedBaryon (del.equivalent) 5180 5453 else if(bB==2) DecayDibaryon(bHadron,evaHV);// => "Dibaryon" case needs decay … … 5232 5505 { 5233 5506 #ifdef qdebug 5234 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (24) qH="<<G4endl; 5235 else 5507 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (24) qH=0"<<G4endl; 5236 5508 #endif 5237 5509 delete qH; // Chipolino should not be in a sequence 5238 #ifdef qdebug5239 qH=0; // @Not necessary@5240 #endif5241 5510 G4LorentzVector fq4M(0.,0.,0.,m1); 5242 5511 G4LorentzVector qe4M(0.,0.,0.,m2); … … 5260 5529 { 5261 5530 #ifdef qdebug 5262 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (25) qH="<<G4endl; 5263 else 5531 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (25) qH=0"<<G4endl; 5264 5532 #endif 5265 5533 delete qH; 5266 #ifdef qdebug5267 qH=0; // @Not necessary@5268 #endif5269 5534 G4cerr<<"**G4QN::EN:M="<<totMass<<"<"<<m1<<"+"<<m2<<",d="<<m1+m2-totMass<<G4endl; 5270 5535 throw G4QException("G4QNucleus::EvaporateNucleus: Chipolino is under MassShell"); … … 5280 5545 #endif 5281 5546 evaHV->push_back(qH); 5547 } 5548 else if ((thePDG==221||thePDG==331)&&totMass>mPi+mPi) // "Decay in pipi" case 5549 { 5282 5550 #ifdef qdebug 5283 qH=0; 5284 #endif 5285 } 5286 else if ((thePDG==221||thePDG==331)&&totMass>mPi+mPi) // "Decay in pipi" case 5287 { 5288 #ifdef qdebug 5289 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (26) qH="<<G4endl; 5290 else 5551 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (26) qH=0"<<G4endl; 5291 5552 #endif 5292 5553 delete qH; 5293 #ifdef qdebug5294 qH=0; // @Not necessary@5295 #endif5296 5554 G4LorentzVector fq4M(0.,0.,0.,mPi); 5297 5555 G4LorentzVector qe4M(0.,0.,0.,mPi); … … 5315 5573 { 5316 5574 #ifdef qdebug 5317 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (27) qH="<<G4endl; 5318 else 5575 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (27) qH=0"<<G4endl; 5319 5576 #endif 5320 5577 delete qH; 5321 #ifdef qdebug5322 qH=0; // @Not necessary@5323 #endif5324 5578 G4LorentzVector fq4M(0.,0.,0.,mPi0); 5325 5579 G4LorentzVector qe4M(0.,0.,0.,mPi0); … … 5343 5597 { 5344 5598 #ifdef qdebug 5345 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (28) qH="<<G4endl; 5346 else 5599 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (28) qH=0"<<G4endl; 5347 5600 #endif 5348 5601 delete qH; 5349 #ifdef qdebug5350 qH=0; // @Not necessary@5351 #endif5352 5602 G4LorentzVector fq4M(0.,0.,0.,0.); 5353 5603 G4LorentzVector qe4M(0.,0.,0.,totM); … … 5371 5621 { 5372 5622 #ifdef qdebug 5373 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (29) qH="<<G4endl; 5374 else 5623 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (29) qH=0"<<G4endl; 5375 5624 #endif 5376 5625 delete qH; 5377 #ifdef qdebug5378 qH=0; // @Not necessary@5379 #endif5380 5626 G4LorentzVector fq4M(0.,0.,0.,0.); 5381 5627 G4LorentzVector qe4M(0.,0.,0.,0.); … … 5399 5645 { 5400 5646 #ifdef qdebug 5401 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (30) qH="<<G4endl; 5402 else 5647 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (30) qH=0"<<G4endl; 5403 5648 #endif 5404 5649 delete qH; 5405 #ifdef qdebug5406 qH=0; // @Not necessary@5407 #endif5408 5650 G4cerr<<"***G4QNucl::EvaNuc: Nuc="<<thePDG<<theQC<<", q4M="<<q4M<<", M="<<totMass 5409 5651 <<" < GSM="<<totM<<", 2Pi="<<mPi+mPi<<", 2Pi0="<<mPi0+mPi0<<G4endl; … … 5415 5657 { 5416 5658 #ifdef qdebug 5417 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (31) qH="<<G4endl; 5418 else 5659 if(!qH) G4cout<<"-Warning-G4QNucleus::EvaporateNucleus: (31) qH=0"<<G4endl; 5419 5660 #endif 5420 5661 delete qH; 5421 #ifdef qdebug5422 qH=0; // @Not necessary@5423 #endif5424 5662 G4cerr<<"**G4QNuc::EvaNuc:RN="<<thePDG<<theQC<<",q4M="<<q4M<<",qM="<<totMass<<G4endl; 5425 5663 throw G4QException("G4QNucleus::EvaporateNucleus: This is not aNucleus nor aHadron"); … … 5431 5669 G4cout<<"G4QNucleus::EvaporateNucleus: deletedAtEnd, PDG="<<qH->GetPDGCode()<<G4endl; 5432 5670 if(!qH) G4cout<<"G4QNucleus::EvaporateNucleus: (20) qH="<<G4endl; 5433 else 5434 delete qH; 5671 else delete qH; 5435 5672 } 5436 5673 #endif … … 5465 5702 G4cout<<"--Warning(Upgrade)--G4QNuc::DecIsonuc:FillAsIs,4M="<<q4M<<",QC="<<qQC<<G4endl; 5466 5703 evaHV->push_back(qH); // fill as it is (delete equivalent) 5467 #ifdef qdebug5468 qH=0;5469 #endif5470 5704 return; 5471 5705 } … … 5752 5986 #endif 5753 5987 evaHV->push_back(qH); // fill as it is (delete equivalent) 5754 #ifdef qdebug5755 qH=0;5756 #endif5757 5988 return; 5758 5989 } … … 5764 5995 #endif 5765 5996 evaHV->push_back(qH); // fill as it is (delete equivalent) 5766 #ifdef qdebug5767 qH=0;5768 #endif5769 5997 return; 5770 5998 } … … 5774 6002 #endif 5775 6003 delete qH; 5776 #ifdef qdebug5777 qH=0;5778 #endif5779 6004 if(qBN) 5780 6005 { … … 5816 6041 //Decay of the excited dibaryon in two baryons 5817 6042 void G4QNucleus::DecayDibaryon(G4QHadron* qH, G4QHadronVector* evaHV) 5818 {// ============================================ 6043 {// ================================================================ 5819 6044 static const G4double mPi = G4QPDGCode(211).GetMass(); 5820 6045 static const G4double mNeut= G4QPDGCode(2112).GetMass(); … … 5977 6202 { 5978 6203 DecayAntiStrange(qH,evaHV); 5979 #ifdef qdebug5980 qH=0;5981 #endif5982 6204 return; 5983 6205 } … … 5985 6207 { 5986 6208 delete qH; 5987 #ifdef qdebug5988 qH=0;5989 #endif5990 6209 G4cerr<<"***G4QN::DecDiBar: badPDG="<<qPDG<<" or smallM="<<qM<<",2mP="<<dProt 5991 6210 <<",2mN="<<dNeut<<G4endl; … … 6012 6231 //throw G4QException("***G4QNucleus::DecayDibaryon: DiBaryon DecayIn2 error"); 6013 6232 evaHV->push_back(qH); 6014 #ifdef qdebug6015 qH=0;6016 #endif6017 6233 return; 6018 6234 } … … 6022 6238 #endif 6023 6239 delete qH; 6024 #ifdef qdebug6025 qH=0;6026 #endif6027 6240 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6028 6241 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6047 6260 //throw G4QException("***G4QNucleus::DecDibaryon: Dibaryon DecayIn2 error"); 6048 6261 evaHV->push_back(qH); 6049 #ifdef qdebug6050 qH=0;6051 #endif6052 6262 return; 6053 6263 } … … 6070 6280 // Should not be here as sum was already compared with qM above for the first delta 6071 6281 delete qH; 6072 #ifdef qdebug6073 qH=0;6074 #endif6075 6282 G4cerr<<"***G4QNucl::DecDibar:fPDG="<<fPDG<<"(fM="<<fMass<<") + sPDG="<<sPDG<<"(sM=" 6076 6283 <<sMass<<")="<<sum<<" >? (DD2,Can't be here) TotM="<<q4M.m()<<q4M<<G4endl; … … 6086 6293 evaHV->push_back(H4); // Fill "H2" (delete equivalent) 6087 6294 delete qH; 6088 #ifdef qdebug6089 qH=0;6090 #endif6091 6295 } 6092 6296 else … … 6106 6310 //throw G4QException("G4QNucleus::DecayDibaryon: diBar DecayIn3 error"); 6107 6311 evaHV->push_back(qH); 6108 #ifdef qdebug6109 qH=0;6110 #endif6111 6312 return; 6112 6313 } … … 6119 6320 // Instead 6120 6321 delete qH; 6121 #ifdef qdebug6122 qH=0;6123 #endif6124 6322 // 6125 6323 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon … … 6139 6337 #endif 6140 6338 } // End of DecayDibaryon 6339 6340 //Decay of the excited anti-dibaryon in two anti-baryons 6341 void G4QNucleus::DecayAntiDibaryon(G4QHadron* qH, G4QHadronVector* evaHV) 6342 {// ==================================================================== 6343 static const G4double mPi = G4QPDGCode(211).GetMass(); 6344 static const G4double mNeut= G4QPDGCode(2112).GetMass(); 6345 static const G4double mProt= G4QPDGCode(2212).GetMass(); 6346 static const G4double mSigM= G4QPDGCode(3112).GetMass(); 6347 static const G4double mLamb= G4QPDGCode(3122).GetMass(); 6348 static const G4double mSigP= G4QPDGCode(3222).GetMass(); 6349 static const G4double mKsiM= G4QPDGCode(3312).GetMass(); 6350 static const G4double mKsiZ= G4QPDGCode(3322).GetMass(); 6351 static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); 6352 static const G4double mPiN = mPi+mNeut; 6353 static const G4double mPiP = mPi+mProt; 6354 static const G4double dmPiN= mPiN+mPiN; 6355 static const G4double dmPiP= mPiP+mPiP; 6356 static const G4double nnPi = mNeut+mPiN; 6357 static const G4double ppPi = mProt+mPiP; 6358 static const G4double lnPi = mLamb+mPiN; 6359 static const G4double lpPi = mLamb+mPiP; 6360 static const G4double dNeut= mNeut+mNeut; 6361 static const G4double dProt= mProt+mProt; 6362 static const G4double dLamb= mLamb+mLamb; 6363 static const G4double dLaNe= mLamb+mNeut; 6364 static const G4double dLaPr= mLamb+mProt; 6365 static const G4double dSiPr= mSigP+mProt; 6366 static const G4double dSiNe= mSigM+mNeut; 6367 static const G4double dKsPr= mKsiZ+mProt; 6368 static const G4double dKsNe= mKsiM+mNeut; 6369 static const G4double eps = 0.003; 6370 static const G4QNucleus vacuum(90000000); 6371 G4bool four=false; // defFALSE for 4-particle decay of diDelta 6372 G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Dibaryon 6373 G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying dybaryon 6374 G4double qM = q4M.m(); // Mass of the decaying anti-di-baryon 6375 G4double rM = qM+eps; // Just to avoid the computer accuracy 6376 #ifdef debug 6377 G4cout<<"G4QNucl::DecayAntiDibar:*Called* PDG="<<qPDG<<",4Mom="<<q4M<<", M="<<qM<<G4endl; 6378 #endif 6379 // Select a chanel of the dibaryon decay (including Delta+Delta-> 4 particle decay 6380 G4int fPDG = -2212; // Prototype for anti-pp case 6381 G4int sPDG = -2212; 6382 G4int tPDG = 0; // Zero prototype to separate 3 from 2 6383 G4double fMass= mProt; 6384 G4double sMass= mProt; 6385 G4double tMass= mPi; 6386 if (qPDG==89996002 && rM>=dmPiP) // "anti-diDelta++" case 6387 { 6388 sPDG = -211; 6389 sMass= mPi; 6390 four = true; 6391 } 6392 else if(qPDG==90001996 && rM>=dmPiN) // "diDelta--" case 6393 { 6394 sPDG = 211; 6395 fPDG = -2112; 6396 sMass= mPi; 6397 fMass= mNeut; 6398 four = true; 6399 } 6400 else if(qPDG==89999998 && rM>=dNeut) // "dineutron" case 6401 { 6402 fPDG = -2112; 6403 sPDG = -2112; 6404 fMass= mNeut; 6405 sMass= mNeut; 6406 } 6407 else if(qPDG==89998999 && rM>=mDeut) // "exited deutron" case 6408 { 6409 if(fabs(qM-mDeut)<eps) 6410 { 6411 evaHV->push_back(qH); // Fill as it is (delete equivalent) 6412 return; 6413 } 6414 else if(mProt+mNeut<rM) 6415 { 6416 fPDG = -2112; 6417 fMass= mNeut; 6418 } 6419 else 6420 { 6421 fPDG = 22; 6422 sPDG = 89998999; // Anti-deuteron 6423 fMass= 0.; 6424 sMass= mDeut; 6425 G4cout<<"--Warning--G4QNucl::DecayAntiDibar:ANTI-DEUTERON is created M="<<rM<<G4endl; 6426 } 6427 } 6428 else if(qPDG==88999999 && rM>=dLaNe) // "Lambda-neutron" case 6429 { 6430 fPDG = -2112; 6431 sPDG = -3122; 6432 fMass= mNeut; 6433 sMass= mLamb; 6434 } 6435 else if(qPDG==88999999 && rM>=dLaPr) // "Lambda-proton" case 6436 { 6437 sPDG = -3122; 6438 sMass= mLamb; 6439 } 6440 else if(qPDG==90000997 && rM>=nnPi) // "neutron/Delta-" case 6441 { 6442 fPDG = -2112; 6443 sPDG = -2112; 6444 tPDG = 211; 6445 fMass= mNeut; 6446 sMass= mNeut; 6447 } 6448 else if(qPDG==89997001 && rM>=ppPi) // "proton/Delta++" case 6449 { 6450 tPDG = -211; 6451 } 6452 else if(qPDG==89000998 && rM>=lnPi) // "lambda/Delta-" case 6453 { 6454 fPDG = -2112; 6455 sPDG = -3122; 6456 tPDG = 211; 6457 fMass= mNeut; 6458 sMass= mLamb; 6459 } 6460 else if(qPDG==889998001 && rM>=lpPi) // "lambda/Delta+" case 6461 { 6462 sPDG = -3122; 6463 tPDG = -211; 6464 sMass= mLamb; 6465 } 6466 else if(qPDG==89000998 && rM>=dSiNe) // "Sigma-/neutron" case 6467 { 6468 fPDG = -2112; 6469 sPDG = -3112; 6470 fMass= mNeut; 6471 sMass= mSigM; 6472 } 6473 else if(qPDG==88998001 && rM>=dSiPr) // "Sigma+/proton" case 6474 { 6475 sPDG = -3222; 6476 sMass= mSigP; 6477 } 6478 else if(qPDG==88000000 && rM>=dLamb) // "diLambda" case 6479 { 6480 fPDG = -3122; 6481 sPDG = -3122; 6482 fMass= mLamb; 6483 sMass= mLamb; 6484 } 6485 else if(qPDG==88000999 && rM>=dKsNe) // "Ksi-/neutron" case 6486 { 6487 fPDG = -2112; 6488 sPDG = -3312; 6489 fMass= mNeut; 6490 sMass= mKsiM; 6491 } 6492 else if(qPDG==87999001 && rM>=dKsPr) // "Ksi0/proton" case 6493 { 6494 sPDG = -3322; 6495 sMass= mKsiZ; 6496 } 6497 else if(qPDG!=89998000|| rM<dProt) // Other possibilities (if not a default) 6498 { 6499 G4int qS = qH->GetStrangeness(); 6500 G4int qB = qH->GetBaryonNumber(); 6501 if(qB>0&&qS<0) // Antistrange diBarion 6502 { 6503 DecayAntiStrange(qH,evaHV); 6504 return; 6505 } 6506 else 6507 { 6508 delete qH; 6509 G4cerr<<"**G4QNuc::DecayAntiDiBar: badPDG="<<qPDG<<" or smallM="<<qM<<", 2mP="<<dProt 6510 <<", 2mN="<<dNeut<<G4endl; 6511 // @@ Nothing to do. Just 2 GeV disappears... Very rare! Just to avoid the exception. 6512 //throw G4QException("G4QNucleus::DecayDibar: Unknown PDG code or small Mass of DB"); 6513 } 6514 } 6515 G4LorentzVector f4Mom(0.,0.,0.,fMass); 6516 G4LorentzVector s4Mom(0.,0.,0.,sMass); 6517 G4LorentzVector t4Mom(0.,0.,0.,tMass); 6518 if(!tPDG&&!four) 6519 { 6520 G4double sum=fMass+sMass; 6521 if(fabs(qM-sum)<eps) 6522 { 6523 f4Mom=q4M*(fMass/sum); 6524 s4Mom=q4M*(sMass/sum); 6525 } 6526 else if(qM<sum || !G4QHadron(q4M).DecayIn2(f4Mom, s4Mom)) 6527 { 6528 G4cout<<"---Warning---G4QN::DecAntiDib:fPDG="<<fPDG<<"(M="<<fMass<<")+sPDG="<<sPDG 6529 <<"(M="<<sMass<<")="<<sum<<" >? TotM="<<q4M.m()<<q4M<<G4endl; 6530 //G4cerr<<"***G4QNucl::DecayDiBar: qM="<<qM<<" < sum="<<sum<<",d="<<sum-qM<<G4endl; 6531 //throw G4QException("***G4QNucleus::DecayDibaryon: DiBaryon DecayIn2 error"); 6532 evaHV->push_back(qH); 6533 return; 6534 } 6535 #ifdef debug 6536 G4cout<<"G4QNucleus::DecayAntiDibaryon:(2) *DONE* f4M="<<f4Mom<<",fPDG="<<fPDG 6537 <<", s4M="<<s4Mom<<",sPDG="<<sPDG<<G4endl; 6538 #endif 6539 delete qH; 6540 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6541 evaHV->push_back(H1); // Fill "H1" (delete equivalent) 6542 G4QHadron* H2 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the 2-nd baryon 6543 evaHV->push_back(H2); // Fill "H2" (delete equivalent) 6544 } 6545 else if(four) 6546 { 6547 q4M=q4M/2.; // Divided in 2 !!! 6548 qM/=2.; // Divide the mass in 2 ! 6549 G4double sum=fMass+sMass; 6550 if(fabs(qM-sum)<eps) 6551 { 6552 f4Mom=q4M*(fMass/sum); 6553 s4Mom=q4M*(sMass/sum); 6554 } 6555 else if(qM<sum || !G4QHadron(q4M).DecayIn2(f4Mom, s4Mom)) 6556 { 6557 G4cout<<"---Warning---G4QN::DecAntiDib:fPDG="<<fPDG<<"(M="<<fMass<<")+sPDG="<<sPDG 6558 <<"(M="<<sMass<<")"<<"="<<sum<<">tM="<<q4M.m()<<q4M<<G4endl; 6559 //G4cerr<<"***G4QN::DecayDibaryon: qM="<<qM<<" < sum="<<sum<<",d="<<sum-qM<<G4endl; 6560 //throw G4QException("***G4QNucleus::DecDibaryon: Dibaryon DecayIn2 error"); 6561 evaHV->push_back(qH); 6562 return; 6563 } 6564 #ifdef debug 6565 G4cout<<"G4QNucleus::DecayAntiDibaryon:(3) *DONE* f4M="<<f4Mom<<",fPDG="<<fPDG 6566 <<", s4M="<<s4Mom<<",sPDG="<<sPDG<<G4endl; 6567 #endif 6568 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6569 evaHV->push_back(H1); // Fill "H1" (delete equivalent) 6570 G4QHadron* H2 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the 2-nd baryon 6571 evaHV->push_back(H2); // Fill "H2" (delete equivalent) 6572 // Now the second pair mus be decayed 6573 if(fabs(qM-sum)<eps) 6574 { 6575 f4Mom=q4M*(fMass/sum); 6576 s4Mom=q4M*(sMass/sum); 6577 } 6578 else if(!G4QHadron(q4M).DecayIn2(f4Mom, s4Mom)) 6579 { 6580 // Should not be here as sum was already compared with qM above for the first delta 6581 delete qH; 6582 G4cerr<<"**G4QNucl::DecAntiDibar:fPDG="<<fPDG<<"(fM="<<fMass<<")+sPDG="<<sPDG<<"(sM=" 6583 <<sMass<<")="<<sum<<" >? (DD2,Can't be here) TotM="<<q4M.m()<<q4M<<G4endl; 6584 throw G4QException("G4QNucleus::DecayAntiDibaryon: General DecayIn2 error"); 6585 } 6586 #ifdef debug 6587 G4cout<<"G4QNucl::DecayAntiDibaryon:(4) *DONE* f4M="<<f4Mom<<",fPDG="<<fPDG 6588 <<", s4M="<<s4Mom<<",sPDG="<<sPDG<<G4endl; 6589 #endif 6590 G4QHadron* H3 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6591 evaHV->push_back(H3); // Fill "H1" (delete equivalent) 6592 G4QHadron* H4 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the 2-nd baryon 6593 evaHV->push_back(H4); // Fill "H2" (delete equivalent) 6594 delete qH; 6595 } 6596 else 6597 { 6598 G4double sum=fMass+sMass+tMass; 6599 if(fabs(qM-sum)<eps) 6600 { 6601 f4Mom=q4M*(fMass/sum); 6602 s4Mom=q4M*(sMass/sum); 6603 t4Mom=q4M*(tMass/sum); 6604 } 6605 else if(qM<sum || !G4QHadron(q4M).DecayIn3(f4Mom, s4Mom, t4Mom)) 6606 { 6607 G4cout<<"-Warning-G4QN::DecAntiDib:fPDG="<<fPDG<<"(M="<<fMass<<")+sPDG="<<sPDG<<"(M=" 6608 <<sMass<<")+tPDG="<<tPDG<<"(tM="<<tMass<<")="<<sum<<">TotM="<<q4M.m()<<G4endl; 6609 //G4cerr<<"***G4QNuc::DecayDibaryon:qM="<<qM<<" < sum="<<sum<<",d="<<sum-qM<<G4endl; 6610 //throw G4QException("G4QNucleus::DecayDibaryon: diBar DecayIn3 error"); 6611 evaHV->push_back(qH); 6612 return; 6613 } 6614 #ifdef debug 6615 G4cout<<"G4QNuc::DecayAbtiDibaryon:(5) *DONE* f4M="<<f4Mom<<",fPDG="<<fPDG<<", s4M=" 6616 <<s4Mom<<",sPDG="<<sPDG<<", t4M="<<t4Mom<<",tPDG="<<tPDG<<G4endl; 6617 #endif 6618 //qH->SetNFragments(2); // Fill a#of fragments to decaying Dibaryon 6619 //evaHV->push_back(qH); // Fill hadron with nf=2 (delete equivalent) 6620 // Instead 6621 delete qH; 6622 // 6623 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6624 evaHV->push_back(H1); // Fill "H1" (delete equivalent) 6625 G4QHadron* H2 = new G4QHadron(sPDG,s4Mom); // Create a Hadron for the 2-nd baryon 6626 evaHV->push_back(H2); // Fill "H2" (delete equivalent) 6627 G4QHadron* H3 = new G4QHadron(tPDG,t4Mom); // Create a Hadron for the meson 6628 evaHV->push_back(H3); // Fill "H3" (delete equivalent) 6629 } 6630 #ifdef qdebug 6631 if (qH) 6632 { 6633 G4cout<<"G4QNucleus::DecayDiBaryon: deleted at end - PDG="<<qH->GetPDGCode()<<G4endl; 6634 delete qH; 6635 } 6636 #endif 6637 } // End of DecayAntiDibaryon 6141 6638 6142 6639 //Decay of the nuclear states with antistrangeness (K:/K0) … … 6159 6656 { 6160 6657 delete qH; 6161 #ifdef qdebug6162 qH=0;6163 #endif6164 6658 G4cerr<<"G4QNuc::DecayAntiStrange:QC="<<qQC<<",S="<<qS<<",B="<<qB<<",4M="<<q4M<<G4endl; 6165 6659 throw G4QException("G4QNucleus::DecayAntiStrange: not an Anti Strange Nucleus"); … … 6362 6856 #endif 6363 6857 delete qH; 6364 #ifdef qdebug6365 qH=0;6366 #endif6367 6858 // 6368 6859 f4Mom/=n1; … … 6405 6896 #endif 6406 6897 delete qH; 6407 #ifdef qdebug6408 qH=0;6409 #endif6410 6898 // 6411 6899 f4Mom/=n1; … … 6471 6959 { 6472 6960 delete qH; 6473 #ifdef qdebug6474 qH=0;6475 #endif6476 6961 G4cerr<<"***G4QNuc::DecayMultyBaryon: PDG="<<qPDG<<G4endl; 6477 6962 throw G4QException("***G4QNuc::DecayMultyBaryon: Can not decay this PDG Code"); … … 6481 6966 { 6482 6967 delete qH; 6483 #ifdef qdebug6484 qH=0;6485 #endif6486 6968 G4cerr<<"**G4QNucleus::DecayMultyBaryon: PDG="<<qPDG<<G4endl; 6487 6969 throw G4QException("***G4QNuc::DecayMultyBaryon: Unknown PDG code of the MultiBaryon"); … … 6512 6994 #endif 6513 6995 delete qH; 6514 #ifdef qdebug6515 qH=0;6516 #endif6517 6996 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6518 6997 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6546 7025 #endif 6547 7026 delete qH; 6548 #ifdef qdebug6549 qH=0;6550 #endif6551 7027 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6552 7028 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6567 7043 #endif 6568 7044 delete qH; 6569 #ifdef qdebug6570 qH=0;6571 #endif6572 7045 for(G4int h=0; h<totBN; h++) 6573 7046 { … … 6619 7092 { 6620 7093 delete qH; 6621 #ifdef qdebug6622 qH=0;6623 #endif6624 7094 G4cerr<<"***G4QNu::DecAlDiN:M(He6="<<mHel6<<")="<<qM<<"<"<<mNeut+mNeut+mAlph<<G4endl; 6625 7095 throw G4QException("G4QNuc::DecayAlphaDiN: Cannot decay excited He6 with this mass"); … … 6629 7099 { 6630 7100 delete qH; 6631 #ifdef qdebug6632 qH=0;6633 #endif6634 7101 G4cerr<<"***G4QNuc::DecayAlphaDiN: PDG="<<qPDG<<G4endl; 6635 7102 throw G4QException("G4QNuc::DecayAlphaDiN: Can not decay this PDG Code"); … … 6658 7125 #endif 6659 7126 delete qH; 6660 #ifdef qdebug6661 qH=0;6662 #endif6663 7127 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6664 7128 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6736 7200 //throw G4QException("G4QNucleus::DecayAlphaBar: DecayIn2 didn't succeed for 3/2"); 6737 7201 evaHV->push_back(qH); 6738 #ifdef qdebug6739 qH=0;6740 #endif6741 7202 return; 6742 7203 } … … 6745 7206 #endif 6746 7207 delete qH; 6747 #ifdef qdebug6748 qH=0;6749 #endif6750 7208 G4LorentzVector rf4Mom=f4Mom/2; 6751 7209 G4QHadron* H1 = new G4QHadron(fPDG,rf4Mom); // Create a Hadron for the 1-st baryon … … 6788 7246 //throw G4QException("G4QNucleus::DecayAlphaBar: t/nn,He3/pp DecayIn3 didn't"); 6789 7247 evaHV->push_back(qH); 6790 #ifdef qdebug6791 qH=0;6792 #endif6793 7248 return; 6794 7249 } … … 6797 7252 #endif 6798 7253 delete qH; 6799 #ifdef qdebug6800 qH=0;6801 #endif6802 7254 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st baryon 6803 7255 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6847 7299 //throw G4QException("G4QNucl::DecayAlphaBar:QuintBaryon DecayIn2 didn't succeed"); 6848 7300 evaHV->push_back(qH); 6849 #ifdef qdebug6850 qH=0;6851 #endif6852 7301 return; 6853 7302 } … … 6856 7305 #endif 6857 7306 delete qH; 6858 #ifdef qdebug6859 qH=0;6860 #endif6861 7307 G4LorentzVector rf4Mom=f4Mom/4; 6862 7308 G4QHadron* H1 = new G4QHadron(fPDG,rf4Mom); // Create a Hadron for the 1-st baryon … … 6887 7333 { 6888 7334 evaHV->push_back(qH); // Fill hadron as it is (delete equivalent) 6889 #ifdef qdebug6890 qH=0;6891 #endif6892 7335 //EvaporateNucleus(qH, evaHV); // Evaporate Nucleus (delete equivivalent) 6893 7336 return; … … 6919 7362 //throw G4QException("***G4QNucl::DecayAlphaBar:Alpha+Baryon DecIn2 didn't succeed"); 6920 7363 evaHV->push_back(qH); 6921 #ifdef qdebug6922 qH=0;6923 #endif6924 7364 return; 6925 7365 } … … 6928 7368 #endif 6929 7369 delete qH; 6930 #ifdef qdebug6931 qH=0;6932 #endif6933 7370 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the alpha 6934 7371 evaHV->push_back(H1); // Fill "H1" (delete equivalent) … … 6957 7394 { 6958 7395 delete qH; 6959 #ifdef qdebug6960 qH=0;6961 #endif6962 7396 G4cerr<<"***G4QNucleus::DecayAlphaAlpha: qPDG="<<qPDG<<G4endl; 6963 7397 throw G4QException("***G4QNucleus::DecayAlphaAlpha: Not Be8 state decais in 2 alphas"); … … 7024 7458 #endif 7025 7459 delete qH; 7026 #ifdef qdebug7027 qH=0;7028 #endif7029 7460 G4QHadron* H1 = new G4QHadron(fPDG,f4Mom); // Create a Hadron for the 1-st alpha 7030 7461 evaHV->push_back(H1); // Fill "H1" (delete equivalent) -
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc
r1228 r1315 25 25 // 26 26 // 27 // $Id: G4QPDGCode.cc,v 1.6 3 2009/11/03 16:13:37 mkossov Exp $28 // GEANT4 tag $Name: geant4-09-0 3$27 // $Id: G4QPDGCode.cc,v 1.65 2010/06/10 08:37:27 mkossov Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ---------------- G4QPDGCode ---------------- … … 67 67 } 68 68 #ifdef debug 69 G4cout<<"G4QPDGCode:Constructer(PDG) PDG="<<PDGCode<<", QCode="<<theQCode<<G4endl;69 if(PDGCode==3222)G4cout<<"G4QPDGCd:Con(PDG) PDG="<<PDGCode<<", QCode="<<theQCode<<G4endl; 70 70 #endif 71 71 } … … 327 327 return -2; 328 328 } 329 else if (PDGC>80000000 &&PDGC<100000000) // Try to convert the NUCCoding to PDGCoding329 else if (PDGC>80000000 && PDGC<100000000) // Try to convert the NUCCoding to PDGCoding 330 330 { 331 331 if(PDGC==90000000) return 6; … … 376 376 } 377 377 } // End of meson case 378 if(b>0) // --> Baryon case379 { 380 if(b==1) 378 if(b>0) // --> Baryoniums case 379 { 380 if(b==1) // --> Baryons+Hyperons 381 381 { 382 382 if(!s) // --> Baryons 383 383 { 384 384 if(z==-1) return 34; // Delta- 385 else if(!z) return 91; // neutron386 else if(z==1)return 91; // proton385 else if(!z) return 20; // neutron 386 else if(z==1)return 21; // proton 387 387 else if(z==2)return 37; // Delta++ 388 388 else if(z==3||z==-2)return -1; // Delta+pi Chipolino … … 391 391 else if(s==1) // --> Hyperons 392 392 { 393 if(z==-1) return 93; // Sigma-394 else if(!z) return 92; // Lambda (@@ 24->Sigma0)395 else if(z==1)return 94; // Sigma+393 if(z==-1) return 23; // Sigma- 394 else if(!z) return 22; // Lambda (@@ 24->Sigma0) 395 else if(z==1)return 25; // Sigma+ 396 396 else if(z==2||z==-2) return -1; // Sigma+pi Chipolino 397 397 else return -2; // Not supported by Q Code … … 399 399 else if(s==2) // --> Xi Hyperons 400 400 { 401 if(z==-1) return 95; // Xi-402 else if(!z) return 96; // Xi0401 if(z==-1) return 26; // Xi- 402 else if(!z) return 27; // Xi0 403 403 else if(z==1||z==-2)return -1; // Xi+pi Chipolino 404 404 else return -2; // Not supported by Q Code … … 406 406 else if(s==3) // --> Xi Hyperons 407 407 { 408 if(z==-1) return 97; // Omega-408 if(z==-1) return 44; // Omega- 409 409 else if(!z||z==-2) return -1; // Omega+pi Chipolino 410 410 else return -2; // Not supported by Q Code … … 433 433 } 434 434 } 435 if (PDGC<80000000) // ----> Direct Baryons & Mesons436 { 437 if (PDGC<100) // => Leptons and field bosons435 if (PDGC<80000000) // ----> Direct Baryons & Mesons 436 { 437 if (PDGC<100) // => Leptons and field bosons 438 438 { 439 439 if (PDGC==10) return -1; // Chipolino … … 458 458 else if(PDGC==220) return 12; // Midle Regeon-Pomeron 459 459 else if(PDGC==330) return 13; // High Regeon-Pomeron 460 #ifdef pdebug460 #ifdef debug 461 461 G4cout<<"***G4QPDGCode::MakeQCode: (0) Unknown in Q-System code: "<<PDGCode<<G4endl; 462 462 #endif … … 465 465 else Q=qr[r]; 466 466 G4int p=PDGC/10; // Quark Content 467 if(r%2) // (2s+1 is odd) Mesons are all the same467 if(r%2) // (2s+1 is odd) Mesons 468 468 { 469 469 if (p==11) return Q+=1; … … 475 475 else 476 476 { 477 #ifdef pdebug478 G4cout<<"* **G4QPDGCode::MakeQCode:(1) Unknown in Q-System code:"<<PDGCode<<G4endl;477 #ifdef debug 478 G4cout<<"*Warning*G4QPDGCode::MakeQCode:(1)UnknownQCode for PDG="<<PDGCode<<G4endl; 479 479 #endif 480 480 return -2; … … 496 496 else 497 497 { 498 #ifdef pdebug499 G4cout<<"* *G4QPDGCode::MakeQCode:(2) Unknown in Q-System code:"<<PDGCode<<G4endl;498 #ifdef debug 499 G4cout<<"*Warning*G4QPDGCode::MakeQCode:(2) UnknownQCode, PDG="<<PDGCode<<G4endl; 500 500 #endif 501 501 return -2; … … 517 517 else 518 518 { 519 #ifdef pdebug519 #ifdef debug 520 520 G4cout<<"**G4QPDGCode::MakeQCode:(3) Unknown in Q-System code:"<<PDGCode<<G4endl; 521 521 #endif … … 532 532 if(t%3 || abs(t)<3) // b=0 are in mesons 533 533 { 534 #ifdef pdebug534 #ifdef debug 535 535 G4cout<<"***G4QPDGCode::MakeQCode: Unknown PDGCode="<<PDGCode<<", t="<<t<<G4endl; 536 536 #endif … … 547 547 else 548 548 { 549 #ifdef pdebug549 #ifdef debug 550 550 G4cout<<"**G4QPDGCode::MakeQCode:(5) Unknown in Q-System code:"<<PDGCode<<G4endl; 551 551 #endif … … 563 563 else 564 564 { 565 #ifdef pdebug565 #ifdef debug 566 566 G4cout<<"**G4QPDGCode::MakeQCode:(6) Unknown in Q-System code:"<<PDGCode<<G4endl; 567 567 #endif … … 581 581 else 582 582 { 583 #ifdef pdebug583 #ifdef debug 584 584 G4cout<<"**G4QPDGCode::MakeQCode:(7) Unknown in Q-System code:"<<PDGCode<<G4endl; 585 585 #endif … … 632 632 } 633 633 } 634 #ifdef pdebug 635 G4cout<<"***G4QPDGCode::MakeQCode: () Unknown in Q-System code: "<<PDGCode<<G4endl; 636 #endif 637 // return -2; not reachable statement 634 G4cout<<"*Warning*G4QPDGCode::MakeQCode:() Unknown Q Code for PDG = "<<PDGCode<<G4endl; 635 return -2; //not reachable statement (fake, only for compiler) 638 636 } 639 637 … … 642 640 {// ===================== 643 641 G4int ab=theQCode; 644 #ifdef debug 642 #ifdef pdebug 643 G4bool pPrint = thePDGCode == 3222 || ab == 25; 644 if(pPrint) 645 645 G4cout<<"G4QPDGCode::GetMass: Mass for Q="<<ab<<",PDG="<<thePDGCode<<",N="<<nQHM<<G4endl; 646 646 #endif 647 647 if ( (ab < 0 && thePDGCode < 80000000) || !thePDGCode) { 648 #ifdef debug649 if(thePDGCode!=10 )648 #ifdef pdebug 649 if(thePDGCode!=10 && pPrint) 650 650 G4cout<<"**G4QPDGCode::GetMass:m=100000.,QC="<<theQCode<<",PDG="<<thePDGCode<<G4endl; 651 651 #endif … … 654 654 else if(ab>-1 && ab<nQHM) 655 655 { 656 #ifdef debug 657 G4cout<<"G4QPDGCode::GetMa:m="<<QHaM(ab)<<",Q="<<theQCode<<",PDG="<<thePDGCode<<G4endl; 658 #endif 659 return QHaM(ab); // Get mass from the table 656 G4double mass = QHaM(ab); 657 #ifdef pdebug 658 //if(pPrint) 659 if(thePDGCode == 3222 || ab == 25) 660 G4cout<<"G4QPDGCode::GetMa:m="<<mass<<",Q="<<theQCode<<",PDG="<<thePDGCode<<G4endl; 661 #endif 662 return mass; // Get mass from the table 660 663 } 661 664 //if(szn==0) return m[15]; // @@ mPi0 @@ MK ? 662 665 if(thePDGCode==90000000) 663 666 { 664 #ifdef debug 667 #ifdef pdebug 668 if(pPrint) 665 669 G4cout<<"G4QPDGCode::GetMass:***m=0, QC="<<theQCode<<",PDG="<<thePDGCode<<G4endl; 666 670 #endif … … 672 676 ConvertPDGToZNS(thePDGCode, z, n, s); 673 677 G4double m=GetNuclMass(z,n,s); 674 #ifdef debug 678 #ifdef pdebug 679 if(pPrint) 675 680 G4cout<<"G4QPDG::GetM:PDG="<<thePDGCode<<"=>Z="<<z<<",N="<<n<<",S="<<s<<",M="<<m<<G4endl; 676 681 #endif … … 684 689 //static const int nW = 72; 685 690 //static const int nW = 80; // "Isobars" 686 static const int nW = 90; // "Leptons/Hypernuclei" 687 static G4double width[nW] = {0.,0.,0.,0.,0.,0.,0.,2.495,2.118,10. 691 static G4double width[nQHM] = {0.,0.,0.,0.,0.,0.,0.,2.495,2.118,10. 688 692 , 10., 800., 75., 350., 0., 0., .00118, 0., 0., .203 689 693 , 0., 0., 0., 0., 0., 0., 0., 0., 160., 160. … … 695 699 , 198., 149., 120., 120., 170., 170., 120., 120., 170., 170.}; 696 700 G4int ab=abs(theQCode); 697 if(ab<n W) return width[ab];701 if(ab<nQHM) return width[ab]; 698 702 return 0.; // @@ May be real width should be implemented for nuclei e.g. pp 699 703 } … … 928 932 { 929 933 NZS1max=s; 930 G4cout<<">>>>>>>>>> >>>G4QPDGCode::GetMass: Z=-1, S="<<s<<">2 with N="<<n<<G4endl;934 G4cout<<">>>>>>>>>>G4QPDGCode::GetNucMass: Z=-1, S="<<s<<">2 with N="<<n<<G4endl; 931 935 } 932 936 #endif … … 988 992 { 989 993 NZmin=z; 990 G4cout<<">>>>>> >>>G4QPDGCode::GetMass: Z="<<z<<"<-1 with N="<<n<<", S="<<s<<G4endl;994 G4cout<<">>>>>>G4QPDGCode::GetNucMass: Z="<<z<<"<-1 with N="<<n<<", S="<<s<<G4endl; 991 995 } 992 996 #endif … … 1036 1040 { 1037 1041 NNS1max=s; 1038 G4cout<<">>>>>>>>>> >>>G4QPDGCode::GetMass: N=-1, S="<<s<<">2 with Z="<<z<<G4endl;1042 G4cout<<">>>>>>>>>>G4QPDGCode::GetNucMass: N=-1, S="<<s<<">2 with Z="<<z<<G4endl; 1039 1043 } 1040 1044 #endif … … 1096 1100 { 1097 1101 NNmin=n; 1098 G4cout<<">>>>>> >>>G4QPDGCode::GetMass: N="<<n<<"<-1 with Z="<<z<<", S="<<s<<G4endl;1102 G4cout<<">>>>>>G4QPDGCode::GetNucMass: N="<<n<<"<-1 with Z="<<z<<", S="<<s<<G4endl; 1099 1103 } 1100 1104 #endif … … 1103 1107 } 1104 1108 //return CalculateNuclMass(z,n,s); // @@ This is just to compare the calculation time @@ 1109 if(nz >= 256 || z >= nEl) return 256000.; 1105 1110 if(!s) // **************> S=0 nucleus 1106 1111 { 1107 if(nz==256) return 256000.;1108 1112 G4int Nmin=iNF[z]; // Minimun N(Z) for the Dynamic Associative Memory (DAM) 1109 1113 if(!iNin0[z]) // ====> This element is already initialized 1110 1114 { 1111 1115 #ifdef idebug 1112 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=0 is initialized. F="<<iNin0[z]<<G4endl;1116 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=0 is initialized. F="<<iNin0[z]<<G4endl; 1113 1117 #endif 1114 1118 G4int iNfin=iNL[z]; … … 1123 1127 if(n<iNmin[z]) 1124 1128 { 1125 G4cout<<">>>>G4QPDGCode::Get Mass:Z="<<z<<", S=0 with N="<<n<<"<"<<iNmin[z]<<G4endl;1129 G4cout<<">>>>G4QPDGCode::GetNucM:Z="<<z<<", S=0 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1126 1130 iNmin[z]=n; 1127 1131 } … … 1135 1139 if(dNn>iNmax) 1136 1140 { 1137 G4cout<<"**>>G4QPDGCode::Get Mass:Z="<<z<<", S=0 with dN="<<dNn<<">"<<iNmax<<G4endl;1141 G4cout<<"**>>G4QPDGCode::GetNucM:Z="<<z<<", S=0 with dN="<<dNn<<">"<<iNmax<<G4endl; 1138 1142 iNmax=dNn; 1139 1143 } 1140 1144 if(dNn>iNran[z]) 1141 1145 { 1142 G4cout<<">G4QPDGCode::Get Mass:Z="<<z<<", S=0 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1146 G4cout<<">G4QPDGCode::GetNucM:Z="<<z<<", S=0 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1143 1147 iNran[z]=dNn; 1144 1148 } … … 1149 1153 else if(s==1) // ******************> S=1 nucleus 1150 1154 { 1151 1152 1155 G4int Nmin=iNF[z]; // Minimun N(Z) for the Dynamic Associative Memory (DAM) 1156 #ifdef pdebug 1157 G4bool pPrint = !z && !n; 1158 if(pPrint) 1159 G4cout<<"G4QPDGC::GetNucM:Nmin="<<Nmin<<",iNin1="<<iNin1[0]<<",iNL="<<iNL[0]<<G4endl; 1160 #endif 1153 1161 if(!iNin1[z]) // ====> This element is already initialized 1154 1162 { 1155 #ifdef idebug 1156 G4cout<<"**>G4QPDGCode::GetMass:Z="<<z<<", S=1 is initialized. F="<<iNin1[z]<<G4endl; 1163 #ifdef pdebug 1164 if(pPrint) 1165 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=1 is initialized. F="<<iNin1[z]<<G4endl; 1157 1166 #endif 1158 1167 G4int iNfin=iNL[z]; … … 1167 1176 if(n<iNmin[z]) 1168 1177 { 1169 G4cout<<">>>>G4QPDGCode::Get Mass:Z="<<z<<", S=1 with N="<<n<<"<"<<iNmin[z]<<G4endl;1178 G4cout<<">>>>G4QPDGCode::GetNucM:Z="<<z<<", S=1 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1170 1179 iNmin[z]=n; 1171 1180 } … … 1179 1188 if(dNn>iNmax) 1180 1189 { 1181 G4cout<<"**>>G4QPDGCode::Get Mass:Z="<<z<<", S=1 with dN="<<dNn<<">"<<iNmax<<G4endl;1190 G4cout<<"**>>G4QPDGCode::GetNucM:Z="<<z<<", S=1 with dN="<<dNn<<">"<<iNmax<<G4endl; 1182 1191 iNmax=dNn; 1183 1192 } 1184 1193 if(dNn>iNran[z]) 1185 1194 { 1186 G4cout<<">G4QPDGCode::Get Mass:Z="<<z<<", S=1 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1195 G4cout<<">G4QPDGCode::GetNucM:Z="<<z<<", S=1 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1187 1196 iNran[z]=dNn; 1188 1197 } … … 1197 1206 { 1198 1207 #ifdef idebug 1199 G4cout<<"*>G4QPDGCode::Get Mass:Z="<<z<<", S=-1 is initialized. F="<<iNin9[z]<<G4endl;1208 G4cout<<"*>G4QPDGCode::GetNucM:Z="<<z<<", S=-1 is initialized. F="<<iNin9[z]<<G4endl; 1200 1209 #endif 1201 1210 G4int iNfin=iNL[z]; … … 1210 1219 if(n<iNmin[z]) 1211 1220 { 1212 G4cout<<">>>G4QPDGCode::Get Mass:Z="<<z<<" ,S=-1 with N="<<n<<"<"<<iNmin[z]<<G4endl;1221 G4cout<<">>>G4QPDGCode::GetNucM:Z="<<z<<" ,S=-1 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1213 1222 iNmin[z]=n; 1214 1223 } … … 1222 1231 if(dNn>iNmax) 1223 1232 { 1224 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=-1 with dN="<<dNn<<">"<<iNmax<<G4endl;1233 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=-1 with dN="<<dNn<<">"<<iNmax<<G4endl; 1225 1234 iNmax=dNn; 1226 1235 } 1227 1236 if(dNn>iNran[z]) 1228 1237 { 1229 G4cout<<"G4QPDGCode::Get Mass:Z="<<z<<", S=-1 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1238 G4cout<<"G4QPDGCode::GetNucM:Z="<<z<<", S=-1 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1230 1239 iNran[z]=dNn; 1231 1240 } … … 1240 1249 { 1241 1250 #ifdef idebug 1242 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=2 is initialized. F="<<iNin2[z]<<G4endl;1251 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=2 is initialized. F="<<iNin2[z]<<G4endl; 1243 1252 #endif 1244 1253 G4int iNfin=iNL[z]; … … 1253 1262 if(n<iNmin[z]) 1254 1263 { 1255 G4cout<<">>>>G4QPDGCode::Get Mass:Z="<<z<<", S=2 with N="<<n<<"<"<<iNmin[z]<<G4endl;1264 G4cout<<">>>>G4QPDGCode::GetNucM:Z="<<z<<", S=2 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1256 1265 iNmin[z]=n; 1257 1266 } … … 1265 1274 if(dNn>iNmax) 1266 1275 { 1267 G4cout<<"**>>G4QPDGCode::Get Mass:Z="<<z<<", S=2 with dN="<<dNn<<">"<<iNmax<<G4endl;1276 G4cout<<"**>>G4QPDGCode::GetNucM:Z="<<z<<", S=2 with dN="<<dNn<<">"<<iNmax<<G4endl; 1268 1277 iNmax=dNn; 1269 1278 } 1270 1279 if(dNn>iNran[z]) 1271 1280 { 1272 G4cout<<">G4QPDGCode::Get Mass:Z="<<z<<", S=2 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1281 G4cout<<">G4QPDGCode::GetNucM:Z="<<z<<", S=2 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1273 1282 iNran[z]=dNn; 1274 1283 } … … 1283 1292 { 1284 1293 #ifdef idebug 1285 G4cout<<"*>G4QPDGCode::Get Mass:Z="<<z<<", S=-2 is initialized. F="<<iNin8[z]<<G4endl;1294 G4cout<<"*>G4QPDGCode::GetNucM:Z="<<z<<", S=-2 is initialized. F="<<iNin8[z]<<G4endl; 1286 1295 #endif 1287 1296 G4int iNfin=iNL[z]; … … 1296 1305 if(n<iNmin[z]) 1297 1306 { 1298 G4cout<<">>>G4QPDGCode::Get Mass:Z="<<z<<", S=-2 with N="<<n<<"<"<<iNmin[z]<<G4endl;1307 G4cout<<">>>G4QPDGCode::GetNucM:Z="<<z<<", S=-2 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1299 1308 iNmin[z]=n; 1300 1309 } … … 1308 1317 if(dNn>iNmax) 1309 1318 { 1310 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=-2 with dN="<<dNn<<">"<<iNmax<<G4endl;1319 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=-2 with dN="<<dNn<<">"<<iNmax<<G4endl; 1311 1320 iNmax=dNn; 1312 1321 } 1313 1322 if(dNn>iNran[z]) 1314 1323 { 1315 G4cout<<"G4QPDGCode::Get Mass:Z="<<z<<", S=-2 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1324 G4cout<<"G4QPDGCode::GetNucM:Z="<<z<<", S=-2 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1316 1325 iNran[z]=dNn; 1317 1326 } … … 1326 1335 { 1327 1336 #ifdef idebug 1328 G4cout<<"*>G4QPDGCode::Get Mass:Z="<<z<<", S=-3 is initialized. F="<<iNin7[z]<<G4endl;1337 G4cout<<"*>G4QPDGCode::GetNucM:Z="<<z<<", S=-3 is initialized. F="<<iNin7[z]<<G4endl; 1329 1338 #endif 1330 1339 G4int iNfin=iNL[z]; … … 1339 1348 if(n<iNmin[z]) 1340 1349 { 1341 G4cout<<">>>G4QPDGCode::Get Mass:Z="<<z<<", S=-3 with N="<<n<<"<"<<iNmin[z]<<G4endl;1350 G4cout<<">>>G4QPDGCode::GetNucM:Z="<<z<<", S=-3 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1342 1351 iNmin[z]=n; 1343 1352 } … … 1351 1360 if(dNn>iNmax) 1352 1361 { 1353 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=-3 with dN="<<dNn<<">"<<iNmax<<G4endl;1362 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=-3 with dN="<<dNn<<">"<<iNmax<<G4endl; 1354 1363 iNmax=dNn; 1355 1364 } 1356 1365 if(dNn>iNran[z]) 1357 1366 { 1358 G4cout<<"G4QPDGCode::Get Mass:Z="<<z<<", S=-3 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1367 G4cout<<"G4QPDGCode::GetNucM:Z="<<z<<", S=-3 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1359 1368 iNran[z]=dNn; 1360 1369 } … … 1369 1378 { 1370 1379 #ifdef idebug 1371 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=3 is initialized. F="<<iNin3[z]<<G4endl;1380 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=3 is initialized. F="<<iNin3[z]<<G4endl; 1372 1381 #endif 1373 1382 G4int iNfin=iNL[z]; … … 1382 1391 if(n<iNmin[z]) 1383 1392 { 1384 G4cout<<">>>>G4QPDGCode::Get Mass:Z="<<z<<", S=3 with N="<<n<<"<"<<iNmin[z]<<G4endl;1393 G4cout<<">>>>G4QPDGCode::GetNucM:Z="<<z<<", S=3 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1385 1394 iNmin[z]=n; 1386 1395 } … … 1394 1403 if(dNn>iNmax) 1395 1404 { 1396 G4cout<<"**>>G4QPDGCode::Get Mass:Z="<<z<<", S=3 with dN="<<dNn<<">"<<iNmax<<G4endl;1405 G4cout<<"**>>G4QPDGCode::GetNucM:Z="<<z<<", S=3 with dN="<<dNn<<">"<<iNmax<<G4endl; 1397 1406 iNmax=dNn; 1398 1407 } 1399 1408 if(dNn>iNran[z]) 1400 1409 { 1401 G4cout<<">G4QPDGCode::Get Mass:Z="<<z<<", S=3 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1410 G4cout<<">G4QPDGCode::GetNucM:Z="<<z<<", S=3 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1402 1411 iNran[z]=dNn; 1403 1412 } … … 1412 1421 { 1413 1422 #ifdef idebug 1414 G4cout<<"*>G4QPDGCode::Get Mass:Z="<<z<<", S=-4 is initialized. F="<<iNin6[z]<<G4endl;1423 G4cout<<"*>G4QPDGCode::GetNucM:Z="<<z<<", S=-4 is initialized. F="<<iNin6[z]<<G4endl; 1415 1424 #endif 1416 1425 G4int iNfin=iNL[z]; … … 1425 1434 if(n<iNmin[z]) 1426 1435 { 1427 G4cout<<">>>G4QPDGCode::Get Mass:Z="<<z<<", S=-4 with N="<<n<<"<"<<iNmin[z]<<G4endl;1436 G4cout<<">>>G4QPDGCode::GetNucM:Z="<<z<<", S=-4 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1428 1437 iNmin[z]=n; 1429 1438 } … … 1437 1446 if(dNn>iNmax) 1438 1447 { 1439 G4cout<<"**>G4QPDGCode::Get Mass:Z="<<z<<", S=-4 with dN="<<dNn<<">"<<iNmax<<G4endl;1448 G4cout<<"**>G4QPDGCode::GetNucM:Z="<<z<<", S=-4 with dN="<<dNn<<">"<<iNmax<<G4endl; 1440 1449 iNmax=dNn; 1441 1450 } 1442 1451 if(dNn>iNran[z]) 1443 1452 { 1444 G4cout<<"G4QPDGCode::Get Mass:Z="<<z<<", S=-4 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1453 G4cout<<"G4QPDGCode::GetNucM:Z="<<z<<", S=-4 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1445 1454 iNran[z]=dNn; 1446 1455 } … … 1455 1464 { 1456 1465 #ifdef idebug 1457 G4cout<<"*>G4QPDGCode::Get Mass:Z="<<z<<", S=4 is initialized. F="<<iNin4[z]<<G4endl;1466 G4cout<<"*>G4QPDGCode::GetNucM:Z="<<z<<", S=4 is initialized. F="<<iNin4[z]<<G4endl; 1458 1467 #endif 1459 1468 G4int iNfin=iNL[z]; … … 1468 1477 if(n<iNmin[z]) 1469 1478 { 1470 G4cout<<">>>>G4QPDGCode::Get Mass:Z="<<z<<", S=4 with N="<<n<<"<"<<iNmin[z]<<G4endl;1479 G4cout<<">>>>G4QPDGCode::GetNucM:Z="<<z<<", S=4 with N="<<n<<"<"<<iNmin[z]<<G4endl; 1471 1480 iNmin[z]=n; 1472 1481 } … … 1480 1489 if(dNn>iNmax) 1481 1490 { 1482 G4cout<<"**>>G4QPDGCode::Get Mass:Z="<<z<<", S=4 with dN="<<dNn<<">"<<iNmax<<G4endl;1491 G4cout<<"**>>G4QPDGCode::GetNucM:Z="<<z<<", S=4 with dN="<<dNn<<">"<<iNmax<<G4endl; 1483 1492 iNmax=dNn; 1484 1493 } 1485 1494 if(dNn>iNran[z]) 1486 1495 { 1487 G4cout<<">G4QPDGCode::Get Mass:Z="<<z<<", S=4 with dN="<<dNn<<">"<<iNran[z]<<G4endl;1496 G4cout<<">G4QPDGCode::GetNucM:Z="<<z<<", S=4 with dN="<<dNn<<">"<<iNran[z]<<G4endl; 1488 1497 iNran[z]=dNn; 1489 1498 } … … 1499 1508 if(s<Smin) Smin=s; 1500 1509 if(s>Smax) Smax=s; 1501 G4cout<<">>G4QPDGCode::Get Mass:Z="<<z<<" with S="<<s<<",N="<<n<<" (Improve)"<<G4endl;1510 G4cout<<">>G4QPDGCode::GetNucM:Z="<<z<<" with S="<<s<<",N="<<n<<" (Improve)"<<G4endl; 1502 1511 } 1503 1512 #endif … … 1508 1517 #endif 1509 1518 return rm; 1510 } 1519 } // End of GetNuclearMass 1511 1520 1512 1521 // Calculate a nuclear mass for Z (a#of protons), N (a#of neutrons), & S (a#of lambdas) … … 1625 1634 return 0.; // Photon mass 1626 1635 } 1636 else if(!N&&!Z&&S==1) return mL; 1637 else if(!N&&Z==1&&!S) return mP; 1638 else if(N==1&&!Z&&!S) return mN; 1627 1639 else if(!N&&!Z&&S>1) return mL*S+eps; 1628 1640 else if(!N&&Z>1&&!S) return mP*Z+eps; -
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc
r1228 r1315 28 28 // 29 29 // 30 // $Id: G4Quasmon.cc,v 1.12 1 2009/12/03 18:09:07 mkossov Exp $31 // GEANT4 tag $Name: geant4-09-0 3$30 // $Id: G4Quasmon.cc,v 1.125 2010/06/10 08:37:27 mkossov Exp $ 31 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 32 32 // 33 33 // ---------------- G4Quasmon ---------------- … … 596 596 G4LorentzVector cr4Mom=zeroLV; // 4-momentum prototype for the ColResQuasmon 597 597 G4int kCount =0; // Counter of attempts of k for hadronization 598 // 599 //G4int qCountMax=27; // Try different q to come over CoulBar or SepE 600 //G4int qCountMax=12; // Try different q to come over CoulBar or SepE 601 //G4int qCountMax=9; // Try different q to come over CoulBar or SepE 602 //G4int qCountMax=3; // Try different q to come over CoulBar or SepE 603 G4int qCountMax=1; // Try different q to come over CoulBar or SepE 604 if(excE > diPiM) qCountMax=(G4int)(excE/mPi0); // Try more for big excess 605 // 598 606 //G4int kCountMax=27; 599 607 //G4int kCountMax=9; 600 608 //G4int kCountMax=3; // Try different k if they are below minK 601 609 G4int kCountMax=1; // "No reson to increase it" 610 //G4int kCountMax=qCountMax; // "No reson to increase it" 602 611 //G4int kCountMax=0; //@@ *** Close search for the minimum k *** 603 //604 //G4int qCountMax=27; // Try different q to come over CoulBar or SepE605 G4int qCountMax=12; // Try different q to come over CoulBar or SepE606 //G4int qCountMax=9; // Try different q to come over CoulBar or SepE607 //G4int qCountMax=3; // Try different q to come over CoulBar or SepE608 //G4int qCountMax=1; // Try different q to come over CoulBar or SepE609 612 // 610 613 //G4int pCountMax=27; //Try differentHadrons(Parents) forBetterRecoil … … 613 616 G4int pCountMax=1; //Try differentHadrons(Parents) forBetterRecoil 614 617 //if(envA>0) pCountMax=3; 615 //if(envA>0&&envA<31) 616 if(envA>0&&envA<61) 617 { 618 //pCountMax=60/envA; 619 pCountMax=120/envA; 620 //kCountMax=pCountMax; // See above ! 621 } 618 if(envA>0&&envA<19) pCountMax=36/envA; 619 //if(envA>0&&envA<31) pCountMax=60/envA; 620 //if(envA>0&&envA<61) pCountMax=120/envA; 622 621 G4bool gintFlag=false; // Flag of gamma interaction with one quark 623 622 while(kCount<kCountMax&&kCond) … … 1109 1108 ClearQuasmon(); // This Quasmon is done 1110 1109 } 1111 #ifdef pdebug1110 #ifdef debug 1112 1111 G4cout<<"***G4Q::HQ:dE="<<excE<<">minK="<<minK<<",Env="<<theEnvironment<<",k="<<kLS 1113 1112 <<",Q="<<valQ<<quasM<<", nQ="<<nQuasms<<G4endl; … … 1177 1176 if(!sPDG&&theEnvironment.GetPDG()!=NUCPDG&&totBN>1&&totMass>totM&&totS>=0) 1178 1177 { 1179 #ifdef p pdebug1178 #ifdef pdebug 1180 1179 G4cout<<"G4Quas::HQ:NEED-EVAP-1:Q="<<q4Mom<<valQ<<",En="<<theEnvironment<<G4endl; 1181 1180 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (1)"); //@@ TMP … … 1203 1202 if(totBN>1&&totMass>totM&&totS>=0) 1204 1203 { 1205 #ifdef p pdebug1204 #ifdef pdebug 1206 1205 G4cout<<"G4Q::HQ:NEED-EVAP-2:Q="<<q4Mom<<valQ<<",E="<<theEnvironment<<G4endl; 1207 1206 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (2)"); //@@ TMP … … 1220 1219 else if(nQuasms>1) 1221 1220 { 1222 #ifdef p pdebug1221 #ifdef pdebug 1223 1222 G4cout<<"G4Quas::HQ:NEED-EVAP-0:Q="<<q4Mom<<valQ<<",En="<<theEnvironment<<G4endl; 1224 1223 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (0)"); //@@ TMP … … 1242 1241 else if(rPDG!=NUCPDG&&totBN>1&&totMass>totM&&totS>=0) // ===> "Evaporation" case 1243 1242 { 1244 #ifdef p pdebug1243 #ifdef pdebug 1245 1244 G4QContent nTotQC=totQC-neutQC; 1246 1245 G4QNucleus nTotN(nTotQC); // PseudoNucleus for TotalResidual to neutron … … 1561 1560 qCond=true; 1562 1561 G4int qCount=0; 1563 #ifdef p pdebug1562 #ifdef pdebug 1564 1563 G4double dM=0.; 1565 1564 if(sPDG==90001001) dM=2.25; // Binding energy of the deuteron ??? … … 1573 1572 if(resTNM && totMass<resTNM+sMass)// Probably it never takes place 1574 1573 { 1575 #ifdef p pdebug1574 #ifdef pdebug 1576 1575 G4cout<<"***G4Quasmon::HadronizeQuasmon:***PANIC#1***TotalDE="<<excE<<"< bE=" 1577 1576 <<sMass-pMass-dM<<", dM="<<dM<<", sM="<<sMass<<", bM="<<pMass<<G4endl; … … 1644 1643 //**PSLtest**//G4double z= pow((loli+hili)/2,pw);// ***TMP Mid q-RANDOMIZE*** 1645 1644 G4double ctkk=1.-(dex/(1.-z)-pMass)/kLS;// cos(theta_k,kappa) in LS 1646 #ifdef p pdebug1645 #ifdef pdebug 1647 1646 if(qCount) G4cout<<"G4Q::HQ:qC="<<qCount<<",ct="<<ctkk<<",M="<<pMass<<",z=" 1648 1647 <<z<<",zl="<<pow(loli,pw)<<",zh="<<pow(hili,pw)<<",dE=" … … 1922 1921 { 1923 1922 hsflag=true; // Decay in ThisHadron/Fragment+(SHadron) 1924 #ifdef pdebug1923 #ifdef debug 1925 1924 G4cout<<"G4Q::HQ:NO,hsfl=1,kt="<<kt<<"<"<<minSqB<<" or M="<<tM<<"<"<<rtM<<G4endl; 1926 1925 #endif … … 2138 2137 PMEMhsfl=hsflag; 2139 2138 PMEMnucf=nucflag; 2140 #ifdef pdebug2139 #ifdef debug 2141 2140 G4cout<<"G4Q::HQ:RemTheBest rPDG="<<rPDG<<",sPDG="<<sPDG<<",kt="<<kt<<G4endl; 2142 2141 #endif … … 2169 2168 PMEMhsfl=hsflag; 2170 2169 PMEMnucf=nucflag; 2171 #ifdef pdebug2170 #ifdef debug 2172 2171 G4cout<<"G4Q::HQ:RemTheFirst rPDG="<<rPDG<<",sPDG="<<sPDG<<",kt="<<kt<<G4endl; 2173 2172 #endif … … 2205 2204 pCount++; 2206 2205 } // End of the WHILE of the parent choice 2207 #ifdef pdebug2206 #ifdef debug 2208 2207 G4cout<<"G4Q::HQ:>rPDG="<<rPDG<<curQ<<",sPDG="<<sPDG<<",kt="<<kt<<",F="<<fprob 2209 2208 <<",totQC="<<totQC<<",sQC="<<sQC<<G4endl; … … 2234 2233 ) aMass=0.; // No Pi0 cond.(eg in NucE) 2235 2234 2236 #ifdef pdebug2235 #ifdef debug 2237 2236 G4cout <<"G4Q::HQ:Is hsfl="<<hsflag<<" or fdul="<<fdul<<" or [rM="<<rMass<<"<"<<reMass 2238 2237 <<" + "<<aMass<<" or rM2="<<reTNM2<<" < miM2="<<tmpTM2<<" and ePDG="<<envPDG … … 2264 2263 if(rQ4Mom==zeroLV) 2265 2264 { 2266 #ifdef p pdebug2265 #ifdef pdebug 2267 2266 G4cout<<"G4Q::HQ:NEEDS-EVAP-5,Q="<<q4Mom<<valQ<<",QEnv="<<theEnvironment<<G4endl; 2268 2267 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (5)"); //@@ TMP … … 2376 2375 //else if(2>3) // ********** Forced Evaporation is Closed ************ 2377 2376 { 2378 #ifdef p pdebug2377 #ifdef pdebug 2379 2378 //@@ May be recalculate hadronization ?? 2380 2379 G4double fraM=fr4Mom.m(); … … 2678 2677 if(CheckGroundState()) ClearQuasmon();// This Quasmon is done 2679 2678 //if(CheckGroundState(true)) KillQuasmon();// This Quasmon is done 2680 #ifdef p pdebug2679 #ifdef pdebug 2681 2680 G4cerr<<"G4Q::HQ:NeedsEvap7:s="<<sPDG<<",Q="<<q4Mom<<valQ<<",r="<<rPDG<<G4endl; 2682 2681 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (7)"); //@@ TMP … … 2725 2724 //if(2>3) // This Evaporation channel is closed 2726 2725 { 2727 #ifdef p pdebug2726 #ifdef pdebug 2728 2727 G4cerr<<"***G4Q::HQ:E-8:RQM+SM="<<reMass+sMass<<">QM="<<quasM<<", sCB="<<sCB 2729 2728 <<" + rCB="<<rCB<<" + rM="<<reMass<<" + sMass="<<sMass<<" + eM="<<envM<<" = " … … 2802 2801 { 2803 2802 G4QContent resNQC=totQC-sQC; // Quark Content of the totNucleus-Fragment 2804 #ifdef pdebug2803 #ifdef debug 2805 2804 G4cerr<<"---Warning---G4Q::HQ:M="<<tmM<<"=>rPDG="<<rPDG<<"(rM="<<reMass<<")+sPDG=" 2806 2805 <<sPDG<<"(sM="<<sMass<<")="<<sum<<",resNQC="<<resNQC<<G4endl; … … 3026 3025 G4QNucleus nucZ(lanQC-Pi0QC); // New neucleus for the residual for Pi- 3027 3026 G4double nreZ=nucZ.GetGSMass(); // Mass of the residual for Pi- 3028 #ifdef pdebug3027 #ifdef debug 3029 3028 G4cout<<"G4Q::HQ:LsPDG="<<sPDG<<",rPDG="<<rPDG<<",Z="<<nucZ<<",M="<<nucM<<G4endl; 3030 3029 #endif … … 3220 3219 if(sKE<sCB) // => "KinEn is below CB, try once more" case 3221 3220 { 3222 #ifdef p pdebug3221 #ifdef pdebug 3223 3222 G4cout<<"****G4Q::HQ:E-9: sKE="<<sKE<<"<sCB="<<sCB<<G4endl; 3224 3223 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (9)"); //@@ TMP … … 3253 3252 { 3254 3253 //if(totBN>1&&totMass>totM&&totS>=0) //@@ ?? 3255 #ifdef p pdebug3254 #ifdef pdebug 3256 3255 G4cout<<"G4Q::HQ:*NEEDS-EVAP-10* M="<<resTotN4Mom.m()<<"<miM="<<resTotNM<<G4endl; 3257 3256 throw G4QException("G4Quasmon::HadronizeQuasmon: Why Fail? (10)"); //@@ TMP … … 3329 3328 rK0PDG == NUCPDG ) 3330 3329 { 3331 #ifdef p pdebug3330 #ifdef pdebug 3332 3331 G4cout<<"G4Q::HQ:***PANIC#2***tM="<<totMass<<"<KM="<<mK<<","<<mK0<<",rM="<<rKPM 3333 3332 <<","<<rK0M<<",d="<<mK+rKPM-totMass<<","<<mK0+rK0M-totMass<<G4endl; … … 3445 3444 <<",d="<<rMass+sMass-q4Mom.m()<<G4endl; 3446 3445 #endif 3447 #ifdef p pdebug3446 #ifdef pdebug 3448 3447 throw G4QException("G4Quasmon::HadronizeQuasmon: Why PANIC? (3)"); //@@ TMP 3449 3448 #endif … … 3636 3635 G4QHadronVector* theFragments = new G4QHadronVector; // user is responsible to delete! 3637 3636 G4int nHadrs=theQHadrons.size(); 3638 #ifdef pdebug3637 #ifdef debug 3639 3638 G4cout<<"G4Q::DecayQuasmon:After decay (FillHadronVector byItself) nH="<<nHadrs<<G4endl; 3640 3639 #endif … … 3644 3643 theFragments->push_back(curHadr); // (user must delete) 3645 3644 } 3646 #ifdef p pdebug3645 #ifdef pdebug 3647 3646 else G4cerr<<"*******G4Quasmon::DecayQuasmon: *** Nothing is in the output ***"<<G4endl; 3648 3647 #endif … … 3720 3719 else if(thePDG==89999002) thePDG=1114; // Delta-(resonance) === bary-DECUPLET/OCTET 3721 3720 else if(thePDG==90001999) thePDG=2224; // Delta++(res)(Delta0&Delta+ a covered by n&p) 3721 else if(thePDG==91000000) thePDG=3122; // Lambda 3722 3722 else if(thePDG==90999001) thePDG=3112; // Sigma- 3723 3723 else if(thePDG==91000999) thePDG=3222; // Sigma+ (Sigma0 iz covered by Lambda) … … 3769 3769 //G4double fragMas=qH->GetMass(); // GrStMass of the nuclear fragment (wrong?) 3770 3770 G4QNucleus qNuc(t,thePDG); // Make a Nucleus out of the Hadron 3771 G4double GSMass =qNuc.GetGSMass(); // GrState Mass of the nuclear fragment 3771 // @@ Probably, when nucleus is initialized, the mass is not initialized ? Was OK! Why? 3772 //G4double GSMass =qNuc.GetGSMass(); // GrState Mass of the nuclear fragment (?) 3773 G4double GSMass = G4QPDGCode(thePDG).GetMass(); // More robust definition 3772 3774 G4QContent totQC=qNuc.GetQCZNS(); // Total Quark Content of Residual Nucleus 3773 3775 G4int nN =qNuc.GetN(); // A#of neutrons in the Nucleus … … 3778 3780 G4cout<<"G4Quasm::FillHadrVect:Nucl="<<qNuc<<",nPDG="<<thePDG<<",GSM="<<GSMass<<G4endl; 3779 3781 #endif 3780 if((nN<0 ||nZ<0||nS<0)&&bA>0)// => "Anti-strangeness or ISOBAR" case3782 if((nN<0 || nZ<0 || nS<0) && bA>0) // => "Anti-strangeness or ISOBAR" case 3781 3783 { 3782 3784 G4double m1=mPi; // Prototypes for the nZ<0 case … … 3862 3864 else 3863 3865 { 3864 #ifdef pdebug3866 #ifdef debug 3865 3867 G4cerr<<"-Warning-G4Q::FillHVec:PDG="<<thePDG<<"("<<t.m()<<","<<fragMas<<") < Mes=" 3866 3868 <<PDG1<<"("<<m1<<") + ResA="<<PDG2<<"("<<m2<<"), d="<<fragMas-m1-m2<<G4endl; … … 3911 3913 else lResM =resN.GetMZNS(); // min mass of the Residual Nucleus 3912 3914 } 3913 #ifdef pdebug3915 #ifdef debug 3914 3916 G4cout<<"G4Quasm::FillHadrVec:rP="<<pResPDG<<",rN="<<nResPDG<<",rL="<<lResPDG<<",nN=" 3915 3917 <<nN<<",nZ="<<nZ<<",nL="<<nS<<",totM="<<fragMas<<",n="<<fragMas-nResM-mNeut … … 3919 3921 (bA > 1 && ( (nN > 0 && fragMas > nResM+mNeut) || 3920 3922 (nZ > 0 && fragMas > pResM+mProt) || 3921 (nS > 0 && fragMas > lResM+mLamb) ) ) )3923 (nS > 0 && fragMas > lResM+mLamb) ) ) ) 3922 3924 { 3923 3925 G4int barPDG = 90002002; … … 3926 3928 G4double resM= mAlph; 3927 3929 3928 if (fragMas > nResM+mNeut) { // Can radiate a neutron (priority 1)3930 if (fragMas > nResM+mNeut) { // Can radiate a neutron (priority 1) 3929 3931 barPDG = 90000001; 3930 3932 resPDG = nResPDG; 3931 3933 barM= mNeut; 3932 3934 resM= nResM; 3933 }3934 else if(fragMas>pResM+mProt) // Can radiate a proton (priority 2)3935 {3935 } 3936 else if(fragMas>pResM+mProt) // Can radiate a proton (priority 2) 3937 { 3936 3938 barPDG=90001000; 3937 3939 resPDG=pResPDG; 3938 3940 barM =mProt; 3939 3941 resM =pResM; 3940 }3941 else if(fragMas>lResM+mLamb) // Can radiate a Lambda (priority 3)3942 {3942 } 3943 else if(fragMas>lResM+mLamb) // Can radiate a Lambda (priority 3) 3944 { 3943 3945 barPDG=91000000; 3944 3946 resPDG=lResPDG; 3945 3947 barM =mLamb; 3946 3948 resM =lResM; 3947 }3948 else if(thePDG!=90004004 &&fragMas>GSMass)// If it's not Be8 decay in gamma3949 {3949 } 3950 else if(thePDG!=90004004 && fragMas>GSMass)// If it's not Be8 decay in gamma 3951 { 3950 3952 barPDG=22; 3951 3953 resPDG=thePDG; 3952 3954 barM =0.; 3953 3955 resM =pResM; 3954 }3956 } 3955 3957 else if(thePDG!=90004004) 3956 {3958 { 3957 3959 G4cerr<<"***G4Q::FillHadV:PDG="<<thePDG<<",M="<<fragMas<<"<GSM="<<GSMass<<G4endl; 3958 3960 throw G4QException("***G4Quasmon::FillHadronVector: Below GSM but cann't decay"); 3959 } 3960 3961 } 3961 3962 G4LorentzVector a4Mom(0.,0.,0.,barM); 3962 3963 G4LorentzVector b4Mom(0.,0.,0.,resM); … … 3981 3982 else 3982 3983 { 3983 #ifdef pdebug3984 #ifdef debug 3984 3985 G4cout<<"G4Quasm::FillHadrVect: Leave as it is"<<G4endl; 3985 3986 #endif … … 3987 3988 } 3988 3989 } 3989 else if (fragMas <GSMass)3990 else if (fragMas < GSMass) // Approximate equality was already checked 3990 3991 { 3991 G4cerr<<"***G4Q::FillHV:M="<<fragMas<<">GSM="<<GSMass<<",d="<<fragMas-GSMass<<G4endl; 3992 G4cerr<<"***G4Quasmon::FillHV:M="<<fragMas<<">GSM="<<GSMass<<"(PDG="<<thePDG<<"),d=" 3993 <<fragMas-GSMass<<", NZS="<<nN<<","<<nZ<<","<<nS<<G4endl; 3992 3994 //throw G4QException("*G4Quasmon::FillHadronVector:Mass is below theGroundStateVal"); 3993 3995 G4cout<<"***>>>G4Quasm::FillHadrVect: Leave as it is Instead of Exception"<<G4endl; 3994 3996 theQHadrons.push_back(qH); // Fill As Is (delete equivalent) 3995 3997 } 3996 else if (bA==1 &&fragMas>GSMass)3998 else if (bA==1 && fragMas>GSMass) 3997 3999 { 3998 4000 G4int gamPDG=22; … … 4020 4022 else // ===> Evaporation of excited system 4021 4023 { 4022 #ifdef p debug4024 #ifdef ppdebug 4023 4025 G4cout<<"G4Quasm::FillHadrVect:Evaporate "<<thePDG<<",tM="<<fragMas<<" > GS="<<GSMass 4024 4026 <<qNuc.Get4Momentum()<<", m="<<qNuc.Get4Momentum().m()<<G4endl; … … 4035 4037 else 4036 4038 { 4037 #ifdef pdebug4039 #ifdef debug 4038 4040 G4cout<<"G4Q::FlHV:Done,b="<<bHadron->GetQPDG()<<",r="<<rHadron->GetQPDG()<<G4endl; 4039 4041 #endif 4040 4042 delete qH; 4041 FillHadronVector(bHadron); // Fill Evapor. Baryon (delete equivalent) 4042 FillHadronVector(rHadron); // Fill Residual Nucl. (delete equivalent) 4043 if(bHadron->GetPDGCode() < -1111) 4044 { 4045 G4QHadronVector* tmpQHadVec=DecayQHadron(bHadron); // (delete equivalent) 4046 G4int tmpS=tmpQHadVec->size(); 4047 theQHadrons.resize(tmpS+theQHadrons.size()); // Resize theQHadrons length 4048 copy( tmpQHadVec->begin(), tmpQHadVec->end(), theQHadrons.end()-tmpS); 4049 tmpQHadVec->clear(); 4050 delete tmpQHadVec; // Who calls DecayQHadron is responsible for clear & delete 4051 } 4052 else FillHadronVector(bHadron); // Fill Evapor. Baryon (delete equivalent) 4053 if(rHadron->GetPDGCode() < -1111) 4054 { 4055 G4QHadronVector* tmpQHadVec=DecayQHadron(rHadron); // (delete equivalent) 4056 G4int tmpS=tmpQHadVec->size(); 4057 theQHadrons.resize(tmpS+theQHadrons.size()); // Resize theQHadrons length 4058 copy( tmpQHadVec->begin(), tmpQHadVec->end(), theQHadrons.end()-tmpS); 4059 tmpQHadVec->clear(); 4060 delete tmpQHadVec; // Who calls DecayQHadron is responsible for clear & delete 4061 } 4062 else FillHadronVector(rHadron); // Fill Residual Nucl. (delete equivalent) 4043 4063 } 4044 4064 } … … 4074 4094 { 4075 4095 //gives k>kMin QParton Momentum for the current Quasmon 4076 #ifdef pdebug4096 #ifdef debug 4077 4097 //G4cout<<"G4Quasmon::GetQPartonMom:**called**mR="<<sqrt(mR2)<<",mC="<<sqrt(mC2)<<G4endl; 4078 4098 G4cout<<"G4Quas::GetQPartonMomentum:***called*** kMax="<<kMax<<",mC="<<sqrt(mC2)<<G4endl; … … 4101 4121 throw G4QException("G4Quasmon::GetQPartonMomentum: Can not generate quark-parton"); 4102 4122 } 4103 #ifdef pdebug4123 #ifdef debug 4104 4124 G4cout<<"G4Q::GetQPM: kLim="<<kLim<<",kMin="<<kMin<<",kMax="<<kMax<<",nQ="<<nOfQ<<G4endl; 4105 4125 #endif … … 4154 4174 if(f>27.) 4155 4175 { 4156 #ifdef pdebug4176 #ifdef debug 4157 4177 G4cout<<"G4Q::GetQPMom: f="<<f<<" is changed to 99"<<G4endl; 4158 4178 #endif … … 4167 4187 G4double c = p*r*(1.+nx); // vRndm=(1-x)**n*(1+n*x) is the equation too be solved 4168 4188 G4double od = c - vRndm; // the old Residual Difference 4169 #ifdef pdebug4189 #ifdef debug 4170 4190 G4cout<<"G4Q::GetQPMom:>>>First x="<<x<<", n="<<n<<", f="<<f<<", d/R(first)=" 4171 4191 <<od/vRndm<<G4endl; … … 4204 4224 if (f>=27.) f=27.; 4205 4225 } 4206 #ifdef pdebug4226 #ifdef debug 4207 4227 G4cout<<"G4Q::GetQPMom: Iter#"<<it<<": (c="<<c<<" - R="<<vRndm<<")/R ="<<d/vRndm 4208 4228 <<", x="<<x<<", f="<<f<<G4endl; … … 4219 4239 it++; 4220 4240 } 4221 #ifdef pdebug4241 #ifdef debug 4222 4242 if(it>nitMax) G4cout<<"G4Q::GetQPMom: a#of iterations > nitMax="<<nitMax<<G4endl; 4223 4243 #endif … … 4299 4319 else if ( ev && nOfQ<3) nOfQ=3; // #of valence quarks is odd 4300 4320 // 4301 #ifdef pdebug4321 #ifdef debug 4302 4322 G4cout<<"G4Q::Calc#ofQP:QM="<<q4Mom<<qMass<<",T="<<Temperature<<",QC="<<valQ<<",n="<<nOfQ 4303 4323 <<G4endl; … … 4314 4334 G4int nMaxStrangeSea=static_cast<int>((qMass-stran*mK0)/(mK0+mK0));//KK is min for s-sea 4315 4335 if (absb) nMaxStrangeSea=static_cast<int>((qMass-absb)/672.); //LambdaK is min for s-sea 4316 #ifdef pdebug4336 #ifdef debug 4317 4337 G4cout<<"G4Q::Calc#ofQP:"<<valQ<<",INtot="<<valc<<",nOfQ="<<nOfQ<<",SeaPairs="<<nSeaPairs 4318 4338 <<G4endl; … … 4323 4343 if(nSeaPairs>0)valQ.IncQAQ(nSeaPairs,SSin2Gluons); 4324 4344 else morDec=valQ.DecQAQ(-nSeaPairs); 4325 #ifdef pdebug4345 #ifdef debug 4326 4346 if(morDec) G4cout<<"G4Q::Calc#ofQP: "<<morDec<<" pairs can be reduced more"<<G4endl; 4327 4347 #endif … … 4331 4351 if(sSea>nMaxStrangeSea) // @@@@@@@ Too many strange sea ?????? 4332 4352 { 4333 #ifdef pdebug4353 #ifdef debug 4334 4354 G4cout<<"G4Q::Calc#ofQP:**Reduce** S="<<sSea<<",aS="<<asSea<<",maxS="<<nMaxStrangeSea 4335 4355 <<G4endl; … … 4346 4366 //if(nOfQ<nmin) nOfQ=nmin; 4347 4367 // --- End of Temporary 4348 #ifdef pdebug4368 #ifdef debug 4349 4369 G4cout<<"G4Quasmon::Calc#ofQP: *** RESULT IN*** nQ="<<nOfQ<<", FinalQC="<<valQ<<G4endl; 4350 4370 #endif … … 4471 4491 G4QContent envQC=theEnvironment.GetQCZNS(); // QuarkContent of the CurrentNuclearEnviron. 4472 4492 //////G4double addPhoton=phot4M.e(); // PhotonEn for capture by quark-parton 4473 #ifdef pdebug4493 #ifdef debug 4474 4494 G4int absb = abs(qBar); // Abs BaryNum of Quasmon 4475 4495 G4int maxB = theEnvironment.GetMaxClust(); // Maximum BaryNum for clusters … … 4479 4499 // ================= Calculate probabilities for candidates 4480 4500 unsigned nHC=theQCandidates.size(); 4481 #ifdef pdebug4501 #ifdef debug 4482 4502 G4cout<<"G4Q::CHP: *** nHC="<<nHC<<G4endl; 4483 4503 #endif … … 4509 4529 //G4bool pos=curCand->GetPossibility(); 4510 4530 #ifdef pdebug 4511 G4bool pPrint = abs(cPDG)%10<3 && cPDG<80000000 ||cPDG==90001000||cPDG==90000001|| 4512 cPDG==90000002||cPDG==90001001||cPDG==90001002||cPDG==90002001||cPDG==90002002; 4531 //G4bool pPrint = abs(cPDG)%10<3 && cPDG<80000000 ||cPDG==90001000||cPDG==90000001|| 4532 // cPDG==90000002||cPDG==90001001||cPDG==90001002||cPDG==90002001||cPDG==90002002; 4533 //G4bool pPrint = cPDG==2212 || cPDG==2112 ||cPDG==90001000||cPDG==90000001; 4534 G4bool pPrint = false; 4513 4535 if(pPrint) G4cout<<"G4Q::CHP:==****==>>>c="<<cPDG<<",dUD="<<dUD<<",pos="<<pos<<",eA=" 4514 4536 <<envA<<",tM="<<totMass<<" > tmpTM+frM="<<tmpTM+frM<<G4endl; … … 4531 4553 //G4int cNQ= candQC.GetTot()+3*baryn-4; // A#of q-partons+b+2*(b-1)-2 (choc q-link) 4532 4554 G4double resM=0.; // Prototype for minMass of residual hadron 4533 #ifdef pdebug4555 #ifdef debug 4534 4556 if(pPrint)G4cout<<"G4Q::CHP:B="<<baryn<<",C="<<cC<<",CB="<<CB<<",#q="<<cNQ<<G4endl; 4535 4557 #endif … … 4554 4576 iQmax=1; 4555 4577 } 4556 #ifdef pdebug4578 #ifdef debug 4557 4579 if(pPrint)G4cout<<"G4Q::CHP:***!!!***>>F="<<cPDG<<",mF="<<frM<<",iq:"<<iQmin<<"," 4558 4580 <<iQmax<<",kLS="<<kLS<<",kQCM="<<kVal<<",eA="<<envA<<G4endl; … … 4565 4587 { 4566 4588 qFact=4.; 4567 #ifdef pdebug4589 #ifdef debug 4568 4590 if(pPrint) G4cout<<"G4Q::CHP:photon cap(gaF) is enhanced for Uquark"<<G4endl; 4569 4591 #endif … … 4629 4651 #ifdef pdebug 4630 4652 if(pPrint) G4cout<<"G4Q::CHP:parentPossibility="<<possib<<",pZ="<<charge 4631 <<",pN="<<barot-charge<<", cPDG="<<cPDG<<G4endl; 4653 <<" <= envZ="<<envZ<<", pN="<<barot-charge<<" <= envN=" 4654 <<envN<<", cPDG="<<cPDG<<G4endl; 4632 4655 #endif 4633 4656 if(possib && charge<=envZ && barot-charge<=envN) … … 4694 4717 if ( (!piF && first && baryn < 3) || 4695 4718 (!piF && !first && baryn < 5 ) || 4696 ( piF && abs(dS) < 3) ) // Isotopic focusing for AtRest Reactions4719 ( piF && abs(dS) < 3) ) // Isotope Focusing for AtRest Reactions 4697 4720 //if(!qIso&&!dC||qIso>0&&dC<0||qIso<0&&dC>0)//MediumIsoFocusingForAll 4698 4721 //if(abs(dS)<3) // Universal IsotopeFocusing(<3) (Best for pi-capture) … … 4705 4728 G4double boundM=parCand->GetEBMass();//EnvironBoundMass ofParentClust 4706 4729 G4double nucBM =parCand->GetNBMass();//TotNuclBoundMass ofParentClust 4707 #ifdef pdebug4730 #ifdef debug 4708 4731 if(pPrint) G4cout<<"G4Q::CHP:c="<<cPDG<<",p="<<parPDG<<",bM="<<boundM 4709 4732 <<",i="<<is<<",adr="<<parCand<<",pPP="<<pPP<<G4endl; … … 4726 4749 if(resPDG && minM>0.) // Kinematical analysis of hadronization 4727 4750 { 4728 #ifdef pdebug4751 #ifdef debug 4729 4752 if(pPrint) G4cout<<"G4Q::CHP:fM="<<frM<<",bM="<<boundM<<",rM=" 4730 4753 <<tmpTM<<",tM="<<totMass<<G4endl; … … 4737 4760 G4double dked=ked+ked; 4738 4761 //////G4double dkedC=dked-CB-CB; 4739 //G4double kd =kLS-nDelta; //For TotalNucleus (includingQuasmon)4740 //G4double dkd=kd+kd;4741 // ////////G4double dkdC=dkd-CB-CB;4762 G4double kd =kLS-nDelta; //For TotalNucleus (includingQuasmon) 4763 G4double dkd=kd+kd; 4764 //G4double dkdC=dkd-CB-CB; 4742 4765 G4double dkLS=kLS+kLS; 4743 4766 //G4double Em=(E-eDelta)*(1.-frM/totMass); 4744 4767 //G4double Em=(E-nDelta)*(1.-frM/totMass); 4745 //G4double Em=(E-nDelta-CB)*(1.-frM/totMass);4768 G4double Em=(E-nDelta-CB)*(1.-frM/totMass); 4746 4769 // *** START LIMITS *** 4747 4770 G4double ne=1.-dked/(boundM+dkLS);// qmin=DEFOULT=bM*(k-de)/(bM+2k) 4748 4771 G4double kf=1.; 4749 4772 if(ne>0.&&ne<1.)kf=pow(ne,cNQ); 4750 #ifdef pdebug4773 #ifdef debug 4751 4774 if(pPrint)G4cout<<"G4Q::CHP:<qi_DEF>="<<ne<<",k="<<kf<<",dk="<<dked 4752 4775 <<",dkLS="<<dkLS<<",M="<<boundM<<",C="<<CB<<G4endl; … … 4767 4790 G4double rtE=rtEP-rMo; // Energy of RealTotColouredResidSyst 4768 4791 ////////////G4double rtEMP=rtE-rMo; 4769 #ifdef pdebug4792 #ifdef debug 4770 4793 G4QContent tmpEQ=envQC-parQC;//QuarkContent for ResidualEnvironment 4771 4794 if(pPrint) G4cout<<"G4Q::CHP:RN="<<tmpEQ<<"="<<envM-boundM<<"=eM=" … … 4788 4811 G4double minBM2=minBM*minBM+.1; 4789 4812 G4double minM2=minM*minM+.1; 4790 #ifdef pdebug4813 #ifdef debug 4791 4814 G4double ph=kf; // Just for printing 4792 4815 if(pPrint) G4cout<<"G4Q::CHP:M2="<<minM2<<",R="<<rQ2<<",m="<<mintM2 … … 4799 4822 G4double nc=1.-(dkLS-E-E+CB+CB)/boundM; // q_min=k-E+CB 4800 4823 G4double newl=0.; 4801 #ifdef pdebug4824 #ifdef debug 4802 4825 if(pPrint) G4cout<<"G4Q::CHP:qi_k-E="<<nc<<",k="<<kLS<<",E="<<E 4803 4826 <<",M="<<boundM<<G4endl; … … 4811 4834 else if(nc <= 0.) kf=0.; 4812 4835 4813 //G4double nk=1.-(dkd-Em-Em)/boundM; // q_min=(k-delta)-E*(M-m)/M4814 #ifdef pdebug4815 //if(pPrint) G4cout<<"G4Q::CHP:qi_R="<<nk<<",kd="<<kd<<",E="<<Em4816 //<<",M="<<totMass<<G4endl;4817 #endif 4818 //if(nk > 0. && nk < 1. && nk < ne)4819 //{4820 //ne=nk;4821 //newh=pow(nk,cNQ);4822 //if(newh<kf) kf=newh;4823 //}4824 //else if(nk <= 0.) kf=0.;4836 G4double nk=1.-(dkd-Em-Em)/boundM; // q_min=(k-delta)-E*(M-m)/M 4837 #ifdef debug 4838 if(pPrint) G4cout<<"G4Q::CHP:qi_R="<<nk<<",kd="<<kd<<",E="<<Em 4839 <<",M="<<totMass<<G4endl; 4840 #endif 4841 if(nk > 0. && nk < 1. && nk < ne) 4842 { 4843 ne=nk; 4844 newh=pow(nk,cNQ); 4845 if(newh<kf) kf=newh; 4846 } 4847 else if(nk <= 0.) kf=0.; 4825 4848 4826 4849 //G4double mex=frM+Em; 4827 4850 //G4double sr=sqrt(mex*mex-frM2);//qmin=k-sqrt((m+E*(M-m)/M)^2-m^2) 4828 4851 //G4double np=1.-(dkLS-sr-sr)/boundM; 4829 #ifdef pdebug4852 #ifdef debug 4830 4853 //if(pPrint)G4cout<<"G4Q::CHP:qi_k-sr="<<np<<",sr="<<sr<<",m="<<mex 4831 4854 // <<",M="<<frM<<G4endl; … … 4846 4869 if(mix > frM) st=sqrt(mix*mix-frM2); 4847 4870 G4double nq=1.-(dkLS-st-st)/boundM;//qi=k-sq((m+E*(M-m)/M)^2-m^2) 4848 #ifdef pdebug4871 #ifdef debug 4849 4872 if(pPrint) G4cout<<"G4Q::CHP:qi_k-st="<<nq<<",st="<<st<<",m=" 4850 4873 <<mix<<",M="<<frM<<G4endl; … … 4873 4896 //if(atrest) nz=1.-(mintM2-rtQ2+pmk*dkd)/(nucBM*(rtEP+pmk)); 4874 4897 //else nz=1.-(mintM2-rtQ2)/(nucBM*rtEP); 4875 #ifdef pdebug4898 #ifdef debug 4876 4899 if(pPrint) G4cout<<"G4Q::CHP:q="<<nz<<",a="<<atrest<<",M2=" 4877 4900 <<mintM2<<">"<<rtQ2<<G4endl; … … 4923 4946 //if(atrest) nz=1.-(minBM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); 4924 4947 //else nz=1.-(minBM2-rQ2)/(nucBM*rEP); 4925 #ifdef pdebug4948 #ifdef debug 4926 4949 if(pPrint) G4cout<<"G4Q::CHP:q="<<nz<<",a="<<atrest<<",QM2=" 4927 4950 <<minM2<<">"<<rQ2<<G4endl; … … 4967 4990 //if(atrest) nz=1.-(minM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); 4968 4991 //else nz=1.-(minM2-rQ2)/(nucBM*rEP); 4969 #ifdef pdebug4992 #ifdef debug 4970 4993 if(pPrint) G4cout<<"G4Q::CHP:q="<<nz<<",a="<<atrest<<",QM2=" 4971 4994 <<minM2<<">"<<rQ2<<G4endl; … … 4982 5005 if(kf>1.)kf=1.; 4983 5006 G4double high = kf; // after this kf can be changed 4984 #ifdef pdebug5007 #ifdef debug 4985 5008 if(pPrint) G4cout<<"G4Q::CHP:"<<kf<<",minM2="<<minM2<<",rQ2="<<rQ2 4986 5009 <<G4endl; … … 4994 5017 if(lz>0.&&lz<1.)low=pow(lz,cNQ); 4995 5018 else if(lz>=1.)low=1.; 4996 #ifdef pdebug5019 #ifdef debug 4997 5020 G4double pl=low; // Just for printing 4998 5021 if(pPrint) G4cout<<"G4Q::CHP:<qa_DEF>="<<lz<<", eDel="<<eDelta … … 5001 5024 // == (@@) Historical additional cuts for q_max === 5002 5025 //G4double tms=kLS+nDelta+Em; 5003 ////G4double tms=kLS+eDelta+Em; // The same don't change ***5004 //G4double le=1.-(tms+tms)/boundM; // q_max=k+delta+E*(M-m)/M5005 #ifdef pdebug5006 //if(pPrint) G4cout<<"G4Q::CHP:qa_t="<<le<<",k="<<kLS<<",E="<<Em5007 //<<",bM="<<boundM<<G4endl;5008 #endif 5009 //if(le>0.&&le<1.&&le>lz)5010 //{5011 //lz=le;5012 //newl=pow(le,cNQ);5013 //if(newl>low) low=newl;5014 //}5015 //else if(le>=1.)low=1.;5026 G4double tms=kLS+eDelta+Em; // The same don't change *** 5027 G4double le=1.-(tms+tms)/boundM; // q_max=k+delta+E*(M-m)/M 5028 #ifdef debug 5029 if(pPrint) G4cout<<"G4Q::CHP:qa_t="<<le<<",k="<<kLS<<",E="<<Em 5030 <<",bM="<<boundM<<G4endl; 5031 #endif 5032 if(le>0.&&le<1.&&le>lz) 5033 { 5034 lz=le; 5035 newl=pow(le,cNQ); 5036 if(newl>low) low=newl; 5037 } 5038 else if(le>=1.)low=1.; 5016 5039 // === End of historical cuts 5017 5040 5018 5041 //G4double lk=1.-(dkLS+E+E)/boundM; // q_max=k+E 5019 5042 G4double lk=1.-(dkLS+E+E-CB-CB)/boundM;//qmax=k+E-CB(surfaceCond) 5020 #ifdef pdebug5043 #ifdef debug 5021 5044 if(pPrint) G4cout<<"G4Q::CHP:qa_k+E="<<lk<<",k="<<kLS<<",E="<<E 5022 5045 <<",M="<<boundM<<G4endl; … … 5033 5056 // === Instead one can try this === 5034 5057 //G4double lq=1.-(dkLS+st+st)/boundM;//qm=k+sqrt((E*(M-m)/M)^2-m^2) 5035 #ifdef pdebug5058 #ifdef debug 5036 5059 //if(pPrint)G4cout<<"G4Q::CHP:qa_k+st="<<lq<<",st="<<st<<",m="<<mix 5037 5060 // <<",M="<<frM<<G4endl; … … 5046 5069 5047 5070 // === The same as previous but "sr" instead of "st" === 5048 //G4double lp=1.-(dkLS+sr+sr)/boundM;//qm=k+sqrt((E*(M-m)/M)^2-m^2)5049 #ifdef pdebug5050 //if(pPrint) G4cout<<"G4Q::CHP:qa_k+sr="<<lp<<",sr="<<sr<<",m="5051 //<<mex<<",M="<<frM<<G4endl;5052 #endif 5053 //if(lp>0.&&lp<1.&&lp>lz)5054 //{5055 //lz=lp;5056 //newl=pow(lp,cNQ);5057 //if(newl>low) low=newl;5058 //}5059 //else if(lp>=1.)low=1.;5071 G4double lp=1.-(dkLS+sr+sr)/boundM;//qm=k+sqrt((E*(M-m)/M)^2-m^2) 5072 #ifdef debug 5073 if(pPrint) G4cout<<"G4Q::CHP:qa_k+sr="<<lp<<",sr="<<sr<<",m=" 5074 <<mex<<",M="<<frM<<G4endl; 5075 #endif 5076 if(lp>0.&&lp<1.&&lp>lz) 5077 { 5078 lz=lp; 5079 newl=pow(lp,cNQ); 5080 if(newl>low) low=newl; 5081 } 5082 else if(lp>=1.)low=1.; 5060 5083 // ............................................................ 5061 5084 //It's SpecificCoulombBarrierLimit forChargedParticles(canBeSkiped) 5062 if(totZ>cC) // ==> Check of Coulomb Barrier 5085 if(totZ>cC) // ==> Check CoulombBarrier 5086 //if(2>3) 5063 5087 { 5064 5088 G4double qmaCB=boundM-qMax; 5065 5089 //G4double qmaCB=nucBM-qMax; 5066 5090 G4double nz=1.-(qmaCB+qmaCB)/boundM;//q=Mb-Mf-CB+kLS,qM=Mf+CB-kLS 5067 #ifdef pdebug5091 #ifdef debug 5068 5092 if(pPrint) G4cout<<"G4Q::CHP:<qa_CB>="<<nz<<",m="<<qmaCB<<",CB=" 5069 5093 <<CB<<G4endl; … … 5078 5102 // ***** End of restrictions ***** 5079 5103 kf-=low; 5080 #ifdef pdebug5104 #ifdef debug 5081 5105 if(pPrint) G4cout<<"G4Q::CHP:>>"<<cPDG<<",l="<<low<<",h="<<high 5082 5106 <<",ol="<<pl<<",oh="<<ph<<",nl="<<newl<<",nh=" … … 5106 5130 else probab*=2; // One S + three P 5107 5131 } 5108 #ifdef pdebug5132 #ifdef debug 5109 5133 if(pPrint)G4cout<<"G4Q::CHP:prob="<<probab<<",qF="<<qFact<<",iq=" 5110 5134 <<iq<<",oq="<<oq<<",Pho4M="<<phot4M<<",pUD="<<pUD … … 5189 5213 if(cPDG==223) comb*=2.; //@@ 5190 5214 if(cPDG==111&&npiz>0) comb*=(npiz+1); // Bose multyplication 5191 #ifdef pdebug5215 #ifdef debug 5192 5216 if(abs(cPDG)<3) G4cout<<"G4Q::CHP:comb="<<comb<<",cmd="<<cmd<<",cmuu="<<cmu 5193 5217 <<",cms="<<cms<<G4endl; … … 5198 5222 G4QContent resTQC = curQ+envQC; // Total nuclear Residual Quark Content 5199 5223 G4double resTM=G4QPDGCode(resTQC.GetSPDGCode()).GetMass(); 5200 #ifdef pdebug5224 #ifdef debug 5201 5225 G4bool priCon = aPDG < 10000 && aPDG%10 < 3; 5202 5226 if(priCon) G4cout<<"G4Q::CHP:***>>cPDG="<<cPDG<<",cQC="<<candQC<<",comb="<<comb … … 5208 5232 resTM=mPi0; 5209 5233 } 5210 #ifdef pdebug5234 #ifdef debug 5211 5235 if(priCon) G4cout<<"G4Q::CHP:cPDG="<<cPDG<<",c="<<comb<<",rPDG/QC="<<resPDG<<curQ 5212 5236 <<",tM="<<totMass<<">"<<frM-CB+resTM<<"=fM="<<frM<<"+rM="<<resTM … … 5216 5240 ((resPDG > 80000000 && resPDG != 90000000) || resPDG<10000) ) 5217 5241 { 5218 #ifdef pdebug5242 #ifdef debug 5219 5243 if(priCon) G4cout<<"G4Q::CHP:ind="<<index<<",qQC="<<valQ<<mQ<<",cPDG="<<cPDG 5220 5244 <<",rPDG="<<resPDG<<curQ<<G4endl; … … 5223 5247 else resM=G4QChipolino(curQ).GetMass(); // Chipolino mass for theResidualHadron 5224 5248 G4int resQCode=G4QPDGCode(curQ).GetQCode(); 5225 #ifdef pdebug5249 #ifdef debug 5226 5250 if(priCon) G4cout<<"G4Q::CHP:rM/QC="<<resM<<curQ<<",E="<<envPDGC<<",rQC=" 5227 5251 <<resQCode<<G4endl; … … 5235 5259 G4double rtM =rtN.GetMZNS(); // Min Mass of total residual Nucleus 5236 5260 G4double bnRQ=rtM-envM; // Bound mass of residual Quasmon 5237 #ifdef pdebug5261 #ifdef debug 5238 5262 if(priCon) G4cout<<"G4Q::CHP: **Rec**,RQMass="<<bnRQ<<",envM="<<envM<<",rtM=" 5239 5263 <<rtM<<G4endl; … … 5242 5266 if(bnRQ<resM) resM=bnRQ; 5243 5267 } 5244 #ifdef pdebug5268 #ifdef debug 5245 5269 if(aPDG<10000&&aPDG%10<3) 5246 5270 //if(aPDG<10000&&aPDG%10<5) … … 5251 5275 G4double limM=mQ-resM; 5252 5276 G4double rndM=GetRandomMass(cPDG,limM);// Candidate's Mass randomization 5253 #ifdef pdebug5277 #ifdef debug 5254 5278 G4double cMass=G4QPDGCode(cPDG).GetMass(); 5255 5279 if(aPDG<10000&&aPDG%10<3) … … 5272 5296 if(qBar) zMin= mR2/mQ/(mQ-dk); // z_min for Quasmon-Baryon @@ ?? @@ 5273 5297 G4double possibility=zMax-zMin; 5274 #ifdef pdebug5298 #ifdef debug 5275 5299 if(priCon) G4cout<<"G4Q::CHP:M="<<rndM<<",ps="<<possibility<<",zMax="<<zMax 5276 5300 <<",rHk="<<rHk<<",mQ="<<mQ<<",dk="<<dk<<",zMin="<<zMin … … 5285 5309 { 5286 5310 probability = vaf*(pow(zMax, vap)-pow(zMin, vap)); 5287 #ifdef pdebug5311 #ifdef debug 5288 5312 if(priCon) G4cout<<"G4Q::CHP:#"<<index<<",mH2="<<mH2<<",nQ="<<nOfQ<<",p=" 5289 5313 <<probability<<",vf="<<vaf<<",vp="<<vap<<",zMax="<<zMax … … 5315 5339 else 5316 5340 { 5317 #ifdef pdebug5341 #ifdef debug 5318 5342 if(priCon) G4cout<<"G4Q::CHP:cM=0[cPDG"<<cPDG<<"],mQ/QC="<<mQ<<valQ<<",rM=" 5319 5343 <<resM<<curQ<<G4endl; … … 5323 5347 else 5324 5348 { 5325 #ifdef pdebug5349 #ifdef debug 5326 5350 if(priCon) G4cout<<"***G4Q::CHP: M=0, #"<<index<<valQ<<",cPDH="<<cPDG<<"+rP=" 5327 5351 <<resPDG<<curQ<<G4endl; … … 5332 5356 { 5333 5357 probability=0.; 5334 #ifdef pdebug5358 #ifdef debug 5335 5359 if(priCon) G4cout<<"G4Q::CHP:"<<index<<valQ<<",PDG="<<cPDG<<"+r="<<resPDG<<curQ 5336 5360 <<":c=0(!) || tM="<<totMass<<"<"<<frM-CB+resTM<<" = fM="<<frM … … 5341 5365 } // ---> End of Hadronic Case of fragmentation 5342 5366 else probability=0.; 5343 #ifdef pdebug5367 #ifdef debug 5344 5368 G4int aPDG = abs(cPDG); 5345 5369 if(cPDG>90000000&&baryn<5||aPDG<10000&&aPDG%10<3) G4cout<<"G4Q::CHP:^^^cPDG="<<cPDG … … 5382 5406 G4LorentzVector reTLV=q4Mom; // Prototyoe of the 4-Mom of the Residual Nucleus 5383 5407 G4double resSMa=resQMa; // Prototype of MinSplitMass of ResidualNucleus 5384 #ifdef pdebug5408 #ifdef debug 5385 5409 G4cout<<"G4Q::CheckGS: EnvPDG="<<theEnvironment.GetPDG()<<",Quasmon="<<resQPDG<<G4endl; 5386 5410 #endif … … 5388 5412 { 5389 5413 resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment 5390 #ifdef pdebug5414 #ifdef debug 5391 5415 G4cout<<"G4Q::CheckGS: Environment Mass="<<resEMa<<G4endl; 5392 5416 #endif … … 5400 5424 //G4QNucleus tmpQN(valQ); // TemporaryNucleus for the VacuumQuasmon 5401 5425 bsCond = tmpQN.SplitBaryon(); // Possibility to split Fragment from the VacuumQ 5402 #ifdef pdebug5426 #ifdef debug 5403 5427 G4cout<<"G4Q::CheckGS: No environment, theOnlyQ="<<tmpQN<<",bsCond="<<bsCond<<G4endl; 5404 5428 #endif … … 5453 5477 //if(resTMa>resSMa && (resEMa || bsCond)) return true;// Why not ?? @@ (see G4E the same) 5454 5478 G4int nOfOUT = theQHadrons.size(); // Total #of QHadrons at this point 5455 #ifdef pdebug5479 #ifdef debug 5456 5480 G4cout<<"G4Q::CheckGS: (totM="<<resTMa<<" < rQM+rEM="<<resSMa<<" || rEM="<<resEMa 5457 5481 <<"=0 && "<<bsCond<<"=0) && n="<<nOfOUT<<" >0"<<G4endl; … … 5466 5490 G4double hadrMa=hadr4M.m(); // Mass of the Last hadron (==GSMass) 5467 5491 G4LorentzVector tmpTLV=reTLV+hadr4M;// Tot (ResidNucl+LastHadron) 4-Mom 5468 #ifdef pdebug5492 #ifdef debug 5469 5493 G4cout<<"G4Q::CheckGS:YES,T="<<tmpTLV<<tmpTLV.m()<<">rM+hM="<<resSMa+hadrMa<<G4endl; 5470 5494 #endif … … 5524 5548 G4double totQMa=G4QPDGCode(totPDG).GetMass(); // GS Mass of the ResidualNucleus 5525 5549 G4double totNMa=tmpTLV.m(); // RealMass of TotResidualNucleus 5526 #ifdef pdebug5550 #ifdef debug 5527 5551 G4cout<<"G4Q::CheckGS:NO, M="<<tmpTLV<<totNMa<<">"<<totQMa+hadrMa+prevMa<<G4endl; 5528 5552 #endif … … 5543 5567 theLast->Set4Momentum(hadr4M); 5544 5568 thePrev->Set4Momentum(prev4M); 5545 #ifdef pdebug5569 #ifdef debug 5546 5570 G4cout<<"G4Q::CheckGS: Yes, Check D4M="<<tmpTLV-hadr4M-prev4M-nuc4M<<G4endl; 5547 5571 #endif … … 5557 5581 G4double resPrevM=G4QPDGCode(resPPDG).GetMass();//GSM of ResidNucl for thePrevH 5558 5582 //////G4bool which = true; // LastH is absorbed, PrevH is radiated 5559 #ifdef pdebug5583 #ifdef debug 5560 5584 G4cout<<"G4Quasm::CheckGS: NO, tM="<<totNMa<<" > rp+l="<<resLastM+hadrMa 5561 5585 <<" || > rl+p="<<resPrevM+prevMa<<G4endl; … … 5591 5615 theEnvironment = vacuum; 5592 5616 thePrev->Set4Momentum(prev4M); 5593 #ifdef pdebug5617 #ifdef debug 5594 5618 G4cout<<"G4Q::CheckGS:Yes, Check D4M="<<tmpTLV-prev4M-nuc4M<<G4endl; 5595 5619 #endif … … 5614 5638 G4int pap = 0; // --- particle 5615 5639 if(thePDG<0) pap = 1; // --- anti-particle 5616 G4LorentzVector t = qH->Get4Momentum(); // Get 4-momentum of decaying hadron5640 G4LorentzVector t = qH->Get4Momentum(); // Get 4-momentum of decaying hadron 5617 5641 G4double m = t.m(); // Get the mass value of decaying Hadron 5618 5642 // --- Randomize a channel of decay 5619 5643 G4QDecayChanVector decV = theWorld->GetQParticle(theQPDG)->GetDecayVector(); 5620 5644 G4int nChan = decV.size(); 5621 #ifdef pdebug5645 #ifdef debug 5622 5646 G4cout<<"G4Quasm::DecQHadron: PDG="<<thePDG<<",m="<<m<<",("<<nChan<<" channels)"<<G4endl; 5623 5647 #endif … … 5631 5655 { 5632 5656 G4QDecayChan* dC = decV[i]; // The i-th Decay Channel 5633 #ifdef pdebug5657 #ifdef debug 5634 5658 G4cout<<"G4Quasmon::DecaQHadr:i="<<i<<",r="<<rnd<<"<dl="<<dC->GetDecayChanLimit() 5635 5659 <<", mm="<<dC->GetMinMass()<<G4endl; … … 5641 5665 G4QPDGCodeVector cV=decV[i]->GetVecOfSecHadrons();// PDGVector of theSelectedDecChannel 5642 5666 G4int nPart=cV.size(); // A#of particles to decay in 5643 #ifdef pdebug5667 #ifdef debug 5644 5668 G4cout<<"G4Quasmon::DecayQHadron: resi="<<i<<",nP="<<nPart<<":"<<cV[0]->GetPDGCode() 5645 5669 <<","<<cV[1]->GetPDGCode(); … … 5653 5677 return theFragments; 5654 5678 } 5655 #ifdef pdebug5679 #ifdef debug 5656 5680 G4cout<<"G4Q::DecQH:Decay("<<ElMaDecays<<") PDG="<<thePDG<<t<<m<<",nP="<<nPart<<G4endl; 5657 5681 #endif … … 5664 5688 // Radiative decays In2 (eta, eta', Sigma0) are closed if the ElMaDecays=false 5665 5689 if ( (fPDG != 22 && sPDG != 22) || ElMaDecays) { 5666 #ifdef pdebug5690 #ifdef debug 5667 5691 G4cout<<"G4Q::DecQH:Yes2,fPDG="<<fPDG<<",sPDG="<<sPDG<<",EMF="<<ElMaDecays<<G4endl; 5668 5692 #endif … … 5691 5715 sHadr = new G4QHadron(sPart,sdm); // the 2-nd Hadron is initialized 5692 5716 if(sPDG<0) sHadr->MakeAntiHadron(); 5693 #ifdef pdebug5717 #ifdef debug 5694 5718 G4cout<<"G4Q::DQH:M="<<m<<",mi="<<mim<<",fd="<<fdm<<",fm="<<fm<<",sd="<<sdm 5695 5719 <<",sm="<<sHadr->GetMass()<<G4endl; 5696 5720 #endif 5697 5721 } 5698 #ifdef pdebug5722 #ifdef debug 5699 5723 G4cout<<"G4Q::DQH:(DecayIn2)1="<<fHadr->GetMass()<<",2="<<sHadr->GetMass()<<G4endl; 5700 5724 #endif … … 5710 5734 delete fHadr; // Delete "new fHadr" 5711 5735 delete sHadr; // Delete "new sHadr" 5712 #ifdef pdebug5736 #ifdef debug 5713 5737 G4cerr<<"---Warning---G4Q::DecayQHadron:in2,PDGC="<<thePDG<<", ch#"<<i<<": 4M=" 5714 5738 <<qH->Get4Momentum()<<"("<<qH->GetMass()<<")->"<<f4Mom<<"+"<<s4Mom<<G4endl; … … 5728 5752 G4QHadronVector* theTmpQHV=DecayQHadron(fHadr); // Try to decay 5729 5753 G4int nProd=theTmpQHV->size(); 5730 #ifdef pdebug5754 #ifdef debug 5731 5755 G4cout<<"G4Q::DecayQHadr:(DecayIn2) nOfProdForQH1="<<nProd<<G4endl; 5732 5756 #endif … … 5742 5766 copy(intTmpQHV->begin(), intTmpQHV->end(), theFragments->end()-tmpS); 5743 5767 } 5744 #ifdef pdebug5768 #ifdef debug 5745 5769 G4cout<<"G4Q::DecayQHadr:(DecayIn2) Copy Sec11 nProd="<<tmpS<<G4endl; 5746 5770 #endif … … 5753 5777 theTmpQHV=DecayQHadron(sHadr); // Try to decay 5754 5778 nProd=theTmpQHV->size(); 5755 #ifdef pdebug5779 #ifdef debug 5756 5780 G4cout<<"G4Q::DecayQHadr:(DecayIn2) nOfProdForQH2="<<nProd<<G4endl; 5757 5781 #endif … … 5767 5791 copy(intTmpQHV->begin(), intTmpQHV->end(), theFragments->end()-tmpS); 5768 5792 } 5769 #ifdef pdebug5793 #ifdef debug 5770 5794 G4cout<<"G4Q::DecayQHadr:(DecayIn2) Copy Sec12 nProd="<<tmpS<<G4endl; 5771 5795 #endif … … 5776 5800 delete theTmpQHV; 5777 5801 } 5778 #ifdef pdebug5802 #ifdef debug 5779 5803 G4cout<<"G4Q::DecQHadr: DecayIn2 is made with nH="<<theFragments->size()<<G4endl; 5780 5804 #endif … … 5782 5806 else 5783 5807 { 5784 #ifdef pdebug5808 #ifdef debug 5785 5809 if(thePDG==89999003||thePDG==90002999)G4cerr<<"*G4Q::DQH:8999003/90002999"<<G4endl; 5786 5810 #endif … … 5799 5823 if ( (fPDG != 22 && sPDG != 22 && tPDG != 22) || ElMaDecays) 5800 5824 { 5801 #ifdef pdebug5825 #ifdef debug 5802 5826 G4cout<<"G4Q::DQH:Y,f="<<fPDG<<",s="<<sPDG<<",t="<<tPDG<<",F="<<ElMaDecays<<G4endl; 5803 5827 #endif … … 5849 5873 if(tPDG<0) tHadr->MakeAntiHadron(); 5850 5874 } 5851 #ifdef pdebug5875 #ifdef debug 5852 5876 G4cout<<"G4Quasmon::DecayQHadron:3Dec. m1="<<fHadr->GetMass() 5853 5877 <<",m2="<<sHadr->GetMass()<<",m3="<<tHadr->GetMass()<<G4endl; … … 5881 5905 G4QHadronVector* theTmpQHV=DecayQHadron(fHadr); // Try to decay 5882 5906 G4int nProd=theTmpQHV->size(); 5883 #ifdef pdebug5907 #ifdef debug 5884 5908 G4cout<<"G4Q::DecayQHadr:(DecayIn3) nOfProdForQH1="<<nProd<<G4endl; 5885 5909 #endif … … 5895 5919 copy(intTmpQHV->begin(), intTmpQHV->end(), theFragments->end()-tmpS); 5896 5920 } 5897 #ifdef pdebug5921 #ifdef debug 5898 5922 G4cout<<"G4Q::DecayQHadr:(DecayIn3) Copy Sec11 nProd="<<tmpS<<G4endl; 5899 5923 #endif … … 5907 5931 theTmpQHV=DecayQHadron(sHadr); // Try to decay 5908 5932 nProd=theTmpQHV->size(); 5909 #ifdef pdebug5933 #ifdef debug 5910 5934 G4cout<<"G4Q::DecayQHadr:(DecayIn3) nOfProdForQH2="<<nProd<<G4endl; 5911 5935 #endif … … 5921 5945 copy(intTmpQHV->begin(), intTmpQHV->end(), theFragments->end()-tmpS); 5922 5946 } 5923 #ifdef pdebug5947 #ifdef debug 5924 5948 G4cout<<"G4Q::DecayQHadr:(DecayIn3) Copy Sec12 nProd="<<tmpS<<G4endl; 5925 5949 #endif … … 5933 5957 theTmpQHV=DecayQHadron(tHadr); // Try to decay 5934 5958 nProd=theTmpQHV->size(); 5935 #ifdef pdebug5959 #ifdef debug 5936 5960 G4cout<<"G4Q::DecayQHadr:(DecayIn3) nOfProdForQH3="<<nProd<<G4endl; 5937 5961 #endif … … 5947 5971 copy(intTmpQHV->begin(), intTmpQHV->end(), theFragments->end()-tmpS); 5948 5972 } 5949 #ifdef pdebug5973 #ifdef debug 5950 5974 G4cout<<"G4Q::DecayQHadr:(DecayIn3) Copy Sec13 nProd="<<tmpS<<G4endl; 5951 5975 #endif … … 5957 5981 5958 5982 } 5959 #ifdef pdebug5983 #ifdef debug 5960 5984 G4cout<<"G4Q::DecQHadr: DecayIn3 is made with nH="<<theFragments->size()<<G4endl; 5961 5985 #endif … … 5966 5990 else 5967 5991 { 5968 #ifdef pdebug5992 #ifdef debug 5969 5993 G4cout<<"G4Quas::DecQHadr:Fill PDG= "<<thePDG<<t<<m<<" as it is ***0***>>>>"<<G4endl; 5970 5994 #endif … … 5972 5996 theFragments->push_back(qH); // Fill as it is (delete equivalent) 5973 5997 } 5974 #ifdef pdebug5998 #ifdef debug 5975 5999 G4cout<<"G4Q::DecQHadr:====HADRON IS DECAYED==== with nH="<<theFragments->size()<<G4endl; 5976 6000 #endif … … 6009 6033 G4QHadronVector* G4Quasmon::Fragment(G4QNucleus& nucEnviron, G4int nQ) 6010 6034 {// ===================================================== 6011 #ifdef pdebug6035 #ifdef debug 6012 6036 G4cout<<"G4Quasmon::Fragment called E="<<nucEnviron<<nucEnviron.GetProbability()<<G4endl; 6013 6037 #endif … … 6015 6039 HadronizeQuasmon(nucEnviron,nQs); 6016 6040 G4int nHadrs=theQHadrons.size(); 6017 #ifdef pdebug6041 #ifdef debug 6018 6042 G4cout<<"G4Quasmon::Fragment: after HadronizeQuasmon nH="<<nHadrs<<G4endl; 6019 6043 #endif … … 6024 6048 theFragments->push_back(curHadr); // (delete equivalent - user) 6025 6049 } 6026 #ifdef p pdebug6050 #ifdef pdebug 6027 6051 else G4cerr<<"*******G4Quasmon::Fragment *** Nothing is in the output ***"<<G4endl; 6028 6052 #endif
Note: See TracChangeset
for help on using the changeset viewer.