Celeritas 0.6.0-dev.116+3fbab5e0
|
#include "GeantGeoUtils.hh"
#include <algorithm>
#include <iostream>
#include <string>
#include <string_view>
#include <unordered_map>
#include <unordered_set>
#include <G4Element.hh>
#include <G4GDMLParser.hh>
#include <G4Isotope.hh>
#include <G4LogicalVolume.hh>
#include <G4LogicalVolumeStore.hh>
#include <G4Material.hh>
#include <G4NavigationHistory.hh>
#include <G4PhysicalVolumeStore.hh>
#include <G4ReflectionFactory.hh>
#include <G4RegionStore.hh>
#include <G4SolidStore.hh>
#include <G4Threading.hh>
#include <G4TouchableHistory.hh>
#include <G4TransportationManager.hh>
#include <G4VPhysicalVolume.hh>
#include <G4Version.hh>
#include <G4ios.hh>
#include "corecel/Assert.hh"
#include "corecel/cont/Range.hh"
#include "corecel/io/Join.hh"
#include "corecel/io/Logger.hh"
#include "corecel/io/ScopedStreamRedirect.hh"
#include "corecel/io/ScopedTimeLog.hh"
#include "corecel/math/Algorithms.hh"
#include "corecel/sys/ScopedMem.hh"
#include "orange/g4org/Converter.hh"
#include "ScopedGeantExceptionHandler.hh"
#include "ScopedGeantLogger.hh"
#include "g4/VisitVolumes.hh"
#include "detail/MakeLabelVector.hh"
Functions | |
std::ostream & | celeritas::operator<< (std::ostream &os, PrintableNavHistory const &pnh) |
Print detailed information about the touchable history. | |
std::ostream & | celeritas::operator<< (std::ostream &os, PrintableLV const &plv) |
Print the logical volume name, ID, and address. | |
G4VPhysicalVolume * | celeritas::load_geant_geometry_native (std::string const &filename) |
Load a Geant4 geometry, stripping suffixes like a typical Geant4 app. | |
void | celeritas::write_geant_geometry (G4VPhysicalVolume const *world, std::string const &out_filename) |
Write a GDML file to the given filename. | |
void | celeritas::reset_geant_geometry () |
Reset all Geant4 geometry stores if not using RunManager. | |
Span< G4LogicalVolume * > | celeritas::geant_logical_volumes () |
Get a view to the Geant4 LV store. | |
G4VPhysicalVolume const * | celeritas::geant_world_volume () |
Get the world volume for the primary geometry. | |
std::unordered_set< G4LogicalVolume const * > | celeritas::find_geant_volumes (std::unordered_set< std::string > names) |
Find Geant4 logical volumes corresponding to a list of names. | |
std::vector< Label > | celeritas::make_logical_vol_labels (G4VPhysicalVolume const &world) |
Get a reproducible vector of LV instance ID -> label from the given world. | |
std::vector< Label > | celeritas::make_physical_vol_labels (G4VPhysicalVolume const &world) |
Get a reproducible vector of PV instance ID -> label from the given world. | |
void | celeritas::set_history (Span< G4VPhysicalVolume const * > stack, G4NavigationHistory *nav) |
Update a nav history to match the given pv stack. | |
|
inline |
Find Geant4 logical volumes corresponding to a list of names.
If logical volumes with duplicate names are present, they will all show up in the output and a warning will be emitted. If one is missing, a RuntimeError
will be raised.
|
inline |
Get a view to the Geant4 LV store.
This includes all volumes, potentially null ones as well.
G4VPhysicalVolume const * celeritas::geant_world_volume | ( | ) |
Get the world volume for the primary geometry.
|
inline |
Load a Geant4 geometry, stripping suffixes like a typical Geant4 app.
With this implementation, we let Geant4 strip the uniquifying pointers, which allows our application to construct its own based on the actual in-memory addresses.
|
inline |
Print detailed information about the touchable history.
For brevity, this does not print the world volume.
|
inline |
Reset all Geant4 geometry stores if not using RunManager.
Use this function if reading geometry and cleaning up without doing any transport in between (useful for geometry conversion testing).
void celeritas::set_history | ( | Span< G4VPhysicalVolume const * > | stack, |
G4NavigationHistory * | nav | ||
) |
Update a nav history to match the given pv stack.
LevelId
, i.e. the initial entry is the "most global" level.