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";