Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion DataFormats/BTauReco/interface/ChargedCandidateFeatures.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ namespace btagbtvdeep {
float btagPf_trackSip3dSig;
float btagPf_trackSip2dVal;
float btagPf_trackSip2dSig;

float btagPf_trackJetDistVal;

float drsubjet1;
Expand All @@ -39,6 +38,15 @@ namespace btagbtvdeep {
float drminsv;
float distminsv;

float charge;
float btagPf_trackDecayLen;
float HadFrac;
float CaloFrac;
float pdgID;
float lostInnerHits;
float numberOfPixelHits;
float numberOfStripHits;

float pt;
float px;
float py;
Expand Down
34 changes: 34 additions & 0 deletions DataFormats/BTauReco/interface/LostTracksFeatures.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#ifndef DataFormats_BTauReco_LostTracksFeatures_h
#define DataFormats_BTauReco_LostTracksFeatures_h

namespace btagbtvdeep {

class LostTracksFeatures {
public:
float btagPf_trackEtaRel;
float btagPf_trackPtRel;
float btagPf_trackPPar;
float btagPf_trackDeltaR;
float btagPf_trackPParRatio;
float btagPf_trackSip2dVal;
float btagPf_trackSip2dSig;
float btagPf_trackSip3dVal;
float btagPf_trackSip3dSig;
float btagPf_trackJetDistVal;
float drminsv;
float charge;
float puppiw;
float chi2;
float quality;
float lostInnerHits;
float numberOfPixelHits;
float numberOfStripHits;
float pt;
float eta;
float phi;
float e;
};

} // namespace btagbtvdeep

#endif //DataFormats_BTauReco_LostTracksFeatures_h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#ifndef DataFormats_BTauReco_UnifiedParticleTransformerAK4Features_h
#define DataFormats_BTauReco_UnifiedParticleTransformerAK4Features_h

#include "DataFormats/BTauReco/interface/SecondaryVertexFeatures.h"
#include "DataFormats/BTauReco/interface/NeutralCandidateFeatures.h"
#include "DataFormats/BTauReco/interface/ChargedCandidateFeatures.h"
#include "DataFormats/BTauReco/interface/LostTracksFeatures.h"

#include <vector>

namespace btagbtvdeep {

class UnifiedParticleTransformerAK4Features {
public:
bool is_filled = true;
std::vector<SecondaryVertexFeatures> sv_features;

std::vector<NeutralCandidateFeatures> n_pf_features;
std::vector<ChargedCandidateFeatures> c_pf_features;
std::vector<LostTracksFeatures> lt_features;
};

} // namespace btagbtvdeep

#endif //DataFormats_BTauReco_UnifiedParticleTransformerAK4Features_h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef DataFormats_BTauReco_UnifiedParticleTransformerAK4TagInfo_h
#define DataFormats_BTauReco_UnifiedParticleTransformerAK4TagInfo_h

#include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4Features.h"
#include "DataFormats/BTauReco/interface/FeaturesTagInfo.h"

namespace reco {

typedef FeaturesTagInfo<btagbtvdeep::UnifiedParticleTransformerAK4Features> UnifiedParticleTransformerAK4TagInfo;

DECLARE_EDM_REFS(UnifiedParticleTransformerAK4TagInfo)

} // namespace reco

#endif // DataFormats_BTauReco_UnifiedParticleTransformerAK4TagInfo_h
2 changes: 2 additions & 0 deletions DataFormats/BTauReco/src/classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
#include "DataFormats/BTauReco/interface/DeepDoubleXTagInfo.h"
#include "DataFormats/BTauReco/interface/ParticleTransformerAK4Features.h"
#include "DataFormats/BTauReco/interface/ParticleTransformerAK4TagInfo.h"
#include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4Features.h"
#include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4TagInfo.h"
#include "DataFormats/BTauReco/interface/DeepBoostedJetTagInfo.h"
#include "DataFormats/BTauReco/interface/PixelClusterTagInfo.h"

Expand Down
16 changes: 15 additions & 1 deletion DataFormats/BTauReco/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,8 @@
<class name="edm::reftobase::RefHolder<reco::DeepFlavourTagInfoRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::ParticleTransformerAK4TagInfoRef>" />
<class name="edm::reftobase::RefHolder<reco::ParticleTransformerAK4TagInfoRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::UnifiedParticleTransformerAK4TagInfoRef>" />
<class name="edm::reftobase::RefHolder<reco::UnifiedParticleTransformerAK4TagInfoRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::CombinedTauTagInfoRef>" />
<class name="edm::reftobase::RefHolder<reco::CombinedTauTagInfoRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::IsolatedTauTagInfoRef>" />
Expand Down Expand Up @@ -366,6 +368,8 @@
<class name="edm::reftobase::RefHolder<reco::DeepFlavourTagInfoFwdRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::ParticleTransformerAK4TagInfoFwdRef>" />
<class name="edm::reftobase::RefHolder<reco::ParticleTransformerAK4TagInfoFwdRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::UnifiedParticleTransformerAK4TagInfoFwdRef>" />
<class name="edm::reftobase::RefHolder<reco::UnifiedParticleTransformerAK4TagInfoFwdRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::CombinedTauTagInfoFwdRef>" />
<class name="edm::reftobase::RefHolder<reco::CombinedTauTagInfoFwdRef>" />
<class name="edm::reftobase::Holder<reco::BaseTagInfo, reco::IsolatedTauTagInfoFwdRef>" />
Expand Down Expand Up @@ -427,7 +431,8 @@
<version ClassVersion="4" checksum="3657612864"/>
<version ClassVersion="3" checksum="938442516"/>
</class>
<class name="btagbtvdeep::ChargedCandidateFeatures" ClassVersion="6">
<class name="btagbtvdeep::ChargedCandidateFeatures" ClassVersion="7">
<version ClassVersion="7" checksum="2760889180"/>
<version ClassVersion="6" checksum="3294985591"/>
<version ClassVersion="5" checksum="3385708923"/>
<version ClassVersion="4" checksum="2173116472"/>
Expand Down Expand Up @@ -467,6 +472,14 @@
<class name="reco::ParticleTransformerAK4TagInfoRefProd"/>
<class name="reco::ParticleTransformerAK4TagInfoRefVector"/>
<class name="edm::Wrapper<reco::ParticleTransformerAK4TagInfoCollection>"/>

<class name="reco::UnifiedParticleTransformerAK4TagInfo"/>
<class name="reco::UnifiedParticleTransformerAK4TagInfoCollection"/>
<class name="reco::UnifiedParticleTransformerAK4TagInfoRef"/>
<class name="reco::UnifiedParticleTransformerAK4TagInfoFwdRef"/>
<class name="reco::UnifiedParticleTransformerAK4TagInfoRefProd"/>
<class name="reco::UnifiedParticleTransformerAK4TagInfoRefVector"/>
<class name="edm::Wrapper<reco::UnifiedParticleTransformerAK4TagInfoCollection>"/>

<class name="reco::DeepDoubleXTagInfo"/>
<class name="reco::DeepDoubleXTagInfoCollection"/>
Expand All @@ -477,6 +490,7 @@
<class name="edm::Wrapper<reco::DeepDoubleXTagInfoCollection>"/>

<class name="btagbtvdeep::DeepBoostedJetFeatures"/>
<class name="btagbtvdeep::LostTracksFeatures"/>
<class name="reco::DeepBoostedJetTagInfo"/>
<class name="reco::DeepBoostedJetTagInfoCollection"/>
<class name="reco::DeepBoostedJetTagInfoRef"/>
Expand Down
12 changes: 12 additions & 0 deletions PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
, 'pfNegativeDeepFlavourTagInfos'
# ParticleTransformerAK4 tag infos
, 'pfParticleTransformerAK4TagInfos'
# UnifiedParticleTransformerAK4 tag infos
, 'pfUnifiedParticleTransformerAK4TagInfos'
# DeepDoubleB/C tag infos
, 'pfDeepDoubleXTagInfos'
# DeepBoostedJet tag infos
Expand Down Expand Up @@ -338,3 +340,13 @@
for disc in _pfParticleTransformerAK4JetTagsMetaDiscrs:
supportedMetaDiscr[disc] = _pfParticleTransformerAK4JetTagsProbs
# -----------------------------------

# -----------------------------------
# setup UnifiedParticleTransformer AK4
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsProbs, _pfUnifiedParticleTransformerAK4JetTagsMetaDiscrs
# update supportedBtagDiscr
for disc in _pfUnifiedParticleTransformerAK4JetTagsProbs + _pfUnifiedParticleTransformerAK4JetTagsMetaDiscrs:
supportedBtagDiscr[disc] = [["pfUnifiedParticleTransformerAK4TagInfos"]]
# update supportedMetaDiscr
for disc in _pfUnifiedParticleTransformerAK4JetTagsMetaDiscrs:
supportedMetaDiscr[disc] = _pfUnifiedParticleTransformerAK4JetTagsProbs
36 changes: 34 additions & 2 deletions PhysicsTools/PatAlgos/python/tools/jetTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -681,11 +681,11 @@ def setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSou
flip = flip),
process, task)

