16 , electronsToken_( iC.consumes< std::vector<
reco::GsfElectron > >( edm::InputTag(
"pixelMatchGsfElectrons" ) ) )
28 CLHEP::HepLorentzVector theElectronHLV(theElectron.
px(), theElectron.
py(), theElectron.
pz(), theElectron.
energy());
29 return this->
calculate(theElectronHLV, trackHandle, iEvent);
32 CLHEP::HepLorentzVector theMuonHLV(theMuon.
px(), theMuon.
py(), theMuon.
pz(), theMuon.
energy());
33 return this->
calculate(theMuonHLV, trackHandle, iEvent);
47 std::vector<reco::GsfElectron>
electrons = *electronsHandle;
49 std::vector<Electron> isoElectrons;
50 for (
size_t ie=0; ie<electrons.size(); ie++) {
52 if (anElectron.
pt() > 10 &&
54 isoElectrons.push_back(electrons[ie]);
58 std::vector<reco::CaloJet> theJets;
59 for (reco::CaloJetCollection::const_iterator itJet = jetColl.begin(); itJet != jetColl.end(); itJet++) {
61 for (
size_t ie = 0; ie < isoElectrons.size(); ie++) {
62 float dr2 =
::deltaR2(*itJet, isoElectrons[ie]);
63 if (dr2 < mindr2) mindr2 = dr2;
67 if (itJet->et() > 15 && mindr > 0.3) theJets.push_back(
reco::CaloJet(*itJet));
70 float isoAngle = 1000;
71 for (std::vector<reco::CaloJet>::const_iterator itJet = theJets.begin(); itJet != theJets.end(); itJet++) {
72 float curDR = this->
spaceAngle(aLepton, *itJet);
73 if (curDR < isoAngle) isoAngle = curDR;
virtual double energy() const GCC11_FINAL
energy
Jets made from CaloTowers.
TrackerIsolationPt trkIsolator_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
float spaceAngle(const CLHEP::HepLorentzVector &aLepton, const reco::CaloJet &aJet)
Sin< T >::type sin(const T &t)
virtual double theta() const GCC11_FINAL
momentum polar angle
virtual double pz() const GCC11_FINAL
z coordinate of momentum vector
virtual double py() const GCC11_FINAL
y coordinate of momentum vector
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
Cos< T >::type cos(const T &t)
edm::EDGetTokenT< reco::CaloJetCollection > jetToken_
virtual double px() const GCC11_FINAL
x coordinate of momentum vector
float calculate(const Electron &anElectron, const edm::Handle< edm::View< reco::Track > > &trackHandle, const edm::Event &iEvent)
~LeptonJetIsolationAngle()
double deltaR2(const Vector1 &v1, const Vector2 &v2)
edm::EDGetTokenT< std::vector< reco::GsfElectron > > electronsToken_
Analysis-level electron class.
T const * product() const
float calculate(const Electron &theElectron, const edm::View< reco::Track > &theTracks, float isoConeElectron=0.3) const
calculate the TrackIsoPt for the lepton object
LeptonJetIsolationAngle(edm::ConsumesCollector &&iC)
virtual float pt() const GCC11_FINAL
transverse momentum
Analysis-level muon class.
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects