BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ISpecularScan Class Referenceabstract

Description

Abstract base class for all types of specular scans.

Definition at line 34 of file ISpecularScan.h.

Inheritance diagram for ISpecularScan:
[legend]
Collaboration diagram for ISpecularScan:
[legend]

Public Member Functions

 ~ISpecularScan () override
 
const PolFilteranalyzer () const
 
ISpecularScanclone () const override=0
 
virtual const IAxiscoordinateAxis () const =0
 Returns coordinate axis assigned to the data holder. More...
 
virtual CoordSystem1DcreateCoordSystem () const =0
 
virtual std::vector< double > createIntensities (const std::vector< SpecularElement > &eles) const =0
 Returns intensity vector corresponding to convolution of given simulation elements. More...
 
virtual std::vector< double > footprint (size_t i, size_t n_elements) const =0
 Returns footprint correction factor for a range of simulation elements of size n_elements and starting from element with index i. More...
 
virtual const IFootprintFactorfootprintFactor () const =0
 Returns IFootprintFactor object pointer. More...
 
virtual std::vector< SpecularElementgenerateElements () const =0
 Generates simulation elements for specular simulations. More...
 
virtual size_t numberOfElements () const =0
 Returns the number of simulation elements. More...
 
bool polarized () const
 
PolMatrices polMatrices () const
 
void setAnalyzer (R3 direction, double efficiency, double total_transmission)
 Sets the polarization analyzer characteristics of the detector. More...
 
void setPolarization (R3 bloch_vector)
 Sets the polarization density matrix according to the given Bloch vector. More...
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 
virtual double wavelength () const =0
 

Protected Attributes

std::unique_ptr< R3 > m_beamPolarization
 Bloch vector encoding the beam's polarization. More...
 
std::unique_ptr< PolFilterm_polAnalyzer
 

Constructor & Destructor Documentation

◆ ~ISpecularScan()

ISpecularScan::~ISpecularScan ( )
overridedefault

Member Function Documentation

◆ analyzer()

const PolFilter* ISpecularScan::analyzer ( ) const
inline

Definition at line 45 of file ISpecularScan.h.

45 { return m_polAnalyzer.get(); }
std::unique_ptr< PolFilter > m_polAnalyzer
Definition: ISpecularScan.h:78

References m_polAnalyzer.

◆ clone()

ISpecularScan* ISpecularScan::clone ( ) const
overridepure virtual

Implements ICloneable.

Implemented in QzScan, and AlphaScan.

◆ coordinateAxis()

virtual const IAxis* ISpecularScan::coordinateAxis ( ) const
pure virtual

Returns coordinate axis assigned to the data holder.

Implemented in QzScan, and AlphaScan.

Referenced by SpecularSimulation::SpecularSimulation().

◆ createCoordSystem()

virtual CoordSystem1D* ISpecularScan::createCoordSystem ( ) const
pure virtual

Implemented in QzScan, and AlphaScan.

◆ createIntensities()

virtual std::vector<double> ISpecularScan::createIntensities ( const std::vector< SpecularElement > &  eles) const
pure virtual

Returns intensity vector corresponding to convolution of given simulation elements.

Implemented in QzScan, and AlphaScan.

◆ footprint()

virtual std::vector<double> ISpecularScan::footprint ( size_t  i,
size_t  n_elements 
) const
pure virtual

Returns footprint correction factor for a range of simulation elements of size n_elements and starting from element with index i.

Implemented in AlphaScan, and QzScan.

◆ footprintFactor()

virtual const IFootprintFactor* ISpecularScan::footprintFactor ( ) const
pure virtual

Returns IFootprintFactor object pointer.

Implemented in QzScan, and AlphaScan.

◆ generateElements()

virtual std::vector<SpecularElement> ISpecularScan::generateElements ( ) const
pure virtual

Generates simulation elements for specular simulations.

Implemented in QzScan, and AlphaScan.

◆ numberOfElements()

virtual size_t ISpecularScan::numberOfElements ( ) const
pure virtual

Returns the number of simulation elements.

Implemented in QzScan, and AlphaScan.

◆ polarized()

bool ISpecularScan::polarized ( ) const

Definition at line 31 of file ISpecularScan.cpp.

32 {
34 }
std::unique_ptr< R3 > m_beamPolarization
Bloch vector encoding the beam's polarization.
Definition: ISpecularScan.h:77

References m_beamPolarization, and m_polAnalyzer.

◆ polMatrices()

PolMatrices ISpecularScan::polMatrices ( ) const

Definition at line 36 of file ISpecularScan.cpp.

37 {
38  PolMatrices result;
41  if (m_polAnalyzer)
42  result.setAnalyzerMatrix(m_polAnalyzer->matrix());
43  return result;
44 }
Convenience class for handling polarization density matrix and polarization analyzer operator.
Definition: PolMatrices.h:29
void setAnalyzerMatrix(const SpinMatrix &analyzer)
Sets the polarization analyzer operator (in spin basis along z-axis)
Definition: PolMatrices.h:41
void setPolarizerMatrix(const SpinMatrix &polarization)
Sets the polarization density matrix (in spin basis along z-axis)
Definition: PolMatrices.h:35
static SpinMatrix FromBlochVector(const R3 &v)
Constructs matrix (I+v*s)/2, where s is the Pauli vector.
Definition: SpinMatrix.cpp:41

References SpinMatrix::FromBlochVector(), m_beamPolarization, m_polAnalyzer, PolMatrices::setAnalyzerMatrix(), and PolMatrices::setPolarizerMatrix().

Referenced by AlphaScan::generateElements(), and QzScan::generateElements().

Here is the call graph for this function:

◆ setAnalyzer()

void ISpecularScan::setAnalyzer ( R3  direction,
double  efficiency,
double  total_transmission 
)

Sets the polarization analyzer characteristics of the detector.

Definition at line 26 of file ISpecularScan.cpp.

27 {
28  m_polAnalyzer.reset(new PolFilter(direction, efficiency, total_transmission));
29 }
Detector properties (efficiency, transmission).
Definition: PolFilter.h:27

References m_polAnalyzer.

◆ setPolarization()

void ISpecularScan::setPolarization ( R3  bloch_vector)

Sets the polarization density matrix according to the given Bloch vector.

Definition at line 21 of file ISpecularScan.cpp.

22 {
23  m_beamPolarization.reset(new R3(bloch_vector));
24 }

References m_beamPolarization.

◆ transferToCPP()

virtual void ICloneable::transferToCPP ( )
inlinevirtualinherited

Used for Python overriding of clone (see swig/tweaks.py)

Definition at line 32 of file ICloneable.h.

◆ wavelength()

virtual double ISpecularScan::wavelength ( ) const
pure virtual

Implemented in QzScan, and AlphaScan.

Member Data Documentation

◆ m_beamPolarization

std::unique_ptr<R3> ISpecularScan::m_beamPolarization
protected

Bloch vector encoding the beam's polarization.

Definition at line 77 of file ISpecularScan.h.

Referenced by AlphaScan::clone(), QzScan::clone(), polarized(), polMatrices(), and setPolarization().

◆ m_polAnalyzer

std::unique_ptr<PolFilter> ISpecularScan::m_polAnalyzer
protected

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