42 GMaterial(
const std::string &system, std::vector<std::string> pars,
const std::shared_ptr<GLogger> &logger);
49 [[nodiscard]]
virtual std::unique_ptr<GMaterial>
clone()
const {
50 return std::make_unique<GMaterial>(*
this);
59 std::string description;
75 std::vector<std::string> components;
76 std::vector<double> amounts;
87 std::vector<double> photonEnergy;
88 std::vector<double> indexOfRefraction;
89 std::vector<double> absorptionLength;
90 std::vector<double> reflectivity;
91 std::vector<double> efficiency;
102 std::vector<double> fastcomponent;
103 std::vector<double> slowcomponent;
105 double scintillationyield{};
106 double resolutionscale{};
107 double fasttimeconstant{};
108 double slowtimeconstant{};
110 double birksConstant{};
112 bool scintillationyieldSet{};
113 bool resolutionscaleSet{};
114 bool fasttimeconstantSet{};
115 bool slowtimeconstantSet{};
116 bool yieldratioSet{};
117 bool birksConstantSet{};
125 std::vector<double> rayleigh;
140 void setComponentsFromString(
const std::string &composition);
154 void getMaterialPropertyFromString(
const std::string ¶meter,
const std::string &propertyName);
170 bool assign_if_set(
const std::vector<std::string> &pars,
size_t &i,
double &out);
175 [[nodiscard]] std::string
getName()
const {
return name; }
178 [[nodiscard]] std::vector<std::string>
getComponents()
const {
return components; }
179 [[nodiscard]] std::vector<double>
getAmounts()
const {
return amounts; }
188 [[nodiscard]] std::vector<double>
getEfficiency()
const {
return efficiency; }
211 [[nodiscard]] std::vector<double>
getRayleigh()
const {
return rayleigh; }
223 return std::accumulate(amounts.begin(), amounts.end(), 0.0) > 1;
Material definition belonging to a detector system.
double getBirksConstant() const
std::string getDescription() const
bool hasYieldratio() const
bool hasSlowtimeConstant() const
std::string getName() const
double getYieldratio() const
bool isChemicalFormula() const
Heuristic: return true if the composition looks like a chemical formula.
GMaterial(const std::string &system, std::vector< std::string > pars, const std::shared_ptr< GLogger > &logger)
Construct a material from a serialized parameter list.
std::vector< double > getFastComponent() const
double getFasttimeConstant() const
virtual std::unique_ptr< GMaterial > clone() const
Clone the material (polymorphic deep-copy).
friend std::ostream & operator<<(std::ostream &stream, const GMaterial &)
Stream operator used for logging material summaries.
bool hasBirksConstant() const
virtual ~GMaterial()=default
Virtual destructor (safe deletion through base pointers).
std::vector< double > getPhotonEnergy() const
std::vector< double > getIndexOfRefraction() const
std::vector< double > getSlowComponent() const
double getResolutionScale() const
std::vector< double > getReflectivity() const
std::vector< double > getAbsorptionLength() const
double getSlowtimeConstant() const
std::vector< double > getRayleigh() const
double getScintillationYield() const
double getDensity() const
std::vector< std::string > getComponents() const
std::vector< double > getAmounts() const
bool hasResolutionScale() const
bool hasScintillationYield() const
std::vector< double > getEfficiency() const
bool hasFasttimeConstant() const