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

#include <G4PhotonEvaporation.hh>

+ Inheritance diagram for G4PhotonEvaporation:

Public Member Functions

 G4PhotonEvaporation ()
 
virtual ~G4PhotonEvaporation ()
 
virtual G4FragmentEmittedFragment (G4Fragment *theNucleus)
 
virtual G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
virtual G4FragmentVectorBreakItUp (const G4Fragment &nucleus)
 
virtual G4FragmentVectorBreakUp (const G4Fragment &nucleus)
 
virtual G4double GetEmissionProbability (G4Fragment *theNucleus)
 
virtual void SetEmissionStrategy (G4VEmissionProbability *probAlgorithm)
 
void SetVerboseLevel (G4int verbose)
 
void SetICM (G4bool)
 
void RDMForced (G4bool)
 
void SetMaxHalfLife (G4double)
 
void SetTimeLimit (G4double value)
 
void SetEOccupancy (G4ElectronOccupancy eOccupancy)
 
G4ElectronOccupancy GetEOccupancy ()
 
G4int GetVacantShellNumber ()
 
- Public Member Functions inherited from G4VEvaporationChannel
 G4VEvaporationChannel (const G4String &aName="Anonymous")
 
virtual ~G4VEvaporationChannel ()
 
virtual G4FragmentEmittedFragment (G4Fragment *theNucleus)
 
virtual G4FragmentVectorBreakUpFragment (G4Fragment *theNucleus)
 
virtual G4FragmentVectorBreakUp (const G4Fragment &theNucleus)=0
 
virtual G4double GetEmissionProbability (G4Fragment *theNucleus)=0
 
G4String GetName () const
 
void SetName (const G4String &aName)
 
void SetOPTxs (G4int opt)
 
void UseSICB (G4bool use)
 

Additional Inherited Members

- Protected Attributes inherited from G4VEvaporationChannel
G4int OPTxs
 
G4bool useSICB
 

Detailed Description

Definition at line 74 of file G4PhotonEvaporation.hh.

Constructor & Destructor Documentation

◆ G4PhotonEvaporation()

G4PhotonEvaporation::G4PhotonEvaporation ( )

Definition at line 72 of file G4PhotonEvaporation.cc.

73 :_verbose(0),_myOwnProbAlgorithm (true),
74 _eOccupancy(0), _vShellNumber(-1),_gammaE(0.)
75{
76 _probAlgorithm = new G4E1Probability;
77
78 G4double timeLimit = DBL_MAX;
79 char* env = getenv("G4AddTimeLimitToPhotonEvaporation");
80 if(env) { timeLimit = 1.e-16*second; }
81
83 p->SetICM(false);
84 p->SetTimeLimit(timeLimit);
85
86 _discrDeexcitation = p;
87 _contDeexcitation = new G4ContinuumGammaDeexcitation;
88 _nucleus = 0;
89}
double G4double
Definition: G4Types.hh:64
void SetTimeLimit(G4double value)
#define DBL_MAX
Definition: templates.hh:83

◆ ~G4PhotonEvaporation()

G4PhotonEvaporation::~G4PhotonEvaporation ( )
virtual

Definition at line 91 of file G4PhotonEvaporation.cc.

92{
93 if(_myOwnProbAlgorithm) delete _probAlgorithm;
94 delete _discrDeexcitation;
95 delete _contDeexcitation;
96}

Member Function Documentation

◆ BreakItUp()

G4FragmentVector * G4PhotonEvaporation::BreakItUp ( const G4Fragment nucleus)
virtual

Definition at line 244 of file G4PhotonEvaporation.cc.

245{
246 // The same pointer of primary nucleus
247 _nucleus = new G4Fragment(nucleus);
248 _contDeexcitation->SetNucleus(_nucleus);
249 _discrDeexcitation->SetNucleus(_nucleus);
250
251 //G4cout << "G4PhotonEvaporation::BreakItUp: " << nucleus << G4endl;
252
253 // Do the whole gamma chain
254 G4FragmentVector* products = _contDeexcitation->DoChain();
255 if( !products ) { products = new G4FragmentVector; }
256
257 // Products from continuum gamma transitions
258 if (_verbose > 0) {
259 G4cout << " = BreakItUp = " << products->size()
260 << " gammas from ContinuumDeexcitation " << G4endl;
261 }
262
263 // Products from discrete gamma transitions
264 G4FragmentVector* discrProducts = _discrDeexcitation->DoChain();
265 if(discrProducts) {
266 _eOccupancy = _discrDeexcitation->GetEO();
267 _vShellNumber = _discrDeexcitation->GetVacantSN();
268
269 // not sure if the following line is needed!
270 _discrDeexcitation->SetVaccantSN(-1);
271
272 if (_verbose > 0) {
273 G4cout << " = BreakItUp = " << discrProducts->size()
274 << " gammas from DiscreteDeexcitation " << G4endl;
275 }
276 G4FragmentVector::iterator i;
277 for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
278 {
279 products->push_back(*i);
280 }
281 delete discrProducts;
282 }
283 // Add deexcited nucleus to products
284 products->push_back(_nucleus);
285
286 if (_verbose > 0) {
287 G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
288 }
289 return products;
290}
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
void SetNucleus(G4Fragment *nucleus)
G4ElectronOccupancy GetEO()
G4FragmentVector * DoChain()

