Geant4-11
Public Member Functions | Private Member Functions | Private Attributes
G4ExcitationHandler Class Reference

#include <G4ExcitationHandler.hh>

Public Member Functions

G4ReactionProductVectorBreakItUp (const G4Fragment &theInitialState)
 
 G4ExcitationHandler ()
 
G4VEvaporationGetEvaporation ()
 
G4VFermiBreakUpGetFermiModel ()
 
G4VMultiFragmentationGetMultiFragmentation ()
 
G4VEvaporationChannelGetPhotonEvaporation ()
 
void Initialise ()
 
void ModelDescription (std::ostream &outFile) const
 
void SetDeexChannelsType (G4DeexChannelType val)
 
void SetEvaporation (G4VEvaporation *ptr, G4bool isLocal=false)
 
void SetFermiModel (G4VFermiBreakUp *ptr)
 
void SetMaxAandZForFermiBreakUp (G4int anA, G4int aZ)
 
void SetMaxAForFermiBreakUp (G4int anA)
 
void SetMaxZForFermiBreakUp (G4int aZ)
 
void SetMinEForMultiFrag (G4double anE)
 
void SetMultiFragmentation (G4VMultiFragmentation *ptr)
 
void SetOPTxs (G4int opt)
 
void SetPhotonEvaporation (G4VEvaporationChannel *ptr)
 
void UseSICB ()
 
 ~G4ExcitationHandler ()
 

Private Member Functions

 G4ExcitationHandler (const G4ExcitationHandler &right)
 
G4bool operator!= (const G4ExcitationHandler &right) const
 
const G4ExcitationHandleroperator= (const G4ExcitationHandler &right)
 
G4bool operator== (const G4ExcitationHandler &right) const
 
void SetParameters ()
 
void SortSecondaryFragment (G4Fragment *)
 

Private Attributes

G4int fVerbose
 
G4int fWarnings
 
G4int icID
 
G4bool isActive
 
G4bool isEvapLocal
 
G4bool isInitialised
 
G4int maxAForFermiBreakUp
 
G4double maxExcitation
 
G4int maxZForFermiBreakUp
 
G4double minEForMultiFrag
 
G4double minExcitation
 
G4NistManagernist
 
std::vector< G4Fragment * > results
 
const G4ParticleDefinitiontheAlpha
 
const G4ParticleDefinitiontheDeuteron
 
const G4ParticleDefinitiontheElectron
 
std::vector< G4Fragment * > theEvapList
 
G4VEvaporationtheEvaporation
 
G4VFermiBreakUptheFermiModel
 
const G4ParticleDefinitiontheHe3
 
G4VMultiFragmentationtheMultiFragmentation
 
const G4ParticleDefinitiontheNeutron
 
G4VEvaporationChannelthePhotonEvaporation
 
const G4ParticleDefinitiontheProton
 
std::vector< G4Fragment * > theResults
 
G4IonTabletheTableOfIons
 
const G4ParticleDefinitiontheTriton
 

Detailed Description

Definition at line 62 of file G4ExcitationHandler.hh.

Constructor & Destructor Documentation

◆ G4ExcitationHandler() [1/2]

G4ExcitationHandler::G4ExcitationHandler ( )
explicit

Definition at line 86 of file G4ExcitationHandler.cc.

90 isInitialised(false),isEvapLocal(true),isActive(true)
91{
94
95 theMultiFragmentation = nullptr;
96 theFermiModel = nullptr;
97 theEvaporation = nullptr;
98 thePhotonEvaporation = nullptr;
99 theResults.reserve(60);
100 results.reserve(30);
101 theEvapList.reserve(30);
102
111
112 if(fVerbose > 1) { G4cout << "### New handler " << this << G4endl; }
113}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4Alpha * AlphaDefinition()
Definition: G4Alpha.cc:83
static G4Deuteron * DeuteronDefinition()
Definition: G4Deuteron.cc:88
static G4Electron * Electron()
Definition: G4Electron.cc:93
const G4ParticleDefinition * theAlpha
const G4ParticleDefinition * theHe3
G4VEvaporation * theEvaporation
const G4ParticleDefinition * theProton
std::vector< G4Fragment * > results
G4VFermiBreakUp * theFermiModel
std::vector< G4Fragment * > theEvapList
const G4ParticleDefinition * theTriton
G4VMultiFragmentation * theMultiFragmentation
const G4ParticleDefinition * theDeuteron
G4VEvaporationChannel * thePhotonEvaporation
const G4ParticleDefinition * theElectron
const G4ParticleDefinition * theNeutron
std::vector< G4Fragment * > theResults
static G4He3 * He3Definition()
Definition: G4He3.cc:88
static G4Neutron * NeutronDefinition()
Definition: G4Neutron.cc:98
static G4NistManager * Instance()
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
static G4Proton * ProtonDefinition()
Definition: G4Proton.cc:87
static G4Triton * TritonDefinition()
Definition: G4Triton.cc:88
static constexpr double TeV
static constexpr double MeV
static constexpr double eV

