60 likes | 201 Vues
This document details critical bug fixes made in the hadronic models used in Geant4, specifically focusing on the CHIPS (Chiral Invariant Phase Space) model and its interactions concerning Pi- and K+ particles. The updates enhance nuclear cross-section calculations and address previous inaccuracies in the FTF (Fritiof) model. These improvements aim to provide more reliable results for particle interaction simulations in high-energy physics, benefiting researchers in this field.
E N D
Bug fixing in hadronic models V. Uzhinsky, 26 September 2011 1. CHIPS Reference tag: geant4-09-04-ref-08 2. FTF 3. Bertini CHIPS, Pi- P
CHIPS, Pi- P Class - G4QPionMinusNuclearCrossSection Class - G4QuasiFreeRatios Class - G4QPionMinusNuclearCrossSection // Calculation formula for piMinus-nuclear inelastic cross-section (mb) log(P in GeV/c) G4double G4QPionMinusNuclearCrossSection::CrossSectionFormula(G4int tZ, G4int tN, G4double P, G4double lP) { G4double sigma=0.; if(tZ==1 && !tN) // PiMin-Proton interaction from G4QuasiElRatios { G4double lr=lP+1.27; // From G4QuasiFreeRatios.cc Uzhi G4double LE=1.53/(lr*lr+.0676); // From G4QuasiFreeRatios.cc Uzhi G4double ld=lP-3.5; G4double ld2=ld*ld; G4double p2=P*P; G4double p4=p2*p2; G4double sp=std::sqrt(P); G4double lm=lP+.36; G4double md=lm*lm+.04; G4double lh=lP-.017; G4double hd=lh*lh+.0025; G4double El=(.0557*ld2+2.4+7./sp)/(1.+.7/p4); G4double To=(.3*ld2+22.3+12./sp)/(1.+.4/p4); sigma=(To-El)+.4/md+.01/hd; sigma+=LE*2; // Uzhi } Class - G4QuasiFreeRatios std::pair<G4double,G4double> G4QuasiFreeRatios::CalcElTot(G4double p, G4int I) else if(I==2) // pimp/pipn { { G4double lr=lp+1.27; // p1 G4double LE=1.53/(lr*lr+.0676); // p2, p3 G4double ld=lp-lmi; // p4 (lmi=3.5) G4double ld2=ld*ld; G4double p2=p*p; G4double p4=p2*p2; G4double sp=std::sqrt(p); G4double lm=lp+.36; // p5 G4double md=lm*lm+.04; // p6 G4double lh=lp-.017; // p7 G4double hd=lh*lh+.0025; // p8 El=LE+(pbe*ld2+2.4+7./sp)/(1.+.7/p4)+.6/md+.05/hd; To=LE*3+(pbt*ld2+22.3+12./sp)/(1.+.4/p4)+1./md+.06/hd; }
CHIPS, K+ P Class - G4QKaonPlusElasticCrossSection Class - G4QuasiFreeRatios Class - G4QuasiFreeRatios std::pair<G4double,G4double> G4QuasiFreeRatios::CalcElTot(G4double p, G4int I) else if(I==5) // Kpp/Kpn/aKp/aKn { G4double ld=std::log(p)-lmi; G4double ld2=ld*ld; G4double lr=p-.38; G4double LE=.7/(lr*lr+.0676); G4double sp=std::sqrt(p); G4double p2=p*p; G4double p4=p2*p2; G4double lm=p-1.; G4double md=lm*lm+.372; El=LE+(pbe*ld2+2.23)/(1.-.7/sp+.1/p4)+2./md; To=LE+(pbt*ld2+19.5)/(1.+.46/sp+1.6/p4)+2.6/md; } Class - G4QKaonPlusElasticCrossSection G4double G4QKaonPlusElasticCrossSection::GetTabValues(G4double lp, G4int PDG, G4int tgZ, G4int tgN) G4double p=std::exp(lp); // momentum G4double sp=std::sqrt(p); // sqrt(p) G4double p2=p*p; G4double p3=p2*p; G4double p4=p3*p; if ( tgZ == 1 && tgN == 0 ) // KaonPlus+P { G4double dl2=lp-lastPAR[11]; G4double dp=lp-lastPAR[4]; //G4cout<<"lastPAR[8] "<<lastPAR[8]<<" lastPAR[9] "<<lastPAR[9]<<" lastPAR[10] "<<lastPAR[10]<<G4endl; return lastPAR[0]/(lastPAR[2]+sqr(p-lastPAR[1]))+ (lastPAR[3]*dp*dp+lastPAR[5])/ ( 1.-lastPAR[6]/sp+lastPAR[7]/p4) +lastPAR[8]/(sqr(p-lastPAR[9])+lastPAR[10]); // Uzhi
FTF Class - G4ComponentCHIPShadronNuclearXS G4double G4ComponentCHIPShadronNuclearXS::GetTotalElementCrossSection (const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4double N) { G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass()));
Old New Bertini
Conclusion Bugs are fixed in CHIPS for Pi-P and K+P interactions Small bug is fixed in FTF. Problem is left! Bertini was essential improved.