16 throw cms::Exception(
"UnimplementedFeature") <<
"Type " <<
type <<
" not supported in MEzCalculator.\n";
19 double M_mu = 0.10566;
20 double M_e = 0.511e-3;
21 double M_lepton = M_mu;
35 double a = M_W * M_W - M_lepton * M_lepton + 2.0 * (pxmu * pxnu + pymu * pynu);
36 double A = 4.0 * (emu * emu - pzmu * pzmu);
37 double B = -4.0 *
a * pzmu;
38 double C = 4.0 * emu * emu * (pxnu * pxnu + pynu * pynu) -
a *
a;
40 double tmproot =
B *
B - 4.0 *
A *
C;
47 double tmpsol1 = (-
B + TMath::Sqrt(tmproot)) / (2.0 *
A);
48 double tmpsol2 = (-
B - TMath::Sqrt(tmproot)) / (2.0 *
A);
81 p3w.SetXYZ(pxmu + pxnu, pymu + pynu, pzmu + tmpsol1);
82 p3mu.SetXYZ(pxmu, pymu, pzmu);
84 double sinthcm1 = 2. * (p3mu.Perp(p3w)) / M_W;
85 p3w.SetXYZ(pxmu + pxnu, pymu + pynu, pzmu + tmpsol2);
86 double sinthcm2 = 2. * (p3mu.Perp(p3w)) / M_W;
88 double costhcm1 = TMath::Sqrt(1. - sinthcm1 * sinthcm1);
89 double costhcm2 = TMath::Sqrt(1. - sinthcm2 * sinthcm2);
91 if (costhcm1 > costhcm2)