108{
109 if (isInitialized) { return; }
110 isInitialized = true;
113 fTolerance = 2*CLHEP::eV;
115
116 fragment_pool.reserve(991);
117
118
122 fragment_pool.push_back(
new G4FermiFragment(3, 1, 1, 0.0, 3.8879e+08));
125 fragment_pool.push_back(
new G4FermiFragment(5, 2, 3, 0.0, 7.0325e-22));
126 fragment_pool.push_back(
new G4FermiFragment(5, 3, 3, 0.0, 3.70493e-22));
127
128
130 for (
G4int Z=1; Z<maxZ; ++Z) {
135 if (nullptr != man) {
137 for(std::size_t i=0; i<=
nn; ++i) {
139
140
141
142
143
144
145 if (exc >= fElim) { continue; }
146
147 if (IsInThePool(Z,
A, exc)) {
continue; }
150 }
151 }
152 }
153 }
155 for (auto const& f : fragment_pool) {
158 if (list_c[Z][
A] ==
nullptr) {
159 list_c[Z][
A] =
new std::vector<G4FermiChannels*>;
160 }
162 }
163
164
165 for (
G4int i=0; i<nfrag; ++i) {
170 for (
G4int j=0; j<nfrag; ++j) {
174 if(A2 < A1 || (A2 == A1 && Z2 < Z1)) { continue; }
177
178 if(Z >= maxZ ||
A >= maxA) {
continue; }
179
183
184
185
186
187
188
189
190
191
192
193
194
195 if (exc > fElim) { continue; }
196 auto chan = list_c[Z][
A];
197 if (nullptr == chan) { continue; }
198 std::size_t kmax = chan->size();
199 for (std::size_t k=0; k<kmax; ++k) {
200 auto ch = (*chan)[k];
202 auto f0 = ch->GetFragment();
206 if (e0 >= minE + cb) {
208 }
209 }
210 }
211 }
212 }
213
215 for (
G4int Z=0; Z<maxZ; ++Z) {
216 auto chan = list_c[Z][
A];
217 if(nullptr == chan) { continue; }
218 std::size_t kmax = chan->size();
219 for (std::size_t k=0; k<kmax; ++k) {
220 auto ch = (*chan)[k];
221 auto frag = ch->GetFragment();
222 std::size_t nch = ch->NumberPairs();
223 if (1 < nch) {
224 const std::vector<G4FermiPair*>& pairs = ch->GetChannels();
226 for (std::size_t i=0; i<nch; ++i) {
228 pairs[i]->GetFragment1(),
229 pairs[i]->GetFragment2(),
230 frag->GetTotalEnergy(),
231 frag->GetExcitationEnergy());
232 pairs[i]->SetProbability(ptot);
233 }
234
235 if (0.0 == ptot) {
236 pairs[0]->SetProbability(1.0);
237 } else {
238 ptot = 1./ptot;
239 for (std::size_t i=0; i<nch-1; ++i) {
240 G4double x = ptot*pairs[i]->Probability();
241 pairs[i]->SetProbability(x);
242 }
243 pairs[nch - 1]->SetProbability(1.0);
244 }
245 }
246 }
247 }
248 }
249}
G4double GetFBUEnergyLimit() const
G4double GetTotalEnergy(void) const
G4double LevelEnergy(const std::size_t i) const
std::size_t NumberOfTransitions() const
G4double LifeTime(const std::size_t i) const
G4int TwoSpinParity(const std::size_t i) const
G4DeexPrecoParameters * GetParameters()
G4int GetMinA(G4int Z) const
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
static G4NuclearLevelData * GetInstance()
G4int GetMaxA(G4int Z) const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4bool CheckSpinParity(const G4FermiFragment *f1, const G4FermiFragment *f2, const G4FermiFragment *f3)
G4double CoulombBarrier(const G4int Z1, const G4int A1, const G4int Z2, const G4int A2, const G4double exc)
G4double Probability(const G4int A, const G4FermiFragment *f1, const G4FermiFragment *f2, const G4double mass, const G4double exc)