Skip to content

Commit

Permalink
Cmssw 11 0 x tau pog restructure tau id format rebased (cms-sw#133)
Browse files Browse the repository at this point in the history
* enable alternative output data types in TauDiscriminationProducerBase and create one

* add class dictionaries

* add template argument for input type of TauDiscriminationProducerBase

* change RecoTauDiscriminantCutMultiplexer to write all WPs into one dataformat

* update configs

* adapt PAT Tau Producer to new reco Tau Discriminator format

* fix handling of config inputs and clean up

* fix expected input type

* special treatment of taus that failed prediscriminant during reco production

* pipe through discr raw value even if no category found

* small fix in PAT Tau ID config

* fix tau ID indexing

* reenable usage of preDiscriminantFailValue in TauDiscriminationProducerBase

* update TauTagValidation

* update event content config

* adapt switchMVAtoDB_cfi

* fix typo

* store vector of rawValues in TauDiscriminatorContainer

* use new dataformat in discriminator raw value production

* install new dataformat in anti muon discriminator

* adapt PFRecoTauDiscriminationByIsolation to new data format

* add new data format for PAT tau discriminators

* prepare tau ID producer base for new data format with pat taus

* merge ID cut multiplexer for reco and pat taus into a templated version

* switch from double to float for raw values in new data format

* add IDname to fillDescriptions of cut based IDs

* remove depracated cut based IDs and rearrange inheritance chain in configs accordingly

* add fillDescription defaults to cut based ID definitions

* move photonPtSumOutsideSignalCone options to WP configs

* add IDname parameter to AntiMuonDiscr fillDescr

* some fixes at producer level

* update reco configs

* switch back to usage of category float only if needed

* update PAT step and apply some fixes

* introduce new data format in remaining ID producers operating on MiniAOD

* enable PATTauIDEmbedder to process new data format

* adapt configs of ID producers running on MiniAOD to new data format

* update data format in remaining external modules

* fix antiEleID rebase

* change name of Tau ID Container Base Class

* fix some issues revealed by the matrix tests

* move deepTauID to new data format

* complete adaptation of deepTau config and HLT related things, clean up

* complete previous rebase

* make PAT ID mapping sensitive to input tag instance

* fix typo
  • Loading branch information
swozniewski committed Feb 23, 2020
1 parent 7ab5197 commit 19a2c0c
Show file tree
Hide file tree
Showing 67 changed files with 3,052 additions and 2,596 deletions.
2 changes: 1 addition & 1 deletion CommonTools/ParticleFlow/python/pfTaus_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
pfTausDiscriminationByDecayModeFinding = hpsPFTauDiscriminationByDecayModeFinding.clone()
pfTausDiscriminationByDecayModeFinding.PFTauProducer="pfTausProducer"

pfTausDiscriminationByIsolation= hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr3Hits.clone()
pfTausDiscriminationByIsolation= hpsPFTauBasicDiscriminators.clone()
pfTausDiscriminationByIsolation.PFTauProducer="pfTausProducer"

pfTausrequireDecayMode = cms.PSet(
Expand Down
17 changes: 10 additions & 7 deletions Configuration/Skimming/python/PDWG_TauSkim_PDSingleEle_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,16 @@
TauSkimPFTausSelected = cms.EDFilter("PFTauSelector",
src = cms.InputTag("hpsPFTauProducer"),
discriminators = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
),
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByLooseIsolation"),
selectionCut=cms.double(0.5)
),

cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
)
),
discriminatorContainers = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauBasicDiscriminators"),
rawIndices=cms.vint32(),
selectionCuts=cms.vdouble(),
WPIndices=cms.vint32(0) #ByLooseCombinedIsolationDBSumPtCorr3Hits
)
),
cut = cms.string('et > 15. && abs(eta) < 2.5')
)
Expand Down
17 changes: 10 additions & 7 deletions Configuration/Skimming/python/PDWG_TauSkim_PDSingleMu_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,16 @@
TauSkimPFTausSelected = cms.EDFilter("PFTauSelector",
src = cms.InputTag("hpsPFTauProducer"),
discriminators = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
),
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByLooseIsolation"),
selectionCut=cms.double(0.5)
),

cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
)
),
discriminatorContainers = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauBasicDiscriminators"),
rawIndices=cms.vint32(),
selectionCuts=cms.vdouble(),
WPIndices=cms.vint32(0) #ByLooseCombinedIsolationDBSumPtCorr3Hits
)
),
cut = cms.string('et > 15. && abs(eta) < 2.5')
)
Expand Down
17 changes: 10 additions & 7 deletions Configuration/Skimming/python/PDWG_TauSkim_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
TauSkimPFTausSelected = cms.EDFilter("PFTauSelector",
src = cms.InputTag("hpsPFTauProducer"),
discriminators = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
),
cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByLooseIsolation"),
selectionCut=cms.double(0.5)
),

cms.PSet( discriminator=cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
selectionCut=cms.double(0.5)
)
),
discriminatorContainers = cms.VPSet(
cms.PSet( discriminator=cms.InputTag("hpsPFTauBasicDiscriminators"),
rawIndices=cms.vint32(),
selectionCuts=cms.vdouble(),
WPIndices=cms.vint32(0) #ByLooseCombinedIsolationDBSumPtCorr3Hits
)
),
cut = cms.string('et > 15. && abs(eta) < 2.5')
)
Expand Down
1 change: 1 addition & 0 deletions DPGAnalysis/Skims/python/MuTauSkim_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@


),
discriminatorContainers = cms.VPSet(),
#cut = cms.string('pt > 22. && abs(eta) < 2.3') #53X
#cut = cms.string('et > 15. && abs(eta) < 2.5') #75X
#cut = cms.string('pt > 18. && abs(eta) < 2.3') #HTT 2015 TWIKI
Expand Down
10 changes: 7 additions & 3 deletions DQMOffline/L1Trigger/interface/L1TTauOffline.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "DataFormats/L1Trigger/interface/Tau.h"
#include "DataFormats/TauReco/interface/PFTauFwd.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h"
#include "DataFormats/Common/interface/TriggerResults.h"
#include "DataFormats/HLTReco/interface/TriggerEvent.h"
#include "DataFormats/HLTReco/interface/TriggerObject.h"
Expand Down Expand Up @@ -124,10 +125,13 @@ class L1TTauOffline : public DQMEDAnalyzer {

// variables from config file
edm::EDGetTokenT<reco::PFTauCollection> theTauCollection_;
edm::EDGetTokenT<reco::PFTauDiscriminator> AntiMuInputTag_;
edm::EDGetTokenT<reco::PFTauDiscriminator> AntiEleInputTag_;
edm::EDGetTokenT<reco::PFTauDiscriminatorContainer> AntiMuInputTag_;
int AntiMuWPIndex_;
edm::EDGetTokenT<reco::PFTauDiscriminatorContainer> AntiEleInputTag_;
int AntiEleWPIndex_;
edm::EDGetTokenT<reco::PFTauDiscriminator> DecayModeFindingInputTag_;
edm::EDGetTokenT<reco::PFTauDiscriminator> comb3TInputTag_;
edm::EDGetTokenT<reco::PFTauDiscriminatorContainer> comb3TInputTag_;
int comb3TWPIndex_;
edm::EDGetTokenT<reco::MuonCollection> MuonInputTag_;
edm::EDGetTokenT<reco::PFMETCollection> MetInputTag_;
edm::EDGetTokenT<reco::VertexCollection> VtxInputTag_;
Expand Down
9 changes: 6 additions & 3 deletions DQMOffline/L1Trigger/python/L1TTauOffline_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@
muonInputTag = cms.untracked.InputTag("muons"),
tauInputTag = cms.untracked.InputTag("hpsPFTauProducer"),
metInputTag = cms.untracked.InputTag("pfMet"),
antiMuInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByTightMuonRejection3"),
antiEleInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByMVA6LooseElectronRejection"),
antiMuInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByMuonRejection3"),
antiMuWPIndex = cms.untracked.int32(1), # Tight WP
antiEleInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByMVA6ElectronRejection"),
antiEleWPIndex = cms.untracked.int32(1), # Loose WP, eff. 96%
decayModeFindingInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByDecayModeFindingOldDMs"),
comb3TInputTag = cms.untracked.InputTag("hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr3Hits"),
comb3TInputTag = cms.untracked.InputTag("hpsPFTauBasicDiscriminators"),
comb3TWPIndex = cms.untracked.int32(2), # TightCobinedIsolationDBSumPtCorr3Hits
l1tInputTag = cms.untracked.InputTag("caloStage2Digis:Tau"),
vtxInputTag = cms.untracked.InputTag("offlinePrimaryVertices"),
bsInputTag = cms.untracked.InputTag("offlineBeamSpot"),
Expand Down
19 changes: 11 additions & 8 deletions DQMOffline/L1Trigger/src/L1TTauOffline.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,14 @@ const std::map<std::string, unsigned int> L1TTauOffline::PlotConfigNames = {
//
L1TTauOffline::L1TTauOffline(const edm::ParameterSet& ps)
: theTauCollection_(consumes<reco::PFTauCollection>(ps.getUntrackedParameter<edm::InputTag>("tauInputTag"))),
AntiMuInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("antiMuInputTag"))),
AntiEleInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("antiEleInputTag"))),
AntiMuInputTag_(consumes<reco::PFTauDiscriminatorContainer>(ps.getUntrackedParameter<edm::InputTag>("antiMuInputTag"))),
AntiMuWPIndex_(ps.getUntrackedParameter<int>("antiMuWPIndex")),
AntiEleInputTag_(consumes<reco::PFTauDiscriminatorContainer>(ps.getUntrackedParameter<edm::InputTag>("antiEleInputTag"))),
AntiEleWPIndex_(ps.getUntrackedParameter<int>("antiEleWPIndex")),
DecayModeFindingInputTag_(
consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("decayModeFindingInputTag"))),
comb3TInputTag_(consumes<reco::PFTauDiscriminator>(ps.getUntrackedParameter<edm::InputTag>("comb3TInputTag"))),
comb3TInputTag_(consumes<reco::PFTauDiscriminatorContainer>(ps.getUntrackedParameter<edm::InputTag>("comb3TInputTag"))),
comb3TWPIndex_(ps.getUntrackedParameter<int>("comb3TWPIndex")),
MuonInputTag_(consumes<reco::MuonCollection>(ps.getUntrackedParameter<edm::InputTag>("muonInputTag"))),
MetInputTag_(consumes<reco::PFMETCollection>(ps.getUntrackedParameter<edm::InputTag>("metInputTag"))),
VtxInputTag_(consumes<reco::VertexCollection>(ps.getUntrackedParameter<edm::InputTag>("vtxInputTag"))),
Expand Down Expand Up @@ -623,7 +626,7 @@ void L1TTauOffline::getProbeTaus(const edm::Event& iEvent,
const reco::Vertex& vertex) {
m_ProbeTaus.clear();

edm::Handle<reco::PFTauDiscriminator> antimu;
edm::Handle<reco::PFTauDiscriminatorContainer> antimu;
iEvent.getByToken(AntiMuInputTag_, antimu);
if (!antimu.isValid()) {
edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
Expand All @@ -637,14 +640,14 @@ void L1TTauOffline::getProbeTaus(const edm::Event& iEvent,
return;
}

edm::Handle<reco::PFTauDiscriminator> antiele;
edm::Handle<reco::PFTauDiscriminatorContainer> antiele;
iEvent.getByToken(AntiEleInputTag_, antiele);
if (!antiele.isValid()) {
edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
return;
}

edm::Handle<reco::PFTauDiscriminator> comb3T;
edm::Handle<reco::PFTauDiscriminatorContainer> comb3T;
iEvent.getByToken(comb3TInputTag_, comb3T);
if (!comb3T.isValid()) {
edm::LogWarning("L1TTauOffline") << "invalid collection: reco::PFTauDiscriminator " << std::endl;
Expand All @@ -660,8 +663,8 @@ void L1TTauOffline::getProbeTaus(const edm::Event& iEvent,
TLorentzVector mytau;
mytau.SetPtEtaPhiE(tauIt->pt(), tauIt->eta(), tauIt->phi(), tauIt->energy());

if (fabs(tauIt->charge()) == 1 && fabs(tauIt->eta()) < 2.1 && tauIt->pt() > 20 && (*antimu)[tauCandidate] > 0.5 &&
(*antiele)[tauCandidate] > 0.5 && (*dmf)[tauCandidate] > 0.5 && (*comb3T)[tauCandidate] > 0.5) {
if (fabs(tauIt->charge()) == 1 && fabs(tauIt->eta()) < 2.1 && tauIt->pt() > 20 && (*antimu)[tauCandidate].workingPoints[AntiMuWPIndex_] &&
(*antiele)[tauCandidate].workingPoints[AntiEleWPIndex_] && (*dmf)[tauCandidate] > 0.5 && (*comb3T)[tauCandidate].workingPoints[comb3TWPIndex_]) {
if (mymu.DeltaR(mytau) > 0.5 && (mymu + mytau).M() > 40 && (mymu + mytau).M() < 80 &&
m_TightMuons[0]->charge() * tauIt->charge() < 0) {
m_ProbeTaus.push_back(&(*tauIt));
Expand Down
3 changes: 3 additions & 0 deletions DQMOffline/Trigger/interface/HLTTauRefProducer.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
// TAU includes
#include "DataFormats/TauReco/interface/PFTau.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h"

// ELECTRON includes
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
Expand Down Expand Up @@ -58,6 +59,8 @@ class HLTTauRefProducer : public edm::global::EDProducer<> {

edm::EDGetTokenT<reco::PFTauCollection> PFTaus_;
std::vector<edm::EDGetTokenT<reco::PFTauDiscriminator>> PFTauDis_;
std::vector<edm::EDGetTokenT<reco::PFTauDiscriminatorContainer>> PFTauDisCont_;
std::vector<int> PFTauDisContIdx_;
bool doPFTaus_;
double ptMinPFTau_, etaMinPFTau_, etaMaxPFTau_, phiMinPFTau_, phiMaxPFTau_;

Expand Down
20 changes: 20 additions & 0 deletions DQMOffline/Trigger/plugins/HLTTauRefProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// TAU includes
#include "DataFormats/TauReco/interface/PFTau.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h"
// ELECTRON includes
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
Expand Down Expand Up @@ -31,9 +32,14 @@ HLTTauRefProducer::HLTTauRefProducer(const edm::ParameterSet& iConfig) {
auto const& pfTau = iConfig.getUntrackedParameter<edm::ParameterSet>("PFTaus");
PFTaus_ = consumes<reco::PFTauCollection>(pfTau.getUntrackedParameter<InputTag>("PFTauProducer"));
auto discs = pfTau.getUntrackedParameter<vector<InputTag>>("PFTauDiscriminators");
auto discConts = pfTau.getUntrackedParameter<vector<InputTag>>("PFTauDiscriminatorContainers");
PFTauDisContIdx_ = pfTau.getUntrackedParameter<vector<int>>("PFTauDiscriminatorContainerIndices");
for (edm::InputTag& tag : discs) {
PFTauDis_.push_back(consumes<reco::PFTauDiscriminator>(tag));
}
for (edm::InputTag& tag : discConts){
PFTauDisCont_.push_back(consumes<reco::PFTauDiscriminatorContainer>(tag));
}
doPFTaus_ = pfTau.getUntrackedParameter<bool>("doPFTaus", false);
ptMinPFTau_ = pfTau.getUntrackedParameter<double>("ptMin", 15.);
etaMinPFTau_ = pfTau.getUntrackedParameter<double>("etaMin", -2.5);
Expand Down Expand Up @@ -149,6 +155,20 @@ void HLTTauRefProducer::doPFTaus(edm::Event& iEvent) const {
break;
}
}
int idx = 0;
for (edm::EDGetTokenT<reco::PFTauDiscriminatorContainer> const& token : PFTauDisCont_) {
edm::Handle<reco::PFTauDiscriminatorContainer> pftaudis;
if (iEvent.getByToken(token, pftaudis)) {
if ((*pftaudis)[thePFTau].workingPoints.empty() || !(*pftaudis)[thePFTau].workingPoints.at(PFTauDisContIdx_[idx])) { //WP vector not filled if prediscriminor in RecoTauDiscriminator failed.
passAll = false;
break;
}
} else {
passAll = false;
break;
}
idx++;
}
if (passAll) {
product_PFTaus->emplace_back(pftau.px(), pftau.py(), pftau.pz(), pftau.energy());
}
Expand Down
15 changes: 11 additions & 4 deletions DQMOffline/Trigger/python/HLTTauDQMOffline_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,17 @@

PFTaus = cms.untracked.PSet(
PFTauDiscriminators = cms.untracked.VInputTag(
cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding"),
cms.InputTag("hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr3Hits"),
cms.InputTag("hpsPFTauDiscriminationByLooseMuonRejection3"),
cms.InputTag("hpsPFTauDiscriminationByMVA6TightElectronRejection")
cms.InputTag("hpsPFTauDiscriminationByDecayModeFinding")
),
PFTauDiscriminatorContainers = cms.untracked.VInputTag(
cms.InputTag("hpsPFTauBasicDiscriminators"),
cms.InputTag("hpsPFTauDiscriminationByMuonRejection3"),
cms.InputTag("hpsPFTauDiscriminationByMVA6ElectronRejection")
),
PFTauDiscriminatorContainerIndices = cms.untracked.vint32(
0, # ByLooseCombinedIsolationDBSumPtCorr3Hits
0, # Loose WP
3 # Tight WP
),
doPFTaus = cms.untracked.bool(True),
ptMin = cms.untracked.double(15.0),
Expand Down
37 changes: 37 additions & 0 deletions DataFormats/PatCandidates/interface/PATTauDiscriminatorContainer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#ifndef DataFormats_PatCandidates_PATTauDiscriminatorContainer_h
#define DataFormats_PatCandidates_PATTauDiscriminatorContainer_h
#include "DataFormats/Common/interface/AssociationVector.h"
#include "DataFormats/Common/interface/RefProd.h"
#include "DataFormats/PatCandidates/interface/Tau.h"

#include <vector>

namespace pat {
struct PATSingleTauDiscriminatorContainer {
std::vector<float> rawValues;
std::vector<bool> workingPoints;
operator float() const { return rawValues.at(0); }

PATSingleTauDiscriminatorContainer(){}
PATSingleTauDiscriminatorContainer(float rawInit){ rawValues.push_back(rawInit); }
};

typedef edm::AssociationVector<pat::TauRefProd,std::vector<PATSingleTauDiscriminatorContainer> > PATTauDiscriminatorContainerBase;

class PATTauDiscriminatorContainer : public PATTauDiscriminatorContainerBase {
public:
/// empty constructor
PATTauDiscriminatorContainer(); // : PATTauDiscriminatorContainerBase() {}
/// constructor from reference to pat::Tau
PATTauDiscriminatorContainer(const pat::TauRefProd & ref) : PATTauDiscriminatorContainerBase(ref) {}
/// constructor from base object
PATTauDiscriminatorContainer(const PATTauDiscriminatorContainerBase &v) : PATTauDiscriminatorContainerBase(v) {}
};

typedef pat::PATTauDiscriminatorContainer::value_type PATTauDiscriminatorContainerVT;
typedef edm::Ref<pat::PATTauDiscriminatorContainer> PATTauDiscriminatorContainerRef;
typedef edm::RefProd<pat::PATTauDiscriminatorContainer> PATTauDiscriminatorContainerRefProd;
typedef edm::RefVector<pat::PATTauDiscriminatorContainer> PATTauDiscriminatorContainerRefVector;
}

#endif
3 changes: 3 additions & 0 deletions DataFormats/PatCandidates/src/PATTauDiscriminatorContainer.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "DataFormats/PatCandidates/interface/PATTauDiscriminatorContainer.h"

pat::PATTauDiscriminatorContainer::PATTauDiscriminatorContainer() : PATTauDiscriminatorContainerBase() {};
14 changes: 14 additions & 0 deletions DataFormats/PatCandidates/src/classes_def_objects.xml
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,20 @@
<class name="pat::PATTauDiscriminatorRefVector"/>
<class name="edm::Wrapper<pat::PATTauDiscriminator>"/>

<class name="pat::PATTauDiscriminatorContainerBase">
<field name="transientVector_" transient="true"/>
</class>
<class name="pat::PATSingleTauDiscriminatorContainer"/>
<class name="std::vector<pat::PATSingleTauDiscriminatorContainer>"/>
<class name="edm::Wrapper<std::vector<pat::PATSingleTauDiscriminatorContainer> >"/>
<class name="std::pair<pat::TauRef, pat::PATSingleTauDiscriminatorContainer>"/>
<class name="std::vector<std::pair<pat::TauRef, pat::PATSingleTauDiscriminatorContainer> >" />
<class name="pat::PATTauDiscriminatorContainer"/>
<class name="pat::PATTauDiscriminatorContainerRef"/>
<class name="pat::PATTauDiscriminatorContainerRefProd"/>
<class name="pat::PATTauDiscriminatorContainerRefVector"/>
<class name="edm::Wrapper<pat::PATTauDiscriminatorContainer>"/>

<class name="std::pair<pat::TauRef, float>"/>
<class name="std::vector<std::pair<pat::TauRef, float> >" />
<class name="edm::RefProd<std::vector<pat::Tau> >"/>
Expand Down
1 change: 1 addition & 0 deletions DataFormats/PatCandidates/src/classes_objects.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@
#include "DataFormats/PatCandidates/interface/PFIsolation.h"
#include "DataFormats/PatCandidates/interface/PackedGenParticle.h"
#include "DataFormats/PatCandidates/interface/PATTauDiscriminator.h"
#include "DataFormats/PatCandidates/interface/PATTauDiscriminatorContainer.h"
41 changes: 41 additions & 0 deletions DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#ifndef DataFormats_TauReco_PFTauDiscriminatorContainer_h
#define DataFormats_TauReco_PFTauDiscriminatorContainer_h
#include "DataFormats/Common/interface/AssociationVector.h"
#include "DataFormats/Common/interface/RefProd.h"
#include "DataFormats/TauReco/interface/PFTau.h"

#include <vector>

namespace reco {
struct PFSingleTauDiscriminatorContainer {
std::vector<float> rawValues;
std::vector<bool> workingPoints;
operator float() const { return rawValues.at(0); }

PFSingleTauDiscriminatorContainer(){}
PFSingleTauDiscriminatorContainer(float rawInit){ rawValues.push_back(rawInit); }
};

typedef edm::AssociationVector<PFTauRefProd,std::vector<PFSingleTauDiscriminatorContainer> > PFTauDiscriminatorContainerBase;

class PFTauDiscriminatorContainer : public PFTauDiscriminatorContainerBase {
public:
PFTauDiscriminatorContainer() :
PFTauDiscriminatorContainerBase()
{ }

PFTauDiscriminatorContainer(const reco::PFTauRefProd & ref) :
PFTauDiscriminatorContainerBase(ref)
{ }

PFTauDiscriminatorContainer(const PFTauDiscriminatorContainerBase &v) :
PFTauDiscriminatorContainerBase(v)
{ }
};

typedef PFTauDiscriminatorContainer::value_type PFTauDiscriminatorContainerVT;
typedef edm::Ref<PFTauDiscriminatorContainer> PFTauDiscriminatorContainerRef;
typedef edm::RefProd<PFTauDiscriminatorContainer> PFTauDiscriminatorContainerRefProd;
typedef edm::RefVector<PFTauDiscriminatorContainer> PFTauDiscriminatorContainerRefVector;
}
#endif
2 changes: 2 additions & 0 deletions DataFormats/TauReco/src/classes_1.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

#include "DataFormats/Common/interface/Wrapper.h"
#include "DataFormats/Common/interface/AssociationVector.h"
#include "DataFormats/TauReco/interface/BaseTauTagInfo.h"
Expand All @@ -9,6 +10,7 @@
#include "DataFormats/TauReco/interface/RecoTauPiZeroFwd.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorByIsolation.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h"
#include "DataFormats/Common/interface/AssociationMap.h"
#include "DataFormats/Common/interface/Association.h"
#include "DataFormats/Common/interface/Ptr.h"
Expand Down
1 change: 1 addition & 0 deletions DataFormats/TauReco/src/classes_2.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "DataFormats/TauReco/interface/RecoTauPiZeroFwd.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorByIsolation.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
#include "DataFormats/TauReco/interface/PFTauDiscriminatorContainer.h"
#include "DataFormats/Common/interface/AssociationMap.h"
#include "DataFormats/Common/interface/Association.h"
#include "DataFormats/Common/interface/Ptr.h"
Expand Down
Loading

0 comments on commit 19a2c0c

Please sign in to comment.