Skip to content

Commit

Permalink
Merge pull request cms-sw#141 from kurtejung/ThirteenTevJECsforHI
Browse files Browse the repository at this point in the history
adding 13 TeV JECs and ghost flavor assn for pp
  • Loading branch information
kurtejung authored Nov 1, 2017
2 parents 1747f01 + e715213 commit 18a73eb
Show file tree
Hide file tree
Showing 12 changed files with 850 additions and 145 deletions.
100 changes: 87 additions & 13 deletions HeavyIonsAnalysis/JetAnalysis/interface/HiInclusiveJetAnalyzer.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@
#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMap.h"
#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"

#include "RecoBTag/SecondaryVertex/interface/TrackKinematics.h"
#include "DataFormats/Common/interface/View.h"

#include "DataFormats/PatCandidates/interface/PackedCandidate.h"

#include "SimDataFormats/JetMatching/interface/JetFlavourInfo.h"
#include "SimDataFormats/JetMatching/interface/JetFlavourInfoMatching.h"
#include "RecoBTag/SecondaryVertex/interface/V0Filter.h"
#include "RecoBTag/SecondaryVertex/interface/TrackSelector.h"

#include "fastjet/contrib/Njettiness.hh"
#include "TMVA/Reader.h"
//
Expand All @@ -43,9 +53,6 @@
\date November 2010
*/




class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
public:

Expand Down Expand Up @@ -84,15 +91,22 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
math::XYZPoint getPosition(const DetId &id, reco::Vertex::Point vtx = reco::Vertex::Point(0,0,0));
int TaggedJet(reco::Jet calojet, edm::Handle<reco::JetTagCollection > jetTags );
float getTau(unsigned num, const reco::GenJet object) const;
void analyzeSubjets(const reco::Jet jet);
void analyzeSubjets(const reco::Jet jet, int idx, edm::Handle<reco::JetFlavourInfoMatchingCollection>, edm::Handle<edm::View<reco::Jet> >, edm::Handle<reco::JetTagCollection> jetTags_CombinedSvtxV2, edm::Handle<reco::JetTagCollection> jetTags_negCombinedSvtxV2, edm::Handle<reco::JetTagCollection> jetTags_JP, edm::Handle<std::vector<reco::TrackIPTagInfo> > subjetTagInfo, edm::Handle<std::vector<reco::SecondaryVertexTagInfo> > subjetSV, edm::Handle<std::vector<reco::SecondaryVertexTagInfo> > subjetTagInfoNegSVx);
void fillNewJetVarsRecoJet(const reco::Jet jet);
void fillNewJetVarsRefJet(const reco::GenJet jet);
void fillNewJetVarsGenJet(const reco::GenJet jet);
int getGroomedGenJetIndex(const reco::GenJet jet) const;
void analyzeRefSubjets(const reco::GenJet jet);
void analyzeGenSubjets(const reco::GenJet jet);
float getAboveCharmThresh(reco::TrackRefVector& selTracks, const reco::TrackIPTagInfo& ipData, int sigOrVal);


int findMatchedParton(float eta, float phi, float maxDr, edm::Handle<reco::GenParticleCollection > genparts, int partonFlavor);
int getFlavorProcess(int index, edm::Handle<reco::GenParticleCollection > genparts);

reco::TrackSelector trackSelector;
reco::TrackSelector trackPseudoSelector;
reco::V0Filter pseudoVertexV0Filter;
reco::V0Filter trackPairV0Filter;
std::auto_ptr<fastjet::contrib::Njettiness> routine_;

