CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Private Attributes
ElectronPFIsolationWithMapBasedVeto Class Reference
Inheritance diagram for ElectronPFIsolationWithMapBasedVeto:
citk::IsolationConeDefinitionBase

Public Member Functions

 ElectronPFIsolationWithMapBasedVeto (const edm::ParameterSet &c)
 
 ElectronPFIsolationWithMapBasedVeto (const ElectronPFIsolationWithMapBasedVeto &)=delete
 
void getEventInfo (const edm::Event &iEvent) override
 
bool isInIsolationCone (const reco::CandidatePtr &photon, const reco::CandidatePtr &other) const final
 
ElectronPFIsolationWithMapBasedVetooperator= (const ElectronPFIsolationWithMapBasedVeto &)=delete
 
void setConsumes (edm::ConsumesCollector iC) override
 
 ~ElectronPFIsolationWithMapBasedVeto () override
 Destructor. More...
 
- Public Member Functions inherited from citk::IsolationConeDefinitionBase
const std::string & additionalCode () const
 
virtual void getEventSetupInfo (const edm::EventSetup &)
 
 IsolationConeDefinitionBase (const edm::ParameterSet &c)
 
 IsolationConeDefinitionBase (const IsolationConeDefinitionBase &)=delete
 
const std::string & name () const
 
IsolationConeDefinitionBaseoperator= (const IsolationConeDefinitionBase &)=delete
 
virtual ~IsolationConeDefinitionBase ()
 Destructor. More...
 

Public Attributes

edm::Handle< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationMap
 
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationToken_
 

Private Attributes

const std::string _isolateAgainst
 
const std::vector< unsigned > _miniAODVertexCodes
 
const edm::InputTag _particleBasedIsolation
 
const std::string _vertexCollection
 

Additional Inherited Members

- Protected Attributes inherited from citk::IsolationConeDefinitionBase
std::string _additionalCode
 
const float _coneSize2
 

Detailed Description

Definition at line 69 of file ElectronPFIsolationWithMapBasedVeto.cc.

Constructor & Destructor Documentation

ElectronPFIsolationWithMapBasedVeto::ElectronPFIsolationWithMapBasedVeto ( const edm::ParameterSet c)
inline

Definition at line 71 of file ElectronPFIsolationWithMapBasedVeto.cc.

References trackingPlots::other, and muons2muons_cfi::photon.

71  :
73  _isolateAgainst(c.getParameter<std::string>("isolateAgainst")), //isolate against either h+, h0 or gamma
74  _miniAODVertexCodes(c.getParameter<std::vector<unsigned> >("miniAODVertexCodes")), //quality flags to be used for association with the vertex configurable, the vertex can be chosen
75  _particleBasedIsolation(c.getParameter<edm::InputTag>("particleBasedIsolation")){} // particle based isolation map (used for footprint removal)
T getParameter(std::string const &) const
ElectronPFIsolationWithMapBasedVeto::ElectronPFIsolationWithMapBasedVeto ( const ElectronPFIsolationWithMapBasedVeto )
delete
ElectronPFIsolationWithMapBasedVeto::~ElectronPFIsolationWithMapBasedVeto ( )
inlineoverride

Destructor.

Definition at line 101 of file ElectronPFIsolationWithMapBasedVeto.cc.

References AlCaHLTBitMon_QueryRunRegistry::string.

101 {};

Member Function Documentation

void ElectronPFIsolationWithMapBasedVeto::getEventInfo ( const edm::Event iEvent)
inlineoverridevirtual

Reimplemented from citk::IsolationConeDefinitionBase.

Definition at line 88 of file ElectronPFIsolationWithMapBasedVeto.cc.

References edm::Event::getByToken().

89  {
91  };
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
edm::Handle< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationMap
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationToken_
bool ElectronPFIsolationWithMapBasedVeto::isInIsolationCone ( const reco::CandidatePtr photon,
const reco::CandidatePtr other 
) const
finalvirtual

Implements citk::IsolationConeDefinitionBase.

Definition at line 119 of file ElectronPFIsolationWithMapBasedVeto.cc.

