Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4InuclEvaporation Class Reference

#include <G4InuclEvaporation.hh>

Inheritance diagram for G4InuclEvaporation:
G4VEvaporation

Public Member Functions

virtual void BreakFragment (G4FragmentVector *, G4Fragment *theNucleus)
 
G4FragmentVectorBreakItUp (const G4Fragment &theNucleus)
 
 G4InuclEvaporation ()
 
G4VFermiBreakUpGetFermiBreakUp () const
 
G4VEvaporationChannelGetFissionChannel ()
 
size_t GetNumberOfChannels () const
 
G4VEvaporationChannelGetPhotonEvaporation ()
 
virtual void InitialiseChannels ()
 
void SetFermiBreakUp (G4VFermiBreakUp *ptr)
 
void SetOPTxs (G4int opt)
 
virtual void SetPhotonEvaporation (G4VEvaporationChannel *ptr)
 
void setVerboseLevel (const G4int verbose)
 
void UseSICB (G4bool use)
 
 ~G4InuclEvaporation ()
 

Protected Member Functions

void CleanChannels ()
 

Protected Attributes

G4int OPTxs
 
G4VEvaporationFactorytheChannelFactory
 
std::vector< G4VEvaporationChannel * > * theChannels
 
G4VFermiBreakUptheFBU
 
G4VEvaporationChannelthePhotonEvaporation
 
G4bool useSICB
 

Private Member Functions

 G4InuclEvaporation (const G4InuclEvaporation &right)
 
G4bool operator!= (const G4InuclEvaporation &right) const
 
const G4InuclEvaporationoperator= (const G4InuclEvaporation &right)
 
G4bool operator== (const G4InuclEvaporation &right) const
 

Private Attributes

G4EvaporationInuclColliderevaporator
 
G4int verboseLevel
 

Detailed Description

Definition at line 43 of file G4InuclEvaporation.hh.

Constructor & Destructor Documentation

◆ G4InuclEvaporation() [1/2]

G4InuclEvaporation::G4InuclEvaporation ( )

◆ ~G4InuclEvaporation()

G4InuclEvaporation::~G4InuclEvaporation ( )

Definition at line 79 of file G4InuclEvaporation.cc.

79 {
80 delete evaporator;
81}

References evaporator.

◆ G4InuclEvaporation() [2/2]

G4InuclEvaporation::G4InuclEvaporation ( const G4InuclEvaporation right)
private

Definition at line 75 of file G4InuclEvaporation.cc.

75 : G4VEvaporation() {
76 throw G4HadronicException(__FILE__, __LINE__, "G4InuclEvaporation::copy_constructor meant to not be accessible.");
77}

Member Function Documentation

◆ BreakFragment()

void G4VEvaporation::BreakFragment ( G4FragmentVector ,
G4Fragment theNucleus 
)
virtualinherited

Reimplemented in G4Evaporation.

Definition at line 75 of file G4VEvaporation.cc.

76{}

Referenced by G4ExcitationHandler::BreakItUp().

◆ BreakItUp()

G4FragmentVector * G4InuclEvaporation::BreakItUp ( const G4Fragment theNucleus)

Definition at line 100 of file G4InuclEvaporation.cc.

