40     double diffuse_intensity = 0.0;
 
   45         diffuse_intensity += fraction * std::norm(ff);
 
   51     double iff = 2.0 * (mean_ff_norm * omega / (1.0 - p2kappa * omega)).real();
 
   53     return diffuse_intensity + dw_factor * iff;
 
   60     Eigen::Matrix2cd diffuse_matrix = Eigen::Matrix2cd::Zero();
 
   64         Eigen::Matrix2cd ff = precomputed_ff[i];
 
   66         diffuse_matrix += fraction * (ff * polarization_handler.getPolarization() * ff.adjoint());
 
   68     Eigen::Matrix2cd mff_orig, mff_conj; 
 
   72     Eigen::Matrix2cd interference_matrix = (2.0 * omega / (1.0 - p2kappa * omega))
 
   73                                            * polarization_handler.getAnalyzerOperator() * mff_orig
 
   74                                            * polarization_handler.getPolarization() * mff_conj;
 
   75     Eigen::Matrix2cd diffuse_matrix2 = polarization_handler.getAnalyzerOperator() * diffuse_matrix;
 
   76     double interference_trace = std::abs(interference_matrix.trace());
 
   77     double diffuse_trace = std::abs(diffuse_matrix2.trace());
 
   79     return diffuse_trace + dw_factor * interference_trace;
 
std::complex< double > complex_t
 
Defines and implements the interface class IInterferenceFunction.
 
Defines class SSCApproximationStrategy.
 
Defines class SimulationElement.
 
double magxy() const
Returns distance from z axis.
 
Base class of all interference function strategy classes.
 
std::vector< FormFactorCoherentSum > m_formfactor_wrappers
 
std::unique_ptr< IInterferenceFunction > mP_iff
 
complex_t getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
 
void init(const std::vector< FormFactorCoherentSum > &ff_wrappers)
 
void getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const InterferenceFunctionUtils::matrixFFVector_t &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
 
complex_t getCharacteristicDistribution(double qp, const IInterferenceFunction *p_iff) const
 
complex_t getCharacteristicSizeCoupling(double qp, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
 
double polarizedCalculation(const SimulationElement &sim_element) const override
This is the polarized version.
 
void strategy_specific_post_init() override
 
double scalarCalculation(const SimulationElement &sim_element) const override
Returns the total scattering intensity for given kf and for one particle layout (implied by the given...
 
SSCApproximationStrategy(SimulationOptions sim_params, double kappa, bool polarized)
 
Data stucture containing both input and output of a single detector cell.
 
kvector_t getMeanQ() const
 
const PolarizationHandler & polarizationHandler() const
Returns assigned PolarizationHandler.
 
Collect the different options for simulation.
 
std::vector< complex_t > PrecomputeScalarFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
 
matrixFFVector_t PrecomputePolarizedFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)