References pat::PackedCandidate::charge(), reco::deltaR2(), Exception, pat::PackedCandidate::fromPV(), edm::Ptr< T >::get(), and mps_fire::result.

119  {
120 
121  //convert the electron and candidate objects to the corresponding pat or reco objects. What is used depends on what is user running on: miniAOD or AOD
122  pat::patElectronPtr aspat_electronptr(electron);
123 
124  pat::PackedCandidatePtr aspacked(pfCandidate);
125  reco::PFCandidatePtr aspf(pfCandidate);
126 
127 
128  bool inFootprint = false;
129  bool result = true;
130  const float deltar2 = reco::deltaR2(*electron,*pfCandidate); //calculate deltaR2 distance between PFCandidate and photon
131 
132  // dealing here with patObjects: miniAOD case
133  if ( aspacked.get() )
134  {
135  inFootprint = isInFootprint(aspat_electronptr ->associatedPackedPFCandidates(),aspacked);
136 
137  //checking if the charged candidates come from the appropriate vertex
138  if( aspacked->charge() != 0 )
139  {
140  bool is_vertex_allowed = false;
141  for( const unsigned vtxtype : _miniAODVertexCodes )
142  {
143  if( vtxtype == aspacked->fromPV() ) {
144  is_vertex_allowed = true;
145  break;
146  }
147  }
148 
149  result &= (is_vertex_allowed);
150  }
151  //return true if the candidate is inside the cone and not in the footprint
152  result &= deltar2 < _coneSize2 && (!inFootprint);
153  }
154 
155  // dealing here with recoObjects: AOD case
156  else if ( aspf.get())
157  {
158  inFootprint = isInFootprintAlternative((*particleBasedIsolationMap)[electron], pfCandidate);
159  //return true if the candidate is inside the cone and not in the footprint
160  result &= deltar2 < _coneSize2 && (!inFootprint);
161  }
162 
163  // throw exception if it is not a patObject or recoObject
164  else {
165  throw cms::Exception("InvalidIsolationInput")
166  << "The supplied candidate to be used as isolation "
167  << "was neither a reco::Photon nor a pat::Photon!";
168  }
169 
170  return result;
171 }
edm::Handle< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationMap
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
ElectronPFIsolationWithMapBasedVeto& ElectronPFIsolationWithMapBasedVeto::operator= ( const ElectronPFIsolationWithMapBasedVeto )
delete
void ElectronPFIsolationWithMapBasedVeto::setConsumes ( edm::ConsumesCollector  iC)
inlineoverridevirtual

Implements citk::IsolationConeDefinitionBase.

Definition at line 95 of file ElectronPFIsolationWithMapBasedVeto.cc.

References edm::ConsumesCollector::mayConsume().

96  {
98  }
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIsolationToken_

Member Data Documentation

const std::string ElectronPFIsolationWithMapBasedVeto::_isolateAgainst
private

Definition at line 101 of file ElectronPFIsolationWithMapBasedVeto.cc.

const std::vector<unsigned> ElectronPFIsolationWithMapBasedVeto::_miniAODVertexCodes
private

Definition at line 106 of file ElectronPFIsolationWithMapBasedVeto.cc.

const edm::InputTag ElectronPFIsolationWithMapBasedVeto::_particleBasedIsolation
private

Definition at line 107 of file ElectronPFIsolationWithMapBasedVeto.cc.

const std::string ElectronPFIsolationWithMapBasedVeto::_vertexCollection
private

Definition at line 101 of file ElectronPFIsolationWithMapBasedVeto.cc.

edm::Handle< edm::ValueMap<std::vector<reco::PFCandidateRef > > > ElectronPFIsolationWithMapBasedVeto::particleBasedIsolationMap

Definition at line 85 of file ElectronPFIsolationWithMapBasedVeto.cc.

edm::EDGetTokenT<edm::ValueMap<std::vector<reco::PFCandidateRef > > > ElectronPFIsolationWithMapBasedVeto::particleBasedIsolationToken_

Definition at line 86 of file ElectronPFIsolationWithMapBasedVeto.cc.