BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ScanResolution Class Referenceabstract

Container for reflectivity resolution data. More...

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

Public Member Functions

 ~ScanResolution () override
 
ScanResolutionclone () const override=0
 
virtual double delta () const =0
 
const IRangedDistributiondistribution () const
 
bool empty () const
 
virtual DistrOutput generateSamples (const std::vector< double > &mean) const =0
 
virtual DistrOutput generateSamples (double mean, size_t n_times) const =0
 
virtual std::string name () const =0
 
size_t nSamples () const
 
virtual std::vector< double > stdDevs (const std::vector< double > &mean) const =0
 
virtual std::vector< double > stdDevs (double mean, size_t n_times) const =0
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 

Static Public Member Functions

static ScanResolutionscanAbsoluteResolution (const IRangedDistribution &distr, const std::vector< double > &stddevs)
 
static ScanResolutionscanAbsoluteResolution (const IRangedDistribution &distr, double stddev)
 
static ScanResolutionscanEmptyResolution ()
 
static ScanResolutionscanRelativeResolution (const IRangedDistribution &distr, const std::vector< double > &stddevs)
 
static ScanResolutionscanRelativeResolution (const IRangedDistribution &distr, double stddev)
 

Protected Types

using DistrOutput = std::vector< std::vector< ParameterSample > >
 

Protected Member Functions

 ScanResolution ()
 
 ScanResolution (const IRangedDistribution &distr)
 

Private Attributes

std::unique_ptr< IRangedDistributionm_distr
 basic distribution function More...
 

Detailed Description

Container for reflectivity resolution data.

Definition at line 28 of file ScanResolution.h.

Member Typedef Documentation

◆ DistrOutput

using ScanResolution::DistrOutput = std::vector<std::vector<ParameterSample> >
protected

Definition at line 30 of file ScanResolution.h.

Constructor & Destructor Documentation

◆ ~ScanResolution()

ScanResolution::~ScanResolution ( )
overridedefault

◆ ScanResolution() [1/2]

ScanResolution::ScanResolution ( )
protecteddefault

◆ ScanResolution() [2/2]

ScanResolution::ScanResolution ( const IRangedDistribution distr)
protected

Definition at line 196 of file ScanResolution.cpp.

196 : m_distr(distr.clone()) {}
IRangedDistribution * clone() const override=0
std::unique_ptr< IRangedDistribution > m_distr
basic distribution function

Member Function Documentation

◆ clone()

ScanResolution* ScanResolution::clone ( ) const
overridepure virtual

◆ delta()

virtual double ScanResolution::delta ( ) const
pure virtual

◆ distribution()

const IRangedDistribution* ScanResolution::distribution ( ) const
inline

Definition at line 44 of file ScanResolution.h.

44 { return m_distr.get(); }

References m_distr.

◆ empty()

bool ScanResolution::empty ( ) const
inline

Definition at line 51 of file ScanResolution.h.

51 { return !m_distr; }

References m_distr.

◆ generateSamples() [1/2]

virtual DistrOutput ScanResolution::generateSamples ( const std::vector< double > &  mean) const
pure virtual

◆ generateSamples() [2/2]

virtual DistrOutput ScanResolution::generateSamples ( double  mean,
size_t  n_times 
) const
pure virtual

◆ name()

virtual std::string ScanResolution::name ( ) const
pure virtual

◆ nSamples()

size_t ScanResolution::nSamples ( ) const

Definition at line 187 of file ScanResolution.cpp.

188 {
189  if (m_distr)
190  return m_distr->nSamples();
191  return 1;
192 }

References m_distr.

◆ scanAbsoluteResolution() [1/2]

ScanResolution * ScanResolution::scanAbsoluteResolution ( const IRangedDistribution distr,
const std::vector< double > &  stddevs 
)
static

Definition at line 176 of file ScanResolution.cpp.

178 {
179  return new ScanVectorAbsoluteResolution(distr, stddevs);
180 }

◆ scanAbsoluteResolution() [2/2]

ScanResolution * ScanResolution::scanAbsoluteResolution ( const IRangedDistribution distr,
double  stddev 
)
static

Definition at line 170 of file ScanResolution.cpp.

172 {
173  return new ScanSingleAbsoluteResolution(distr, stddev);
174 }

Referenced by AngularSpecScan::setAbsoluteAngularResolution(), QSpecScan::setAbsoluteQResolution(), AngularSpecScan::setAbsoluteWavelengthResolution(), and StandardSimulations::SpecularDivergentBeam().

◆ scanEmptyResolution()

ScanResolution * ScanResolution::scanEmptyResolution ( )
static

Definition at line 182 of file ScanResolution.cpp.

183 {
184  return new ScanEmptyResolution();
185 }

◆ scanRelativeResolution() [1/2]

ScanResolution * ScanResolution::scanRelativeResolution ( const IRangedDistribution distr,
const std::vector< double > &  stddevs 
)
static

Definition at line 164 of file ScanResolution.cpp.

166 {
167  return new ScanVectorRelativeResolution(distr, stddevs);
168 }

◆ scanRelativeResolution() [2/2]

ScanResolution * ScanResolution::scanRelativeResolution ( const IRangedDistribution distr,
double  stddev 
)
static

Definition at line 158 of file ScanResolution.cpp.

160 {
161  return new ScanSingleRelativeResolution(distr, stddev);
162 }

Referenced by AngularSpecScan::setRelativeAngularResolution(), QSpecScan::setRelativeQResolution(), and AngularSpecScan::setRelativeWavelengthResolution().

◆ stdDevs() [1/2]

virtual std::vector<double> ScanResolution::stdDevs ( const std::vector< double > &  mean) const
pure virtual

◆ stdDevs() [2/2]

virtual std::vector<double> ScanResolution::stdDevs ( double  mean,
size_t  n_times 
) const
pure virtual

◆ transferToCPP()

virtual void ICloneable::transferToCPP ( )
inlinevirtualinherited

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

Definition at line 34 of file ICloneable.h.

Member Data Documentation

◆ m_distr

std::unique_ptr<IRangedDistribution> ScanResolution::m_distr
private

basic distribution function

Definition at line 62 of file ScanResolution.h.

Referenced by distribution(), empty(), and nSamples().


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