Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ContinuumGammaDeexcitation Class Reference

#include <G4ContinuumGammaDeexcitation.hh>

+ Inheritance diagram for G4ContinuumGammaDeexcitation:

Public Member Functions

 G4ContinuumGammaDeexcitation ()
 
virtual ~G4ContinuumGammaDeexcitation ()
 
virtual G4VGammaTransitionCreateTransition ()
 
virtual G4bool CanDoTransition ()
 
- Public Member Functions inherited from G4VGammaDeexcitation
 G4VGammaDeexcitation ()
 
virtual ~G4VGammaDeexcitation ()
 
virtual G4VGammaTransitionCreateTransition ()=0
 
virtual G4bool CanDoTransition ()=0
 
G4FragmentVectorDoTransition ()
 
G4FragmentVectorDoChain ()
 
G4FragmentGenerateGamma ()
 
G4FragmentGetNucleus ()
 
void SetNucleus (G4Fragment *nucleus)
 
void SetVerboseLevel (G4int verbose)
 
void Initialize ()
 
void SetEO (G4ElectronOccupancy eo)
 
void SetVaccantSN (G4int val)
 
G4ElectronOccupancy GetEO ()
 
G4int GetVacantSN ()
 
void SetTimeLimit (G4double value)
 

Additional Inherited Members

- Protected Member Functions inherited from G4VGammaDeexcitation
void Update ()
 
- Protected Attributes inherited from G4VGammaDeexcitation
G4VGammaTransition_transition
 
G4int _verbose
 

Detailed Description

Definition at line 59 of file G4ContinuumGammaDeexcitation.hh.

Constructor & Destructor Documentation

◆ G4ContinuumGammaDeexcitation()

G4ContinuumGammaDeexcitation::G4ContinuumGammaDeexcitation ( )

Definition at line 66 of file G4ContinuumGammaDeexcitation.cc.

67 : _nucleusZ(0), _nucleusA(0), _levelManager(0)
68{}

◆ ~G4ContinuumGammaDeexcitation()

G4ContinuumGammaDeexcitation::~G4ContinuumGammaDeexcitation ( )
virtual

Definition at line 70 of file G4ContinuumGammaDeexcitation.cc.

71{}

Member Function Documentation

◆ CanDoTransition()

G4bool G4ContinuumGammaDeexcitation::CanDoTransition ( )
virtual

Implements G4VGammaDeexcitation.

Definition at line 100 of file G4ContinuumGammaDeexcitation.cc.

101{
102 //JMQ: far too small, creating sometimes continuum gammas instead
103 // of the right discrete ones (when excitation energy is slightly
104 // over maximum discrete energy): changed
105 // G4double tolerance = 10*eV;
106 const G4double tolerance = CLHEP::keV;
107
108 if (_transition == 0)
109 {
110 if (_verbose > 0) {
111 G4cout << "G4ContinuumGammaDeexcitation::CanDoTransition - Null transition "
112 << G4endl;
113 }
114 return false;
115 }
116
117 G4Fragment* nucleus = GetNucleus();
118 G4double excitation = nucleus->GetExcitationEnergy();
119
120 if (_nucleusZ < 2 || _nucleusA < 3)
121 {
122 if (_verbose > 1) {
123 G4cout << "G4ContinuumGammaDeexcitation::CanDoTransition - n/p/H"
124 << G4endl;
125 }
126 return false;
127 }
128
129 if (excitation <= tolerance)
130 {
131 if (_verbose > 1) {
132 G4cout << "G4ContinuumGammaDeexcitation::CanDoTransition - Excitation "
133 << excitation/CLHEP::keV << " keV is too small"
134 << G4endl;
135 }
136 return false;
137 }
138 if (excitation <= (_levelManager->MaxLevelEnergy() + tolerance))
139 {
140 if (_verbose > 0) {
141 G4cout << "G4ContinuumGammaDeexcitation::CanDoTransition - Excitation "
142 << excitation << " below max discrete level "
143 << _levelManager->MaxLevelEnergy() << G4endl;
144 }
145 return false;
146 }
147
148 if (_verbose > 1) {
149 G4cout <<"G4ContinuumGammaDeexcitation::CanDoTransition - CanDo"
150 << " Eex(keV)= " << excitation/CLHEP::keV
151 << " Emax(keV)= " << _levelManager->MaxLevelEnergy()/CLHEP::keV
152 << " Z= " << _nucleusZ << " A= " << _nucleusA
153 << G4endl;
154 }
155 return true;
156}
double G4double
Definition: G4Types.hh:64
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:235
G4VGammaTransition * _transition

◆ CreateTransition()

G4VGammaTransition * G4ContinuumGammaDeexcitation::CreateTransition ( )
virtual

Implements G4VGammaDeexcitation.

Definition at line 73 of file G4ContinuumGammaDeexcitation.cc.

74{
75 G4Fragment* nucleus = GetNucleus();
76 G4int Z = nucleus->GetZ_asInt();
77 G4int A = nucleus->GetA_asInt();
78 G4double excitation = nucleus->GetExcitationEnergy();
79
80 if (_nucleusA != A || _nucleusZ != Z)
81 {
82 _levelManager = G4NuclearLevelStore::GetInstance()->GetManager(Z,A);
83 _nucleusA = A;
84 _nucleusZ = Z;
85 }
86
87 if (_verbose > 1) {
88 G4cout << "G4ContinuumGammaDeexcitation::CreateTransition "
89 << " Z= " << Z << " A= " << A << " Eex= " << excitation
90 << " " << _levelManager
91 << G4endl;
92 }
94 new G4ContinuumGammaTransition(_levelManager,Z,A,excitation,_verbose );
95
96 return gt;
97}
int G4int
Definition: G4Types.hh:66
G4int GetZ_asInt() const
Definition: G4Fragment.hh:223
G4int GetA_asInt() const
Definition: G4Fragment.hh:218
G4NuclearLevelManager * GetManager(G4int Z, G4int A)
static G4NuclearLevelStore * GetInstance()

The documentation for this class was generated from the following files: