Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jet ID and b-tag information for Scouting Calojets (80X) #14279

Merged
merged 2 commits into from May 2, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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