BornAgain  1.19.79
Simulate and fit neutron and x-ray scattering at grazing incidence
InterferenceRadialParaCrystalItem Class Reference

Description

Definition at line 161 of file InterferenceItems.h.

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

Public Member Functions

 InterferenceRadialParaCrystalItem ()
 
std::unique_ptr< IInterference > createInterference () const override
 
DoubleDescriptor dampingLength () const
 
DoubleDescriptor domainSize () const
 
DoubleDescriptor kappa () const
 
DoubleDescriptor peakDistance () const
 
DoubleDescriptor positionVariance () const
 
SelectionDescriptor< Profile1DItem * > probabilityDistribution () const
 
void serialize (Streamer &s) override
 
void setPDFType (Profile1DItem *p)
 

Protected Attributes

DoubleProperty m_positionVariance
 

Private Attributes

DoubleProperty m_dampingLength
 
DoubleProperty m_domainSize
 
DoubleProperty m_kappa
 
SelectionProperty< Profile1DItem * > m_pdf
 
DoubleProperty m_peakDistance
 

Constructor & Destructor Documentation

◆ InterferenceRadialParaCrystalItem()

InterferenceRadialParaCrystalItem::InterferenceRadialParaCrystalItem ( )

Definition at line 346 of file InterferenceItems.cpp.

347 {
348  m_peakDistance.init("Peak distance", "Average distance to the next neighbor", 20.0,
349  Unit::nanometer, "peak");
350  m_dampingLength.init("Damping length", "The damping (coherence) length of the paracrystal",
351  1000.0, Unit::nanometer, "dampingLen");
352  m_domainSize.init("Domain size", "Size of coherence domain along the lattice main axis", 0.0,
353  Unit::nanometer, "size");
354  m_kappa.init("SizeSpaceCoupling",
355  "Size spacing coupling parameter of the Size Spacing Correlation Approximation",
356  0.0, Unit::unitless, "kappa");
357  m_pdf.init<Profile1DItemCatalog>("PDF", "One-dimensional probability distribution", "pdf");
358 }
@ unitless
@ nanometer
void init(const QString &label, const QString &tooltip, double value, const variant< QString, Unit > &unit, const QString &persistentTag)
SelectionProperty< Profile1DItem * > m_pdf
void init(const QString &label, const QString &tooltip, const QString &persistentTag, ArgsForCreation... argsForCreation)
Initialize by means of a catalog class and optional creation arguments.

References SelectionProperty< T >::init(), DoubleProperty::init(), m_dampingLength, m_domainSize, m_kappa, m_pdf, m_peakDistance, nanometer, and unitless.

Here is the call graph for this function:

Member Function Documentation

◆ createInterference()

std::unique_ptr< IInterference > InterferenceRadialParaCrystalItem::createInterference ( ) const
overridevirtual

Implements InterferenceItem.

Definition at line 360 of file InterferenceItems.cpp.

361 {
362  auto result = std::make_unique<InterferenceRadialParaCrystal>(m_peakDistance, m_dampingLength);
363  result->setDomainSize(m_domainSize);
364  result->setKappa(m_kappa);
365  auto pdf = m_pdf->createProfile();
366  result->setProbabilityDistribution(*pdf);
367  result->setPositionVariance(positionVariance());
368  return std::unique_ptr<IInterference>(result.release());
369 }
DoubleDescriptor positionVariance() const
virtual std::unique_ptr< IProfile1D > createProfile() const =0

References Profile1DItem::createProfile(), m_dampingLength, m_domainSize, m_kappa, m_pdf, m_peakDistance, and InterferenceItem::positionVariance().

Here is the call graph for this function:

◆ dampingLength()

DoubleDescriptor InterferenceRadialParaCrystalItem::dampingLength ( ) const

Definition at line 387 of file InterferenceItems.cpp.

388 {
389  return m_dampingLength;
390 }

References m_dampingLength.

◆ domainSize()

DoubleDescriptor InterferenceRadialParaCrystalItem::domainSize ( ) const

Definition at line 392 of file InterferenceItems.cpp.

393 {
394  return m_domainSize;
395 }

References m_domainSize.

◆ kappa()

DoubleDescriptor InterferenceRadialParaCrystalItem::kappa ( ) const

Definition at line 397 of file InterferenceItems.cpp.

398 {
399  return m_kappa;
400 }

References m_kappa.

◆ peakDistance()

DoubleDescriptor InterferenceRadialParaCrystalItem::peakDistance ( ) const

Definition at line 382 of file InterferenceItems.cpp.

383 {
384  return m_peakDistance;
385 }

References m_peakDistance.

◆ positionVariance()

◆ probabilityDistribution()

SelectionDescriptor< Profile1DItem * > InterferenceRadialParaCrystalItem::probabilityDistribution ( ) const

Definition at line 403 of file InterferenceItems.cpp.

404 {
405  return m_pdf;
406 }

References m_pdf.

◆ serialize()

void InterferenceRadialParaCrystalItem::serialize ( Streamer s)
overridevirtual

Implements InterferenceItem.

Definition at line 371 of file InterferenceItems.cpp.

372 {
373  s.assertVersion(0);
379  Serialize::rwSelected<Profile1DItemCatalog>(s, m_pdf);
380 }
void assertVersion(unsigned expectedVersion) const
As reader, throws DeserializationException unless the expected version is read. As writer,...
Definition: Streamer.cpp:26
void rwProperty(Streamer &s, DoubleProperty &d)

References Streamer::assertVersion(), m_dampingLength, m_domainSize, m_kappa, m_pdf, m_peakDistance, InterferenceItem::m_positionVariance, and Serialize::rwProperty().

Here is the call graph for this function:

◆ setPDFType()

void InterferenceRadialParaCrystalItem::setPDFType ( Profile1DItem p)

Definition at line 408 of file InterferenceItems.cpp.

409 {
410  m_pdf.set(p);
411 }
void set(T t, bool callInitializer=false)
Directly set the new item.

References m_pdf, and SelectionProperty< T >::set().

Here is the call graph for this function:

Member Data Documentation

◆ m_dampingLength

DoubleProperty InterferenceRadialParaCrystalItem::m_dampingLength
private

◆ m_domainSize

DoubleProperty InterferenceRadialParaCrystalItem::m_domainSize
private

◆ m_kappa

DoubleProperty InterferenceRadialParaCrystalItem::m_kappa
private

◆ m_pdf

SelectionProperty<Profile1DItem*> InterferenceRadialParaCrystalItem::m_pdf
private

◆ m_peakDistance

DoubleProperty InterferenceRadialParaCrystalItem::m_peakDistance
private

◆ m_positionVariance


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