Skip to content

Commit

Permalink
Merge pull request #10925 from cms-tau-pog/DynamicStripReco_75X
Browse files Browse the repository at this point in the history
Dynamic strip reco 75 x
  • Loading branch information
cmsbuild committed Sep 4, 2015
2 parents e739969 + 33f9993 commit 3ebbeec
Show file tree
Hide file tree
Showing 30 changed files with 1,203 additions and 378 deletions.
1 change: 0 additions & 1 deletion CommonTools/ParticleFlow/python/pfTaus_cff.py
Expand Up @@ -125,7 +125,6 @@
pfTauTagInfoProducer.PFCandidateProducer = jetConfig.ak4PFJets.src
pfTauTagInfoProducer.PFJetTracksAssociatorProducer = 'pfJetTracksAssociatorAtVertex'


pfTausPreSequence = cms.Sequence(
pfJetTracksAssociatorAtVertex +
pfTauPFJets08Region +
Expand Down
15 changes: 13 additions & 2 deletions DataFormats/TauReco/interface/PFTau.h
Expand Up @@ -148,9 +148,16 @@ class PFTau : public BaseTau {
/// Retrieve the identified hadronic decay mode according to the number of
/// charged and piZero candidates in the signal cone
hadronicDecayMode decayMode() const;
hadronicDecayMode calculateDecayMode() const;
void setDecayMode(const hadronicDecayMode&);

/// Effect of eta and phi correction of strip on mass of tau candidate
float bendCorrMass() const { return bendCorrMass_; }
void setBendCorrMass(float bendCorrMass) { bendCorrMass_ = bendCorrMass; }

/// Size of signal cone
double signalConeSize() const { return signalConeSize_; }
void setSignalConeSize(double signalConeSize) { signalConeSize_ = signalConeSize; }

//Electron rejection
float emFraction() const; // Ecal/Hcal Cluster Energy
float hcalTotOverPLead() const; // total Hcal Cluster E / leadPFChargedHadron P
Expand Down Expand Up @@ -192,7 +199,7 @@ class PFTau : public BaseTau {
CandidatePtr sourceCandidatePtr( size_type i ) const;

/// prints information on this PFTau
void dump(std::ostream& out=std::cout) const;
void dump(std::ostream& out = std::cout) const;

private:
friend class tau::RecoTauConstructor;
Expand Down Expand Up @@ -226,6 +233,10 @@ class PFTau : public BaseTau {

hadronicDecayMode decayMode_;

float bendCorrMass_;

float signalConeSize_;

reco::PFJetRef jetRef_;
PFTauTagInfoRef PFTauTagInfoRef_;
reco::PFCandidatePtr leadPFChargedHadrCand_;
Expand Down
54 changes: 39 additions & 15 deletions DataFormats/TauReco/interface/RecoTauPiZero.h
Expand Up @@ -14,32 +14,47 @@ class RecoTauPiZero : public CompositePtrCandidate {
kStrips = 3
};

RecoTauPiZero():CompositePtrCandidate(),algoName_(kUndefined){
this->setPdgId(111); }

RecoTauPiZero(PiZeroAlgorithm algoName):
CompositePtrCandidate(), algoName_(algoName) { this->setPdgId(111); }
RecoTauPiZero()
: CompositePtrCandidate(),
algoName_(kUndefined), bendCorrEta_ (0.), bendCorrPhi_ (0.)
{
this->setPdgId(111);
}

RecoTauPiZero(PiZeroAlgorithm algoName)
: CompositePtrCandidate(),
algoName_(algoName), bendCorrEta_ (0.), bendCorrPhi_ (0.)
{
this->setPdgId(111);
}

/// constructor from values
RecoTauPiZero(Charge q, const LorentzVector& p4,
const Point& vtx = Point( 0, 0, 0 ),
int pdgId = 111, int status = 0, bool integerCharge = true,
PiZeroAlgorithm algoName=kUndefined):
CompositePtrCandidate(
q, p4, vtx, pdgId, status, integerCharge ),algoName_(algoName) {}
PiZeroAlgorithm algoName = kUndefined)
: CompositePtrCandidate(q, p4, vtx, pdgId, status, integerCharge ),
algoName_(algoName), bendCorrEta_ (0.), bendCorrPhi_ (0.)
{
}

/// constructor from values
RecoTauPiZero(Charge q, const PolarLorentzVector& p4,
const Point& vtx = Point( 0, 0, 0 ),
int pdgId = 111, int status = 0, bool integerCharge = true,
PiZeroAlgorithm algoName=kUndefined):
CompositePtrCandidate(
q, p4, vtx, pdgId, status, integerCharge ),algoName_(algoName) {}
PiZeroAlgorithm algoName=kUndefined)
: CompositePtrCandidate(q, p4, vtx, pdgId, status, integerCharge ),
algoName_(algoName), bendCorrEta_ (0.), bendCorrPhi_ (0.)
{
}

/// constructor from a Candidate
explicit RecoTauPiZero(
const Candidate & p, PiZeroAlgorithm algoName=kUndefined):
CompositePtrCandidate(p),algoName_(algoName) { this->setPdgId(111); }
explicit RecoTauPiZero(const Candidate& p, PiZeroAlgorithm algoName = kUndefined)
: CompositePtrCandidate(p),
algoName_(algoName), bendCorrEta_ (0.), bendCorrPhi_ (0.)
{
this->setPdgId(111);
}

/// destructor
~RecoTauPiZero(){};
Expand All @@ -62,11 +77,20 @@ class RecoTauPiZero : public CompositePtrCandidate {
/// Check whether a given algo produced this pi zero
bool algoIs(PiZeroAlgorithm algo) const;

void print(std::ostream& out=std::cout) const;
/// Size of correction to account for spread of photon energy in eta and phi
/// in case charged pions make nuclear interactions or photons convert within the tracking detector
float bendCorrEta() const { return bendCorrEta_; }
float bendCorrPhi() const { return bendCorrPhi_; }
void setBendCorrEta(float bendCorrEta) { bendCorrEta_ = bendCorrEta; }
void setBendCorrPhi(float bendCorrPhi) { bendCorrPhi_ = bendCorrPhi; }

void print(std::ostream& out = std::cout) const;

private:
PiZeroAlgorithm algoName_;

float bendCorrEta_;
float bendCorrPhi_;
};

std::ostream & operator<<(std::ostream& out, const RecoTauPiZero& c);
Expand Down
30 changes: 9 additions & 21 deletions DataFormats/TauReco/src/PFTau.cc
Expand Up @@ -15,14 +15,16 @@ PFTau::PFTau()
hcalTotOverPLead_ = NAN;
hcalMaxOverPLead_ = NAN;
hcal3x3OverPLead_ = NAN;
ecalStripSumEOverPLead_= NAN;
ecalStripSumEOverPLead_ = NAN;
bremsRecoveryEOverPLead_ = NAN;
electronPreIDOutput_ = NAN;
electronPreIDDecision_= NAN;
electronPreIDDecision_ = NAN;
caloComp_ = NAN;
segComp_ = NAN;
muonDecision_ = NAN;
decayMode_=kNull;
decayMode_ = kNull;
bendCorrMass_ = 0.;
signalConeSize_ = 0.;
}

PFTau::PFTau(Charge q, const LorentzVector& p4, const Point& vtx)
Expand All @@ -40,12 +42,14 @@ PFTau::PFTau(Charge q, const LorentzVector& p4, const Point& vtx)
ecalStripSumEOverPLead_= NAN;
bremsRecoveryEOverPLead_ = NAN;
electronPreIDOutput_ = NAN;
electronPreIDDecision_= NAN;
electronPreIDDecision_ = NAN;

caloComp_ = NAN;
segComp_ = NAN;
muonDecision_ = NAN;
decayMode_=kNull;
decayMode_ = kNull;
bendCorrMass_ = 0.;
signalConeSize_ = 0.;
}

PFTau* PFTau::clone() const { return new PFTau(*this); }
Expand Down Expand Up @@ -177,22 +181,6 @@ void PFTau::setIsolationTauChargedHadronCandidatesRefs(const PFRecoTauChargedHad

PFTau::hadronicDecayMode PFTau::decayMode() const { return decayMode_; }

PFTau::hadronicDecayMode PFTau::calculateDecayMode() const {
unsigned int nCharged = signalTauChargedHadronCandidates().size();
unsigned int nPiZeros = signalPiZeroCandidates().size();
// If no tracks exist, this is definitely not a tau!
if ( !nCharged ) return kNull;
// Find the maximum number of PiZeros our parameterization can hold
const unsigned int maxPiZeros = kOneProngNPiZero;
// Determine our track index
unsigned int trackIndex = (nCharged - 1)*(maxPiZeros + 1);
// Check if we handle the given number of tracks
if ( trackIndex >= kRareDecayMode ) return kRareDecayMode;

if(nPiZeros>maxPiZeros) nPiZeros=maxPiZeros;
return static_cast<PFTau::hadronicDecayMode>(trackIndex + nPiZeros);
}

void PFTau::setDecayMode(const PFTau::hadronicDecayMode& dm){ decayMode_=dm;}

// Setting information about the isolation region
Expand Down
44 changes: 22 additions & 22 deletions DataFormats/TauReco/src/RecoTauPiZero.cc
@@ -1,4 +1,5 @@
#include "DataFormats/TauReco/interface/RecoTauPiZero.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "DataFormats/Math/interface/deltaPhi.h"

namespace reco {
Expand Down Expand Up @@ -55,31 +56,30 @@ bool RecoTauPiZero::algoIs(RecoTauPiZero::PiZeroAlgorithm algo) const {
return (algoName_ == algo);
}

namespace {
std::ostream& operator<<(std::ostream& out, const reco::Candidate::LorentzVector& p4)
namespace
{
out << "(mass/pt/eta/phi) (" << std::setiosflags(std::ios::fixed) << std::setprecision(2)
<< p4.mass() << "/" << std::setprecision(1) << p4.pt() << "/" << std::setprecision(2) << p4.eta()
<< "/" << std::setprecision(2) << p4.phi() << ")";
return out;
}
std::string getPFCandidateType(reco::PFCandidate::ParticleType pfCandidateType)
{
if ( pfCandidateType == reco::PFCandidate::X ) return "undefined";
else if ( pfCandidateType == reco::PFCandidate::h ) return "PFChargedHadron";
else if ( pfCandidateType == reco::PFCandidate::e ) return "PFElectron";
else if ( pfCandidateType == reco::PFCandidate::mu ) return "PFMuon";
else if ( pfCandidateType == reco::PFCandidate::gamma ) return "PFGamma";
else if ( pfCandidateType == reco::PFCandidate::h0 ) return "PFNeutralHadron";
else if ( pfCandidateType == reco::PFCandidate::h_HF ) return "HF_had";
else if ( pfCandidateType == reco::PFCandidate::egamma_HF ) return "HF_em";
else assert(0);
}
}

void RecoTauPiZero::print(std::ostream& out) const {
if (!out) return;

out << "RecoTauPiZero: " << this->p4() <<
" nDaughters: " << this->numberOfDaughters() <<
" (gamma/e) (" << this->numberOfGammas() << "/" << this->numberOfElectrons() << ")" <<
" maxDeltaPhi: " << std::setprecision(3) << maxDeltaPhi() <<
" maxDeltaEta: " << std::setprecision(3) << maxDeltaEta() <<
" algo: " << algo() <<
std::endl;

for(size_t i = 0; i < this->numberOfDaughters(); ++i)
{
out << "--- daughter " << i << ": " << daughterPtr(i)->p4() <<
" key: " << daughterPtr(i).key() << std::endl;
void RecoTauPiZero::print(std::ostream& stream) const
{
std::cout << "Pt = " << this->pt() << ", eta = " << this->eta() << ", phi = " << this->phi() << std::endl;
size_t numDaughters = this->numberOfDaughters();
for ( size_t iDaughter = 0; iDaughter < numDaughters; ++iDaughter ) {
const reco::PFCandidate* daughter = dynamic_cast<const reco::PFCandidate*>(this->daughterPtr(iDaughter).get());
std::cout << " daughter #" << iDaughter << " (" << getPFCandidateType(daughter->particleId()) << "):"
<< " Pt = " << daughter->pt() << ", eta = " << daughter->eta() << ", phi = " << daughter->phi() << std::endl;
}
}

Expand Down
6 changes: 4 additions & 2 deletions DataFormats/TauReco/src/classes_def_2.xml
@@ -1,6 +1,7 @@
<lcgdict>

<class name="reco::PFTau" ClassVersion="18">
<class name="reco::PFTau" ClassVersion="19">
<version ClassVersion="19" checksum="4003955973"/>
<version ClassVersion="18" checksum="1318776182"/>
<version ClassVersion="17" checksum="1523260402"/>
<version ClassVersion="16" checksum="2695990650"/>
Expand Down Expand Up @@ -265,7 +266,8 @@ isolationTauChargedHadronCandidates_.clear();
<class name="edm::Wrapper<edm::Association<std::vector<reco::PFTauDecayMode> > >"/>
<class name="edm::Wrapper<edm::Association<std::vector<reco::PFTau> > >"/>

<class name="reco::RecoTauPiZero" ClassVersion="13">
<class name="reco::RecoTauPiZero" ClassVersion="14">
<version ClassVersion="14" checksum="3535311745"/>
<version ClassVersion="13" checksum="3687187514"/>
<version ClassVersion="12" checksum="453348937"/>
<version ClassVersion="11" checksum="2458276705"/>
Expand Down
6 changes: 3 additions & 3 deletions PhysicsTools/PatAlgos/python/cleaningLayer1/tauCleaner_cfi.py
Expand Up @@ -7,8 +7,8 @@
preselection = cms.string(
'tauID("decayModeFinding") > 0.5 &'
' tauID("byLooseCombinedIsolationDeltaBetaCorr3Hits") > 0.5 &'
' tauID("againstMuonTight") > 0.5 &'
' tauID("againstElectronMedium") > 0.5'
' tauID("againstMuonTight3") > 0.5 &'
' tauID("againstElectronVLooseMVA5") > 0.5'
),

# overlap checking configurables
Expand All @@ -34,5 +34,5 @@
),

# finalCut (any string-based cut on pat::Tau)
finalCut = cms.string('pt > 20. & abs(eta) < 2.3'),
finalCut = cms.string('pt > 18. & abs(eta) < 2.3'),
)

0 comments on commit 3ebbeec

Please sign in to comment.