60 : CaptureThreshold(10*
MeV)
 
   80 #define exactExcitationEnergy 
   97     G4int numberOfHoles = 0;
 
  105 #ifdef exactExcitationEnergy 
  108     G4KineticTrackVector::iterator iter;
 
  109     for(iter=theSecondaries->begin(); iter !=theSecondaries->end(); ++iter)
 
  112         G4double e = (*iter)->Get4Momentum().e();
 
  113         G4double mass = (*iter)->Get4Momentum().mag();
 
  115         if((part != proton && part != neutron) ||
 
  116                 (e > mass + CaptureThreshold) ||
 
  117                 ((*iter)->GetPosition().mag() > R)) {
 
  121             theTotalResult->push_back(theNew);
 
  122 #ifdef exactExcitationEnergy 
  123             secondary4Momemtum += (*iter)->Get4Momentum();
 
  133             captured3Momentum += mom;
 
  134             exEnergy += (e - mass);
 
  138     delete theSecondaries;
 
  143     while(theCurrentNucleon) {
 
  155     exciton3Momentum = captured3Momentum - wounded3Momentum;
 
  159 #ifdef exactExcitationEnergy 
  164         G4double Efinal = fMass + secondary4Momemtum.
e();
 
  165         if ( (Einitial - Efinal) > 0 ) {
 
  168             exEnergy=Einitial - Efinal;
 
  178         #ifdef G4GPI_debug_excitation 
  179         G4cout << 
"momentum balance init/final  " << balance << 
" value " << balance.
mag() << 
G4endl 
  180                 << 
"primary / secondaries "<< primary->
Get4Momentum() << 
" / " 
  181                 << secondary4Momemtum << 
" captured/wounded: " << captured3Momentum << 
" / " <<  wounded3Momentum
 
  182                 << 
"  exciton " << exciton3Momentum << 
G4endl 
  183                 << secondary4Momemtum.
vect() + exciton3Momentum << 
G4endl;
 
  185 #ifdef exactExcitationEnergy 
  189                 std::sqrt(exciton3Momentum.
mag2() + fMass*fMass));
 
  191         if ( exEnergy > 0.0 ) {  
 
  192             G4Fragment anInitialState(anA, aZ, exciton4Momentum);
 
  199             theTotalResult->insert(theTotalResult->end(),aPrecoResult->begin(),aPrecoResult->end() );
 
  205             if (anA == 1 && aZ == 0) {
 
  207             } 
else if (anA == 1 && aZ == 1) {
 
  209             } 
else if (anA == 2 && aZ == 1) {
 
  211             } 
else if (anA == 3 && aZ == 1) {
 
  213             } 
else if (anA == 3 && aZ == 2) {
 
  215             } 
else if (anA == 4 && aZ == 2) {
 
  221             if (theKindOfFragment != 0) {
 
  226                 theTotalResult->push_back(theNew);
 
  231     return theTotalResult;
 
  237     G4cout << 
"G4GeneratorPrecompoundInterface: ApplyYourself interface called stand-allone." 
  239     G4cout << 
"This class is only a mediator between generator and precompound"<<
G4endl;
 
  240     G4cout << 
"Please remove from your physics list."<<
G4endl;
 
  241     throw G4HadronicException(__FILE__, __LINE__, 
"SEVERE: G4GeneratorPrecompoundInterface model interface called stand-allone.");
 
  246     outFile << 
"G4GeneratorPrecompoundInterface interfaces a high\n" 
  247             << 
"energy model through the wounded nucleus to precompound de-excition.\n" 
  248             << 
"Low energy protons and neutron present among secondaries produced by \n" 
  249             << 
"the high energy generator and within the nucleus are captured. The wounded\n" 
  250             << 
"nucleus and the captured particles form an excited nuclear fragment. This\n" 
  251             << 
"fragment is passed to the Geant4 pre-compound model for de-excitation.\n" 
  252             << 
"Nuclear de-excitation:\n";