gsystem
Loading...
Searching...
No Matches
gsystem.h
Go to the documentation of this file.
1#pragma once
2
3// gsystem
4#include "gvolume.h"
5#include "gmaterial.h"
6#include "gmirror.h"
7
8// c++
9#include <map>
10#include <string>
11
32class GSystem : public GBase<GSystem>
33{
34public:
48 GSystem(const std::shared_ptr<GOptions>& gopts,
49 const std::string& dbhost,
50 const std::string& sname,
51 const std::string& factory,
52 const std::string& experiment,
53 int runno,
54 const std::string& variation,
55 const std::string& annotations = "none"
56 );
57
66 GSystem(const GSystem& other);
67
68 // move operations: defaulted
69 GSystem(GSystem&&) noexcept = default;
70 GSystem& operator=(GSystem&&) noexcept = default;
71
72 // **disable copying**
73 GSystem& operator=(const GSystem&) = delete;
74
80 [[nodiscard]] std::unique_ptr<GSystem> clone() const {
81 return std::make_unique<GSystem>(*this);
82 }
83
94 [[nodiscard]] std::shared_ptr<GSystem> descriptorClone(const std::shared_ptr<GOptions>& gopts) const;
95
96private:
97 std::string dbhost;
98 std::string name;
99 std::string path;
100 std::string factoryName;
101 std::string experiment;
102 int runno{};
103 std::string variation;
104 std::string annotations;
105
114 std::map<std::string, std::shared_ptr<GVolume>> gvolumesMap;
115 std::map<std::string, std::shared_ptr<GMaterial>> gmaterialsMap;
116 std::map<std::string, std::shared_ptr<GMirror>> gmirrorsMap;
118
119public:
122 [[nodiscard]] inline std::string getName() const { return name; }
123 [[nodiscard]] inline std::string getFactoryName() const { return factoryName; }
124 [[nodiscard]] inline std::string getVariation() const { return variation; }
125 [[nodiscard]] inline std::string getExperiment() const { return experiment; }
126 [[nodiscard]] inline std::string getAnnotations() const { return annotations; }
127 [[nodiscard]] inline int getRunno() const { return runno; }
128 [[nodiscard]] inline std::string get_dbhost() const { return dbhost; }
130
139 std::string getFilePath() const;
140
148 inline void set_dbhost(const std::string& dbh) { this->dbhost = dbh; }
149
158 void addROOTVolume(const std::string& rootVolumeDefinition);
159
172 void addGVolume(std::vector<std::string> pars);
173
189 void addVolumeFromFile(const std::string& importType, const std::string& filename);
190
200 [[nodiscard]] GVolume* getGVolume(const std::string& volumeName) const;
201
207 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GVolume>>& getGVolumesMap() const {
208 return gvolumesMap;
209 }
210
216 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GMaterial>>& getGMaterialMap() const {
217 return gmaterialsMap;
218 }
219
229 void addGMaterial(std::vector<std::string> pars);
230
240 void addGMirror(std::vector<std::string> pars);
241
248 [[nodiscard]] const GMirror* getGMirror(const std::string& mirrorName) const;
249
255 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GMirror>>& getGMirrorsMap() const {
256 return gmirrorsMap;
257 }
258
272 [[nodiscard]] const GMaterial* getMaterialForGVolume(const std::string& volumeName) const;
273};
274
275// using shared pointers as GSystem could be created from the main
276// thread (in dbselect) then dispatched to g4 threads
277using SystemPtr = std::shared_ptr<GSystem>;
278using SystemMap = std::map<std::string, SystemPtr>;
279using SystemList = std::vector<SystemPtr>;
Material definition belonging to a detector system.
Definition gmaterial.h:28
Optical boundary (surface) definition belonging to a detector system.
Definition gmirror.h:28
Represents a single detector system (e.g., calorimeter, tracker).
Definition gsystem.h:33
std::string getFilePath() const
Gets the full file path of the system.
Definition gsystem.cc:236
const GMaterial * getMaterialForGVolume(const std::string &volumeName) const
Retrieve the material associated with a given volume.
Definition gsystem.cc:219
int getRunno() const
Definition gsystem.h:127
const std::map< std::string, std::shared_ptr< GVolume > > & getGVolumesMap() const
Access all volumes in this system.
Definition gsystem.h:207
const std::map< std::string, std::shared_ptr< GMaterial > > & getGMaterialMap() const
Access all materials in this system.
Definition gsystem.h:216
std::string getExperiment() const
Definition gsystem.h:125
void addROOTVolume(const std::string &rootVolumeDefinition)
Adds the special ROOT/world volume to the system.
Definition gsystem.cc:112
std::string getAnnotations() const
Definition gsystem.h:126
void set_dbhost(const std::string &dbh)
Sets the database host.
Definition gsystem.h:148
std::string getVariation() const
Definition gsystem.h:124
void addGMaterial(std::vector< std::string > pars)
Build and add a material from a serialized parameter list.
Definition gsystem.cc:176
std::string getFactoryName() const
Definition gsystem.h:123
GVolume * getGVolume(const std::string &volumeName) const
Retrieve a volume by name.
Definition gsystem.cc:165
std::unique_ptr< GSystem > clone() const
Clone helper.
Definition gsystem.h:80
GSystem(const std::shared_ptr< GOptions > &gopts, const std::string &dbhost, const std::string &sname, const std::string &factory, const std::string &experiment, int runno, const std::string &variation, const std::string &annotations="none")
Construct a detector system descriptor.
Definition gsystem.cc:51
std::shared_ptr< GSystem > descriptorClone(const std::shared_ptr< GOptions > &gopts) const
Clone only the system selection metadata.
Definition gsystem.cc:81
const GMirror * getGMirror(const std::string &mirrorName) const
Retrieve a mirror by name.
Definition gsystem.cc:210
void addGVolume(std::vector< std::string > pars)
Build and add a volume from a serialized parameter list.
Definition gsystem.cc:90
const std::map< std::string, std::shared_ptr< GMirror > > & getGMirrorsMap() const
Access all mirrors in this system.
Definition gsystem.h:255
std::string getName() const
Definition gsystem.h:122
void addGMirror(std::vector< std::string > pars)
Build and add a mirror (optical surface) from a serialized parameter list.
Definition gsystem.cc:194
GSystem(GSystem &&) noexcept=default
void addVolumeFromFile(const std::string &importType, const std::string &filename)
Add a volume imported from a file (CAD, GDML, etc.).
Definition gsystem.cc:126
std::string get_dbhost() const
Definition gsystem.h:128
Geometry volume record loaded into a GSystem.
Definition gvolume.h:34
std::shared_ptr< GSystem > SystemPtr
Definition gsystem.h:277
std::vector< SystemPtr > SystemList
Definition gsystem.h:279
std::map< std::string, SystemPtr > SystemMap
Definition gsystem.h:278