Skip to content

Commit

Permalink
Merge pull request #14279 from duanders/scoutingcalojetbtag80X
Browse files Browse the repository at this point in the history
Jet ID and b-tag information for Scouting Calojets (80X)
  • Loading branch information
cmsbuild committed May 2, 2016
2 parents ac50b95 + 0a298d4 commit 6a402e1
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 6 deletions.
8 changes: 5 additions & 3 deletions DataFormats/Scouting/interface/ScoutingCaloJet.h
Expand Up @@ -13,18 +13,18 @@ class ScoutingCaloJet
float jetArea, float maxEInEmTowers, float maxEInHadTowers,
float hadEnergyInHB, float hadEnergyInHE, float hadEnergyInHF,
float emEnergyInEB, float emEnergyInEE, float emEnergyInHF,
float towersArea, float mvaDiscriminator):
float towersArea, float mvaDiscriminator, float btagDiscriminator):
pt_(pt), eta_(eta), phi_(phi), m_(m),
jetArea_(jetArea), maxEInEmTowers_(maxEInEmTowers), maxEInHadTowers_(maxEInHadTowers),
hadEnergyInHB_(hadEnergyInHB), hadEnergyInHE_(hadEnergyInHE), hadEnergyInHF_(hadEnergyInHF),
emEnergyInEB_(emEnergyInEB), emEnergyInEE_(emEnergyInEE), emEnergyInHF_(emEnergyInHF),
towersArea_(towersArea), mvaDiscriminator_(mvaDiscriminator){ }
towersArea_(towersArea), mvaDiscriminator_(mvaDiscriminator), btagDiscriminator_(btagDiscriminator) { }
//default constructor
ScoutingCaloJet():pt_(0), eta_(0), phi_(0), m_(0),
jetArea_(0), maxEInEmTowers_(0), maxEInHadTowers_(0),
hadEnergyInHB_(0), hadEnergyInHE_(0), hadEnergyInHF_(0),
emEnergyInEB_(0), emEnergyInEE_(0), emEnergyInHF_(0),
towersArea_(0), mvaDiscriminator_(0) { }
towersArea_(0), mvaDiscriminator_(0), btagDiscriminator_(0) { }

//accessor functions
float pt() const { return pt_; }
Expand All @@ -42,6 +42,7 @@ class ScoutingCaloJet
float emEnergyInHF() const { return emEnergyInHF_; }
float towersArea() const { return towersArea_; }
float mvaDiscriminator() const { return mvaDiscriminator_; }
float btagDiscriminator() const { return btagDiscriminator_; }

private:
float pt_;
Expand All @@ -59,6 +60,7 @@ class ScoutingCaloJet
float emEnergyInHF_;
float towersArea_;
float mvaDiscriminator_;
float btagDiscriminator_;
};

typedef std::vector<ScoutingCaloJet> ScoutingCaloJetCollection;
Expand Down
3 changes: 2 additions & 1 deletion DataFormats/Scouting/src/classes_def.xml
@@ -1,6 +1,7 @@
<lcgdict>
<class name="ScoutingCaloJet" ClassVersion="2">
<class name="ScoutingCaloJet" ClassVersion="3">
<version ClassVersion="2" checksum="2705685116"/>
<version ClassVersion="3" checksum="631496401"/>
</class>
<class name="ScoutingPFJet" ClassVersion="2">
<version ClassVersion="2" checksum="2507658732"/>
Expand Down
54 changes: 52 additions & 2 deletions HLTrigger/JetMET/plugins/HLTScoutingCaloProducer.cc
Expand Up @@ -29,10 +29,13 @@ Description: Producer for ScoutingCaloJets from reco::CaloJet objects
#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/METReco/interface/CaloMETCollection.h"
#include "DataFormats/METReco/interface/CaloMET.h"
#include "DataFormats/BTauReco/interface/JetTag.h"

#include "DataFormats/Scouting/interface/ScoutingCaloJet.h"
#include "DataFormats/Scouting/interface/ScoutingVertex.h"

#include "DataFormats/Math/interface/deltaR.h"

