87 var[kSegmentCompatibility] =
muon.segmentCompatibility();
88 var[kMiniRelIsoCharged] =
muon.miniPFIsolation().chargedHadronIso();
89 var[kMiniRelIsoNeutral] =
muon.miniPFIsolation().neutralHadronIso();
95 var[kSip] = edB3D>0?fabs(dB3D/edB3D):0.0;
96 var[kLog_abs_dxyBS] = dB2D>0?
log(dB2D):0;
97 var[kLog_abs_dzPV] = dz>0?
log(dz):0;
101 double jecL1L2L3Res = 1.;
105 double chIso =
muon.pfIsolationR04().sumChargedHadronPt;
106 double nIso =
muon.pfIsolationR04().sumNeutralHadronEt;
107 double phoIso =
muon.pfIsolationR04().sumPhotonEt;
108 double puIso =
muon.pfIsolationR04().sumPUPt;
109 double dbCorrectedIsolation = chIso +
std::max( nIso + phoIso - .5*puIso, 0. ) ;
110 double dbCorrectedRelIso = dbCorrectedIsolation/
muon.pt();
112 var[kJetPtRatio] = 1./(1+dbCorrectedRelIso);
114 var[kJetBTagCSV] = -999;
115 var[kJetNDauCharged] = -1;
118 for (
const auto& tagI: bTags){
121 if(dr > minDr)
continue;
127 if (correctorL1 && correctorL1L2L3Res){
128 jecL1L2L3Res = correctorL1L2L3Res->
correction(*(tagI.first));
129 jecL1 = correctorL1->
correction(*(tagI.first));
133 var[kJetBTagCSV] = tagI.second;
134 var[kJetNDauCharged] = 0;
135 for (
auto jet: tagI.first->getJetConstituentsQuick()){
137 if (pfcand==
nullptr)
throw cms::Exception(
"ConfigurationError") <<
"Cannot get jet constituents";
138 if (pfcand->
charge()==0)
continue;
140 if (!bestTrackPtr)
continue;
142 if (bestTrackPtr->pt()<1.)
continue;
143 if (bestTrackPtr->hitPattern().numberOfValidHits()<8)
continue;
144 if (bestTrackPtr->hitPattern().numberOfValidPixelHits()<2)
continue;
145 if (bestTrackPtr->normalizedChi2()>=5)
continue;
147 if (std::fabs(bestTrackPtr->dxy(vertex.
position())) > 0.2)
continue;
148 if (std::fabs(bestTrackPtr->dz(vertex.
position())) > 17)
continue;
149 var[kJetNDauCharged]++;
153 if ((jetP4-muP4).Rho()<0.0001){
155 var[kJetPtRatio] = 1;
158 jetP4 *= jecL1L2L3Res;
161 var[kJetPtRatio] = muP4.pt()/jetP4.pt();
167 if (
var[kJetPtRatio] > 1.5)
var[kJetPtRatio] = 1.5;
168 if (
var[kJetBTagCSV] < 0)
var[kJetBTagCSV] = 0;
169 jetPtRatio =
var[kJetPtRatio];
170 jetPtRel =
var[kJetPtRel];
example_track example_track const char *const kPt
int charge() const final
electric charge
double correction(const LorentzVector &fJet) const
get correction using Jet information only
const Point & position() const
position
double deltaR(double eta1, double eta2, double phi1, double phi2)
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Particle reconstructed by the particle flow algorithm.
std::unique_ptr< const GBRForest > gbrForest_
const reco::Track * bestTrack() const override