Skip to content

Commit

Permalink
Merge pull request #11007 from ahinzmann/pujetid74
Browse files Browse the repository at this point in the history
Backport of new pileup jet ID for MiniAOD re-processing
  • Loading branch information
cmsbuild committed Sep 2, 2015
2 parents 5f5074f + e00bc47 commit aaa4640
Show file tree
Hide file tree
Showing 23 changed files with 592 additions and 791 deletions.
1 change: 1 addition & 0 deletions DQM/PhysicsHWW/interface/MVAJetIdMaker.h
Expand Up @@ -20,6 +20,7 @@ class MVAJetIdMaker {
edm::EDGetTokenT<reco::PFJetCollection> PFJetCollection_;
edm::EDGetTokenT<reco::VertexCollection> thePVCollection_;
std::string jetCorrector_;
edm::EDGetTokenT<double> theRhoCollection_;
PileupJetIdAlgo *fPUJetIdAlgo;

};
Expand Down
2 changes: 1 addition & 1 deletion DQM/PhysicsHWW/python/hwwAnalyzer_cfi.py
@@ -1,5 +1,5 @@
import FWCore.ParameterSet.Config as cms
from RecoJets.JetProducers.puJetIDAlgo_cff import PhilV1
from RecoJets.JetProducers.PileupJetID_cfi import PhilV1

