27 : inputTag_(iConfig.getParameter<
edm::
InputTag>(
"inputTag")),
28 inputMetTag_(iConfig.getParameter<
edm::
InputTag>(
"inputMetTag")) {
33 produces<std::vector<double>>();
54 std::unique_ptr<std::vector<double>>
result(
new std::vector<double>);
60 std::vector<math::XYZTLorentzVector> muonVec;
61 const double MR =
CalcMR(ja, jb);
62 const double R =
CalcR(MR, ja, jb, inputMet, muonVec);
73 ja.SetPtEtaPhiM(ja.Pt(), ja.Eta(), ja.Phi(), 0.0);
74 jb.SetPtEtaPhiM(jb.Pt(), jb.Eta(), jb.Phi(), 0.0);
76 if (ja.Pt() > jb.Pt()) {
77 TLorentzVector
temp = ja;
87 jaT.SetXYZ(ja.Px(), ja.Py(), 0.0);
88 jbT.SetXYZ(jb.Px(), jb.Py(), 0.0);
89 double ATBT = (jaT + jbT).Mag2();
91 double MR =
sqrt((
A +
B) * (
A +
B) - (az + bz) * (az + bz) -
92 (jbT.Dot(jbT) - jaT.Dot(jaT)) * (jbT.Dot(jbT) - jaT.Dot(jaT)) / (jaT + jbT).Mag2());
94 double mybeta = (jbT.Dot(jbT) - jaT.Dot(jaT)) /
sqrt(ATBT * ((
A +
B) * (
A +
B) - (az + bz) * (az + bz)));
96 double mygamma = 1. /
sqrt(1. - mybeta * mybeta);
103 const TLorentzVector &ja,
104 const TLorentzVector &jb,
106 const std::vector<math::XYZTLorentzVector> &
muons) {
109 met.SetPtEtaPhi((inputMet->front()).
pt(), 0.0, (inputMet->front()).
phi());
111 std::vector<math::XYZTLorentzVector>::const_iterator muonIt;
112 for (muonIt =
muons.begin(); muonIt !=
muons.end(); muonIt++) {
114 tmp.SetPtEtaPhi(muonIt->pt(), 0, muonIt->phi());
118 double MTR =
sqrt(0.5 * (
met.Mag() * (ja.Pt() + jb.Pt()) -
met.Dot(ja.Vect() + jb.Vect())));