References G4Alpha::AlphaDefinition(), G4Deuteron::DeuteronDefinition(), G4Electron::Electron(), fVerbose, G4cout, G4endl, G4Pow::GetInstance(), G4ParticleTable::GetIonTable(), G4ParticleTable::GetParticleTable(), G4He3::He3Definition(), G4NistManager::Instance(), G4Neutron::NeutronDefinition(), nist, G4Proton::ProtonDefinition(), results, theAlpha, theDeuteron, theElectron, theEvapList, theEvaporation, theFermiModel, theHe3, theMultiFragmentation, theNeutron, thePhotonEvaporation, theProton, theResults, theTableOfIons, theTriton, and G4Triton::TritonDefinition().

◆ ~G4ExcitationHandler()

G4ExcitationHandler::~G4ExcitationHandler ( )

Definition at line 115 of file G4ExcitationHandler.cc.

116{
118 delete theFermiModel;
119 if(isEvapLocal) { delete theEvaporation; }
120}

References isEvapLocal, theEvaporation, theFermiModel, and theMultiFragmentation.

◆ G4ExcitationHandler() [2/2]

G4ExcitationHandler::G4ExcitationHandler ( const G4ExcitationHandler right)
private

Member Function Documentation

◆ BreakItUp()

G4ReactionProductVector * G4ExcitationHandler::BreakItUp ( const G4Fragment theInitialState)

Definition at line 279 of file G4ExcitationHandler.cc.

