68 useGNASHTransition(false), OPTxs(3), useSICB(false),
69 useNGB(false), useSCO(false), useCEMtr(true), maxZ(3), maxA(5)
83 theTransition->
UseNGB(useNGB);
99 outFile <<
"The GEANT4 precompound model is considered as an extension of the\n"
100 <<
"hadron kinetic model. It gives a possibility to extend the low energy range\n"
101 <<
"of the hadron kinetic model for nucleon-nucleus inelastic collision and it \n"
102 <<
"provides a ”smooth” transition from kinetic stage of reaction described by the\n"
103 <<
"hadron kinetic model to the equilibrium stage of reaction described by the\n"
104 <<
"equilibrium deexcitation models.\n"
105 <<
"The initial information for calculation of pre-compound nuclear stage\n"
106 <<
"consists of the atomic mass number A, charge Z of residual nucleus, its\n"
107 <<
"four momentum P0 , excitation energy U and number of excitons n, which equals\n"
108 <<
"the sum of the number of particles p (from them p_Z are charged) and the number of\n"
110 <<
"At the preequilibrium stage of reaction, we follow the exciton model approach in ref. [1],\n"
111 <<
"taking into account the competition among all possible nuclear transitions\n"
112 <<
"with ∆n = +2, −2, 0 (which are defined by their associated transition probabilities) and\n"
113 <<
"the emission of neutrons, protons, deutrons, thritium and helium nuclei (also defined by\n"
114 <<
"their associated emission probabilities according to exciton model)\n"
116 <<
"[1] K.K. Gudima, S.G. Mashnik, V.D. Toneev, Nucl. Phys. A401 329 (1983)\n"
125 if(primary != neutron && primary != proton) {
126 std::ostringstream errOs;
127 errOs <<
"BAD primary type in G4PreCompoundModel: "
134 if(primary == proton) { Zp = 1; }
167 for(G4ReactionProductVector::iterator i= result->begin(); i != result->end(); ++i)
171 (*i)->GetTotalEnergy(),
172 (*i)->GetMomentum());
195 if ((Z < maxZ && A < maxA) || Eex < MeV /*|| Eex > 3.*MeV*A*/) {
196 PerformEquilibriumEmission(aFragment, Result);
215 G4int EquilibriumExcitonNumber =
224 G4bool ThereIsTransition =
false;
240 if (test <= EquilibriumExcitonNumber) { go_ahead=
true; }
243 if (useSCO && !go_ahead)
246 if(
G4UniformRand() < 1.0 - std::exp(-x*x/0.32) ) { go_ahead =
true; }
251 G4double TotalTransitionProbability =
262 if(!go_ahead || P1 <= P2+P3 ||
266 PerformEquilibriumEmission(aFragment,Result);
281 PerformEquilibriumEmission(aFragment,Result);
288 G4double TotalProbability = TotalEmissionProbability
289 + TotalTransitionProbability;
292 if (TotalProbability*
G4UniformRand() > TotalEmissionProbability)
296 ThereIsTransition =
true;
304 ThereIsTransition =
false;
308 }
while (ThereIsTransition);
319 useHETCEmission =
true;
325 useHETCEmission =
false;
330 useGNASHTransition =
true;
331 delete theTransition;
333 theTransition->
UseNGB(useNGB);
338 useGNASHTransition =
false;
339 delete theTransition;
341 theTransition->
UseNGB(useNGB);
CLHEP::HepLorentzVector G4LorentzVector
std::vector< G4ReactionProduct * > G4ReactionProductVector
G4double GetExcitationEnergy() const
void SetCreationTime(G4double time)
void SetNumberOfHoles(G4int valueTot, G4int valueP=0)
G4int GetNumberOfExcitons() const
void SetNumberOfExcitedParticle(G4int valueTot, G4int valueP)
void SetStatusChange(G4HadFinalStateStatus aS)
void AddSecondary(G4DynamicParticle *aP)
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
G4double GetGlobalTime() const
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
const G4String & GetParticleName() const
void Initialize(const G4Fragment &aFragment)
G4ReactionProduct * PerformEmission(G4Fragment &aFragment)
G4double GetTotalProbability(const G4Fragment &aFragment)
virtual ~G4PreCompoundModel()
void UseDefaultTransition()
virtual void ModelDescription(std::ostream &outFile) const
void UseGNASHTransition()
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)
G4PreCompoundModel(G4ExcitationHandler *ptr=0)
void UseDefaultEmission()
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
static G4PreCompoundParameters * GetAddress()
G4double GetLevelDensity()
static G4Proton * Proton()
G4ExcitationHandler * GetExcitationHandler() const
void SetExcitationHandler(G4ExcitationHandler *ptr)
G4double GetTransitionProb3() const
virtual G4double CalculateProbability(const G4Fragment &aFragment)=0
virtual void PerformTransition(G4Fragment &aFragment)=0
G4double GetTransitionProb2() const
void UseCEMtr(G4bool use)
G4double GetTransitionProb1() const