4#include <gemc/guts/gutilities.h>
5#include <gemc/gbase/gbase.h>
61 const std::string& system,
62 std::vector<std::string> pars,
63 std::optional<std::string> importPath = std::nullopt);
75 explicit GVolume(
const std::string& rootVolumeDefinition,
const std::shared_ptr<GLogger>&
log);
85 [[nodiscard]]
virtual std::unique_ptr<GVolume>
clone()
const {
86 return std::make_unique<GVolume>(*
this);
95 std::string motherName;
96 std::string description;
97 std::optional<std::string> importFilename;
101 std::optional<std::string> parameters;
110 std::string material;
111 std::optional<std::string> emfield;
116 std::string g4placementType;
117 std::optional<std::string> shift;
118 std::optional<std::string> tilt;
121 std::optional<std::string> digitization;
122 std::optional<std::string> gidentity;
125 std::optional<std::string> copyOf;
126 std::optional<std::string> solidsOpr;
131 std::optional<std::string> mirror;
135 std::optional<std::string> g4name;
136 std::optional<std::string> g4motherName;
139 std::string variation;
148 [[nodiscard]] std::string
getSystem()
const {
return system; }
149 [[nodiscard]] std::string
getName()
const {
return name; }
151 [[nodiscard]]
const std::string&
getG4Name()
const;
182 [[nodiscard]] std::string
getType()
const {
return type; }
183 [[nodiscard]]
const std::optional<std::string>&
getParameters()
const {
return parameters; }
188 [[nodiscard]] std::string
getMaterial()
const {
return material; }
189 [[nodiscard]]
const std::optional<std::string>&
getEMField()
const {
return emfield; }
195 [[nodiscard]] std::string_view
getColor()
const {
return color; }
197 [[nodiscard]]
bool isVisible()
const {
return visible; }
198 [[nodiscard]]
int getStyle()
const {
return style; }
204 [[nodiscard]] std::string
getPos()
const {
return pos; }
205 [[nodiscard]] std::string
getRot()
const {
return rot; }
207 [[nodiscard]]
const std::optional<std::string>&
getShift()
const {
return shift; }
208 [[nodiscard]]
const std::optional<std::string>&
getTilt()
const {
return tilt; }
213 [[nodiscard]]
const std::optional<std::string>&
getDigitization()
const {
return digitization; }
214 [[nodiscard]]
const std::optional<std::string>&
getGIdentity()
const {
return gidentity; }
219 [[nodiscard]]
const std::optional<std::string>&
getCopyOf()
const {
return copyOf; }
220 [[nodiscard]]
const std::optional<std::string>&
getSolidsOpr()
const {
return solidsOpr; }
221 [[nodiscard]]
const std::optional<std::string>&
getMirror()
const {
return mirror; }
235 void applyShift(std::optional<std::string> s) { shift = std::move(s); }
245 void applyTilt(std::optional<std::string> t) { tilt = std::move(t); }
261 void setColor(std::string c) { color = std::move(c); }
280 [[nodiscard]]
const std::optional<std::string>&
getImportedFile()
const {
return importFilename; }
GBase(const std::shared_ptr< GOptions > &gopt, std::string logger_name="")
std::shared_ptr< GLogger > log
const std::optional< std::string > & getTilt() const
std::string getDescription() const
void resetMotherName(std::string m)
Override the mother name (placement parent) after loading.
friend std::ostream & operator<<(std::ostream &stream, const GVolume &)
Stream operator used for logging volume summaries.
void setGIdentity(std::optional< std::string > g)
Override the identity string after loading.
std::string getRot() const
void setColor(std::string c)
Override the color after loading.
void setDigitization(std::optional< std::string > d)
Override the digitization label after loading.
const std::string & getG4Name() const
void assignG4Names(const std::string &g4n, const std::string &g4m)
Assign Geant4 names after all volumes are loaded.
void applyTilt(std::optional< std::string > t)
Apply an additional rotation to this volume.
const std::optional< std::string > & getSolidsOpr() const
void applyShift(std::optional< std::string > s)
Apply an additional translation to this volume.
const std::optional< std::string > & getParameters() const
const std::optional< std::string > & getCopyOf() const
virtual ~GVolume()=default
Virtual destructor (safe deletion through base pointers).
virtual std::unique_ptr< GVolume > clone() const
Polymorphic deep-copy.
bool getExistence() const
std::string getPos() const
std::string getG4PlacementType() const
const std::optional< std::string > & getGIdentity() const
const std::optional< std::string > & getShift() const
std::string getName() const
GVolume(const std::shared_ptr< GLogger > &log, const std::string &system, std::vector< std::string > pars, std::optional< std::string > importPath=std::nullopt)
Construct a volume from a serialized parameter vector.
void modifyExistence(bool e)
Enable or disable this volume in the final assembled world.
const std::optional< std::string > & getImportedFile() const
Return the import filename (path) for imported volumes.
const std::optional< std::string > & getEMField() const
std::string getMaterial() const
std::string getSystem() const
void setMaterial(std::string m)
Override the material name after loading.
std::vector< double > getDetectorDimensions() const
Returns the native-solid dimensions parsed from the parameters string.
const std::string & getG4MotherName() const
std::string getType() const
std::string_view getColor() const
const std::optional< std::string > & getMirror() const
double getOpacity() const
const std::optional< std::string > & getDigitization() const
std::string getMotherName() const
Conventions and shared constants for the detector-system module.
constexpr char GSYSTEMCADTFACTORYLABEL[]
vector< double > getG4NumbersFromString(const string &vstring, bool warnIfNotUnit=false)