280{
281 // Variables existing until end of method
282 G4Fragment * theInitialStatePtr = new G4Fragment(theInitialState);
283 if(fVerbose > 1) {
284 G4cout << "@@@@@@@@@@ Start G4Excitation Handler @@@@@@@@@@@@@ " << G4endl;
285 G4cout << theInitialState << G4endl;
286 }
287 if(!isInitialised) { Initialise(); }
288
289 // pointer to fragment vector which receives temporal results
290 G4FragmentVector * theTempResult = nullptr;
291
292 theResults.clear();
293 theEvapList.clear();
294
295 // Variables to describe the excited configuration
296 G4double exEnergy = theInitialState.GetExcitationEnergy();
297 G4int A = theInitialState.GetA_asInt();
298 G4int Z = theInitialState.GetZ_asInt();
299
300 // too much excitation
301 if(exEnergy > A*maxExcitation && A > 0) {
302 ++fWarnings;
303 if(fWarnings < 0) {
305 ed << "High excitation Fragment Z= " << Z << " A= " << A
306 << " Eex/A(MeV)= " << exEnergy/A;
307 G4Exception("G4ExcitationHandler::BreakItUp()","had0034",JustWarning,ed,"");
308 }
309 }
310
311 // In case A <= 1 the fragment will not perform any nucleon emission
312 if (A <= 1 || !isActive) {
313 theResults.push_back( theInitialStatePtr );
314
315 // check if a fragment is stable
316 } else if(exEnergy < minExcitation && nist->GetIsotopeAbundance(Z, A) > 0.0) {
317 theResults.push_back( theInitialStatePtr );
318
319 // JMQ 150909: first step in de-excitation is treated separately
320 // Fragments after the first step are stored in theEvapList
321 } else {
323 || exEnergy <= minEForMultiFrag*A) {
324 theEvapList.push_back(theInitialStatePtr);
325
326 // Statistical Multifragmentation will take place only once
327 } else {
328 theTempResult = theMultiFragmentation->BreakItUp(theInitialState);
329 if(!theTempResult) {
330 theEvapList.push_back(theInitialStatePtr);
331 } else {
332 size_t nsec = theTempResult->size();
333
334 // no fragmentation
335 if(0 == nsec) {
336 theEvapList.push_back(theInitialStatePtr);
337
338 // secondary are produced - sort out secondary fragments
339 } else {
340 G4bool deletePrimary = true;
341 for (auto ptr : *theTempResult) {
342 if(ptr == theInitialStatePtr) { deletePrimary = false; }
344 }
345 if( deletePrimary ) { delete theInitialStatePtr; }
346 }
347 delete theTempResult; // end multifragmentation
348 }
349 }
350 }
351 if(fVerbose > 2) {
352 G4cout << "## After first step of handler " << theEvapList.size()
353 << " for evap; "
354 << theResults.size() << " results. " << G4endl;
355 }
356 // -----------------------------------
357 // FermiBreakUp and De-excitation loop
358 // -----------------------------------
359
360 static const G4int countmax = 1000;
361 size_t kk;
362 for (kk=0; kk<theEvapList.size(); ++kk) {
363 G4Fragment* frag = theEvapList[kk];
364 if(fVerbose > 3) {
365 G4cout << "Next evaporate: " << G4endl;
366 G4cout << *frag << G4endl;
367 }
368 if(kk >= countmax) {
370 ed << "Infinite loop in the de-excitation module: " << kk
371 << " iterations \n"
372 << " Initial fragment: \n" << theInitialState
373 << "\n Current fragment: \n" << *frag;
374 G4Exception("G4ExcitationHandler::BreakItUp","had0333",FatalException,
375 ed,"Stop execution");
376
377 }
378 A = frag->GetA_asInt();
379 Z = frag->GetZ_asInt();
380 results.clear();
381 if(fVerbose > 2) {
382 G4cout << "G4ExcitationHandler# " << kk << " Z= " << Z << " A= " << A
383 << " Eex(MeV)= " << frag->GetExcitationEnergy() << G4endl;
384 }
385 // Fermi Break-Up
388 size_t nsec = results.size();
389 if(fVerbose > 2) { G4cout << "FermiBreakUp Nsec= " << nsec << G4endl; }
390
391 // FBU takes care to delete input fragment or add it to the results
392 // The secondary may be excited - photo-evaporation should be applied
393 if(1 < nsec) {
394 for(auto & res : results) {
396 }
397 continue;
398 }
399 // evaporation will be applied
400 }
401 // apply Evaporation, residual nucleus is always added to the results
402 // photon evaporation is possible
404 if(fVerbose > 3) {
405 G4cout << "Evaporation Nsec= " << results.size() << G4endl;
406 }
407 if(0 == results.size()) {
408 theResults.push_back(frag);
409 } else {
411 }
412
413 // Sort out secondary fragments
414 for (auto & res : results) {
415 if(fVerbose > 4) {
416 G4cout << "Evaporated product #" << *res << G4endl;
417 }
419 } // end of loop on secondary
420 } // end of the loop over theEvapList
421 if(fVerbose > 2) {
422 G4cout << "## After 2nd step of handler " << theEvapList.size()
423 << " was evap; "
424 << theResults.size() << " results. " << G4endl;
425 }
426 G4ReactionProductVector * theReactionProductVector =
428
429 // MAC (24/07/08)
430 // To optimise the storing speed, we reserve space
431 // in memory for the vector
432 theReactionProductVector->reserve( theResults.size() );
433
434 if(fVerbose > 2) {
435 G4cout << "### ExcitationHandler provides " << theResults.size()
436 << " evaporated products:" << G4endl;
437 }
438 for (auto & frag : theResults) {
439
440 // in the case of dummy de-excitation, excitation energy is transfered
441 // into kinetic energy of output ion
442 if(!isActive) {
443 G4double mass = frag->GetGroundStateMass();
444 G4double ptot = (frag->GetMomentum()).vect().mag();
445 G4double etot = (frag->GetMomentum()).e();
446 G4double fac = (etot <= mass || 0.0 == ptot) ? 0.0
447 : std::sqrt((etot - mass)*(etot + mass))/ptot;
448 G4LorentzVector lv((frag->GetMomentum()).px()*fac,
449 (frag->GetMomentum()).py()*fac,
450 (frag->GetMomentum()).pz()*fac, etot);
451 frag->SetMomentum(lv);
452 }
453 if(fVerbose > 3) {
454 G4cout << *frag;
455 if(frag->NuclearPolarization()) {
456 G4cout << " " << frag->NuclearPolarization();
457 }
458 G4cout << G4endl;
459 }
460
461 G4int fragmentA = frag->GetA_asInt();
462 G4int fragmentZ = frag->GetZ_asInt();
463 G4double etot= frag->GetMomentum().e();
464 G4double eexc = 0.0;
465 const G4ParticleDefinition* theKindOfFragment = nullptr;
466 if (fragmentA == 0) { // photon or e-
467 theKindOfFragment = frag->GetParticleDefinition();
468 } else if (fragmentA == 1 && fragmentZ == 0) { // neutron
469 theKindOfFragment = theNeutron;
470 } else if (fragmentA == 1 && fragmentZ == 1) { // proton
471 theKindOfFragment = theProton;
472 } else if (fragmentA == 2 && fragmentZ == 1) { // deuteron
473 theKindOfFragment = theDeuteron;
474 } else if (fragmentA == 3 && fragmentZ == 1) { // triton
475 theKindOfFragment = theTriton;
476 } else if (fragmentA == 3 && fragmentZ == 2) { // helium3
477 theKindOfFragment = theHe3;
478 } else if (fragmentA == 4 && fragmentZ == 2) { // alpha
479 theKindOfFragment = theAlpha;
480 } else {
481
482 // fragment
483 eexc = frag->GetExcitationEnergy();
484 G4int idxf = frag->GetFloatingLevelNumber();
485 if(eexc < minExcitation) {
486 eexc = 0.0;
487 idxf = 0;
488 }
489
490 theKindOfFragment = theTableOfIons->GetIon(fragmentZ,fragmentA,eexc,
492 if(fVerbose > 3) {
493 G4cout << "### EXCH: Find ion Z= " << fragmentZ
494 << " A= " << fragmentA
495 << " Eexc(MeV)= " << eexc/MeV << " idx= " << idxf
496 << G4endl;
497 }
498 }
499 // fragment identified
500 if(theKindOfFragment) {
501 G4ReactionProduct * theNew = new G4ReactionProduct(theKindOfFragment);
502 theNew->SetMomentum(frag->GetMomentum().vect());
503 theNew->SetTotalEnergy(etot);
504 theNew->SetFormationTime(frag->GetCreationTime());
505 if(theKindOfFragment == theElectron) {
506 theNew->SetCreatorModelID(icID);
507 } else {
508 theNew->SetCreatorModelID(frag->GetCreatorModelID());
509 }
510 theReactionProductVector->push_back(theNew);
511
512 // fragment not found out ground state is created
513 } else {
514 theKindOfFragment =
515 theTableOfIons->GetIon(fragmentZ,fragmentA,0.0,noFloat,0);
516 if(theKindOfFragment) {
517 G4ThreeVector mom(0.0,0.0,0.0);
518 G4double ionmass = theKindOfFragment->GetPDGMass();
519 if(etot <= ionmass) {
520 etot = ionmass;
521 } else {
522 G4double ptot = std::sqrt((etot - ionmass)*(etot + ionmass));
523 mom = (frag->GetMomentum().vect().unit())*ptot;
524 }
525 G4ReactionProduct * theNew = new G4ReactionProduct(theKindOfFragment);
526 theNew->SetMomentum(mom);
527 theNew->SetTotalEnergy(etot);
528 theNew->SetFormationTime(frag->GetCreationTime());
529 theNew->SetCreatorModelID(frag->GetCreatorModelID());
530 theReactionProductVector->push_back(theNew);
531 if(fVerbose > 3) {
532 G4cout << " ground state, energy corrected E(MeV)= "
533 << etot << G4endl;
534 }
535 }
536 }
537 delete frag;
538 }
539 if(fVerbose > 3) {
540 G4cout << "@@@@@@@@@@ End G4Excitation Handler "<< G4endl;
541 }
542 return theReactionProductVector;
543}
@ JustWarning
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:64
#define noFloat
Definition: G4Ions.hh:112
static const G4double fac
std::vector< G4ReactionProduct * > G4ReactionProductVector
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
void SortSecondaryFragment(G4Fragment *)
G4double GetGroundStateMass() const
Definition: G4Fragment.hh:304
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:299
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:323
G4int GetZ_asInt() const
Definition: G4Fragment.hh:276
void SetMomentum(const G4LorentzVector &value)
Definition: G4Fragment.hh:328
G4int GetA_asInt() const
Definition: G4Fragment.hh:271
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:522
static G4Ions::G4FloatLevelBase FloatLevelBase(char flbChar)
Definition: G4Ions.cc:103
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetTotalEnergy(const G4double en)
void SetCreatorModelID(const G4int mod)
void SetFormationTime(G4double aTime)
virtual void BreakFragment(G4FragmentVector *, G4Fragment *theNucleus)
virtual G4bool IsApplicable(G4int Z, G4int A, G4double mass) const =0
virtual void BreakFragment(G4FragmentVector *results, G4Fragment *theNucleus)=0
virtual G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)=0

