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);
52 if (TMath::Abs(tmpsol2 - pzmu) < TMath::Abs(tmpsol1 - pzmu)) {
58 if (TMath::Abs(tmpsol1) < TMath::Abs(tmpsol2))
66 if (TMath::Abs(tmpsol2 - pzmu) < TMath::Abs(tmpsol1 - pzmu)) {
73 if (TMath::Abs(tmpsol1) < TMath::Abs(tmpsol2))
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)
double pz() const final
z coordinate of momentum vector
~MEzCalculator()
destructor
double px() const final
x coordinate of momentum vector
double Calculate(int type=1)
member functions
MEzCalculator()
constructor
double py() const final
y coordinate of momentum vector
double energy() const final
energy