Celeritas 0.7.0-dev.79+develop.b3dc2e108
|
Recursively build ORANGE proto-universes from a LogicalVolume
.
More...
#include <ProtoConstructor.hh>
Public Types | |
Type aliases | |
using | SPConstObject = std::shared_ptr< orangeinp::ObjectInterface const > |
using | ObjLv = std::pair< SPConstObject, LogicalVolume const * > |
using | SPUnitProto = std::shared_ptr< UnitProto > |
Public Member Functions | |
ProtoConstructor (VolumeParams const &vols, bool verbose) | |
Construct with verbosity setting. | |
SPUnitProto | operator() (LogicalVolume const &) |
Construct a proto-universe from a physical volume. | |
Recursively build ORANGE proto-universes from a LogicalVolume
.
The input to this function is the output of LogicalVolumeConverter
. This class is responsible for "placing" the converted PhysicalVolume
by transforming its children. Depending on heuristics, the children are directly inserted into a UnitProto
as volumes (specifically, the logical volume becomes a UnitProto::MaterialInput
), or a LogicalVolume
is turned into a new UnitProto
that can be used in multiple locations.
Both "material" entries and "daughter" entries are labeled with the corresponding VolumeInstanceId
. Multiple levels of volumes in the geometry hierarchy can be expanded into a single proto, so the local_parent
field is set for every "material" entry created: the enclosing material entry ID normally, or an empty material entry if the volume is placed directly in the "background".
auto celeritas::g4org::ProtoConstructor::operator() | ( | LogicalVolume const & | lv | ) |
Construct a proto-universe from a physical volume.
We can use logical volume for the structure, but we need to associate the world physical volume ID.