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)
85 G4double xsection, sigmaTotal, sigmaElastic;
91 fRadiusNN2=sigmaTotal*sigmaTotal*0.1/(8.*sigmaElastic*pi) ;
98 fTotalXsc = sigmaTotal * millibarn;
102 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.800;
103 if ( (Z==1) && (
A==3) ) fRadiusEff = 3.300;
104 if ( (Z==2) && (
A==3) ) fRadiusEff = 3.300;
105 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.376;
108 if (theParticle == theADeuteron) {
110 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.238;
111 if ( (Z==1) && (
A==3) ) fRadiusEff = 3.144;
112 if ( (Z==2) && (
A==3) ) fRadiusEff = 3.144;
113 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.544;
117 if ( (theParticle ==theAHe3) || (theParticle ==theATriton) ) {
119 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.144;
120 if ( (Z==1) && (
A==3) ) fRadiusEff = 3.075;
121 if ( (Z==2) && (
A==3) ) fRadiusEff = 3.075;
122 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.589;
126 if (theParticle == theAAlpha) {
128 if ( (Z==1) && (
A==2) ) fRadiusEff = 2.544;
129 if ( (Z==1) && (
A==3) ) fRadiusEff = 2.589;
130 if ( (Z==2) && (
A==3) ) fRadiusEff = 2.589;
131 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.241;
134 G4double R2 = fRadiusEff*fRadiusEff;
138 xsection = 2*pi*REf2*10.*
G4Log(1+(ApAt*sigmaTotal/(2*pi*REf2*10.)));
139 xsection = xsection *millibarn;
140 fTotalXsc = xsection;
163 G4double inelxsection, sigmaTotal, sigmaElastic;
169 fRadiusNN2=sigmaTotal*sigmaTotal*0.1/(8.*sigmaElastic*pi);
176 fInelasticXsc = (sigmaTotal - sigmaElastic) * millibarn;
177 return fInelasticXsc;
180 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.582;
181 if ( (Z==1) && (
A==3) ) fRadiusEff = 3.105;
182 if ( (Z==2) && (
A==3) ) fRadiusEff = 3.105;
183 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.209;
186 if (theParticle ==theADeuteron) {
188 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.169;
189 if ( (Z==1) && (
A==3) ) fRadiusEff = 3.066;
190 if ( (Z==2) && (
A==3) ) fRadiusEff = 3.066;
191 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.498;
195 if ( (theParticle ==theAHe3) || (theParticle ==theATriton) ) {
197 if ( (Z==1) && (
A==2) ) fRadiusEff = 3.066;
198 if ( (Z==1) && (
A==3) ) fRadiusEff = 2.973;
199 if ( (Z==2) && (
A==3) ) fRadiusEff = 2.973;
200 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.508;
204 if (theParticle == theAAlpha) {
206 if ( (Z==1) && (
A==2) ) fRadiusEff = 2.498;
207 if ( (Z==1) && (
A==3) ) fRadiusEff = 2.508;
208 if ( (Z==2) && (
A==3) ) fRadiusEff = 2.508;
209 if ( (Z==2) && (
A==4) ) fRadiusEff = 2.158;
212 G4double R2 = fRadiusEff*fRadiusEff;
216 inelxsection = pi*REf2 *10*
G4Log(1+(ApAt*sigmaTotal/(pi*REf2*10.)));
217 inelxsection = inelxsection * millibarn;
218 fInelasticXsc = inelxsection;
220 return fInelasticXsc;
244 if (fElasticXsc < 0.) fElasticXsc = 0.;
266 G4double xsection, Pmass, Energy, momentum;
269 Energy=Pmass+kinEnergy;
270 momentum=std::sqrt(Energy*Energy-Pmass*Pmass)/std::abs(theParticle->
GetBaryonNumber());
275 Elab = std::sqrt(Mn*Mn + Plab*Plab);
276 S = 2.*Mn*Mn + 2. *Mn*Elab;
277 SqrtS = std::sqrt(S);
279 SigAss = 36.04 +0.304*
G4Log(S/S0)*
G4Log(S/S0);
280 R0 = std::sqrt(0.40874044*SigAss -
B);
291 fAntiHadronNucleonTotXsc = xsection;
293 return fAntiHadronNucleonTotXsc;
306 GetAntiHadronNucleonTotCrSc(aParticle,kinEnergy);
318 fAntiHadronNucleonElXsc = xsection;
320 return fAntiHadronNucleonElXsc;
328 outFile <<
"The G4ComponentAntiNuclNuclearXS calculates total,\n"
329 <<
"inelastic, elastic cross sections of anti-nucleons and light \n"
330 <<
"anti-nucleus interactions with nuclei using Glauber's approach.\n"
331 <<
"It uses parametrizations of antiproton-proton total and elastic \n"
332 <<
"cross sections and Wood-Saxon distribution of nuclear density.\n"
333 <<
"See details in Phys.Lett. B705 (2011) 235. \n";
double B(double temperature)
double A(double temperature)
G4double G4Log(G4double x)
static G4AntiAlpha * AntiAlpha()
static G4AntiDeuteron * AntiDeuteron()
static G4AntiHe3 * AntiHe3()
static G4AntiNeutron * AntiNeutron()
static G4AntiProton * AntiProton()
static G4AntiTriton * AntiTriton()
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
virtual void CrossSectionDescription(std::ostream &) const
G4double GetAntiHadronNucleonElCrSc(const G4ParticleDefinition *aParticle, G4double kinEnergy)
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
G4ComponentAntiNuclNuclearXS()
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
virtual ~G4ComponentAntiNuclNuclearXS()
G4double GetAntiHadronNucleonTotCrSc(const G4ParticleDefinition *aParticle, G4double kinEnergy)
G4double GetPDGMass() const
G4int GetBaryonNumber() const
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const