class ExtraInfo : public fastjet::PseudoJet::UserInfoBase {
Expand Down Expand Up @@ -155,6 +169,8 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
bool useQuality_;
std::string trackQuality_;

bool isPythia6_;

bool doSubEvent_;
double genPtMin_;
bool doLifeTimeTagging_;
Expand Down Expand Up @@ -210,6 +226,18 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
edm::EDGetTokenT<reco::JetTagCollection> PositiveCombinedSecondaryVertexV2BJetTags_;
edm::EDGetTokenT<reco::JetTagCollection> NegativeSoftPFMuonByPtBJetTags_;
edm::EDGetTokenT<reco::JetTagCollection> PositiveSoftPFMuonByPtBJetTags_;
edm::EDGetTokenT<reco::JetTagCollection> SubjetJetProbabilityBJetTags_;
edm::EDGetTokenT<std::vector<reco::TrackIPTagInfo> > svImpactParameterTagInfos_;
edm::EDGetTokenT<std::vector<reco::SecondaryVertexTagInfo> > svSubjetTagInfos_;
edm::EDGetTokenT<std::vector<reco::SecondaryVertexTagInfo> > svSubjetNegTagInfos_;
edm::EDGetTokenT<reco::JetTagCollection> CombinedSubjetSecondaryVertexBJetTags_;
edm::EDGetTokenT<reco::JetTagCollection> CombinedSubjetNegativeSecondaryVertexBJetTags_;

bool doExtendedFlavorTagging_;
edm::EDGetTokenT<reco::JetFlavourInfoMatchingCollection> jetFlavourInfosToken_;
edm::EDGetTokenT<reco::JetFlavourInfoMatchingCollection> subjetFlavourInfosToken_;
edm::EDGetTokenT<edm::View<reco::Jet> > groomedJetsToken_;
bool useSubjets_;

static const int MAXJETS = 1000;
static const int MAXTRACKS = 5000;
Expand Down Expand Up @@ -325,10 +353,38 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
float jttau2[MAXJETS];
float jttau3[MAXJETS];

float jtHadronFlavor[MAXJETS];
float jtPartonFlavor[MAXJETS];

std::vector<std::vector<float>> jtSubJetPt;
std::vector<std::vector<float>> jtSubJetEta;
std::vector<std::vector<float>> jtSubJetPhi;
std::vector<std::vector<float>> jtSubJetM;
std::vector<std::vector<float>> jtSubJetHadronFlavor;
std::vector<std::vector<float>> jtSubJetPartonFlavor;
std::vector<std::vector<float>> jtSubJetcsvV2;
std::vector<std::vector<float>> jtSubJetNegCsvV2;
std::vector<std::vector<float>> jtSubJetJP;
std::vector<std::vector<int>> jtSubJetVtxType;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxm;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxpt;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxeta;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxphi;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxNtrk;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxdl;
std::vector<std::vector<std::vector<float>>> jtSubJetSvtxdls;

std::vector<std::vector<std::vector<float>>> jtSubJetHadronDR;
std::vector<std::vector<std::vector<float>>> jtSubJetHadronPt;
std::vector<std::vector<std::vector<float>>> jtSubJetHadronEta;
std::vector<std::vector<std::vector<float>>> jtSubJetHadronPhi;
std::vector<std::vector<std::vector<float>>> jtSubJetHadronPdg;
std::vector<std::vector<std::vector<float>>> jtSubJetPartonDR;
std::vector<std::vector<std::vector<float>>> jtSubJetPartonPt;
std::vector<std::vector<std::vector<float>>> jtSubJetPartonEta;
std::vector<std::vector<std::vector<float>>> jtSubJetPartonPhi;
std::vector<std::vector<std::vector<float>>> jtSubJetPartonPdg;


std::vector<std::vector<int>> jtConstituentsId;
std::vector<std::vector<float>> jtConstituentsE;
Expand Down Expand Up @@ -442,16 +498,17 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
float pdiscr_csvV2[MAXJETS];

int nsvtx[MAXJETS];
int svtxntrk[MAXJETS];
float svtxdl[MAXJETS];
float svtxdls[MAXJETS];
float svtxdl2d[MAXJETS];
float svtxdls2d[MAXJETS];
float svtxm[MAXJETS];
float svtxpt[MAXJETS];
std::vector<std::vector<int> >svType;
std::vector<std::vector<int> >svtxntrk;
std::vector<std::vector<float> >svtxdl;
std::vector<std::vector<float> >svtxdls;
std::vector<std::vector<float> >svtxdl2d;
std::vector<std::vector<float> >svtxdls2d;
std::vector<std::vector<float> >svtxm;
std::vector<std::vector<float> >svtxpt;
float svtxmcorr[MAXJETS];
float svtxnormchi2[MAXJETS];
float svJetDeltaR[MAXJETS];
std::vector<std::vector<float> >svJetDeltaR;
float svtxTrkSumChi2[MAXJETS];
int svtxTrkNetCharge[MAXJETS];
int svtxNtrkInCone[MAXJETS];
Expand Down Expand Up @@ -504,6 +561,23 @@ class HiInclusiveJetAnalyzer : public edm::EDAnalyzer {
float discr_jetID_cuts[MAXJETS];
float discr_jetID_bdt[MAXJETS];

int refparton_flavorProcess[MAXJETS];
float refGSP_gpt [MAXJETS];
float refGSP_geta [MAXJETS];
float refGSP_gphi [MAXJETS];
float refGSP_gidx [MAXJETS];
float refGSP_b1pt [MAXJETS];
float refGSP_b1eta [MAXJETS];
float refGSP_b1phi [MAXJETS];
float refGSP_b2pt [MAXJETS];
float refGSP_b2eta [MAXJETS];
float refGSP_b2phi [MAXJETS];
float refGSP_b1Match_jtdR [MAXJETS];
float refGSP_b2Match_jtdR [MAXJETS];
float refGSP_bbdR [MAXJETS];
float refGSP_bbzg [MAXJETS];
int refGSP_SubJtMatched [MAXJETS];

float refpt[MAXJETS];
float refeta[MAXJETS];
float refphi[MAXJETS];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@
akSoftDrop4GenJets +
highPurityTracks +
ak4PFJetSequence +
ak4CaloJetSequence +
akSoftDrop4PFJetSequence +
# ak4CaloJetSequence +
# akSoftDrop4PFJetSequence +
akPu4PFJetSequence +
akCs4PFJetSequence
)
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,16 @@
#akCsSoftDrop4PFJets +
#akCsSoftDrop5PFJets +

akPu3CaloJetSequence +
akPu3PFJetSequence +
akCs3PFJetSequence +
# akPu3CaloJetSequence +
# akPu3PFJetSequence +
# akCs3PFJetSequence +

akPu4CaloJetSequence +
akPu4PFJetSequence +
akCs4PFJetSequence +
# akPu4CaloJetSequence +
akPu4PFJetSequence #+
# akCs4PFJetSequence +

akPu5CaloJetSequence +
akPu5PFJetSequence# +
# akPu5CaloJetSequence +
# akPu5PFJetSequence# +

#to be added later
#akCsSoftDrop4PFJetSequence +
Expand Down
30 changes: 15 additions & 15 deletions HeavyIonsAnalysis/JetAnalysis/python/FullJetSequence_nominalPP.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@
from HeavyIonsAnalysis.JetAnalysis.jets.ak3PFJetSequence_pp_mc_cff import *
from HeavyIonsAnalysis.JetAnalysis.jets.ak4PFJetSequence_pp_mc_cff import *
from HeavyIonsAnalysis.JetAnalysis.jets.ak5PFJetSequence_pp_mc_cff import *
from HeavyIonsAnalysis.JetAnalysis.jets.ak4CaloJetSequence_pp_mc_cff import *
from HeavyIonsAnalysis.JetAnalysis.jets.akSoftDrop4PFJetSequence_pp_mc_cff import *
from HeavyIonsAnalysis.JetAnalysis.jets.akSoftDrop5PFJetSequence_pp_mc_cff import *
#from HeavyIonsAnalysis.JetAnalysis.jets.ak4CaloJetSequence_pp_mc_cff import *
#from HeavyIonsAnalysis.JetAnalysis.jets.akSoftDrop4PFJetSequence_pp_mc_cff import *
#from HeavyIonsAnalysis.JetAnalysis.jets.akSoftDrop5PFJetSequence_pp_mc_cff import *

highPurityTracks = cms.EDFilter("TrackSelector",
src = cms.InputTag("generalTracks"),
Expand All @@ -72,17 +72,17 @@
ak5GenJets +
ak3PFJets +
ak5PFJets +
akSoftDrop4PFJets +
akSoftDrop5PFJets +
akFilter4PFJets +
akFilter5PFJets +
akSoftDrop4GenJets +
akSoftDrop5GenJets +
#akSoftDrop4PFJets +
#akSoftDrop5PFJets +
#akFilter4PFJets +
#akFilter5PFJets +
#akSoftDrop4GenJets +
#akSoftDrop5GenJets +
highPurityTracks +
ak3PFJetSequence +
ak4PFJetSequence +
ak5PFJetSequence +
ak4CaloJetSequence +
akSoftDrop4PFJetSequence +
akSoftDrop5PFJetSequence
#ak3PFJetSequence +
ak4PFJetSequence
#ak5PFJetSequence +
#ak4CaloJetSequence +
#akSoftDrop4PFJetSequence +
#akSoftDrop5PFJetSequence
)
72 changes: 57 additions & 15 deletions HeavyIonsAnalysis/JetAnalysis/python/bTaggers_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@
from RecoBTag.Configuration.RecoBTag_cff import *

class bTaggers:
def __init__(self,jetname,rParam):
def __init__(self,jetname,rParam,ispp,doSubjets):
self.JetTracksAssociatorAtVertex = ak5JetTracksAssociatorAtVertex.clone()
self.JetTracksAssociatorAtVertex.jets = cms.InputTag(jetname+"Jets")
self.JetTracksAssociatorAtVertex.tracks = cms.InputTag("hiGeneralTracks")
if(ispp):
self.JetTracksAssociatorAtVertex.tracks = cms.InputTag("generalTracks")
else:
self.JetTracksAssociatorAtVertex.tracks = cms.InputTag("hiGeneralTracks")
self.ImpactParameterTagInfos = impactParameterTagInfos.clone()
self.ImpactParameterTagInfos.jetTracks = cms.InputTag(jetname+"JetTracksAssociatorAtVertex")
self.ImpactParameterTagInfos.primaryVertex = cms.InputTag("offlinePrimaryVertices")
Expand All @@ -38,18 +41,6 @@ def __init__(self,jetname,rParam):
self.JetBProbabilityBJetTags = jetBProbabilityBJetTags.clone()
self.JetBProbabilityBJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"ImpactParameterTagInfos"))

