9 #include <analysis/ContinuumSuppression/FoxWolfram.h>
23 for (
auto iter1 = begin; iter1 != end; iter1++) {
24 const TVector3 pVec1 = (*iter1);
25 double pMag1 = pVec1.Mag();
28 for (
auto iter2 = iter1; iter2 != end; iter2++) {
29 const TVector3 pVec2 = (*iter2);
30 double magProd = pMag1 * pVec2.Mag();
31 double cTheta = pVec1.Dot(pVec2) / magProd;
36 if (iter1 != iter2) magProd *= 2;
42 double cTheta2 = cTheta * cTheta;
43 double cTheta3 = cTheta2 * cTheta;
44 double cTheta4 = cTheta2 * cTheta2;
47 m_moment[2] += magProd * 0.5 * (3.*cTheta2 - 1);
48 m_moment[3] += magProd * 0.5 * (5.*cTheta3 - 3.*cTheta);
49 m_moment[4] += magProd * 0.125 * (35.*cTheta4 - 30.*cTheta2 + 3.);
67 for (
auto iter1 = begin; iter1 != end; iter1++) {
68 const TVector3 pVec1 = (*iter1);
69 double pMag1 = pVec1.Mag();
72 for (
auto iter2 = iter1; iter2 != end; iter2++) {
73 const TVector3 pVec2 = (*iter2);
74 double magProd = pMag1 * pVec2.Mag();
75 double cTheta = pVec1.Dot(pVec2) / magProd;
80 if (iter1 != iter2) magProd *= 2;
86 double cTheta2 = cTheta * cTheta;
87 double cTheta3 = cTheta2 * cTheta;
88 double cTheta4 = cTheta2 * cTheta2;
89 double cTheta5 = cTheta4 * cTheta;
90 double cTheta6 = cTheta3 * cTheta3;
91 double cTheta7 = cTheta6 * cTheta;
92 double cTheta8 = cTheta4 * cTheta4;
96 m_moment[2] += magProd * 0.5 * (3.*cTheta2 - 1);
97 m_moment[3] += magProd * 0.5 * (5.*cTheta3 - 3.*cTheta);
98 m_moment[4] += magProd * 0.125 * (35.*cTheta4 - 30.*cTheta2 + 3.);
99 m_moment[5] += magProd * 0.125 * (63.*cTheta5 - 70 * cTheta3 + 15.*cTheta);
100 m_moment[6] += magProd * 0.0625 * (231.*cTheta6 - 315 * cTheta4 + 105 * cTheta2 - 5.);
101 m_moment[7] += magProd * 0.0625 * (429.*cTheta7 - 693.*cTheta5 + 315.*cTheta3 - 35.*cTheta);
102 m_moment[8] += magProd * 0.0078125 * (6435.*cTheta8 - 12012.*cTheta6 + 6930.*cTheta4 - 1260.*cTheta2 + 35.);
double m_moment[9]
The moments.
void calculateAllMoments()
Method to perform the calculation of the moments up to order 8.
void calculateBasicMoments()
Method to perform the calculation of the moments up to order 4, which are the most relevant ones.
std::vector< TVector3 > m_momenta
The particle's momenta.
Abstract base class for different kinds of events.