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
7// c++
8#include <map>
9#include <string>
10
31class GSystem : public GBase<GSystem>
32{
33public:
47 GSystem(const std::shared_ptr<GOptions>& gopts,
48 const std::string& dbhost,
49 const std::string& sname,
50 const std::string& factory,
51 const std::string& experiment,
52 int runno,
53 const std::string& variation,
54 const std::string& annotations = "none"
55 );
56
65 GSystem(const GSystem& other);
66
67 // move operations: defaulted
68 GSystem(GSystem&&) noexcept = default;
69 GSystem& operator=(GSystem&&) noexcept = default;
70
71 // **disable copying**
72 GSystem& operator=(const GSystem&) = delete;
73
79 [[nodiscard]] std::unique_ptr<GSystem> clone() const {
80 return std::make_unique<GSystem>(*this);
81 }
82
93 [[nodiscard]] std::shared_ptr<GSystem> descriptorClone(const std::shared_ptr<GOptions>& gopts) const;
94
95private:
96 std::string dbhost;
97 std::string name;
98 std::string path;
99 std::string factoryName;
100 std::string experiment;
101 int runno{};
102 std::string variation;
103 std::string annotations;
104
113 std::map<std::string, std::shared_ptr<GVolume>> gvolumesMap;
114 std::map<std::string, std::shared_ptr<GMaterial>> gmaterialsMap;
116
117public:
120 [[nodiscard]] inline std::string getName() const { return name; }
121 [[nodiscard]] inline std::string getFactoryName() const { return factoryName; }
122 [[nodiscard]] inline std::string getVariation() const { return variation; }
123 [[nodiscard]] inline std::string getExperiment() const { return experiment; }
124 [[nodiscard]] inline std::string getAnnotations() const { return annotations; }
125 [[nodiscard]] inline int getRunno() const { return runno; }
126 [[nodiscard]] inline std::string get_dbhost() const { return dbhost; }
128
137 std::string getFilePath() const;
138
146 inline void set_dbhost(const std::string& dbh) { this->dbhost = dbh; }
147
156 void addROOTVolume(const std::string& rootVolumeDefinition);
157
170 void addGVolume(std::vector<std::string> pars);
171
187 void addVolumeFromFile(const std::string& importType, const std::string& filename);
188
198 [[nodiscard]] GVolume* getGVolume(const std::string& volumeName) const;
199
205 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GVolume>>& getGVolumesMap() const {
206 return gvolumesMap;
207 }
208
214 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GMaterial>>& getGMaterialMap() const {
215 return gmaterialsMap;
216 }
217
227 void addGMaterial(std::vector<std::string> pars);
228
242 [[nodiscard]] const GMaterial* getMaterialForGVolume(const std::string& volumeName) const;
243};
244
245// using shared pointers as GSystem could be created from the main
246// thread (in dbselect) then dispatched to g4 threads
247using SystemPtr = std::shared_ptr<GSystem>;
248using SystemMap = std::map<std::string, SystemPtr>;
249using SystemList = std::vector<SystemPtr>;
Material definition belonging to a detector system.
Definition gmaterial.h:28
Represents a single detector system (e.g., calorimeter, tracker).
Definition gsystem.h:32
std::string getFilePath() const
Gets the full file path of the system.
Definition gsystem.cc:202
const GMaterial * getMaterialForGVolume(const std::string &volumeName) const
Retrieve the material associated with a given volume.
Definition gsystem.cc:185
int getRunno() const
Definition gsystem.h:125
const std::map< std::string, std::shared_ptr< GVolume > > & getGVolumesMap() const
Access all volumes in this system.
Definition gsystem.h:205
const std::map< std::string, std::shared_ptr< GMaterial > > & getGMaterialMap() const
Access all materials in this system.
Definition gsystem.h:214
std::string getExperiment() const
Definition gsystem.h:123
void addROOTVolume(const std::string &rootVolumeDefinition)
Adds the special ROOT/world volume to the system.
Definition gsystem.cc:105
std::string getAnnotations() const
Definition gsystem.h:124
void set_dbhost(const std::string &dbh)
Sets the database host.
Definition gsystem.h:146
std::string getVariation() const
Definition gsystem.h:122
void addGMaterial(std::vector< std::string > pars)
Build and add a material from a serialized parameter list.
Definition gsystem.cc:169
std::string getFactoryName() const
Definition gsystem.h:121
GVolume * getGVolume(const std::string &volumeName) const
Retrieve a volume by name.
Definition gsystem.cc:158
std::unique_ptr< GSystem > clone() const
Clone helper.
Definition gsystem.h:79
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:44
std::shared_ptr< GSystem > descriptorClone(const std::shared_ptr< GOptions > &gopts) const
Clone only the system selection metadata.
Definition gsystem.cc:74
void addGVolume(std::vector< std::string > pars)
Build and add a volume from a serialized parameter list.
Definition gsystem.cc:83
std::string getName() const
Definition gsystem.h:120
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:119
std::string get_dbhost() const
Definition gsystem.h:126
Geometry volume record loaded into a GSystem.
Definition gvolume.h:34
std::shared_ptr< GSystem > SystemPtr
Definition gsystem.h:247
std::vector< SystemPtr > SystemList
Definition gsystem.h:249
std::map< std::string, SystemPtr > SystemMap
Definition gsystem.h:248