LDMX Software
Public Member Functions | Private Attributes | List of all members
GaussianDistribution2D Class Reference

Public Member Functions

 GaussianDistribution2D (double normalization, const Acts::Vector3 &mean, const Acts::Vector3 &major_axis, const Acts::Vector3 &minor_axis)
 
void transform (const Acts::Transform3 &transform)
 
GaussianDistribution2D transformed (const Acts::Transform3 &transform)
 
double getNormalization ()
 
Acts::Vector3 getMean ()
 
double sigma1D (const Acts::Vector3 &axis)
 
double covxy (const Acts::Vector3 &xaxis, const Acts::Vector3 yaxis)
 
double upperIntegral1D (const Acts::Vector3 &axis, double integration_limit)
 

Private Attributes

double normalization_ {1.0}
 
Acts::Vector3 mean_ {0., 0., 0.}
 
Acts::Vector3 major_axis_ {0., 0., 0.}
 
Acts::Vector3 minor_axis_ {0., 0., 0.}
 

Detailed Description

Definition at line 5 of file GaussianDistribution2D.h.

Constructor & Destructor Documentation

◆ GaussianDistribution2D()

GaussianDistribution2D::GaussianDistribution2D ( double  normalization,
const Acts::Vector3 &  mean,
const Acts::Vector3 &  major_axis,
const Acts::Vector3 &  minor_axis 
)

Definition at line 5 of file GaussianDistribution2D.cxx.

7 {
8 normalization_ = normalization;
9 mean_ = mean;
10
11 if (std::abs(major_axis.dot(minor_axis)) < 1.e-9) {
12 major_axis_ = major_axis;
13 minor_axis_ = minor_axis;
14 } else {
15 std::cout << __PRETTY_FUNCTION__ << "FAILURE: Axes are not perpendicular"
16 << std::endl;
17 }
18}

Member Function Documentation

◆ covxy()

double GaussianDistribution2D::covxy ( const Acts::Vector3 &  xaxis,
const Acts::Vector3  yaxis 
)

Definition at line 42 of file GaussianDistribution2D.cxx.

43 {
44 // Check that the axes are orthogonal
45 if (std::abs(xaxis.dot(yaxis) > 1e-9))
46 std::cout << "ERROR:: Pixel axes are not orthogonal" << std::endl;
47
48 // Find the sin and cos of the angle between the x axis and the major axis
49 double cth = (xaxis / xaxis.norm()).dot((major_axis_ / major_axis_.norm()));
50 double sth = (yaxis / yaxis.norm()).dot((major_axis_ / major_axis_.norm()));
51
52 // Calculate the x-y covariance matrix element
53 return sth * cth * (major_axis_.squaredNorm() - minor_axis_.squaredNorm());
54}

◆ getMean()

Acts::Vector3 GaussianDistribution2D::getMean ( )
inline

Definition at line 15 of file GaussianDistribution2D.h.

15{ return mean_; };

◆ getNormalization()

double GaussianDistribution2D::getNormalization ( )
inline

Definition at line 14 of file GaussianDistribution2D.h.

14{ return normalization_; };

◆ sigma1D()

double GaussianDistribution2D::sigma1D ( const Acts::Vector3 &  axis)

Definition at line 36 of file GaussianDistribution2D.cxx.

36 {
37 Acts::Vector3 uaxis = axis / axis.norm();
38 return std::sqrt(std::pow(uaxis.dot(major_axis_), 2) +
39 std::pow(uaxis.dot(minor_axis_), 2));
40}

◆ transform()

void GaussianDistribution2D::transform ( const Acts::Transform3 &  transform)

Definition at line 20 of file GaussianDistribution2D.cxx.

20 {
21 mean_ = transform * mean_;
22 major_axis_ = transform * major_axis_;
23 minor_axis_ = transform * minor_axis_;
24}

◆ transformed()

GaussianDistribution2D GaussianDistribution2D::transformed ( const Acts::Transform3 &  transform)

Definition at line 26 of file GaussianDistribution2D.cxx.

27 {
28 Acts::Vector3 t_mean = transform * mean_;
29 Acts::Vector3 t_major_axis = transform * major_axis_;
30 Acts::Vector3 t_minor_axis = transform * minor_axis_;
31
32 return GaussianDistribution2D(normalization_, t_mean, t_major_axis,
33 t_minor_axis);
34}

◆ upperIntegral1D()

double GaussianDistribution2D::upperIntegral1D ( const Acts::Vector3 &  axis,
double  integration_limit 
)

Definition at line 56 of file GaussianDistribution2D.cxx.

57 {
58 std::cout << "UPPER INTEGRAL 1D TO BE IMPLEMENTED" << std::endl;
59 return -999;
60}

Member Data Documentation

◆ major_axis_

Acts::Vector3 GaussianDistribution2D::major_axis_ {0., 0., 0.}
private

Definition at line 23 of file GaussianDistribution2D.h.

23{0., 0., 0.};

◆ mean_

Acts::Vector3 GaussianDistribution2D::mean_ {0., 0., 0.}
private

Definition at line 22 of file GaussianDistribution2D.h.

22{0., 0., 0.};

◆ minor_axis_

Acts::Vector3 GaussianDistribution2D::minor_axis_ {0., 0., 0.}
private

Definition at line 24 of file GaussianDistribution2D.h.

24{0., 0., 0.};

◆ normalization_

double GaussianDistribution2D::normalization_ {1.0}
private

Definition at line 21 of file GaussianDistribution2D.h.

21{1.0};

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