23#ifndef _TRestAxionOpticsMirror
24#define _TRestAxionOpticsMirror
27#include <TRestMetadata.h>
80 void SetMirrorType(
const std::string& type) {
fMirrorType = type; }
81 void SetLayerMaterial(
const std::string& layer) {
fLayerTop = layer; }
82 void SetLayerThickness(
const std::string& thickness) {
fLayerThicknessTop = thickness; }
83 void SetLayerRoughness(
const std::string& roughness) {
fSigmaTop = roughness; }
84 void SetTopLayerMaterial(
const std::string& layer) {
fLayerTop = layer; }
85 void SetTopLayerThickness(
const std::string& thickness) {
fLayerThicknessTop = thickness; }
86 void SetTopLayerRoughness(
const std::string& roughness) {
fSigmaTop = roughness; }
87 void SetBottomLayerMaterial(
const std::string& layer) {
fLayerBottom = layer; }
89 void SetBottomLayerRoughness(
const std::string& roughness) {
fSigmaBottom = roughness; }
90 void SetSubstrateMaterial(
const std::string& substrate) {
fSubstrate = substrate; }
101 Double_t lowRange2 = 1.e-3);
A metadata class accessing the Henke database to load reflectivity data.
std::string fSigmaTop
Layer surface roughness in nm.
std::string fLayerThicknessBottom
The bottom layer thickness in nm. Only used for "Bilayer" mirror type.
std::string fSubstrate
The substrate material.
std::string GetTransmissionFilename()
It returns the corresponding transmission filename for the mirror properties defined in the data memb...
std::string fSigmaBottom
Bottom layer surface roughness in nm. Only used for "Bilayer" mirror type.
Double_t GetReflectivity(const Double_t angle, const Double_t energy)
It returns the interpolated reflectivity for a given angle (in degrees) and a given energy (in keV).
TCanvas * DrawOpticsProperties(std::string options="", Double_t lowRange=1.e-9, Double_t lowRange2=1.e-3)
A method that creates a canvas where the mirror optics properties are drawn. It generates two plots,...
std::string fLayerThicknessTop
The layer thickness in nm.
void LoadTables()
Loads the reflectivity table.
void PrintMetadata()
Prints on screen the information about the metadata members of TRestAxionOpticsMirror.
std::vector< std::vector< Float_t > > fReflectivityTable
The reflectivity loaded as a table with angle versus energy.
std::map< std::string, std::string > fHenkeKeys
A set of key-value pairs sent to the Henke website for data request.
Int_t ExportTables()
It is a private method to export the tables to a binary file once the tables have been downloaded fro...
TRestAxionOpticsMirror()
Default constructor.
void Initialize()
Initialization of TRestAxionOpticsMirror members.
std::string fLayerBottom
The mirror bottom layer material (chemical formula). Only used for "Bilayer" mirror type.
TCanvas * fCanvas
A canvas to insert the optic properties drawing.
~TRestAxionOpticsMirror()
Default destructor.
Double_t GetTransmission(const Double_t angle, const Double_t energy)
It returns the interpolated transmission for a given angle (in degrees) and a given energy (in keV).
std::string fLayerTop
The mirror layer material (chemical formula).
std::string GetReflectivityFilename()
It returns the corresponding reflectivity filename for the mirror properties defined in the data memb...
std::string fMirrorType
The mirror type (Thick, Single, Bilayer, Multilayer). Only Single/Bilayer is supported now.
std::string DownloadHenkeFile()
It downloads the reflectivity file for the present mirror properties defined at the metadata members.
std::vector< std::vector< Float_t > > fTransmissionTable
The transmission loaded as a table with angle versus energy.