BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SphericalPixel Class Reference

A pixel in a SphericalDetector. More...

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
 
kvector_t 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
 

Detailed Description

A pixel in a SphericalDetector.

Definition at line 29 of file SphericalPixel.h.

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 }
const double m_dalpha
const double m_dphi
double m_solid_angle
const double m_alpha
const double m_phi
double binSize() 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 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()

kvector_t 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 }
kvector_t 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: