51 fRadiusEff(0.0), fRadiusNN2(0.0),
52 fTotalXsc(0.0), fElasticXsc(0.0), fInelasticXsc(0.0),
53 fAntiHadronNucleonTotXsc(0.0), fAntiHadronNucleonElXsc(0.0),
54 Elab(0.0),
S(0.0), SqrtS(0)
91 G4double xsection, sigmaTotal, sigmaElastic;
95 sigmaTotal = GetAntiHadronNucleonTotCrSc(theParticle,kinEnergy);
96 sigmaElastic = GetAntiHadronNucleonElCrSc(theParticle,kinEnergy);
99 fRadiusNN2=sigmaTotal*sigmaTotal*0.1/(8.*sigmaElastic*
pi) ;
113 if( (Z==1) && (A==2) ) fRadiusEff = 3.800;
114 if( (Z==1) && (A==3) ) fRadiusEff = 3.300;
115 if( (Z==2) && (A==3) ) fRadiusEff = 3.300;
116 if( (Z==2) && (A==4) ) fRadiusEff = 2.376;
120 if (theParticle == theADeuteron)
123 if( (Z==1) && (A==2) ) fRadiusEff = 3.238;
124 if( (Z==1) && (A==3) ) fRadiusEff = 3.144;
125 if( (Z==2) && (A==3) ) fRadiusEff = 3.144;
126 if( (Z==2) && (A==4) ) fRadiusEff = 2.544;
130 if( (theParticle ==theAHe3) || (theParticle ==theATriton) )
133 if( (Z==1) && (A==2) ) fRadiusEff = 3.144;
134 if( (Z==1) && (A==3) ) fRadiusEff = 3.075;
135 if( (Z==2) && (A==3) ) fRadiusEff = 3.075;
136 if( (Z==2) && (A==4) ) fRadiusEff = 2.589;
141 if (theParticle == theAAlpha)
145 if( (Z==1) && (A==2) ) fRadiusEff = 2.544;
146 if( (Z==1) && (A==3) ) fRadiusEff = 2.589;
147 if( (Z==2) && (A==3) ) fRadiusEff = 2.589;
148 if( (Z==2) && (A==4) ) fRadiusEff = 2.241;
152 G4double R2 = fRadiusEff*fRadiusEff;
156 xsection = 2*
pi*REf2*10.*
G4Log(1+(ApAt*sigmaTotal/(2*
pi*REf2*10.)));
158 fTotalXsc = xsection;
170 {
return GetTotalElementCrossSection(aParticle, kinEnergy, Z, (
G4double) A); }
179 G4double inelxsection, sigmaTotal, sigmaElastic;
183 sigmaTotal = GetAntiHadronNucleonTotCrSc(theParticle,kinEnergy);
184 sigmaElastic = GetAntiHadronNucleonElCrSc(theParticle,kinEnergy);
187 fRadiusNN2=sigmaTotal*sigmaTotal*0.1/(8.*sigmaElastic*
pi);
197 { fInelasticXsc = (sigmaTotal - sigmaElastic) *
millibarn;
198 return fInelasticXsc;
202 if( (Z==1) && (A==2) ) fRadiusEff = 3.582;
203 if( (Z==1) && (A==3) ) fRadiusEff = 3.105;
204 if( (Z==2) && (A==3) ) fRadiusEff = 3.105;
205 if( (Z==2) && (A==4) ) fRadiusEff = 2.209;
210 if (theParticle ==theADeuteron)
214 if( (Z==1) && (A==2) ) fRadiusEff = 3.169;
215 if( (Z==1) && (A==3) ) fRadiusEff = 3.066;
216 if( (Z==2) && (A==3) ) fRadiusEff = 3.066;
217 if( (Z==2) && (A==4) ) fRadiusEff = 2.498;
222 if( (theParticle ==theAHe3) || (theParticle ==theATriton) )
226 if( (Z==1) && (A==2) ) fRadiusEff = 3.066;
227 if( (Z==1) && (A==3) ) fRadiusEff = 2.973;
228 if( (Z==2) && (A==3) ) fRadiusEff = 2.973;
229 if( (Z==2) && (A==4) ) fRadiusEff = 2.508;
235 if (theParticle == theAAlpha)
239 if( (Z==1) && (A==2) ) fRadiusEff = 2.498;
240 if( (Z==1) && (A==3) ) fRadiusEff = 2.508;
241 if( (Z==2) && (A==3) ) fRadiusEff = 2.508;
242 if( (Z==2) && (A==4) ) fRadiusEff = 2.158;
244 G4double R2 = fRadiusEff*fRadiusEff;
248 inelxsection =
pi*REf2 *10*
G4Log(1+(ApAt*sigmaTotal/(
pi*REf2*10.)));
250 fInelasticXsc = inelxsection;
251 return fInelasticXsc;
260 {
return GetInelasticElementCrossSection(aParticle, kinEnergy, Z, (
G4double) A); }
271 fElasticXsc = GetTotalElementCrossSection(aParticle, kinEnergy, Z, A)-
272 GetInelasticElementCrossSection(aParticle, kinEnergy, Z, A);
274 if (fElasticXsc < 0.) fElasticXsc = 0.;
285 {
return GetElasticElementCrossSection(aParticle, kinEnergy, Z, (
G4double) A); }
294 G4double xsection, Pmass, Energy, momentum;
297 Energy=Pmass+kinEnergy;
298 momentum=std::sqrt(Energy*Energy-Pmass*Pmass)/std::abs(theParticle->
GetBaryonNumber());
304 Elab = std::sqrt(Mn*Mn + Plab*Plab);
305 S = 2.*Mn*Mn + 2. *Mn*Elab;
306 SqrtS = std::sqrt(
S);
308 B = b0+b2*
G4Log(SqrtS/SqrtS0)*
G4Log(SqrtS/SqrtS0);
310 R0 = std::sqrt(0.40874044*SigAss - B);
321 fAntiHadronNucleonTotXsc = xsection;
322 return fAntiHadronNucleonTotXsc;
358 outFile <<
"The G4ComponentAntiNuclNuclearXS calculates total,\n"
359 <<
"inelastic, elastic cross sections of anti-nucleons and light \n"
360 <<
"anti-nucleus interactions with nuclei using Glauber's approach.\n"
361 <<
"It uses parametrizations of antiproton-proton total and elastic \n"
362 <<
"cross sections and Wood-Saxon distribution of nuclear density.\n"
363 <<
"The lower limit is 10 MeV, the upper limit is 10 TeV. \n"
364 <<
"See details in Phys.Lett. B705 (2011) 235. \n";
G4ParticleDefinition * theATriton
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
G4ParticleDefinition * theANeutron
virtual void CrossSectionDescription(std::ostream &) const
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
static G4AntiNeutron * AntiNeutron()
static G4AntiProton * AntiProton()
virtual ~G4ComponentAntiNuclNuclearXS()
G4double GetPDGMass() const
G4double G4Log(G4double x)
static G4AntiAlpha * AntiAlpha()
static constexpr double millibarn
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4int GetBaryonNumber() const
double A(double temperature)
G4ParticleDefinition * theADeuteron
G4ParticleDefinition * theAProton
static G4AntiDeuteron * AntiDeuteron()
G4ParticleDefinition * theAAlpha
G4double fAntiHadronNucleonElXsc
G4double GetAntiHadronNucleonElCrSc(const G4ParticleDefinition *aParticle, G4double kinEnergy)
G4ComponentAntiNuclNuclearXS()
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
static G4AntiHe3 * AntiHe3()
static G4AntiTriton * AntiTriton()
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
static constexpr double pi
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
G4double GetAntiHadronNucleonTotCrSc(const G4ParticleDefinition *aParticle, G4double kinEnergy)
double B(double temperature)
static constexpr double GeV
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
G4ParticleDefinition * theAHe3