rl_DielectricLayer Class Reference

#include <rl_DielectricLayer.h>

Collaboration diagram for rl_DielectricLayer:
[legend]

List of all members.

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


Detailed Description

A class encapsulating the multilayer reflection of a ray. Given the energy and the sine of the graze angle, the reflection coefficient is evaluated.

Definition at line 60 of file rl_DielectricLayer.h.


Member Typedef Documentation

complex type

Definition at line 65 of file rl_DielectricLayer.h.

roughness type

Definition at line 68 of file rl_DielectricLayer.h.


Constructor & Destructor Documentation

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.

Parameters:
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

Parameters:
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.

Parameters:
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().


Member Function Documentation

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

Parameters:
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.

Parameters:
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.

Parameters:
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

Parameters:
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.

Returns:
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).

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).

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.

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.

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.

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.

Parameters:
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: polarization_factor $ = (I_\mathit{perp} - I_\mathit{para}) / (I_\mathit{perp} + I_\mathit{para})$ or polarization_factor $ = (I_\mathit{s} - I_\mathit{p}) / (I_\mathit{s} + I_\mathit{p})$ where $I_\mathit{perp} and I_\mathit{para}$ are the perpendicular and parallel E-field intensities, respectively. Thus,
  • -1: pure parallel (p) polarization.
  • 0: completely unpolarized.
  • +1: pure perpendicular (s) polarization.

Returns:
this layer's reflectivity

Definition at line 556 of file rl_DielectricLayer.h.

References rl_ReflectionCoefPOD::reflectivity().

rl_Traits::Bool rl_DielectricLayer::is_substrate (  )  const [inline]

Returns:
rl_Traits::True if this layer is the substrate, rl_Traits::False otherwise.

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]

Returns:
rl_Traits::True if this layer is the vacuum, rl_Traits::False otherwise.

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]

Returns:
the name of this layer as a character string.

Definition at line 568 of file rl_DielectricLayer.h.

Referenced by init(), and rl_DielectricLayer().

double rl_DielectricLayer::energy_min (  )  const [inline]

Returns:
the minimum energy allowed for this layer.

Definition at line 572 of file rl_DielectricLayer.h.

References rl_DielectricData::energy_min().

double rl_DielectricLayer::energy_max (  )  const [inline]

Returns:
the maximum energy allowed for this layer.

Definition at line 576 of file rl_DielectricLayer.h.

References rl_DielectricData::energy_max().

double rl_DielectricLayer::thickness (  )  const [inline]

Returns:
the layer thickness.

Definition at line 536 of file rl_DielectricLayer.h.

double rl_DielectricLayer::zcoat (  )  const [inline]

Returns:
the layer dimensionless thickness.

Definition at line 540 of file rl_DielectricLayer.h.

double rl_DielectricLayer::bulk_density_factor (  )  const [inline]

Returns:
the relative bulk density for this layer. 1.0 is nominal full bulk density

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.

Parameters:
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.

Parameters:
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.

Parameters:
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().


The documentation for this class was generated from the following files:

Generated on Mon Nov 3 18:15:05 2008 for rl_raylib by  doxygen 1.5.6