G4CascadeDeexcitation Class Reference

#include <G4CascadeDeexcitation.hh>

Inheritance diagram for G4CascadeDeexcitation:

G4VCascadeDeexcitation G4CascadeColliderBase G4VCascadeCollider

Public Member Functions

 G4CascadeDeexcitation ()
virtual ~G4CascadeDeexcitation ()
virtual void collide (G4InuclParticle *, G4InuclParticle *target, G4CollisionOutput &globalOutput)
virtual void deExcite (G4Fragment *fragment, G4CollisionOutput &globalOutput)

Detailed Description

Definition at line 44 of file G4CascadeDeexcitation.hh.


Constructor & Destructor Documentation

G4CascadeDeexcitation::G4CascadeDeexcitation (  ) 

Definition at line 45 of file G4CascadeDeexcitation.cc.

00046   : G4VCascadeDeexcitation("G4CascadeDeexcitation"),
00047     theBigBanger(new G4BigBanger),
00048     theNonEquilibriumEvaporator(new G4NonEquilibriumEvaporator),
00049     theEquilibriumEvaporator(new G4EquilibriumEvaporator) {}

G4CascadeDeexcitation::~G4CascadeDeexcitation (  )  [virtual]

Definition at line 51 of file G4CascadeDeexcitation.cc.

00051                                               {
00052   delete theBigBanger;
00053   delete theNonEquilibriumEvaporator;
00054   delete theEquilibriumEvaporator;
00055 }


Member Function Documentation

void G4CascadeDeexcitation::collide ( G4InuclParticle ,
G4InuclParticle target,
G4CollisionOutput globalOutput 
) [virtual]

Implements G4VCascadeDeexcitation.

Definition at line 80 of file G4CascadeDeexcitation.cc.

References G4CollisionOutput::add(), G4CollisionOutput::addOutgoingParticles(), G4EquilibriumEvaporator::collide(), G4NonEquilibriumEvaporator::collide(), G4BigBanger::collide(), G4CascadeColliderBase::explosion(), G4cerr, G4cout, G4endl, G4CollisionOutput::getOutgoingNuclei(), G4CollisionOutput::getOutgoingParticles(), G4VCascadeDeexcitation::output, G4CollisionOutput::reset(), G4CascadeColliderBase::setVerboseLevel(), and G4VCascadeCollider::verboseLevel.

Referenced by deExcite().

00082                                                                      {
00083   if (verboseLevel > 1) {
00084     G4cout << " >>> G4CascadeDeexcitation::collide" << G4endl;
00085   }
00086 
00087   // Initialize colliders verbosity
00088   theBigBanger->setVerboseLevel(verboseLevel);
00089   theNonEquilibriumEvaporator->setVerboseLevel(verboseLevel);
00090   theEquilibriumEvaporator->setVerboseLevel(verboseLevel);
00091 
00092   // Ensure that input state is sensible
00093   G4InuclNuclei* ntarget = dynamic_cast<G4InuclNuclei*>(target);
00094   if (!ntarget) {
00095     G4cerr << " G4CascadeDeexcitation ERROR:  target must be G4InuclNuclei"
00096            << G4endl;
00097     return;
00098   }
00099 
00100   // Check if fragment should be broken up
00101   if (explosion(ntarget)) {
00102     if (verboseLevel > 1) G4cout << " big bang after cascade " << G4endl;
00103 
00104     // Add result of explosion diretly to output and exit
00105     theBigBanger->collide(0, target, globalOutput);
00106     return;
00107   }
00108 
00109   // Fragment is unstable nucleus
00110   output.reset();
00111   theNonEquilibriumEvaporator->collide(0, target, output);
00112   
00113   if (verboseLevel > 1) {
00114     G4cout << " After NonEquilibriumEvaporator " << G4endl;
00115   }
00116   
00117   // Copy evaporated particles (not nuclear fragment) to output
00118   globalOutput.addOutgoingParticles(output.getOutgoingParticles());
00119     
00120   // Use nuclear fragment left from non-equilibrium for next step
00121   // NOT:  Must make a copy before reset occurs below
00122   G4InuclNuclei exciton = output.getOutgoingNuclei()[0];
00123     
00124   output.reset();
00125   theEquilibriumEvaporator->collide(0, &exciton, output);
00126     
00127   if (verboseLevel > 1) {
00128     G4cout << " After EquilibriumEvaporator " << G4endl;
00129   }
00130     
00131   globalOutput.add(output);             // Evaporated particles and nucleus
00132 }

void G4CascadeDeexcitation::deExcite ( G4Fragment fragment,
G4CollisionOutput globalOutput 
) [virtual]

Implements G4VCascadeDeexcitation.

Definition at line 60 of file G4CascadeDeexcitation.cc.

References collide(), G4cerr, G4cout, G4endl, and G4VCascadeCollider::verboseLevel.

00061                                                                       {
00062   if (verboseLevel > 1) {
00063     G4cout << " >>> G4CascadeDeexcitation::deExcite" << G4endl;
00064   }
00065 
00066   if (!fragment) {
00067     if (verboseLevel > 1) G4cerr << " NULL pointer fragment" << G4endl;
00068     return;
00069   }
00070 
00071   if (verboseLevel > 1) G4cout << *fragment << G4endl;
00072 
00073   G4InuclNuclei target(*fragment);
00074   collide(0, &target, globalOutput);
00075 }


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