116 G4double pmu = std::sqrt(KEnergy*(KEnergy + 2.0*fMuMass));
130 Eelect = x*fMuMass*0.5;
148 }
while (Eelect < 0.0 || ecm < 0.0);
157 AddNewParticle(dp, time);
161 ecm = 0.5*std::sqrt(ecm);
167 AddNewParticle(dp, time);
170 AddNewParticle(dp, time);
200 const capRate capRates [] = {
201 { 1, 1, 0.000725, 0.000017 },
202 { 2, 3, 0.002149, 0.00017 },
203 { 2, 4, 0.000356, 0.000026 },
204 { 3, 6, 0.004647, 0.00012 },
205 { 3, 7, 0.002229, 0.00012 },
206 { 4, 9, 0.006107, 0.00019 },
207 { 5, 10, 0.02757 , 0.00063 },
208 { 5, 11, 0.02188 , 0.00064 },
209 { 6, 12, 0.03807 , 0.00031 },
210 { 6, 13, 0.03474 , 0.00034 },
211 { 7, 14, 0.06885 , 0.00057 },
212 { 8, 16, 0.10242 , 0.00059 },
213 { 8, 18, 0.0880 , 0.0015 },
214 { 9, 19, 0.22905 , 0.00099 },
215 { 10, 20, 0.2288 , 0.0045 },
216 { 11, 23, 0.3773 , 0.0014 },
217 { 12, 24, 0.4823 , 0.0013 },
218 { 13, 27, 0.6985 , 0.0012 },
219 { 14, 28, 0.8656 , 0.0015 },
220 { 15, 31, 1.1681 , 0.0026 },
221 { 16, 32, 1.3510 , 0.0029 },
222 { 17, 35, 1.800 , 0.050 },
223 { 17, 37, 1.250 , 0.050 },
224 { 18, 40, 1.2727 , 0.0650 },
225 { 19, 39, 1.8492 , 0.0050 },
226 { 20, 40, 2.5359 , 0.0070 },
227 { 21, 45, 2.711 , 0.025 },
228 { 22, 48, 2.5908 , 0.0115 },
229 { 23, 51, 3.073 , 0.022 },
230 { 24, 50, 3.825 , 0.050 },
231 { 24, 52, 3.465 , 0.026 },
232 { 24, 53, 3.297 , 0.045 },
233 { 24, 54, 3.057 , 0.042 },
234 { 25, 55, 3.900 , 0.030 },
235 { 26, 56, 4.408 , 0.022 },
236 { 27, 59, 4.945 , 0.025 },
237 { 28, 58, 6.11 , 0.10 },
238 { 28, 60, 5.56 , 0.10 },
239 { 28, 62, 4.72 , 0.10 },
240 { 29, 63, 5.691 , 0.030 },
241 { 30, 66, 5.806 , 0.031 },
242 { 31, 69, 5.700 , 0.060 },
243 { 32, 72, 5.561 , 0.031 },
244 { 33, 75, 6.094 , 0.037 },
245 { 34, 80, 5.687 , 0.030 },
246 { 35, 79, 7.223 , 0.28 },
247 { 35, 81, 7.547 , 0.48 },
248 { 37, 85, 6.89 , 0.14 },
249 { 38, 88, 6.93 , 0.12 },
250 { 39, 89, 7.89 , 0.11 },
251 { 40, 91, 8.620 , 0.053 },
252 { 41, 93, 10.38 , 0.11 },
253 { 42, 96, 9.298 , 0.063 },
254 { 45, 103, 10.010 , 0.045 },
255 { 46, 106, 10.000 , 0.070 },
256 { 47, 107, 10.869 , 0.095 },
257 { 48, 112, 10.624 , 0.094 },
258 { 49, 115, 11.38 , 0.11 },
259 { 50, 119, 10.60 , 0.11 },
260 { 51, 121, 10.40 , 0.12 },
261 { 52, 128, 9.174 , 0.074 },
262 { 53, 127, 11.276 , 0.098 },
263 { 55, 133, 10.98 , 0.25 },
264 { 56, 138, 10.112 , 0.085 },
265 { 57, 139, 10.71 , 0.10 },
266 { 58, 140, 11.501 , 0.087 },
267 { 59, 141, 13.45 , 0.13 },
268 { 60, 144, 12.35 , 0.13 },
269 { 62, 150, 12.22 , 0.17 },
270 { 64, 157, 12.00 , 0.13 },
271 { 65, 159, 12.73 , 0.13 },
272 { 66, 163, 12.29 , 0.18 },
273 { 67, 165, 12.95 , 0.13 },
274 { 68, 167, 13.04 , 0.27 },
275 { 72, 178, 13.03 , 0.21 },
276 { 73, 181, 12.86 , 0.13 },
277 { 74, 184, 12.76 , 0.16 },
278 { 79, 197, 13.35 , 0.10 },
279 { 80, 201, 12.74 , 0.18 },
280 { 81, 205, 13.85 , 0.17 },
281 { 82, 207, 13.295 , 0.071 },
282 { 83, 209, 13.238 , 0.065 },
283 { 90, 232, 12.555 , 0.049 },
284 { 92, 238, 12.592 , 0.035 },
285 { 92, 233, 14.27 , 0.15 },
286 { 92, 235, 13.470 , 0.085 },
287 { 92, 236, 13.90 , 0.40 },
288 { 93, 237, 13.58 , 0.18 },
289 { 94, 239, 13.90 , 0.20 },
290 { 94, 242, 12.86 , 0.19 }
295 size_t nCapRates =
sizeof(capRates)/
sizeof(capRates[0]);
296 for (
size_t j = 0; j < nCapRates; ++j) {
297 if( capRates[j].Z == Z && capRates[j].A == A ) {
302 if (capRates[j].Z > Z) {
break;}
320 lambda = t1 * zeff2 * zeff2 * (r2 * r2) * (1.0 - (1.0 - xmu) * .75704) *
321 (a2ze * b0a + 1.0 - (a2ze - 1.0) * b0b -
343 const size_t maxZ = 100;
346 1.00, 1.98, 2.94, 3.89, 4.81, 5.72, 6.61, 7.49, 8.32, 9.14,
347 9.95,10.69,11.48,12.22,12.90,13.64,14.24,14.89,15.53,16.15,
348 16.77,17.38,18.04,18.49,19.06,19.59,20.13,20.66,21.12,21.61,
349 22.02,22.43,22.84,23.24,23.65,24.06,24.47,24.85,25.23,25.61,
350 25.99,26.37,26.69,27.00,27.32,27.63,27.95,28.20,28.42,28.64,
351 28.79,29.03,29.27,29.51,29.75,29.99,30.22,30.36,30.53,30.69,
352 30.85,31.01,31.18,31.34,31.48,31.62,31.76,31.90,32.05,32.19,
353 32.33,32.47,32.61,32.76,32.94,33.11,33.29,33.46,33.64,33.81,
354 34.21,34.18,34.00,34.10,34.21,34.31,34.42,34.52,34.63,34.73,
355 34.84,34.94,35.05,35.16,35.25,35.36,35.46,35.57,35.67,35.78 };
358 if (Z>
G4int(maxZ)) {Z=maxZ;}
386 const decRate decRates [] = {
387 { 1, 0.4558514, 0.0000151 }
404 if (Z == 1) {lambda = decRates[0].dRate/
microsecond;}
410 lambda -= 2.5 * x *
x;
411 lambda *= freeMuonDecayRate;
422 outFile <<
"Sample probabilities of mu- nuclear capture of decay"
423 <<
" from K-shell orbit.\n"
424 <<
" Time of projectile is changed taking into account life time"
425 <<
" of muonic atom.\n"
426 <<
" If decay is sampled primary state become stopAndKill,"
427 <<
" else - isAlive.\n"
428 <<
" Based of reviews:\n"
429 <<
" N.C.Mukhopadhyay Phy. Rep. 30 (1977) 1.\n"
430 <<
" T. Suzuki, D. F. Measday, J.P. Roalsvig Phys.Rev. C35 (1987) 2212\n";
Hep3Vector boostVector() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
void ModelDescription(std::ostream &outFile) const
void SetGlobalTime(G4double t)
G4ThreeVector G4RandomDirection()
void SetStatusChange(G4HadFinalStateStatus aS)
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4double GetMuonZeff(G4int Z)
double A(double temperature)
static G4NeutrinoMu * NeutrinoMu()
G4double GetBoundEnergy() const
HepLorentzVector & boost(double, double, double)
G4double GetGlobalTime() const
G4double G4Log(G4double x)
G4double GetPDGMass() const
static G4MuonMinus * MuonMinus()
static G4Electron * Electron()
static constexpr double microsecond
static G4double GetMuonDecayRate(G4int Z)
static G4double GetMuonCaptureRate(G4int Z, G4int A)
CLHEP::HepLorentzVector G4LorentzVector