#include <rl_Multilayer.h>
Public Types | |
typedef rl_Traits::EInterpMode | EInterpMode |
interpolation mode for dielectric data | |
Public Member Functions | |
virtual | ~rl_Multilayer () |
rl_Multilayer (int num_layers, rl_DielectricLayer *layers, rl_Traits::Bool adopt_data=rl_Traits::True) | |
void | init (int num_layers, rl_DielectricLayer *layers, rl_Traits::Bool adopt_data=rl_Traits::True) |
int | multilayer_reflect_coef (rl_ReflectionCoefPOD &rfl, double energy, double sg) |
int | multilayer_reflectivity (double &rfl, double energy, double sg, double polarization_factor=0.0) |
rl_DielectricLayer const & | layer (int layer_no) const |
int | num_layers () const |
std::ostream & | dump_on (std::ostream &os, int layer_no, char const pre[]="", char const pst[]="") const |
void | cdump_on (std::FILE *of, int layer_no, char const pre[]="", char const pst[]="") const |
Protected Attributes | |
int | num_layers_ |
number of multilayers | |
rl_DielectricLayer | vacuum_ |
the top (vacuum) layer | |
rl_DielectricLayer * | layer_ |
array of dielectric layers | |
rl_Traits::Bool | own_data_ |
do we own the rl_DielectricLayer array? |
Definition at line 60 of file rl_Multilayer.h.
rl_Multilayer::~rl_Multilayer | ( | ) | [virtual] |
Destructor.
Frees up rl_DielectricLayer array if own_data_ is rl_Traits::True.
Definition at line 46 of file rl_Multilayer.cc.
rl_Multilayer::rl_Multilayer | ( | int | num_layers, | |
rl_DielectricLayer * | layers, | |||
rl_Traits::Bool | adopt_data = rl_Traits::True | |||
) |
Construct multilayer from num_layers individual layers.
num_layers | number of layers to construct. | |
layers | pointer to array of layer data | |
adopt_data | boolean flag
|
Definition at line 53 of file rl_Multilayer.cc.
void rl_Multilayer::init | ( | int | num_layers, | |
rl_DielectricLayer * | layers, | |||
rl_Traits::Bool | adopt_data = rl_Traits::True | |||
) |
Initialize multilayer from num_layers individual layers.
num_layers | number of layers to construct. | |
layers | pointer to array of layer data | |
adopt_data | boolean flag
|
Definition at line 64 of file rl_Multilayer.cc.
References layer_, num_layers_, and own_data_.
int rl_Multilayer::multilayer_reflect_coef | ( | rl_ReflectionCoefPOD & | rfl, | |
double | energy, | |||
double | sg | |||
) |
Evaluate the multilayer reflection coefficients
rfl | the computed reflection coefficient. | |
energy | ray energy. | |
sg | sine of the graze angle between the ray and the surface. |
Definition at line 90 of file rl_Multilayer.cc.
References layer_, num_layers_, rl_DielectricLayer::reflect_amp(), rl_DielectricLayer::reflect_nlayer(), rl_DielectricLayer::reflection_coef(), rl_DielectricLayer::setup_for(), and vacuum_.
Referenced by multilayer_reflectivity(), and rl_MultilayerSurface::reflect().
int rl_Multilayer::multilayer_reflectivity | ( | double & | rfl, | |
double | energy, | |||
double | sg, | |||
double | polarization_factor = 0.0 | |||
) |
Evaluate the multilayer reflectivity (assuming unpolarized rays)
rfl | multilayer reflectivity. | |
energy | ray energy. | |
sg | sine of the graze angle between the ray and the surface. | |
polarization_factor | polarization factor; it must be a value between -1 and 1. The polarization factor is related to parallel (p) and perpendicular (s) polarization by:
or
where
|
Definition at line 136 of file rl_Multilayer.cc.
References rl_ReflectionCoefPOD::init(), multilayer_reflect_coef(), and rl_ReflectionCoefPOD::reflectivity().
rl_DielectricLayer const & rl_Multilayer::layer | ( | int | layer_no | ) | const |
Definition at line 156 of file rl_Multilayer.cc.
References layer_.
Referenced by rl_MultilayerSurface::layer().
int rl_Multilayer::num_layers | ( | ) | const [inline] |
std::ostream & rl_Multilayer::dump_on | ( | std::ostream & | os, | |
int | layer_no, | |||
char const | pre[] = "" , |
|||
char const | pst[] = "" | |||
) | const |
Dump information about layer layer_no to stream os.
os | output stream | |
layer_no | layer number to be dumped | |
pre | optional prefix string | |
pst | optional postfix string |
Definition at line 164 of file rl_Multilayer.cc.
References rl_DielectricLayer::dump_on(), and layer_.
Referenced by rl_MultilayerSurface::dump_on().
void rl_Multilayer::cdump_on | ( | std::FILE * | of, | |
int | layer_no, | |||
char const | pre[] = "" , |
|||
char const | pst[] = "" | |||
) | const |
Dump information about layer layer_no to output FILE*.
of | output FILE* | |
layer_no | layer number to be dumped | |
pre | optional prefix string | |
pst | optional postfix string |
Definition at line 181 of file rl_Multilayer.cc.
References rl_DielectricLayer::cdump_on(), and layer_.
int rl_Multilayer::num_layers_ [protected] |
number of multilayers
Definition at line 74 of file rl_Multilayer.h.
Referenced by init(), multilayer_reflect_coef(), and num_layers().
rl_DielectricLayer rl_Multilayer::vacuum_ [protected] |
the top (vacuum) layer
Definition at line 76 of file rl_Multilayer.h.
Referenced by multilayer_reflect_coef().
rl_DielectricLayer* rl_Multilayer::layer_ [protected] |
array of dielectric layers
Definition at line 78 of file rl_Multilayer.h.
Referenced by cdump_on(), dump_on(), init(), layer(), multilayer_reflect_coef(), and ~rl_Multilayer().
rl_Traits::Bool rl_Multilayer::own_data_ [protected] |
do we own the rl_DielectricLayer array?
Definition at line 80 of file rl_Multilayer.h.
Referenced by init(), and ~rl_Multilayer().