forked from cms-sw/cmssw
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5 from Sam-Harper/HEEPV50ID
Heepv50
- Loading branch information
Showing
11 changed files
with
607 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#ifndef EgammaAnalysis_ElectronTools_EBEECutValues_h | ||
#define EgammaAnalysis_ElectronTools_EBEECutValues_h | ||
|
||
#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
class EBEECutValues { | ||
private: | ||
double barrel_; | ||
double endcap_; | ||
const double barrelCutOff_=1.479; //this is currrently used to identify if object is barrel or endcap but may change | ||
|
||
public: | ||
EBEECutValues(const edm::ParameterSet& params,const std::string& name): | ||
barrel_(params.getParameter<double>(name+"EB")), | ||
endcap_(params.getParameter<double>(name+"EE")){} | ||
double operator()(const reco::GsfElectronRef& cand)const{return isBarrel(cand) ? barrel_ : endcap_;} | ||
|
||
private: | ||
const bool isBarrel(const reco::GsfElectronRef& cand)const{return std::abs(cand->superCluster()->position().eta())<barrelCutOff_;} | ||
|
||
}; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
EgammaAnalysis/ElectronTools/plugins/cuts/GsfEleDEtaInLinearCut.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
#include "EgammaAnalysis/ElectronTools/interface/EBEECutValues.h" | ||
|
||
class GsfEleDEtaInLinearCut : public CutApplicatorBase { | ||
public: | ||
GsfEleDEtaInLinearCut(const edm::ParameterSet& param) : | ||
CutApplicatorBase(param), | ||
slopeTerm_(param,"slopeTerm"), | ||
constTerm_(param,"constTerm"), | ||
minValue_(param,"minValue") | ||
{ | ||
} | ||
|
||
result_type operator()(const reco::GsfElectronRef&) const override final; | ||
|
||
CandidateType candidateType() const override final { | ||
return ELECTRON; | ||
} | ||
|
||
private: | ||
const EBEECutValues slopeTerm_; | ||
const EBEECutValues constTerm_; | ||
const EBEECutValues minValue_; | ||
}; | ||
|
||
DEFINE_EDM_PLUGIN(CutApplicatorFactory, | ||
GsfEleDEtaInLinearCut, | ||
"GsfEleDEtaInLinearCut"); | ||
|
||
CutApplicatorBase::result_type | ||
GsfEleDEtaInLinearCut:: | ||
operator()(const reco::GsfElectronRef& cand) const | ||
{ | ||
float et = cand->energy()!=0. ? cand->et()/cand->energy()*cand->caloEnergy() : 0.; | ||
double cutValue = std::max(constTerm_(cand)+slopeTerm_(cand)*et,minValue_(cand)); | ||
return std::abs(cand->deltaEtaSuperClusterTrackAtVtx())<cutValue; | ||
|
||
} |
36 changes: 36 additions & 0 deletions
36
EgammaAnalysis/ElectronTools/plugins/cuts/GsfEleE2x5OverE5x5Cut.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
#include "EgammaAnalysis/ElectronTools/interface/EBEECutValues.h" | ||
|
||
class GsfEleE2x5OverE5x5Cut : public CutApplicatorBase { | ||
public: | ||
GsfEleE2x5OverE5x5Cut(const edm::ParameterSet& params) : | ||
CutApplicatorBase(params), | ||
minE1x5OverE5x5_(params,"minE1x5OverE5x5"), | ||
minE2x5OverE5x5_(params,"minE2x5OverE5x5"){} | ||
|
||
result_type operator()(const reco::GsfElectronRef&) const override final; | ||
|
||
CandidateType candidateType() const override final { | ||
return ELECTRON; | ||
} | ||
|
||
private: | ||
EBEECutValues minE1x5OverE5x5_; | ||
EBEECutValues minE2x5OverE5x5_; | ||
|
||
|
||
}; | ||
|
||
DEFINE_EDM_PLUGIN(CutApplicatorFactory, | ||
GsfEleE2x5OverE5x5Cut, | ||
"GsfEleE2x5OverE5x5Cut"); | ||
|
||
CutApplicatorBase::result_type | ||
GsfEleE2x5OverE5x5Cut:: | ||
operator()(const reco::GsfElectronRef& cand) const{ | ||
|
||
return cand->e2x5Max() > minE2x5OverE5x5_(cand)*cand->e5x5() || | ||
cand->e1x5() > minE1x5OverE5x5_(cand)*cand->e5x5(); | ||
|
||
} |
67 changes: 67 additions & 0 deletions
67
EgammaAnalysis/ElectronTools/plugins/cuts/GsfEleEmHadD1IsoRhoCut.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorWithEventContentBase.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
#include "DataFormats/EgammaCandidates/interface/ConversionFwd.h" | ||
#include "DataFormats/EgammaCandidates/interface/Conversion.h" | ||
#include "RecoEgamma/EgammaTools/interface/ConversionTools.h" | ||
|
||
#include "EgammaAnalysis/ElectronTools/interface/EBEECutValues.h" | ||
|
||
class GsfEleEmHadD1IsoRhoCut : public CutApplicatorWithEventContentBase { | ||
public: | ||
GsfEleEmHadD1IsoRhoCut(const edm::ParameterSet& c); | ||
|
||
result_type operator()(const reco::GsfElectronRef&) const override final; | ||
|
||
void setConsumes(edm::ConsumesCollector&) override final; | ||
void getEventContent(const edm::EventBase&) override final; | ||
|
||
CandidateType candidateType() const override final { | ||
return ELECTRON; | ||
} | ||
|
||
private: | ||
float rhoConstant_; | ||
EBEECutValues slopeTerm_; | ||
EBEECutValues slopeStart_; | ||
EBEECutValues constTerm_; | ||
|
||
|
||
edm::Handle<double> rhoHandle_; | ||
|
||
}; | ||
|
||
DEFINE_EDM_PLUGIN(CutApplicatorFactory, | ||
GsfEleEmHadD1IsoRhoCut, | ||
"GsfEleEmHadD1IsoRhoCut"); | ||
|
||
GsfEleEmHadD1IsoRhoCut::GsfEleEmHadD1IsoRhoCut(const edm::ParameterSet& params) : | ||
CutApplicatorWithEventContentBase(params), | ||
rhoConstant_(params.getParameter<double>("rhoConstant")), | ||
slopeTerm_(params,"slopeTerm"), | ||
slopeStart_(params,"slopeStart"), | ||
constTerm_(params,"constTerm"){ | ||
edm::InputTag rhoTag = params.getParameter<edm::InputTag>("rho"); | ||
contentTags_.emplace("rho",rhoTag); | ||
|
||
} | ||
|
||
void GsfEleEmHadD1IsoRhoCut::setConsumes(edm::ConsumesCollector& cc) { | ||
auto rho = cc.consumes<double>(contentTags_["rho"]); | ||
contentTokens_.emplace("rho",rho); | ||
} | ||
|
||
void GsfEleEmHadD1IsoRhoCut::getEventContent(const edm::EventBase& ev) { | ||
ev.getByLabel(contentTags_["rho"],rhoHandle_); | ||
} | ||
|
||
CutApplicatorBase::result_type | ||
GsfEleEmHadD1IsoRhoCut:: | ||
operator()(const reco::GsfElectronRef& cand) const{ | ||
const double rho = (*rhoHandle_); | ||
|
||
const float isolEmHadDepth1 = cand->dr03EcalRecHitSumEt() + cand->dr03HcalDepth1TowerSumEt(); | ||
|
||
const float et = cand->et(); | ||
const float cutValue = et > slopeStart_(cand) ? slopeTerm_(cand)*(et-slopeStart_(cand)) + constTerm_(cand) : constTerm_(cand); | ||
return isolEmHadDepth1 < cutValue + rhoConstant_*rho; | ||
} |
75 changes: 75 additions & 0 deletions
75
EgammaAnalysis/ElectronTools/plugins/cuts/GsfEleFull5x5E2x5OverE5x5Cut.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorWithEventContentBase.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
#include "DataFormats/EgammaCandidates/interface/ConversionFwd.h" | ||
#include "DataFormats/EgammaCandidates/interface/Conversion.h" | ||
#include "RecoEgamma/EgammaTools/interface/ConversionTools.h" | ||
|
||
#include "EgammaAnalysis/ElectronTools/interface/EBEECutValues.h" | ||
|
||
class GsfEleFull5x5E2x5OverE5x5Cut : public CutApplicatorWithEventContentBase { | ||
public: | ||
GsfEleFull5x5E2x5OverE5x5Cut(const edm::ParameterSet& c); | ||
|
||
result_type operator()(const reco::GsfElectronRef&) const override final; | ||
|
||
void setConsumes(edm::ConsumesCollector&) override final; | ||
void getEventContent(const edm::EventBase&) override final; | ||
|
||
CandidateType candidateType() const override final { | ||
return ELECTRON; | ||
} | ||
|
||
private: | ||
EBEECutValues minE1x5OverE5x5Cut_; | ||
EBEECutValues minE2x5OverE5x5Cut_; | ||
|
||
|
||
edm::Handle<edm::ValueMap<float> > e1x5Handle_; | ||
edm::Handle<edm::ValueMap<float> > e2x5Handle_; | ||
edm::Handle<edm::ValueMap<float> > e5x5Handle_; | ||
|
||
}; | ||
|
||
DEFINE_EDM_PLUGIN(CutApplicatorFactory, | ||
GsfEleFull5x5E2x5OverE5x5Cut, | ||
"GsfEleFull5x5E2x5OverE5x5Cut"); | ||
|
||
GsfEleFull5x5E2x5OverE5x5Cut::GsfEleFull5x5E2x5OverE5x5Cut(const edm::ParameterSet& params) : | ||
CutApplicatorWithEventContentBase(params), | ||
minE1x5OverE5x5Cut_(params,"minE1x5OverE5x5"), | ||
minE2x5OverE5x5Cut_(params,"minE2x5OverE5x5"){ | ||
edm::InputTag e5x5Tag = params.getParameter<edm::InputTag>("e5x5"); | ||
edm::InputTag e2x5Tag = params.getParameter<edm::InputTag>("e2x5"); | ||
edm::InputTag e1x5Tag = params.getParameter<edm::InputTag>("e1x5"); | ||
contentTags_.emplace("e1x5",e1x5Tag); | ||
contentTags_.emplace("e2x5",e2x5Tag); | ||
contentTags_.emplace("e5x5",e5x5Tag); | ||
|
||
} | ||
|
||
void GsfEleFull5x5E2x5OverE5x5Cut::setConsumes(edm::ConsumesCollector& cc) { | ||
auto e1x5 = cc.consumes<double>(contentTags_["e1x5"]); | ||
contentTokens_.emplace("e1x5",e1x5); | ||
auto e2x5 = cc.consumes<double>(contentTags_["e2x5"]); | ||
contentTokens_.emplace("e2x5",e2x5); | ||
auto e5x5 = cc.consumes<double>(contentTags_["e5x5"]); | ||
contentTokens_.emplace("e5x5",e5x5); | ||
} | ||
|
||
void GsfEleFull5x5E2x5OverE5x5Cut::getEventContent(const edm::EventBase& ev) { | ||
ev.getByLabel(contentTags_["e1x5"],e1x5Handle_); | ||
ev.getByLabel(contentTags_["e2x5"],e2x5Handle_); | ||
ev.getByLabel(contentTags_["e5x5"],e5x5Handle_); | ||
} | ||
|
||
CutApplicatorBase::result_type | ||
GsfEleFull5x5E2x5OverE5x5Cut:: | ||
operator()(const reco::GsfElectronRef& cand) const{ | ||
|
||
const double e5x5 = (*e5x5Handle_)[cand]; | ||
const double e1x5OverE5x5 = e5x5!=0 ? (*e1x5Handle_)[cand]/e5x5 : 0; | ||
const double e2x5OverE5x5 = e5x5!=0 ? (*e2x5Handle_)[cand]/e5x5 : 0; | ||
|
||
return e1x5OverE5x5 > minE1x5OverE5x5Cut_(cand) || e2x5OverE5x5 > minE2x5OverE5x5Cut_(cand); | ||
|
||
} |
37 changes: 37 additions & 0 deletions
37
EgammaAnalysis/ElectronTools/plugins/cuts/GsfEleHadronicOverEMLinearCut.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h" | ||
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h" | ||
#include "EgammaAnalysis/ElectronTools/interface/EBEECutValues.h" | ||
class GsfEleHadronicOverEMLinearCut : public CutApplicatorBase { | ||
public: | ||
GsfEleHadronicOverEMLinearCut(const edm::ParameterSet& params) : | ||
CutApplicatorBase(params), | ||
slopeTerm_(params,"slopeTerm"), | ||
slopeStart_(params,"slopeStart"), | ||
constTerm_(params,"constTerm"){} | ||
|
||
result_type operator()(const reco::GsfElectronRef&) const override final; | ||
|
||
CandidateType candidateType() const override final { | ||
return ELECTRON; | ||
} | ||
|
||
private: | ||
EBEECutValues slopeTerm_; | ||
EBEECutValues slopeStart_; | ||
EBEECutValues constTerm_; | ||
|
||
}; | ||
|
||
DEFINE_EDM_PLUGIN(CutApplicatorFactory, | ||
GsfEleHadronicOverEMLinearCut, | ||
"GsfEleHadronicOverEMLinearCut"); | ||
|
||
CutApplicatorBase::result_type | ||
GsfEleHadronicOverEMLinearCut:: | ||
operator()(const reco::GsfElectronRef& cand) const { | ||
|
||
const float energy = cand->superCluster()->energy(); | ||
const float cutValue = energy > slopeStart_(cand) ? slopeTerm_(cand)*(energy-slopeStart_(cand)) + constTerm_(cand) : constTerm_(cand); | ||
|
||
return cand->hadronicOverEm()*energy < cutValue; | ||
} |
Oops, something went wrong.