Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4PhotonEvaporation Class Reference

#include <G4PhotonEvaporation.hh>

Inheritance diagram for G4PhotonEvaporation:
G4VEvaporationChannel

Public Member Functions

 G4PhotonEvaporation (const G4String &aName="Anonymous", G4EvaporationChannelType timeType=fDelayedEmission)
 
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", G4EvaporationChannelType timeType=fDelayedEmission)
 
virtual ~G4VEvaporationChannel ()
 
virtual G4double GetLifeTime (G4Fragment *theNucleus)
 
G4String GetName () const
 
void SetName (const G4String &aName)
 
void SetOPTxs (G4int opt)
 
void UseSICB (G4bool use)
 

Additional Inherited Members

- Protected Attributes inherited from G4VEvaporationChannel
G4EvaporationChannelType sampleDecayTime
 
G4int OPTxs
 
G4bool useSICB
 

Detailed Description

Definition at line 74 of file G4PhotonEvaporation.hh.

Constructor & Destructor Documentation

G4PhotonEvaporation::G4PhotonEvaporation ( const G4String aName = "Anonymous",
G4EvaporationChannelType  timeType = fDelayedEmission 
)

Definition at line 72 of file G4PhotonEvaporation.cc.

References DBL_MAX, python.hepunit::second, G4DiscreteGammaDeexcitation::SetICM(), SetMaxHalfLife(), and G4VGammaDeexcitation::SetTimeLimit().

74  : G4VEvaporationChannel(aName, timeType),
75  verbose(0), myOwnProbAlgorithm(true),
76  eOccupancy(0), vShellNumber(-1), gammaE(0.)
77 {
78  probAlgorithm = new G4E1Probability;
79  contDeexcitation = new G4ContinuumGammaDeexcitation;
81  discrDeexcitation = p;
82 
83  p->SetICM(false);
84 
85  // Time limits
86  G4double timeLimit = DBL_MAX;
87  char* env = getenv("G4AddTimeLimitToPhotonEvaporation");
88  if(env) { timeLimit = 1.e-16*second; }
89 
90  // Time for short-cut simulation of photon evaporation
91  p->SetTimeLimit(timeLimit);
92 
93  // Time limit for isomere production
94  SetMaxHalfLife(1.e-6*second);
95 
96  nucleus = 0;
97 }
void SetMaxHalfLife(G4double)
const char * p
Definition: xmltok.h:285
void SetTimeLimit(G4double value)
G4VEvaporationChannel(const G4String &aName="Anonymous", G4EvaporationChannelType timeType=fDelayedEmission)
double G4double
Definition: G4Types.hh:76
#define DBL_MAX
Definition: templates.hh:83
G4PhotonEvaporation::~G4PhotonEvaporation ( )
virtual

Definition at line 99 of file G4PhotonEvaporation.cc.

100 {
101  if(myOwnProbAlgorithm) delete probAlgorithm;
102  delete discrDeexcitation;
103  delete contDeexcitation;
104 }

Member Function Documentation

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

Definition at line 252 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::DoChain(), G4cout, G4endl, G4VGammaDeexcitation::GetEO(), G4VGammaDeexcitation::GetVacantSN(), G4VGammaDeexcitation::SetNucleus(), and G4VGammaDeexcitation::SetVaccantSN().

Referenced by G4NeutronHPCaptureFS::ApplyYourself().

253 {
254  // The same pointer of primary nucleus
255  nucleus = new G4Fragment(aNucleus);
256  contDeexcitation->SetNucleus(nucleus);
257  discrDeexcitation->SetNucleus(nucleus);
258 
259  //G4cout << "G4PhotonEvaporation::BreakItUp: " << nucleus << G4endl;
260 
261  // Do the whole gamma chain
262  G4FragmentVector* products = contDeexcitation->DoChain();
263  if( !products ) { products = new G4FragmentVector; }
264 
265  // Products from continuum gamma transitions
266  if (verbose > 0) {
267  G4cout << " = BreakItUp = " << products->size()
268  << " gammas from ContinuumDeexcitation " << G4endl;
269  }
270 
271  // Products from discrete gamma transitions
272  G4FragmentVector* discrProducts = discrDeexcitation->DoChain();
273  if(discrProducts) {
274  eOccupancy = discrDeexcitation->GetEO();
275  vShellNumber = discrDeexcitation->GetVacantSN();
276 
277  // not sure if the following line is needed!
278  discrDeexcitation->SetVaccantSN(-1);
279 
280  if (verbose > 0) {
281  G4cout << " = BreakItUp = " << discrProducts->size()
282  << " gammas from DiscreteDeexcitation " << G4endl;
283  }
284  G4FragmentVector::iterator i;
285  for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
286  {
287  products->push_back(*i);
288  }
289  delete discrProducts;
290  }
291  // Add deexcited nucleus to products
292  products->push_back(nucleus);
293 
294  if (verbose > 0) {
295  G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
296  }
297  return products;
298 }
void SetNucleus(G4Fragment *nucleus)
G4GLOB_DLL std::ostream G4cout
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
G4FragmentVector * DoChain()
#define G4endl
Definition: G4ios.hh:61
G4ElectronOccupancy GetEO()
G4FragmentVector * G4PhotonEvaporation::BreakUp ( const G4Fragment nucleus)
virtual

