BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SphericalPixel Class Reference
Inheritance diagram for SphericalPixel:
Collaboration diagram for SphericalPixel:

Public Member Functions

 SphericalPixel (const Bin1D &alpha_bin, const Bin1D &phi_bin)
 
SphericalPixelclone () const override
 
SphericalPixelcreateZeroSizePixel (double x, double y) const override
 
kvector_t getK (double x, double y, double wavelength) const override
 
double getIntegrationFactor (double x, double y) const override
 
double getSolidAngle () const override
 

Private Attributes

double m_alpha
 
double m_phi
 
double m_dalpha
 
double m_dphi
 
double m_solid_angle
 

Detailed Description

A pixel in a SphericalDetector.

Definition at line 24 of file SphericalPixel.h.

Constructor & Destructor Documentation

◆ SphericalPixel()

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

Definition at line 18 of file SphericalPixel.cpp.

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

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 26 of file SphericalPixel.cpp.

27 {
28  return new SphericalPixel(*this);
29 }
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 31 of file SphericalPixel.cpp.

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

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

Here is the call graph for this function:

◆ getK()

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

Implements IPixel.

Definition at line 40 of file SphericalPixel.cpp.

41 {
42  double phi = m_phi + x * m_dphi;
43  double alpha = m_alpha + y * m_dalpha;
44  return vecOfLambdaAlphaPhi(wavelength, alpha, phi);
45 }
BasicVector3D< double > vecOfLambdaAlphaPhi(double _lambda, double _alpha, double _phi)
Creates a vector<double> as a wavevector with given wavelength and angles.

References m_alpha, m_dalpha, m_dphi, m_phi, vecOfLambdaAlphaPhi(), and anonymous_namespace{SlicedCylindersBuilder.cpp}::wavelength().

Here is the call graph for this function:

◆ getIntegrationFactor()

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

Implements IPixel.

Definition at line 47 of file SphericalPixel.cpp.

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

References m_alpha, and m_dalpha.

◆ getSolidAngle()

double SphericalPixel::getSolidAngle ( ) const
overridevirtual

Implements IPixel.

Definition at line 55 of file SphericalPixel.cpp.

56 {
57  return m_solid_angle;
58 }

References m_solid_angle.

Member Data Documentation

◆ m_alpha

double SphericalPixel::m_alpha
private

Definition at line 36 of file SphericalPixel.h.

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

◆ m_phi

double SphericalPixel::m_phi
private

Definition at line 36 of file SphericalPixel.h.

Referenced by createZeroSizePixel(), and getK().

◆ m_dalpha

double SphericalPixel::m_dalpha
private

Definition at line 37 of file SphericalPixel.h.

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

◆ m_dphi

double SphericalPixel::m_dphi
private

Definition at line 37 of file SphericalPixel.h.

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

◆ m_solid_angle

double SphericalPixel::m_solid_angle
private

Definition at line 38 of file SphericalPixel.h.

Referenced by getSolidAngle(), and SphericalPixel().


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