Skip to content

Commit

Permalink
Merge pull request #17292 from cms-tau-pog/CMSSW_8_0_X_tau-pog_miniAO…
Browse files Browse the repository at this point in the history
…D-backport

Backport of access to tauID and electron discrimination from miniAOD
  • Loading branch information
davidlange6 committed Apr 6, 2017
2 parents e66ff35 + f212de7 commit f048a8e
Show file tree
Hide file tree
Showing 33 changed files with 3,076 additions and 250 deletions.
28 changes: 28 additions & 0 deletions DataFormats/PatCandidates/interface/PATTauDiscriminator.h
@@ -0,0 +1,28 @@
#ifndef DataFormats_PatCandidates_PATTauDiscriminator_h
#define DataFormats_PatCandidates_PATTauDiscriminator_h
#include "DataFormats/Common/interface/AssociationVector.h"
#include "DataFormats/Common/interface/RefProd.h"
#include "DataFormats/PatCandidates/interface/Tau.h"

#include <vector>

namespace pat {
typedef edm::AssociationVector<pat::TauRefProd,std::vector<float> > PATTauDiscriminatorBase;

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

typedef pat::PATTauDiscriminator::value_type PATTauDiscriminatorVT;
typedef edm::Ref<pat::PATTauDiscriminator> PATTauDiscriminatorRef;
typedef edm::RefProd<pat::PATTauDiscriminator> PATTauDiscriminatorRefProd;
typedef edm::RefVector<pat::PATTauDiscriminator> PATTauDiscriminatorRefVector;
}

#endif
5 changes: 2 additions & 3 deletions DataFormats/PatCandidates/interface/Tau.h
@@ -1,6 +1,3 @@
//
//

#ifndef DataFormats_PatCandidates_Tau_h
#define DataFormats_PatCandidates_Tau_h

