201 G4bool isPreAssigned = (o_products != 0);
211 if ( (decaytable == 0) && !isExtDecayer &&!isPreAssigned ){
213 G4cout <<
"G4Decay::DoIt : decay table not defined for ";
218 "Decay table is not defined");
232 }
else if ( isExtDecayer ) {
252 if ( decaychannel ==0) {
255 ed <<
"Can not determine decay channel for "
257 <<
" mass of dynamic particle: " << massParent/
GeV <<
" (GEV)" <<
G4endl
258 <<
" dacay table has " << decaytable->
entries() <<
" entries" <<
G4endl;
260 if (massParent < 0.) {
262 ed <<
"Using PDG mass ("<<checkedmass/
GeV <<
"(GeV)) in IsOKWithParentMass" <<
G4endl;
266 ed << ic <<
": BR " << dc->
GetBR() <<
", IsOK? "
270 for (
G4int id=0;
id<ndaughters;++id) {
271 if (
id>0) ed <<
" + ";
282 G4cout <<
"G4Decay::DoIt : selected decay channel addr:"
304 if (ParentEnergy < ParentMass) {
306 G4cout <<
"G4Decay::DoIt : Total Energy is less than its mass" <<
G4endl;
308 G4cout <<
" Energy:" << ParentEnergy/
MeV <<
"[MeV]";
309 G4cout <<
" Mass:" << ParentMass/
MeV <<
"[MeV]";
314 "Total Energy is less than its mass");
315 ParentEnergy = ParentMass;
329 if (isPreAssigned) products->
Boost( ParentEnergy, ParentDirection);
332 if (!isExtDecayer) products->
Boost( ParentEnergy, ParentDirection);
343 G4cout <<
"G4Decay::DoIt : Decay vertex :";
344 G4cout <<
" Time: " << finalGlobalTime/
ns <<
"[ns]";
349 G4cout <<
"G4Decay::DoIt : decay products in Lab. Frame" <<
G4endl;
356 for (index=0; index < numberOfSecondaries; index++)
G4double GetLocalTime() const
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
G4double GetTotalEnergy() const
const G4DynamicParticle * GetDynamicParticle() const
G4int GetNumberOfDaughters() const
virtual G4DecayProducts * ImportDecayProducts(const G4Track &aTrack)=0
G4bool GetPDGStable() const
const G4ThreeVector & GetPosition() const
G4TrackStatus GetTrackStatus() const
const G4DecayProducts * GetPreAssignedDecayProducts() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4VDecayChannel * GetDecayChannel(G4int index) const
virtual G4bool IsOKWithParentMass(G4double parentMass)
G4ParticleDefinition * GetDefinition() const
G4VExtDecayer * pExtDecayer
void Boost(G4double totalEnergy, const G4ThreeVector &momentumDirection)
void ClearNumberOfInteractionLengthLeft()
const G4String & GetParticleName() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double fRemainderLifeTime
G4DecayTable * GetDecayTable() const
virtual void Initialize(const G4Track &)
G4GLOB_DLL std::ostream G4cout
void SetVerboseLevel(G4int value)
void ProposeLocalTime(G4double t)
const G4ThreeVector & GetMomentumDirection() const
G4VDecayChannel * SelectADecayChannel(G4double parentMass=-1.)
static constexpr double cm
G4double GetGlobalTime() const
void AddSecondary(G4Track *aSecondary)
const G4TouchableHandle & GetTouchableHandle() const
const G4String & GetDaughterName(G4int anIndex) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4int GetVerboseLevel() const
G4double GetPDGMass() const
void SetNumberOfSecondaries(G4int totSecondaries)
G4DynamicParticle * PopProducts()
static constexpr double GeV
virtual void DaughterPolarization(const G4Track &aTrack, G4DecayProducts *products)
static constexpr double MeV
virtual G4DecayProducts * DecayIt(G4double parentMass=-1.0)=0
void ProposeTrackStatus(G4TrackStatus status)
void SetGoodForTrackingFlag(G4bool value=true)
G4ParticleChangeForDecay fParticleChangeForDecay
G4int GetVerboseLevel() const