100 {
101 G4FragmentVector* theResult = new G4FragmentVector;
102
103 if (theNucleus.GetExcitationEnergy() <= 0.0) { // Check that Excitation Energy > 0
104 theResult->push_back(new G4Fragment(theNucleus));
105 return theResult;
106 }
107
108 G4int A = theNucleus.GetA_asInt();
109 G4int Z = theNucleus.GetZ_asInt();
110 G4double mTar = G4NucleiProperties::GetNuclearMass(A, Z); // Mass of the target nucleus
111
112 G4ThreeVector momentum = theNucleus.GetMomentum().vect();
113 G4double exitationE = theNucleus.GetExcitationEnergy();
114
115 G4double mass = mTar;
116 G4ThreeVector boostToLab( momentum/mass );
117
118 if ( verboseLevel > 2 )
119 G4cout << " G4InuclEvaporation : initial kinematics : boostToLab vector = " << boostToLab << G4endl
120 << " excitation energy : " << exitationE << G4endl;
121
122 if (verboseLevel > 2) {
123 G4cout << "G4InuclEvaporation::BreakItUp >>> A: " << A << " Z: " << Z
124 << " exitation E: " << exitationE << " mass: " << mTar/GeV << " GeV"
125 << G4endl;
126 };
127
128 G4InuclNuclei* nucleus = new G4InuclNuclei(A, Z);
129 nucleus->setExitationEnergy(exitationE);
130
131 G4CollisionOutput output;
132 evaporator->collide(0, nucleus, output);
133
134 const std::vector<G4InuclNuclei>& outgoingNuclei = output.getOutgoingNuclei();
135 const std::vector<G4InuclElementaryParticle>& particles = output.getOutgoingParticles();
136
137 G4int i=1;
138
139 if (!particles.empty()) {
140 G4int outgoingType;
141 particleIterator ipart = particles.cbegin();
142 for (; ipart != particles.cend(); ++ipart) {
143 outgoingType = ipart->type();
144
145 if (verboseLevel > 2) {
146 G4cout << "Evaporated particle: " << i << " of type: "
147 << outgoingType << G4endl;
148 ++i;
149 }
150
151 G4LorentzVector vlab = ipart->getMomentum().boost(boostToLab);
152
153 // TEMPORARY: Remove constness on PD until G4Fragment is fixed
154 theResult->push_back( new G4Fragment(vlab, ipart->getDefinition()) );
155 }
156 }
157
158 if (!outgoingNuclei.empty()) {
159 nucleiIterator ifrag = outgoingNuclei.cbegin();
160 for (i=1; ifrag != outgoingNuclei.cend(); ++ifrag) {
161 if (verboseLevel > 2) {
162 G4cout << " Nuclei fragment: " << i << G4endl; ++i;
163 }
164
165 G4LorentzVector vlab = ifrag->getMomentum().boost(boostToLab);
166
167 G4int fragA = ifrag->getA();
168 G4int fragZ = ifrag->getZ();
169 if (verboseLevel > 2) {
170 G4cout << "boosted v" << vlab << G4endl;
171 }
172 theResult->push_back( new G4Fragment(fragA, fragZ, vlab) );
173 }
174 }
175
176 return theResult;
177}
std::vector< G4InuclElementaryParticle >::iterator particleIterator
Definition: G4BigBanger.cc:64
std::vector< G4InuclNuclei >::const_iterator nucleiIterator
std::vector< G4Fragment * > G4FragmentVector
Definition: G4Fragment.hh:64
static constexpr double GeV
Definition: G4SIunits.hh:203
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
HepLorentzVector & boost(double, double, double)
Hep3Vector vect() const
const std::vector< G4InuclNuclei > & getOutgoingNuclei() const
const std::vector< G4InuclElementaryParticle > & getOutgoingParticles() const
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:299
const G4LorentzVector & GetMomentum() const
Definition: G4Fragment.hh:323
G4int GetZ_asInt() const
Definition: G4Fragment.hh:276
G4int GetA_asInt() const
Definition: G4Fragment.hh:271
void setExitationEnergy(G4double e)
static G4double GetNuclearMass(const G4double A, const G4double Z)
virtual void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)

References A, CLHEP::HepLorentzVector::boost(), G4VCascadeDeexcitation::collide(), evaporator, G4cout, G4endl, G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4Fragment::GetMomentum(), G4NucleiProperties::GetNuclearMass(), G4CollisionOutput::getOutgoingNuclei(), G4CollisionOutput::getOutgoingParticles(), CLHEP::HepLorentzVector::getZ(), G4Fragment::GetZ_asInt(), GeV, G4InuclNuclei::setExitationEnergy(), CLHEP::HepLorentzVector::vect(), verboseLevel, and Z.

◆ CleanChannels()

void G4VEvaporation::CleanChannels ( )
protectedinherited

Definition at line 49 of file G4VEvaporation.cc.

50{
51 // clean all except photon evaporation
52 if(theChannels) {
53 for (size_t i=1; i<theChannels->size(); ++i) {
54 delete (*theChannels)[i];
55 }
56 delete theChannels;
57 theChannels = nullptr;
58 }
59}
std::vector< G4VEvaporationChannel * > * theChannels

References G4VEvaporation::theChannels.

Referenced by G4Evaporation::SetCombinedChannel(), G4Evaporation::SetDefaultChannel(), G4Evaporation::SetGEMChannel(), G4Evaporation::SetGEMVIChannel(), and G4VEvaporation::~G4VEvaporation().

◆ GetFermiBreakUp()

G4VFermiBreakUp * G4VEvaporation::GetFermiBreakUp ( ) const
inlineinherited

Definition at line 108 of file G4VEvaporation.hh.

109{
110 return theFBU;
111}
G4VFermiBreakUp * theFBU

References G4VEvaporation::theFBU.

◆ GetFissionChannel()

G4VEvaporationChannel * G4VEvaporation::GetFissionChannel ( )
inlineinherited

Definition at line 118 of file G4VEvaporation.hh.

119{
120 return (theChannels && theChannels->size() > 1) ? (*theChannels)[1] : nullptr;
121}