if 'ParticleTransformerAK4TagInfos' in btagInfo:
if ('ParticleTransformerAK4TagInfos' in btagInfo) and ('UnifiedParticleTransformerAK4TagInfos' not in btagInfo): #We also have to veto UParT is we select ParT
svUsed = svSource
if btagInfo == 'pfNegativeParticleTransformerAK4TagInfos':
svUsed = cms.InputTag(btagPrefix+'inclusiveCandidateNegativeSecondaryVertices'+labelName+postfix)
flip = True
flip = True
else:
flip = False
# use right input tags when running with RECO PF candidates, which actually
Expand All @@ -711,6 +711,38 @@ def setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSou
is_weighted_jet = is_weighted_jet,
flip = flip),
process, task)

if 'UnifiedParticleTransformerAK4TagInfos' in btagInfo:
svUsed = svSource
if btagInfo == 'pfNegativeUnifiedParticleTransformerAK4TagInfos':
svUsed = cms.InputTag(btagPrefix+'inclusiveCandidateNegativeSecondaryVertices'+labelName+postfix)
flip = True
else:
flip = False
# use right input tags when running with RECO PF candidates, which actually
# depends of whether jets use "particleFlow"
if pfCandidates.value() == 'packedPFCandidates':
puppi_value_map = setupPuppiForPackedPF(process)[0]
vertex_associator = cms.InputTag("")
else:
puppi_value_map = cms.InputTag("puppi")
vertex_associator = cms.InputTag("primaryVertexAssociation","original")

