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";
std::vector< G4ReactionProduct * > G4ReactionProductVector
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cout
static G4Alpha * AlphaDefinition()
static G4Deuteron * DeuteronDefinition()
void SetNumberOfCharged(G4int value)
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
void SetNumberOfParticles(G4int value)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
virtual G4ReactionProductVector * Propagate(G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus)
virtual ~G4GeneratorPrecompoundInterface()
virtual void PropagateModelDescription(std::ostream &) const
G4GeneratorPrecompoundInterface(G4VPreCompoundModel *p=0)
const G4LorentzVector & Get4Momentum() const
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
static G4He3 * He3Definition()
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int J=0)
static G4Neutron * NeutronDefinition()
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
virtual const G4LorentzVector & Get4Momentum() const
G4double GetBindingEnergy() const
virtual G4ParticleDefinition * GetDefinition() const
G4double GetPDGCharge() const
static G4ParticleTable * GetParticleTable()
G4IonTable * GetIonTable()
static G4Proton * ProtonDefinition()
static G4Proton * Proton()
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetTotalEnergy(const G4double en)
static G4Triton * TritonDefinition()
virtual G4Nucleon * GetNextNucleon()=0
virtual G4int GetCharge()=0
virtual G4bool StartLoop()=0
virtual G4double GetNuclearRadius()=0
virtual G4int GetMassNumber()=0
G4VPreCompoundModel * theDeExcitation
const G4HadProjectile * GetPrimaryProjectile() const
void SetDeExcitation(G4VPreCompoundModel *ptr)
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)=0