25 #include <unordered_map> 38 :
citk::IsolationConeDefinitionBase(c),
39 _vetoConeSize2EB(
std::
pow(c.getParameter<double>(
"VetoConeSizeBarrel"), 2.0)),
40 _vetoConeSize2EE(
std::
pow(c.getParameter<double>(
"VetoConeSizeEndcaps"), 2.0)),
41 _miniAODVertexCodes(c.getParameter<
std::vector<unsigned> >(
"miniAODVertexCodes")),
42 _isolateAgainst(c.getParameter<
std::
string>(
"isolateAgainst")) {
44 sprintf(buf,
"BarVeto%.2f-EndVeto%.2f",
std::sqrt(_vetoConeSize2EB),
std::sqrt(_vetoConeSize2EE));
46 auto decimal = _additionalCode.find(
'.');
47 while (decimal != std::string::npos) {
48 _additionalCode.erase(decimal, 1);
49 decimal = _additionalCode.find(
'.');
63 const float _vetoConeSize2EB, _vetoConeSize2EE;
71 "ElectronPFIsolationWithConeVeto");
79 bool isEB = (seed->seed().subdetId() ==
EcalBarrel);
81 const float vetoConeSize2 = (isEB ? _vetoConeSize2EB : _vetoConeSize2EE);
84 if (aspacked->charge() != 0) {
85 bool is_vertex_allowed =
false;
86 for (
const unsigned vtxtype : _miniAODVertexCodes) {
87 if (vtxtype == aspacked->fromPV()) {
88 is_vertex_allowed =
true;
92 result = result && (is_vertex_allowed);
94 result = result && (deltar2 > vetoConeSize2 && deltar2 < _coneSize2);
96 result = result && (deltar2 > vetoConeSize2 && deltar2 < _coneSize2);
98 throw cms::Exception(
"InvalidIsolationInput") <<
"The supplied candidate to be used as isolation " 99 <<
"was neither a reco::PFCandidate nor a pat::PackedCandidate!";
const std::string _isolateAgainst
~ElectronPFIsolationWithConeVeto() override
Destructor.
T const * get() const
Returns C++ pointer to the item.
edm::EDGetTokenT< reco::VertexCollection > _vtxToken
edm::Ptr< reco::GsfElectron > GsfElectronPtr
edm::Ptr< pat::PackedCandidate > PackedCandidatePtr
bool isInIsolationCone(const reco::CandidatePtr &physob, const reco::CandidatePtr &other) const final
ElectronPFIsolationWithConeVeto(const edm::ParameterSet &c)
bool isNonnull() const
Checks for non-null.
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
void setConsumes(edm::ConsumesCollector) override
const std::vector< unsigned > _miniAODVertexCodes
SuperClusterRef superCluster() const override
reference to a SuperCluster
#define DEFINE_EDM_PLUGIN(factory, type, name)
Power< A, B >::type pow(const A &a, const B &b)