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

Description

A frustum with a quadratic base.

Definition at line 23 of file Pyramid4.h.

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

Public Member Functions

 Pyramid4 (double base_edge, double height, double alpha)
 
 Pyramid4 (std::vector< double > P)
 
double alpha () const
 
void assert_platonic () const
 Assertions for Platonic solid. More...
 
double baseEdge () const
 
double bottomZ (const IRotation *rotation) const override
 
virtual bool canSliceAnalytically (const IRotation *rot) const
 Default implementation only allows rotations along z-axis. More...
 
void checkNodeArgs () const
 Raises exception if a parameter value is invalid. More...
 
std::string className () const final
 Returns the class name, to be hard-coded in each leaf class that inherits from INode. More...
 
Pyramid4clone () const override
 Returns a clone of this ISampleNode object. More...
 
std::vector< const Material * > containedMaterials () const
 Returns set of unique materials contained in this ISampleNode. More...
 
complex_t formfactor_at_bottom (C3 q) const override
 
virtual SpinMatrix formfactor_pol (C3 q) const
 Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions. Default implementation calls formfactor_at_bottom(q) and multiplies with the unit matrix. More...
 
double height () const
 
bool isMagnetic () const
 Returns true if there is any magnetic material in this ISampleNode. More...
 
virtual const Materialmaterial () const
 Returns nullptr, unless overwritten to return a specific material. More...
 
virtual std::vector< const INode * > nodeChildren () const
 Returns all children. More...
 
std::vector< const INode * > nodeOffspring () const
 Returns all descendants. More...
 
std::vector< ParaMetaparDefs () const final
 Returns the parameter definitions, to be hard-coded in each leaf class. More...
 
virtual std::string pythonConstructor () const
 Creates the Python constructor of this class (or derived classes) More...
 
double radialExtension () const override
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations. More...
 
std::string shapeName () const
 
virtual complex_t theFF (const WavevectorInfo &wavevectors) const
 
virtual SpinMatrix thePolFF (const WavevectorInfo &wavevectors) const
 
double topZ (const IRotation *rotation) const override
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 
double volume () const override
 

Protected Member Functions

void setPolyhedron (const ff::PolyhedralTopology &topology, double z_bottom, const std::vector< R3 > &vertices)
 Called by child classes to set faces and other internal variables. More...
 

Protected Attributes

std::vector< double > m_P
 
std::unique_ptr< IShape3Dm_shape3D
 IShape3D object, used to retrieve vertices (which may be approximate in the case of round shapes). For soft particles, this will be a hard mean shape. More...
 

Private Attributes

const double & m_alpha
 
const double & m_base_edge
 
const double & m_height
 
std::vector< R3 > m_vertices
 
double m_z_bottom
 for topZ, bottomZ computation only More...
 
std::unique_ptr< ff::Polyhedron > pimpl
 

Static Private Attributes

static const ff::PolyhedralTopology topology
 

Constructor & Destructor Documentation

◆ Pyramid4() [1/2]

Pyramid4::Pyramid4 ( double  base_edge,
double  height,
double  alpha 
)

Definition at line 68 of file Pyramid4.cpp.

69  : Pyramid4(std::vector<double>{base_edge, height, alpha})
70 {
71 }
double height() const
Definition: Pyramid4.h:39
double alpha() const
Definition: Pyramid4.h:41
Pyramid4(double base_edge, double height, double alpha)
Definition: Pyramid4.cpp:68

References alpha(), and height().

Referenced by clone().

Here is the call graph for this function:

◆ Pyramid4() [2/2]

Pyramid4::Pyramid4 ( std::vector< double >  P)

Definition at line 29 of file Pyramid4.cpp.