References A, G4VEvaporation::BreakFragment(), G4VFermiBreakUp::BreakFragment(), G4VMultiFragmentation::BreakItUp(), fac, FatalException, G4Ions::FloatLevelBase(), fVerbose, fWarnings, G4cout, G4endl, G4Exception(), G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4IonTable::GetIon(), G4ParticleDefinition::GetPDGMass(), G4Fragment::GetZ_asInt(), icID, Initialise(), isActive, G4VFermiBreakUp::IsApplicable(), isInitialised, JustWarning, maxAForFermiBreakUp, maxExcitation, maxZForFermiBreakUp, MeV, minEForMultiFrag, minExcitation, noFloat, results, G4ReactionProduct::SetCreatorModelID(), G4ReactionProduct::SetFormationTime(), G4ReactionProduct::SetMomentum(), G4ReactionProduct::SetTotalEnergy(), SortSecondaryFragment(), theAlpha, theDeuteron, theElectron, theEvapList, theEvaporation, theFermiModel, theHe3, theMultiFragmentation, theNeutron, theProton, theResults, theTableOfIons, theTriton, and Z.

Referenced by G4WilsonAbrasionModel::ApplyYourself(), G4EMDissociation::ApplyYourself(), G4QMDReaction::ApplyYourself(), G4LowEIonFragmentation::ApplyYourself(), G4BinaryCascade::DeExcite(), G4PreCompoundDeexcitation::deExcite(), G4BinaryLightIonReaction::DeExciteSpectatorNucleus(), and G4PreCompoundModel::PerformEquilibriumEmission().

