1 #ifndef rl_DielectricLayer_h_INCLUDED 2 #define rl_DielectricLayer_h_INCLUDED 41 #include <rl_raylib/rl_Traits.h> 42 #include <rl_raylib/rl_Exception.h> 43 #include <rl_raylib/rl_DielectricData.h> 44 #include <rl_raylib/rl_ReflectionCoefPOD.h> 45 #include <rl_raylib/rl_TransmissionCoefPOD.h> 46 #include <rl_raylib/rl_Exception.h> 134 double phase_factor_;
217 std::size_t ndielpts,
218 double layer_thickness,
244 std::size_t ndielpts,
245 double layer_thickness,
261 int setup_for(
double energy,
double sinphi );
308 double alpha()
const;
315 double gamma()
const;
359 double reflectivity(
double polarization_factor = 0.0 )
const;
396 double zcoat()
const;
411 std::ostream&
dump_on( std::ostream& os,
char const pre[] =
"",
412 char const pst[] =
"" )
const;
421 void cdump_on( std::FILE* of,
char const pre[] =
"",
char const pst[] =
"" )
const;
431 char const pre[] =
"",
432 char const pst[] =
"" )
const;
447 apply_DebyeWaller_RSAO_factor(
462 apply_DebyeWaller_CSAO_factor(
475 apply_DebyeWaller_Spiller_factor(
double sinphi
533 {
return thickness_; }
553 {
return rflcoef_.
reflectivity( polarization_factor ); }
557 {
return is_substrate_; }
565 {
if ( name_ ) {
return name_; }
else {
return ""; } }
ERoughType roughness_type() const
Returns the roughness type of the upper surface of this layer.
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)
Initializer.
std::complex< double > complex
Typedef for the complex type.
int setup_for(double energy, double sinphi)
Set up layer state for given energy and graze angle.
double energy_max() const
double energy_min() const
double bulk_density_factor() const
Return the maximum energy covered by this dataset.
double bulk_density_factor() const
double reflectivity(double polarization_factor=0.0) const
Returns: this layer's reflectivity.
void reflect_nlayer(rl_DielectricLayer layer[], int num)
Compute reflectivity for a stack of num layers.
rl_Traits::Bool is_substrate() const
A Plain Ol' Data class representing complex reflection coefficients.
double alpha() const
Returns this layer's dielectric decrement (real part).
rl_Traits::ERoughType ERoughType
roughness type
void cdump_on(std::FILE *of, char const pre[]="", char const pst[]="") const
Dumps layer information to a C-style FILE* stream.
double reflectivity(double polarization_factor=0.0) const
evaluate the reflectivity.
rl_ReflectionCoefPOD const & reflection_coef() const
Returns this layer's complex reflection coefficient.
std::ostream & dump_on(std::ostream &os, char const pre[]="", char const pst[]="") const
Dumps layer information to a stream.
rl_Traits::complex complex
complex type
rl_DielectricLayer(char const layer_name[]=0)
Constructor.
void cprint_constraints_on(std::FILE *of, char const pre[]="", char const pst[]="") const
Dumps layer information and constraints to a C-style FILE* stream.
double energy_min() const
Return the minimum energy covered by this dataset.
char const * layer_name() const
A class encapsulating the dielectric data (alpha, gamma) as a function of energy.
rl_Traits::Bool is_vacuum() const
EInterpMode
Enumeration specifying the interpolation of the optical constants.
~rl_DielectricLayer()
Destructor.
ERoughType
Enumeration specifying the type of interlayer diffusion treatment.
rl_Traits::Bool is_vacuum() const
Returns True if the object is a vacuum state; False, otherwise.
complex const & propagator() const
The propagator for this layer.
double energy_max() const
Return the maximum energy covered by this dataset.
void reflect_amp(rl_DielectricLayer const &layer, double sinphi)
Compute reflection amplitude for the interface between this layer and the layer immediately above it.
A class encapsulating the multilayer reflection of a ray.
double gamma() const
Returns this layer's dielectric decrement (imag part).
A Plain Ol' Data class representing complex reflection coefficients.
Bool
Typedef for the Boolean type.
double roughness() const
Returns the roughness parameter of the upper surface of this layer.