21 std::vector<double>&
H,
unsigned int order )
25 if(order==0)
return true;
31 std::vector<double>
P(order, 1);
33 for (
I4MomIter_t itr_i = iBeg; itr_i != iEnd; ++itr_i )
35 CLHEP::Hep3Vector ci( (*itr_i)->px(), (*itr_i)->py(), (*itr_i)->pz() );
37 for (
I4MomIter_t itr_j = iBeg; itr_j != iEnd; ++itr_j )
39 CLHEP::Hep3Vector cj( (*itr_j)->px(), (*itr_j)->py(), (*itr_j)->pz() );
40 double x=cos(ci.angle(cj));
44 double P2=0.5*(3.0*
x*
x-1);
45 double P3=0.5*(5.0*
x*
x*
x-3.0*
x);
46 double P4=0.125*(35.0*
x*
x*
x*
x-30*
x*
x+3);
48 H[0]+=abs(ci.mag())*abs(cj.mag())*P0;
51 H[1]+=abs(ci.mag())*abs(cj.mag())*P1;
56 H[2]+=abs(ci.mag())*abs(cj.mag())*P2;
61 H[3]+=abs(ci.mag())*abs(cj.mag())*P3;
66 H[4]+=abs(ci.mag())*abs(cj.mag())*P4;
70 for (
unsigned int loop=5; loop<order; ++loop )
72 P[loop] = 1.0/loop*((2.0*loop-1)*
x*
P[loop-1]-
74 H[loop]=abs(ci.mag())*abs(ci.mag())*
P[loop];
83 const double inv_N0 = N0!=0 ? (1. / N0) : 1;
84 for (
unsigned int loop=5; loop<order; ++loop ) {