98 fTime = projectile.GetGlobalTime();
101 G4double muBindingEnergy = projectile.GetBoundEnergy();
112 G4double muEnergy = fMuMass + muBindingEnergy;
113 G4double muMom =std::sqrt(muBindingEnergy*(muBindingEnergy + 2.0*fMuMass));
114 G4double availableEnergy = massA + fMuMass - muBindingEnergy;
124 if((1 == Z && 1 == A) || (2 == Z && 3 == A)) {
127 if(1 == Z) { pd = fNeutron; }
134 residualMass*residualMass/availableEnergy);
139 AddNewParticle(pd, nudir, availableEnergy - e - residualMass);
144 }
else if((1 == Z && 2 == A) || (2 == Z && 4 == A)) {
147 if(1 == Z) { pd = fNeutron; }
157 residualMass*residualMass/availableEnergy);
162 AddNewParticle(pd, nudir, availableEnergy - e - residualMass);
166 AddNewParticle(fNeutron, nudir, nenergy);
178 const std::vector<G4Nucleon>& nucleons= fNucleus.
GetNucleons();
181 G4int reentryCount = 0;
188 pDef = nucleons[index].GetDefinition();
189 }
while(pDef != fProton);
206 momResidual = momInitial - momNu;
207 eEx = momResidual.
mag() - residualMass;
208 if(eEx < 0.0 && eEx + nenergy >= 0.0) {
209 momResidual.
set(0.0, 0.0, 0.0, residualMass);
215 if(reentryCount > 100 && eEx < 0.0) {
218 ed <<
"Target Z= " << Z
219 <<
" A= " << A <<
" Eex(MeV)= " << eEx/
MeV <<
G4endl;
220 ed <<
" ApplyYourself does not completed after 100 attempts -"
221 <<
" excitation energy is set to zero";
222 G4Exception(
"G4MuMinusCapturePrecompound::ApplyYourself",
"had006",
224 momResidual.
set(0.0, 0.0, 0.0, residualMass);
234 initialState.SetNumberOfExcitedParticle(2,0);
235 initialState.SetNumberOfHoles(1,1);
239 size_t n = rpv->size();
240 for(
size_t i=0; i<
n; ++i) {
244 fTime = time0 + rp->
GetTOF();
252 G4cout <<
"G4MuMinusCapturePrecompound::ApplyYourself: Nsec= "
254 <<
" E0(MeV)= " <<availableEnergy/
MeV
255 <<
" Mres(GeV)= " <<residualMass/
GeV
Hep3Vector boostVector() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
std::ostringstream G4ExceptionDescription
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0
G4ThreeVector G4RandomDirection()
const G4String & GetModelName() const
void SetStatusChange(G4HadFinalStateStatus aS)
std::vector< G4ReactionProduct * > G4ReactionProductVector
const G4ParticleDefinition * GetDefinition() const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
static G4NeutrinoMu * NeutrinoMu()
HepLorentzVector & boost(double, double, double)
static constexpr double neutron_mass_c2
void Init(G4int theA, G4int theZ)
static G4Triton * Triton()
const std::vector< G4Nucleon > & GetNucleons()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double GetKineticEnergy() const
void set(double x, double y, double z, double t)
G4double GetPDGMass() const
static constexpr double GeV
G4ThreeVector GetMomentum() const
static constexpr double MeV
static constexpr double keV
G4int GetNumberOfSecondaries() const