31  , m_base_edge(m_P[0])
32  , m_height(m_P[1])
33  , m_alpha(m_P[2])
34 {
35  checkNodeArgs();
36  double cot_alpha = Math::cot(m_alpha);
37  if (!std::isfinite(cot_alpha))
38  throw std::runtime_error("pyramid angle alpha out of bounds");
39  double r = cot_alpha * 2 * m_height / m_base_edge; // [L(base)-L(top)]/L(base)
40  if (r > 1) {
41  std::ostringstream ostr;
42  ostr << "Pyramid4() -> Error in class initialization with parameters";
43  ostr << " base_edge:" << m_base_edge;
44  ostr << " height:" << m_height;
45  ostr << " alpha[rad]:" << m_alpha << "\n\n";
46  ostr << "Check for 'height <= base_edge*tan(alpha)' failed.";
47  throw std::runtime_error(ostr.str());
48  }
49 
50  double a = m_base_edge / 2;
51  double b = a * (1 - r);
52 
53  double zcom = m_height * (.5 - 2 * r / 3 + r * r / 4) / (1 - r + r * r / 3); // center of mass
54 
55  setPolyhedron(topology, -zcom,
56  {// base:
57  {-a, -a, -zcom},
58  {a, -a, -zcom},
59  {a, a, -zcom},
60  {-a, a, -zcom},
61  // top:
62  {-b, -b, m_height - zcom},
63  {b, -b, m_height - zcom},
64  {b, b, m_height - zcom},
65  {-b, b, m_height - zcom}});
66 }
void setPolyhedron(const ff::PolyhedralTopology &topology, double z_bottom, const std::vector< R3 > &vertices)
Called by child classes to set faces and other internal variables.
IFormFactorPolyhedron(const std::vector< double > &PValues)
The mathematics implemented here is described in full detail in a paper by Joachim Wuttke,...
void checkNodeArgs() const
Raises exception if a parameter value is invalid.
Definition: INode.cpp:27
std::vector< double > m_P
Definition: INode.h:63
const double & m_height
Definition: Pyramid4.h:47
const double & m_base_edge
Definition: Pyramid4.h:46
const double & m_alpha
Definition: Pyramid4.h:48
static const ff::PolyhedralTopology topology
Definition: Pyramid4.h:44
double cot(double x)
cotangent function:
Definition: Functions.cpp:47

References INode::checkNodeArgs(), Math::cot(), m_alpha, m_base_edge, m_height, IFormFactorPolyhedron::setPolyhedron(), and topology.

Here is the call graph for this function:

Member Function Documentation

◆ alpha()

double Pyramid4::alpha ( ) const
inline

Definition at line 41 of file Pyramid4.h.

41 { return m_alpha; }

References m_alpha.

Referenced by Pyramid4().

◆ assert_platonic()

void IFormFactorPolyhedron::assert_platonic ( ) const
inherited

Assertions for Platonic solid.

Definition at line 79 of file IFormFactorPolyhedron.cpp.

80 {
81  pimpl->assert_platonic();
82 }
std::unique_ptr< ff::Polyhedron > pimpl

References IFormFactorPolyhedron::pimpl.

Referenced by Dodecahedron::Dodecahedron(), Icosahedron::Icosahedron(), PlatonicOctahedron::PlatonicOctahedron(), and PlatonicTetrahedron::PlatonicTetrahedron().

◆ baseEdge()

double Pyramid4::baseEdge ( ) const
inline

Definition at line 40 of file Pyramid4.h.

40 { return m_base_edge; }

References m_base_edge.

◆ bottomZ()

double IFormFactorPolyhedron::bottomZ ( const IRotation rotation) const
overridevirtualinherited

Reimplemented from IFormFactor.

Definition at line 53 of file IFormFactorPolyhedron.cpp.

54 {
55  return PolyhedralUtil::BottomZ(m_vertices, rotation);
56 }
std::vector< R3 > m_vertices
double BottomZ(const std::vector< R3 > &vertices, const IRotation *rotation)
Calculates the z-coordinate of the lowest vertex after rotation.

References PolyhedralUtil::BottomZ(), and IFormFactorPolyhedron::m_vertices.

Here is the call graph for this function:

◆ canSliceAnalytically()

bool IFormFactor::canSliceAnalytically ( const IRotation rot) const
virtualinherited

Default implementation only allows rotations along z-axis.

Reimplemented in Sphere.

Definition at line 64 of file IFormFactor.cpp.

65 {
66  return !rotation || rotation->zInvariant();
67 }

