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>);
56 if (hemispheres.
isValid() && inputMet.
isValid() && hemispheres->size() > 1) {
57 TLorentzVector ja(hemispheres->at(0).x(), hemispheres->at(0).y(), hemispheres->at(0).z(), hemispheres->at(0).t());
58 TLorentzVector jb(hemispheres->at(1).x(), hemispheres->at(1).y(), hemispheres->at(1).z(), hemispheres->at(1).t());
60 std::vector<math::XYZTLorentzVector> muonVec;
61 const double MR =
CalcMR(ja, jb);
62 const double R =
CalcR(MR, ja, jb, inputMet, muonVec);
63 result->push_back(MR);
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())));
T getParameter(std::string const &) const
RazorVarProducer(const edm::ParameterSet &)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double CalcMR(TLorentzVector ja, TLorentzVector jb)
edm::InputTag inputMetTag_
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< reco::CaloMETCollection > inputMetTagToken_
static const std::string B
double CalcR(double MR, const TLorentzVector &ja, const TLorentzVector &jb, edm::Handle< reco::CaloMETCollection > met, const std::vector< math::XYZTLorentzVector > &muons)
std::vector< std::vector< double > > tmp
void produce(edm::Event &, const edm::EventSetup &) override
~RazorVarProducer() override
edm::EDGetTokenT< std::vector< math::XYZTLorentzVector > > inputTagToken_