BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
INodeVisitor.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Param/Node/INodeVisitor.h
6 //! @brief Defines interface class INodeVisitor.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************** //
14 
15 #ifndef BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
16 #define BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
17 
18 class BasicLattice;
19 class Beam;
20 class ConstantBackground;
22 class Crystal;
23 class DistributionCosine;
24 class DistributionGate;
29 class FootprintGauss;
30 class FootprintSquare;
32 class FormFactorBarGauss;
34 class FormFactorBox;
36 class FormFactorCone;
37 class FormFactorCone6;
39 class FormFactorCrystal;
41 class FormFactorCylinder;
42 class FormFactorDWBA;
43 class FormFactorDWBAPol;
48 class FormFactorDot;
58 class FormFactorPrism3;
59 class FormFactorPrism6;
60 class FormFactorPyramid;
73 class FormFactorWeighted;
92 class GISASSimulation;
93 class HexagonalLattice;
94 class IAbstractParticle;
96 class IdentityRotation;
97 class IFormFactor;
98 class IFormFactorBorn;
101 class ILayout;
102 class INode;
103 class Instrument;
115 class IParticle;
116 class IPeakShape;
117 class IRotation;
118 class ISample;
119 class IsGISAXSDetector;
120 class Layer;
121 class LayerInterface;
122 class LayerRoughness;
123 class MesoCrystal;
124 class MultiLayer;
125 class OffSpecSimulation;
126 class Particle;
127 class ParticleComposition;
128 class ParticleCoreShell;
130 class ParticleLayout;
132 class RectangularDetector;
134 class RotationEuler;
135 class RotationX;
136 class RotationY;
137 class RotationZ;
138 class SpecularDetector1D;
139 class SpecularSimulation;
140 class SphericalDetector;
141 class SquareLattice;
142 
143 //! Visitor interface to visit ISample objects.
144 //! @ingroup samples_internal
145 
146 //! From visitor pattern to achieve double dispatch.
147 
149 {
150 public:
152  virtual ~INodeVisitor() {}
153 
154  virtual void visit(const BasicLattice*) {}
155  virtual void visit(const Beam*) {}
156  virtual void visit(const ConstantBackground*) {}
157  virtual void visit(const ConvolutionDetectorResolution*) {}
158  virtual void visit(const Crystal*) {}
159  virtual void visit(const DistributionCosine*) {}
160  virtual void visit(const DistributionGate*) {}
161  virtual void visit(const DistributionGaussian*) {}
162  virtual void visit(const DistributionLogNormal*) {}
163  virtual void visit(const DistributionLorentz*) {}
164  virtual void visit(const DistributionTrapezoid*) {}
165  virtual void visit(const FootprintGauss*) {}
166  virtual void visit(const FootprintSquare*) {}
167  virtual void visit(const FormFactorAnisoPyramid*) {}
168  virtual void visit(const FormFactorBarGauss*) {}
169  virtual void visit(const FormFactorBarLorentz*) {}
170  virtual void visit(const FormFactorBox*) {}
171  virtual void visit(const FormFactorCantellatedCube*) {}
172  virtual void visit(const FormFactorCone*) {}
173  virtual void visit(const FormFactorCone6*) {}
174  virtual void visit(const FormFactorCoreShell*) {}
175  virtual void visit(const FormFactorCrystal*) {}
176  virtual void visit(const FormFactorCuboctahedron*) {}
177  virtual void visit(const FormFactorCylinder*) {}
178  virtual void visit(const FormFactorDWBA*) {}
179  virtual void visit(const FormFactorDWBAPol*) {}
180  virtual void visit(const FormFactorDecoratorMaterial*) {}
181  virtual void visit(const FormFactorDecoratorPositionFactor*) {}
182  virtual void visit(const FormFactorDecoratorRotation*) {}
183  virtual void visit(const FormFactorDodecahedron*) {}
184  virtual void visit(const FormFactorDot*) {}
185  virtual void visit(const FormFactorEllipsoidalCylinder*) {}
186  virtual void visit(const FormFactorFullSphere*) {}
187  virtual void visit(const FormFactorFullSpheroid*) {}
188  virtual void visit(const FormFactorGaussSphere*) {}
189  virtual void visit(const FormFactorHemiEllipsoid*) {}
190  virtual void visit(const FormFactorHollowSphere*) {}
191  virtual void visit(const FormFactorIcosahedron*) {}
192  virtual void visit(const FormFactorLongBoxGauss*) {}
193  virtual void visit(const FormFactorLongBoxLorentz*) {}
194  virtual void visit(const FormFactorPrism3*) {}
195  virtual void visit(const FormFactorPrism6*) {}
196  virtual void visit(const FormFactorPyramid*) {}
197  virtual void visit(const FormFactorCosineRippleBox*) {}
198  virtual void visit(const FormFactorCosineRippleGauss*) {}
199  virtual void visit(const FormFactorCosineRippleLorentz*) {}
200  virtual void visit(const FormFactorSawtoothRippleBox*) {}
201  virtual void visit(const FormFactorSawtoothRippleGauss*) {}
202  virtual void visit(const FormFactorSawtoothRippleLorentz*) {}
203  virtual void visit(const FormFactorSphereGaussianRadius*) {}
204  virtual void visit(const FormFactorSphereLogNormalRadius*) {}
205  virtual void visit(const FormFactorTetrahedron*) {}
206  virtual void visit(const FormFactorTruncatedCube*) {}
207  virtual void visit(const FormFactorTruncatedSphere*) {}
208  virtual void visit(const FormFactorTruncatedSpheroid*) {}
209  virtual void visit(const FormFactorWeighted*) {}
210  virtual void visit(const FTDecayFunction1DCauchy*) {}
211  virtual void visit(const FTDecayFunction1DGauss*) {}
212  virtual void visit(const FTDecayFunction1DTriangle*) {}
213  virtual void visit(const FTDecayFunction1DVoigt*) {}
214  virtual void visit(const FTDecayFunction2DCauchy*) {}
215  virtual void visit(const FTDecayFunction2DGauss*) {}
216  virtual void visit(const FTDecayFunction2DVoigt*) {}
217  virtual void visit(const FTDistribution1DCauchy*) {}
218  virtual void visit(const FTDistribution1DCosine*) {}
219  virtual void visit(const FTDistribution1DGate*) {}
220  virtual void visit(const FTDistribution1DGauss*) {}
221  virtual void visit(const FTDistribution1DTriangle*) {}
222  virtual void visit(const FTDistribution1DVoigt*) {}
223  virtual void visit(const FTDistribution2DCauchy*) {}
224  virtual void visit(const FTDistribution2DCone*) {}
225  virtual void visit(const FTDistribution2DGate*) {}
226  virtual void visit(const FTDistribution2DGauss*) {}
227  virtual void visit(const FTDistribution2DVoigt*) {}
228  virtual void visit(const GISASSimulation*) {}
229  virtual void visit(const HexagonalLattice*) {}
230  virtual void visit(const IAbstractParticle*) {}
231  virtual void visit(const IClusteredParticles*) {}
232  virtual void visit(const IdentityRotation*) {}
233  virtual void visit(const IFormFactor*) {}
234  virtual void visit(const IFormFactorBorn*) {}
235  virtual void visit(const IFormFactorDecorator*) {}
236  virtual void visit(const IInterferenceFunction*) {}
237  virtual void visit(const ILayout*) {}
238  virtual void visit(const INode*) {}
239  virtual void visit(const Instrument*) {}
240  virtual void visit(const InterferenceFunction1DLattice*) {}
241  virtual void visit(const InterferenceFunction2DLattice*) {}
242  virtual void visit(const InterferenceFunction2DParaCrystal*) {}
244  virtual void visit(const InterferenceFunction3DLattice*) {}
247  virtual void visit(const InterferenceFunctionHardDisk*) {}
249  virtual void visit(const InterferenceFunctionTwin*) {}
250  virtual void visit(const InterferenceFunctionNone*) {}
251  virtual void visit(const IParticle*) {}
252  virtual void visit(const IPeakShape*) {}
253  virtual void visit(const IRotation*) {}
254  virtual void visit(const ISample*) {}
255  virtual void visit(const IsGISAXSDetector*) {}
256  virtual void visit(const Layer*) {}
257  virtual void visit(const LayerInterface*) {}
258  virtual void visit(const LayerRoughness*) {}
259  virtual void visit(const MesoCrystal*) {}
260  virtual void visit(const MultiLayer*) {}
261  virtual void visit(const OffSpecSimulation*) {}
262  virtual void visit(const Particle*) {}
263  virtual void visit(const ParticleComposition*) {}
264  virtual void visit(const ParticleCoreShell*) {}
265  virtual void visit(const ParticleDistribution*) {}
266  virtual void visit(const ParticleLayout*) {}
267  virtual void visit(const PoissonNoiseBackground*) {}
268  virtual void visit(const RectangularDetector*) {}
269  virtual void visit(const ResolutionFunction2DGaussian*) {}
270  virtual void visit(const RotationEuler*) {}
271  virtual void visit(const RotationX*) {}
272  virtual void visit(const RotationY*) {}
273  virtual void visit(const RotationZ*) {}
274  virtual void visit(const SpecularDetector1D*) {}
275  virtual void visit(const SpecularSimulation*) {}
276  virtual void visit(const SphericalDetector*) {}
277  virtual void visit(const SquareLattice*) {}
278 
279  //! Returns depth of the visitor in the composite hierarchy
280  int depth() const { return m_depth; }
281 
282  //! Sets depth of the visitor in the composite hierarchy
283  void setDepth(int depth) { m_depth = depth; }
284 
285 private:
286  int m_depth;
287 };
288 
289 void VisitNodesPreorder(const INode& node, INodeVisitor& visitor);
290 void VisitNodesPostorder(const INode& node, INodeVisitor& visitor);
291 
292 #endif // BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
void VisitNodesPostorder(const INode &node, INodeVisitor &visitor)
void VisitNodesPreorder(const INode &node, INodeVisitor &visitor)
Beam defined by wavelength, direction and intensity.
Definition: Beam.h:27
Class representing a constant background signal.
Convolutes the intensity in 1 or 2 dimensions with a resolution function.
A crystal structure with a ParticleComposition as a basis.
Definition: Crystal.h:26
Cosine distribution.
Uniform distribution function with half width hwhm.
Definition: Distributions.h:86
Gaussian distribution with standard deviation std_dev.
Log-normal distribution.
Lorentz distribution with half width hwhm.
Trapezoidal distribution.
One-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-|x|/decay_length) in r...
Definition: FTDecay1D.h:44
One-dimensional Gauss decay function in reciprocal space; corresponds to exp[-x^2/(2*decay_length^2)]...
Definition: FTDecay1D.h:58
One-dimensional triangle decay function in reciprocal space; corresponds to 1-|x|/decay_length if |x|...
Definition: FTDecay1D.h:72
One-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*C...
Definition: FTDecay1D.h:86
Two-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-r) in real space,...
Definition: FTDecay2D.h:63
Two-dimensional Gauss decay function in reciprocal space; corresponds to exp(-r^2/2) in real space,...
Definition: FTDecay2D.h:78
Two-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*C...
Definition: FTDecay2D.h:92
Exponential IFTDistribution1D exp(-|omega*x|); its Fourier transform evaluate(q) is a Cauchy-Lorentzi...
IFTDistribution1D consisting of one cosine wave [1+cos(pi*x/omega) if |x|<omega, and 0 otherwise]; it...
Square gate IFTDistribution1D; its Fourier transform evaluate(q) is a sinc function starting at evalu...
Gaussian IFTDistribution1D; its Fourier transform evaluate(q) is a Gaussian starting at evaluate(0)=1...
Triangle IFTDistribution1D [1-|x|/omega if |x|<omega, and 0 otherwise]; its Fourier transform evaluat...
IFTDistribution1D that provides a Fourier transform evaluate(q) in form of a pseudo-Voigt decay funct...
Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real spa...
Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in re...
Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 ...
Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real sp...
Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy.
Calculates footprint coefficient for a gaussian beam Beam width is interpreted as the full width on t...
Calculates footprint coefficient for a square beam.
A frustum (truncated pyramid) with rectangular base.
The form factor of an elongated bar, with Gaussian profile in elongation direction.
Definition: FormFactorBar.h:23
The form factor of an elongated, with Lorentz form factor in elongation direction.
Definition: FormFactorBar.h:37
A rectangular prism (parallelepiped).
Definition: FormFactorBox.h:24
A cube, with truncation of all edges and corners, as in Croset (2017) Fig 7.
A frustum (truncated pyramid) with regular hexagonal base.
A conical frustum (cone truncated parallel to the base) with circular base.
Form Factor for a core shell particle.
The form factor for a cosine ripple, with box profile in elongation direction.
The form factor for a cosine ripple, with Gaussian profile in elongation direction.
The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
The form factor of a MesoCrystal.
A truncated bifrustum with quadratic base.
A circular cylinder.
Evaluates the coherent sum of the 16 matrix DWBA terms in a polarized IFormFactor.
Evaluates the coherent sum of the four DWBA terms in a scalar IFormFactor.
Decorates a scalar formfactor with the correct factor for the material's refractive index and that of...
Decorates a form factor with a position dependent phase factor.
Equips a form factor with a rotation.
A regular dodecahedron.
A dot, with scattering power as a sphere of radius rscat, but with F(q)=const.
Definition: FormFactorDot.h:24
A cylinder with elliptical base.
A full spheroid (an ellipsoid with two equal axes, hence with circular cross section)
The form factor of a Gaussian sphere.
An hemi ellipsoid, obtained by truncating a full ellipsoid in the middle plane spanned by two princip...
Integrated full sphere form factor over a uniform distribution of radii.
A regular icosahedron.
The form factor for a long rectangular box.
The form factor for a long rectangular box.
A prism based on an equilateral triangle.
A prism based on a regular hexagonal.
A frustum with a quadratic base.
The form factor for a cosine ripple, with box profile in elongation direction.
The form factor for a cosine ripple, with Gaussian profile in elongation direction.
The form factor for a cosine ripple, with Lorentz form factor in elongation direction.
A sphere with gaussian radius distribution.
A sphere with log normal radius distribution.
A frustum with equilateral trigonal base.
A cube, with tetrahedral truncation of all corners.
Coherent sum of different scalar IFormFactor's with different weights.
Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
Interface for a generic particle.
An ordered assembly of particles.
Pure virtual base class for Born form factors.
Encapsulates another formfactor and adds extra functionality (a scalar factor, a position-dependent p...
Pure virtual base class for all form factors.
Definition: IFormFactor.h:40
Pure virtual base class of interference functions.
Pure virtual interface class to equip a sample layer with scattering properties.
Definition: ILayout.h:32
Visitor interface to visit ISample objects.
Definition: INodeVisitor.h:149
virtual void visit(const BasicLattice *)
Definition: INodeVisitor.h:154
virtual void visit(const FormFactorAnisoPyramid *)
Definition: INodeVisitor.h:167
virtual void visit(const FormFactorSphereGaussianRadius *)
Definition: INodeVisitor.h:203
virtual void visit(const FTDecayFunction1DCauchy *)
Definition: INodeVisitor.h:210
virtual void visit(const InterferenceFunction2DSuperLattice *)
Definition: INodeVisitor.h:243
virtual void visit(const InterferenceFunctionFinite2DLattice *)
Definition: INodeVisitor.h:245
virtual void visit(const FormFactorCone6 *)
Definition: INodeVisitor.h:173
virtual void visit(const IdentityRotation *)
Definition: INodeVisitor.h:232
virtual ~INodeVisitor()
Definition: INodeVisitor.h:152
virtual void visit(const MultiLayer *)
Definition: INodeVisitor.h:260
virtual void visit(const FormFactorCylinder *)
Definition: INodeVisitor.h:177
virtual void visit(const InterferenceFunction2DParaCrystal *)
Definition: INodeVisitor.h:242
virtual void visit(const SpecularSimulation *)
Definition: INodeVisitor.h:275
virtual void visit(const FTDecayFunction2DVoigt *)
Definition: INodeVisitor.h:216
virtual void visit(const RotationY *)
Definition: INodeVisitor.h:272
void setDepth(int depth)
Sets depth of the visitor in the composite hierarchy.
Definition: INodeVisitor.h:283
virtual void visit(const IFormFactorDecorator *)
Definition: INodeVisitor.h:235
virtual void visit(const FormFactorDecoratorPositionFactor *)
Definition: INodeVisitor.h:181
virtual void visit(const FTDistribution1DCosine *)
Definition: INodeVisitor.h:218
virtual void visit(const FormFactorHemiEllipsoid *)
Definition: INodeVisitor.h:189
virtual void visit(const FormFactorTetrahedron *)
Definition: INodeVisitor.h:205
virtual void visit(const Particle *)
Definition: INodeVisitor.h:262
virtual void visit(const DistributionCosine *)
Definition: INodeVisitor.h:159
virtual void visit(const InterferenceFunction1DLattice *)
Definition: INodeVisitor.h:240
virtual void visit(const InterferenceFunctionRadialParaCrystal *)
Definition: INodeVisitor.h:248
virtual void visit(const FormFactorWeighted *)
Definition: INodeVisitor.h:209
virtual void visit(const HexagonalLattice *)
Definition: INodeVisitor.h:229
virtual void visit(const ConvolutionDetectorResolution *)
Definition: INodeVisitor.h:157
virtual void visit(const DistributionGaussian *)
Definition: INodeVisitor.h:161
virtual void visit(const FormFactorBox *)
Definition: INodeVisitor.h:170
virtual void visit(const Beam *)
Definition: INodeVisitor.h:155
virtual void visit(const DistributionLorentz *)
Definition: INodeVisitor.h:163
virtual void visit(const FormFactorCosineRippleBox *)
Definition: INodeVisitor.h:197
virtual void visit(const FormFactorDecoratorRotation *)
Definition: INodeVisitor.h:182
virtual void visit(const FormFactorSawtoothRippleGauss *)
Definition: INodeVisitor.h:201
virtual void visit(const PoissonNoiseBackground *)
Definition: INodeVisitor.h:267
virtual void visit(const FormFactorDWBAPol *)
Definition: INodeVisitor.h:179
virtual void visit(const Layer *)
Definition: INodeVisitor.h:256
virtual void visit(const FormFactorCuboctahedron *)
Definition: INodeVisitor.h:176
virtual void visit(const FootprintSquare *)
Definition: INodeVisitor.h:166
virtual void visit(const FTDistribution2DCauchy *)
Definition: INodeVisitor.h:223
virtual void visit(const FTDecayFunction2DCauchy *)
Definition: INodeVisitor.h:214
virtual void visit(const FormFactorCosineRippleGauss *)
Definition: INodeVisitor.h:198
virtual void visit(const FormFactorTruncatedCube *)
Definition: INodeVisitor.h:206
virtual void visit(const FootprintGauss *)
Definition: INodeVisitor.h:165
virtual void visit(const IInterferenceFunction *)
Definition: INodeVisitor.h:236
virtual void visit(const IRotation *)
Definition: INodeVisitor.h:253
virtual void visit(const FormFactorDodecahedron *)
Definition: INodeVisitor.h:183
virtual void visit(const FormFactorLongBoxGauss *)
Definition: INodeVisitor.h:192
virtual void visit(const IParticle *)
Definition: INodeVisitor.h:251
virtual void visit(const FormFactorPrism6 *)
Definition: INodeVisitor.h:195
virtual void visit(const FTDecayFunction2DGauss *)
Definition: INodeVisitor.h:215
virtual void visit(const ParticleComposition *)
Definition: INodeVisitor.h:263
virtual void visit(const LayerRoughness *)
Definition: INodeVisitor.h:258
virtual void visit(const RotationEuler *)
Definition: INodeVisitor.h:270
virtual void visit(const FormFactorDot *)
Definition: INodeVisitor.h:184
virtual void visit(const RotationX *)
Definition: INodeVisitor.h:271
virtual void visit(const FormFactorCoreShell *)
Definition: INodeVisitor.h:174
virtual void visit(const FormFactorSawtoothRippleLorentz *)
Definition: INodeVisitor.h:202
virtual void visit(const FormFactorBarLorentz *)
Definition: INodeVisitor.h:169
virtual void visit(const InterferenceFunctionFinite3DLattice *)
Definition: INodeVisitor.h:246
virtual void visit(const InterferenceFunction2DLattice *)
Definition: INodeVisitor.h:241
virtual void visit(const RotationZ *)
Definition: INodeVisitor.h:273
virtual void visit(const FTDistribution2DGauss *)
Definition: INodeVisitor.h:226
virtual void visit(const FormFactorLongBoxLorentz *)
Definition: INodeVisitor.h:193
virtual void visit(const IAbstractParticle *)
Definition: INodeVisitor.h:230
virtual void visit(const FormFactorFullSphere *)
Definition: INodeVisitor.h:186
virtual void visit(const FTDistribution2DCone *)
Definition: INodeVisitor.h:224
virtual void visit(const SquareLattice *)
Definition: INodeVisitor.h:277
virtual void visit(const FormFactorCone *)
Definition: INodeVisitor.h:172
virtual void visit(const FormFactorCrystal *)
Definition: INodeVisitor.h:175
virtual void visit(const FormFactorTruncatedSpheroid *)
Definition: INodeVisitor.h:208
virtual void visit(const FTDistribution1DVoigt *)
Definition: INodeVisitor.h:222
virtual void visit(const FormFactorCantellatedCube *)
Definition: INodeVisitor.h:171
virtual void visit(const ILayout *)
Definition: INodeVisitor.h:237
virtual void visit(const FormFactorEllipsoidalCylinder *)
Definition: INodeVisitor.h:185
virtual void visit(const FormFactorBarGauss *)
Definition: INodeVisitor.h:168
virtual void visit(const ParticleLayout *)
Definition: INodeVisitor.h:266
virtual void visit(const IFormFactor *)
Definition: INodeVisitor.h:233
virtual void visit(const RectangularDetector *)
Definition: INodeVisitor.h:268
virtual void visit(const FormFactorGaussSphere *)
Definition: INodeVisitor.h:188
virtual void visit(const FormFactorSawtoothRippleBox *)
Definition: INodeVisitor.h:200
virtual void visit(const Instrument *)
Definition: INodeVisitor.h:239
virtual void visit(const FTDecayFunction1DTriangle *)
Definition: INodeVisitor.h:212
virtual void visit(const FTDistribution1DGauss *)
Definition: INodeVisitor.h:220
virtual void visit(const GISASSimulation *)
Definition: INodeVisitor.h:228
virtual void visit(const IPeakShape *)
Definition: INodeVisitor.h:252
virtual void visit(const FormFactorCosineRippleLorentz *)
Definition: INodeVisitor.h:199
virtual void visit(const FormFactorHollowSphere *)
Definition: INodeVisitor.h:190
virtual void visit(const INode *)
Definition: INodeVisitor.h:238
virtual void visit(const ConstantBackground *)
Definition: INodeVisitor.h:156
virtual void visit(const FormFactorDecoratorMaterial *)
Definition: INodeVisitor.h:180
virtual void visit(const DistributionTrapezoid *)
Definition: INodeVisitor.h:164
virtual void visit(const LayerInterface *)
Definition: INodeVisitor.h:257
virtual void visit(const FTDistribution2DGate *)
Definition: INodeVisitor.h:225
virtual void visit(const FormFactorIcosahedron *)
Definition: INodeVisitor.h:191
virtual void visit(const FTDistribution1DGate *)
Definition: INodeVisitor.h:219
virtual void visit(const ISample *)
Definition: INodeVisitor.h:254
virtual void visit(const InterferenceFunctionNone *)
Definition: INodeVisitor.h:250
virtual void visit(const FormFactorFullSpheroid *)
Definition: INodeVisitor.h:187
virtual void visit(const InterferenceFunction3DLattice *)
Definition: INodeVisitor.h:244
virtual void visit(const SphericalDetector *)
Definition: INodeVisitor.h:276
virtual void visit(const DistributionLogNormal *)
Definition: INodeVisitor.h:162
virtual void visit(const FormFactorTruncatedSphere *)
Definition: INodeVisitor.h:207
virtual void visit(const FormFactorSphereLogNormalRadius *)
Definition: INodeVisitor.h:204
virtual void visit(const Crystal *)
Definition: INodeVisitor.h:158
virtual void visit(const OffSpecSimulation *)
Definition: INodeVisitor.h:261
virtual void visit(const FTDistribution2DVoigt *)
Definition: INodeVisitor.h:227
virtual void visit(const InterferenceFunctionTwin *)
Definition: INodeVisitor.h:249
virtual void visit(const FormFactorDWBA *)
Definition: INodeVisitor.h:178
virtual void visit(const FTDecayFunction1DGauss *)
Definition: INodeVisitor.h:211
int depth() const
Returns depth of the visitor in the composite hierarchy.
Definition: INodeVisitor.h:280
virtual void visit(const ParticleDistribution *)
Definition: INodeVisitor.h:265
virtual void visit(const MesoCrystal *)
Definition: INodeVisitor.h:259
virtual void visit(const FormFactorPyramid *)
Definition: INodeVisitor.h:196
virtual void visit(const FormFactorPrism3 *)
Definition: INodeVisitor.h:194
virtual void visit(const SpecularDetector1D *)
Definition: INodeVisitor.h:274
virtual void visit(const IFormFactorBorn *)
Definition: INodeVisitor.h:234
virtual void visit(const FTDistribution1DCauchy *)
Definition: INodeVisitor.h:217
virtual void visit(const ParticleCoreShell *)
Definition: INodeVisitor.h:264
virtual void visit(const ResolutionFunction2DGaussian *)
Definition: INodeVisitor.h:269
virtual void visit(const DistributionGate *)
Definition: INodeVisitor.h:160
virtual void visit(const FTDecayFunction1DVoigt *)
Definition: INodeVisitor.h:213
virtual void visit(const InterferenceFunctionHardDisk *)
Definition: INodeVisitor.h:247
virtual void visit(const IsGISAXSDetector *)
Definition: INodeVisitor.h:255
virtual void visit(const FTDistribution1DTriangle *)
Definition: INodeVisitor.h:221
virtual void visit(const IClusteredParticles *)
Definition: INodeVisitor.h:231
Base class for tree-like structures containing parameterized objects.
Definition: INode.h:49
Pure virtual base class for Particle, ParticleComposition, ParticleCoreShell, MesoCrystal.
Definition: IParticle.h:33
Pure virtual interface class that defines the peak shape of a Bragg peak.
Definition: IPeakShape.h:25
Pure virtual interface for rotations.
Definition: Rotations.h:27
Pure virtual base class for sample components and properties related to scattering.
Definition: ISample.h:28
The identity rotation, which leaves everything in place.
Definition: Rotations.h:55
Assembles beam, detector and their relative positions with respect to the sample.
Definition: Instrument.h:34
Interference function of a 1D lattice.
Interference function of a 2D lattice.
Interference function of a 2D paracrystal.
Interference function of a 2D superlattice with a configurable interference function for each lattice...
Interference function of a 3D lattice.
Interference function of a finite 2D lattice.
Interference function of a finite 3D lattice.
Percus-Yevick hard disk interference function.
Default interference function (i.e.
Interference function of radial paracrystal.
Interference function for two particles at a mean distance and given standard deviation from each oth...
A spherical detector used for validation with IsGISAXS results.
Interface between two layers, possibly with roughness.
A roughness of interface between two layers.
A layer, with thickness (in nanometer) and material.
Definition: Layer.h:28
A particle with an internal structure of smaller particles.
Definition: MesoCrystal.h:26
Our sample model: a stack of layers one below the other.
Definition: MultiLayer.h:42
Main class to run an off-specular simulation.
A composition of particles at fixed positions.
A particle with a core/shell geometry.
A particle type that is a parametric distribution of IParticle's.
Decorator class that adds particles to ISample objects.
A particle with a form factor and refractive index.
Definition: Particle.h:26
Class representing Poisson noise on top of the scattered intensity.
A flat rectangular detector with axes and resolution function.
Simple gaussian two-dimensional resolution function.
A sequence of rotations about the z-x'-z'' axes.
Definition: Rotations.h:135
A rotation about the x axis.
Definition: Rotations.h:72
A rotation about the y axis.
Definition: Rotations.h:93
A rotation about the z axis.
Definition: Rotations.h:114
1D detector for specular simulations.
Main class to run a specular simulation.
A spherical detector with axes and resolution function.