65 : theChannels(0),nChannels(0)
75 : theChannels(0),nChannels(0)
95 for (
size_t i=1; i<
nChannels; ++i) {
delete (*theChannels)[i]; }
120 (*theChannels)[i]->SetOPTxs(
OPTxs);
121 (*theChannels)[i]->UseSICB(
useSICB);
149 if(0 <
nChannels) { (*theChannels)[0] = ptr; }
161 G4double totprob, prob, oldprob = 0.0;
162 size_t maxchannel, i;
168 for(
G4int ia=0; ia<Amax; ++ia) {
176 theResult->push_back(theResidualNucleus);
190 if(Eex <= minExcitation && abun > 0.0) {
191 theResult->push_back(theResidualNucleus);
203 prob = (*theChannels)[i]->GetEmissionProbability(theResidualNucleus);
210 if(prob <= totprob*1.e-8 && oldprob <= totprob*1.e-8) {
217 if(7 == i && Eex > Elimit*A) {
227 theTempResult = (*theChannels)[0]->BreakUpFragment(theResidualNucleus);
229 size_t nsec = theTempResult->size();
230 for(
size_t j=0; j<nsec; ++j) {
231 theResult->push_back((*theTempResult)[j]);
233 delete theTempResult;
242 if(0.0 == abun && Z < 20) {
246 size_t nsec = theTempResult->size();
247 for(
size_t j=0; j<nsec; ++j) {
248 theResult->push_back((*theTempResult)[j]);
250 delete theTempResult;
255 theResult->push_back(theResidualNucleus);
262 for(i=0; i<maxchannel; ++i) {
if(
probabilities[i] >= totprob) {
break; } }
265 if(i >= nChannels) { i = nChannels - 1; }
271 G4Fragment* gamma = (*theChannels)[0]->EmittedFragment(theResidualNucleus);
272 if(gamma) { theResult->push_back(gamma); }
277 theTempResult = (*theChannels)[1]->BreakUp(*theResidualNucleus);
279 size_t nsec = theTempResult->size();
280 G4bool deletePrimary =
true;
281 for(
size_t j=0; j<nsec; ++j) {
282 if(theResidualNucleus == (*theTempResult)[j]) { deletePrimary =
false; }
283 theResult->push_back((*theTempResult)[j]);
285 if(deletePrimary) {
delete theResidualNucleus; }
286 delete theTempResult;
293 theTempResult = (*theChannels)[i]->BreakUp(*theResidualNucleus);
295 size_t nsec = theTempResult->size();
298 for(
size_t j=0; j<nsec; ++j) {
299 theResult->push_back((*theTempResult)[j]);
303 if(theResidualNucleus != (*theTempResult)[nsec] ) {
304 delete theResidualNucleus;
305 theResidualNucleus = (*theTempResult)[nsec];
308 delete theTempResult;
314 theResult->push_back(theResidualNucleus);
G4FragmentVector * BreakItUp(const G4Fragment &theNucleus)
virtual std::vector< G4VEvaporationChannel * > * GetChannel()=0
virtual void SetPhotonEvaporation(G4VEvaporationChannel *ptr)
virtual void Initialise()
std::vector< G4double > probabilities
G4VEvaporationChannel * thePhotonEvaporation
std::vector< G4VEvaporationChannel * > * theChannels
static G4NistManager * Instance()
virtual G4FragmentVector * BreakUpFragment(G4Fragment *fragment)
G4IonTable * GetIonTable() const
std::vector< G4Fragment * > G4FragmentVector
G4IonTable * theTableOfIons
G4double GetIsotopeAbundance(G4int Z, G4int N) const
static const G4double A[nN]
void SetCombinedChannel()
G4VEvaporationFactory * theChannelFactory
static G4ParticleTable * GetParticleTable()
void InitialiseEvaporation()
virtual void SetPhotonEvaporation(G4VEvaporationChannel *ptr)
G4UnstableFragmentBreakUp unstableBreakUp
static G4FermiFragmentsPool * Instance()
G4double GetExcitationEnergy() const