Skip to content
Open
Binary file not shown.
Binary file not shown.
Binary file not shown.
17 changes: 10 additions & 7 deletions MiniAODHelper/interface/MiniAODHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
#include "DataFormats/PatCandidates/interface/Isolation.h"
#include "DataFormats/PatCandidates/interface/Tau.h"
#include "DataFormats/PatCandidates/interface/Particle.h"
#include "DataFormats/JetReco/interface/GenJetCollection.h"
#include "DataFormats/JetReco/interface/GenJet.h"
#include "MiniAOD/BoostedObjects/interface/BoostedJet.h"

#include "PhysicsTools/SelectorUtils/interface/JetIDSelectionFunctor.h"
Expand Down Expand Up @@ -171,13 +173,13 @@ class MiniAODHelper{
std::vector<pat::Jet> GetSelectedJets(const std::vector<pat::Jet>&, const float, const float, const jetID::jetID, const char);
std::vector<pat::Jet> GetUncorrectedJets(const std::vector<pat::Jet>&);
std::vector<pat::Jet> GetUncorrectedJets(edm::Handle<pat::JetCollection>);
pat::Jet GetCorrectedJet(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
float GetJetCorrectionFactor(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
pat::Jet GetCorrectedAK8Jet(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
float GetAK8JetCorrectionFactor(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
std::vector<pat::Jet> GetCorrectedJets(const std::vector<pat::Jet>&, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
pat::Jet GetCorrectedJet(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
float GetJetCorrectionFactor(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
pat::Jet GetCorrectedAK8Jet(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
float GetAK8JetCorrectionFactor(const pat::Jet&, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
std::vector<pat::Jet> GetCorrectedJets(const std::vector<pat::Jet>&, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
std::vector<pat::Jet> GetCorrectedJets(const std::vector<pat::Jet>&, const sysType::sysType iSysType=sysType::NA);
std::vector<boosted::BoostedJet> GetCorrectedBoostedJets(const std::vector<boosted::BoostedJet>& inputBoostedJets, const edm::Event&, const edm::EventSetup&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
std::vector<boosted::BoostedJet> GetCorrectedBoostedJets(const std::vector<boosted::BoostedJet>& inputBoostedJets, const edm::Event&, const edm::EventSetup&, const edm::Handle<reco::GenJetCollection>&, const sysType::sysType iSysType=sysType::NA, const bool& doJES=true, const bool& doJER=true, const float& corrFactor = 1, const float& uncFactor = 1);
std::vector<boosted::BoostedJet> GetSelectedBoostedJets(const std::vector<boosted::BoostedJet>&, const float, const float, const float, const float, const jetID::jetID);
bool passesMuonPOGIdTight(const pat::Muon&);
bool isGoodMuon(const pat::Muon&, const float, const float, const muonID::muonID, const coneSize::coneSize, const corrType::corrType);
Expand Down Expand Up @@ -222,7 +224,8 @@ class MiniAODHelper{
TLorentzVector * top =0 ,
TLorentzVector * antitop =0 );

bool jetdPtMatched(const pat::Jet& inputJet);
bool GenJet_Match( const pat::Jet&, const edm::Handle<reco::GenJetCollection>&, reco::GenJet&, const double& );
bool jetdPtMatched(const pat::Jet& inputJet, const reco::GenJet& genjet);
double getJERfactor( const int, const double, const double, const double );
std::vector<pat::MET> CorrectMET(const std::vector<pat::Jet>& oldJetsForMET, const std::vector<pat::Jet>& newJetsForMET, const std::vector<pat::MET>& pfMETs);
// Return weight factor dependent on number of true PU interactions
Expand Down
9 changes: 6 additions & 3 deletions MiniAODHelper/plugins/MiniAODAnalyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ class MiniAODAnalyzer : public edm::EDAnalyzer {
edm::EDGetTokenT <pat::JetCollection> ak4jetToken;
edm::EDGetTokenT <edm::View<pat::Jet> > ak8jetToken;
edm::EDGetTokenT <reco::BeamSpot> beamspotToken;
edm::EDGetTokenT <reco::GenJetCollection> token_genjets;

edm::EDGetTokenT <pat::JetCollection> ca12jetToken;
edm::EDGetTokenT <pat::JetCollection> ca12filtjetToken;
Expand Down Expand Up @@ -226,7 +227,8 @@ MiniAODAnalyzer::MiniAODAnalyzer(const edm::ParameterSet& iConfig)

heptopfatjetToken = consumes <pat::JetCollection> (edm::InputTag(std::string("selectedPatJetsHEPTopFatPF")));
heptopsubjetToken = consumes <pat::JetCollection> (edm::InputTag(std::string("selectedPatJetsHEPTopSubPF")));


token_genjets = consumes<reco::GenJetCollection> (edm::InputTag(std::string("slimmedGenJets")));


numEvents_ = 0;
Expand Down Expand Up @@ -446,7 +448,8 @@ MiniAODAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup
edm::Handle<pat::JetCollection> heptopsubpfjets;
iEvent.getByToken(heptopsubjetToken,heptopsubpfjets);


edm::Handle<reco::GenJetCollection> genjets;
iEvent.getByToken(token_genjets, genjets);

edm::Handle<edm::View<pat::Jet> > pfjetAK8Handle;
iEvent.getByToken(ak8jetToken,pfjetAK8Handle);
Expand Down Expand Up @@ -758,7 +761,7 @@ MiniAODAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup
std::vector<pat::Jet> rawJets = miniAODhelper.GetUncorrectedJets(*pfjets);
std::vector<pat::Jet> jetsNoMu = miniAODhelper.RemoveOverlaps(selectedMuons, rawJets);
std::vector<pat::Jet> jetsNoEle = miniAODhelper.RemoveOverlaps(selectedElectrons, jetsNoMu);
std::vector<pat::Jet> correctedJets = miniAODhelper.GetCorrectedJets(jetsNoEle, iEvent, iSetup);
std::vector<pat::Jet> correctedJets = miniAODhelper.GetCorrectedJets(jetsNoEle, iEvent, iSetup, genjets);
std::vector<pat::Jet> cleanSelectedJets = miniAODhelper.GetSelectedJets(correctedJets, 30., 2.4, jetID::jetLoose, '-' );

int nJet = 0;
Expand Down
30 changes: 26 additions & 4 deletions MiniAODHelper/src/LeptonSFHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,11 @@ float LeptonSFHelper::GetElectronSF( float electronPt , float electronEta , int

upval=nomval+error;
downval=nomval-error;

if(nomval==0) {
thisBin = h_ele_ID_abseta_pt_ratio->FindBin( searchEta , 20.001 );
nomval=h_ele_ID_abseta_pt_ratio->GetBinContent( thisBin );
}

}
else if ( type == "Trigger" ){
Expand All @@ -185,6 +190,11 @@ float LeptonSFHelper::GetElectronSF( float electronPt , float electronEta , int
error=h_ele_ISO_abseta_pt_ratio->GetBinError( thisBin );
upval=nomval+error;
downval=nomval-error;

if(nomval==0) {
thisBin = h_ele_ISO_abseta_pt_ratio->FindBin( searchEta , 20.001 );
nomval=h_ele_ISO_abseta_pt_ratio->GetBinContent( thisBin );
}

}
else {
Expand Down Expand Up @@ -225,13 +235,18 @@ float LeptonSFHelper::GetMuonSF( float muonPt , float muonEta , int syst , std:
upval=upval*( 1.0+0.01 );
downval=downval*( 1.0-0.01 );


if(nomval==0) {
thisBin = h_mu_ID_abseta_pt_ratio->FindBin( searchEta , 20.001 );
nomval=h_mu_ID_abseta_pt_ratio->GetBinContent( thisBin );
}

}
else if ( type == "Trigger" ){

float mult4p2 = 0.2834;
float mult4p3 = 0.7166;
//float mult4p2 = 0.0482;
//float mult4p3 = 0.9518;

thisBin = h_mu_TRIGGER_abseta_pt_ratio4p3->FindBin(searchEta,searchPt);
float nomval4p3=h_mu_TRIGGER_abseta_pt_ratio4p3->GetBinContent(thisBin);
Expand Down Expand Up @@ -260,7 +275,11 @@ float LeptonSFHelper::GetMuonSF( float muonPt , float muonEta , int syst , std:
downval=( nomval-error );
upval=upval*( 1.0+0.005 );
downval=downval*( 1.0-0.005 );


if(nomval==0) {
thisBin = h_mu_ISO_abseta_pt_ratio->FindBin( searchEta , 20.001 );
nomval=h_mu_ISO_abseta_pt_ratio->GetBinContent( thisBin );
}

}
else {
Expand Down Expand Up @@ -345,9 +364,10 @@ void LeptonSFHelper::SetElectronHistos( ){

void LeptonSFHelper::SetMuonHistos( ){

std::string IDinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "MuonID_Z_2016runB_2p6fb.root";
std::string IDinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "MuonID_Z_RunBCD_prompt80X_7p65.root";
std::string TRIGGERinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "SingleMuonTrigger_Z_RunCD_Reco76X_Feb15.root";
std::string ISOinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "MuonISO_Z_2016runB_2p6fb.root";
//std::string TRIGGERinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "SingleMuonTrigger_Z_RunBCD_prompt80X_7p65.root";
std::string ISOinputFile = std::string(getenv("CMSSW_BASE")) + "/src/MiniAOD/MiniAODHelper/data/leptonSF/" + "MuonIso_Z_RunBCD_prompt80X_7p65.root";

TFile *f_IDSF = new TFile(std::string(IDinputFile).c_str(),"READ");
TFile *f_TRIGGERSF = new TFile(std::string(TRIGGERinputFile).c_str(),"READ");
Expand All @@ -356,6 +376,8 @@ void LeptonSFHelper::SetMuonHistos( ){
h_mu_ID_abseta_pt_ratio = (TH2F*)f_IDSF->Get("MC_NUM_TightIDandIPCut_DEN_genTracks_PAR_pt_spliteta_bin1/abseta_pt_ratio");
h_mu_TRIGGER_abseta_pt_ratio4p3 = (TH2F*)f_TRIGGERSF->Get("runD_IsoMu20_OR_IsoTkMu20_HLTv4p3_PtEtaBins/abseta_pt_ratio");
h_mu_TRIGGER_abseta_pt_ratio4p2 = (TH2F*)f_TRIGGERSF->Get("runD_IsoMu20_OR_IsoTkMu20_HLTv4p2_PtEtaBins/abseta_pt_ratio");
//h_mu_TRIGGER_abseta_pt_ratio4p3 = (TH2F*)f_TRIGGERSF->Get("IsoMu22_OR_IsoTkMu22_PtEtaBins_Run273158_to_274093/efficienciesDATA/abseta_pt_DATA");
//h_mu_TRIGGER_abseta_pt_ratio4p2 = (TH2F*)f_TRIGGERSF->Get("IsoMu22_OR_IsoTkMu22_PtEtaBins_Run274094_to_276097/efficienciesDATA/abseta_pt_DATA");
h_mu_ISO_abseta_pt_ratio = (TH2F*)f_ISOSF->Get("MC_NUM_TightRelIso_DEN_TightID_PAR_pt_spliteta_bin1/abseta_pt_ratio");

}
Expand Down
Loading