74 unsigned int nJet = srcJet->size();
75 unsigned int nEle = srcEle->size();
76 unsigned int nMu = srcMu->size();
78 std::vector<float> vlsf3;
79 std::vector<int> vmuIdx3SJ;
80 std::vector<int> veleIdx3SJ;
82 int ele_pfmatch_index = -1;
83 int mu_pfmatch_index = -1;
86 for (
unsigned int ij = 0; ij < nJet; ij++) {
87 const pat::Jet &itJet = (*srcJet)[ij];
90 std::vector<fastjet::PseudoJet> lClusterParticles;
91 float lepPt(-1), lepEta(-1), lepPhi(-1);
94 fastjet::PseudoJet
p(
d->px(),
d->py(),
d->pz(),
d->energy());
95 lClusterParticles.emplace_back(
p);
99 double dRmin(0.8), dRele(999), dRmu(999), dRtmp(999);
100 for (
unsigned int il(0); il < nEle; il++) {
101 auto itLep = srcEle->ptrAt(il);
104 if (dRtmp < dRmin && dRtmp < dRele && itLep->
pt() > lepPt) {
106 lepEta = itLep->eta();
107 lepPhi = itLep->phi();
109 ele_pfmatch_index = il;
115 for (
unsigned int il(0); il < nMu; il++) {
116 auto itLep = srcMu->ptrAt(il);
119 if (dRtmp < dRmin && dRtmp < dRele && dRtmp < dRmu && itLep->
pt() > lepPt) {
121 lepEta = itLep->eta();
122 lepPhi = itLep->phi();
124 ele_pfmatch_index = -1;
125 mu_pfmatch_index = il;
132 std::vector<fastjet::PseudoJet> psub_3;
133 std::sort(lClusterParticles.begin(), lClusterParticles.end(),
orderPseudoJet);
134 auto lsf_3 =
calculateLSF(lClusterParticles, psub_3, lepPt, lepEta, lepPhi, lepId, 2.0, 3);
135 vlsf3.push_back(std::get<0>(lsf_3));
136 veleIdx3SJ.push_back(ele_pfmatch_index);
137 vmuIdx3SJ.push_back(mu_pfmatch_index);
143 fillerlsf3.insert(srcJet, vlsf3.begin(), vlsf3.end());
149 fillermuIdx3SJ.insert(srcJet, vmuIdx3SJ.begin(), vmuIdx3SJ.end());
150 fillermuIdx3SJ.fill();
155 fillereleIdx3SJ.insert(srcJet, veleIdx3SJ.begin(), veleIdx3SJ.end());
156 fillereleIdx3SJ.fill();
double eta() const final
momentum pseudorapidity
edm::EDGetTokenT< edm::View< pat::Electron > > srcEle_
double pt() const final
transverse momentum
edm::EDGetTokenT< edm::View< pat::Jet > > srcJet_
bool matchByCommonSourceCandidatePtr(const C1 &c1, const C2 &c2)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Analysis-level calorimeter jet class.
static bool orderPseudoJet(fastjet::PseudoJet j1, fastjet::PseudoJet j2)
std::tuple< float, float > calculateLSF(std::vector< fastjet::PseudoJet > iCParticles, std::vector< fastjet::PseudoJet > &ljets, float ilPt, float ilEta, float ilPhi, int ilId, double dr, int nsj) const
edm::EDGetTokenT< edm::View< pat::Muon > > srcMu_
const reco::CompositePtrCandidate::daughters & daughterPtrVector() const override
references to daughtes
double phi() const final
momentum azimuthal angle