Skip to content

Commit

Permalink
Merge pull request #77 from steggema/CMSSW_10_1_X_TauRecoMiniAODReview
Browse files Browse the repository at this point in the history
Cmssw 10 1 x tau reco mini aod review
  • Loading branch information
steggema authored May 3, 2018
2 parents 01d1881 + 565657a commit 4285c06
Show file tree
Hide file tree
Showing 32 changed files with 188 additions and 255 deletions.
6 changes: 5 additions & 1 deletion DataFormats/TauReco/interface/PFTau.h
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,11 @@ class PFTau : public BaseTau {
std::vector<reco::CandidatePtr> selectedIsolationNeutrHadrCands_;
std::vector<reco::CandidatePtr> selectedIsolationGammaCands_;

// Caches for PFCandidate-based accessors
// Transient caches for PFCandidate-based accessors
edm::AtomicPtrCache<reco::PFCandidatePtr> leadPFChargedHadrCand_;
edm::AtomicPtrCache<reco::PFCandidatePtr> leadPFNeutralCand_;
edm::AtomicPtrCache<reco::PFCandidatePtr> leadPFCand_;

edm::AtomicPtrCache<std::vector<reco::PFCandidatePtr> > selectedTransientSignalPFCands_;
edm::AtomicPtrCache<std::vector<reco::PFCandidatePtr> > selectedTransientSignalPFChargedHadrCands_;
edm::AtomicPtrCache<std::vector<reco::PFCandidatePtr> > selectedTransientSignalPFNeutrHadrCands_;
Expand Down
32 changes: 17 additions & 15 deletions DataFormats/TauReco/src/PFTau.cc
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,14 @@ namespace {
oCache.set( std::make_unique<T>(std::move(iFrom)));
}

reco::PFCandidatePtr convertToPFPtr(const reco::CandidatePtr& ptr) {
const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*ptr);
if (pf_cand != nullptr) {
return edm::Ptr<reco::PFCandidate>(ptr);
} else throw cms::Exception("Type Mismatch") << "This PFTau was not made from PFCandidates, but it is being tried to access a PFCandidate.\n";
return reco::PFCandidatePtr();
std::unique_ptr<reco::PFCandidatePtr> convertToPFPtr(const reco::CandidatePtr& ptr) {
if (ptr.isNonnull()) {
const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*ptr);
if (pf_cand != nullptr) {
return std::unique_ptr<reco::PFCandidatePtr>(new reco::PFCandidatePtr(ptr));
} else throw cms::Exception("Type Mismatch") << "This PFTau was not made from PFCandidates, but it is being tried to access a PFCandidate.\n";
}
return std::unique_ptr<reco::PFCandidatePtr>(new reco::PFCandidatePtr());
}

std::unique_ptr<std::vector<reco::PFCandidatePtr> > convertToPFPtrs(const std::vector<reco::CandidatePtr>& cands) {
Expand All @@ -150,21 +152,21 @@ namespace {
}

const PFCandidatePtr PFTau::leadPFChargedHadrCand() const {
if (leadChargedHadrCand_.isNonnull())
return convertToPFPtr(leadChargedHadrCand_);
return PFCandidatePtr();
if (!leadPFChargedHadrCand_.isSet())
leadPFChargedHadrCand_.set(std::move(convertToPFPtr(leadChargedHadrCand_)));
return *leadPFChargedHadrCand_;
}

const PFCandidatePtr PFTau::leadPFNeutralCand() const {
if (leadNeutralCand_.isNonnull())
return convertToPFPtr(leadNeutralCand_);
return PFCandidatePtr();
if (!leadPFNeutralCand_.isSet())
leadPFNeutralCand_.set(std::move(convertToPFPtr(leadNeutralCand_)));
return *leadPFNeutralCand_;
}

const PFCandidatePtr PFTau::leadPFCand() const {
if (leadCand_.isNonnull())
return convertToPFPtr(leadCand_);
return PFCandidatePtr();
if (!leadPFCand_.isSet())
leadPFCand_.set(std::move(convertToPFPtr(leadCand_)));
return *leadPFCand_;
}

const std::vector<reco::PFCandidatePtr>& PFTau::signalPFCands() const {
Expand Down
3 changes: 3 additions & 0 deletions DataFormats/TauReco/src/classes_def_2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

<class name="reco::PFTau" ClassVersion="21">
<version ClassVersion="21" checksum="759808483"/>
<field name="leadPFChargedHadrCand_" transient="true"/>
<field name="leadPFNeutralCand_" transient="true"/>
<field name="leadPFCand_" transient="true"/>
<field name="selectedTransientSignalPFCands_" transient="true"/>
<field name="selectedTransientSignalPFChargedHadrCands_" transient="true"/>
<field name="selectedTransientSignalPFNeutrHadrCands_" transient="true"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def adaptTauToMiniAODReReco(process, reclusterJets=True):
process.miniAODTausTask.remove(getattr(process, moduleName))

# Instead add against-mu discriminants which are MiniAOD compatible
from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstMuonSimple_cfi import hpsPFTauDiscriminationByLooseMuonRejectionSimple, hpsPFTauDiscriminationByTightMuonRejectionSimple
from RecoTauTag.RecoTau.hpsPFTauDiscriminationByAMuonRejectionSimple_cff import hpsPFTauDiscriminationByLooseMuonRejectionSimple, hpsPFTauDiscriminationByTightMuonRejectionSimple

process.hpsPFTauDiscriminationByLooseMuonRejectionSimple = hpsPFTauDiscriminationByLooseMuonRejectionSimple
process.hpsPFTauDiscriminationByTightMuonRejectionSimple = hpsPFTauDiscriminationByTightMuonRejectionSimple
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,4 @@ bool HLTPFTauPairLeadTrackDzMatchFilter::hltFilter(edm::Event& ev, const edm::Ev
// return truth if at least one good pair found
return npairs>0;

}
}
2 changes: 1 addition & 1 deletion RecoTauTag/RecoTau/interface/AntiElectronIDCut2.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,4 @@ class AntiElectronIDCut2
int verbosity_;
};

