29 const double px = (*j1)->px() + (*j2)->px() + (*j3)->px();
30 const double py = (*j1)->py() + (*j2)->py() + (*j3)->py();
33 const double ptsq =
px *
px +
py *
py;
47 TLorentzVector lepton;
48 if (
event.m_electrons.size() == 1) lepton =
event.m_electrons.at(0)->
p4();
51 if (
event.m_muons.size() == 1) lepton =
event.m_muons.at(0)->p4();
56 double topdiff = 1000000.;
59 if (*
j1 == jet1 || *
j1 == jet2 || *
j1 == jet3)
continue;
62 const double tempdiff = fabs((lepton + nu + (*j1)->p4()).M());
70 if (lepb) std::cout << lepb->
pt() << std::endl;
76 bool dealWithNegative_nu)
const {
77 const double px =
met.mpx();
78 const double py =
met.mpy();
82 double beta = 0.5 * (alpha -
pow(
met.met(), 2) +
pow(lep.Pz(), 2));
84 double lambda = 2. *
beta * lep.Pz() / (
pow(lep.E(), 2) -
pow(lep.Pz(), 2));
85 double delta =
pow(lambda, 2) - 4 *
gamma;
88 if (dealWithNegative_nu) delta = 0;
89 else return TLorentzVector();
94 double pz_pos = (lambda + delta) / 2.;
95 double pz_neg = (lambda - delta) / 2.;
99 if (fabs(pz_pos) > fabs(pz_neg))
pz = pz_neg;
104 TLorentzVector neutrino;
105 neutrino.SetPxPyPzE(
px,
py,
pz,
e);