BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ScanResolution Class Referenceabstract
Inheritance diagram for ScanResolution:
Collaboration diagram for ScanResolution:

Public Member Functions

 ~ScanResolution () override
 
ScanResolutionclone () const override=0
 
const RangedDistributiondistribution () const
 
size_t nSamples () const
 
virtual DistrOutput generateSamples (double mean, size_t n_times) const =0
 
virtual DistrOutput generateSamples (const std::vector< double > &mean) const =0
 
virtual std::vector< double > stdDevs (double mean, size_t n_times) const =0
 
virtual std::vector< double > stdDevs (const std::vector< double > &mean) const =0
 
bool empty () const
 
std::string print () const
 
virtual void transferToCPP ()
 

Static Public Member Functions

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

Protected Types

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

Protected Member Functions

 ScanResolution ()
 
 ScanResolution (const RangedDistribution &distr)
 
virtual std::string name () const =0
 
virtual std::string printStdDevs () const =0
 

Private Attributes

std::unique_ptr< RangedDistributionm_distr
 

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 31 of file ScanResolution.h.

Constructor & Destructor Documentation

◆ ~ScanResolution()

ScanResolution::~ScanResolution ( )
overridedefault

◆ ScanResolution() [1/2]

ScanResolution::ScanResolution ( )
protecteddefault

◆ ScanResolution() [2/2]

ScanResolution::ScanResolution ( const RangedDistribution distr)
protected

Definition at line 211 of file ScanResolution.cpp.

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

Member Function Documentation

◆ scanRelativeResolution() [1/2]

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

Definition at line 159 of file ScanResolution.cpp.

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

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

◆ scanRelativeResolution() [2/2]

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

Definition at line 165 of file ScanResolution.cpp.

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

◆ scanAbsoluteResolution() [1/2]

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

Definition at line 171 of file ScanResolution.cpp.

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

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

◆ scanAbsoluteResolution() [2/2]

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

Definition at line 177 of file ScanResolution.cpp.

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

◆ scanEmptyResolution()

ScanResolution * ScanResolution::scanEmptyResolution ( )
static

Definition at line 183 of file ScanResolution.cpp.

184 {
185  return new ScanEmptyResolution();
186 }

◆ clone()

◆ distribution()

const RangedDistribution* ScanResolution::distribution ( ) const
inline

Definition at line 45 of file ScanResolution.h.

45 { return m_distr.get(); }

References m_distr.

◆ nSamples()

size_t ScanResolution::nSamples ( ) const

Definition at line 188 of file ScanResolution.cpp.

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

References m_distr.

◆ generateSamples() [1/2]

◆ generateSamples() [2/2]

◆ stdDevs() [1/2]

◆ stdDevs() [2/2]

◆ empty()

bool ScanResolution::empty ( ) const
inline

Definition at line 52 of file ScanResolution.h.

52 { return !m_distr; }

References m_distr.

◆ print()

std::string ScanResolution::print ( ) const

Prints object definition in python format.

Definition at line 195 of file ScanResolution.cpp.

196 {
197  std::stringstream result;
198  result << *m_distr << "\n";
199  result << pyfmt::indent() << "resolution = ";
200  result << "ba." << name();
201  result << "("
202  << "distribution"
203  << ", ";
204  result << printStdDevs();
205  result << ")";
206  return result.str();
207 }
virtual std::string printStdDevs() const =0
virtual std::string name() const =0
std::string indent(size_t width)
Returns a string of blanks with given width.
Definition: PyFmt.cpp:141

References pyfmt::indent(), m_distr, name(), and printStdDevs().

Referenced by operator<<().

Here is the call graph for this function:

◆ name()

◆ printStdDevs()

◆ 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<RangedDistribution> ScanResolution::m_distr
private

basic distribution function

Definition at line 64 of file ScanResolution.h.

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


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