141 std::vector<std::vector<double>> points = {{0.0 *
deg, 1.0 *
deg},
401 simulation->setBeamIntensity(1.0e+08);
402 simulation->getOptions().setIncludeSpecular(
true);
409 const int number_of_bins = 2000;
415 result->setScan(scan);
416 result->getOptions().setUseAvgMaterials(
true);
422 std::vector<double> qs;
425 const int number_of_bins = 2000;
428 FixedBinAxis angle_axis(
"axis", number_of_bins, min_angle, max_angle);
431 qs.resize(angle_axis.
size(), 0.0);
432 for (
size_t i = 0, size = qs.size(); i < size; ++i)
433 qs[i] = 4.0 *
M_PI * std::sin(angles[i]) / wavelength_0;
439 result->getOptions().setUseAvgMaterials(
true);
446 const int number_of_bins = 2000;
449 auto gaussian_ff = std::make_unique<FootprintGauss>(1.0);
461 const int number_of_bins = 2000;
464 auto square_ff = std::make_unique<FootprintSquare>(1.0);
476 const int number_of_bins = 20;
477 const size_t n_integration_points = 10;
485 std::unique_ptr<ScanResolution> wl_res(
489 std::unique_ptr<ScanResolution> ang_res(
508 result->getOptions().setUseAvgMaterials(
true);
517 std::vector<double> resolutions;
518 resolutions.reserve(qs.
size());
520 std::for_each(qs_vector.begin(), qs_vector.end(),
521 [&resolutions](
double q_val) { resolutions.push_back(0.03 * q_val); });
526 result->getOptions().setUseAvgMaterials(
true);
534 simulation->setBeamPolarization({0.0, 1.0, 0.0});
535 simulation->setAnalyzerProperties({0.0, 1.0, 0.0}, 1.0, 0.5);
542 simulation->setBeamPolarization({0.0, 1.0, 0.0});
543 simulation->setAnalyzerProperties({0.0, -1.0, 0.0}, 1.0, 0.5);
550 simulation->setBeamPolarization({0.0, -1.0, 0.0});
551 simulation->setAnalyzerProperties({0.0, 1.0, 0.0}, 1.0, 0.5);
558 simulation->setBeamPolarization({0.0, -1.0, 0.0});
559 simulation->setAnalyzerProperties({0.0, -1.0, 0.0}, 1.0, 0.5);
566 simulation->setBeamPolarization({0.0, 1.0, 0.0});
567 simulation->setAnalyzerProperties({0.0, 1.0, 0.0}, 1.0, 0.5);
574 simulation->setBeamPolarization({0.0, -1.0, 0.0});
575 simulation->setAnalyzerProperties({0.0, -1.0, 0.0}, 1.0, 0.5);
582 simulation->setBeamPolarization({0.0, 1.0, 0.0});
583 simulation->setAnalyzerProperties({0.0, -1.0, 0.0}, 1.0, 0.5);
590 simulation->setBeamPolarization({0.0, -1.0, 0.0});
591 simulation->setAnalyzerProperties({0.0, 1.0, 0.0}, 1.0, 0.5);
602 const int n_alpha(19);
609 result->setDetectorParameters(n_phi, phi_min, phi_max, n_alpha, alpha_min, alpha_max);
611 const int n_scan_points(n_alpha);
612 const double alpha_i_min(alpha_min);
613 const double alpha_i_max(alpha_max);
615 FixedBinAxis alpha_i_axis(
"alpha_i", n_scan_points, alpha_i_min, alpha_i_max);
618 result->setBeamIntensity(1e9);
619 result->getOptions().setIncludeSpecular(
true);
629 const size_t n_alpha = 20;
632 const size_t n_z = n_alpha;
636 result->setBeamParameters(
wavelength, n_alpha, alpha_min, alpha_max);
637 result->setZSpan(n_z, z_min, z_max);
650 result->setBeamIntensity(1e6);
Declares AngularSpecScan class.
Defines class ConstantBackground.
Defines class DepthProbeSimulation.
Defines classes representing one-dimensional distributions.
Defines class GISASSimulation.
Defines class IsGISAXSDetector.
Defines class OffSpecSimulation.
Defines class ParameterPattern.
Declares QSpecScan class.
Defines classes representing ranged one-dimensional distributions.
Defines class RealParameter.
Defines class RectangularDetector.
Defines class ResolutionFunction2DGaussian.
Defines class SampleBuilderFactory.
Defines scan resolution class.
Defines class SpecularSimulation.
Defines namespace and functions for standard simulations.
Defines some unit conversion factors and other constants in namespace Units.
BasicVector3D< double > kvector_t
Scan type with inclination angles as coordinate values and a unique wavelength.
void setAngleResolution(const ScanResolution &resolution)
Sets angle resolution values via ScanResolution object.
void setFootprintFactor(const IFootprintFactor *f_factor)
Sets footprint correction factor.
void setWavelengthResolution(const ScanResolution &resolution)
Sets wavelength resolution values via ScanResolution object.
Class representing a constant background signal.
Uniform distribution function with half width hwhm.
Gaussian distribution with standard deviation std_dev.
Axis with fixed bin size.
std::vector< double > getBinCenters() const
size_t size() const
retrieve the number of bins
Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
void setBeamParameters(double wavelength, double alpha_i, double phi_i)
Sets beam parameters from here (forwarded to Instrument)
An infinite horizontal line.
void setDetectorParameters(size_t n_x, double x_min, double x_max, size_t n_y, double y_min, double y_max)
Sets detector parameters using angle ranges.
A spherical detector used for validation with IsGISAXS results.
Main class to run an off-specular simulation.
Helper class for constructing parameter patterns.
ParameterPattern & beginsWith(std::string start_type)
std::string toStdString() const
ParameterPattern & add(std::string object_type)
Scan type with z-components of scattering vector as coordinate values.
void setRelativeQResolution(const RangedDistribution &distr, double rel_dev)
void setAbsoluteQResolution(const RangedDistribution &distr, double std_dev)
Gaussian distribution with standard deviation std_dev.
The rectangle shape having its axis aligned to the (non-rotated) coordinate system.
A flat rectangular detector with axes and resolution function.
void setDirectBeamPosition(double u0, double v0)
void setPerpendicularToSampleX(double distance, double u0, double v0)
void setPerpendicularToDirectBeam(double distance, double u0, double v0)
void setPerpendicularToReflectedBeam(double distance, double u0=0.0, double v0=0.0)
void setPosition(const kvector_t normal_to_detector, double u0, double v0, const kvector_t direction=kvector_t(0.0, -1.0, 0.0))
Simple gaussian two-dimensional resolution function.
static ScanResolution * scanAbsoluteResolution(const RangedDistribution &distr, double stddev)
void setDetector(const IDetector2D &detector)
Sets the detector (axes can be overwritten later)
void addMask(const IShape2D &shape, bool mask_value=true)
Adds mask of given shape to the stack of detector masks.
void setDetectorParameters(size_t n_phi, double phi_min, double phi_max, size_t n_alpha, double alpha_min, double alpha_max)
Sets spherical detector parameters using angle ranges.
void maskAll()
Put the mask for all detector channels (i.e. exclude whole detector from the analysis)
void setRegionOfInterest(double xlow, double ylow, double xup, double yup)
Sets rectangular region of interest with lower left and upper right corners defined.
void setIncludeSpecular(bool include_specular)
void setMonteCarloIntegration(bool flag=true, size_t mc_points=50)
Enables/disables MonetCarlo integration.
const SimulationOptions & getOptions() const
void setBackground(const IBackground &bg)
void setAnalyzerProperties(const kvector_t direction, double efficiency, double total_transmission)
Sets the polarization analyzer characteristics of the detector.
void setBeamIntensity(double intensity)
void addParameterDistribution(const std::string ¶m_name, const IDistribution1D &distribution, size_t nbr_samples, double sigma_factor=0.0, const RealLimits &limits=RealLimits())
void setBeamPolarization(const kvector_t bloch_vector)
Sets the beam polarization according to the given Bloch vector.
void setDetectorResolutionFunction(const IResolutionFunction2D &resolution_function)
Main class to run a specular simulation.
void setScan(const ISpecularScan &scan)
Sets chosen specular scan to the simulation.
An infinite vertical line.
SpecularSimulation * BasicSpecularQPP()
GISASSimulation * RectDetectorPerpToReflectedBeam()
GISAS simulation with the rectangular detector perpendicular to the reflected beam.
GISASSimulation * BasicGISAS00()
Basic GISAS for polarization studies.
GISASSimulation * RectDetectorPerpToDirectBeam()
GISAS simulation with the rectangular detector perpendicular to the direct beam.
SpecularSimulation * BasicSpecularMP()
GISASSimulation * BasicGISAS()
Basic GISAS simulation with the detector phi[0,2], theta[0,2].
GISASSimulation * MiniGISASBeamDivergence()
GISAS simulation with beam divergence applied.
SpecularSimulation * SpecularWithSquareBeam()
GISASSimulation * GISASWithMasks()
GISAS simulation with multiple masks on the detector plane.
GISASSimulation * MiniGISAS()
GISAS simulation with small detector and phi[-2,2], theta[0,2].
SpecularSimulation * BasicSpecularPM()
GISASSimulation * IsGISAXSSimulation1()
Typical IsGISAXS simulation with the detector phi[-1,1], theta[0,2].
OffSpecSimulation * MiniOffSpec()
GISASSimulation * ExtraLongWavelengthGISAS()
GISAS simulation with an extra long wavelength.
GISASSimulation * RectDetectorPerpToSample()
GISAS simulation with the rectangular detector perpendicular to the sample.
GISASSimulation * SphericalDetWithRoi()
GISAS simulation with spherical detector, region of interest and mask.
GISASSimulation * MiniGISASPolarizationPM()
SpecularSimulation * TOFRWithRelativeResolution()
GISASSimulation * MiniGISASDetectorResolution()
GISAS simulation with detector resolution.
SpecularSimulation * BasicSpecularQMP()
GISASSimulation * MiniGISASMonteCarlo()
GISAS simulation with Monte-Carlo integration switched ON.
SpecularSimulation * SpecularWithGaussianBeam()
GISASSimulation * MiniGISASPolarizationMM()
GISASSimulation * MiniGISASPolarizationMP()
DepthProbeSimulation * BasicDepthProbe()
GISASSimulation * IsGISAXSSimulation2()
Typical IsGISAXS simulation with the detector phi[0,2], theta[0,2].
GISASSimulation * ConstantBackgroundGISAS()
SpecularSimulation * BasicSpecularQPM()
GISASSimulation * RectDetectorGeneric()
GISAS simulation with generic rectangular detector.
SpecularSimulation * BasicSpecularMM()
GISASSimulation * MiniGISASPolarizationPP()
SpecularSimulation * BasicSpecularPP()
SpecularSimulation * BasicSpecularQ()
GISASSimulation * MaxiGISAS()
GISAS simulation with large detector to test performance.
GISASSimulation * MiniGISAS_v2()
GISAS simulation with small detector and phi[-1,1], theta[0,1].
GISASSimulation * RectDetectorPerpToReflectedBeamDpos()
GISAS simulation with the rectangular detector perpendicular to the reflected beam when the coordinat...
SpecularSimulation * TOFRWithPointwiseResolution()
GISASSimulation * MiniGISASSpecularPeak()
GISAS simulation with small detector and including specular peak.
GISASSimulation * RectDetWithRoi()
GISAS simulation with rectangular detector, region of interest and mask.
GISASSimulation * MiniGISASFit()
Simulation with fitting.
GISASSimulation * BasicPolarizedGISAS()
Basic GISAS simulation for spin flip channel.
SpecularSimulation * SpecularDivergentBeam()
SpecularSimulation * BasicSpecularQMM()
GISASSimulation * MaxiGISAS00()
Basic GISAS for polarization studies.
SpecularSimulation * BasicSpecular()
static constexpr double deg
static constexpr double nm
static constexpr double angstrom
static constexpr double degree
const double wavelength(0.154)
const size_t rdet_nbinsy(30)
const size_t rdet_nbinsx(40)
const double rdet_width(20.0)
const double rdet_distance(1000.0)
const double rdet_height(18.0)