References IRotation::zInvariant().

Here is the call graph for this function:

◆ checkNodeArgs()

void INode::checkNodeArgs ( ) const
inherited

Raises exception if a parameter value is invalid.

Definition at line 27 of file INode.cpp.

28 {
29  size_t nP = m_P.size();
30  if (parDefs().size() != nP) {
31  std::cerr << "BUG in class " << className() << std::endl;
32  std::cerr << "#m_P = " << nP << std::endl;
33  std::cerr << "#PDf = " << parDefs().size() << std::endl;
34  for (const ParaMeta& pm : parDefs())
35  std::cerr << " PDf: " << pm.name << std::endl;
36  ASSERT(0);
37  }
38  ASSERT(parDefs().size() == nP);
39  for (size_t i = 0; i < nP; ++i) {
40  const ParaMeta pm = parDefs()[i];
41 
43  if (pm.vMin == -INF) {
44  ASSERT(pm.vMax == +INF);
45  // nothing to do
46  } else if (pm.vMax == +INF) {
47  ASSERT(pm.vMin == 0);
48  limits = RealLimits::nonnegative();
49  } else {
50  limits = RealLimits::limited(pm.vMin, pm.vMax);
51  }
52  limits.check(pm.name, m_P[i]);
53  }
54 }
#define ASSERT(condition)
Definition: Assert.h:45
const double INF
Definition: INode.h:26
virtual std::vector< ParaMeta > parDefs() const
Returns the parameter definitions, to be hard-coded in each leaf class.
Definition: INode.h:51
virtual std::string className() const =0
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
Limits for a real fit parameter.
Definition: RealLimits.h:24
static RealLimits limitless()
Creates an object without bounds (default)
Definition: RealLimits.cpp:139
void check(const std::string &name, double value) const
Throws if value is outside limits. Parameter 'name' is for exception message.
Definition: RealLimits.cpp:170
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
Definition: RealLimits.cpp:124
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
Definition: RealLimits.cpp:134
Metadata of one model parameter.
Definition: INode.h:29
double vMin
Definition: INode.h:33
double vMax
Definition: INode.h:34
std::string name
Definition: INode.h:30

References ASSERT, RealLimits::check(), INode::className(), INF, RealLimits::limited(), RealLimits::limitless(), INode::m_P, ParaMeta::name, RealLimits::nonnegative(), INode::parDefs(), ParaMeta::vMax, and ParaMeta::vMin.