Referenced by G4NeutronHPCaptureFS::ApplyYourself(), and G4NuclearDecayChannel::DecayIt().

◆ BreakUp()

G4FragmentVector * G4PhotonEvaporation::BreakUp ( const G4Fragment nucleus)
virtual

Implements G4VEvaporationChannel.

Definition at line 187 of file G4PhotonEvaporation.cc.

188{
189 //G4cout << "G4PhotonEvaporation::BreakUp" << G4endl;
190 _nucleus = new G4Fragment(nucleus);
191
192 _contDeexcitation->SetNucleus(_nucleus);
193 _discrDeexcitation->SetNucleus(_nucleus);
194
195 // Do one photon emission
196
197 // Products from continuum gamma transitions
198
199 G4FragmentVector* products = _contDeexcitation->DoTransition();
200 if( !products ) { products = new G4FragmentVector(); }
201 else if(_verbose > 0) {
202 G4cout << "G4PhotonEvaporation::BreakUp " << products->size()
203 << " gammas from ContinuesDeexcitation " << G4endl;
204 G4cout << " Residual: " << nucleus << G4endl;
205 }
206
207 if (0 == products->size())
208 {
209 // Products from discrete gamma transitions
210 G4FragmentVector* discrProducts = _discrDeexcitation->DoTransition();
211
212 if (discrProducts) {
213 _eOccupancy = _discrDeexcitation->GetEO();
214 _vShellNumber = _discrDeexcitation->GetVacantSN();
215
216 // not sure if the following line is needed!
217 _discrDeexcitation->SetVaccantSN(-1);
218 //
219 if (_verbose > 0) {
220 G4cout << " = BreakUp = " << discrProducts->size()
221 << " gammas from DiscreteDeexcitation "
222 << G4endl;
223 G4cout << " Residual: " << nucleus << G4endl;
224 }
225 G4FragmentVector::iterator i;
226 for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
227 {
228 products->push_back(*i);
229 }
230 delete discrProducts;
231 }
232 }
233
234 // Add deexcited nucleus to products
235 products->push_back(_nucleus);
236
237 if (_verbose > 0) {
238 G4cout << "*-*-*-* Photon evaporation: " << products->size() << G4endl;
239 }
240
241 return products;
242}
G4FragmentVector * DoTransition()

Referenced by G4NuclearDecayChannel::DecayIt().

◆ BreakUpFragment()

G4FragmentVector * G4PhotonEvaporation::BreakUpFragment ( G4Fragment theNucleus)
virtual

Reimplemented from G4VEvaporationChannel.

Definition at line 142 of file G4PhotonEvaporation.cc.

143{
144 //G4cout << "G4PhotonEvaporation::BreakUpFragment" << G4endl;
145 // The same pointer of primary nucleus
146 _nucleus = nucleus;
147 _contDeexcitation->SetNucleus(_nucleus);
148 _discrDeexcitation->SetNucleus(_nucleus);
149
150 // Do the whole gamma chain
151 G4FragmentVector* products = _contDeexcitation->DoChain();
152 if( !products ) { products = new G4FragmentVector(); }
153
154 if (_verbose > 0) {
155 G4cout << "G4PhotonEvaporation::BreakUpFragment " << products->size()
156 << " gammas from ContinuumDeexcitation " << G4endl;
157 G4cout << " Residual: " << nucleus << G4endl;
158 }
159 // Products from discrete gamma transitions
160 G4FragmentVector* discrProducts = _discrDeexcitation->DoChain();
161 if(discrProducts) {
162 _eOccupancy = _discrDeexcitation->GetEO();
163 _vShellNumber = _discrDeexcitation->GetVacantSN();
164
165 // not sure if the following line is needed!
166 _discrDeexcitation->SetVaccantSN(-1);
167
168 if (_verbose > 0) {
169 G4cout << "G4PhotonEvaporation::BreakUpFragment " << discrProducts->size()
170 << " gammas from DiscreteDeexcitation " << G4endl;
171 G4cout << " Residual: " << nucleus << G4endl;
172 }
173 G4FragmentVector::iterator i;
174 for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
175 {
176 products->push_back(*i);
177 }
178 delete discrProducts;
179 }
180
181 if (_verbose > 0) {
182 G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
183 }
184 return products;
185}

Referenced by G4NeutronRadCapture::ApplyYourself().

◆ EmittedFragment()

G4Fragment * G4PhotonEvaporation::EmittedFragment ( G4Fragment theNucleus)
virtual

Reimplemented from G4VEvaporationChannel.

Definition at line 98 of file G4PhotonEvaporation.cc.

99{
100 //G4cout << "G4PhotonEvaporation::EmittedFragment" << G4endl;
101 _nucleus = nucleus;
102
103 // Do one photon emission by the continues deexcitation
104 _contDeexcitation->SetNucleus(_nucleus);
105 _contDeexcitation->Initialize();
106
107 if(_contDeexcitation->CanDoTransition()) {
108 G4Fragment* gamma = _contDeexcitation->GenerateGamma();
109 if(gamma) {
110 if (_verbose > 0) {
111 G4cout << "G4PhotonEvaporation::EmittedFragment continium deex: "
112 << gamma << G4endl;
113 G4cout << " Residual: " << nucleus << G4endl;
114 }
115 return gamma;
116 }
117 }
118
119 // Do one photon emission by the discrete deexcitation
120 _discrDeexcitation->SetNucleus(_nucleus);
121 _discrDeexcitation->Initialize();
122
123 if(_discrDeexcitation->CanDoTransition()) {
124 G4Fragment* gamma = _discrDeexcitation->GenerateGamma();
125 if(gamma) {
126 if (_verbose > 0) {
127 G4cout << "G4PhotonEvaporation::EmittedFragment discrete deex: "
128 << gamma << G4endl;
129 G4cout << " Residual: " << nucleus << G4endl;
130 }
131 return gamma;
132 }
133 }
134
135 if (_verbose > 0) {
136 G4cout << "G4PhotonEvaporation unable emit gamma: "
137 << nucleus << G4endl;
138 }
139 return 0;
140}
virtual G4bool CanDoTransition()=0

◆ GetEmissionProbability()

G4double G4PhotonEvaporation::GetEmissionProbability ( G4Fragment theNucleus)
virtual

Implements G4VEvaporationChannel.

Definition at line 293 of file G4PhotonEvaporation.cc.

294{
295 _nucleus = theNucleus;
296 G4double prob =
297 _probAlgorithm->EmissionProbability(*_nucleus,_nucleus->GetExcitationEnergy());
298 return prob;
299}
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:235
virtual G4double EmissionProbability(const G4Fragment &fragment, const G4double anEnergy)=0

◆ GetEOccupancy()

G4ElectronOccupancy G4PhotonEvaporation::GetEOccupancy ( )
inline

Definition at line 106 of file G4PhotonEvaporation.hh.

106{ return _eOccupancy;} ;

◆ GetVacantShellNumber()

G4int G4PhotonEvaporation::GetVacantShellNumber ( )
inline

Definition at line 108 of file G4PhotonEvaporation.hh.

108{ return _vShellNumber;};

Referenced by G4NuclearDecayChannel::DecayIt().

◆ RDMForced()

void G4PhotonEvaporation::RDMForced ( G4bool  fromRDM)

Definition at line 337 of file G4PhotonEvaporation.cc.

338{
339 (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetRDM(fromRDM);
340}

Referenced by G4NuclearDecayChannel::DecayIt().

◆ SetEmissionStrategy()

void G4PhotonEvaporation::SetEmissionStrategy ( G4VEmissionProbability probAlgorithm)
virtual

Definition at line 302 of file G4PhotonEvaporation.cc.

303{
304
305 // CD - not sure about always wanting to delete this pointer....
306
307 if(_myOwnProbAlgorithm) delete _probAlgorithm;
308
309 _probAlgorithm = probAlgorithm;
310
311 _myOwnProbAlgorithm = false;
312}

◆ SetEOccupancy()

void G4PhotonEvaporation::SetEOccupancy ( G4ElectronOccupancy  eOccupancy)

Definition at line 342 of file G4PhotonEvaporation.cc.

343{
344 _discrDeexcitation->SetEO(eo);
345}
void SetEO(G4ElectronOccupancy eo)

◆ SetICM()

void G4PhotonEvaporation::SetICM ( G4bool  ic)

Definition at line 322 of file G4PhotonEvaporation.cc.

323{
324 (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetICM(ic);
325}

Referenced by G4NeutronHPCaptureFS::ApplyYourself(), and G4NuclearDecayChannel::DecayIt().

◆ SetMaxHalfLife()

void G4PhotonEvaporation::SetMaxHalfLife ( G4double  hl)

Definition at line 327 of file G4PhotonEvaporation.cc.

328{
329 (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetHL(hl);
330}

Referenced by G4NuclearDecayChannel::DecayIt().

◆ SetTimeLimit()

void G4PhotonEvaporation::SetTimeLimit ( G4double  value)

Definition at line 332 of file G4PhotonEvaporation.cc.

333{
334 _discrDeexcitation->SetTimeLimit(val);
335}

◆ SetVerboseLevel()

void G4PhotonEvaporation::SetVerboseLevel ( G4int  verbose)

Definition at line 315 of file G4PhotonEvaporation.cc.

316{
317 _verbose = verbose;
318 _contDeexcitation->SetVerboseLevel(verbose);
319 _discrDeexcitation->SetVerboseLevel(verbose);
320}
void SetVerboseLevel(G4int verbose)

Referenced by G4NuclearDecayChannel::DecayIt().


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