67 fRemainderLifeTime(-1.0),
75 G4cout <<
"G4Decay constructor " <<
" Name:" << processName <<
G4endl;
94 }
else if (aParticleType.
GetPDGMass() <= 0.0*MeV) {
156 pathlength = ( rKineticEnergy + 1.0)* aCtau;
157 }
else if ( rKineticEnergy <
DBL_MIN ) {
161 G4cout <<
"G4Decay::GetMeanFreePath() !!particle stops!!";
200 G4bool isPreAssigned = (o_products != 0);
210 if ( (decaytable == 0) && !isExtDecayer &&!isPreAssigned ){
212 G4cout <<
"G4Decay::DoIt : decay table not defined for ";
217 "Decay table is not defined");
231 }
else if ( isExtDecayer ) {
238 if (decaychannel == 0 ){
241 " can not determine decay channel ");
247 G4cout <<
"G4Decay::DoIt : selected decay channel addr:" << decaychannel <<
G4endl;
268 if (ParentEnergy < ParentMass) {
270 G4cout <<
"G4Decay::DoIt : Total Energy is less than its mass" <<
G4endl;
272 G4cout <<
" Energy:" << ParentEnergy/MeV <<
"[MeV]";
273 G4cout <<
" Mass:" << ParentMass/MeV <<
"[MeV]";
278 "Total Energy is less than its mass");
279 ParentEnergy = ParentMass;
293 if (isPreAssigned) products->
Boost( ParentEnergy, ParentDirection);
296 if (!isExtDecayer) products->
Boost( ParentEnergy, ParentDirection);
308 G4cout <<
"G4Decay::DoIt : Decay vertex :";
309 G4cout <<
" Time: " << finalGlobalTime/
ns <<
"[ns]";
314 G4cout <<
"G4Decay::DoIt : decay products in Lab. Frame" <<
G4endl;
321 for (index=0; index < numberOfSecondaries; index++)
387 if ( previousStepSize > 0.0){
400 G4cout <<
"G4Decay::PostStepGetPhysicalInteractionLength " <<
G4endl;
G4double condition(const G4ErrorSymMatrix &m)
G4DLLIMPORT std::ostream G4cout
G4DynamicParticle * PopProducts()
void Boost(G4double totalEnergy, const G4ThreeVector &momentumDirection)
G4VDecayChannel * SelectADecayChannel()
virtual G4bool IsApplicable(const G4ParticleDefinition &)
virtual G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4VExtDecayer * pExtDecayer
virtual void EndTracking()
virtual void DaughterPolarization(const G4Track &aTrack, G4DecayProducts *products)
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4VParticleChange * DecayIt(const G4Track &aTrack, const G4Step &aStep)
G4double fRemainderLifeTime
G4ParticleChangeForDecay fParticleChangeForDecay
virtual G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *condition)
void SetExtDecayer(G4VExtDecayer *)
G4int GetVerboseLevel() const
const G4double HighestValue
G4Decay(const G4String &processName="Decay")
virtual void StartTracking(G4Track *)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
void DumpInfo(G4int mode=0) const
const G4ThreeVector & GetMomentumDirection() const
const G4DecayProducts * GetPreAssignedDecayProducts() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetTotalEnergy() const
G4double GetPreAssignedDecayProperTime() const
G4double GetTotalMomentum() const
const G4String & GetName() const
void ProposeLocalTime(G4double t)
virtual void Initialize(const G4Track &)
G4bool GetPDGStable() const
G4double GetPDGMass() const
G4DecayTable * GetDecayTable() const
G4double GetPDGLifeTime() const
const G4String & GetParticleName() const
G4TrackStatus GetTrackStatus() const
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4double GetGlobalTime() const
G4double GetProperTime() const
G4double GetLocalTime() const
G4Material * GetMaterial() const
const G4DynamicParticle * GetDynamicParticle() const
const G4TouchableHandle & GetTouchableHandle() const
void SetGoodForTrackingFlag(G4bool value=true)
void SetVerboseLevel(G4int value)
G4int GetVerboseLevel() const
virtual G4DecayProducts * DecayIt(G4double parentMass=-1.0)=0
virtual G4DecayProducts * ImportDecayProducts(const G4Track &aTrack)=0
void ProposeTrackStatus(G4TrackStatus status)
void AddSecondary(G4Track *aSecondary)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
G4double currentInteractionLength
virtual void ResetNumberOfInteractionLengthLeft()
void ClearNumberOfInteractionLengthLeft()
void SubtractNumberOfInteractionLengthLeft(G4double previousStepSize)
G4double theNumberOfInteractionLengthLeft
void SetProcessSubType(G4int)
G4VParticleChange * pParticleChange
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)