BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution Class Reference
Inheritance diagram for anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution:
Collaboration diagram for anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution:

Public Member Functions

 ScanEmptyResolution ()
 
 ~ScanEmptyResolution () override=default
 
ScanResolutionclone () const override
 
DistrOutput generateSamples (double mean, size_t n_times) const override
 
DistrOutput generateSamples (const std::vector< double > &mean) const override
 
std::vector< double > stdDevs (double mean, size_t n_times) const override
 
std::vector< double > stdDevs (const std::vector< double > &mean) const override
 
const RangedDistributiondistribution () const
 
size_t nSamples () const
 
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

std::string name () const override
 
std::string printStdDevs () const override
 

Private Attributes

std::unique_ptr< RangedDistributionm_distr
 

Detailed Description

Definition at line 137 of file ScanResolution.cpp.

Member Typedef Documentation

◆ DistrOutput

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

Definition at line 31 of file ScanResolution.h.

Constructor & Destructor Documentation

◆ ScanEmptyResolution()

anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::ScanEmptyResolution ( )
inline

Definition at line 140 of file ScanResolution.cpp.

140 : ScanResolution() {}

◆ ~ScanEmptyResolution()

anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::~ScanEmptyResolution ( )
overridedefault

Member Function Documentation

◆ clone()

ScanResolution* anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::clone ( ) const
inlineoverridevirtual

◆ generateSamples() [1/2]

ScanEmptyResolution::DistrOutput anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::generateSamples ( double  mean,
size_t  n_times 
) const
overridevirtual

Implements ScanResolution.

Definition at line 340 of file ScanResolution.cpp.

342 {
343  return DistrOutput(n_times, std::vector<ParameterSample>{ParameterSample(mean, 1.)});
344 }
A parameter value with a weight, as obtained when sampling from a distribution.
std::vector< std::vector< ParameterSample > > DistrOutput

◆ generateSamples() [2/2]

ScanEmptyResolution::DistrOutput anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::generateSamples ( const std::vector< double > &  mean) const
overridevirtual

Implements ScanResolution.

Definition at line 347 of file ScanResolution.cpp.

348 {
349  DistrOutput result;
350  result.reserve(mean.size());
351  for (size_t i = 0, size = mean.size(); i < size; ++i)
352  result.push_back({ParameterSample(mean[i], 1.0)});
353  return result;
354 }

◆ stdDevs() [1/2]

std::vector< double > anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::stdDevs ( double  mean,
size_t  n_times 
) const
overridevirtual

Implements ScanResolution.

Definition at line 356 of file ScanResolution.cpp.

357 {
358  return std::vector<double>(n_times, 0.0);
359 }

◆ stdDevs() [2/2]

std::vector< double > anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::stdDevs ( const std::vector< double > &  mean) const
overridevirtual

Implements ScanResolution.

Definition at line 361 of file ScanResolution.cpp.

362 {
363  return std::vector<double>(mean.size(), 0.0);
364 }

◆ name()

std::string anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::name ( ) const
overrideprotectedvirtual

Implements ScanResolution.

Definition at line 366 of file ScanResolution.cpp.

367 {
368  throw std::runtime_error(
369  "Error in ScanEmptyResolution::name: attempt to get a name of an empty resolution object.");
370 }

◆ printStdDevs()

std::string anonymous_namespace{ScanResolution.cpp}::ScanEmptyResolution::printStdDevs ( ) const
overrideprotectedvirtual

Implements ScanResolution.

Definition at line 372 of file ScanResolution.cpp.

373 {
374  throw std::runtime_error("Error in ScanEmptyResolution::printStdDevs: attempt to print data "
375  "from empty resolution object.");
376 }

◆ scanRelativeResolution() [1/2]

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

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

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

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

Definition at line 177 of file ScanResolution.cpp.

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

◆ scanEmptyResolution()

ScanResolution * ScanResolution::scanEmptyResolution ( )
staticinherited

Definition at line 183 of file ScanResolution.cpp.

184 {
185  return new ScanEmptyResolution();
186 }

◆ distribution()

const RangedDistribution* ScanResolution::distribution ( ) const
inlineinherited

Definition at line 45 of file ScanResolution.h.

45 { return m_distr.get(); }
std::unique_ptr< RangedDistribution > m_distr
basic distribution function

References ScanResolution::m_distr.

◆ nSamples()

size_t ScanResolution::nSamples ( ) const
inherited

Definition at line 188 of file ScanResolution.cpp.

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

References ScanResolution::m_distr.

◆ empty()

bool ScanResolution::empty ( ) const
inlineinherited

Definition at line 52 of file ScanResolution.h.

52 { return !m_distr; }

References ScanResolution::m_distr.

◆ print()

std::string ScanResolution::print ( ) const
inherited

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(), ScanResolution::m_distr, ScanResolution::name(), and ScanResolution::printStdDevs().

Referenced by operator<<().

Here is the call graph for this function:

◆ 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
privateinherited

basic distribution function

Definition at line 64 of file ScanResolution.h.

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


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