13{
20
21 double FoxWolframMoments[5] = {0};
22 double ESum = 0;
23
26
27 for(
unsigned int i1=0; i1<
clusters.size(); i1++) {
31
32 for(
unsigned int i2=i1+1; i2<
clusters.size(); i2++) {
36
37 TVector3 cj(clusters[i2].
px(), clusters[i2].
py(), clusters[i2].
pz());
38 TLorentzVector quadvec(clusters[i1].
px(), clusters[i1].
py(), clusters[i1].
pz(), clusters[i1].
e());
39
40 double CosTheta12 = TMath::Cos(quadvec.Angle(cj));
41
42 double P0 = 1.;
43 double P1 = CosTheta12;
44 double P2 = 0.5*(3.*CosTheta12*CosTheta12 - 1.);
45 double P3 = 0.5*(5.*CosTheta12*CosTheta12*CosTheta12 - 3.*CosTheta12);
46 double P4 = 0.125*(35.*CosTheta12*CosTheta12*CosTheta12*CosTheta12 - 30.*CosTheta12*CosTheta12 + 3.);
47
48 FoxWolframMoments[0] +=
p1*
p2*P0;
49 FoxWolframMoments[1] +=
p1*
p2*P1;
50 FoxWolframMoments[2] +=
p1*
p2*P2;
51 FoxWolframMoments[3] +=
p1*
p2*P3;
52 FoxWolframMoments[4] +=
p1*
p2*P4;
53 }
54
56 }
57
59
60 if(ESum > 0) {
61 const double inv_Esum2 = 1. / (ESum*ESum);
62 for(
int i=0;
i<5;
i++) {
63 FoxWolframMoments[
i] *= inv_Esum2;
64 R.push_back(FoxWolframMoments[i]);
65 }
66 }
67 else {
69 }
70
76
78}
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
std::vector< fastjet::PseudoJet > boostToCenterOfMass(const fastjet::PseudoJet &jet, std::vector< fastjet::PseudoJet > constituents)