◆ GetEvaporation()

G4VEvaporation * G4ExcitationHandler::GetEvaporation ( )

Definition at line 254 of file G4ExcitationHandler.cc.

255{
256 if(!theEvaporation) { SetParameters(); }
257 return theEvaporation;
258}

References SetParameters(), and theEvaporation.

Referenced by G4INCLXXInterface::G4INCLXXInterface().

◆ GetFermiModel()

G4VFermiBreakUp * G4ExcitationHandler::GetFermiModel ( )

Definition at line 266 of file G4ExcitationHandler.cc.

267{
268 if(!theFermiModel) { SetParameters(); }
269 return theFermiModel;
270}

References SetParameters(), and theFermiModel.

◆ GetMultiFragmentation()

G4VMultiFragmentation * G4ExcitationHandler::GetMultiFragmentation ( )

Definition at line 260 of file G4ExcitationHandler.cc.

261{
264}

References SetParameters(), and theMultiFragmentation.

◆ GetPhotonEvaporation()

G4VEvaporationChannel * G4ExcitationHandler::GetPhotonEvaporation ( )

Definition at line 272 of file G4ExcitationHandler.cc.

273{
276}

References SetParameters(), and thePhotonEvaporation.

◆ Initialise()

void G4ExcitationHandler::Initialise ( )

Definition at line 158 of file G4ExcitationHandler.cc.

159{
160 if(isInitialised) { return; }
161 if(fVerbose > 1) {
162 G4cout << "G4ExcitationHandler::Initialise() started " << this << G4endl;
163 }
164 G4DeexPrecoParameters* param =
166 isInitialised = true;
168 if(isActive) {
171 }
172 // dump level is controlled by parameter class
173 param->Dump();
174}
G4DeexPrecoParameters * GetParameters()
static G4NuclearLevelData * GetInstance()
virtual void InitialiseChannels()
virtual void Initialise()=0

References G4DeexPrecoParameters::Dump(), fVerbose, G4cout, G4endl, G4NuclearLevelData::GetInstance(), G4NuclearLevelData::GetParameters(), G4VFermiBreakUp::Initialise(), G4VEvaporation::InitialiseChannels(), isActive, isInitialised, SetParameters(), theEvaporation, and theFermiModel.

Referenced by BreakItUp(), G4AblaInterface::InitialiseModel(), and G4PreCompoundModel::InitialiseModel().

◆ ModelDescription()

void G4ExcitationHandler::ModelDescription ( std::ostream &  outFile) const

Definition at line 545 of file G4ExcitationHandler.cc.

546{
547 outFile << "G4ExcitationHandler description\n"
548 << "This class samples de-excitation of excited nucleus using\n"
549 << "Fermi Break-up model for light fragments (Z < 9, A < 17), "
550 << "evaporation, fission, and photo-evaporation models. Evaporated\n"
551 << "particle may be proton, neutron, and other light fragment \n"
552 << "(Z < 13, A < 29). During photon evaporation produced gamma \n"
553 << "or electrons due to internal conversion \n";
554}

Referenced by G4BinaryCascade::ModelDescription(), and G4BinaryCascade::PropagateModelDescription().

◆ operator!=()

G4bool G4ExcitationHandler::operator!= ( const G4ExcitationHandler right) const
private

◆ operator=()

const G4ExcitationHandler & G4ExcitationHandler::operator= ( const G4ExcitationHandler right)
private

◆ operator==()

G4bool G4ExcitationHandler::operator== ( const G4ExcitationHandler right) const
private

◆ SetDeexChannelsType()

void G4ExcitationHandler::SetDeexChannelsType ( G4DeexChannelType  val)