Implements G4VEvaporationChannel.

Definition at line 195 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::DoTransition(), G4cout, G4endl, G4VGammaDeexcitation::GetEO(), G4VGammaDeexcitation::GetVacantSN(), G4VGammaDeexcitation::SetNucleus(), and G4VGammaDeexcitation::SetVaccantSN().

Referenced by G4NuclearDecayChannel::DecayIt().

196 {
197  //G4cout << "G4PhotonEvaporation::BreakUp" << G4endl;
198  nucleus = new G4Fragment(aNucleus);
199 
200  contDeexcitation->SetNucleus(nucleus);
201  discrDeexcitation->SetNucleus(nucleus);
202 
203  // Do one photon emission
204 
205  // Products from continuum gamma transitions
206 
207  G4FragmentVector* products = contDeexcitation->DoTransition();
208  if( !products ) { products = new G4FragmentVector(); }
209  else if(verbose > 0) {
210  G4cout << "G4PhotonEvaporation::BreakUp " << products->size()
211  << " gammas from ContinuesDeexcitation " << G4endl;
212  G4cout << " Residual: " << nucleus << G4endl;
213  }
214 
215  if (0 == products->size())
216  {
217  // Products from discrete gamma transitions
218  G4FragmentVector* discrProducts = discrDeexcitation->DoTransition();
219 
220  if (discrProducts) {
221  eOccupancy = discrDeexcitation->GetEO();
222  vShellNumber = discrDeexcitation->GetVacantSN();
223 
224  // not sure if the following line is needed!
225  discrDeexcitation->SetVaccantSN(-1);
226  //
227  if (verbose > 0) {
228  G4cout << " = BreakUp = " << discrProducts->size()
229  << " gammas from DiscreteDeexcitation "
230  << G4endl;
231  G4cout << " Residual: " << nucleus << G4endl;
232  }
233  G4FragmentVector::iterator i;
234  for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
235  {
236  products->push_back(*i);
237  }
238  delete discrProducts;
239  }
240  }
241 
242  // Add deexcited nucleus to products
243  products->push_back(nucleus);
244 
245  if (verbose > 0) {
246  G4cout << "*-*-*-* Photon evaporation: " << products->size() << G4endl;
247  }
248 
249  return products;
250 }
void SetNucleus(G4Fragment *nucleus)
G4GLOB_DLL std::ostream G4cout
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
G4FragmentVector * DoTransition()
#define G4endl
Definition: G4ios.hh:61
G4ElectronOccupancy GetEO()
G4FragmentVector * G4PhotonEvaporation::BreakUpFragment ( G4Fragment theNucleus)
virtual

Reimplemented from G4VEvaporationChannel.

Definition at line 150 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::DoChain(), G4cout, G4endl, G4VGammaDeexcitation::GetEO(), G4VGammaDeexcitation::GetVacantSN(), G4VGammaDeexcitation::SetNucleus(), and G4VGammaDeexcitation::SetVaccantSN().

Referenced by G4NeutronRadCapture::ApplyYourself().

151 {
152  //G4cout << "G4PhotonEvaporation::BreakUpFragment" << G4endl;
153  // The same pointer of primary nucleus
154  nucleus = aNucleus;
155  contDeexcitation->SetNucleus(nucleus);
156  discrDeexcitation->SetNucleus(nucleus);
157 
158  // Do the whole gamma chain
159  G4FragmentVector* products = contDeexcitation->DoChain();
160  if( !products ) { products = new G4FragmentVector(); }
161 
162  if (verbose > 0) {
163  G4cout << "G4PhotonEvaporation::BreakUpFragment " << products->size()
164  << " gammas from ContinuumDeexcitation " << G4endl;
165  G4cout << " Residual: " << nucleus << G4endl;
166  }
167  // Products from discrete gamma transitions
168  G4FragmentVector* discrProducts = discrDeexcitation->DoChain();
169  if(discrProducts) {
170  eOccupancy = discrDeexcitation->GetEO();
171  vShellNumber = discrDeexcitation->GetVacantSN();
172 
173  // not sure if the following line is needed!
174  discrDeexcitation->SetVaccantSN(-1);
175 
176  if (verbose > 0) {
177  G4cout << "G4PhotonEvaporation::BreakUpFragment " << discrProducts->size()
178  << " gammas from DiscreteDeexcitation " << G4endl;
179  G4cout << " Residual: " << nucleus << G4endl;
180  }
181  G4FragmentVector::iterator i;
182  for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
183  {
184  products->push_back(*i);
185  }
186  delete discrProducts;
187  }
188 
189  if (verbose > 0) {
190  G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
191  }
192  return products;
193 }
void SetNucleus(G4Fragment *nucleus)
G4GLOB_DLL std::ostream G4cout
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:65
G4FragmentVector * DoChain()
#define G4endl
Definition: G4ios.hh:61
G4ElectronOccupancy GetEO()
G4Fragment * G4PhotonEvaporation::EmittedFragment ( G4Fragment theNucleus)
virtual