# If this jet is a puppi jet, then set is_weighted_jet to true.
is_weighted_jet = False
if ('puppi' in jetSource.value().lower()):
is_weighted_jet = True
addToProcessAndTask(btagPrefix+btagInfo+labelName+postfix,
btag.pfUnifiedParticleTransformerAK4TagInfos.clone(
jets = jetSource,
vertices=pvSource,
secondary_vertices=svUsed,
puppi_value_map = puppi_value_map,
vertex_associator = vertex_associator,
is_weighted_jet = is_weighted_jet,
flip = flip),
process, task)

if btagInfo == 'pfDeepDoubleXTagInfos':
# can only run on PAT jets, so the updater needs to be used
if 'updated' not in jetSource.value().lower():
Expand Down
1 change: 1 addition & 0 deletions RecoBTag/Configuration/python/RecoBTag_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from RecoBTag.ONNXRuntime.pfParticleNet_cff import *
from RecoBTag.ONNXRuntime.pfParticleNetAK4_cff import *
from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import *
from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import *
from RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff import *
from RecoBTag.PixelCluster.pixelClusterTagInfos_cfi import *

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ namespace btagbtvdeep {
c_pf_features.btagPf_trackSip2dVal = catch_infs_and_bound(trackSip2dVal, 0, -1, 70);
c_pf_features.btagPf_trackSip2dSig = catch_infs_and_bound(trackSip2dSig, 0, -1, 4e4);
c_pf_features.btagPf_trackJetDistVal = catch_infs_and_bound(track_info.getTrackJetDistVal(), 0, -20, 1);
c_pf_features.btagPf_trackDecayLen = track_info.getTrackJetDecayLen();

c_pf_features.drminsv = catch_infs_and_bound(drminpfcandsv, 0, -1. * jetR, 0, -1. * jetR);
c_pf_features.distminsv = distminpfcandsv;
Expand Down
81 changes: 81 additions & 0 deletions RecoBTag/FeatureTools/interface/LostTracksConverter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#ifndef RecoBTag_FeatureTools_LostTracksConverter_h
#define RecoBTag_FeatureTools_LostTracksConverter_h

#include "RecoBTag/FeatureTools/interface/deep_helpers.h"
#include "RecoBTag/FeatureTools/interface/TrackInfoBuilder.h"
#include "DataFormats/BTauReco/interface/LostTracksFeatures.h"

#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "DataFormats/PatCandidates/interface/Jet.h"

namespace btagbtvdeep {

template <typename CandidateType>
void commonCandidateToFeatures(const CandidateType* c_pf,
const reco::Jet& jet,
const TrackInfoBuilder& track_info,
const bool& isWeightedJet,
const float& drminpfcandsv,
const float& jetR,
const float& puppiw,
LostTracksFeatures& lt_features,
const bool flip = false,
const float& distminpfcandsv = 0) {
float trackSip2dVal = track_info.getTrackSip2dVal();
float trackSip2dSig = track_info.getTrackSip2dSig();
float trackSip3dVal = track_info.getTrackSip3dVal();
float trackSip3dSig = track_info.getTrackSip3dSig();
if (flip == true) {
trackSip2dVal = -trackSip2dVal;
trackSip2dSig = -trackSip2dSig;
trackSip3dSig = -trackSip3dSig;
trackSip3dVal = -trackSip3dVal;
}

lt_features.btagPf_trackEtaRel = catch_infs_and_bound(track_info.getTrackEtaRel(), 0, -5, 15);
lt_features.btagPf_trackPtRel = catch_infs_and_bound(track_info.getTrackPtRel(), 0, -1, 4);
lt_features.btagPf_trackPPar = catch_infs_and_bound(track_info.getTrackPPar(), 0, -1e5, 1e5);
lt_features.btagPf_trackDeltaR = catch_infs_and_bound(track_info.getTrackDeltaR(), 0, -5, 5);
lt_features.btagPf_trackPParRatio = catch_infs_and_bound(track_info.getTrackPParRatio(), 0, -10, 100);
lt_features.btagPf_trackSip3dVal = catch_infs_and_bound(trackSip3dVal, 0, -1, 1e5);
lt_features.btagPf_trackSip3dSig = catch_infs_and_bound(trackSip3dSig, 0, -1, 4e4);
lt_features.btagPf_trackSip2dVal = catch_infs_and_bound(trackSip2dVal, 0, -1, 70);
lt_features.btagPf_trackSip2dSig = catch_infs_and_bound(trackSip2dSig, 0, -1, 4e4);
lt_features.btagPf_trackJetDistVal = catch_infs_and_bound(track_info.getTrackJetDistVal(), 0, -20, 1);

lt_features.drminsv = catch_infs_and_bound(drminpfcandsv, 0, -1. * jetR, 0, -1. * jetR);

lt_features.pt = c_pf->pt();
lt_features.eta = c_pf->eta();
lt_features.phi = c_pf->phi();
lt_features.e = c_pf->energy();
}

void packedCandidateToFeatures(const pat::PackedCandidate* c_pf,
const pat::Jet& jet,
const TrackInfoBuilder& track_info,
const bool isWeightedJet,
const float drminpfcandsv,
const float jetR,
const float puppiw,
LostTracksFeatures& lt_features,
const bool flip = false,
const float distminpfcandsv = 0);

void recoCandidateToFeatures(const reco::PFCandidate* c_pf,
const reco::Jet& jet,
const TrackInfoBuilder& track_info,
const bool isWeightedJet,
const float drminpfcandsv,
const float jetR,
const float puppiw,
const int pv_ass_quality,
const reco::VertexRef& pv,
LostTracksFeatures& lt_features,
const bool flip = false,
const float distminpfcandsv = 0);

} // namespace btagbtvdeep

#endif //RecoBTag_FeatureTools_LostTracksConverter_h
2 changes: 2 additions & 0 deletions RecoBTag/FeatureTools/interface/TrackInfoBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ namespace btagbtvdeep {
const float getTrackSip2dVal() const { return trackSip2dVal_; }
const float getTrackSip3dSig() const { return trackSip3dSig_; }
const float getTrackSip3dVal() const { return trackSip3dVal_; }
const float getTrackJetDecayLen() const { return trackJetDecayLen_; }

private:
edm::ESHandle<TransientTrackBuilder> builder_;
Expand All @@ -50,6 +51,7 @@ namespace btagbtvdeep {

float trackJetDistVal_;
float trackJetDistSig_;
float trackJetDecayLen_;
};

} // namespace btagbtvdeep
Expand Down
Loading