References G4VEvaporation::theChannels.

Referenced by G4INCLXXInterface::G4INCLXXInterface().

◆ GetNumberOfChannels()

size_t G4VEvaporation::GetNumberOfChannels ( ) const
inlineinherited

Definition at line 133 of file G4VEvaporation.hh.

134{
135 return theChannels ? theChannels->size() : 0;
136}

References G4VEvaporation::theChannels.

Referenced by G4ExcitationHandler::SetDeexChannelsType().

◆ GetPhotonEvaporation()

G4VEvaporationChannel * G4VEvaporation::GetPhotonEvaporation ( )
inlineinherited

Definition at line 113 of file G4VEvaporation.hh.

114{
116}
G4VEvaporationChannel * thePhotonEvaporation

References G4VEvaporation::thePhotonEvaporation.

Referenced by G4ExcitationHandler::SetEvaporation().

◆ InitialiseChannels()

void G4VEvaporation::InitialiseChannels ( )
virtualinherited

Reimplemented in G4Evaporation.

Definition at line 61 of file G4VEvaporation.cc.

62{}

Referenced by G4ExcitationHandler::Initialise().

◆ operator!=()

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

Definition at line 92 of file G4InuclEvaporation.cc.

92 {
93 return true;
94}

◆ operator=()

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

Definition at line 83 of file G4InuclEvaporation.cc.

83 {
84 throw G4HadronicException(__FILE__, __LINE__, "G4InuclEvaporation::operator= meant to not be accessible.");
85}

◆ operator==()

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

Definition at line 88 of file G4InuclEvaporation.cc.

88 {
89 return false;
90}

◆ SetFermiBreakUp()

void G4VEvaporation::SetFermiBreakUp ( G4VFermiBreakUp ptr)
inlineinherited

Definition at line 103 of file G4VEvaporation.hh.

104{
105 theFBU = ptr;
106}

References G4VEvaporation::theFBU.

Referenced by G4ExcitationHandler::SetEvaporation(), and G4ExcitationHandler::SetFermiModel().

◆ SetOPTxs()

void G4VEvaporation::SetOPTxs ( G4int  opt)
inlineinherited

Definition at line 123 of file G4VEvaporation.hh.

124{
125 OPTxs = opt;
126}

References G4VEvaporation::OPTxs.

◆ SetPhotonEvaporation()

void G4VEvaporation::SetPhotonEvaporation ( G4VEvaporationChannel ptr)
virtualinherited

Definition at line 64 of file G4VEvaporation.cc.

65{
66 // photon evaporation channel is the first
67 // G4VEvaporation is responsible for its deletion
68 if(thePhotonEvaporation != ptr) {
71 if(theChannels && 0 < theChannels->size()) { (*theChannels)[0] = ptr; }
72 }
73}

References G4VEvaporation::theChannels, and G4VEvaporation::thePhotonEvaporation.

Referenced by G4Evaporation::G4Evaporation(), and G4ExcitationHandler::SetPhotonEvaporation().

◆ setVerboseLevel()

void G4InuclEvaporation::setVerboseLevel ( const G4int  verbose)

Definition at line 96 of file G4InuclEvaporation.cc.

96 {
97 verboseLevel = verbose;
98}

References verboseLevel.

◆ UseSICB()

void G4VEvaporation::UseSICB ( G4bool  use)
inlineinherited

Definition at line 128 of file G4VEvaporation.hh.

129{
130 useSICB = use;
131}

References G4VEvaporation::useSICB.

Field Documentation

◆ evaporator

G4EvaporationInuclCollider* G4InuclEvaporation::evaporator
private

Definition at line 62 of file G4InuclEvaporation.hh.

Referenced by BreakItUp(), and ~G4InuclEvaporation().

◆ OPTxs

G4int G4VEvaporation::OPTxs
protectedinherited

◆ theChannelFactory

G4VEvaporationFactory* G4VEvaporation::theChannelFactory
protectedinherited

◆ theChannels

std::vector<G4VEvaporationChannel*>* G4VEvaporation::theChannels
protectedinherited

◆ theFBU

G4VFermiBreakUp* G4VEvaporation::theFBU
protectedinherited

◆ thePhotonEvaporation

G4VEvaporationChannel* G4VEvaporation::thePhotonEvaporation
protectedinherited

◆ useSICB

G4bool G4VEvaporation::useSICB
protectedinherited

◆ verboseLevel

G4int G4InuclEvaporation::verboseLevel
private

Definition at line 61 of file G4InuclEvaporation.hh.

Referenced by BreakItUp(), and setVerboseLevel().


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