BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
SphericalPixel Class Reference

Description

A pixel in a SphericalDetector.

Definition at line 29 of file SphericalPixel.h.

Inheritance diagram for SphericalPixel:
[legend]
Collaboration diagram for SphericalPixel:
[legend]

Public Member Functions

 SphericalPixel (const Bin1D &alpha_bin, const Bin1D &phi_bin)
 
SphericalPixelclone () const override
 
SphericalPixelcreateZeroSizePixel (double x, double y) const override
 
R3 getK (double x, double y, double wavelength) const override
 
double integrationFactor (double x, double y) const override
 
double solidAngle () const override
 

Private Attributes

const double m_alpha
 
const double m_dalpha
 
const double m_dphi
 
const double m_phi
 
double m_solid_angle
 

Constructor & Destructor Documentation

◆ SphericalPixel()

SphericalPixel::SphericalPixel ( const Bin1D alpha_bin,
const Bin1D phi_bin 
)

Definition at line 19 of file SphericalPixel.cpp.

20  : m_alpha(alpha_bin.m_lower)
21  , m_phi(phi_bin.m_lower)
22  , m_dalpha(alpha_bin.binSize())
23  , m_dphi(phi_bin.binSize())
24 {
25  auto solid_angle_value = std::abs(m_dphi * (std::sin(m_alpha + m_dalpha) - std::sin(m_alpha)));
26  m_solid_angle = solid_angle_value <= 0.0 ? 1.0 : solid_angle_value;
27 }
double binSize() const
Definition: Bin.h:31
double m_lower
lower bound of the bin
Definition: Bin.h:28
const double m_dalpha
const double m_dphi
double m_solid_angle
const double m_alpha
const double m_phi

References m_alpha, m_dalpha, m_dphi, and m_solid_angle.

Referenced by clone(), and createZeroSizePixel().

Member Function Documentation

◆ clone()

SphericalPixel * SphericalPixel::clone ( ) const
overridevirtual

Implements IPixel.

Definition at line 29 of file SphericalPixel.cpp.

30 {
31  return new SphericalPixel(*this);
32 }
SphericalPixel(const Bin1D &alpha_bin, const Bin1D &phi_bin)

References SphericalPixel().

Here is the call graph for this function:

◆ createZeroSizePixel()

SphericalPixel * SphericalPixel::createZeroSizePixel ( double  x,
double  y 
) const
overridevirtual

Implements IPixel.

Definition at line 34 of file SphericalPixel.cpp.

35 {
36  double phi = m_phi + x * m_dphi;
37  double alpha = m_alpha + y * m_dalpha;
38  Bin1D alpha_bin(alpha, alpha);
39  Bin1D phi_bin(phi, phi);
40  return new SphericalPixel(alpha_bin, phi_bin);
41 }
Definition: Bin.h:20

References SphericalPixel(), m_alpha, m_dalpha, m_dphi, and m_phi.

Here is the call graph for this function:

◆ getK()

R3 SphericalPixel::getK ( double  x,
double  y,
double  wavelength 
) const
overridevirtual

Implements IPixel.

Definition at line 43 of file SphericalPixel.cpp.

44 {
45  double phi = m_phi + x * m_dphi;
46  double alpha = m_alpha + y * m_dalpha;
47  return vecOfLambdaAlphaPhi(wavelength, alpha, phi);
48 }
R3 vecOfLambdaAlphaPhi(double _lambda, double _alpha, double _phi)
Definition: Direction.cpp:19

References m_alpha, m_dalpha, m_dphi, m_phi, and vecOfLambdaAlphaPhi().

Here is the call graph for this function:

◆ integrationFactor()

double SphericalPixel::integrationFactor ( double  x,
double  y 
) const
overridevirtual

Implements IPixel.

Definition at line 50 of file SphericalPixel.cpp.

51 {
52  if (m_dalpha == 0.0)
53  return 1.0;
54  double alpha = m_alpha + y * m_dalpha;
55  return std::cos(alpha) * m_dalpha / (std::sin(m_alpha + m_dalpha) - std::sin(m_alpha));
56 }

References m_alpha, and m_dalpha.

◆ solidAngle()

double SphericalPixel::solidAngle ( ) const
overridevirtual

Implements IPixel.

Definition at line 58 of file SphericalPixel.cpp.

59 {
60  return m_solid_angle;
61 }

References m_solid_angle.

Member Data Documentation

◆ m_alpha

const double SphericalPixel::m_alpha
private

Definition at line 40 of file SphericalPixel.h.

Referenced by SphericalPixel(), createZeroSizePixel(), getK(), and integrationFactor().

◆ m_dalpha

const double SphericalPixel::m_dalpha
private

Definition at line 42 of file SphericalPixel.h.

Referenced by SphericalPixel(), createZeroSizePixel(), getK(), and integrationFactor().

◆ m_dphi

const double SphericalPixel::m_dphi
private

Definition at line 43 of file SphericalPixel.h.

Referenced by SphericalPixel(), createZeroSizePixel(), and getK().

◆ m_phi

const double SphericalPixel::m_phi
private

Definition at line 41 of file SphericalPixel.h.

Referenced by createZeroSizePixel(), and getK().

◆ m_solid_angle

double SphericalPixel::m_solid_angle
mutableprivate

Definition at line 44 of file SphericalPixel.h.

Referenced by SphericalPixel(), and solidAngle().


The documentation for this class was generated from the following files: