|
Celeritas 0.7.0-dev.170+develop.df22d2a88
|
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, Options const &options) | |
| 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.