63 G4VRestProcess (processName, aType), nCascade(0), targetZ(0), targetA(0),
122 targetZ = aEle->
GetZ();
127 if(isv) ni = isv->size();
139 }
while (y > 0.0 && j < ni);
146 nCascade = pEMCascade->
DoCascade(targetZ, targetMass, Cascade);
158 G4int nEmSecondaries = nCascade;
159 G4int nSecondaries = nCascade;
167 captureResult = DoMuCapture();
170 if(captureResult) nSecondaries += captureResult->size();
171 else nSecondaries = nEmSecondaries;
180 G4int n = captureResult->size();
181 for (
G4int isec = 0; isec <
n; isec++ ) {
188 G4Track* aNewTrack =
new G4Track( aNewParticle, localtime, position);
193 delete captureResult;
198 if(nEmSecondaries > 0) {
200 for (
G4int isec = 0; isec < nEmSecondaries; isec++ ) {
203 if(isec >= nCascade) localtime += tDelay;
207 aNewParticle->
SetMomentum( Cascade[isec].GetMomentum() );
209 G4Track* aNewTrack =
new G4Track( aNewParticle, localtime, position );
233 G4double muEnergy = mumass + muBindingEnergy;
234 G4double muMom = std::sqrt(muBindingEnergy*(muBindingEnergy + 2.0*mumass));
235 G4double availableEnergy = targetMass + mumass - muBindingEnergy;
256 if(iz == 1 && ia == 2) {
258 }
else if(iz == 1 && ia == 3) {
277 G4double Enu = 0.5*(availableEnergy -
292 aPreResult->push_back(aN );
293 aPreResult->push_back(aNu);
296 G4cout <<
"DoMuCapture on H or He"
299 <<
" n= " << aPreResult->size()
319 if(counter == theProtonCounter) {
345 momResidual = momInitial - nuMom;
348 eEx = momResidual.
mag();
350 G4cout <<
"G4MuonMinusCaptureAtRest::DoMuCapture: "
351 <<
" Eex(MeV)= " << (eEx-residualMass)/
MeV
355 }
while(eEx <= residualMass);
367 anInitialState.
SetA(targetA);
373 aPreResult = theHandler->
BreakItUp(anInitialState);
375 G4ReactionProductVector::iterator ires;
377 for(ires=aPreResult->begin(); ires!=aPreResult->end(); ires++) {
378 G4LorentzVector itV((*ires)->GetTotalEnergy(), (*ires)->GetMomentum());
379 itV.
boost(fromBreit);
380 (*ires)->SetTotalEnergy(itV.t());
381 (*ires)->SetMomentum(itV.vect());
387 aPreResult->push_back(aNu);
390 G4cout <<
"DoMuCapture: Nsec= "
391 << aPreResult->size() <<
" Ebalance(MeV)= " << eBal/
MeV
392 <<
" E0(MeV)= " <<availableEnergy/
MeV
393 <<
" Mres(GeV)= " <<residualMass/
GeV