Definition at line 222 of file G4ExcitationHandler.cc.

223{
224 G4Evaporation* evap = static_cast<G4Evaporation*>(theEvaporation);
225 if(fVerbose > 1) {
226 G4cout << "G4ExcitationHandler::SetDeexChannelsType " << val
227 << " for " << this << G4endl;
228 }
229 if(val == fDummy) {
230 isActive = false;
231 return;
232 }
233 if(!evap) { return; }
234 if(val == fEvaporation) {
235 evap->SetDefaultChannel();
236 } else if(val == fCombined) {
237 evap->SetCombinedChannel();
238 } else if(val == fGEM) {
239 evap->SetGEMChannel();
240 } else if(val == fGEMVI) {
241 evap->SetGEMVIChannel();
242 }
243 evap->InitialiseChannels();
244 if(fVerbose > 1) {
246 G4cout << "Number of de-excitation channels is changed to: "
248 G4cout << " " << this;
249 }
250 G4cout << G4endl;
251 }
252}
@ fEvaporation
virtual void InitialiseChannels() final
void SetGEMChannel()
void SetDefaultChannel()
void SetCombinedChannel()
void SetGEMVIChannel()
size_t GetNumberOfChannels() const
G4bool IsMasterThread()
Definition: G4Threading.cc:124

References fCombined, fDummy, fEvaporation, fGEM, fGEMVI, fVerbose, G4cout, G4endl, G4VEvaporation::GetNumberOfChannels(), G4Evaporation::InitialiseChannels(), isActive, G4Threading::IsMasterThread(), G4Evaporation::SetCombinedChannel(), G4Evaporation::SetDefaultChannel(), G4Evaporation::SetGEMChannel(), G4Evaporation::SetGEMVIChannel(), and theEvaporation.

Referenced by G4QMDReaction::G4QMDReaction().

◆ SetEvaporation()

void G4ExcitationHandler::SetEvaporation ( G4VEvaporation ptr,
G4bool  isLocal = false 
)

Definition at line 176 of file G4ExcitationHandler.cc.

177{
178 if(ptr && ptr != theEvaporation) {
179 delete theEvaporation;
180 theEvaporation = ptr;
183 isEvapLocal = flag;
184 if(fVerbose > 1) {
185 G4cout << "G4ExcitationHandler::SetEvaporation() for " << this << G4endl;
186 }
187 }
188}
void SetPhotonEvaporation(G4VEvaporationChannel *ptr)
G4VEvaporationChannel * GetPhotonEvaporation()
void SetFermiBreakUp(G4VFermiBreakUp *ptr)

References fVerbose, G4cout, G4endl, G4VEvaporation::GetPhotonEvaporation(), isEvapLocal, G4VEvaporation::SetFermiBreakUp(), SetPhotonEvaporation(), theEvaporation, and theFermiModel.

Referenced by G4QMDReaction::G4QMDReaction(), G4WilsonAbrasionModel::G4WilsonAbrasionModel(), SetParameters(), and G4WilsonAbrasionModel::SetUseAblation().

◆ SetFermiModel()

void G4ExcitationHandler::SetFermiModel ( G4VFermiBreakUp ptr)

Definition at line 199 of file G4ExcitationHandler.cc.

200{
201 if(ptr && ptr != theFermiModel) {
202 delete theFermiModel;
203 theFermiModel = ptr;
205 }
206}

References G4VEvaporation::SetFermiBreakUp(), theEvaporation, and theFermiModel.

Referenced by SetParameters().

◆ SetMaxAandZForFermiBreakUp()

void G4ExcitationHandler::SetMaxAandZForFermiBreakUp ( G4int  anA,
G4int  aZ 
)
inline

Definition at line 168 of file G4ExcitationHandler.hh.

169{
172}
void SetMaxZForFermiBreakUp(G4int aZ)
void SetMaxAForFermiBreakUp(G4int anA)

References SetMaxAForFermiBreakUp(), and SetMaxZForFermiBreakUp().

◆ SetMaxAForFermiBreakUp()

void G4ExcitationHandler::SetMaxAForFermiBreakUp ( G4int  anA)
inline

Definition at line 163 of file G4ExcitationHandler.hh.

164{
166}

References maxAForFermiBreakUp.

Referenced by SetMaxAandZForFermiBreakUp().

◆ SetMaxZForFermiBreakUp()

void G4ExcitationHandler::SetMaxZForFermiBreakUp ( G4int  aZ)
inline

Definition at line 158 of file G4ExcitationHandler.hh.

159{
161}

References maxZForFermiBreakUp.

Referenced by SetMaxAandZForFermiBreakUp().

