Skip to content

Commit

Permalink
Merge pull request #74 from BrieucF/trigEffBis
Browse files Browse the repository at this point in the history
Trigger efficiencies and errors
  • Loading branch information
OlivierBondu committed Jan 30, 2016
2 parents e0d4918 + 9819ae4 commit d322172
Show file tree
Hide file tree
Showing 4 changed files with 211 additions and 17 deletions.
32 changes: 16 additions & 16 deletions interface/HHAnalyzer.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@

#include <cp3_llbb/Framework/interface/Analyzer.h>
#include <cp3_llbb/Framework/interface/Category.h>
#include <cp3_llbb/Framework/interface/ScaleFactorParser.h>
#include <cp3_llbb/HHAnalysis/interface/Types.h>

#include <Math/VectorUtil.h>

using namespace HH;
using namespace HHAnalysis;

class HHAnalyzer: public Framework::Analyzer {
Expand Down Expand Up @@ -48,6 +50,15 @@ class HHAnalyzer: public Framework::Analyzer {

m_hltDRCut = config.getUntrackedParameter<double>("hltDRCut", std::numeric_limits<float>::max());
m_hltDPtCut = config.getUntrackedParameter<double>("hltDPtCut", std::numeric_limits<float>::max());

if (config.exists("hlt_efficiencies")){
const edm::ParameterSet& hlt_efficiencies = config.getUntrackedParameter<edm::ParameterSet>("hlt_efficiencies");
std::vector<std::string> hlt_efficiencies_name = hlt_efficiencies.getParameterNames();
for (const std::string& hlt_efficiency: hlt_efficiencies_name) {
ScaleFactorParser parser(hlt_efficiencies.getUntrackedParameter<edm::FileInPath>(hlt_efficiency).fullPath());
m_hlt_efficiencies.emplace(hlt_efficiency, std::move(parser.get_scale_factor()));
}
}
}

// leptons and dileptons stuff
Expand Down Expand Up @@ -81,6 +92,10 @@ class HHAnalyzer: public Framework::Analyzer {
virtual void analyze(const edm::Event&, const edm::EventSetup&, const ProducersManager&, const AnalyzersManager&, const CategoryManager&) override;
virtual void registerCategories(CategoryManager& manager, const edm::ParameterSet& config) override;

float getCosThetaStar_CS(const LorentzVector & h1, const LorentzVector & h2, float ebeam = 6500);

void fillTriggerEfficiencies(const Lepton & lep1, const Lepton & lep2, Dilepton & dilep);

// global event stuff (selected objects multiplicity)
BRANCH(nJets, unsigned int);
BRANCH(nJetsL, unsigned int);
Expand All @@ -97,22 +112,6 @@ class HHAnalyzer: public Framework::Analyzer {
BRANCH(nLeptonsL, unsigned int);
BRANCH(nLeptonsT, unsigned int);

float getCosThetaStar_CS(const LorentzVector & h1, const LorentzVector & h2, float ebeam = 6500)
{// cos theta star angle in the Collins Soper frame
LorentzVector p1, p2;
p1.SetPxPyPzE(0, 0, ebeam, ebeam);
p2.SetPxPyPzE(0, 0, -ebeam, ebeam);

LorentzVector hh = h1 + h2;
ROOT::Math::Boost boost(-hh.X() / hh.T(), -hh.Y() / hh.T(), -hh.Z() / hh.T());
p1 = boost(p1);
p2 = boost(p2);
LorentzVector newh1 = boost(h1);
ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double>> CSaxis(p1.Vect().Unit() - p2.Vect().Unit());

return cos(ROOT::Math::VectorUtil::Angle(CSaxis.Unit(), newh1.Vect().Unit()));
}

private:
// Producers name
std::string m_electrons_producer;
Expand All @@ -129,6 +128,7 @@ class HHAnalyzer: public Framework::Analyzer {
std::string m_electron_loose_wp_name;
std::string m_electron_tight_wp_name;
bool m_applyBJetRegression;
std::map<std::string, ScaleFactor> m_hlt_efficiencies;

};

Expand Down
5 changes: 5 additions & 0 deletions interface/Types.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ namespace HH {
bool gen_matched;
float gen_DR;
float gen_DPtOverPt;
float trigger_efficiency;
float trigger_efficiency_downVariated;
float trigger_efficiency_downVariated_Arun;
float trigger_efficiency_upVariated;
float trigger_efficiency_upVariated_Arun;
};
struct Met {
LorentzVector p4;
Expand Down
183 changes: 183 additions & 0 deletions plugins/HHAnalyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,16 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const
dilep.gen_p4 = dilep.gen_matched ? leptons[ilep1].gen_p4 + leptons[ilep2].gen_p4 : null_p4;
dilep.gen_DR = dilep.gen_matched ? ROOT::Math::VectorUtil::DeltaR(dilep.p4, dilep.gen_p4) : -1.;
dilep.gen_DPtOverPt = dilep.gen_matched ? (dilep.p4.Pt() - dilep.gen_p4.Pt()) / dilep.p4.Pt() : -10.;
if (event.isRealData()) {
dilep.trigger_efficiency = 1.;
dilep.trigger_efficiency_downVariated = 1.;
dilep.trigger_efficiency_downVariated_Arun = 1.;
dilep.trigger_efficiency_upVariated = 1.;
dilep.trigger_efficiency_upVariated_Arun = 1.;
}
else {
fillTriggerEfficiencies(leptons[ilep1], leptons[ilep2], dilep);
}
ll.push_back(dilep);
}
}
Expand Down Expand Up @@ -1338,3 +1348,176 @@ void HHAnalyzer::analyze(const edm::Event& event, const edm::EventSetup&, const

}

float HHAnalyzer::getCosThetaStar_CS(const LorentzVector & h1, const LorentzVector & h2, float ebeam /*= 6500*/)
{// cos theta star angle in the Collins Soper frame
LorentzVector p1, p2;
p1.SetPxPyPzE(0, 0, ebeam, ebeam);
p2.SetPxPyPzE(0, 0, -ebeam, ebeam);

LorentzVector hh = h1 + h2;
ROOT::Math::Boost boost(-hh.X() / hh.T(), -hh.Y() / hh.T(), -hh.Z() / hh.T());
p1 = boost(p1);
p2 = boost(p2);
LorentzVector newh1 = boost(h1);
ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double>> CSaxis(p1.Vect().Unit() - p2.Vect().Unit());

return cos(ROOT::Math::VectorUtil::Angle(CSaxis.Unit(), newh1.Vect().Unit()));
}

void HHAnalyzer::fillTriggerEfficiencies(const Lepton & lep1, const Lepton & lep2, Dilepton & dilep) {

float eff_lep1_leg1 = 1.;
float eff_lep1_leg2 = 1.;
float eff_lep1_tkleg2 = 0.;
float eff_lep2_leg1 = 1.;
float eff_lep2_leg2 = 1.;
float eff_lep2_tkleg2 = 0.;

if (lep1.isMu && lep2.isMu) {
eff_lep1_leg1 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep1_leg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep1_tkleg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep2_leg1 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
eff_lep2_leg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
eff_lep2_tkleg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
}
else if (lep1.isMu && lep2.isEl) {
eff_lep1_leg1 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep1_leg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep2_leg1 = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
eff_lep2_leg2 = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
}
else if (lep1.isEl && lep2.isMu) {
eff_lep1_leg1 = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep1_leg2 = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep2_leg1 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
eff_lep2_leg2 = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
}
else if (lep1.isEl && lep2.isEl){
eff_lep1_leg1 = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep1_leg2 = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[0];
eff_lep2_leg1 = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
eff_lep2_leg2 = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[0];
}
else
std::cout << "We have something else then el or mu !!" << std::endl;

float error_eff_lep1_leg1_up = 0.;
float error_eff_lep1_leg2_up = 0.;
float error_eff_lep1_tkleg2_up = 0.;
float error_eff_lep2_leg1_up = 0.;
float error_eff_lep2_leg2_up = 0.;
float error_eff_lep2_tkleg2_up = 0.;

if (lep1.isMu && lep2.isMu) {
error_eff_lep1_leg1_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep1_leg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep1_tkleg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep2_leg1_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
error_eff_lep2_leg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
error_eff_lep2_tkleg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
}
else if (lep1.isMu && lep2.isEl) {
error_eff_lep1_leg1_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep1_leg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep2_leg1_up = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
error_eff_lep2_leg2_up = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
}
else if (lep1.isEl && lep2.isMu) {
error_eff_lep1_leg1_up = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep1_leg2_up = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep2_leg1_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
error_eff_lep2_leg2_up = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
}
else if (lep1.isEl && lep2.isEl){
error_eff_lep1_leg1_up = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep1_leg2_up = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[2];
error_eff_lep2_leg1_up = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
error_eff_lep2_leg2_up = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[2];
}

float error_eff_lep1_leg1_down = 0.;
float error_eff_lep1_leg2_down = 0.;
float error_eff_lep1_tkleg2_down = 0.;
float error_eff_lep2_leg1_down = 0.;
float error_eff_lep2_leg2_down = 0.;
float error_eff_lep2_tkleg2_down = 0.;

if (lep1.isMu && lep2.isMu) {
error_eff_lep1_leg1_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep1_leg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep1_tkleg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep2_leg1_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
error_eff_lep2_leg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
error_eff_lep2_tkleg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_TkMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
}
else if (lep1.isMu && lep2.isEl) {
error_eff_lep1_leg1_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep1_leg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep2_leg1_down = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
error_eff_lep2_leg2_down = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
}
else if (lep1.isEl && lep2.isMu) {
error_eff_lep1_leg1_down = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep1_leg2_down = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep2_leg1_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu17leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
error_eff_lep2_leg2_down = m_hlt_efficiencies["DoubleIsoMu17Mu8_IsoMu8leg"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
}
else if (lep1.isEl && lep2.isEl){
error_eff_lep1_leg1_down = m_hlt_efficiencies["Ele17_12Leg1"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep1_leg2_down = m_hlt_efficiencies["Ele17_12Leg2"].get({lep1.p4.Eta(), lep1.p4.Pt()})[1];
error_eff_lep2_leg1_down = m_hlt_efficiencies["Ele17_12Leg1"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
error_eff_lep2_leg2_down = m_hlt_efficiencies["Ele17_12Leg2"].get({lep2.p4.Eta(), lep2.p4.Pt()})[1];
}


float nominal = -(eff_lep1_leg1 * eff_lep2_leg1) +
(1 - (1 - eff_lep1_leg2) * (1 - eff_lep1_tkleg2)) * eff_lep2_leg1 +
eff_lep1_leg1 * (1 - (1 - eff_lep2_leg2) * (1 - eff_lep2_tkleg2));

float error_squared_up =
std::pow(1 - eff_lep2_leg1 - (1 - eff_lep2_leg2) * (1 - eff_lep2_tkleg2), 2) *
std::pow(error_eff_lep1_leg1_up, 2) +
std::pow(1 - eff_lep1_tkleg2, 2) * std::pow(eff_lep2_leg1, 2) *
std::pow(error_eff_lep1_leg2_up, 2) +
std::pow(1 - eff_lep1_leg2, 2) * std::pow(eff_lep2_leg1, 2) *
std::pow(error_eff_lep1_tkleg2_up, 2) +
std::pow(1 - eff_lep1_leg1 - (1 - eff_lep1_leg2) * (1 - eff_lep1_tkleg2), 2) *
std::pow(error_eff_lep2_leg1_up, 2) +
std::pow(eff_lep1_leg1, 2) * std::pow(1 - eff_lep2_tkleg2, 2) *
std::pow(error_eff_lep2_leg2_up, 2) +
std::pow(eff_lep1_leg1, 2) * std::pow(1 - eff_lep2_leg2, 2) *
std::pow(error_eff_lep2_tkleg2_up, 2);

float error_squared_down =
std::pow(1 - eff_lep2_leg1 - (1 - eff_lep2_leg2) * (1 - eff_lep2_tkleg2), 2) *
std::pow(error_eff_lep1_leg1_down, 2) +
std::pow(1 - eff_lep1_tkleg2, 2) * std::pow(eff_lep2_leg1, 2) *
std::pow(error_eff_lep1_leg2_down, 2) +
std::pow(1 - eff_lep1_leg2, 2) * std::pow(eff_lep2_leg1, 2) *
std::pow(error_eff_lep1_tkleg2_down, 2) +
std::pow(1 - eff_lep1_leg1 - (1 - eff_lep1_leg2) * (1 - eff_lep1_tkleg2), 2) *
std::pow(error_eff_lep2_leg1_down, 2) +
std::pow(eff_lep1_leg1, 2) * std::pow(1 - eff_lep2_tkleg2, 2) *
std::pow(error_eff_lep2_leg2_down, 2) +
std::pow(eff_lep1_leg1, 2) * std::pow(1 - eff_lep2_leg2, 2) *
std::pow(error_eff_lep2_tkleg2_down, 2);

dilep.trigger_efficiency = nominal;
dilep.trigger_efficiency_upVariated = ((nominal + std::sqrt(error_squared_up)) > 1.)? 1. : nominal + std::sqrt(error_squared_up);
dilep.trigger_efficiency_downVariated = ((nominal - std::sqrt(error_squared_down)) < 0.)? 0. : nominal - std::sqrt(error_squared_down);

// Arun's method (not using the proper derivative formula)
float X = eff_lep1_leg1 * eff_lep2_leg2 * std::sqrt((std::pow((error_eff_lep1_leg1_up/eff_lep1_leg1),2) + std::pow((error_eff_lep2_leg2_up/eff_lep2_leg2),2) ));
float Y = eff_lep2_leg1 * eff_lep1_leg2 * std::sqrt((std::pow((error_eff_lep2_leg1_up/eff_lep2_leg1),2) + std::pow((error_eff_lep1_leg2_up/eff_lep1_leg2),2) ));
float Z = eff_lep1_leg1 * eff_lep2_leg1 * std::sqrt((std::pow((error_eff_lep1_leg1_up/eff_lep1_leg1),2) + std::pow((error_eff_lep2_leg1_up/eff_lep2_leg1),2) ));
float error_squared_up_Arun = X*X + Y*Y + Z*Z ;
dilep.trigger_efficiency_upVariated_Arun = ((nominal + std::sqrt(error_squared_up_Arun)) > 1.)? 1. : nominal + std::sqrt(error_squared_up_Arun);

X = eff_lep1_leg1 * eff_lep2_leg2 * std::sqrt((std::pow((error_eff_lep1_leg1_down/eff_lep1_leg1),2) + std::pow((error_eff_lep2_leg2_down/eff_lep2_leg2),2) ));
Y = eff_lep2_leg1 * eff_lep1_leg2 * std::sqrt((std::pow((error_eff_lep2_leg1_down/eff_lep2_leg1),2) + std::pow((error_eff_lep1_leg2_down/eff_lep1_leg2),2) ));
Z = eff_lep1_leg1 * eff_lep2_leg1 * std::sqrt((std::pow((error_eff_lep1_leg1_down/eff_lep1_leg1),2) + std::pow((error_eff_lep2_leg1_down/eff_lep2_leg1),2) ));
float error_squared_down_Arun = X*X + Y*Y + Z*Z ;
dilep.trigger_efficiency_downVariated_Arun = ((nominal - std::sqrt(error_squared_down_Arun)) < 0.)? 0. : nominal - std::sqrt(error_squared_down_Arun);

}
8 changes: 7 additions & 1 deletion test/HHConfiguration.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,16 @@
hltDRCut = cms.untracked.double(0.3),
hltDPtCut = cms.untracked.double(0.5), # cut will be DPt/Pt < hltDPtCut
applyBJetRegression = cms.untracked.bool(True) # BE SURE TO ACTIVATE computeRegression FLAG BELOW
hlt_efficiencies = cms.untracked.PSet(
Ele17_12Leg1 = cms.untracked.FileInPath('cp3_llbb/Framework/data/Efficiencies/Electron_HLT_Ele17_12Leg1_TightID.json'),
Ele17_12Leg2 = cms.untracked.FileInPath('cp3_llbb/Framework/data/Efficiencies/Electron_HLT_Ele17_12Leg2_TightID.json'),
DoubleIsoMu17Mu8_IsoMu17leg = cms.untracked.FileInPath('cp3_llbb/Framework/data/Efficiencies/Muon_TnP_DoubleIsoMu17Mu8_IsoMu17leg_Run2015D_25ns_PTvsETA_binBig_HWW_ID_M_ISO_T.json'),
DoubleIsoMu17Mu8_IsoMu8leg = cms.untracked.FileInPath('cp3_llbb/Framework/data/Efficiencies/Muon_TnP_DoubleIsoMu17Mu8_IsoMu8leg_Run2015D_25ns_PTvsETA_binBig_HWW_ID_M_ISO_T.json'),
DoubleIsoMu17Mu8_TkMu8leg = cms.untracked.FileInPath('cp3_llbb/Framework/data/Efficiencies/Muon_TnP_DoubleIsoMu17Mu8_TkMu8leg_Run2015D_25ns_PTvsETA_binBig_HWW_ID_M_ISO_T.json')
)
)
)

)
# Add PUPPI MET
puppiCfg = cms.PSet(METProducer.default_configuration.clone())
puppiCfg.prefix = cms.string('puppimet_')
Expand Down

0 comments on commit d322172

Please sign in to comment.