Definition at line 114 of file IPositionBuilder.h.
 
◆ RadialParacrystalPositionBuilder()
Definition at line 214 of file IPositionBuilder.cpp.
InterferenceFunctionRadialParaCrystal * clone() const final
Returns a clone of this ISampleNode object.
 
std::unique_ptr< InterferenceFunctionRadialParaCrystal > m_iff
 
 
 
 
◆ ~RadialParacrystalPositionBuilder()
  
  
      
        
          | RadialParacrystalPositionBuilder::~RadialParacrystalPositionBuilder  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
overridedefault   | 
  
 
 
◆ generatePositions()
  
  
      
        
          | std::vector< std::vector< double > > IPositionBuilder::generatePositions  | 
          ( | 
          double  | 
          layer_size,  | 
         
        
           | 
           | 
          double  | 
          density = 0.0  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
inherited   | 
  
 
Definition at line 28 of file IPositionBuilder.cpp.
   35         std::random_device rd;  
 
   36         std::mt19937 gen(rd()); 
 
   37         std::normal_distribution<double> dis(0.0, std::sqrt(pos_var));
 
   38         for (
auto& position : positions) {
 
   39             for (
auto& coordinate : position)
 
   40                 coordinate += dis(gen);
 
virtual std::vector< std::vector< double > > generatePositionsImpl(double layer_size, double density=0.0) const =0
 
virtual double positionVariance() const =0
 
 
References IPositionBuilder::generatePositionsImpl(), and IPositionBuilder::positionVariance().
 
 
◆ generatePositionsImpl()
  
  
      
        
          | std::vector< std::vector< double > > RadialParacrystalPositionBuilder::generatePositionsImpl  | 
          ( | 
          double  | 
          layer_size,  | 
         
        
           | 
           | 
          double  | 
          density = 0.0  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
overrideprivatevirtual   | 
  
 
Implements IPositionBuilder.
Definition at line 223 of file IPositionBuilder.cpp.
  225     std::vector<std::vector<double>> lattice_positions;
 
  227     double distance = 
m_iff->peakDistance();
 
  231     int n = distance <= 0.0 ? 1 : 
static_cast<int>(layer_size * std::sqrt(2.0) / distance);
 
  233     lattice_positions.resize(
static_cast<size_t>(2 * n + 1));
 
  234     for (
auto& it : lattice_positions) {
 
  238     lattice_positions[0][0] = 0.0; 
 
  239     lattice_positions[0][1] = 0.0; 
 
  241     for (
int i = 1; i <= n; ++i) {
 
  243         unsigned i_left = 
static_cast<unsigned>(std::max(0, 2 * i - 3));
 
  245         double offset = 
m_iff->randomSample();
 
  246         lattice_positions[
static_cast<size_t>(2 * i - 1)][0] =
 
  247             lattice_positions[i_left][0] + distance + offset;
 
  248         lattice_positions[
static_cast<size_t>(2 * i - 1)][1] = 0.0;
 
  251         unsigned i_right = 
static_cast<unsigned>(2 * (i - 1));
 
  253         offset = 
m_iff->randomSample();
 
  254         lattice_positions[
static_cast<size_t>(2 * i)][0] =
 
  255             lattice_positions[i_right][0] - distance + offset;
 
  256         lattice_positions[
static_cast<size_t>(2 * i)][1] = 0.0;
 
  258     return lattice_positions;
 
 
References m_iff.
 
 
◆ positionVariance()
  
  
      
        
          | double RadialParacrystalPositionBuilder::positionVariance  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
overrideprivatevirtual   | 
  
 
 
◆ m_iff
The documentation for this class was generated from the following files: