37 ~ParticleNetFeatureEvaluator()
override;
47 const std::vector<math::XYZTLorentzVector> &tau_pfcandidates,
175 "jet_pfcand_energy_log",
181 "jet_pfcand_nlostinnerhits",
182 "jet_pfcand_track_chi2",
183 "jet_pfcand_track_qual",
189 "jet_pfcand_pperp_ratio",
190 "jet_pfcand_ppara_ratio",
191 "jet_pfcand_trackjet_d3d",
192 "jet_pfcand_trackjet_d3dsig",
193 "jet_pfcand_trackjet_dist",
195 "jet_pfcand_npixhits",
196 "jet_pfcand_nstriphits",
197 "jet_pfcand_trackjet_decayL",
199 "jet_pfcand_calofraction",
200 "jet_pfcand_hcalfraction",
202 "jet_pfcand_muon_id",
203 "jet_pfcand_muon_isglobal",
204 "jet_pfcand_muon_segcomp",
205 "jet_pfcand_muon_chi2",
206 "jet_pfcand_muon_nvalidhit",
207 "jet_pfcand_muon_nstation",
208 "jet_pfcand_electron_detaIn",
209 "jet_pfcand_electron_dphiIn",
210 "jet_pfcand_electron_sigIetaIeta",
211 "jet_pfcand_electron_sigIphiIphi",
212 "jet_pfcand_electron_r9",
213 "jet_pfcand_electron_convProb",
214 "jet_pfcand_photon_sigIetaIeta",
215 "jet_pfcand_photon_r9",
216 "jet_pfcand_photon_eVeto",
217 "jet_pfcand_tau_signal",
235 "jet_losttrack_deta",
236 "jet_losttrack_dphi",
237 "jet_losttrack_charge",
238 "jet_losttrack_frompv",
239 "jet_losttrack_track_chi2",
240 "jet_losttrack_track_qual",
243 "jet_losttrack_dzsig",
244 "jet_losttrack_dxysig",
245 "jet_losttrack_etarel",
246 "jet_losttrack_trackjet_d3d",
247 "jet_losttrack_trackjet_d3dsig",
248 "jet_losttrack_trackjet_dist",
249 "jet_losttrack_trackjet_decayL",
250 "jet_losttrack_npixhits",
251 "jet_losttrack_nstriphits",
255 : jet_radius_(iConfig.getParameter<double>(
"jet_radius")),
256 min_jet_pt_(iConfig.getParameter<double>(
"min_jet_pt")),
257 max_jet_eta_(iConfig.getParameter<double>(
"max_jet_eta")),
258 min_jet_eta_(iConfig.getParameter<double>(
"min_jet_eta")),
259 min_pt_for_track_properties_(iConfig.getParameter<double>(
"min_pt_for_track_properties")),
260 min_pt_for_pfcandidates_(iConfig.getParameter<double>(
"min_pt_for_pfcandidates")),
261 min_pt_for_losttrack_(iConfig.getParameter<double>(
"min_pt_for_losttrack")),
262 max_dr_for_losttrack_(iConfig.getParameter<double>(
"max_dr_for_losttrack")),
263 min_pt_for_taus_(iConfig.getParameter<double>(
"min_pt_for_taus")),
264 max_eta_for_taus_(iConfig.getParameter<double>(
"max_eta_for_taus")),
265 include_neutrals_(iConfig.getParameter<
bool>(
"include_neutrals")),
266 flip_ip_sign_(iConfig.getParameter<
bool>(
"flip_ip_sign")),
267 max_sip3dsig_for_flip_(iConfig.getParameter<double>(
"max_sip3dsig_for_flip")),
276 iConfig.getParameter<
edm::
InputTag>(
"secondary_vertices"))),
278 track_builder_token_(
280 produces<std::vector<reco::DeepBoostedJetTagInfo>>();
288 desc.add<
double>(
"jet_radius", 0.8);
289 desc.add<
double>(
"min_jet_pt", 150);
290 desc.add<
double>(
"max_jet_eta", 99);
291 desc.add<
double>(
"min_jet_eta", 0.0);
292 desc.add<
double>(
"min_pt_for_track_properties", -1);
293 desc.add<
double>(
"min_pt_for_pfcandidates", -1);
294 desc.add<
double>(
"min_pt_for_losttrack", 1);
295 desc.add<
double>(
"max_dr_for_losttrack", 0.4);
296 desc.add<
double>(
"min_pt_for_taus", 20.);
297 desc.add<
double>(
"max_eta_for_taus", 2.5);
298 desc.add<
bool>(
"include_neutrals",
true);
299 desc.add<
bool>(
"flip_ip_sign",
false);
300 desc.add<
double>(
"max_sip3dsig_for_flip", 99999);
310 descriptions.
add(
"ParticleNetFeatureEvaluator",
desc);
315 auto output_tag_infos = std::make_unique<std::vector<reco::DeepBoostedJetTagInfo>>();
327 iEvent.getByToken(losttrack_token_, losttracks_);
329 iEvent.getByToken(vtx_token_, vtxs_);
330 if (vtxs_->empty()) {
338 iEvent.getByToken(sv_token_, svs_);
340 iEvent.getByToken(pfcand_token_, pfcands_);
342 track_builder_ = iSetup.
getHandle(track_builder_token_);
345 std::vector<math::XYZTLorentzVector> tau_pfcandidates;
346 for (
size_t itau = 0; itau <
taus->size(); itau++) {
347 if (
taus->at(itau).pt() < min_pt_for_taus_)
349 if (fabs(
taus->at(itau).eta()) > max_eta_for_taus_)
351 for (
unsigned ipart = 0; ipart <
taus->at(itau).signalCands().size(); ipart++) {
354 tau_pfcandidates.push_back(
pfcand->p4());
359 for (std::size_t jet_n = 0; jet_n <
jets->size(); jet_n++) {
360 const auto &
jet = (*jets)[jet_n];
365 for (
const auto &
name : particle_features_)
367 for (
const auto &
name : sv_features_)
371 bool fill_vars =
true;
372 if ((
jet.pt() < min_jet_pt_ and
373 dynamic_cast<const pat::Jet *
>(&
jet)->correctedJet(
"Uncorrected").
pt() < min_jet_pt_)
or 376 if (
jet.numberOfDaughters() == 0)
384 features.check_consistency(particle_features_);
385 features.check_consistency(sv_features_);
386 features.check_consistency(losttrack_features_);
390 output_tag_infos->emplace_back(
features, jet_ref);
398 return track !=
nullptr and
track->pt() > min_pt_for_track_properties_;
403 const std::vector<math::XYZTLorentzVector> &tau_pfcandidates,
409 TVector3 jet_direction(
jet.momentum().Unit().x(),
jet.momentum().Unit().y(),
jet.momentum().Unit().z());
417 std::vector<const pat::PackedCandidate *>
daughters;
418 for (
const auto &dau :
jet.daughterPtrVector()) {
424 if (
cand->pt() < min_pt_for_pfcandidates_)
427 if (!include_neutrals_ and (
cand->charge() == 0
or cand->pt() < min_pt_for_track_properties_))
437 for (
const auto &
name : particle_features_)
442 if (!include_neutrals_ and !useTrackProperties(
cand))
446 auto candP4 =
cand->p4();
447 auto candP3 =
cand->momentum();
451 if (useTrackProperties(
cand))
458 TVector3 cand_direction(candP3.x(), candP3.y(), candP3.z());
461 if (flip_ip_sign_ &&
track) {
468 float ip_sign = flip_ip_sign_ ? -1.f : 1.f;
472 fts.
fill(
"jet_pfcand_eta", candP4.eta());
473 fts.
fill(
"jet_pfcand_deta", jet_direction.Eta() - cand_direction.Eta());
474 fts.
fill(
"jet_pfcand_dphi", jet_direction.DeltaPhi(cand_direction));
475 fts.
fill(
"jet_pfcand_charge",
cand->charge());
476 fts.
fill(
"jet_pfcand_etarel",
478 fts.
fill(
"jet_pfcand_pperp_ratio",
479 std::isnan(jet_direction.Perp(cand_direction) / cand_direction.Mag())
481 : jet_direction.Perp(cand_direction) / cand_direction.Mag());
482 fts.
fill(
"jet_pfcand_ppara_ratio",
483 std::isnan(jet_direction.Dot(cand_direction) / cand_direction.Mag())
485 : jet_direction.Dot(cand_direction) / cand_direction.Mag());
486 fts.
fill(
"jet_pfcand_frompv",
cand->fromPV());
489 fts.
fill(
"jet_pfcand_puppiw",
cand->puppiWeight());
490 fts.
fill(
"jet_pfcand_nlostinnerhits",
cand->lostInnerHits());
491 fts.
fill(
"jet_pfcand_nhits",
cand->numberOfHits());
492 fts.
fill(
"jet_pfcand_npixhits",
cand->numberOfPixelHits());
493 fts.
fill(
"jet_pfcand_nstriphits",
cand->stripLayersWithMeasurement());
495 if (
abs(
cand->pdgId()) == 11 and
cand->charge() != 0)
496 fts.
fill(
"jet_pfcand_id", 0);
497 else if (
abs(
cand->pdgId()) == 13 and
cand->charge() != 0)
498 fts.
fill(
"jet_pfcand_id", 1);
499 else if (
abs(
cand->pdgId()) == 22 and
cand->charge() == 0)
500 fts.
fill(
"jet_pfcand_id", 2);
502 fts.
fill(
"jet_pfcand_id", 3);
503 else if (
abs(
cand->pdgId()) != 11 and
abs(
cand->pdgId()) != 13 and
cand->charge() != 0)
504 fts.
fill(
"jet_pfcand_id", 4);
505 else if (
cand->charge() == 0 and
abs(
cand->pdgId()) == 1)
506 fts.
fill(
"jet_pfcand_id", 5);
507 else if (
cand->charge() == 0 and
abs(
cand->pdgId()) == 2)
508 fts.
fill(
"jet_pfcand_id", 6);
510 fts.
fill(
"jet_pfcand_id", -1);
514 fts.
fill(
"pfcand_mask", 1);
520 fts.
fill(
"jet_pfcand_dxysig",
523 : fabs(
cand->dxy(pv_ass_pos)) /
cand->dxyError());
524 fts.
fill(
"jet_pfcand_track_chi2",
track->normalizedChi2());
525 fts.
fill(
"jet_pfcand_track_qual",
track->qualityMask());
535 fts.
fill(
"jet_pfcand_trackjet_d3dsig",
540 fts.
fill(
"jet_pfcand_dzsig", 0);
541 fts.
fill(
"jet_pfcand_dxysig", 0);
542 fts.
fill(
"jet_pfcand_track_chi2", 0);
543 fts.
fill(
"jet_pfcand_track_qual", 0);
544 fts.
fill(
"jet_pfcand_trackjet_d3d", 0);
545 fts.
fill(
"jet_pfcand_trackjet_d3dsig", 0);
546 fts.
fill(
"jet_pfcand_trackjet_dist", 0);
547 fts.
fill(
"jet_pfcand_trackjet_decayL", 0);
551 if (
abs(
cand->pdgId()) == 13) {
552 std::vector<unsigned int> muonsToSkip;
555 for (
size_t i = 0;
i <
muons.size();
i++) {
556 if (not
muons[
i].isPFMuon())
558 if (
std::find(muonsToSkip.begin(), muonsToSkip.end(),
i) != muonsToSkip.end())
564 muonsToSkip.push_back(
i);
579 fts.
fill(
"jet_pfcand_muon_id", muonId);
580 fts.
fill(
"jet_pfcand_muon_isglobal",
muons[ipos].isGlobalMuon());
581 fts.
fill(
"jet_pfcand_muon_chi2",
583 fts.
fill(
"jet_pfcand_muon_nvalidhit",
585 fts.
fill(
"jet_pfcand_muon_nstation",
muons[ipos].numberOfMatchedStations());
588 fts.
fill(
"jet_pfcand_muon_id", 0);
589 fts.
fill(
"jet_pfcand_muon_isglobal", 0);
590 fts.
fill(
"jet_pfcand_muon_chi2", 0);
591 fts.
fill(
"jet_pfcand_muon_nvalidhit", 0);
592 fts.
fill(
"jet_pfcand_muon_nstation", 0);
593 fts.
fill(
"jet_pfcand_muon_segcomp", 0);
596 fts.
fill(
"jet_pfcand_muon_id", 0);
597 fts.
fill(
"jet_pfcand_muon_isglobal", 0);
598 fts.
fill(
"jet_pfcand_muon_chi2", 0);
599 fts.
fill(
"jet_pfcand_muon_nvalidhit", 0);
600 fts.
fill(
"jet_pfcand_muon_nstation", 0);
601 fts.
fill(
"jet_pfcand_muon_segcomp", 0);
605 if (
abs(
cand->pdgId()) == 11) {
609 for (
const auto &element :
electrons[
i].associatedPackedPFCandidates()) {
610 if (
abs(element->pdgId()) == 11 and element->p4() == candP4)
616 fts.
fill(
"jet_pfcand_electron_detaIn",
619 :
electrons[ipos].deltaEtaSuperClusterTrackAtVtx());
620 fts.
fill(
"jet_pfcand_electron_dphiIn",
623 :
electrons[ipos].deltaPhiSuperClusterTrackAtVtx());
624 fts.
fill(
"jet_pfcand_electron_sigIetaIeta",
626 fts.
fill(
"jet_pfcand_electron_sigIphiIphi",
629 fts.
fill(
"jet_pfcand_electron_convProb",
632 fts.
fill(
"jet_pfcand_electron_detaIn", 0);
633 fts.
fill(
"jet_pfcand_electron_dphiIn", 0);
634 fts.
fill(
"jet_pfcand_electron_sigIetaIeta", 0);
635 fts.
fill(
"jet_pfcand_electron_sigIphiIphi", 0);
636 fts.
fill(
"jet_pfcand_electron_r9", 0);
637 fts.
fill(
"jet_pfcand_electron_convProb", 0);
640 fts.
fill(
"jet_pfcand_electron_detaIn", 0);
641 fts.
fill(
"jet_pfcand_electron_dphiIn", 0);
642 fts.
fill(
"jet_pfcand_electron_sigIetaIeta", 0);
643 fts.
fill(
"jet_pfcand_electron_sigIphiIphi", 0);
644 fts.
fill(
"jet_pfcand_electron_r9", 0);
645 fts.
fill(
"jet_pfcand_electron_convProb", 0);
649 if (
abs(
cand->pdgId()) == 22) {
652 for (
const auto &element :
photons[
i].associatedPackedPFCandidates()) {
653 if (
abs(element->pdgId()) == 22 and element->p4() == candP4)
658 fts.
fill(
"jet_pfcand_photon_sigIetaIeta",
661 fts.
fill(
"jet_pfcand_photon_eVeto",
photons[ipos].passElectronVeto());
663 fts.
fill(
"jet_pfcand_photon_sigIetaIeta", 0);
664 fts.
fill(
"jet_pfcand_photon_r9", 0);
665 fts.
fill(
"jet_pfcand_photon_eVeto", 0);
668 fts.
fill(
"jet_pfcand_photon_sigIetaIeta", 0);
669 fts.
fill(
"jet_pfcand_photon_r9", 0);
670 fts.
fill(
"jet_pfcand_photon_eVeto", 0);
674 if (
std::find(tau_pfcandidates.begin(), tau_pfcandidates.end(),
cand->p4()) != tau_pfcandidates.end())
675 fts.
fill(
"jet_pfcand_tau_signal", 1);
677 fts.
fill(
"jet_pfcand_tau_signal", 0);
683 std::vector<const reco::VertexCompositePtrCandidate *> jetSVs;
684 for (
const auto &
sv : *svs_) {
686 jetSVs.push_back(&
sv);
698 for (
const auto &
name : sv_features_)
703 float ip_sign = flip_ip_sign_ ? -1.f : 1.f;
705 for (
const auto *
sv : jetSVs) {
706 fts.
fill(
"sv_mask", 1);
708 fts.
fill(
"jet_sv_eta",
sv->eta());
709 fts.
fill(
"jet_sv_mass",
sv->mass());
710 fts.
fill(
"jet_sv_deta",
sv->eta() -
jet.eta());
711 fts.
fill(
"jet_sv_dphi",
sv->phi() -
jet.phi());
712 fts.
fill(
"jet_sv_ntrack",
sv->numberOfDaughters());
713 fts.
fill(
"jet_sv_chi2",
sv->vertexNormalizedChi2());
716 sv->fillVertexCovariance(csv);
720 auto valxy =
dxy.signedDistance(svtx, *pv_, jet_global_vec);
721 fts.
fill(
"jet_sv_dxy", ip_sign * (
std::isnan(valxy.value()) ? 0 : valxy.value()));
722 fts.
fill(
"jet_sv_dxysig",
std::isnan(fabs(valxy.significance())) ? 0 : fabs(valxy.significance()));
726 fts.
fill(
"jet_sv_d3d", ip_sign * (
std::isnan(val3d.value()) ? 0 : val3d.value()));
727 fts.
fill(
"jet_sv_d3dsig",
std::isnan(fabs(val3d.significance())) ? 0 : fabs(val3d.significance()));
733 TVector3 jet_direction(
jet.momentum().Unit().x(),
jet.momentum().Unit().y(),
jet.momentum().Unit().z());
737 std::vector<pat::PackedCandidate> jet_lost_tracks;
738 for (
size_t itrk = 0; itrk < losttracks_->size(); itrk++) {
739 if (
reco::deltaR(losttracks_->at(itrk).p4(),
jet.p4()) < max_dr_for_losttrack_ and
740 losttracks_->at(itrk).pt() > min_pt_for_losttrack_) {
741 jet_lost_tracks.push_back(losttracks_->at(itrk));
745 jet_lost_tracks.begin(), jet_lost_tracks.end(), [](
const auto &
a,
const auto &
b) {
return a.pt() >
b.pt(); });
748 for (
const auto &
name : losttrack_features_)
754 for (
auto const <rack : jet_lost_tracks) {
765 float ip_sign = flip_ip_sign_ ? -1.f : 1.f;
768 fts.
fill(
"jet_losttrack_eta", ltrack.eta());
769 fts.
fill(
"jet_losttrack_charge", ltrack.charge());
770 fts.
fill(
"jet_losttrack_frompv", ltrack.fromPV());
771 fts.
fill(
"jet_losttrack_dz", ip_sign * (
std::isnan(ltrack.dz(pv_ass_pos)) ? 0 : ltrack.dz(pv_ass_pos)));
772 fts.
fill(
"jet_losttrack_dxy", ip_sign * (
std::isnan(ltrack.dxy(pv_ass_pos)) ? 0 : ltrack.dxy(pv_ass_pos)));
773 fts.
fill(
"jet_losttrack_npixhits", ltrack.numberOfPixelHits());
774 fts.
fill(
"jet_losttrack_nstriphits", ltrack.stripLayersWithMeasurement());
776 TVector3 ltrack_momentum(ltrack.momentum().x(), ltrack.momentum().y(), ltrack.momentum().z());
777 fts.
fill(
"jet_losttrack_deta", jet_direction.Eta() - ltrack_momentum.Eta());
778 fts.
fill(
"jet_losttrack_dphi", jet_direction.DeltaPhi(ltrack_momentum));
779 fts.
fill(
"jet_losttrack_etarel",
785 fts.
fill(
"jet_losttrack_track_chi2",
track->normalizedChi2());
786 fts.
fill(
"jet_losttrack_track_qual",
track->qualityMask());
787 fts.
fill(
"jet_losttrack_dxysig",
788 std::isnan(fabs(ltrack.dxy(pv_ass_pos)) / ltrack.dxyError())
790 : fabs(ltrack.dxy(pv_ass_pos)) / ltrack.dxyError());
791 fts.
fill(
"jet_losttrack_dzsig",
792 std::isnan(fabs(ltrack.dz(pv_ass_pos)) / ltrack.dzError())
794 : fabs(ltrack.dz(pv_ass_pos)) / ltrack.dzError());
802 fts.
fill(
"jet_losttrack_trackjet_d3dsig",
807 fts.
fill(
"jet_losttrack_track_chi2", 0);
808 fts.
fill(
"jet_losttrack_track_qual", 0);
809 fts.
fill(
"jet_losttrack_dxysig", 0);
810 fts.
fill(
"jet_losttrack_dzsig", 0);
811 fts.
fill(
"jet_losttrack_trackjet_d3d", 0);
812 fts.
fill(
"jet_losttrack_trackjet_d3dsig", 0);
813 fts.
fill(
"jet_losttrack_trackjet_dist", 0);
814 fts.
fill(
"jet_losttrack_trackjet_decayL", 0);
817 fts.
fill(
"lt_mask", 1);
edm::Handle< reco::VertexCompositePtrCandidateCollection > svs_
std::vector< float > jet_sv_eta
std::vector< float > jet_sv_pt_log
std::vector< float > jet_pfcand_track_chi2
std::vector< float > jet_losttrack_dxy
std::vector< float > jet_pfcand_electron_r9
std::vector< float > jet_losttrack_trackjet_dist
std::vector< float > jet_sv_dxy
std::vector< float > jet_pfcand_pperp_ratio
double pt() const final
transverse momentum
const double min_pt_for_losttrack_
std::vector< float > jet_losttrack_pt_log
std::vector< float > jet_pfcand_dphi
edm::Handle< reco::VertexCollection > vtxs_
Base class for all types of Jets.
double etaRel(const math::XYZVector &dir, const math::XYZVector &track)
void beginStream(edm::StreamID) override
std::vector< float > jet_pfcand_hcalfraction
edm::EDGetTokenT< pat::ElectronCollection > electron_token_
std::vector< float > jet_pfcand_electron_sigIetaIeta
std::vector< pat::PackedCandidate > PackedCandidateCollection
std::vector< float > jet_sv_d3d
std::vector< float > jet_losttrack_etarel
edm::Handle< edm::View< reco::Candidate > > pfcands_
std::vector< float > jet_losttrack_npixhits
std::vector< Tau > TauCollection
std::vector< float > jet_pfcand_nstriphits
std::vector< float > jet_losttrack_trackjet_d3dsig
edm::ESHandle< TransientTrackBuilder > track_builder_
~ParticleNetFeatureEvaluator() override
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< float > jet_pfcand_electron_detaIn
std::vector< Vertex > VertexCollection
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
std::vector< float > jet_losttrack_track_chi2
edm::EDGetTokenT< pat::TauCollection > tau_token_
std::vector< float > jet_pfcand_dxy
math::Error< dimension >::type CovarianceMatrix
covariance error matrix (3x3)
std::vector< VertexCompositePtrCandidate > VertexCompositePtrCandidateCollection
collection of Candidate objects
std::vector< float > jet_sv_mass
std::vector< float > jet_pfcand_id
std::vector< Muon > MuonCollection
collection of Muon objects
const double min_pt_for_taus_
std::vector< float > jet_pfcand_trackjet_dist
edm::EDGetTokenT< pat::MuonCollection > muon_token_
static const std::vector< std::string > particle_features_
edm::EDGetTokenT< pat::PackedCandidateCollection > losttrack_token_
std::vector< Electron > ElectronCollection
std::vector< float > jet_pfcand_muon_nvalidhit
std::vector< float > jet_losttrack_dz
void reserve(const std::string &name, unsigned capacity)
edm::Handle< pat::PackedCandidateCollection > losttracks_
std::vector< float > jet_sv_dphi
std::vector< float > jet_pfcand_etarel
std::vector< float > features(const reco::PreId &ecal, const reco::PreId &hcal, double rho, const reco::BeamSpot &spot, noZS::EcalClusterLazyTools &ecalTools)
std::vector< float > jet_losttrack_trackjet_decayL
std::vector< float > jet_losttrack_charge
std::vector< float > jet_pfcand_photon_sigIetaIeta
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
edm::EDGetTokenT< edm::View< reco::Jet > > jet_token_
static const std::vector< std::string > losttrack_features_
const double min_pt_for_pfcandidates_
Abs< T >::type abs(const T &t)
std::vector< float > jet_pfcand_ppara_ratio
std::vector< float > jet_pfcand_electron_sigIphiIphi
void produce(edm::Event &, const edm::EventSetup &) override
ParticleNetFeatureEvaluator(const edm::ParameterSet &)
std::vector< float > jet_sv_d3dsig
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
void fillLostTrackFeatures(DeepBoostedJetFeatures &fts, const reco::Jet &jet)
#define DEFINE_FWK_MODULE(type)
std::vector< float > jet_pfcand_photon_r9
Measurement1D signedDistance(const reco::Vertex &primVtx, const reco::Vertex &secVtx, const GlobalVector &momentum) const override
void fillParticleFeatures(DeepBoostedJetFeatures &fts, const reco::Jet &jet, const std::vector< math::XYZTLorentzVector > &tau_pfcandidates, const pat::MuonCollection &muons, const pat::ElectronCollection &electrons, const pat::PhotonCollection &photons)
edm::EDGetTokenT< reco::VertexCompositePtrCandidateCollection > sv_token_
std::vector< float > jet_sv_chi2
std::vector< float > jet_pfcand_charge
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > track_builder_token_
std::vector< float > jet_pfcand_dz
std::vector< Electron > ElectronCollection
collectin of Electron objects
edm::Ref< VertexCollection > VertexRef
persistent reference to a Vertex
std::vector< float > jet_pfcand_deta
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< float > jet_pfcand_trackjet_d3d
const double min_pt_for_track_properties_
std::vector< float > jet_losttrack_frompv
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
std::vector< float > jet_losttrack_nstriphits
std::vector< float > jet_pfcand_electron_dphiIn
std::vector< float > jet_losttrack_eta
std::vector< float > jet_losttrack_track_qual
std::vector< float > jet_pfcand_npixhits
std::vector< float > jet_pfcand_puppiw
std::vector< float > jet_pfcand_electron_convProb
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
std::vector< float > jet_sv_ntrack
edm::EDGetTokenT< pat::PhotonCollection > photon_token_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void endStream() override
bool sv_vertex_comparator(const SVType &sva, const SVType &svb, const PVType &pv)
std::vector< float > jet_pfcand_nlostinnerhits
const double max_sip3dsig_for_flip_
XYZVectorD XYZVector
spatial vector with cartesian internal representation
std::vector< float > jet_losttrack_deta
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< Photon > PhotonCollection
collectin of Photon objects
Analysis-level calorimeter jet class.
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool useTrackProperties(const pat::PackedCandidate *cand)
std::vector< float > jet_pfcand_dxysig
void fill(const std::string &name, float value)
std::vector< Muon > MuonCollection
std::vector< float > jet_pfcand_trackjet_decayL
double significance() const
std::vector< float > jet_pfcand_dzsig
std::vector< float > jet_losttrack_dxysig
std::vector< float > jet_pfcand_muon_segcomp
std::vector< float > jet_pfcand_muon_isglobal
std::vector< float > jet_sv_dxysig
std::vector< float > jet_pfcand_photon_eVeto
std::vector< float > jet_pfcand_track_qual
const double max_eta_for_taus_
std::vector< float > jet_pfcand_frompv
std::vector< float > jet_losttrack_dzsig
std::vector< float > jet_pfcand_muon_chi2
static const std::vector< std::string > sv_features_
std::vector< float > jet_sv_deta
std::vector< float > jet_pfcand_trackjet_d3dsig
std::vector< float > jet_losttrack_trackjet_d3d
edm::EDGetTokenT< reco::VertexCollection > vtx_token_
std::vector< float > jet_pfcand_energy_log
const bool include_neutrals_
const double min_jet_eta_
std::vector< float > jet_pfcand_calofraction
std::vector< float > jet_pfcand_tau_signal
std::vector< float > jet_pfcand_pt_log
std::vector< float > jet_pfcand_muon_id
std::vector< Photon > PhotonCollection
std::vector< float > jet_losttrack_dphi
const double max_dr_for_losttrack_
const double max_jet_eta_
void fillSVFeatures(DeepBoostedJetFeatures &fts, const reco::Jet &jet)
std::vector< float > jet_pfcand_eta
std::vector< float > jet_pfcand_muon_nstation
edm::EDGetTokenT< edm::View< reco::Candidate > > pfcand_token_