#include <rl_DielectricLayer.h>
Public Types | |
typedef rl_Traits::complex | complex |
complex type | |
typedef rl_Traits::ERoughType | ERoughType |
roughness type | |
Public Member Functions | |
~rl_DielectricLayer () | |
rl_DielectricLayer (char const layer_name[]=0) throw ( rl_Exception ) | |
rl_DielectricLayer (rl_DielectricLayer const &other) throw ( rl_Exception ) | |
rl_DielectricLayer (rl_Traits::rl_DielectricPOD const *diel, std::size_t ndielpts, double layer_thickness, double roughness, rl_Traits::ERoughType roughness_type, rl_Traits::EInterpMode interp_mode, double bulkdensity, char const *layer_name, rl_Traits::Bool is_substrate=rl_Traits::False) throw ( rl_Exception ) | |
void | init (rl_Traits::rl_DielectricPOD const *diel, std::size_t ndielpts, double layer_thickness, double roughness, rl_Traits::ERoughType roughness_type, rl_Traits::EInterpMode interp_mode, double bulkdensity, char const *layer_name, rl_Traits::Bool is_substrate=rl_Traits::False) throw ( rl_Exception ) |
int | setup_for (double energy, double sinphi) |
void | reflect_nlayer (rl_DielectricLayer layer[], int num) |
void | reflect_amp (rl_DielectricLayer const &layer, double sinphi) |
complex const & | propagator () const |
double | alpha () const |
double | gamma () const |
double | roughness () const |
ERoughType | roughness_type () const |
rl_ReflectionCoefPOD const & | reflection_coef () const |
double | reflectivity (double polarization_factor=0.0) const |
rl_Traits::Bool | is_substrate () const |
rl_Traits::Bool | is_vacuum () const |
char const * | layer_name () const |
double | energy_min () const |
double | energy_max () const |
double | thickness () const |
double | zcoat () const |
double | bulk_density_factor () const |
std::ostream & | dump_on (std::ostream &os, char const pre[]="", char const pst[]="") const |
void | cdump_on (std::FILE *of, char const pre[]="", char const pst[]="") const |
void | cprint_constraints_on (std::FILE *of, char const pre[]="", char const pst[]="") const |
Definition at line 60 of file rl_DielectricLayer.h.
rl_DielectricLayer::~rl_DielectricLayer | ( | ) |
Destructor
Definition at line 47 of file rl_DielectricLayer.cc.
rl_DielectricLayer::rl_DielectricLayer | ( | char const | layer_name[] = 0 |
) | throw ( rl_Exception ) |
Constructor. By default, constructs a VACUUM layer. Use init method to initialize for conditions other than vacuum.
layer_name | optional string naming the layer. |
Definition at line 56 of file rl_DielectricLayer.cc.
References layer_name().
rl_DielectricLayer::rl_DielectricLayer | ( | rl_DielectricLayer const & | other | ) | throw ( rl_Exception ) |
DEEP Copy constructor
other | rl_DielectricLayer to be copied. |
Definition at line 99 of file rl_DielectricLayer.cc.
rl_DielectricLayer::rl_DielectricLayer | ( | rl_Traits::rl_DielectricPOD const * | diel, | |
std::size_t | ndielpts, | |||
double | layer_thickness, | |||
double | roughness, | |||
rl_Traits::ERoughType | roughness_type, | |||
rl_Traits::EInterpMode | interp_mode, | |||
double | bulkdensity, | |||
char const * | layer_name, | |||
rl_Traits::Bool | is_substrate = rl_Traits::False | |||
) | throw ( rl_Exception ) |
Constructor.
diel | array of dielectric decrement information. | |
ndielpts | number of points in diel array. | |
layer_thickness | layer thickness (Angstroms). | |
roughness | layer ``roughness'' (Angstroms). | |
roughness_type | interlayer grading ``roughness'' type. | |
interp_mode | type of optical constant interpolation to be done. | |
bulkdensity | relative bulk density factor; 1 for full bulk density. | |
layer_name | string describing the layer composition. | |
is_substrate | boolean: True if this is the substrate layer. |
Definition at line 142 of file rl_DielectricLayer.cc.
References init(), is_substrate(), layer_name(), roughness(), and roughness_type().
void rl_DielectricLayer::init | ( | rl_Traits::rl_DielectricPOD const * | diel, | |
std::size_t | ndielpts, | |||
double | layer_thickness, | |||
double | roughness, | |||
rl_Traits::ERoughType | roughness_type, | |||
rl_Traits::EInterpMode | interp_mode, | |||
double | bulkdensity, | |||
char const * | layer_name, | |||
rl_Traits::Bool | is_substrate = rl_Traits::False | |||
) | throw ( rl_Exception ) |
Initializer
diel | array of dielectric decrement information. | |
ndielpts | number of points in diel array. | |
layer_thickness | layer thickness (Angstroms). | |
roughness | interlayer grading "roughness" (Angstrom). | |
roughness_type | interlayer grading "roughness" type. | |
interp_mode | type of optical constant interpolation to be done. | |
bulkdensity | relative bulk density factor; 1 for full bulk density. | |
layer_name | string describing the layer composition. | |
is_substrate | boolean: True if this is the substrate layer. |
Definition at line 160 of file rl_DielectricLayer.cc.
References rl_Traits::ERoughDebyeWaller_CSAO, rl_Traits::ERoughDebyeWaller_RSAO, rl_Traits::ERoughDebyeWaller_Spiller, rl_Traits::ERoughModifiedDebyeWaller, rl_Traits::ERoughNevotCroce, rl_Traits::ERoughNone, rl_DielectricData::init(), is_substrate(), layer_name(), roughness(), and roughness_type().
Referenced by rl_DielectricLayer().
int rl_DielectricLayer::setup_for | ( | double | energy, | |
double | sinphi | |||
) |
Set up layer state for given energy and graze angle.
energy | energy (keV). | |
sinphi | sine of the graze angle between the ray (in vacuum) and the top surface of the multilayer. |
Definition at line 224 of file rl_DielectricLayer.cc.
References rl_DielectricData::alpha_gamma(), rl_Traits::ERoughNone, is_substrate(), and is_vacuum().
Referenced by rl_Multilayer::multilayer_reflect_coef().
void rl_DielectricLayer::reflect_nlayer | ( | rl_DielectricLayer | layer[], | |
int | num | |||
) |
Compute reflectivity for a stack of num layers.
PRECONDITION: The layers must be pre-initialized with setup_for and the reflection coefficients evaluated with reflect_amp.
layer | array of layers. | |
num | number of layers in the array. |
Definition at line 520 of file rl_DielectricLayer.cc.
References cprint_constraints_on(), rl_ReflectionCoefPOD::para(), rl_ReflectionCoefPOD::perp(), propagator(), r2_tij_tji_para_, r2_tij_tji_perp_, and rflcoef_.
Referenced by rl_Multilayer::multilayer_reflect_coef().
void rl_DielectricLayer::reflect_amp | ( | rl_DielectricLayer const & | layer, | |
double | sinphi | |||
) |
Compute reflection amplitude for the interface between this layer and the layer immediately above it. sinphi is the graze angle at the topmost layer (i.e., in vacuum). Layer "layer" is assumed to be adjacent to this layer, with "layer" nearer the vacuum and this layer nearer the substrate. The reflection coefficient for this layer is updated.
PRECONDITION: The layers must be pre-initialized with setup_for
layer | adjacent layer above this layer, where above means closer to the vacuum. | |
sinphi | sine of the graze angle between the ray (in vacuum) and the top surface of the multilayer. |
Definition at line 324 of file rl_DielectricLayer.cc.
References alpha_, rl_Traits::ERoughDebyeWaller_CSAO, rl_Traits::ERoughDebyeWaller_RSAO, rl_Traits::ERoughDebyeWaller_Spiller, rl_Traits::ERoughModifiedDebyeWaller, rl_Traits::ERoughNevotCroce, rl_Traits::ERoughNone, gamma_, is_substrate(), kt_perp_, name_, rl_TransmissionCoefPOD::para(), rl_ReflectionCoefPOD::para(), rl_TransmissionCoefPOD::perp(), and rl_ReflectionCoefPOD::perp().
Referenced by rl_Multilayer::multilayer_reflect_coef().
rl_Traits::complex const & rl_DielectricLayer::propagator | ( | ) | const [inline] |
The propagator for this layer.
Definition at line 524 of file rl_DielectricLayer.h.
Referenced by reflect_nlayer().
double rl_DielectricLayer::alpha | ( | ) | const [inline] |
Returns this layer's dielectric decrement (real part).
Definition at line 528 of file rl_DielectricLayer.h.
double rl_DielectricLayer::gamma | ( | ) | const [inline] |
Returns this layer's dielectric decrement (imag part).
Definition at line 532 of file rl_DielectricLayer.h.
double rl_DielectricLayer::roughness | ( | ) | const [inline] |
Returns the roughness parameter of the upper surface of this layer.
Definition at line 548 of file rl_DielectricLayer.h.
Referenced by init(), and rl_DielectricLayer().
rl_Traits::ERoughType rl_DielectricLayer::roughness_type | ( | ) | const [inline] |
Returns the roughness type of the upper surface of this layer.
Definition at line 544 of file rl_DielectricLayer.h.
Referenced by init(), and rl_DielectricLayer().
rl_ReflectionCoefPOD const & rl_DielectricLayer::reflection_coef | ( | ) | const [inline] |
Returns this layer's complex reflection coefficient.
Definition at line 552 of file rl_DielectricLayer.h.
Referenced by rl_Multilayer::multilayer_reflect_coef().
double rl_DielectricLayer::reflectivity | ( | double | polarization_factor = 0.0 |
) | const [inline] |
Returns: this layer's reflectivity.
polarization_factor | - polarization factor; it must be a value between -1 and 1. |
Definition at line 556 of file rl_DielectricLayer.h.
References rl_ReflectionCoefPOD::reflectivity().
rl_Traits::Bool rl_DielectricLayer::is_substrate | ( | ) | const [inline] |
Definition at line 560 of file rl_DielectricLayer.h.
Referenced by init(), reflect_amp(), rl_DielectricLayer(), and setup_for().
rl_Traits::Bool rl_DielectricLayer::is_vacuum | ( | ) | const [inline] |
Definition at line 564 of file rl_DielectricLayer.h.
References rl_DielectricData::is_vacuum().
Referenced by cdump_on(), cprint_constraints_on(), dump_on(), and setup_for().
char const * rl_DielectricLayer::layer_name | ( | ) | const [inline] |
Definition at line 568 of file rl_DielectricLayer.h.
Referenced by init(), and rl_DielectricLayer().
double rl_DielectricLayer::energy_min | ( | ) | const [inline] |
Definition at line 572 of file rl_DielectricLayer.h.
References rl_DielectricData::energy_min().
double rl_DielectricLayer::energy_max | ( | ) | const [inline] |
Definition at line 576 of file rl_DielectricLayer.h.
References rl_DielectricData::energy_max().
double rl_DielectricLayer::thickness | ( | ) | const [inline] |
double rl_DielectricLayer::zcoat | ( | ) | const [inline] |
double rl_DielectricLayer::bulk_density_factor | ( | ) | const [inline] |
Definition at line 580 of file rl_DielectricLayer.h.
References rl_DielectricData::bulk_density_factor().
std::ostream & rl_DielectricLayer::dump_on | ( | std::ostream & | os, | |
char const | pre[] = "" , |
|||
char const | pst[] = "" | |||
) | const |
Dumps layer information to a stream.
os | stream. | |
pre | optional prefix string. | |
pst | optional postfix string. |
Definition at line 791 of file rl_DielectricLayer.cc.
References rl_DielectricData::bulk_density_factor(), rl_DielectricData::energy_max(), rl_DielectricData::energy_min(), and is_vacuum().
Referenced by rl_Multilayer::dump_on().
void rl_DielectricLayer::cdump_on | ( | std::FILE * | of, | |
char const | pre[] = "" , |
|||
char const | pst[] = "" | |||
) | const |
Dumps layer information to a C-style FILE* stream.
of | output file. | |
pre | optional prefix string. | |
pst | optional postfix string. |
Definition at line 836 of file rl_DielectricLayer.cc.
References rl_DielectricData::bulk_density_factor(), rl_ReflectionCoefPOD::cprint_on(), rl_DielectricData::energy_max(), rl_DielectricData::energy_min(), and is_vacuum().
Referenced by rl_Multilayer::cdump_on().
void rl_DielectricLayer::cprint_constraints_on | ( | std::FILE * | of, | |
char const | pre[] = "" , |
|||
char const | pst[] = "" | |||
) | const |
Dumps layer information and constraints to a C-style FILE* stream.
of | output file. | |
pre | optional prefix string. | |
pst | optional postfix string. |
Definition at line 880 of file rl_DielectricLayer.cc.
References rl_DielectricData::bulk_density_factor(), rl_DielectricData::energy_max(), rl_DielectricData::energy_min(), is_vacuum(), rl_ReflectionCoefPOD::para(), rl_TransmissionCoefPOD::para(), rl_ReflectionCoefPOD::perp(), and rl_TransmissionCoefPOD::perp().
Referenced by reflect_nlayer().