321 static constexpr bool check_all_set =
false;
322 static constexpr float default_value_for_set_check = -42;
325 tensorflow::Tensor
inputs(tensorflow::DT_FLOAT, { 1, dnn_inputs_2017v1::NumberOfInputs});
326 const auto&
get = [&](
int var_index) ->
float& {
return inputs.matrix<
float>()(0, var_index); };
330 for(
int var_index = 0; var_index < dnn::NumberOfInputs; ++var_index) {
331 get(var_index) = default_value_for_set_check;
345 get(dnn::dxy_sig) =
tau.dxy_Sig();
348 get(dnn::ip3d_sig) =
tau.ip3d_Sig();
349 get(dnn::hasSecondaryVertex) =
tau.hasSecondaryVertex();
350 get(dnn::flightLength_r) =
tau.flightLength().R();
351 get(dnn::flightLength_dEta) =
dEta(
tau.flightLength(),
tau.p4());
352 get(dnn::flightLength_dPhi) =
dPhi(
tau.flightLength(),
tau.p4());
353 get(dnn::flightLength_sig) =
tau.flightLengthSig();
354 get(dnn::leadChargedHadrCand_pt) = leadChargedHadrCand ? leadChargedHadrCand->p4().Pt() :
default_value;
355 get(dnn::leadChargedHadrCand_dEta) = leadChargedHadrCand
357 get(dnn::leadChargedHadrCand_dPhi) = leadChargedHadrCand
359 get(dnn::leadChargedHadrCand_mass) = leadChargedHadrCand
365 get(dnn::leadingTrackNormChi2) =
tau.leadingTrackNormChi2();
369 get(dnn::emFraction) =
tau.emFraction_MVA();
370 get(dnn::has_gsf_track) = leadChargedHadrCand &&
std::abs(leadChargedHadrCand->pdgId()) == 11;
373 get(dnn::gsf_ele_matched) = gsf_ele !=
nullptr;
374 get(dnn::gsf_ele_pt) = gsf_ele !=
nullptr ? gsf_ele->p4().Pt() :
default_value;
377 get(dnn::gsf_ele_mass) = gsf_ele !=
nullptr ? gsf_ele->p4().mass() :
default_value;
379 get(dnn::gsf_ele_Pin) = gsf_ele !=
nullptr ? gsf_ele->trackMomentumAtVtx().R() :
default_value;
380 get(dnn::gsf_ele_Pout) = gsf_ele !=
nullptr ? gsf_ele->trackMomentumOut().R() :
default_value;
381 get(dnn::gsf_ele_EtotOverPin) =
get(dnn::gsf_ele_Pin) > 0
382 ? (
get(dnn::gsf_ele_Ee) +
get(dnn::gsf_ele_Egamma)) /
get(dnn::gsf_ele_Pin)
384 get(dnn::gsf_ele_Eecal) = gsf_ele !=
nullptr ? gsf_ele->ecalEnergy() :
default_value;
385 get(dnn::gsf_ele_dEta_SeedClusterTrackAtCalo) = gsf_ele !=
nullptr 387 get(dnn::gsf_ele_dPhi_SeedClusterTrackAtCalo) = gsf_ele !=
nullptr 389 get(dnn::gsf_ele_mvaIn_sigmaEtaEta) = gsf_ele !=
nullptr 391 get(dnn::gsf_ele_mvaIn_hadEnergy) = gsf_ele !=
nullptr ? gsf_ele->mvaInput().hadEnergy :
default_value;
392 get(dnn::gsf_ele_mvaIn_deltaEta) = gsf_ele !=
nullptr ? gsf_ele->mvaInput().deltaEta :
default_value;
398 if(gsf_ele !=
nullptr && gsf_ele->gsfTrack().isNonnull()) {
399 get(dnn::gsf_ele_Chi2NormGSF) = gsf_ele->gsfTrack()->normalizedChi2();
400 get(dnn::gsf_ele_GSFNumHits) = gsf_ele->gsfTrack()->numberOfValidHits();
401 if(gsf_ele->gsfTrack()->pt() > 0) {
402 get(dnn::gsf_ele_GSFTrackResol) = gsf_ele->gsfTrack()->ptError() / gsf_ele->gsfTrack()->pt();
403 get(dnn::gsf_ele_GSFTracklnPt) = std::log10(gsf_ele->gsfTrack()->pt());
409 if(gsf_ele !=
nullptr && gsf_ele->closestCtfTrackRef().isNonnull()) {
410 get(dnn::gsf_ele_Chi2NormKF) = gsf_ele->closestCtfTrackRef()->normalizedChi2();
411 get(dnn::gsf_ele_KFNumHits) = gsf_ele->closestCtfTrackRef()->numberOfValidHits();
413 get(dnn::leadChargedCand_etaAtEcalEntrance) =
tau.etaAtEcalEntranceLeadChargedCand();
414 get(dnn::leadChargedCand_pt) =
tau.ptLeadChargedCand();
418 if(
tau.leadChargedHadrCand()->pt() > 0) {
419 get(dnn::leadChargedHadrCand_HoP) =
tau.hcalEnergyLeadChargedHadrCand()
420 /
tau.leadChargedHadrCand()->pt();
421 get(dnn::leadChargedHadrCand_EoP) =
tau.ecalEnergyLeadChargedHadrCand()
422 /
tau.leadChargedHadrCand()->pt();
425 MuonHitMatch muon_hit_match;
426 if(
tau.leadPFChargedHadrCand().isNonnull() &&
tau.leadPFChargedHadrCand()->muonRef().isNonnull())
427 muon_hit_match.addMatchedMuon(*
tau.leadPFChargedHadrCand()->muonRef(),
tau);
429 auto matched_muons = muon_hit_match.findMatchedMuons(
tau,
muons, 0.3, 5);
430 for(
auto muon : matched_muons)
431 muon_hit_match.addMatchedMuon(*
muon,
tau);
434 LorentzVectorXYZ signalChargedHadrCands_sumIn, signalChargedHadrCands_sumOut;
436 signalChargedHadrCands_sumIn, signalChargedHadrCands_sumOut,
437 get(dnn::signalChargedHadrCands_sum_innerSigCone_pt),
438 get(dnn::signalChargedHadrCands_sum_innerSigCone_dEta),
439 get(dnn::signalChargedHadrCands_sum_innerSigCone_dPhi),
440 get(dnn::signalChargedHadrCands_sum_innerSigCone_mass),
441 get(dnn::signalChargedHadrCands_sum_outerSigCone_pt),
442 get(dnn::signalChargedHadrCands_sum_outerSigCone_dEta),
443 get(dnn::signalChargedHadrCands_sum_outerSigCone_dPhi),
444 get(dnn::signalChargedHadrCands_sum_outerSigCone_mass),
445 get(dnn::signalChargedHadrCands_nTotal_innerSigCone),
446 get(dnn::signalChargedHadrCands_nTotal_outerSigCone));
450 signalNeutrHadrCands_sumIn, signalNeutrHadrCands_sumOut,
451 get(dnn::signalNeutrHadrCands_sum_innerSigCone_pt),
452 get(dnn::signalNeutrHadrCands_sum_innerSigCone_dEta),
453 get(dnn::signalNeutrHadrCands_sum_innerSigCone_dPhi),
454 get(dnn::signalNeutrHadrCands_sum_innerSigCone_mass),
455 get(dnn::signalNeutrHadrCands_sum_outerSigCone_pt),
456 get(dnn::signalNeutrHadrCands_sum_outerSigCone_dEta),
457 get(dnn::signalNeutrHadrCands_sum_outerSigCone_dPhi),
458 get(dnn::signalNeutrHadrCands_sum_outerSigCone_mass),
459 get(dnn::signalNeutrHadrCands_nTotal_innerSigCone),
460 get(dnn::signalNeutrHadrCands_nTotal_outerSigCone));
465 signalGammaCands_sumIn, signalGammaCands_sumOut,
466 get(dnn::signalGammaCands_sum_innerSigCone_pt),
467 get(dnn::signalGammaCands_sum_innerSigCone_dEta),
468 get(dnn::signalGammaCands_sum_innerSigCone_dPhi),
469 get(dnn::signalGammaCands_sum_innerSigCone_mass),
470 get(dnn::signalGammaCands_sum_outerSigCone_pt),
471 get(dnn::signalGammaCands_sum_outerSigCone_dEta),
472 get(dnn::signalGammaCands_sum_outerSigCone_dPhi),
473 get(dnn::signalGammaCands_sum_outerSigCone_mass),
474 get(dnn::signalGammaCands_nTotal_innerSigCone),
475 get(dnn::signalGammaCands_nTotal_outerSigCone));
479 get(dnn::isolationChargedHadrCands_sum_pt),
480 get(dnn::isolationChargedHadrCands_sum_dEta),
481 get(dnn::isolationChargedHadrCands_sum_dPhi),
482 get(dnn::isolationChargedHadrCands_sum_mass),
483 get(dnn::isolationChargedHadrCands_nTotal));
487 get(dnn::isolationNeutrHadrCands_sum_pt),
488 get(dnn::isolationNeutrHadrCands_sum_dEta),
489 get(dnn::isolationNeutrHadrCands_sum_dPhi),
490 get(dnn::isolationNeutrHadrCands_sum_mass),
491 get(dnn::isolationNeutrHadrCands_nTotal));
495 get(dnn::isolationGammaCands_sum_pt),
496 get(dnn::isolationGammaCands_sum_dEta),
497 get(dnn::isolationGammaCands_sum_dPhi),
498 get(dnn::isolationGammaCands_sum_mass),
499 get(dnn::isolationGammaCands_nTotal));
501 get(dnn::tau_visMass_innerSigCone) = (signalGammaCands_sumIn + signalChargedHadrCands_sumIn).mass();
504 for(
int var_index = 0; var_index < dnn::NumberOfInputs; ++var_index) {
505 if(
get(var_index) == default_value_for_set_check)
506 throw cms::Exception(
"DeepTauId: variable with index = ") << var_index <<
" is not set.";
float tau_Eratio(const reco::PFTau &tau) const
return ratio of energy in ECAL over sum of energy in ECAL and HCAL
static bool isInEcalCrack(double eta)
static void processIsolationPFComponents(const pat::Tau &tau, const CandidateCollection &candidates, LorentzVectorXYZ &p4, float &pt, float &d_eta, float &d_phi, float &m, float &n)
static float calculateGottfriedJacksonAngleDifference(const pat::Tau &tau)
float tau_pt_weighted_dphi_strip(const reco::PFTau &tau, int dm) const
Abs< T >::type abs(const T &t)
float tau_pt_weighted_dr_signal(const reco::PFTau &tau, int dm) const
float tau_pt_weighted_dr_iso(const reco::PFTau &tau, int dm) const
photonPtSumOutsideSignalCone
float tau_pt_weighted_deta_strip(const reco::PFTau &tau, int dm) const
static void processSignalPFComponents(const pat::Tau &tau, const CandidateCollection &candidates, LorentzVectorXYZ &p4_inner, LorentzVectorXYZ &p4_outer, float &pt_inner, float &dEta_inner, float &dPhi_inner, float &m_inner, float &pt_outer, float &dEta_outer, float &dPhi_outer, float &m_outer, float &n_inner, float &n_outer)
static const pat::Electron * findMatchedElectron(const pat::Tau &tau, const pat::ElectronCollection &electrons, double deltaR)
static float default_value
static void calculateElectronClusterVars(const pat::Electron *ele, float &elecEe, float &elecEgamma)
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double >> LorentzVectorXYZ
unsigned int tau_n_photons_total(const reco::PFTau &tau) const
return total number of pf photon candidates with pT>500 MeV, which are associated to signal ...