86 : maxZForFermiBreakUp(9),maxAForFermiBreakUp(17),
87 isInitialised(false),isEvapLocal(true)
176 if(!evap) {
return; }
181 }
else if(val ==
fGEM) {
214 }
else if(exEnergy < minExcitation && nist->GetIsotopeAbundance(Z, A) > 0.0) {
230 size_t nsec = theTempResult->size();
238 G4bool deletePrimary =
true;
239 G4FragmentVector::iterator j;
240 for (j = theTempResult->begin(); j != theTempResult->end(); ++j) {
242 if((*j) == theInitialStatePtr) { deletePrimary =
false; }
243 A = (*j)->GetA_asInt();
251 G4double exEnergy1 = (*j)->GetExcitationEnergy();
255 Z = (*j)->GetZ_asInt();
267 if( deletePrimary ) {
delete theInitialStatePtr; }
269 delete theTempResult;
282 static const G4int countmax = 1000;
291 ed <<
"Infinite loop in the de-excitation module: " << kk
293 <<
" Initial fragment: \n" << theInitialState
294 <<
"\n Current fragment: \n" << *frag;
296 ed,
"Stop execution");
311 for(
size_t j=0; j<nsec; ++j) {
312 exEnergy =
results[j]->GetExcitationEnergy();
330 for (
size_t j = 0; j<nsec; ++j) {
339 exEnergy =
results[j]->GetExcitationEnergy();
370 for (kk=0; kk<kkmax; ++kk) {
395 theReactionProductVector->reserve(
theResults.size() );
397 G4int theFragmentA, theFragmentZ;
402 for (kk=0; kk<kkmax; ++kk) {
411 if (theFragmentA == 0) {
413 }
else if (theFragmentA == 1 && theFragmentZ == 0) {
415 }
else if (theFragmentA == 1 && theFragmentZ == 1) {
417 }
else if (theFragmentA == 2 && theFragmentZ == 1) {
419 }
else if (theFragmentA == 3 && theFragmentZ == 1) {
421 }
else if (theFragmentA == 3 && theFragmentZ == 2) {
423 }
else if (theFragmentA == 4 && theFragmentZ == 2) {
439 if(theKindOfFragment) {
444 theReactionProductVector->push_back(theNew);
449 if(theKindOfFragment) {
452 if(etot <= ionmass) {
455 G4double ptot = std::sqrt((etot - ionmass)*(etot + ionmass));
462 theReactionProductVector->push_back(theNew);
475 return theReactionProductVector;
480 outFile <<
"G4ExcitationHandler description\n"
481 <<
"This class samples de-excitation of excited nucleus using\n"
482 <<
"Fermi Break-up model for light fragments (Z < 9, A < 17), "
483 <<
"evaporation, fission, and photo-evaporation models. Evaporated\n"
484 <<
"particle may be proton, neutron, and other light fragment \n"
485 <<
"(Z < 13, A < 29). During photon evaporation produced gamma \n"
486 <<
"or electrons due to internal conversion \n";
static G4Pow * GetInstance()
static G4Triton * TritonDefinition()
static G4He3 * He3Definition()
void ModelDescription(std::ostream &outFile) const
std::vector< G4Fragment * > theResults
virtual void BreakFragment(G4FragmentVector *results, G4Fragment *theNucleus)=0
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
virtual G4bool BreakUpChain(G4FragmentVector *theResult, G4Fragment *theNucleus)
G4VEvaporationChannel * GetPhotonEvaporation()
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
static G4Proton * ProtonDefinition()
virtual void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus)
const G4ParticleDefinition * GetParticleDefinition() const
virtual G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)=0
virtual G4bool IsApplicable(G4int Z, G4int A, G4double mass) const =0
static G4NistManager * Instance()
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState)
std::vector< G4Fragment * > results
std::vector< G4ReactionProduct * > G4ReactionProductVector
std::vector< G4Fragment * > thePhotoEvapList
G4IonTable * GetIonTable() const
virtual void InitialiseChannels() final
double A(double temperature)
G4double GetCreationTime() const
std::vector< G4Fragment * > theEvapList
virtual void InitialiseChannels()
const G4LorentzVector & GetMomentum() const
void SetFermiModel(G4VFermiBreakUp *ptr)
void SetTotalEnergy(const G4double en)
std::vector< G4Fragment * > G4FragmentVector
G4DeexPrecoParameters * GetParameters()
void SetMultiFragmentation(G4VMultiFragmentation *ptr)
G4VEvaporationChannel * thePhotonEvaporation
G4double GetIsotopeAbundance(G4int Z, G4int N) const
G4int maxAForFermiBreakUp
G4VMultiFragmentation * theMultiFragmentation
void SetEvaporation(G4VEvaporation *ptr, G4bool isLocal=false)
G4VFermiBreakUp * theFermiModel
void SetFermiBreakUp(G4VFermiBreakUp *ptr)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void SetCombinedChannel()
G4double minEForMultiFrag
void SetDeexChannelsType(G4DeexChannelType val)
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
virtual void SetPhotonEvaporation(G4VEvaporationChannel *ptr)
G4VEvaporation * theEvaporation
G4double GetMinExPerNucleounForMF() const
void SetFormationTime(G4double aTime)
virtual void Initialise()=0
void SetPhotonEvaporation(G4VEvaporationChannel *ptr)
static G4Deuteron * DeuteronDefinition()
static G4Alpha * AlphaDefinition()
static G4Neutron * NeutronDefinition()
G4int maxZForFermiBreakUp
static G4NuclearLevelData * GetInstance()
G4double GetMinExcitation() const
G4double GetExcitationEnergy() const
G4IonTable * theTableOfIons