self.SecondaryVertexTagInfos = secondaryVertexTagInfos.clone()
self.SecondaryVertexTagInfos.trackIPTagInfos = cms.InputTag(jetname+"ImpactParameterTagInfos")
#self.SimpleSecondaryVertexBJetTags = simpleSecondaryVertexBJetTags.clone()
#self.SimpleSecondaryVertexBJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"SecondaryVertexTagInfos"))
self.CombinedSecondaryVertexBJetTags = combinedSecondaryVertexV2BJetTags.clone()
self.CombinedSecondaryVertexBJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"ImpactParameterTagInfos"),
cms.InputTag(jetname+"SecondaryVertexTagInfos"))
self.CombinedSecondaryVertexV2BJetTags = combinedSecondaryVertexV2BJetTags.clone()
self.CombinedSecondaryVertexV2BJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"ImpactParameterTagInfos"),
cms.InputTag(jetname+"SecondaryVertexTagInfos"))


# secondary vertex b-tag
self.SecondaryVertexTagInfos = secondaryVertexTagInfos.clone()
self.SecondaryVertexTagInfos.trackIPTagInfos = cms.InputTag(jetname+"ImpactParameterTagInfos")
Expand Down Expand Up @@ -103,6 +94,51 @@ def __init__(self,jetname,rParam):
self.NegativeSoftPFMuonByPtBJetTags = negativeSoftPFMuonByPtBJetTags.clone()
self.NegativeSoftPFMuonByPtBJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"SoftPFMuonsTagInfos"))