◆ SetMinEForMultiFrag()

void G4ExcitationHandler::SetMinEForMultiFrag ( G4double  anE)
inline

Definition at line 174 of file G4ExcitationHandler.hh.

175{
176 minEForMultiFrag = anE;
177}

References minEForMultiFrag.

Referenced by G4EMDissociation::G4EMDissociation().

◆ SetMultiFragmentation()

void G4ExcitationHandler::SetMultiFragmentation ( G4VMultiFragmentation ptr)

Definition at line 191 of file G4ExcitationHandler.cc.

192{
193 if(ptr && ptr != theMultiFragmentation) {
196 }
197}

References theMultiFragmentation.

Referenced by SetParameters().

◆ SetOPTxs()

void G4ExcitationHandler::SetOPTxs ( G4int  opt)
inline

Definition at line 179 of file G4ExcitationHandler.hh.

180{}

◆ SetParameters()

void G4ExcitationHandler::SetParameters ( )
private

Definition at line 122 of file G4ExcitationHandler.cc.

123{
125 auto param = ndata->GetParameters();
126 isActive = true;
127 // check if de-excitation is needed
128 if(fDummy == param->GetDeexChannelsType()) {
129 isActive = false;
130 } else {
131 // upload data for elements used in geometry
132 G4int Zmax = 20;
134 for(auto & elm : *table) { Zmax = std::max(Zmax, elm->GetZasInt()); }
135 ndata->UploadNuclearLevelData(Zmax+1);
136 }
137 minEForMultiFrag = param->GetMinExPerNucleounForMF();
138 minExcitation = param->GetMinExcitation();
139 maxExcitation = param->GetPrecoHighEnergy();
140 icID = G4PhysicsModelCatalog::GetModelID("model_e-InternalConversion");
141
142 // allowing local debug printout
143 fVerbose = std::max(fVerbose, param->GetVerbose());
144 if(isActive) {
146 if(!theEvaporation) {
148 }
151 }
153 if(fVerbose > 1) {
154 G4cout << "G4ExcitationHandler::SetParameters() done " << this << G4endl;
155 }
156}
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
Definition: G4Element.cc:397
void SetEvaporation(G4VEvaporation *ptr, G4bool isLocal=false)
void SetFermiModel(G4VFermiBreakUp *ptr)
void SetMultiFragmentation(G4VMultiFragmentation *ptr)
void UploadNuclearLevelData(G4int Z)
static G4int GetModelID(const G4int modelIndex)
void SetVerbose(G4int val)
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References fDummy, fVerbose, G4cout, G4endl, G4Element::GetElementTable(), G4NuclearLevelData::GetInstance(), G4PhysicsModelCatalog::GetModelID(), G4NuclearLevelData::GetParameters(), icID, isActive, G4INCL::Math::max(), maxExcitation, minEForMultiFrag, minExcitation, SetEvaporation(), SetFermiModel(), SetMultiFragmentation(), SetPhotonEvaporation(), G4VFermiBreakUp::SetVerbose(), theEvaporation, theFermiModel, theMultiFragmentation, thePhotonEvaporation, and G4NuclearLevelData::UploadNuclearLevelData().

Referenced by GetEvaporation(), GetFermiModel(), GetMultiFragmentation(), GetPhotonEvaporation(), and Initialise().

◆ SetPhotonEvaporation()

void G4ExcitationHandler::SetPhotonEvaporation ( G4VEvaporationChannel ptr)

Definition at line 209 of file G4ExcitationHandler.cc.

210{
211 if(ptr && ptr != thePhotonEvaporation) {
215 if(fVerbose > 1) {
216 G4cout << "G4ExcitationHandler::SetPhotonEvaporation() " << ptr
217 << " for handler " << this << G4endl;
218 }
219 }
220}
virtual void SetPhotonEvaporation(G4VEvaporationChannel *ptr)

References fVerbose, G4cout, G4endl, G4VEvaporation::SetPhotonEvaporation(), theEvaporation, and thePhotonEvaporation.

Referenced by SetEvaporation(), and SetParameters().

◆ SortSecondaryFragment()

void G4ExcitationHandler::SortSecondaryFragment ( G4Fragment frag)
inlineprivate

Definition at line 185 of file G4ExcitationHandler.hh.

186{
187 G4int A = frag->GetA_asInt();
188
189 // gamma, e-, p, n
190 if(A <= 1) {
191 theResults.push_back(frag);
192 } else if(frag->GetExcitationEnergy() < minExcitation) {
193 // cold fragments
194 G4int Z = frag->GetZ_asInt();
195
196 // is stable or d, t, He3, He4
197 if(nist->GetIsotopeAbundance(Z, A) > 0.0 || (A == 3 && (Z == 1 || Z == 2)) ) {
198 theResults.push_back(frag); // stable fragment
199 } else {
200 theEvapList.push_back(frag);
201 }
202 // hot fragments are unstable
203 } else {
204 theEvapList.push_back(frag);
205 }
206}
G4double GetIsotopeAbundance(G4int Z, G4int N) const

