gsystem
Loading...
Searching...
No Matches
gmirror.h
Go to the documentation of this file.
1#pragma once
2
3// gemc
4#include <gemc/gbase/gbase.h>
5
6// c++
7#include <string>
8#include <vector>
9
28class GMirror : public GBase<GMirror> {
29public:
49 GMirror(const std::string& system, std::vector<std::string> pars, const std::shared_ptr<GLogger>& logger);
50
56 [[nodiscard]] virtual std::unique_ptr<GMirror> clone() const { return std::make_unique<GMirror>(*this); }
57
59 virtual ~GMirror() = default;
60
61private:
62 std::string system;
63 std::string name;
64 std::string description;
65
71 std::string type;
72 std::string finish;
73 std::string model;
75
83 std::string border;
84
90 std::string matOptProps;
91
100 std::vector<double> photonEnergy;
101 std::vector<double> indexOfRefraction;
102 std::vector<double> reflectivity;
103 std::vector<double> efficiency;
104 std::vector<double> specularlobe;
105 std::vector<double> specularspike;
106 std::vector<double> backscatter;
107 std::vector<double> transmittance;
109
110 double sigmaAlpha{};
111 bool sigmaAlphaSet{};
112
122 void getMirrorPropertyFromString(const std::string& parameter, const std::string& propertyName);
123
125 friend std::ostream& operator<<(std::ostream& stream, const GMirror&);
126
127public:
130 [[nodiscard]] std::string getName() const { return name; }
131 [[nodiscard]] std::string getDescription() const { return description; }
133
136 [[nodiscard]] std::string getType() const { return type; }
137 [[nodiscard]] std::string getFinish() const { return finish; }
138 [[nodiscard]] std::string getModel() const { return model; }
139 [[nodiscard]] std::string getBorder() const { return border; }
140 [[nodiscard]] bool isSkinSurface() const;
141 [[nodiscard]] double getSigmaAlpha() const { return sigmaAlpha; }
142 [[nodiscard]] bool hasSigmaAlpha() const { return sigmaAlphaSet; }
144
147 [[nodiscard]] std::string getMatOptProps() const { return matOptProps; }
148 [[nodiscard]] bool usesMaterialOpticalProperties() const { return !matOptProps.empty(); }
149 [[nodiscard]] std::vector<double> getPhotonEnergy() const { return photonEnergy; }
150 [[nodiscard]] std::vector<double> getIndexOfRefraction() const { return indexOfRefraction; }
151 [[nodiscard]] std::vector<double> getReflectivity() const { return reflectivity; }
152 [[nodiscard]] std::vector<double> getEfficiency() const { return efficiency; }
153 [[nodiscard]] std::vector<double> getSpecularLobe() const { return specularlobe; }
154 [[nodiscard]] std::vector<double> getSpecularSpike() const { return specularspike; }
155 [[nodiscard]] std::vector<double> getBackscatter() const { return backscatter; }
156 [[nodiscard]] std::vector<double> getTransmittance() const { return transmittance; }
158};
Optical boundary (surface) definition belonging to a detector system.
Definition gmirror.h:28
std::vector< double > getReflectivity() const
Definition gmirror.h:151
virtual std::unique_ptr< GMirror > clone() const
Clone the mirror (polymorphic deep-copy).
Definition gmirror.h:56
std::vector< double > getSpecularSpike() const
Definition gmirror.h:154
std::vector< double > getEfficiency() const
Definition gmirror.h:152
bool hasSigmaAlpha() const
Definition gmirror.h:142
std::string getName() const
Definition gmirror.h:130
std::vector< double > getPhotonEnergy() const
Definition gmirror.h:149
std::string getMatOptProps() const
Definition gmirror.h:147
GMirror(const std::string &system, std::vector< std::string > pars, const std::shared_ptr< GLogger > &logger)
Construct a mirror from a serialized parameter list.
Definition gmirror.cc:26
bool usesMaterialOpticalProperties() const
Definition gmirror.h:148
std::vector< double > getBackscatter() const
Definition gmirror.h:155
virtual ~GMirror()=default
Virtual destructor (safe deletion through base pointers).
std::vector< double > getTransmittance() const
Definition gmirror.h:156
std::string getDescription() const
Definition gmirror.h:131
double getSigmaAlpha() const
Definition gmirror.h:141
std::string getType() const
Definition gmirror.h:136
std::vector< double > getSpecularLobe() const
Definition gmirror.h:153
std::string getFinish() const
Definition gmirror.h:137
friend std::ostream & operator<<(std::ostream &stream, const GMirror &)
Stream operator used for logging mirror summaries.
Definition gmirror.cc:131
std::string getBorder() const
Definition gmirror.h:139
std::string getModel() const
Definition gmirror.h:138
bool isSkinSurface() const
Definition gmirror.cc:98
std::vector< double > getIndexOfRefraction() const
Definition gmirror.h:150