49 const G4double timeThreshold=-1.0);
52 G4bool IsApplicable(
const G4ParticleDefinition&)
override;
57 G4VParticleChange* AtRestDoIt(
const G4Track& theTrack,
58 const G4Step& theStep)
override;
60 G4VParticleChange* PostStepDoIt(
const G4Track& theTrack,
61 const G4Step& theStep)
override;
63 void BuildPhysicsTable(
const G4ParticleDefinition &)
override;
65 void ProcessDescription(std::ostream& outFile)
const override;
67 virtual G4VParticleChange* DecayIt(
const G4Track& theTrack,
68 const G4Step& theStep);
71 G4DecayTable* GetDecayTable(
const G4ParticleDefinition*);
74 void SelectAVolume(
const G4String& aVolume);
77 void DeselectAVolume(
const G4String& aVolume);
80 void SelectAllVolumes();
83 void DeselectAllVolumes();
86 inline void SetARM(G4bool arm) { applyARM = arm; }
88 G4DecayTable* LoadDecayTable(
const G4Ions*);
91 void AddUserDecayDataFile(G4int Z, G4int A,
const G4String& filename);
95 inline void SetNucleusLimits(G4NucleusLimits theNucleusLimits1)
96 { theNucleusLimits = theNucleusLimits1; }
102 inline G4NucleusLimits GetNucleusLimits()
const {
return theNucleusLimits; }
104 inline void SetDecayDirection(
const G4ThreeVector& theDir) {
105 forceDecayDirection = theDir.unit();
108 inline const G4ThreeVector& GetDecayDirection()
const {
109 return forceDecayDirection;
112 inline void SetDecayHalfAngle(G4double halfAngle=0.*CLHEP::deg) {
113 forceDecayHalfAngle = std::min(std::max(0.*CLHEP::deg,halfAngle),180.*CLHEP::deg);
116 inline G4double GetDecayHalfAngle()
const {
return forceDecayHalfAngle; }
120 inline void SetDecayCollimation(
const G4ThreeVector& theDir,
121 G4double halfAngle = 0.*CLHEP::deg) {
122 SetDecayDirection(theDir);
123 SetDecayHalfAngle(halfAngle);
128 inline void SetThresholdForVeryLongDecayTime(
const G4double inputThreshold) {
129 fThresholdForVeryLongDecayTime = std::max( 0.0, inputThreshold );
131 inline G4double GetThresholdForVeryLongDecayTime()
const {
132 return fThresholdForVeryLongDecayTime;
135 void StreamInfo(std::ostream& os,
const G4String& endline);
142 G4double GetMeanFreePath(
const G4Track& theTrack, G4double previousStepSize,
143 G4ForceCondition* condition)
override;
145 G4double GetMeanLifeTime(
const G4Track& theTrack,
146 G4ForceCondition* condition)
override;
149 void DecayAnalog(
const G4Track& theTrack, G4DecayTable*);
152 G4DecayProducts* DoDecay(
const G4ParticleDefinition&, G4DecayTable*);
155 void CollimateDecay(G4DecayProducts* products);
156 void CollimateDecayProduct(G4DynamicParticle* product);
157 G4ThreeVector ChooseCollimationDirection()
const;
162 G4RadioactiveDecayMessenger* theRadioactiveDecayMessenger;
163 G4PhotonEvaporation* photonEvaporation;
166 std::vector<G4String> ValidVolumes;
167 G4bool isAllVolumesMode{
true};
169 static const G4double levelTolerance;
172 static DecayTableMap* master_dkmap;
176 G4NucleusLimits theNucleusLimits;
178 G4bool isInitialised{
false};
179 G4bool applyARM{
true};
182 G4ThreeVector forceDecayDirection{G4ThreeVector(0., 0., 0.)};
183 G4double forceDecayHalfAngle{0.0};
184 static const G4ThreeVector origin;
187 static G4String dirPath;
190 static std::map<G4int, G4String>* theUserRDataFiles;
193 G4RadioactiveDecayMode theRadDecayMode{G4RadioactiveDecayMode::IT};
196 G4double fThresholdForVeryLongDecayTime;
Definition OMSimG4ParticleChangeForRadDecay.hh:12