G4PhotonEvaporation Class Reference

#include <G4PhotonEvaporation.hh>

Inheritance diagram for G4PhotonEvaporation:

G4VEvaporationChannel

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 ()

Detailed Description

Definition at line 74 of file G4PhotonEvaporation.hh.


Constructor & Destructor Documentation

G4PhotonEvaporation::G4PhotonEvaporation (  ) 

Definition at line 72 of file G4PhotonEvaporation.cc.

References DBL_MAX, G4DiscreteGammaDeexcitation::SetICM(), and G4VGammaDeexcitation::SetTimeLimit().

00073   :_verbose(0),_myOwnProbAlgorithm (true),
00074    _eOccupancy(0), _vShellNumber(-1),_gammaE(0.)
00075 { 
00076   _probAlgorithm = new G4E1Probability;
00077 
00078   G4double timeLimit = DBL_MAX;
00079   char* env = getenv("G4AddTimeLimitToPhotonEvaporation"); 
00080   if(env) { timeLimit = 1.e-16*second; }
00081 
00082   G4DiscreteGammaDeexcitation* p = new G4DiscreteGammaDeexcitation();
00083   p->SetICM(false);
00084   p->SetTimeLimit(timeLimit);
00085 
00086   _discrDeexcitation = p;
00087   _contDeexcitation = new G4ContinuumGammaDeexcitation;
00088   _nucleus = 0;
00089 }

G4PhotonEvaporation::~G4PhotonEvaporation (  )  [virtual]

Definition at line 91 of file G4PhotonEvaporation.cc.

00092 { 
00093   if(_myOwnProbAlgorithm) delete _probAlgorithm;
00094   delete _discrDeexcitation;
00095   delete _contDeexcitation;
00096 }


Member Function Documentation

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

Definition at line 244 of file G4PhotonEvaporation.cc.

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

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

00245 {
00246   // The same pointer of primary nucleus
00247   _nucleus = new G4Fragment(nucleus);
00248   _contDeexcitation->SetNucleus(_nucleus);
00249   _discrDeexcitation->SetNucleus(_nucleus);
00250 
00251   //G4cout << "G4PhotonEvaporation::BreakItUp:  " << nucleus << G4endl;
00252 
00253   // Do the whole gamma chain 
00254   G4FragmentVector* products = _contDeexcitation->DoChain();  
00255   if( !products ) { products = new G4FragmentVector; }
00256 
00257   // Products from continuum gamma transitions
00258   if (_verbose > 0) {
00259     G4cout << " = BreakItUp = " << products->size()
00260            << " gammas from ContinuumDeexcitation " << G4endl;
00261   }
00262 
00263   // Products from discrete gamma transitions
00264   G4FragmentVector* discrProducts = _discrDeexcitation->DoChain();
00265   if(discrProducts) {
00266     _eOccupancy = _discrDeexcitation->GetEO();
00267     _vShellNumber = _discrDeexcitation->GetVacantSN();
00268 
00269     // not sure if the following line is needed!
00270     _discrDeexcitation->SetVaccantSN(-1);
00271 
00272     if (_verbose > 0) {
00273       G4cout << " = BreakItUp = " << discrProducts->size() 
00274              << " gammas from DiscreteDeexcitation " << G4endl;
00275     }
00276     G4FragmentVector::iterator i;
00277     for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
00278       {
00279         products->push_back(*i);
00280       }
00281     delete discrProducts;
00282   }
00283   // Add deexcited nucleus to products
00284   products->push_back(_nucleus);
00285 
00286   if (_verbose > 0) {
00287     G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
00288   }
00289   return products;
00290 }

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

Implements G4VEvaporationChannel.

Definition at line 187 of file G4PhotonEvaporation.cc.

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

Referenced by G4NuclearDecayChannel::DecayIt().

