112 G4double muEnergy = fMuMass + muBindingEnergy;
113 G4double muMom = std::sqrt(muBindingEnergy*(muBindingEnergy + 2.0*fMuMass));
114 G4double availableEnergy = massA + fMuMass - muBindingEnergy;
122 if((1 == Z && 1 == A) || (2 == Z && 3 == A)) {
125 if(1 == Z) { pd = fNeutron; }
132 residualMass*residualMass/availableEnergy);
137 AddNewParticle(pd, nudir, availableEnergy - e - residualMass);
161 const std::vector<G4Nucleon>& nucleons= fNucleus.
GetNucleons();
165 G4int reentryCount = 0;
172 pDef = nucleons[
index].GetDefinition();
173 }
while(pDef != fProton);
190 momResidual = momInitial - momNu;
191 eEx = momResidual.
mag() - residualMass;
197 if(Ecms - Enu > eth) {
201 AddNewParticle(fNeutron, dir, ekin);
211 if(Enu <= 0.0 && eEx <= 0.0 && reentryCount > 100) {
214 ed <<
"Target Z= " << Z
216 ed <<
" ApplyYourself does not completed after 100 attempts" <<
G4endl;
217 G4Exception(
"G4MuMinusCapturePrecompound::AtRestDoIt",
"had006",
226 initialState.SetNumberOfExcitedParticle(nneutrons,0);
227 initialState.SetNumberOfHoles(1,1);
231 size_t n = rpv->size();
232 for(
size_t i=0; i<
n; ++i) {
236 fTime = time0 + rp->
GetTOF();
244 G4cout <<
"G4MuMinusCapturePrecompound::ApplyYourself: Nsec= "
246 <<
" E0(MeV)= " <<availableEnergy/
MeV
247 <<
" Mres(GeV)= " <<residualMass/
GeV
257 outFile <<
"Sampling of mu- capture by atomic nucleus from K-shell"
258 <<
" mesoatom orbit.\n"
259 <<
"Primary reaction mu- + p -> n + neutrino, neutron providing\n"
260 <<
" initial excitation of the target nucleus and PreCompound"
261 <<
" model samples final state\n";
G4MuMinusCapturePrecompound(G4VPreCompoundModel *ptr=0)
Hep3Vector boostVector() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
std::ostringstream G4ExceptionDescription
G4HadSecondary * GetSecondary(size_t i)
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0
void ModelDescription(std::ostream &outFile) const
G4ThreeVector G4RandomDirection()
const G4String & GetModelName() const
G4ParticleDefinition * GetDefinition() const
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
G4GLOB_DLL std::ostream G4cout
static G4NeutrinoMu * NeutrinoMu()
G4double GetBoundEnergy() const
HepLorentzVector & boost(double, double, double)
void Init(G4int theA, G4int theZ)
G4double GetGlobalTime() const
static G4Triton * Triton()
static G4Proton * Proton()
static G4Neutron * Neutron()
G4LorentzVector Get4Momentum() const
const std::vector< G4Nucleon > & GetNucleons()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double GetKineticEnergy() const
G4HadronicInteraction * FindModel(const G4String &name)
void set(double x, double y, double z, double t)
G4double GetPDGMass() const
~G4MuMinusCapturePrecompound()
static G4HadronicInteractionRegistry * Instance()
G4DynamicParticle * GetParticle()
G4ThreeVector GetMomentum() const
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
static G4MuonMinus * MuonMinus()
G4int GetNumberOfSecondaries() const