References A, G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4NistManager::GetIsotopeAbundance(), G4Fragment::GetZ_asInt(), minExcitation, nist, theEvapList, theResults, and Z.

Referenced by BreakItUp().

◆ UseSICB()

void G4ExcitationHandler::UseSICB ( )
inline

Definition at line 182 of file G4ExcitationHandler.hh.

183{}

Field Documentation

◆ fVerbose

G4int G4ExcitationHandler::fVerbose
private

◆ fWarnings

G4int G4ExcitationHandler::fWarnings
private

Definition at line 138 of file G4ExcitationHandler.hh.

Referenced by BreakItUp().

◆ icID

G4int G4ExcitationHandler::icID
private

Definition at line 132 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and SetParameters().

◆ isActive

G4bool G4ExcitationHandler::isActive
private

Definition at line 146 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), Initialise(), SetDeexChannelsType(), and SetParameters().

◆ isEvapLocal

G4bool G4ExcitationHandler::isEvapLocal
private

Definition at line 145 of file G4ExcitationHandler.hh.

Referenced by SetEvaporation(), and ~G4ExcitationHandler().

◆ isInitialised

G4bool G4ExcitationHandler::isInitialised
private

Definition at line 144 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and Initialise().

◆ maxAForFermiBreakUp

G4int G4ExcitationHandler::maxAForFermiBreakUp
private

Definition at line 135 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and SetMaxAForFermiBreakUp().

◆ maxExcitation

G4double G4ExcitationHandler::maxExcitation
private

Definition at line 142 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and SetParameters().

◆ maxZForFermiBreakUp

G4int G4ExcitationHandler::maxZForFermiBreakUp
private

Definition at line 134 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and SetMaxZForFermiBreakUp().

◆ minEForMultiFrag

G4double G4ExcitationHandler::minEForMultiFrag
private

Definition at line 140 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), SetMinEForMultiFrag(), and SetParameters().

◆ minExcitation

G4double G4ExcitationHandler::minExcitation
private

Definition at line 141 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), SetParameters(), and SortSecondaryFragment().

◆ nist

G4NistManager* G4ExcitationHandler::nist
private

Definition at line 122 of file G4ExcitationHandler.hh.

Referenced by G4ExcitationHandler(), and SortSecondaryFragment().

◆ results

std::vector<G4Fragment*> G4ExcitationHandler::results
private

Definition at line 152 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theAlpha

const G4ParticleDefinition* G4ExcitationHandler::theAlpha
private

Definition at line 130 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theDeuteron

const G4ParticleDefinition* G4ExcitationHandler::theDeuteron
private

Definition at line 127 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theElectron

const G4ParticleDefinition* G4ExcitationHandler::theElectron
private

Definition at line 124 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theEvapList

std::vector<G4Fragment*> G4ExcitationHandler::theEvapList
private

Definition at line 155 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), G4ExcitationHandler(), and SortSecondaryFragment().

◆ theEvaporation

G4VEvaporation* G4ExcitationHandler::theEvaporation
private

◆ theFermiModel

G4VFermiBreakUp* G4ExcitationHandler::theFermiModel
private

◆ theHe3

const G4ParticleDefinition* G4ExcitationHandler::theHe3
private

Definition at line 129 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theMultiFragmentation

G4VMultiFragmentation* G4ExcitationHandler::theMultiFragmentation
private

◆ theNeutron

const G4ParticleDefinition* G4ExcitationHandler::theNeutron
private

Definition at line 125 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ thePhotonEvaporation

G4VEvaporationChannel* G4ExcitationHandler::thePhotonEvaporation
private

◆ theProton

const G4ParticleDefinition* G4ExcitationHandler::theProton
private

Definition at line 126 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theResults

std::vector<G4Fragment*> G4ExcitationHandler::theResults
private

Definition at line 149 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), G4ExcitationHandler(), and SortSecondaryFragment().

◆ theTableOfIons

G4IonTable* G4ExcitationHandler::theTableOfIons
private

Definition at line 121 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().

◆ theTriton

const G4ParticleDefinition* G4ExcitationHandler::theTriton
private

Definition at line 128 of file G4ExcitationHandler.hh.

Referenced by BreakItUp(), and G4ExcitationHandler().


The documentation for this class was generated from the following files: