#include <G4CascadeDeexcitation.hh>
Inheritance diagram for G4CascadeDeexcitation:
Public Member Functions | |
G4CascadeDeexcitation () | |
virtual | ~G4CascadeDeexcitation () |
virtual void | collide (G4InuclParticle *, G4InuclParticle *target, G4CollisionOutput &globalOutput) |
virtual void | deExcite (G4Fragment *fragment, G4CollisionOutput &globalOutput) |
Definition at line 44 of file G4CascadeDeexcitation.hh.
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 }
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 }