if doSubjets:
self.SubjetImpactParameterTagInfos = impactParameterTagInfos.clone()
self.SubjetImpactParameterTagInfos.jetTracks = cms.InputTag(jetname+"SubjetJetTracksAssociatorAtVertex")
self.SubjetJetProbabilityBJetTags = jetProbabilityBJetTags.clone()
self.SubjetJetProbabilityBJetTags.tagInfos = cms.VInputTag(cms.InputTag(jetname+"SubjetImpactParameterTagInfos"))
self.SubjetSecondaryVertexTagInfos = secondaryVertexTagInfos.clone()
self.SubjetSecondaryVertexTagInfos.trackIPTagInfos = cms.InputTag(jetname+'SubjetImpactParameterTagInfos')
self.SubjetSecondaryVertexTagInfos.fatJets = cms.InputTag('ak4PFJets')
self.SubjetSecondaryVertexTagInfos.groomedFatJets = cms.InputTag(jetname+'Jets')
self.SubjetSecondaryVertexTagInfos.useSVClustering = cms.bool(True)
self.SubjetSecondaryVertexTagInfos.useExternalSV = cms.bool(True)
self.SubjetSecondaryVertexTagInfos.jetAlgorithm = cms.string('AntiKt')
self.SubjetSecondaryVertexTagInfos.useSVMomentum = cms.bool(True)
self.SubjetSecondaryVertexTagInfos.rParam = cms.double(0.4)
self.SubjetSecondaryVertexTagInfos.extSVCollection = cms.InputTag('inclusiveSecondaryVertices')
self.SubjetSecondaryVertexTagInfos.vertexCuts.maxDeltaRToJetAxis = cms.double(0.1)

