108{
111 if (pE <= fEnergyLimit) { return result; }
114
115
116
119
120
121 G4double lorentz_s = tM*tM + 2*tM*pE + pM*pM;
122 if (lorentz_s <= (tM + pM)*(tM + pM)) { return result; }
123
124
126 const G4double fact = 1e-30*CLHEP::cm2;
127 const G4double pfact = 0.1/CLHEP::GeV;
129
131
132
133
134
135
136 if (pdg == -211) {
140 const G4double x = lorentz_s*inv1e7;
141 G4double sum = 122.*z23*g4calc->
powA(x, -1.23)*g4calc->
powZ(
A,-beta_prime_pi*logA);
142 fXSecPion[0] = sum;
143 sum += 31.*z23*g4calc->
powA(x, -1.53)*g4calc->
powZ(
A,-beta_prime_eta*logA);
144 fXSecPion[1] = sum;
146 for (
G4int i=2; i<5; ++i) {
147 sum += piA[i]*z23*g4calc->
powA(x, -pAP[i])*(1.0 + pG0[i] + pG1[i]*logX)
148 *g4calc->
powA(z23, -0.15*a23)/(pC0[i] + pC1[i]*logX);
149 fXSecPion[i] = sum;
150 }
151 result = sum*fact;
152 }
153
154
155 else if (pdg == 211) {
159 const G4double x = lorentz_s*inv1e7;
160 G4double sum = 122.*n23*g4calc->
powA(x, -1.23)*g4calc->
powZ(
A,-beta_prime_pi*logA);
161 fXSecPion[0] = sum;
162 sum += 31.*n23*g4calc->
powA(x, -1.53)*g4calc->
powZ(
A,-beta_prime_eta*logA);
163 fXSecPion[1] = sum;
165 for (
G4int i=2; i<5; ++i) {
166 sum += piA[i]*n23*g4calc->
powA(x, -pAP[i])*(1.0 + pG0[i] + pG1[i]*logX)
167 *g4calc->
powA(n23, -0.15*a23)/(pC0[i] + pC1[i]*logX);
168 fXSecPion[i] = sum;
169 }
170 result = sum*fact;
171 }
172
173
174 else if (pdg == -321){
175
176
177 const G4double p_momentum = std::sqrt(pE*pE - pM*pM)*pfact;
178 result = g4calc->
Z23(Z)*g4calc->
powA(p_momentum, -1.60)*kfact;
179 }
180
181
182 else if (pdg == 321) {
183 const G4double p_momentum = std::sqrt(pE*pE - pM*pM)*pfact;
184 result = g4calc->
Z23(
A-Z)*g4calc->
powA(p_momentum, -1.60)*kfact;
185 }
186
187
188 else if (pdg == 130) {
189
190 const G4double p_momentum = std::sqrt(pE*pE - pM*pM)*pfact;
191 result = 0.5*(g4calc->
Z23(Z) + g4calc->
Z23(
A-Z))*
192 g4calc->
powA(p_momentum, -1.60)*kfact;
193 }
194
195 return result*fFactor;
196}
G4double G4Log(G4double x)
G4ParticleDefinition * GetDefinition() const
G4double GetTotalEnergy() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4int GetPDGEncoding() const
G4double logZ(G4int Z) const
G4double powZ(G4int Z, G4double y) const
G4double powA(G4double A, G4double y) const
G4double Z23(G4int Z) const