diff --git a/Documentation/Examples/cascade_example.cc b/Documentation/Examples/cascade_example.cc index f9d1e95a83aa38ed0475c06850698d2b867f6f99..1b40607c2ec086f8bfbb45815c6e5f5c0fdfe7b0 100644 --- a/Documentation/Examples/cascade_example.cc +++ b/Documentation/Examples/cascade_example.cc @@ -245,6 +245,22 @@ int main() { universe.AddChild(std::move(theMedium)); + auto const allElementsInUniverse = std::invoke([&]() { + std::set<particles::Code> allElementsInUniverse; + auto collectElements = [&](auto& vtn) { + if (auto const mp = vtn.GetModelPropertiesPtr(); + mp != nullptr) { // do not query Universe it self, it has no ModelProperties + auto const& comp = mp->GetNuclearComposition().GetComponents(); + std::for_each(comp.cbegin(), comp.cend(), + [&](particles::Code c) { allElementsInUniverse.insert(c); }); + } + }; + universe.walk(collectElements); + return allElementsInUniverse; + }); + + for (auto elem : allElementsInUniverse) { std::cout << elem << std::endl; } + const CoordinateSystem& rootCS = env.GetCoordinateSystem(); // setup processes, decays and interactions