self.SubjetSecondaryVertexNegativeTagInfos = self.SubjetSecondaryVertexTagInfos.clone()
self.SubjetSecondaryVertexNegativeTagInfos.vertexCuts.distVal2dMin = -2.5
self.SubjetSecondaryVertexNegativeTagInfos.vertexCuts.distVal2dMax = -0.01
self.SubjetSecondaryVertexNegativeTagInfos.vertexCuts.distSig2dMin = -99999.9
self.SubjetSecondaryVertexNegativeTagInfos.vertexCuts.distSig2dMax = -3.0
self.SubjetSecondaryVertexNegativeTagInfos.vertexCuts.maxDeltaRToJetAxis = -0.5

self.SubjetJetTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorExplicit",
jets = cms.InputTag(jetname+'Jets','SubJets')
)
if ispp:
self.SubjetJetTracksAssociatorAtVertex.tracks = cms.InputTag('highPurityTracks')
else:
self.SubjetJetTracksAssociatorAtVertex.tracks = cms.InputTag('highPurityTracks')

self.CombinedSubjetSecondaryVertexV2BJetTags = combinedSecondaryVertexV2BJetTags.clone(
tagInfos = cms.VInputTag(cms.InputTag(jetname+"SubjetImpactParameterTagInfos"),
cms.InputTag(jetname+"SubjetSecondaryVertexTagInfos"))
)
self.CombinedSubjetSecondaryVertexBJetTags = combinedSecondaryVertexV2BJetTags.clone(
tagInfos = cms.VInputTag(cms.InputTag(jetname+"SubjetImpactParameterTagInfos"),
cms.InputTag(jetname+"SubjetSecondaryVertexTagInfos"))
)
self.CombinedSubjetNegativeSecondaryVertexV2BJetTags = negativeCombinedSecondaryVertexV2BJetTags.clone(
tagInfos = cms.VInputTag(cms.InputTag(jetname+"SubjetImpactParameterTagInfos"),
cms.InputTag(jetname+"SubjetSecondaryVertexNegativeTagInfos"))
)

self.JetTracksAssociator = cms.Sequence(self.JetTracksAssociatorAtVertex)
self.JetBtaggingIP = cms.Sequence(self.ImpactParameterTagInfos * (
self.TrackCountingHighEffBJetTags +
Expand Down Expand Up @@ -163,9 +199,15 @@ def __init__(self,jetname,rParam):
rParam = rParam,
bHadrons = cms.InputTag(jetname+"PatJetPartons","bHadrons"),
cHadrons = cms.InputTag(jetname+"PatJetPartons","cHadrons"),
partons = cms.InputTag(jetname+"PatJetPartons","partons")
partons = cms.InputTag(jetname+"PatJetPartons","algorithmicPartons"),
leptons = cms.InputTag(jetname+"PatJetPartons","leptons"),
)

if doSubjets:
self.PatJetFlavourAssociation.jets="ak4PFJets"
self.PatJetFlavourAssociation.groomedJets = cms.InputTag(jetname+'Jets')
self.PatJetFlavourAssociation.subjets = cms.InputTag(jetname+'Jets', 'SubJets')

self.PatJetFlavourId = cms.Sequence(self.PatJetPartons*self.PatJetFlavourAssociation)
#self.match = patJetGenJetMatch.clone(
# src = cms.InputTag(jetname+"Jets"),
Expand Down
Loading

0 comments on commit 18a73eb

Please sign in to comment.