#endif
#endif
4 changes: 2 additions & 2 deletions RecoTauTag/RecoTau/interface/PFRecoTauClusterVariables.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ class TauIdMVAAuxiliaries {
float LeadingTracknormalizedChi2 = 0;
const reco::CandidatePtr& leadingPFCharged = tau.leadChargedHadrCand();
if (leadingPFCharged.isNonnull()) {
const reco::PFCandidate* pfcand = dynamic_cast<const reco::PFCandidate*>(leadingPFCharged.get());
if (pfcand != nullptr) {
const reco::PFCandidate* pfcand = dynamic_cast<const reco::PFCandidate*>(leadingPFCharged.get());
if (pfcand != nullptr) {
reco::TrackRef tref = pfcand->trackRef();
if (tref.isNonnull()) {
LeadingTracknormalizedChi2 = tref->normalizedChi2();
Expand Down
2 changes: 0 additions & 2 deletions RecoTauTag/RecoTau/interface/RecoTauConstructor.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ class RecoTauConstructor {
}

/// Append a PFCandidateRef/Ptr to a given collection
// void addPFCand(Region region, ParticleType type, const CandidateRef& ref, bool skipAddToP4 = false);
void addPFCand(Region region, ParticleType type, const CandidatePtr& ptr, bool skipAddToP4 = false);

/// Reserve a set amount of space for a given RefVector
Expand Down Expand Up @@ -154,7 +153,6 @@ class RecoTauConstructor {
// Helper functions for dealing with refs
CandidatePtr convertToPtr(const PFCandidatePtr& pfPtr) const;
CandidatePtr convertToPtr(const CandidatePtr& candPtr) const;
// CandidatePtr convertToPtr(const PFCandidateRef& pfRef) const;

const edm::Handle<edm::View<reco::Candidate> >& pfCands_;
std::auto_ptr<reco::PFTau> tau_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
* PFRecoTauChargedHadronFromGenericTrackPlugin
*
* Build PFRecoTauChargedHadron objects
* using charged PFCandidates as input
* using tracks as input, from either collection of RECO/AOD reco::Tracks
* (PFRecoTauChargedHadronFromTrackPlugin) or from a collection of MINIAOD
* pat::PackedCandidates (PFRecoTauChargedHadronFromLostTrackPlugin), typically
* using the 'lostTracks' collection
*
* Author: Christian Veelken, LLR
*
* inclusion of lost tracks based on
* PFRecoTauChargedHadronFromLostTrackPlugin by Michal Bluj, NCBJ, Poland
* inclusion of lost tracks based on original implementation
* by Michal Bluj, NCBJ, Poland
*/

#include "RecoTauTag/RecoTau/interface/PFRecoTauChargedHadronPlugins.h"
Expand Down Expand Up @@ -281,8 +284,7 @@ typename PFRecoTauChargedHadronFromGenericTrackPlugin<TrackClass>::return_type P
}

std::vector<Candidate_withDistance> neutralJetConstituents_withDistance;
std::vector<reco::CandidatePtr> jetConstituents = jet.daughterPtrVector();
for ( const auto& jetConstituent : jetConstituents ) {
for ( const auto& jetConstituent : jet.daughterPtrVector() ) {
int pdgId = jetConstituent->pdgId();
if ( !(pdgId == 130 || pdgId == 22) ) continue;
double dR = deltaR(atECALEntrance(&*jetConstituent, magneticFieldStrength_.z()), chargedHadron->positionAtECALEntrance_);
Expand Down Expand Up @@ -327,9 +329,7 @@ typename PFRecoTauChargedHadronFromGenericTrackPlugin<TrackClass>::return_type P
return output.release();
}

template class PFRecoTauChargedHadronFromGenericTrackPlugin<reco::Track>;
typedef PFRecoTauChargedHadronFromGenericTrackPlugin<reco::Track> PFRecoTauChargedHadronFromTrackPlugin;
template class PFRecoTauChargedHadronFromGenericTrackPlugin<pat::PackedCandidate>;
typedef PFRecoTauChargedHadronFromGenericTrackPlugin<pat::PackedCandidate> PFRecoTauChargedHadronFromLostTrackPlugin;

}} // end namespace reco::tau
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,22 +199,17 @@ PFRecoTauChargedHadronFromPFCandidatePlugin::return_type PFRecoTauChargedHadronF
chargedHadron->chargedPFCandidate_ = (*cand);
chargedHadron->addDaughter(*cand);


// reco::PFCandidate::ParticleType chargedPFCandidateType = chargedHadron->chargedPFCandidate_->particleId();
int pdgId = std::abs(chargedHadron->chargedPFCandidate_->pdgId());

if ( chargedHadron->pt() > minMergeChargedHadronPt_ ) {
std::vector<reco::CandidatePtr> jetConstituents = jet.daughterPtrVector();
for ( std::vector<reco::CandidatePtr>::const_iterator jetConstituent = jetConstituents.begin();
jetConstituent != jetConstituents.end(); ++jetConstituent ) {
for (const auto& jetConstituent : jet.daughterPtrVector()) {
// CV: take care of not double-counting energy in case "charged" PFCandidate is in fact a PFNeutralHadron
if ( (*jetConstituent) == chargedHadron->chargedPFCandidate_ ) continue;
if ( jetConstituent == chargedHadron->chargedPFCandidate_ ) continue;

// reco::PFCandidate::ParticleType jetConstituentType = (*jetConstituent)->particleId();
int jetConstituentPdgId = std::abs((*jetConstituent)->pdgId());
int jetConstituentPdgId = std::abs(jetConstituent->pdgId());
if ( !(jetConstituentPdgId == 130 || jetConstituentPdgId == 22) ) continue;

double dR = deltaR(atECALEntrance(&**jetConstituent, bField_), atECALEntrance(&*chargedHadron, bField_));
double dR = deltaR(atECALEntrance(jetConstituent.get(), bField_), atECALEntrance(&*chargedHadron, bField_));
double dRmerge = -1.;
int minBlockElementMatches = 1000;
int maxUnmatchedBlockElements = 0;
Expand All @@ -237,19 +232,18 @@ PFRecoTauChargedHadronFromPFCandidatePlugin::return_type PFRecoTauChargedHadronF
minMergeEt = minMergeGammaEt_;
}

if ((*jetConstituent)->et() > minMergeEt) {
if (jetConstituent->et() > minMergeEt) {
if (dR < dRmerge) {
chargedHadron->neutralPFCandidates_.push_back(*jetConstituent);
chargedHadron->addDaughter(*jetConstituent);
chargedHadron->neutralPFCandidates_.push_back(jetConstituent);
chargedHadron->addDaughter(jetConstituent);
}
else {
// TauReco@MiniAOD: No access to PF blocks at MiniAOD level, but the code below seems to have very minor impact
const reco::PFCandidate* pfCHCand = dynamic_cast<const reco::PFCandidate*>(&*chargedHadron->chargedPFCandidate_);
const reco::PFCandidate* pfJetConstituent = dynamic_cast<const reco::PFCandidate*>(&**jetConstituent);
if (pfCHCand != nullptr && pfJetConstituent != nullptr) {
if (isMatchedByBlockElement(*pfJetConstituent, *pfCHCand, minBlockElementMatches, minBlockElementMatches, maxUnmatchedBlockElements)) {
chargedHadron->neutralPFCandidates_.push_back(*jetConstituent);
chargedHadron->addDaughter(*jetConstituent);
const reco::PFCandidate* pfJetConstituent = dynamic_cast<const reco::PFCandidate*>(jetConstituent.get());
if (pfCand != nullptr && pfJetConstituent != nullptr) {
if (isMatchedByBlockElement(*pfJetConstituent, *pfCand, minBlockElementMatches, minBlockElementMatches, maxUnmatchedBlockElements)) {
chargedHadron->neutralPFCandidates_.push_back(jetConstituent);
chargedHadron->addDaughter(jetConstituent);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,4 +242,4 @@ PFRecoTauDiscriminationAgainstElectron::isInEcalCrack(double eta) const
}
}

DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstElectron);
DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstElectron);
Original file line number Diff line number Diff line change
Expand Up @@ -237,4 +237,4 @@ PFRecoTauDiscriminationAgainstElectronMVA5::isInEcalCrack(double eta) const
return (absEta > 1.460 && absEta < 1.558);
}

DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstElectronMVA5);
DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstElectronMVA5);
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ double PFRecoTauDiscriminationAgainstElectronMVA6::discriminate(const PFTauRef&
deltaRDummy = deltaREleTau;
if ( deltaREleTau < 0.3 ) {
double mva_match = mva_->MVAValue(*thePFTauRef, *theGsfElectron, usePhiAtEcalEntranceExtrapolation_);
const reco::PFCandidate* lpfch = dynamic_cast<const reco::PFCandidate*>(thePFTauRef->leadChargedHadrCand().get());
const reco::PFCandidatePtr& lpfch = thePFTauRef->leadPFChargedHadrCand();
bool hasGsfTrack = false;
if (lpfch != nullptr) {
if (lpfch.isNonnull()) {
hasGsfTrack = lpfch->gsfTrackRef().isNonnull();
} else throw cms::Exception("Type Mismatch") << "The PFTau was not made from PFCandidates, and PFRecoTauDiscriminationAgainstElectronMVA6 only works with PFTaus made from PFCandidates.";
}

if ( !hasGsfTrack )
hasGsfTrack = theGsfElectron->gsfTrack().isNonnull();
Expand Down Expand Up @@ -189,11 +189,11 @@ double PFRecoTauDiscriminationAgainstElectronMVA6::discriminate(const PFTauRef&

if ( !isGsfElectronMatched ) {
mvaValue = mva_->MVAValue(*thePFTauRef, usePhiAtEcalEntranceExtrapolation_);
const reco::PFCandidate* lpfch = dynamic_cast<const reco::PFCandidate*>(thePFTauRef->leadChargedHadrCand().get());
const reco::PFCandidatePtr& lpfch = thePFTauRef->leadPFChargedHadrCand();
bool hasGsfTrack = false;
if (lpfch != nullptr) {
if (lpfch.isNonnull()) {
hasGsfTrack = lpfch->gsfTrackRef().isNonnull();
} else throw cms::Exception("Type Mismatch") << "The PFTau was not made from PFCandidates, and PFRecoTauDiscriminationAgainstElectronMVA6 only works with PFTaus made from PFCandidates.";
}

//// Veto taus that go to Ecal crack
if ( isInEcalCrack(tauEtaAtEcalEntrance) || isInEcalCrack(leadChargedPFCandEtaAtEcalEntrance) ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,4 @@ double PFRecoTauDiscriminationAgainstMuon::discriminate(const PFTauRef& thePFTau
return (decision ? 1. : 0.);
}

DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstMuon);
DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstMuon);
61 changes: 25 additions & 36 deletions RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationAgainstMuon2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -128,17 +128,14 @@ double PFRecoTauDiscriminationAgainstMuon2::discriminate(const reco::PFTauRef& p
numHitsRPC[iStation] = 0;
}

const reco::CandidatePtr& pfLeadChargedHadron = pfTau->leadChargedHadrCand();
const reco::PFCandidatePtr& pfLeadChargedHadron = pfTau->leadPFChargedHadrCand();
if ( pfLeadChargedHadron.isNonnull() ) {
const reco::PFCandidate* pflch = dynamic_cast<const reco::PFCandidate*>(pfLeadChargedHadron.get());
if (pflch != nullptr) {
reco::MuonRef muonRef = pflch->muonRef();
if ( muonRef.isNonnull() ) {
if ( verbosity_ ) edm::LogPrint("PFTauAgainstMuon2") << " has muonRef." ;
reco::tau::countMatches(*muonRef, numMatchesDT, numMatchesCSC, numMatchesRPC);
reco::tau::countHits(*muonRef, numHitsDT, numHitsCSC, numHitsRPC);
}
} else throw cms::Exception("Type Mismatch") << "The PFTau was not made from PFCandidates, and PFRecoTauDiscriminationAgainstMuon2 only works with PFTaus made from PFCandidates. Please use PFRecoTauDiscriminationAgainstMuonSimple instead.\n";
reco::MuonRef muonRef = pfLeadChargedHadron->muonRef();
if ( muonRef.isNonnull() ) {
if ( verbosity_ ) edm::LogPrint("PFTauAgainstMuon2") << " has muonRef." ;
reco::tau::countMatches(*muonRef, numMatchesDT, numMatchesCSC, numMatchesRPC);
reco::tau::countHits(*muonRef, numHitsDT, numHitsCSC, numHitsRPC);
}
}

if ( !srcMuons_.label().empty() ) {
Expand All @@ -151,14 +148,11 @@ double PFRecoTauDiscriminationAgainstMuon2::discriminate(const reco::PFTauRef& p
continue;
}
if ( pfLeadChargedHadron.isNonnull()) {
const reco::PFCandidate* pflch = dynamic_cast<const reco::PFCandidate*>(pfLeadChargedHadron.get());
if (pflch != nullptr) {
reco::MuonRef muonRef = pflch->muonRef();
if (muonRef.isNonnull() && muon == pflch->muonRef() ) {
if ( verbosity_ ) { edm::LogPrint("PFTauAgainstMuon2") << " matches muonRef of tau --> skipping it."; }
continue;
}
} else throw cms::Exception("Type Mismatch") << "The PFTau was not made from PFCandidates, and PFRecoTauDiscriminationAgainstMuon2 only works with PFTaus made from PFCandidates. Please use PFRecoTauDiscriminationAgainstMuonSimple instead.\n";
reco::MuonRef muonRef = pfLeadChargedHadron->muonRef();
if (muonRef.isNonnull() && muon == pfLeadChargedHadron->muonRef() ) {
if ( verbosity_ ) { edm::LogPrint("PFTauAgainstMuon2") << " matches muonRef of tau --> skipping it."; }
continue;
}
}
double dR = deltaR(muon->p4(), pfTau->p4());
double dRmatch = dRmuonMatch_;
Expand Down Expand Up @@ -211,26 +205,21 @@ double PFRecoTauDiscriminationAgainstMuon2::discriminate(const reco::PFTauRef& p

bool passesCaloMuonVeto = true;
if ( pfLeadChargedHadron.isNonnull() ) {
const reco::PFCandidate* pflch = dynamic_cast<const reco::PFCandidate*>(pfLeadChargedHadron.get());
if (pflch != nullptr) {
double energyECALplusHCAL = pflch->ecalEnergy() + pflch->hcalEnergy();
if ( verbosity_ ) {
if ( pflch->trackRef().isNonnull() ) {
edm::LogPrint("PFTauAgainstMuon2") << "decayMode = " << pfTau->decayMode() << ", energy(ECAL+HCAL) = " << energyECALplusHCAL << ", leadPFChargedHadronP = " << pflch->trackRef()->p() ;
} else if ( pflch->gsfTrackRef().isNonnull() ) {
edm::LogPrint("PFTauAgainstMuon2") << "decayMode = " << pfTau->decayMode() << ", energy(ECAL+HCAL) = " << energyECALplusHCAL << ", leadPFChargedHadronP = " << pflch->gsfTrackRef()->p() ;
}
double energyECALplusHCAL = pfLeadChargedHadron->ecalEnergy() + pfLeadChargedHadron->hcalEnergy();
if ( verbosity_ ) {
if ( pfLeadChargedHadron->trackRef().isNonnull() ) {
edm::LogPrint("PFTauAgainstMuon2") << "decayMode = " << pfTau->decayMode() << ", energy(ECAL+HCAL) = " << energyECALplusHCAL << ", leadPFChargedHadronP = " << pfLeadChargedHadron->trackRef()->p() ;
} else if ( pfLeadChargedHadron->gsfTrackRef().isNonnull() ) {
edm::LogPrint("PFTauAgainstMuon2") << "decayMode = " << pfTau->decayMode() << ", energy(ECAL+HCAL) = " << energyECALplusHCAL << ", leadPFChargedHadronP = " << pfLeadChargedHadron->gsfTrackRef()->p() ;
}
const reco::Track* leadTrack = nullptr;
if ( pflch->trackRef().isNonnull() )
leadTrack = pflch->trackRef().get();
else if ( pflch->gsfTrackRef().isNonnull() )
leadTrack = pflch->gsfTrackRef().get();
if ( pfTau->decayMode() == 0 && leadTrack && energyECALplusHCAL < (hop_*leadTrack->p()) )
passesCaloMuonVeto = false;
} else {
throw cms::Exception("Type Mismatch") << "The PFTau was not made from PFCandidates, and PFRecoTauDiscriminationAgainstMuon2 only works with PFTaus made from PFCandidates. Please use PFRecoTauDiscriminationAgainstMuonSimple instead.\n";
}
const reco::Track* leadTrack = nullptr;
if ( pfLeadChargedHadron->trackRef().isNonnull() )
leadTrack = pfLeadChargedHadron->trackRef().get();
else if ( pfLeadChargedHadron->gsfTrackRef().isNonnull() )
leadTrack = pfLeadChargedHadron->gsfTrackRef().get();
if ( pfTau->decayMode() == 0 && leadTrack && energyECALplusHCAL < (hop_*leadTrack->p()) )
passesCaloMuonVeto = false;
}

double discriminatorValue = 0.;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,4 +244,4 @@ void PFRecoTauDiscriminationAgainstMuonMVA::endEvent(edm::Event& evt)

}

DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstMuonMVA);
DEFINE_FWK_MODULE(PFRecoTauDiscriminationAgainstMuonMVA);
Loading

0 comments on commit 4285c06

Please sign in to comment.