75 const G4int ListK = 28;
77 1., 2., 4., 6., 8., 11., 14., 17., 18., 21., 24.,
78 26., 29., 32., 38., 40., 41., 44., 49., 53., 55.,
79 60., 65., 70., 75., 81., 85., 92.};
80 static G4double ListKEnergy[ListK] = {
81 0.00275, 0.011, 0.043, 0.098, 0.173, 0.326,
82 0.524, 0.765, 0.853, 1.146, 1.472,
83 1.708, 2.081, 2.475, 3.323, 3.627,
84 3.779, 4.237, 5.016, 5.647, 5.966,
85 6.793, 7.602, 8.421, 9.249, 10.222,
89 G4double KEnergy = GetLinApprox(ListK,ListZK,ListKEnergy,Z);
104 Cascade[*nParticle].
SetMass( mass );
122 G4double mass = MuMass * massA / (MuMass + massA) ;
124 const G4double KEnergy = 13.6 * eV * Z * Z * mass/ electron_mass_c2;
127 for(
G4int i = 2; i < 15; i++ ) {
128 EnergyLevel[i-1] = KEnergy / (i*i) ;
138 G4double ptot = std::sqrt(EnergyLevel[13]*(EnergyLevel[13] + 2.0*Emass));
141 AddNewParticle(theElectron,moment,Emass,&nPart,Cascade);
149 if((nAuger < nElec) && ((pGamma + 10000.0) *
G4UniformRand() < 10000.0) ) {
151 DeltaE = EnergyLevel[nLevel-1] - EnergyLevel[nLevel];
154 ptot = std::sqrt(DeltaE * (DeltaE + 2.0*Emass));
157 AddNewParticle(theElectron, moment, Emass, &nPart, Cascade);
165 G4int iLevel = nLevel - 1 ;
166 if(var > 10.0) iLevel -=
G4int(var-10.0) + 1;
167 if( iLevel < 0 ) iLevel = 0;
168 DeltaE = EnergyLevel[iLevel] - EnergyLevel[nLevel];
171 AddNewParticle(theGamma, moment, 0.0, &nPart, Cascade);
174 }
while( nLevel > 0 );
186 G4double xmax = ( 1.0 + Emass*Emass/ (MuMass*MuMass) );
195 G4double pmu = std::sqrt(KEnergy*(KEnergy + 2.0*MuMass));
208 Eelect = x*MuMass*0.5;
211 Pelect = std::sqrt( Eelect*Eelect - Emass*Emass );
219 Eelect = EL.
e() - Emass - 2.0*KEnergy;
225 }
while (Eelect < 0.0 || ecm < 0.0);
230 moment = std::sqrt(Eelect * (Eelect + 2.0*Emass))*(EL.
vect().
unit());
231 AddNewParticle(theElectron, moment, Emass, nCascade, Cascade);
235 ecm = 0.5*std::sqrt(ecm);
CLHEP::HepLorentzVector G4LorentzVector
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
static G4AntiNeutrinoE * AntiNeutrinoE()
static G4Electron * Electron()
void SetParticleDef(G4ParticleDefinition *c)
void SetMomentumAndUpdate(G4ParticleMomentum mom)
void SetMass(G4double mas)
void DoBoundMuonMinusDecay(G4double Z, G4int *nCascade, G4GHEKinematicsVector *Cascade)
~G4MuMinusCaptureCascade()
G4ThreeVector & GetRandomVec()
G4int DoCascade(const G4double Z, const G4double A, G4GHEKinematicsVector *Cascade)
G4MuMinusCaptureCascade()
G4double GetKShellEnergy(G4double Z)
static G4MuonMinus * MuonMinus()
static G4NeutrinoMu * NeutrinoMu()
G4double GetPDGMass() const