48 static const G4String pType(
"MuonicAtom");
56 G4double lifetime = 1./(lambdac+lambdad);
90 "e-",
"anti_nu_e",
"nu_mu",
93 muatom->SetDIOLifeTime(1./lambdad);
94 muatom->SetNCLifeTime(1./lambdac);
122 constexpr capRate capRates [] = {
123 { 1, 1, 0.000725, 0.000017 },
124 { 2, 3, 0.002149, 0.00017 },
125 { 2, 4, 0.000356, 0.000026 },
126 { 3, 6, 0.004647, 0.00012 },
127 { 3, 7, 0.002229, 0.00012 },
128 { 4, 9, 0.006107, 0.00019 },
129 { 5, 10, 0.02757 , 0.00063 },
130 { 5, 11, 0.02188 , 0.00064 },
131 { 6, 12, 0.03807 , 0.00031 },
132 { 6, 13, 0.03474 , 0.00034 },
133 { 7, 14, 0.06885 , 0.00057 },
134 { 8, 16, 0.10242 , 0.00059 },
135 { 8, 18, 0.0880 , 0.0015 },
136 { 9, 19, 0.22905 , 0.00099 },
137 { 10, 20, 0.2288 , 0.0045 },
138 { 11, 23, 0.3773 , 0.0014 },
139 { 12, 24, 0.4823 , 0.0013 },
140 { 13, 27, 0.6985 , 0.0012 },
141 { 14, 28, 0.8656 , 0.0015 },
142 { 15, 31, 1.1681 , 0.0026 },
143 { 16, 32, 1.3510 , 0.0029 },
144 { 17, 35, 1.800 , 0.050 },
145 { 17, 37, 1.250 , 0.050 },
146 { 18, 40, 1.2727 , 0.0650 },
147 { 19, 39, 1.8492 , 0.0050 },
148 { 20, 40, 2.5359 , 0.0070 },
149 { 21, 45, 2.711 , 0.025 },
150 { 22, 48, 2.5908 , 0.0115 },
151 { 23, 51, 3.073 , 0.022 },
152 { 24, 50, 3.825 , 0.050 },
153 { 24, 52, 3.465 , 0.026 },
154 { 24, 53, 3.297 , 0.045 },
155 { 24, 54, 3.057 , 0.042 },
156 { 25, 55, 3.900 , 0.030 },
157 { 26, 56, 4.408 , 0.022 },
158 { 27, 59, 4.945 , 0.025 },
159 { 28, 58, 6.11 , 0.10 },
160 { 28, 60, 5.56 , 0.10 },
161 { 28, 62, 4.72 , 0.10 },
162 { 29, 63, 5.691 , 0.030 },
163 { 30, 66, 5.806 , 0.031 },
164 { 31, 69, 5.700 , 0.060 },
165 { 32, 72, 5.561 , 0.031 },
166 { 33, 75, 6.094 , 0.037 },
167 { 34, 80, 5.687 , 0.030 },
168 { 35, 79, 7.223 , 0.28 },
169 { 35, 81, 7.547 , 0.48 },
170 { 37, 85, 6.89 , 0.14 },
171 { 38, 88, 6.93 , 0.12 },
172 { 39, 89, 7.89 , 0.11 },
173 { 40, 91, 8.620 , 0.053 },
174 { 41, 93, 10.38 , 0.11 },
175 { 42, 96, 9.298 , 0.063 },
176 { 45, 103, 10.010 , 0.045 },
177 { 46, 106, 10.000 , 0.070 },
178 { 47, 107, 10.869 , 0.095 },
179 { 48, 112, 10.624 , 0.094 },
180 { 49, 115, 11.38 , 0.11 },
181 { 50, 119, 10.60 , 0.11 },
182 { 51, 121, 10.40 , 0.12 },
183 { 52, 128, 9.174 , 0.074 },
184 { 53, 127, 11.276 , 0.098 },
185 { 55, 133, 10.98 , 0.25 },
186 { 56, 138, 10.112 , 0.085 },
187 { 57, 139, 10.71 , 0.10 },
188 { 58, 140, 11.501 , 0.087 },
189 { 59, 141, 13.45 , 0.13 },
190 { 60, 144, 12.35 , 0.13 },
191 { 62, 150, 12.22 , 0.17 },
192 { 64, 157, 12.00 , 0.13 },
193 { 65, 159, 12.73 , 0.13 },
194 { 66, 163, 12.29 , 0.18 },
195 { 67, 165, 12.95 , 0.13 },
196 { 68, 167, 13.04 , 0.27 },
197 { 72, 178, 13.03 , 0.21 },
198 { 73, 181, 12.86 , 0.13 },
199 { 74, 184, 12.76 , 0.16 },
200 { 79, 197, 13.35 , 0.10 },
201 { 80, 201, 12.74 , 0.18 },
202 { 81, 205, 13.85 , 0.17 },
203 { 82, 207, 13.295 , 0.071 },
204 { 83, 209, 13.238 , 0.065 },
205 { 90, 232, 12.555 , 0.049 },
206 { 92, 238, 12.592 , 0.035 },
207 { 92, 233, 14.27 , 0.15 },
208 { 92, 235, 13.470 , 0.085 },
209 { 92, 236, 13.90 , 0.40 },
210 { 93, 237, 13.58 , 0.18 },
211 { 94, 239, 13.90 , 0.20 },
212 { 94, 242, 12.86 , 0.19 }
217 std::size_t nCapRates =
sizeof(capRates)/
sizeof(capRates[0]);
218 for (std::size_t j = 0; j < nCapRates; ++j)
220 if( capRates[j].
Z ==
Z && capRates[j].
A ==
A )
222 lambda = capRates[j].cRate / microsecond;
226 if (capRates[j].
Z >
Z) {
break;}
244 lambda = t1 * zeff2 * zeff2 * (r2 * r2) * (1.0 - (1.0 - xmu) * .75704) *
245 (a2ze * b0a + 1.0 - (a2ze - 1.0) * b0b -
262 constexpr size_t maxZ = 100;
265 1.00, 1.98, 2.94, 3.89, 4.81, 5.72, 6.61, 7.49, 8.32, 9.14,
266 9.95,10.69,11.48,12.22,12.90,13.64,14.24,14.89,15.53,16.15,
267 16.77,17.38,18.04,18.49,19.06,19.59,20.13,20.66,21.12,21.61,
268 22.02,22.43,22.84,23.24,23.65,24.06,24.47,24.85,25.23,25.61,
269 25.99,26.37,26.69,27.00,27.32,27.63,27.95,28.20,28.42,28.64,
270 28.79,29.03,29.27,29.51,29.75,29.99,30.22,30.36,30.53,30.69,
271 30.85,31.01,31.18,31.34,31.48,31.62,31.76,31.90,32.05,32.19,
272 32.33,32.47,32.61,32.76,32.94,33.11,33.29,33.46,33.64,33.81,
273 34.21,34.18,34.00,34.10,34.21,34.31,34.42,34.52,34.63,34.73,
274 34.84,34.94,35.05,35.16,35.25,35.36,35.46,35.57,35.67,35.78 };
303 constexpr decRate decRates [] = {
304 { 1, 0.4558514, 0.0000151 }
321 if (
Z == 1) { lambda = decRates[0].dRate/microsecond; }
325 constexpr G4double freeMuonDecayRate = 0.45517005 / microsecond;
328 lambda -= 2.5 * x * x;
329 lambda *= freeMuonDecayRate;
341 constexpr G4int ListK = 28;
342 constexpr G4double ListZK[ListK] = {
343 1., 2., 4., 6., 8., 11., 14., 17., 18., 21., 24.,
344 26., 29., 32., 38., 40., 41., 44., 49., 53., 55.,
345 60., 65., 70., 75., 81., 85., 92.};
346 constexpr G4double ListKEnergy[ListK] = {
347 0.00275, 0.011, 0.043, 0.098, 0.173, 0.326,
348 0.524, 0.765, 0.853, 1.146, 1.472,
349 1.708, 2.081, 2.475, 3.323, 3.627,
350 3.779, 4.237, 5.016, 5.647, 5.966,
351 6.793, 7.602, 8.421, 9.249, 10.222,
367 if(Xuser <= X[0]) Yuser =
Y[0];
368 else if(Xuser >= X[
N-1]) Yuser =
Y[
N-1];
374 if(Xuser <= X[i])
break;
377 if(Xuser == X[i]) Yuser =
Y[i];
378 else Yuser =
Y[i-1] + (
Y[i] -
Y[i-1])*(Xuser - X[i-1])/(X[i] - X[i-1]);
G4double Y(G4double density)
void Insert(G4VDecayChannel *aChannel)
static G4MuonicAtom * ConstructMuonicAtom(const G4String &name, G4int encoding, G4Ions const *baseion)
static G4double GetKShellEnergy(G4double A)
static G4double GetMuonCaptureRate(G4int Z, G4int A)
static G4double GetLinApprox(G4int N, const G4double *const X, const G4double *const Y, G4double Xuser)
static G4double GetMuonDecayRate(G4int Z)
static G4double GetMuonZeff(G4int Z)
G4double GetPDGMagneticMoment() const
G4int GetPDGiIsospin() const
G4int GetPDGiConjugation() const
G4int GetAtomicNumber() const
G4int GetPDGiGParity() const
G4double GetPDGMass() const
G4int GetPDGiParity() const
G4int GetAtomicMass() const
G4int GetLeptonNumber() const
G4double GetPDGCharge() const
G4int GetPDGiSpin() const
G4int GetBaryonNumber() const
G4int GetPDGiIsospin3() const
const G4String & GetParticleName() const
const G4String & GetParticleSubType() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()