Expand Down Expand Up @@ -346,6 +343,8 @@ namespace pat {
float ecalEnergyLeadChargedHadrCand() const { return pfEssential().ecalEnergyLeadChargedHadrCand_; }
/// return hcal energy from LeadChargedHadrCand
float hcalEnergyLeadChargedHadrCand() const { return pfEssential().hcalEnergyLeadChargedHadrCand_; }
/// return phiAtEcalEntrance
float phiAtEcalEntrance() const { return pfEssential().phiAtEcalEntrance_; }
/// return etaAtEcalEntrance
float etaAtEcalEntrance() const { return pfEssential().etaAtEcalEntrance_; }
/// return etaAtEcalEntrance from LeadChargedCand
Expand Down
1 change: 1 addition & 0 deletions DataFormats/PatCandidates/interface/TauPFEssential.h
Expand Up @@ -53,6 +53,7 @@ struct TauPFEssential {
float ecalEnergy_;
float hcalEnergy_;
float leadingTrackNormChi2_;
float phiAtEcalEntrance_;
float etaAtEcalEntrance_;
float ecalEnergyLeadChargedHadrCand_;
float hcalEnergyLeadChargedHadrCand_;
Expand Down
3 changes: 3 additions & 0 deletions DataFormats/PatCandidates/src/PATTauDiscriminator.cc
@@ -0,0 +1,3 @@
#include "DataFormats/PatCandidates/interface/PATTauDiscriminator.h"

pat::PATTauDiscriminator::PATTauDiscriminator() : PATTauDiscriminatorBase() {};
1 change: 1 addition & 0 deletions DataFormats/PatCandidates/src/TauPFEssential.cc
Expand Up @@ -14,6 +14,7 @@ pat::tau::TauPFEssential::TauPFEssential(const reco::PFTau& tau) :
ecalEnergy_(0.),
hcalEnergy_(0.),
leadingTrackNormChi2_(1.e+3),
phiAtEcalEntrance_(0.),
etaAtEcalEntrance_(0.),
ecalEnergyLeadChargedHadrCand_(0.),
hcalEnergyLeadChargedHadrCand_(0.),
Expand Down
17 changes: 16 additions & 1 deletion DataFormats/PatCandidates/src/classes_def_objects.xml
Expand Up @@ -149,7 +149,8 @@
<version ClassVersion="10" checksum="2692173055"/>
</class>
<class name="std::vector<pat::tau::TauCaloSpecific>" />
<class name="pat::tau::TauPFEssential" ClassVersion="13">
<class name="pat::tau::TauPFEssential" ClassVersion="14">
<version ClassVersion="14" checksum="524735083" />
<version ClassVersion="13" checksum="1052833547" />
<version ClassVersion="12" checksum="3865233356" />
<version ClassVersion="11" checksum="1193752112" />
Expand Down Expand Up @@ -514,6 +515,20 @@
<class name="edm::Wrapper< std::vector<edm::Ptr<pat::Jet> > >" />
<class name="edm::Wrapper< std::vector< std::vector<edm::Ptr<pat::Jet> > > >" />

<class name="pat::PATTauDiscriminatorBase">
<field name="transientVector_" transient="true"/>
</class>
<class name="pat::PATTauDiscriminator" ClassVersion="3">
<version ClassVersion="3" checksum="2916098408"/>
</class>
<class name="pat::PATTauDiscriminatorRef"/>
<class name="pat::PATTauDiscriminatorRefProd"/>
<class name="pat::PATTauDiscriminatorRefVector"/>
<class name="edm::Wrapper<pat::PATTauDiscriminator>"/>

<class name="std::pair<pat::TauRef, float>"/>
<class name="std::vector<std::pair<pat::TauRef, float> >" />

</selection>
<exclusion>
</exclusion>
Expand Down
11 changes: 10 additions & 1 deletion DataFormats/PatCandidates/src/classes_objects.h
Expand Up @@ -19,6 +19,7 @@
#include "DataFormats/PatCandidates/interface/Conversion.h"
#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
#include "DataFormats/PatCandidates/interface/PackedGenParticle.h"
#include "DataFormats/PatCandidates/interface/PATTauDiscriminator.h"

namespace DataFormats_PatCandidates {
struct dictionaryobjects {
Expand Down Expand Up @@ -181,7 +182,15 @@ namespace DataFormats_PatCandidates {
edm::Wrapper< std::vector< edm::Ptr<pat::Jet> > > wvptr_jet;
edm::Wrapper< std::vector< std::vector< edm::Ptr<pat::Jet> > > > wvvptr_jet;


pat::PATTauDiscriminatorBase pattdiscr_b;
pat::PATTauDiscriminator pattdiscr_o;
pat::PATTauDiscriminatorRef pattdiscr_r;
pat::PATTauDiscriminatorRefProd pattdiscr_rp;
pat::PATTauDiscriminatorRefVector pattdiscr_rv;
edm::Wrapper<pat::PATTauDiscriminator> pattdiscr_w;

std::pair<pat::TauRef, float> pattdiscr_p;
std::vector<std::pair<pat::TauRef, float> > pattdiscr_v;
};

}
10 changes: 5 additions & 5 deletions PhysicsTools/PatAlgos/plugins/PATTauProducer.cc
@@ -1,6 +1,3 @@
//
//

#include "PhysicsTools/PatAlgos/plugins/PATTauProducer.h"

#include "FWCore/MessageLogger/interface/MessageLogger.h"
Expand Down Expand Up @@ -362,14 +359,14 @@ void PATTauProducer::produce(edm::Event & iEvent, const edm::EventSetup & iSetup
}

// extraction of variables needed to rerun MVA isolation and anti-electron discriminator on MiniAOD
// (only available for PFTaus)
if( aTau.isPFTau() ) {
edm::Handle<reco::PFTauCollection> pfTaus;
iEvent.getByToken(pfTauToken_, pfTaus);
reco::PFTauRef pfTauRef(pfTaus, idx);
pat::tau::TauPFEssential& aTauPFEssential = aTau.pfEssential_[0];
float ecalEnergy = 0;
float hcalEnergy = 0;
float sumPhiTimesEnergy = 0.;
float sumEtaTimesEnergy = 0.;
float sumEnergy = 0.;
float leadChargedCandPt = -99;
Expand All @@ -378,7 +375,8 @@ void PATTauProducer::produce(edm::Event & iEvent, const edm::EventSetup & iSetup
for(std::vector<reco::PFCandidatePtr>::const_iterator it = signalCands.begin(); it != signalCands.end(); ++it) {
const reco::PFCandidatePtr& icand = *it;
ecalEnergy += icand->ecalEnergy();
hcalEnergy += icand->hcalEnergy();
hcalEnergy += icand->hcalEnergy();
sumPhiTimesEnergy += icand->positionAtECALEntrance().phi()*icand->energy();
sumEtaTimesEnergy += icand->positionAtECALEntrance().eta()*icand->energy();
sumEnergy += icand->energy();
const reco::Track* track = 0;
Expand All @@ -399,9 +397,11 @@ void PATTauProducer::produce(edm::Event & iEvent, const edm::EventSetup & iSetup
aTauPFEssential.ptLeadChargedCand_ = leadChargedCandPt;
aTauPFEssential.etaAtEcalEntranceLeadChargedCand_ = leadChargedCandEtaAtEcalEntrance;
if (sumEnergy != 0.) {
aTauPFEssential.phiAtEcalEntrance_ = sumPhiTimesEnergy/sumEnergy;
aTauPFEssential.etaAtEcalEntrance_ = sumEtaTimesEnergy/sumEnergy;
}
else {
aTauPFEssential.phiAtEcalEntrance_ = -99.;
aTauPFEssential.etaAtEcalEntrance_ = -99.;
}
float leadingTrackNormChi2 = 0;
Expand Down
15 changes: 15 additions & 0 deletions RecoTauTag/Configuration/python/dumpTauVariables_cfi.py
@@ -0,0 +1,15 @@
import FWCore.ParameterSet.Config as cms

dumpTauVariables = cms.EDProducer(
"CandViewNtpProducer",
## can be selectedTausCandidates or slimmedTaus from miniAOD
src = cms.InputTag("slimmedTaus"),
## prefix for variables for the dump
prefix = cms.untracked.string(""),
## allow access to function calls from derived classes
lazyParser = cms.untracked.bool(True),
## add run, event number and lumi section
eventInfo = cms.untracked.bool(True),
## define variables to be dumped
variables = cms.VPSet()
)

0 comments on commit f048a8e

Please sign in to comment.