Reimplemented from G4VEvaporationChannel.

Definition at line 106 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::CanDoTransition(), G4cout, G4endl, G4VGammaDeexcitation::GenerateGamma(), G4VGammaDeexcitation::Initialize(), and G4VGammaDeexcitation::SetNucleus().

107 {
108  //G4cout << "G4PhotonEvaporation::EmittedFragment" << G4endl;
109  nucleus = aNucleus;
110 
111  // Do one photon emission by the continues deexcitation
112  contDeexcitation->SetNucleus(nucleus);
113  contDeexcitation->Initialize();
114 
115  if(contDeexcitation->CanDoTransition()) {
116  G4Fragment* gamma = contDeexcitation->GenerateGamma();
117  if(gamma) {
118  if (verbose > 0) {
119  G4cout << "G4PhotonEvaporation::EmittedFragment continium deex: "
120  << gamma << G4endl;
121  G4cout << " Residual: " << nucleus << G4endl;
122  }
123  return gamma;
124  }
125  }
126 
127  // Do one photon emission by the discrete deexcitation
128  discrDeexcitation->SetNucleus(nucleus);
129  discrDeexcitation->Initialize();
130 
131  if(discrDeexcitation->CanDoTransition()) {
132  G4Fragment* gamma = discrDeexcitation->GenerateGamma();
133  if(gamma) {
134  if (verbose > 0) {
135  G4cout << "G4PhotonEvaporation::EmittedFragment discrete deex: "
136  << gamma << G4endl;
137  G4cout << " Residual: " << nucleus << G4endl;
138  }
139  return gamma;
140  }
141  }
142 
143  if (verbose > 0) {
144  G4cout << "G4PhotonEvaporation unable emit gamma: "
145  << nucleus << G4endl;
146  }
147  return 0;
148 }
virtual G4bool CanDoTransition()=0
void SetNucleus(G4Fragment *nucleus)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
G4double G4PhotonEvaporation::GetEmissionProbability ( G4Fragment theNucleus)
virtual

Implements G4VEvaporationChannel.

Definition at line 301 of file G4PhotonEvaporation.cc.

References G4VEmissionProbability::EmissionProbability(), and G4Fragment::GetExcitationEnergy().

302 {
303  nucleus = theNucleus;
304  G4double prob =
305  probAlgorithm->EmissionProbability(*nucleus, nucleus->GetExcitationEnergy());
306  return prob;
307 }
double G4double
Definition: G4Types.hh:76
virtual G4double EmissionProbability(const G4Fragment &fragment, const G4double anEnergy)=0
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:255
G4ElectronOccupancy G4PhotonEvaporation::GetEOccupancy ( )
inline

Definition at line 107 of file G4PhotonEvaporation.hh.

107 { return eOccupancy;} ;
G4int G4PhotonEvaporation::GetVacantShellNumber ( )
inline

Definition at line 109 of file G4PhotonEvaporation.hh.

Referenced by G4NuclearDecayChannel::DecayIt().

109 { return vShellNumber;};
void G4PhotonEvaporation::RDMForced ( G4bool  fromRDM)

Definition at line 341 of file G4PhotonEvaporation.cc.

Referenced by G4NuclearDecayChannel::DecayIt().

342 {
343  static_cast<G4DiscreteGammaDeexcitation*>(discrDeexcitation)->SetRDM(fromRDM);
344 }
void G4PhotonEvaporation::SetEmissionStrategy ( G4VEmissionProbability probAlgorithm)
virtual

Definition at line 310 of file G4PhotonEvaporation.cc.

311 {
312  // CD - not sure about always wanting to delete this pointer....
313  if(myOwnProbAlgorithm) { delete probAlgorithm; }
314  probAlgorithm = alg;
315  myOwnProbAlgorithm = false;
316 }
void G4PhotonEvaporation::SetEOccupancy ( G4ElectronOccupancy  eOccupancy)

Definition at line 346 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetEO().

347 {
348  discrDeexcitation->SetEO(eo);
349 }
void SetEO(G4ElectronOccupancy eo)
void G4PhotonEvaporation::SetICM ( G4bool  ic)
void G4PhotonEvaporation::SetMaxHalfLife ( G4double  hl)

Definition at line 331 of file G4PhotonEvaporation.cc.

Referenced by G4PhotonEvaporation().

332 {
333  static_cast<G4DiscreteGammaDeexcitation*>(discrDeexcitation)->SetHL(hl);
334 }
void G4PhotonEvaporation::SetTimeLimit ( G4double  value)

Definition at line 336 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetTimeLimit().

337 {
338  discrDeexcitation->SetTimeLimit(val);
339 }
void SetTimeLimit(G4double value)
void G4PhotonEvaporation::SetVerboseLevel ( G4int  verbose)

Definition at line 319 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetVerboseLevel().

Referenced by G4NuclearDecayChannel::DecayIt().

320 {
321  verbose = verb;
322  contDeexcitation->SetVerboseLevel(verbose);
323  discrDeexcitation->SetVerboseLevel(verbose);
324 }
void SetVerboseLevel(G4int verbose)

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