hwwAnalyzer = cms.EDAnalyzer(
"HWWAnalyzer",
Expand Down
11 changes: 9 additions & 2 deletions DQM/PhysicsHWW/src/MVAJetIdMaker.cc
Expand Up @@ -9,8 +9,9 @@ MVAJetIdMaker::MVAJetIdMaker(const edm::ParameterSet& iConfig, edm::ConsumesColl
PFJetCollection_ = iCollector.consumes<reco::PFJetCollection> (iConfig.getParameter<edm::InputTag>("pfJetsInputTag"));
thePVCollection_ = iCollector.consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryVertexInputTag"));
jetCorrector_ = iConfig.getParameter<std::string>("jetCorrector");
theRhoCollection_ = iCollector.consumes<double>(iConfig.getParameter<edm::InputTag>("rhoInputTag"));

fPUJetIdAlgo = new PileupJetIdAlgo(iConfig.getParameter<edm::ParameterSet>("puJetIDParams"));
fPUJetIdAlgo = new PileupJetIdAlgo(iConfig.getParameter<edm::ParameterSet>("puJetIDParams"),true);

}

Expand Down Expand Up @@ -51,6 +52,12 @@ void MVAJetIdMaker::SetVars(HWW& hww, const edm::Event& iEvent, const edm::Event

const JetCorrector* corrector=0;
corrector = JetCorrector::getJetCorrector(jetCorrector_, iSetup);

Handle<double> lHrho;
validToken = iEvent.getByToken(theRhoCollection_, lHrho);
if(!validToken) return;
double lrho = *lHrho;

std::vector<reco::PFJet> lCJets;
for(reco::PFJetCollection::const_iterator jet=lUCJets.begin(); jet!=lUCJets.end(); ++jet){

Expand Down Expand Up @@ -87,7 +94,7 @@ void MVAJetIdMaker::SetVars(HWW& hww, const edm::Event& iEvent, const edm::Event
// calculate mva value only when there are good vertices
// otherwise store -999
if( lGoodVertices.size()>0 ) {
PileupJetIdentifier lPUJetId = fPUJetIdAlgo->computeIdVariables(pCJet,lJec,&lGoodVertices[0],lGoodVertices,true);
PileupJetIdentifier lPUJetId = fPUJetIdAlgo->computeIdVariables(pCJet,lJec,&lGoodVertices[0],lGoodVertices,lrho);
hww.pfjets_mvavalue() .push_back( lPUJetId.mva() );
hww.pfjets_JEC() .push_back( lJec );

Expand Down
4 changes: 2 additions & 2 deletions DQMOffline/JetMET/python/jetAnalyzer_cfi.py
Expand Up @@ -59,9 +59,9 @@
JetIDVersion = cms.string("PURE09"),
#
#actually done only for PFJets at the moment
InputMVAPUIDDiscriminant = cms.InputTag("pileupJetIdEvaluatorDQM","full53xDiscriminant"),
InputMVAPUIDDiscriminant = cms.InputTag("pileupJetIdEvaluatorDQM","fullDiscriminant"),
InputCutPUIDDiscriminant = cms.InputTag("pileupJetIdEvaluatorDQM","cutbasedDiscriminant"),
InputMVAPUIDValue = cms.InputTag("pileupJetIdEvaluatorDQM","full53xId"),
InputMVAPUIDValue = cms.InputTag("pileupJetIdEvaluatorDQM","fullId"),
InputCutPUIDValue = cms.InputTag("pileupJetIdEvaluatorDQM","cutbasedId"),

InputQGMultiplicity = cms.InputTag("QGTagger", "mult"),
Expand Down
4 changes: 1 addition & 3 deletions DQMOffline/JetMET/python/jetMETDQMOfflineSourceMC_cff.py
Expand Up @@ -7,7 +7,7 @@
from DQMOffline.JetMET.SUSYDQMAnalyzer_cfi import *
from DQMOffline.JetMET.goodOfflinePrimaryVerticesDQM_cfi import *

from RecoJets.JetProducers.pileupjetidproducer_cfi import *
from RecoJets.JetProducers.PileupJetID_cfi import *
from RecoJets.JetProducers.QGTagger_cfi import *

pileupJetIdCalculatorDQM=pileupJetIdCalculator.clone(
Expand All @@ -20,7 +20,6 @@
pileupJetIdEvaluatorDQM=pileupJetIdEvaluator.clone(
jets = cms.InputTag("ak4PFJets"),
jetids = cms.InputTag("pileupJetIdCalculatorDQM"),
algos = cms.VPSet(cms.VPSet(full_53x,cutbased)),
jec = cms.string("AK4PF"),
applyJec = cms.bool(True),
inputIsCorrected = cms.bool(False)
Expand All @@ -33,7 +32,6 @@

pileupJetIdEvaluatorCHSDQM=pileupJetIdEvaluator.clone(
jetids = cms.InputTag("pileupJetIdCalculatorCHSDQM"),
algos = cms.VPSet(cms.VPSet(full_53x_chs,cutbased)),
applyJec = cms.bool(True),
inputIsCorrected = cms.bool(False)
)
Expand Down
4 changes: 1 addition & 3 deletions DQMOffline/JetMET/python/jetMETDQMOfflineSource_cff.py
Expand Up @@ -6,7 +6,7 @@
from DQMOffline.JetMET.jetAnalyzer_cff import *
from DQMOffline.JetMET.SUSYDQMAnalyzer_cfi import *
from DQMOffline.JetMET.goodOfflinePrimaryVerticesDQM_cfi import *
from RecoJets.JetProducers.pileupjetidproducer_cfi import *
from RecoJets.JetProducers.PileupJetID_cfi import *
from RecoJets.JetProducers.QGTagger_cfi import *

pileupJetIdCalculatorDQM=pileupJetIdCalculator.clone(
Expand All @@ -19,7 +19,6 @@
pileupJetIdEvaluatorDQM=pileupJetIdEvaluator.clone(
jets = cms.InputTag("ak4PFJets"),
jetids = cms.InputTag("pileupJetIdCalculatorDQM"),
algos = cms.VPSet(cms.VPSet(full_53x,cutbased)),
jec = cms.string("AK4PF"),
applyJec = cms.bool(True),
inputIsCorrected = cms.bool(False)
Expand All @@ -32,7 +31,6 @@

pileupJetIdEvaluatorCHSDQM=pileupJetIdEvaluator.clone(
jetids = cms.InputTag("pileupJetIdCalculatorCHSDQM"),
algos = cms.VPSet(cms.VPSet(full_53x_chs,cutbased)),
applyJec = cms.bool(True),
inputIsCorrected = cms.bool(False)
)
Expand Down
5 changes: 5 additions & 0 deletions DataFormats/JetReco/interface/PileupJetIdentifier.h
Expand Up @@ -55,6 +55,11 @@ class StoredPileupJetIdentifier {
DECLARE_VARIABLE(betaStarClassic ,float);

DECLARE_VARIABLE(ptD ,float);
DECLARE_VARIABLE(rho ,float);
DECLARE_VARIABLE(jetR ,float);
DECLARE_VARIABLE(jetRchg ,float);
DECLARE_VARIABLE(dRMatch ,float);
DECLARE_VARIABLE(nTrueInt ,float);

DECLARE_VARIABLE(nvtx ,float);
};
Expand Down
2 changes: 1 addition & 1 deletion PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py
Expand Up @@ -129,7 +129,7 @@ def miniAOD_customizeCommon(process):
process.patJets.addTagInfos = cms.bool(True)
#
## PU JetID
process.load("PhysicsTools.PatAlgos.slimming.pileupJetId_cfi")
process.load("RecoJets.JetProducers.PileupJetID_cfi")
process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ]

## CaloJets
Expand Down
19 changes: 0 additions & 19 deletions PhysicsTools/PatAlgos/python/slimming/pileupJetId_cfi.py

This file was deleted.

17 changes: 9 additions & 8 deletions RecoJets/JetProducers/interface/PileupJetIdAlgo.h
Expand Up @@ -29,13 +29,12 @@ class PileupJetIdAlgo {
enum version_t { USER=-1, PHILv0=0 };

PileupJetIdAlgo(int version=PHILv0, const std::string & tmvaWeight="", const std::string & tmvaMethod="",
Float_t impactParTkThreshod_=1., const std::vector<std::string> & tmvaVariables= std::vector<std::string>());
PileupJetIdAlgo(const edm::ParameterSet & ps);
Float_t impactParTkThreshod_=1., const std::vector<std::string> & tmvaVariables= std::vector<std::string>(), bool runMvas=true);
PileupJetIdAlgo(const edm::ParameterSet & ps, bool runMvas);
~PileupJetIdAlgo();

PileupJetIdentifier computeIdVariables(const reco::Jet * jet,
float jec, const reco::Vertex *, const reco::VertexCollection &,
bool calculateMva=false);
float jec, const reco::Vertex *, const reco::VertexCollection &, double rho);

void set(const PileupJetIdentifier &);
PileupJetIdentifier computeMva();
Expand Down Expand Up @@ -65,15 +64,17 @@ class PileupJetIdAlgo {
PileupJetIdentifier internalId_;
variables_list_t variables_;

TMVA::Reader * reader_;
std::string tmvaWeights_, tmvaMethod_;
std::vector<std::string> tmvaVariables_;
std::unique_ptr<TMVA::Reader> reader_, reader_jteta_0_2_, reader_jteta_2_2p5_, reader_jteta_2p5_3_, reader_jteta_3_5_;
std::string tmvaWeights_, tmvaWeights_jteta_0_2_, tmvaWeights_jteta_2_2p5_, tmvaWeights_jteta_2p5_3_, tmvaWeights_jteta_3_5_, tmvaMethod_;
std::vector<std::string> tmvaVariables_, tmvaVariables_jteta_0_3_, tmvaVariables_jteta_3_5_;
std::vector<std::string> tmvaSpectators_;
std::map<std::string,std::string> tmvaNames_;

Int_t version_;
Float_t impactParTkThreshod_;
bool cutBased_;
bool cutBased_;
bool etaBinnedWeights_;
bool runMvas_;
Float_t mvacut_ [3][4][4]; //Keep the array fixed
Float_t rmsCut_ [3][4][4]; //Keep the array fixed
Float_t betaStarCut_[3][4][4]; //Keep the array fixed
Expand Down
6 changes: 3 additions & 3 deletions RecoJets/JetProducers/plugins/PileupJetIdProducer.cc
Expand Up @@ -45,7 +45,7 @@ PileupJetIdProducer::PileupJetIdProducer(const edm::ParameterSet& iConfig)
}
for(std::vector<edm::ParameterSet>::iterator it=algos.begin(); it!=algos.end(); ++it) {
std::string label = it->getParameter<std::string>("label");
algos_.push_back( std::make_pair(label,new PileupJetIdAlgo(*it)) );
algos_.push_back( std::make_pair(label,new PileupJetIdAlgo(*it, runMvas_)) );
if( runMvas_ ) {
produces<edm::ValueMap<float> > (label+"Discriminant");
produces<edm::ValueMap<int> > (label+"Id");
Expand Down Expand Up @@ -159,7 +159,7 @@ PileupJetIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
PileupJetIdentifier puIdentifier;
if( produceJetIds_ ) {
// Compute the input variables
puIdentifier = ialgo->computeIdVariables(theJet, jec, &(*vtx), vertexes, runMvas_);
puIdentifier = ialgo->computeIdVariables(theJet, jec, &(*vtx), vertexes, rho);
ids.push_back( puIdentifier );
} else {
// Or read it from the value map
Expand All @@ -170,7 +170,7 @@ PileupJetIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
ialgo->set(puIdentifier);
puIdentifier = ialgo->computeMva();
}

if( runMvas_ ) {
// Compute the MVA and WP
mvas[algoi->first].push_back( puIdentifier.mva() );
Expand Down
115 changes: 115 additions & 0 deletions RecoJets/JetProducers/python/PileupJetIDCutParams_cfi.py
@@ -1,5 +1,120 @@
import FWCore.ParameterSet.Config as cms

###########################################################
## Working points for the 74X training
###########################################################
full_74x_chs_wp = cms.PSet(
#4 Eta Categories 0-2.5 2.5-2.75 2.75-3.0 3.0-5.0

#Tight Id
Pt010_Tight = cms.vdouble(-0.1,-0.83,-0.83,-0.98),
Pt1020_Tight = cms.vdouble(-0.1,-0.83,-0.83,-0.98),
Pt2030_Tight = cms.vdouble(-0.1,-0.83,-0.83,-0.98),
Pt3050_Tight = cms.vdouble(-0.5,-0.77,-0.80,-0.98),

#Medium Id
Pt010_Medium = cms.vdouble(-0.3,-0.87,-0.87,-0.99),
Pt1020_Medium = cms.vdouble(-0.3,-0.87,-0.87,-0.99),
Pt2030_Medium = cms.vdouble(-0.3,-0.87,-0.87,-0.99),
Pt3050_Medium = cms.vdouble(-0.6,-0.85,-0.85,-0.99),

#Loose Id
Pt010_Loose = cms.vdouble(-0.8,-0.97,-0.97,-0.99),
Pt1020_Loose = cms.vdouble(-0.8,-0.97,-0.97,-0.99),
Pt2030_Loose = cms.vdouble(-0.8,-0.97,-0.97,-0.99),
Pt3050_Loose = cms.vdouble(-0.8,-0.95,-0.97,-0.99)
)

###########################################################
## Working points for the 53X training/New Met Dec 21, 2012
###########################################################
full_53x_wp = cms.PSet(
#4 Eta Categories 0-2.5 2.5-2.75 2.75-3.0 3.0-5.0

#Tight Id
Pt010_Tight = cms.vdouble(-0.83,-0.81,-0.74,-0.81),
Pt1020_Tight = cms.vdouble(-0.83,-0.81,-0.74,-0.81),
Pt2030_Tight = cms.vdouble( 0.73, 0.05,-0.26,-0.42),
Pt3050_Tight = cms.vdouble( 0.73, 0.05,-0.26,-0.42),

#Medium Id
Pt010_Medium = cms.vdouble(-0.83,-0.92,-0.90,-0.92),
Pt1020_Medium = cms.vdouble(-0.83,-0.92,-0.90,-0.92),
Pt2030_Medium = cms.vdouble( 0.10,-0.36,-0.54,-0.54),
Pt3050_Medium = cms.vdouble( 0.10,-0.36,-0.54,-0.54),

#Loose Id
Pt010_Loose = cms.vdouble(-0.95,-0.96,-0.94,-0.95),
Pt1020_Loose = cms.vdouble(-0.95,-0.96,-0.94,-0.95),
Pt2030_Loose = cms.vdouble(-0.63,-0.60,-0.55,-0.45),
Pt3050_Loose = cms.vdouble(-0.63,-0.60,-0.55,-0.45),

#MET
Pt010_MET = cms.vdouble( 0. ,-0.6,-0.4,-0.4),
Pt1020_MET = cms.vdouble( 0.3 ,-0.2,-0.4,-0.4),
Pt2030_MET = cms.vdouble( 0. , 0. , 0. , 0. ),
Pt3050_MET = cms.vdouble( 0. , 0. ,-0.1,-0.2)
)

full_53x_chs_wp = cms.PSet(
#4 Eta Categories 0-2.5 2.5-2.75 2.75-3.0 3.0-5.0

#Tight Id
Pt010_Tight = cms.vdouble(-0.83,-0.81,-0.74,-0.81),
Pt1020_Tight = cms.vdouble(-0.83,-0.81,-0.74,-0.81),
Pt2030_Tight = cms.vdouble( 0.78, 0.50, 0.17, 0.17),
Pt3050_Tight = cms.vdouble( 0.78, 0.50, 0.17, 0.17),

#Medium Id
Pt010_Medium = cms.vdouble(-0.83,-0.92,-0.90,-0.92),
Pt1020_Medium = cms.vdouble(-0.83,-0.92,-0.90,-0.92),
Pt2030_Medium = cms.vdouble(-0.07,-0.09, 0.00,-0.06),
Pt3050_Medium = cms.vdouble(-0.07,-0.09, 0.00,-0.06),

#Loose Id
Pt010_Loose = cms.vdouble(-0.95,-0.96,-0.94,-0.95),
Pt1020_Loose = cms.vdouble(-0.95,-0.96,-0.94,-0.95),
Pt2030_Loose = cms.vdouble(-0.15,-0.26,-0.16,-0.16),
Pt3050_Loose = cms.vdouble(-0.15,-0.26,-0.16,-0.16),
)

met_53x_wp = cms.PSet(

#Tight Id
Pt010_Tight = cms.vdouble(-2, -2, -2, -2, -2),
Pt1020_Tight = cms.vdouble(-2, -2, -2, -2, -2),
Pt2030_Tight = cms.vdouble(-2, -2, -2, -2, -2),
Pt3050_Tight = cms.vdouble(-2, -2, -2, -2, -2),

#Medium Id
Pt010_Medium = cms.vdouble(-2, -2, -2, -2, -2),
Pt1020_Medium = cms.vdouble(-2, -2, -2, -2, -2),
Pt2030_Medium = cms.vdouble(-2, -2, -2, -2, -2),
Pt3050_Medium = cms.vdouble(-2, -2, -2, -2, -2),

#Loose Id
Pt010_Loose = cms.vdouble(-2, -2, -2, -2, -2),
Pt1020_Loose = cms.vdouble(-2, -2, -2, -2, -2),
Pt2030_Loose = cms.vdouble(-2, -2, -2, -2, -2),
Pt3050_Loose = cms.vdouble(-2, -2, -2, -2, -2),

#4 Eta Categories 0-2.5 2.5-2.75 2.75-3.0 3.0-5.0
#MET
Pt010_MET = cms.vdouble(-0.2 ,-0.3,-0.5,-0.5),
Pt1020_MET = cms.vdouble(-0.2 ,-0.2,-0.5,-0.3),
Pt2030_MET = cms.vdouble(-0.2 ,-0.2,-0.2, 0.1),
Pt3050_MET = cms.vdouble(-0.2 ,-0.2, 0. , 0.2)
)

metfull_53x_wp = cms.PSet(
#MET
Pt010_MET = cms.vdouble(-0.2 ,-0.3,-0.5,-0.5),
Pt1020_MET = cms.vdouble(-0.2 ,-0.2,-0.5,-0.3),
Pt2030_MET = cms.vdouble( 0. , 0. , 0. , 0. ),
Pt3050_MET = cms.vdouble( 0. , 0. ,-0.1,-0.2)
)


###########################################################
## Working points for the 5X training
###########################################################
Expand Down

0 comments on commit aaa4640

Please sign in to comment.