31#ifndef G4FERMIFRAGMENTPOOLAN_HH
32#define G4FERMIFRAGMENTPOOLAN_HH
38class G4FermiFragmentPoolAN
41 using Container = std::vector<const G4VFermiFragmentAN*>;
47 using PoolANContainer = std::vector<G4VFermiFragmentAN*>;
54 using PoolANContainer::begin;
55 using PoolANContainer::cbegin;
56 using PoolANContainer::cend;
57 using PoolANContainer::end;
79 return Count(nuclei.atomicMass, nuclei.chargeNumber);
87 return GetFragments(nuclei.atomicMass, nuclei.chargeNumber);
90 template<
typename DataSource>
93 Initialize(dataSource.begin(), dataSource.end());
96 template<
typename Iter>
103 for (
auto it = begin; it != end; ++it) {
112 static G4FermiFragmentPoolAN pool;
119 static inline const Container EmptyContainer_ = {};
121 std::vector<Container> fragments_;
const_iterator end() const
const_iterator begin() const
Container::const_iterator const_iterator
IteratorRange(const_iterator begin, const_iterator end)
IteratorRange GetFragments(G4FermiAtomicMass atomicMass, G4FermiChargeNumber chargeNumber) const
IteratorRange GetFragments(G4FermiNucleiData nuclei) const
std::size_t Count(G4FermiAtomicMass atomicMass, G4FermiChargeNumber chargeNumber) const
void Initialize(Iter begin, Iter end)
void Initialize(const DataSource &dataSource)
static G4FermiFragmentPoolAN & Instance()
void AddFragment(const G4VFermiFragmentAN &fragment)
std::size_t Count(G4FermiNucleiData nuclei) const