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
83private:
84 std::string dbhost;
85 std::string name;
86 std::string path;
87 std::string factoryName;
88 std::string experiment;
89 int runno{};
90 std::string variation;
91 std::string annotations;
92
101 std::map<std::string, std::shared_ptr<GVolume>> gvolumesMap;
102 std::map<std::string, std::shared_ptr<GMaterial>> gmaterialsMap;
104
105public:
108 [[nodiscard]] inline std::string getName() const { return name; }
109 [[nodiscard]] inline std::string getFactoryName() const { return factoryName; }
110 [[nodiscard]] inline std::string getVariation() const { return variation; }
111 [[nodiscard]] inline std::string getExperiment() const { return experiment; }
112 [[nodiscard]] inline std::string getAnnotations() const { return annotations; }
113 [[nodiscard]] inline int getRunno() const { return runno; }
114 [[nodiscard]] inline std::string get_dbhost() const { return dbhost; }
116
125 std::string getFilePath();
126
134 inline void set_dbhost(const std::string& dbh) { this->dbhost = dbh; }
135
144 void addROOTVolume(const std::string& rootVolumeDefinition);
145
158 void addGVolume(std::vector<std::string> pars);
159
175 void addVolumeFromFile(const std::string& importType, const std::string& filename);
176
186 [[nodiscard]] GVolume* getGVolume(const std::string& volumeName) const;
187
193 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GVolume>>& getGVolumesMap() const {
194 return gvolumesMap;
195 }
196
202 [[nodiscard]] inline const std::map<std::string, std::shared_ptr<GMaterial>>& getGMaterialMap() const {
203 return gmaterialsMap;
204 }
205
215 void addGMaterial(std::vector<std::string> pars);
216
230 [[nodiscard]] const GMaterial* getMaterialForGVolume(const std::string& volumeName) const;
231};
232
233// using shared pointers as GSystem could be created from the main
234// thread (in dbselect) then dispatched to g4 threads
235using SystemPtr = std::shared_ptr<GSystem>;
236using SystemMap = std::map<std::string, SystemPtr>;
237using SystemList = std::vector<SystemPtr>;
Material definition belonging to a detector system.
Definition gmaterial.h:29
Represents a single detector system (e.g., calorimeter, tracker).
Definition gsystem.h:32
const GMaterial * getMaterialForGVolume(const std::string &volumeName) const
Retrieve the material associated with a given volume.
Definition gsystem.cc:177
int getRunno() const
Definition gsystem.h:113
const std::map< std::string, std::shared_ptr< GVolume > > & getGVolumesMap() const
Access all volumes in this system.
Definition gsystem.h:193
const std::map< std::string, std::shared_ptr< GMaterial > > & getGMaterialMap() const
Access all materials in this system.
Definition gsystem.h:202
std::string getExperiment() const
Definition gsystem.h:111
void addROOTVolume(const std::string &rootVolumeDefinition)
Adds the special ROOT/world volume to the system.
Definition gsystem.cc:99
std::string getAnnotations() const
Definition gsystem.h:112
void set_dbhost(const std::string &dbh)
Sets the database host.
Definition gsystem.h:134
std::string getVariation() const
Definition gsystem.h:110
void addGMaterial(std::vector< std::string > pars)
Build and add a material from a serialized parameter list.
Definition gsystem.cc:161
std::string getFactoryName() const
Definition gsystem.h:109
GVolume * getGVolume(const std::string &volumeName) const
Retrieve a volume by name.
Definition gsystem.cc:150
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
void addGVolume(std::vector< std::string > pars)
Build and add a volume from a serialized parameter list.
Definition gsystem.cc:77
std::string getName() const
Definition gsystem.h:108
GSystem(GSystem &&) noexcept=default
std::string getFilePath()
Gets the full file path of the system.
Definition gsystem.cc:194
void addVolumeFromFile(const std::string &importType, const std::string &filename)
Add a volume imported from a file (CAD, GDML, etc.).
Definition gsystem.cc:113
std::string get_dbhost() const
Definition gsystem.h:114
Geometry volume record loaded into a GSystem.
Definition gvolume.h:33
std::shared_ptr< GSystem > SystemPtr
Definition gsystem.h:235
std::vector< SystemPtr > SystemList
Definition gsystem.h:237
std::map< std::string, SystemPtr > SystemMap
Definition gsystem.h:236