00188 {
00189   //G4cout << "G4PhotonEvaporation::BreakUp" << G4endl;
00190   _nucleus = new G4Fragment(nucleus);
00191 
00192   _contDeexcitation->SetNucleus(_nucleus);
00193   _discrDeexcitation->SetNucleus(_nucleus);
00194   
00195   // Do one photon emission
00196 
00197   // Products from continuum gamma transitions
00198 
00199   G4FragmentVector* products = _contDeexcitation->DoTransition();  
00200   if( !products ) { products = new G4FragmentVector(); }
00201   else if(_verbose > 0) {
00202     G4cout << "G4PhotonEvaporation::BreakUp " << products->size() 
00203            << " gammas from ContinuesDeexcitation " << G4endl;
00204     G4cout << "   Residual: " << nucleus << G4endl;
00205   }
00206 
00207   if (0 == products->size())
00208     {
00209       // Products from discrete gamma transitions
00210       G4FragmentVector* discrProducts = _discrDeexcitation->DoTransition();
00211 
00212       if (discrProducts) {
00213         _eOccupancy = _discrDeexcitation->GetEO();
00214         _vShellNumber = _discrDeexcitation->GetVacantSN();
00215 
00216         // not sure if the following line is needed!
00217         _discrDeexcitation->SetVaccantSN(-1);
00218         //
00219         if (_verbose > 0) {
00220           G4cout << " = BreakUp = " << discrProducts->size() 
00221                  << " gammas from DiscreteDeexcitation " 
00222                  << G4endl;
00223           G4cout << "   Residual: " << nucleus << G4endl;
00224         }
00225         G4FragmentVector::iterator i;
00226         for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
00227           {
00228             products->push_back(*i);
00229           }
00230         delete discrProducts;
00231       }
00232     }
00233   
00234   // Add deexcited nucleus to products
00235   products->push_back(_nucleus);
00236 
00237   if (_verbose > 0) {
00238     G4cout << "*-*-*-* Photon evaporation: " << products->size() << G4endl;
00239   }
00240 
00241   return products;
00242 }

G4FragmentVector * G4PhotonEvaporation::BreakUpFragment ( G4Fragment theNucleus  )  [virtual]

Reimplemented from G4VEvaporationChannel.

Definition at line 142 of file G4PhotonEvaporation.cc.

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

Referenced by G4NeutronRadCapture::ApplyYourself().

00143 {
00144   //G4cout << "G4PhotonEvaporation::BreakUpFragment" << G4endl;
00145   // The same pointer of primary nucleus
00146   _nucleus = nucleus;
00147   _contDeexcitation->SetNucleus(_nucleus);
00148   _discrDeexcitation->SetNucleus(_nucleus);
00149 
00150   // Do the whole gamma chain 
00151   G4FragmentVector* products = _contDeexcitation->DoChain();  
00152   if( !products ) { products = new G4FragmentVector(); }
00153 
00154   if (_verbose > 0) {
00155     G4cout << "G4PhotonEvaporation::BreakUpFragment " << products->size() 
00156            << " gammas from ContinuumDeexcitation " << G4endl;
00157     G4cout << "   Residual: " << nucleus << G4endl;
00158   }
00159   // Products from discrete gamma transitions
00160   G4FragmentVector* discrProducts = _discrDeexcitation->DoChain();
00161   if(discrProducts) {
00162     _eOccupancy = _discrDeexcitation->GetEO();
00163     _vShellNumber = _discrDeexcitation->GetVacantSN();
00164 
00165     // not sure if the following line is needed!
00166     _discrDeexcitation->SetVaccantSN(-1);
00167 
00168     if (_verbose > 0) {
00169       G4cout << "G4PhotonEvaporation::BreakUpFragment " << discrProducts->size() 
00170              << " gammas from DiscreteDeexcitation " << G4endl;
00171       G4cout << "   Residual: " << nucleus << G4endl;
00172     }
00173     G4FragmentVector::iterator i;
00174     for (i = discrProducts->begin(); i != discrProducts->end(); ++i)
00175       {
00176         products->push_back(*i);
00177       }
00178     delete discrProducts;
00179   }
00180 
00181   if (_verbose > 0) {
00182     G4cout << "*-*-* Photon evaporation: " << products->size() << G4endl;
00183   }
00184   return products;
00185 }

G4Fragment * G4PhotonEvaporation::EmittedFragment ( G4Fragment theNucleus  )  [virtual]

Reimplemented from G4VEvaporationChannel.

Definition at line 98 of file G4PhotonEvaporation.cc.

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

00099 {
00100   //G4cout << "G4PhotonEvaporation::EmittedFragment" << G4endl;
00101   _nucleus = nucleus;
00102   
00103   // Do one photon emission by the continues deexcitation  
00104   _contDeexcitation->SetNucleus(_nucleus);
00105   _contDeexcitation->Initialize();
00106 
00107   if(_contDeexcitation->CanDoTransition()) {  
00108     G4Fragment* gamma = _contDeexcitation->GenerateGamma();
00109     if(gamma) { 
00110       if (_verbose > 0) {
00111         G4cout << "G4PhotonEvaporation::EmittedFragment continium deex: "   
00112                << gamma << G4endl;
00113         G4cout << "   Residual: " << nucleus << G4endl;
00114       }
00115       return gamma; 
00116     }
00117   }
00118 
00119   // Do one photon emission by the discrete deexcitation 
00120   _discrDeexcitation->SetNucleus(_nucleus);
00121   _discrDeexcitation->Initialize();
00122 
00123   if(_discrDeexcitation->CanDoTransition()) {  
00124     G4Fragment* gamma = _discrDeexcitation->GenerateGamma();
00125     if(gamma) { 
00126       if (_verbose > 0) {
00127         G4cout << "G4PhotonEvaporation::EmittedFragment discrete deex: "   
00128                << gamma << G4endl;
00129         G4cout << "   Residual: " << nucleus << G4endl;
00130       }
00131       return gamma; 
00132     }
00133   }
00134 
00135   if (_verbose > 0) {
00136     G4cout << "G4PhotonEvaporation unable emit gamma: " 
00137            << nucleus << G4endl;
00138   }
00139   return 0;
00140 }

G4double G4PhotonEvaporation::GetEmissionProbability ( G4Fragment theNucleus  )  [virtual]

Implements G4VEvaporationChannel.

Definition at line 293 of file G4PhotonEvaporation.cc.

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

00294 {
00295   _nucleus = theNucleus;
00296   G4double prob = 
00297     _probAlgorithm->EmissionProbability(*_nucleus,_nucleus->GetExcitationEnergy());
00298   return prob;
00299 }

G4ElectronOccupancy G4PhotonEvaporation::GetEOccupancy (  )  [inline]

Definition at line 106 of file G4PhotonEvaporation.hh.

00106 { return _eOccupancy;} ;

G4int G4PhotonEvaporation::GetVacantShellNumber (  )  [inline]

Definition at line 108 of file G4PhotonEvaporation.hh.

Referenced by G4NuclearDecayChannel::DecayIt().

00108 { return _vShellNumber;};

void G4PhotonEvaporation::RDMForced ( G4bool   ) 

Definition at line 337 of file G4PhotonEvaporation.cc.

Referenced by G4NuclearDecayChannel::DecayIt().

00338 {
00339  (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetRDM(fromRDM);
00340 }

void G4PhotonEvaporation::SetEmissionStrategy ( G4VEmissionProbability probAlgorithm  )  [virtual]

Definition at line 302 of file G4PhotonEvaporation.cc.

00303 {
00304 
00305   // CD - not sure about always wanting to delete this pointer....
00306 
00307   if(_myOwnProbAlgorithm) delete _probAlgorithm;
00308 
00309   _probAlgorithm = probAlgorithm;
00310 
00311   _myOwnProbAlgorithm = false;
00312 }

void G4PhotonEvaporation::SetEOccupancy ( G4ElectronOccupancy  eOccupancy  ) 

Definition at line 342 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetEO().

00343 {
00344   _discrDeexcitation->SetEO(eo);
00345 }

void G4PhotonEvaporation::SetICM ( G4bool   ) 

Definition at line 322 of file G4PhotonEvaporation.cc.

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

00323 {
00324  (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetICM(ic);
00325 }

void G4PhotonEvaporation::SetMaxHalfLife ( G4double   ) 

Definition at line 327 of file G4PhotonEvaporation.cc.

Referenced by G4NuclearDecayChannel::DecayIt().

00328 {
00329  (static_cast <G4DiscreteGammaDeexcitation*> (_discrDeexcitation))->SetHL(hl);
00330 }

void G4PhotonEvaporation::SetTimeLimit ( G4double  value  ) 

Definition at line 332 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetTimeLimit().

00333 {
00334  _discrDeexcitation->SetTimeLimit(val);
00335 }

void G4PhotonEvaporation::SetVerboseLevel ( G4int  verbose  ) 

Definition at line 315 of file G4PhotonEvaporation.cc.

References G4VGammaDeexcitation::SetVerboseLevel().

Referenced by G4NuclearDecayChannel::DecayIt().

00316 {
00317   _verbose = verbose;
00318   _contDeexcitation->SetVerboseLevel(verbose);
00319   _discrDeexcitation->SetVerboseLevel(verbose);
00320 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:53 2013 for Geant4 by  doxygen 1.4.7