91 bool discrim_flag =
true;
95 double alpha1 = tmass * tmass - cprime.m2();
96 double a = 2 * 4 * (cprime.z() * cprime.z() - cprime.e() * cprime.e());
97 double alpha = alpha1 + 2 * (cprime.x() * vnu.x() + cprime.y() * vnu.y());
98 double b = 4 * alpha * cprime.z();
99 double c = alpha * alpha - 4 * cprime.e() * cprime.e() * vnu.vect().perp2();
100 double d = b * b - 2 * a *
c;
102 discrim_flag =
false;
107 nuz1 = (-b +
dd) / a;
108 nuz2 = (-b -
dd) / a;
109 if (
abs(nuz1) >
abs(nuz2))
116 const Lepjets_Event& ev,
double tmass,
double& re_nuz1,
double& im_nuz1,
double& re_nuz2,
double& im_nuz2)
139 bool discrim_flag =
true;
143 double alpha1 = tmass * tmass - cprime.m2();
144 double a = 2 * 4 * (cprime.z() * cprime.z() - cprime.e() * cprime.e());
147 double alpha = alpha1 + 2 * (cprime.x() * vnu.x() + cprime.y() * vnu.y());
148 double b = 4 * alpha * cprime.z();
149 double c = alpha * alpha - 4 * cprime.e() * cprime.e() * vnu.vect().perp2();
150 double d = b * b - 2 * a *
c;
152 discrim_flag =
false;
156 re_nuz1 = (-b +
sqrt(d)) / a;
158 re_nuz2 = (-b -
sqrt(d)) / a;
160 if (
abs(re_nuz1) >
abs(re_nuz2)) {
161 swap(re_nuz1, re_nuz2);
169 im_nuz1 = -fabs(
sqrt(-d) / a);
171 im_nuz2 = fabs(
sqrt(-d) / a);
196 bool discrim_flag =
true;
201 double x = vlep.x() * vnu.x() + vlep.y() * vnu.y() + wmass * wmass / 2;
202 double a = vlep.z() * vlep.z() - vlep.e() * vlep.e();
203 double b = 2 * x * vlep.z();
204 double c = x * x - vnu.perp2() * vlep.e() * vlep.e();
206 double d = b * b - 4 * a *
c;
209 discrim_flag =
false;
212 nuz1 = (-b +
sqrt(d)) / 2 / a;
213 nuz2 = (-b -
sqrt(d)) / 2 / a;
214 if (
abs(nuz1) >
abs(nuz2))
221 const Lepjets_Event& ev,
double wmass,
double& re_nuz1,
double& im_nuz1,
double& re_nuz2,
double& im_nuz2)
244 bool discrim_flag =
true;
249 double x = vlep.x() * vnu.x() + vlep.y() * vnu.y() + wmass * wmass / 2;
250 double a = vlep.z() * vlep.z() - vlep.e() * vlep.e();
251 double b = 2 * x * vlep.z();
252 double c = x * x - vnu.perp2() * vlep.e() * vlep.e();
254 double d = b * b - 4 * a *
c;
256 discrim_flag =
false;
260 re_nuz1 = (-b +
sqrt(d)) / 2 / a;
262 re_nuz2 = (-b -
sqrt(d)) / 2 / a;
264 if (fabs(re_nuz1) > fabs(re_nuz2)) {
265 swap(re_nuz1, re_nuz2);
273 re_nuz1 = -b / 2 /
a;
274 im_nuz1 = -fabs(
sqrt(-d) / a);
275 re_nuz2 = -b / 2 /
a;
276 im_nuz2 = fabs(
sqrt(-d) / a);
383 s <<
"lepw " << p <<
" " << p.m() <<
"\n";
385 s <<
"lept " << p <<
" " << p.m() <<
"\n";
387 s <<
"hadw " << p <<
" " << p.m() <<
"\n";
389 s <<
"hadt " << p <<
" " << p.m() <<
"\n";
406 if (W.isLightlike() || W.isSpacelike()) {
410 CLHEP::HepBoost BoostWCM(W.findBoostToCM());
412 CLHEP::Hep3Vector boost_v3fermion = BoostWCM(fermion).vect();
413 CLHEP::Hep3Vector boost_v3top = BoostWCM(top).vect();
415 double costhetastar = boost_v3fermion.cosTheta(-boost_v3top);
static bool solve_nu_tmass(const Lepjets_Event &ev, double tmass, double &nuz1, double &nuz2)
Solve for the neutrino longitudinal momentum that makes the leptonic top have a certain value of mas...
Define three-vector and four-vector classes for the HitFit package, and supply a few additional opera...
static Fourvec hadw2(const Lepjets_Event &ev)
Return the hadronic boson jet which have lower .
void swap(Association< C > &lhs, Association< C > &rhs)
static Fourvec hadw1(const Lepjets_Event &ev)
Return the hadronic boson jet which have higher .
static bool solve_nu(const Lepjets_Event &ev, double wmass, double &nuz1, double &nuz2)
Solve for the longitudinal momentum that makes the leptonic -boson to have a certain value of mass...
Represent a simple event consisting of lepton(s) and jet(s).
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
A class to hold functions to calculate kinematic quantities of interest in events.
static double cos_theta_star_lept(const Lepjets_Event &ev)
Calculate the lepton in top quark leptonic decay.
Represent a simple event consisting of lepton(s) and jet(s). An instance of this class holds a list o...
CLHEP::HepLorentzVector Fourvec
Typedef for a HepLorentzVector.
Abs< T >::type abs(const T &t)
Fourvec sum(int type) const
Return the sum of all objects' four-momentum which have a particular type.
static double cos_theta_star_hadt(const Lepjets_Event &ev)
Calculate the hadronic in top quark leptonic decay. As there is no information on the weak isospin c...
Fourvec & met()
Return a reference to the missing transverse energy.
static Fourvec hadt(const Lepjets_Event &ev)
Sum up the appropriate four-momenta to find the hadronic top quark.
static double cos_theta_star(const Fourvec &fermion, const Fourvec &W, const Fourvec &top)
Calculate in top quark decay.
static Fourvec lept(const Lepjets_Event &ev)
Sum up the appropriate four-momenta to find the leptonic top quark.
static Fourvec lepw(const Lepjets_Event &ev)
Sum up the appropriate four-momenta to find the leptonic boson.
alpha
zGenParticlesMatch = cms.InputTag(""),
static Fourvec hadw(const Lepjets_Event &ev)
Sum up the appropriate four-momenta to find the hadronic boson.
static std::ostream & dump_ev(std::ostream &s, const Lepjets_Event &ev)
Print the kinematic information for an event.