193 G4cout <<
"G4MuonicAtomDecay::DecayIt time set to: "<< maDTime/
ns <<
"[ns]" <<
G4endl;
212 G4cout <<
"G4MuonicAtomDecay::DecayIt: selected DIO mode" <<
G4endl;
224 if ( decaychannel ==0) {
227 ed <<
"Can not determine decay channel for "
229 <<
" mass of dynamic particle: " << massParent/
GeV <<
" (GEV)" <<
G4endl
230 <<
" dacay table has " << decaytable->
entries() <<
" entries" <<
G4endl;
232 if (massParent < 0.) {
234 ed <<
"Using PDG mass ("<<checkedmass/
GeV <<
"(GeV)) in IsOKWithParentMass" <<
G4endl;
238 ed << ic <<
": BR " << dc->
GetBR() <<
", IsOK? "
242 for (
G4int id=0;
id<ndaughters;++id) {
243 if (
id>0) ed <<
" + ";
254 G4cout <<
"G4MuonicAtomDecay::DecayIt : selected decay channel addr:"
275 if (ParentEnergy < ParentMass) {
277 G4cout <<
"G4MuonicAtomDecay::DecayIt : Total Energy is less than its mass" <<
G4endl;
279 G4cout <<
" Energy:" << ParentEnergy/
MeV <<
"[MeV]";
280 G4cout <<
" Mass:" << ParentMass/
MeV <<
"[MeV]";
285 "Total Energy is less than its mass");
286 ParentEnergy = ParentMass;
297 finalGlobalTime += maDTime;
298 finalLocalTime += maDTime;
302 products->
Boost( ParentEnergy, ParentDirection);
311 G4cout <<
"G4MuonicAtomDecay::DecayIt : Decay vertex :";
312 G4cout <<
" Time: " << finalGlobalTime/
ns <<
"[ns]";
317 G4cout <<
"G4MuonicAtomDecay::DecayIt : decay products in Lab. Frame" <<
G4endl;
324 for (index=0; index < numberOfSecondaries; index++)
360 G4cout <<
"G4MuonicAtomDecay::DecayIt: selected NC mode" <<
G4endl;
378 G4int reentryCount = 0;
394 ed <<
" ApplyYourself failed" <<
G4endl;
395 G4Exception(
"G4MuonicAtomDecay::DecayIt",
"HAD_MAD_101",
402 if(reentryCount>100) {
409 ed <<
" ApplyYourself does not completed after 100 attempts" <<
G4endl;
410 G4Exception(
"G4MuonicAtomDecay::DecayIt",
"HAD_MAD_102",
418 for(
G4int i=0; i<nsec; ++i) {
424 G4cout <<
"G4MuonicAtomDecay::DecayIt time set to: "
425 << (maDTime + ctime)/
ns <<
"[ns]" <<
G4endl;
446 outFile <<
"MuonicAtom process where Muon decays in orbit or is captured by the nucleus." <<
G4endl;
461 if(efinal < 0.0) { efinal = 0.0; }
469 }
else if(0.0 == efinal) {
481 G4double newP = std::sqrt(efinal*(efinal + 2*mass));
484 newP4.
rotate(rotation, it);
487 newE = newP4.
e() - mass;
491 DumpState(aT,
"Primary has zero energy after interaction",ed);
495 if(newE < 0.0) { newE = 0.0; }
509 for (
G4int i = 0; i < nSec; ++i) {
511 theM.
rotate(rotation, it);
517 if (time < 0.0) { time = 0.0; }
544 DumpState(aT,
"Secondary has zero energy",ed);
547 G4Exception(
"G4MuonicAtomDecay::FillResults",
"HAD_MAD_103",
563 ed <<
"Unrecoverable error in the method " << method <<
" of "
565 ed <<
"TrackID= "<< aTrack.
GetTrackID() <<
" ParentID= "
613 if ( rKineticEnergy > HighestValue) {
615 pathlength = ( rKineticEnergy + 1.0)* aCtau;
616 }
else if ( rKineticEnergy <
DBL_MIN ) {
620 G4cout <<
"G4MuonicAtomDecay::GetMeanFreePath() !!particle stops!!";
G4double GetLocalTime() const
G4double GetKineticEnergy() const
G4double GetNCLifeTime() const
G4int GetCreatorModelType() const
G4double GetWeight() const
G4ParticleChange theTotalResult
CLHEP::Hep3Vector G4ThreeVector
virtual G4bool IsApplicable(const G4ParticleDefinition &)
G4int GetAtomicNumber() const
std::ostringstream G4ExceptionDescription
G4DecayTable * GetDecayTable() const
std::vector< ExP01TrackerHit * > a
const G4ThreeVector & GetMomentumChange() const
virtual void ResetNumberOfInteractionLengthLeft()
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
static constexpr double MeV
G4double GetPDGLifeTime() const
void SetWeight(G4double aValue)
G4HadSecondary * GetSecondary(size_t i)
void ProposeWeight(G4double finalWeight)
void SetVerboseLevel(G4int value)
G4int GetNumberOfDaughters() const
void SetCreatorModelIndex(G4int idx)
const G4ThreeVector & GetMomentumDirection() const
void SetGlobalTime(G4double t)
G4HadFinalStateStatus GetStatusChange() const
const G4String & GetParticleName() const
const G4String & GetParticleType() const
static G4double GetKShellEnergy(G4double A)
const G4TouchableHandle & GetTouchableHandle() const
virtual void ProcessDescription(std::ostream &outFile) const
G4bool enablePostStepDoIt
static G4MuonMinus * MuonMinus()
const G4ParticleDefinition * GetParticleDefinition() const
G4double condition(const G4ErrorSymMatrix &m)
G4ParticleDefinition * GetDefinition() const
G4double GetDIOLifeTime() const
G4DynamicParticle * PopProducts()
virtual G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *condition)
G4double GetPDGMass() const
void Boost(G4double totalEnergy, const G4ThreeVector &momentumDirection)
void AddSecondary(G4Track *aSecondary)
G4double GetWeight() const
const G4String & GetName() const
G4HadronicInteraction * cmptr
void ProposeLocalTime(G4double t)
G4int GetVerboseLevel() const
G4ParticleDefinition * GetDefinition() const
virtual void Initialize(const G4Track &)
virtual G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4VDecayChannel * GetDecayChannel(G4int index) const
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)=0
G4double GetGlobalTime() const
void Set4Momentum(const G4LorentzVector &momentum)
G4LorentzVector Get4Momentum() const
double A(double temperature)
void SetTouchableHandle(const G4TouchableHandle &apValue)
const G4String & GetProcessName() const
const G4ThreeVector & GetPosition() const
void ProposeEnergy(G4double finalEnergy)
G4Material * GetMaterial() const
const G4ThreeVector const G4double const
G4int GetVerboseLevel() const
const G4String & GetDaughterName(G4int anIndex) const
G4int GetNumberOfSecondaries() const
G4bool GetPDGStable() const
G4double G4ParticleHPJENDLHEData::G4double result
void SetGoodForTrackingFlag(G4bool value=true)
static constexpr double twopi
G4double GetLocalEnergyDeposit() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
static constexpr double c_light
G4ProcessVector * GetAtRestProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4ProcessManager * GetProcessManager() const
G4VParticleChange * DecayIt(const G4Track &theTrack, const G4Step &theStep)
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
G4DynamicParticle * GetParticle()
G4int GetAtomicMass() const
static constexpr double mm
void FillResult(G4HadFinalState *aR, const G4Track &aT)
G4double GetKineticEnergy() const
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
void ClearNumberOfInteractionLengthLeft()
virtual ~G4MuonicAtomDecay()
virtual G4DecayProducts * DecayIt(G4double parentMass=-1.0)=0
void DumpState(const G4Track &, const G4String &, G4ExceptionDescription &)
virtual G4bool IsOKWithParentMass(G4double parentMass)
G4VDecayChannel * SelectADecayChannel(G4double parentMass=-1.)
G4double GetTotalMomentum() const
void SetTime(G4double aT)
G4double GetTotalEnergy() const
void SetParameters(const G4double A, const G4double Z)
G4double theNumberOfInteractionLengthLeft
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double GetEnergyChange() const
G4TrackStatus GetTrackStatus() const
const G4ThreeVector & GetMomentumDirection() const
G4Ions const * GetBaseIon() const
void ProposeTrackStatus(G4TrackStatus status)
const G4LorentzRotation & GetTrafoToLab() const
static constexpr double GeV
void SetBoundEnergy(G4double e)
static constexpr double GeV
const G4DynamicParticle * GetDynamicParticle() const
G4MuonicAtomDecay(G4HadronicInteraction *hiptr=nullptr, const G4String &processName="MuonicAtomDecay")
const G4String & GetName() const
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
G4VPhysicalVolume * GetVolume() const
G4int GetParentID() const
const G4String & GetModelName() const
HepLorentzVector & rotate(double, const Hep3Vector &)
void SetNumberOfSecondaries(G4int totSecondaries)