Referenced by BarGauss::BarGauss(), BarLorentz::BarLorentz(), Bipyramid4::Bipyramid4(), Box::Box(), CantellatedCube::CantellatedCube(), Cone::Cone(), ConstantBackground::ConstantBackground(), CosineRippleBox::CosineRippleBox(), CosineRippleGauss::CosineRippleGauss(), CosineRippleLorentz::CosineRippleLorentz(), Cylinder::Cylinder(), DistributionCosine::DistributionCosine(), DistributionGate::DistributionGate(), DistributionGaussian::DistributionGaussian(), DistributionLogNormal::DistributionLogNormal(), DistributionLorentz::DistributionLorentz(), DistributionTrapezoid::DistributionTrapezoid(), Dodecahedron::Dodecahedron(), EllipsoidalCylinder::EllipsoidalCylinder(), FootprintGauss::FootprintGauss(), FootprintSquare::FootprintSquare(), FuzzySphere::FuzzySphere(), GaussSphere::GaussSphere(), HemiEllipsoid::HemiEllipsoid(), HollowSphere::HollowSphere(), HorizontalCylinder::HorizontalCylinder(), Icosahedron::Icosahedron(), LongBoxGauss::LongBoxGauss(), LongBoxLorentz::LongBoxLorentz(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron::PlatonicTetrahedron(), Prism3::Prism3(), Prism6::Prism6(), Profile1DCauchy::Profile1DCauchy(), Profile1DCosine::Profile1DCosine(), Profile1DGate::Profile1DGate(), Profile1DGauss::Profile1DGauss(), Profile1DTriangle::Profile1DTriangle(), Profile1DVoigt::Profile1DVoigt(), Profile2DCauchy::Profile2DCauchy(), Profile2DCone::Profile2DCone(), Profile2DGate::Profile2DGate(), Profile2DGauss::Profile2DGauss(), Profile2DVoigt::Profile2DVoigt(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4(), Pyramid6::Pyramid6(), RotationEuler::RotationEuler(), RotationX::RotationX(), RotationY::RotationY(), RotationZ::RotationZ(), SawtoothRippleBox::SawtoothRippleBox(), SawtoothRippleGauss::SawtoothRippleGauss(), SawtoothRippleLorentz::SawtoothRippleLorentz(), Sphere::Sphere(), Spheroid::Spheroid(), TruncatedCube::TruncatedCube(), TruncatedSphere::TruncatedSphere(), and TruncatedSpheroid::TruncatedSpheroid().

Here is the call graph for this function:

◆ className()

std::string Pyramid4::className ( ) const
inlinefinalvirtual

Returns the class name, to be hard-coded in each leaf class that inherits from INode.

Implements INode.

Definition at line 30 of file Pyramid4.h.

30 { return "Pyramid4"; }

◆ clone()

Pyramid4* Pyramid4::clone ( ) const
inlineoverridevirtual

Returns a clone of this ISampleNode object.

Implements IFormFactor.

Definition at line 29 of file Pyramid4.h.

29 { return new Pyramid4(m_base_edge, m_height, m_alpha); }

References Pyramid4(), m_alpha, m_base_edge, and m_height.

Here is the call graph for this function:

◆ containedMaterials()

std::vector< const Material * > ISampleNode::containedMaterials ( ) const
inherited

Returns set of unique materials contained in this ISampleNode.

Definition at line 25 of file ISampleNode.cpp.

26 {
27  std::vector<const Material*> result;
28  if (const Material* p_material = material())
29  result.push_back(p_material);
30  for (const auto* child : nodeChildren()) {
31  if (const auto* sample = dynamic_cast<const ISampleNode*>(child)) {
32  for (const Material* p_material : sample->containedMaterials())
33  result.push_back(p_material);
34  }
35  }
36  return result;
37 }
virtual std::vector< const INode * > nodeChildren() const
Returns all children.
Definition: INode.cpp:56
Abstract base class for sample components and properties related to scattering.
Definition: ISampleNode.h:27
virtual const Material * material() const
Returns nullptr, unless overwritten to return a specific material.
Definition: ISampleNode.h:36
A wrapper for underlying material implementation.
Definition: Material.h:35

References ISampleNode::material(), and INode::nodeChildren().

Referenced by SampleUtils::Multilayer::ContainsCompatibleMaterials(), SampleToPython::initLabels(), and ISampleNode::isMagnetic().

Here is the call graph for this function:

◆ formfactor_at_bottom()

complex_t IFormFactorPolyhedron::formfactor_at_bottom ( C3  q) const
overridevirtualinherited

Implements IFormFactor.

Definition at line 63 of file IFormFactorPolyhedron.cpp.

64 {
65  return exp_I(-m_z_bottom * q.z()) * pimpl->formfactor(q);
66 }
double m_z_bottom
for topZ, bottomZ computation only

References IFormFactorPolyhedron::m_z_bottom, and IFormFactorPolyhedron::pimpl.

◆ formfactor_pol()

SpinMatrix IFormFactor::formfactor_pol ( C3  q) const
virtualinherited

Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactions. Default implementation calls formfactor_at_bottom(q) and multiplies with the unit matrix.

Definition at line 78 of file IFormFactor.cpp.

79 {
81 }
virtual complex_t formfactor_at_bottom(C3 q) const =0
static SpinMatrix One()
Definition: SpinMatrix.cpp:36

References IFormFactor::formfactor_at_bottom(), and SpinMatrix::One().

Referenced by IFormFactor::thePolFF().

Here is the call graph for this function:

◆ height()

double Pyramid4::height ( ) const
inline

Definition at line 39 of file Pyramid4.h.

39 { return m_height; }

References m_height.

Referenced by Pyramid4().

◆ isMagnetic()

bool ISampleNode::isMagnetic ( ) const
inherited

Returns true if there is any magnetic material in this ISampleNode.

Definition at line 39 of file ISampleNode.cpp.

40 {
41  const auto materials = containedMaterials();
42  return std::any_of(materials.cbegin(), materials.cend(),
43  [](const Material* mat) { return mat->isMagneticMaterial(); });
44 }
std::vector< const Material * > containedMaterials() const
Returns set of unique materials contained in this ISampleNode.
Definition: ISampleNode.cpp:25

References ISampleNode::containedMaterials().

Referenced by reSample::make().

Here is the call graph for this function:

◆ material()

virtual const Material* ISampleNode::material ( ) const
inlinevirtualinherited

Returns nullptr, unless overwritten to return a specific material.

Reimplemented in Particle, and Layer.

Definition at line 36 of file ISampleNode.h.

36 { return nullptr; }

Referenced by ISampleNode::containedMaterials().

◆ nodeChildren()

◆ nodeOffspring()

std::vector< const INode * > INode::nodeOffspring ( ) const
inherited

Returns all descendants.

Definition at line 61 of file INode.cpp.

62 {
63  std::vector<const INode*> result;
64  result.push_back(this);
65  for (const auto* child : nodeChildren()) {
66  for (const auto* p : child->nodeOffspring())
67  result.push_back(p);
68  }
69  return result;
70 }

References INode::nodeChildren().

Here is the call graph for this function:

◆ parDefs()

std::vector<ParaMeta> Pyramid4::parDefs ( ) const
inlinefinalvirtual

Returns the parameter definitions, to be hard-coded in each leaf class.

Reimplemented from INode.

Definition at line 32 of file Pyramid4.h.

33  {
34  return {{"BaseEdge", "nm", "base edge length", 0, +INF, 0},
35  {"Height", "nm", "height", 0, +INF, 0},
36  {"Alpha", "rad", "angle between base and a side face", 0., M_PI, 0}};
37  }
#define M_PI
Definition: Constants.h:44

References INF, and M_PI.

◆ pythonConstructor()

std::string IFormFactor::pythonConstructor ( ) const
virtualinherited

Creates the Python constructor of this class (or derived classes)

Definition at line 69 of file IFormFactor.cpp.

70 {
71  std::vector<std::pair<double, std::string>> arguments;
72  for (size_t i = 0; i < parDefs().size(); i++)
73  arguments.emplace_back(m_P[i], parDefs()[i].unit);
74 
75  return Py::Fmt::printFunction(className(), arguments);
76 }
std::string printFunction(const std::string &name, const std::vector< std::pair< double, std::string >> &arguments)
Print a function in the form "<name>(<arguments>)". arguments will be processed by printArguments(),...
Definition: PyFmt.cpp:168

References INode::className(), INode::m_P, INode::parDefs(), and Py::Fmt::printFunction().

Here is the call graph for this function:

◆ radialExtension()

double IFormFactorPolyhedron::radialExtension ( ) const
overridevirtualinherited

Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations.

Implements IFormFactor.

Definition at line 72 of file IFormFactorPolyhedron.cpp.

73 {
74  return pimpl->radius();
75 }

References IFormFactorPolyhedron::pimpl.

◆ setPolyhedron()

void IFormFactorPolyhedron::setPolyhedron ( const ff::PolyhedralTopology &  topology,
double  z_bottom,
const std::vector< R3 > &  vertices 
)
protectedinherited

Called by child classes to set faces and other internal variables.

Definition at line 41 of file IFormFactorPolyhedron.cpp.

43 {
44  m_z_bottom = z_bottom;
45 
46  m_vertices.clear();
47  for (const R3& vertex : vertices)
48  m_vertices.push_back(vertex - R3{0, 0, z_bottom});
49 
50  pimpl = std::make_unique<ff::Polyhedron>(topology, vertices);
51 }

References IFormFactorPolyhedron::m_vertices, IFormFactorPolyhedron::m_z_bottom, and IFormFactorPolyhedron::pimpl.

Referenced by Bipyramid4::Bipyramid4(), CantellatedCube::CantellatedCube(), Dodecahedron::Dodecahedron(), Icosahedron::Icosahedron(), PlatonicOctahedron::PlatonicOctahedron(), PlatonicTetrahedron::PlatonicTetrahedron(), Pyramid2::Pyramid2(), Pyramid3::Pyramid3(), Pyramid4(), Pyramid6::Pyramid6(), and TruncatedCube::TruncatedCube().

◆ shapeName()

std::string IFormFactor::shapeName ( ) const
inherited

Definition at line 33 of file IFormFactor.cpp.

34 {
35  if (className().substr(0, 10) == "FormFactor")
36  return className().substr(10);
37  return className();
38 }

References INode::className().

Here is the call graph for this function:

◆ theFF()

complex_t IFormFactor::theFF ( const WavevectorInfo wavevectors) const
virtualinherited

Definition at line 40 of file IFormFactor.cpp.

41 {
42  return formfactor_at_bottom(wavevectors.getQ());
43 }
C3 getQ() const

References IFormFactor::formfactor_at_bottom(), and WavevectorInfo::getQ().

Here is the call graph for this function:

◆ thePolFF()

SpinMatrix IFormFactor::thePolFF ( const WavevectorInfo wavevectors) const
virtualinherited

Definition at line 45 of file IFormFactor.cpp.

46 {
47  return formfactor_pol(wavevectors.getQ());
48 }
virtual SpinMatrix formfactor_pol(C3 q) const
Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case of matrix interactio...
Definition: IFormFactor.cpp:78

References IFormFactor::formfactor_pol(), and WavevectorInfo::getQ().

Here is the call graph for this function:

◆ topZ()

double IFormFactorPolyhedron::topZ ( const IRotation rotation) const
overridevirtualinherited

Reimplemented from IFormFactor.

Definition at line 58 of file IFormFactorPolyhedron.cpp.

59 {
60  return PolyhedralUtil::TopZ(m_vertices, rotation);
61 }
double TopZ(const std::vector< R3 > &vertices, const IRotation *rotation)
Calculates the z-coordinate of the highest vertex after rotation.

References IFormFactorPolyhedron::m_vertices, and PolyhedralUtil::TopZ().

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 32 of file ICloneable.h.

◆ volume()

double IFormFactorPolyhedron::volume ( ) const
overridevirtualinherited

Reimplemented from IFormFactor.

Definition at line 68 of file IFormFactorPolyhedron.cpp.

69 {
70  return pimpl->volume();
71 }

References IFormFactorPolyhedron::pimpl.

Member Data Documentation

◆ m_alpha

const double& Pyramid4::m_alpha
private

Definition at line 48 of file Pyramid4.h.

Referenced by Pyramid4(), alpha(), and clone().

◆ m_base_edge

const double& Pyramid4::m_base_edge
private

Definition at line 46 of file Pyramid4.h.

Referenced by Pyramid4(), baseEdge(), and clone().

◆ m_height

const double& Pyramid4::m_height
private

Definition at line 47 of file Pyramid4.h.

Referenced by Pyramid4(), clone(), and height().

◆ m_P

◆ m_shape3D

◆ m_vertices

std::vector<R3> IFormFactorPolyhedron::m_vertices
privateinherited

◆ m_z_bottom

double IFormFactorPolyhedron::m_z_bottom
privateinherited

for topZ, bottomZ computation only

Definition at line 55 of file IFormFactorPolyhedron.h.

Referenced by IFormFactorPolyhedron::formfactor_at_bottom(), and IFormFactorPolyhedron::setPolyhedron().

◆ pimpl

◆ topology

const ff::PolyhedralTopology Pyramid4::topology
staticprivate
Initial value:
= {{
{{3, 2, 1, 0}, true},
{{0, 1, 5, 4}, false},
{{1, 2, 6, 5}, false},
{{2, 3, 7, 6}, false},
{{3, 0, 4, 7}, false},
{{4, 5, 6, 7}, true}
},
false}

Definition at line 44 of file Pyramid4.h.

Referenced by Pyramid4().


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