67 static G4int instanceCount = 0;
73 : _energy(0.), _halfLife(0.), _angularMomentum(0.), _nGammas(0) {
79 : _energy(energy), _halfLife(halfLife), _angularMomentum(angularMomentum),
86 const std::vector<G4double>& eGamma,
87 const std::vector<G4double>& wGamma,
88 const std::vector<G4double>& polarities,
89 const std::vector<G4double>& kCC,
const std::vector<G4double>& l1CC,
90 const std::vector<G4double>& l2CC,
const std::vector<G4double>& l3CC,
91 const std::vector<G4double>& m1CC,
const std::vector<G4double>& m2CC,
92 const std::vector<G4double>& m3CC,
const std::vector<G4double>& m4CC,
93 const std::vector<G4double>& m5CC,
const std::vector<G4double>& nPlusCC,
94 const std::vector<G4double>& totalCC)
96 : _energies(eGamma), _weights(wGamma), _polarities(polarities),
97 _kCC(kCC), _l1CC(l1CC), _l2CC(l2CC), _l3CC(l3CC),
98 _m1CC(m1CC), _m2CC(m2CC), _m3CC(m3CC), _m4CC(m4CC), _m5CC(m5CC),
99 _nPlusCC(nPlusCC), _totalCC(totalCC),
100 _energy(energy), _halfLife(halfLife), _angularMomentum(angularMomentum)
124 if (_energy < right.
Energy())
return true;
218 return _angularMomentum;
234 G4cout <<
"---- Level energy = " << _energy <<
", angular momentum = "
235 << _angularMomentum <<
", half life " << _halfLife
236 <<
", " << _nGammas <<
" photons" <<
G4endl;
239 for (i=0; i<_nGammas; i++) {
G4cout << _energies[i] <<
" "; }
241 for (i=0; i<_nGammas; i++) {
G4cout << _weights[i] <<
" "; }
242 G4cout <<
G4endl <<
" Relative transition probabilities ";
243 for (i=0; i<_nGammas; i++) {
G4cout << _prob[i] <<
" "; }
245 for (i=0; i<_nGammas; i++) {
G4cout << _cumProb[i] <<
" "; }
247 for (i=0; i<_nGammas; i++) {
G4cout << _polarities[i] <<
" "; }
254void G4NuclearLevel::Finalize() {
255 _nGammas = _energies.size();
261void G4NuclearLevel::MakeProbabilities()
265 for (i=0; i<_nGammas; i++) {
266 sum += _weights[i]*(1.+_totalCC[i]);
269 if (sum <= 0.) _prob.resize(_nGammas, 1./_nGammas);
271 _prob.reserve(_nGammas);
272 for (i=0; i<_nGammas; i++) {
273 _prob.push_back(_weights[i]*(1.+_totalCC[i])/sum);
279void G4NuclearLevel::MakeCumProb()
281 if (_nGammas <= 0)
return;
283 _cumProb.reserve(_nGammas);
286 _cumProb.push_back(sum);
288 for (
G4int i=1; i<_nGammas; i++) {
290 _cumProb.push_back(sum);
298 _energies = right._energies;
299 _weights =right._weights;
301 _cumProb =right._cumProb;
302 _polarities =right._polarities;
312 _nPlusCC = right._nPlusCC;
313 _totalCC = right._totalCC;
314 _energy = right._energy;
315 _halfLife = right._halfLife;
316 _angularMomentum = right._angularMomentum;
317 _nGammas = right._nGammas;
324 _energies = right._energies;
325 _weights =right._weights;
327 _cumProb =right._cumProb;
328 _polarities =right._polarities;
338 _nPlusCC = right._nPlusCC;
339 _totalCC = right._totalCC;
340 _energy = right._energy;
341 _halfLife = right._halfLife;
342 _angularMomentum = right._angularMomentum;
343 _nGammas = right._nGammas;
G4DLLIMPORT std::ostream G4cout
const std::vector< G4double > & M4ConvertionProbabilities() const
G4NuclearLevel(G4double energy, G4double halfLife, G4double angularMomentum, const std::vector< G4double > &eGamma, const std::vector< G4double > &wGamma, const std::vector< G4double > &polarities, const std::vector< G4double > &kCC, const std::vector< G4double > &l1CC, const std::vector< G4double > &l2CC, const std::vector< G4double > &l3CC, const std::vector< G4double > &m1CC, const std::vector< G4double > &m2CC, const std::vector< G4double > &m3CC, const std::vector< G4double > &m4CC, const std::vector< G4double > &m5CC, const std::vector< G4double > &nPlusCC, const std::vector< G4double > &totalCC)
const std::vector< G4double > & GammaEnergies() const
G4double HalfLife() const
const std::vector< G4double > & M1ConvertionProbabilities() const
const std::vector< G4double > & L3ConvertionProbabilities() const
G4double AngularMomentum() const
const std::vector< G4double > & L1ConvertionProbabilities() const
G4NuclearLevel & operator=(const G4NuclearLevel &right)
const std::vector< G4double > & M5ConvertionProbabilities() const
const std::vector< G4double > & GammaWeights() const
const std::vector< G4double > & GammaProbabilities() const
const std::vector< G4double > & L2ConvertionProbabilities() const
const std::vector< G4double > & GammaCumulativeProbabilities() const
const std::vector< G4double > & TotalConvertionProbabilities() const
G4bool operator!=(const G4NuclearLevel &right) const
const std::vector< G4double > & GammaPolarities() const
const std::vector< G4double > & NPlusConvertionProbabilities() const
G4int NumberOfGammas() const
const std::vector< G4double > & KConvertionProbabilities() const
G4bool operator==(const G4NuclearLevel &right) const
const std::vector< G4double > & M3ConvertionProbabilities() const
const std::vector< G4double > & M2ConvertionProbabilities() const
G4bool operator<(const G4NuclearLevel &right) const