49 SampleBuilderFactory::SampleBuilderFactory()
51 registerItem(
"CylindersAndPrismsBuilder", create_new<CylindersAndPrismsBuilder>);
54 create_new<TwoTypesCylindersDistributionBuilder>);
56 registerItem(
"CylindersInBABuilder", create_new<CylindersInBABuilder>);
57 registerItem(
"CylindersInDWBABuilder", create_new<CylindersInDWBABuilder>);
58 registerItem(
"LargeCylindersInDWBABuilder", create_new<LargeCylindersInDWBABuilder>);
61 create_new<CylindersWithSizeDistributionBuilder>);
63 registerItem(
"RadialParaCrystalBuilder", create_new<RadialParaCrystalBuilder>);
65 registerItem(
"HardDiskBuilder", create_new<HardDiskBuilder>);
67 registerItem(
"Basic2DParaCrystalBuilder", create_new<Basic2DParaCrystalBuilder>);
69 registerItem(
"HexParaCrystalBuilder", create_new<HexParaCrystalBuilder>);
71 registerItem(
"Lattice1DBuilder", create_new<Lattice1DBuilder>);
73 registerItem(
"RectParaCrystalBuilder", create_new<RectParaCrystalBuilder>);
75 registerItem(
"Basic2DLatticeBuilder", create_new<Basic2DLatticeBuilder>);
77 registerItem(
"SquareLatticeBuilder", create_new<SquareLatticeBuilder>);
79 registerItem(
"CenteredSquareLatticeBuilder", create_new<CenteredSquareLatticeBuilder>);
81 registerItem(
"RotatedSquareLatticeBuilder", create_new<RotatedSquareLatticeBuilder>);
83 registerItem(
"FiniteSquareLatticeBuilder", create_new<FiniteSquareLatticeBuilder>);
85 registerItem(
"SuperLatticeBuilder", create_new<SuperLatticeBuilder>);
87 registerItem(
"CustomMorphologyBuilder", create_new<CustomMorphologyBuilder>);
89 registerItem(
"RotatedPyramidsBuilder", create_new<RotatedPyramidsBuilder>);
91 registerItem(
"CoreShellParticleBuilder", create_new<CoreShellParticleBuilder>);
93 registerItem(
"CoreShellBoxRotateZandYBuilder", create_new<CoreShellBoxRotateZandYBuilder>);
95 registerItem(
"SizeDistributionDAModelBuilder", create_new<SizeDistributionDAModelBuilder>);
97 registerItem(
"SizeDistributionLMAModelBuilder", create_new<SizeDistributionLMAModelBuilder>);
99 registerItem(
"SizeDistributionSSCAModelBuilder", create_new<SizeDistributionSSCAModelBuilder>);
101 registerItem(
"CylindersInSSCABuilder", create_new<CylindersInSSCABuilder>);
103 registerItem(
"MesoCrystalBuilder", create_new<MesoCrystalBuilder>);
105 registerItem(
"MagneticParticleZeroFieldBuilder", create_new<MagneticParticleZeroFieldBuilder>);
107 registerItem(
"MagneticCylindersBuilder", create_new<MagneticCylindersBuilder>);
110 create_new<MagneticSubstrateZeroFieldBuilder>);
112 registerItem(
"SimpleMagneticLayerBuilder", create_new<SimpleMagneticLayerBuilder>);
114 registerItem(
"SimpleMagneticRotationBuilder", create_new<SimpleMagneticRotationBuilder>);
116 registerItem(
"MagneticLayerBuilder", create_new<MagneticLayerBuilder>);
118 registerItem(
"FeNiBilayerBuilder", create_new<FeNiBilayerBuilder>);
120 registerItem(
"FeNiBilayerTanhBuilder", create_new<FeNiBilayerTanhBuilder>);
122 registerItem(
"FeNiBilayerNCBuilder", create_new<FeNiBilayerNCBuilder>);
124 registerItem(
"FeNiBilayerSpinFlipBuilder", create_new<FeNiBilayerSpinFlipBuilder>);
126 registerItem(
"FeNiBilayerSpinFlipTanhBuilder", create_new<FeNiBilayerSpinFlipTanhBuilder>);
128 registerItem(
"FeNiBilayerSpinFlipNCBuilder", create_new<FeNiBilayerSpinFlipNCBuilder>);
130 registerItem(
"MagneticRotationBuilder", create_new<MagneticRotationBuilder>);
132 registerItem(
"MagneticSpheresBuilder", create_new<MagneticSpheresBuilder>);
134 registerItem(
"MultiLayerWithRoughnessBuilder", create_new<MultiLayerWithRoughnessBuilder>);
136 registerItem(
"MultiLayerWithNCRoughnessBuilder", create_new<MultiLayerWithNCRoughnessBuilder>);
138 registerItem(
"TwoLayerRoughnessBuilder", create_new<TwoLayerRoughnessBuilder>);
140 registerItem(
"MultipleLayoutBuilder", create_new<MultipleLayoutBuilder>);
142 registerItem(
"TriangularRippleBuilder", create_new<TriangularRippleBuilder>);
144 registerItem(
"AsymRippleBuilder", create_new<AsymRippleBuilder>);
146 registerItem(
"CosineRippleBuilder", create_new<CosineRippleBuilder>);
148 registerItem(
"ParticleCompositionBuilder", create_new<ParticleCompositionBuilder>);
150 registerItem(
"BoxCompositionRotateXBuilder", create_new<BoxCompositionRotateXBuilder>);
152 registerItem(
"BoxCompositionRotateYBuilder", create_new<BoxCompositionRotateYBuilder>);
154 registerItem(
"BoxCompositionRotateZBuilder", create_new<BoxCompositionRotateZBuilder>);
156 registerItem(
"BoxCompositionRotateZandYBuilder", create_new<BoxCompositionRotateZandYBuilder>);
158 registerItem(
"BoxStackCompositionBuilder", create_new<BoxStackCompositionBuilder>);
160 registerItem(
"ParticleInVacuumBuilder", create_new<ParticleInVacuumBuilder>);
162 registerItem(
"TransformBoxBuilder", create_new<TransformBoxBuilder>);
164 registerItem(
"LayersWithAbsorptionBuilder", create_new<LayersWithAbsorptionBuilder>);
166 registerItem(
"LayersWithAbsorptionBySLDBuilder", create_new<LayersWithAbsorptionBySLDBuilder>);
168 registerItem(
"BoxesSquareLatticeBuilder", create_new<BoxesSquareLatticeBuilder>);
170 registerItem(
"RotatedCylindersBuilder", create_new<RotatedCylindersBuilder>);
172 registerItem(
"SlicedCompositionBuilder", create_new<SlicedCompositionBuilder>);
175 create_new<RotatedPyramidsDistributionBuilder>);
178 create_new<SpheresWithLimitsDistributionBuilder>);
181 create_new<ConesWithLimitsDistributionBuilder>);
183 registerItem(
"LinkedBoxDistributionBuilder", create_new<LinkedBoxDistributionBuilder>);
185 registerItem(
"HomogeneousMultilayerBuilder", create_new<HomogeneousMultilayerBuilder>);
187 registerItem(
"PlainMultiLayerBySLDBuilder", create_new<PlainMultiLayerBySLDBuilder>);
189 registerItem(
"ResonatorBuilder", create_new<ResonatorBuilder>);
191 registerItem(
"SlicedCylindersBuilder", create_new<SlicedCylindersBuilder>);
193 registerItem(
"SLDSlicedCylindersBuilder", create_new<SLDSlicedCylindersBuilder>);
195 registerItem(
"AveragedSlicedCylindersBuilder", create_new<AveragedSlicedCylindersBuilder>);
197 registerItem(
"ThickAbsorptiveSampleBuilder", create_new<ThickAbsorptiveSampleBuilder>);
204 return createItemPtr(name)->buildSample();
Defines classes of BoxCompositionBuilder family.
Defines class BoxesSquareLatticeBuilder.
Defines class CoreShellParticleBuilder.
Defines class CustomMorphologyBuilder.
Defines class CylindersAndPrismsBuilder.
Defines classes of CylindersBuilder family.
Defines various sample builder classes to test polarized specular computations.
Defines class HomogeneousMultilayerBuilder.
Defines class Lattice1DBuilder.
Defines class LayersWithAbsorptionBuilder.
Defines class LayersWithAbsorptionBySLDBuilder.
Defines class to build samples with magnetic layers.
Defines class to build magnetic samples.
Defines class MesoCrystalBuilder.
Defines class MultiLayerWithNCRoughnessBuilder.
Defines class MultipleLayoutBuilder.
Defines classes of ParaCrystalBuilder family.
Defines class ParticleCompositionBuilder.
Defines classes of with different types of particle distributions.
Defines class ParticleInVacuumBuilder.
Defines classes of PercusYevickBuilder family.
Declares the class PlainMultiLayerBySLDBuilder.
Defines ResonatorBuilder class.
Defines classes to build various ripples.
Defines class RotatedPyramidsBuilder.
Defines class SampleBuilderFactory.
Defines various sample builder classes to test DA, LMA, SSCA approximations.
Defines classes to build various particles crossing interfaces.
Defines classes for testing slicing machinery.
Defines class to build thick highly-absorptive sample with roughness.
Defines class IsGISAXS06Builder.
Defines class TwoLayerRoughnessBuilder.
bool registerItem(const std::string &item_key, CreateItemCallback CreateFn)
Registers object's creation function.
Our sample model: a stack of layers one below the other.
MultiLayer * createSampleByName(const std::string &name)
Retrieves a SampleBuilder from the registry, does the build, and returns the result.