class HLTScoutingCaloProducer : public edm::global::EDProducer<> {
public:
explicit HLTScoutingCaloProducer(const edm::ParameterSet&);
Expand All @@ -44,6 +47,8 @@ class HLTScoutingCaloProducer : public edm::global::EDProducer<> {
virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) const override final;

const edm::EDGetTokenT<reco::CaloJetCollection> caloJetCollection_;
const edm::EDGetTokenT<reco::JetTagCollection> caloJetBTagCollection_;
const edm::EDGetTokenT<reco::JetTagCollection> caloJetIDTagCollection_;
const edm::EDGetTokenT<reco::VertexCollection> vertexCollection_;
const edm::EDGetTokenT<reco::CaloMETCollection> metCollection_;
const edm::EDGetTokenT<double> rho_;
Expand All @@ -52,19 +57,25 @@ class HLTScoutingCaloProducer : public edm::global::EDProducer<> {
const double caloJetEtaCut;

const bool doMet;
const bool doJetBTags;
const bool doJetIDTags;
};

//
// constructors and destructor
//
HLTScoutingCaloProducer::HLTScoutingCaloProducer(const edm::ParameterSet& iConfig):
caloJetCollection_(consumes<reco::CaloJetCollection>(iConfig.getParameter<edm::InputTag>("caloJetCollection"))),
caloJetBTagCollection_(consumes<reco::JetTagCollection>(iConfig.getParameter<edm::InputTag>("caloJetBTagCollection"))),
caloJetIDTagCollection_(consumes<reco::JetTagCollection>(iConfig.getParameter<edm::InputTag>("caloJetIDTagCollection"))),
vertexCollection_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("vertexCollection"))),
metCollection_(consumes<reco::CaloMETCollection>(iConfig.getParameter<edm::InputTag>("metCollection"))),
rho_(consumes<double>(iConfig.getParameter<edm::InputTag>("rho"))),
caloJetPtCut(iConfig.getParameter<double>("caloJetPtCut")),
caloJetEtaCut(iConfig.getParameter<double>("caloJetEtaCut")),
doMet(iConfig.getParameter<bool>("doMet"))
doMet(iConfig.getParameter<bool>("doMet")),
doJetBTags(iConfig.getParameter<bool>("doJetBTags")),
doJetIDTags(iConfig.getParameter<bool>("doJetIDTags"))
{
//register products
produces<ScoutingCaloJetCollection>();
Expand All @@ -87,14 +98,49 @@ HLTScoutingCaloProducer::produce(edm::StreamID sid, edm::Event & iEvent, edm::Ev
Handle<reco::CaloJetCollection> caloJetCollection;
std::auto_ptr<ScoutingCaloJetCollection> outCaloJets(new ScoutingCaloJetCollection());
if(iEvent.getByToken(caloJetCollection_, caloJetCollection)){
//get jet tags
Handle<reco::JetTagCollection> caloJetBTagCollection;
bool haveJetBTags = false;
if(doJetBTags && iEvent.getByToken(caloJetBTagCollection_, caloJetBTagCollection)){
haveJetBTags = true;
}
Handle<reco::JetTagCollection> caloJetIDTagCollection;
bool haveJetIDTags = false;
if(doJetIDTags && iEvent.getByToken(caloJetIDTagCollection_, caloJetIDTagCollection)){
haveJetIDTags = true;
}

for(auto &jet : *caloJetCollection){
if(jet.pt() > caloJetPtCut && fabs(jet.eta()) < caloJetEtaCut){
//find the jet tag(s) corresponding to the jet
float bTagValue = -20;
float bTagMinDR2 = 0.01;
if(haveJetBTags){
for(auto &tag : *caloJetBTagCollection){
float dR2 = reco::deltaR2(jet, *(tag.first));
if(dR2 < bTagMinDR2){
bTagMinDR2 = dR2;
bTagValue = tag.second;
}
}
}
float idTagValue = -20;
float idTagMinDR2 = 0.01;
if(haveJetIDTags){
for(auto &tag : *caloJetIDTagCollection){
float dR2 = reco::deltaR2(jet, *(tag.first));
if(dR2 < idTagMinDR2){
idTagMinDR2 = dR2;
idTagValue = tag.second;
}
}
}
outCaloJets->emplace_back(
jet.pt(), jet.eta(), jet.phi(), jet.mass(),
jet.jetArea(), jet.maxEInEmTowers(), jet.maxEInHadTowers(),
jet.hadEnergyInHB(), jet.hadEnergyInHE(), jet.hadEnergyInHF(),
jet.emEnergyInEB(), jet.emEnergyInEE(), jet.emEnergyInHF(),
jet.towersArea(), 0.0
jet.towersArea(), idTagValue, bTagValue
);
}
}
Expand Down Expand Up @@ -141,12 +187,16 @@ void
HLTScoutingCaloProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("caloJetCollection",edm::InputTag("hltAK4CaloJets"));
desc.add<edm::InputTag>("caloJetBTagCollection",edm::InputTag("hltCombinedSecondaryVertexBJetTagsCalo"));
desc.add<edm::InputTag>("caloJetIDTagCollection",edm::InputTag("hltCaloJetFromPV"));
desc.add<edm::InputTag>("vertexCollection", edm::InputTag("hltPixelVertices"));
desc.add<edm::InputTag>("metCollection", edm::InputTag("hltMet"));
desc.add<edm::InputTag>("rho", edm::InputTag("hltFixedGridRhoFastjetAllCalo"));
desc.add<double>("caloJetPtCut", 20.0);
desc.add<double>("caloJetEtaCut", 3.0);
desc.add<bool>("doMet", true);
desc.add<bool>("doJetBTags", false);
desc.add<bool>("doJetIDTags", false);
descriptions.add("hltScoutingCaloProducer", desc);
}

Expand Down

0 comments on commit 6a402e1

Please sign in to comment.