1428 int PFe_index_offset =
scalingParamsMap_->at(std::make_pair(ft_global,
false)).mean_.size();
1429 int e_index_offset = PFe_index_offset +
scalingParamsMap_->at(std::make_pair(ft_PFe,
false)).mean_.size();
1430 int PFg_index_offset = e_index_offset +
scalingParamsMap_->at(std::make_pair(ft_e,
false)).mean_.size();
1433 int fill_index_offset_e = 0;
1434 int fill_index_offset_PFg = 0;
1436 fill_index_offset_e =
1438 fill_index_offset_PFg =
1442 const auto&
get = [&](
int var_index) ->
float& {
1443 if constexpr (std::is_same_v<EgammaBlockType, std::vector<float>::iterator>) {
1444 return *(egammaBlockInputs + var_index);
1446 return ((tensorflow::Tensor)egammaBlockInputs).tensor<float, 4>()(
idx, 0, 0, var_index);
1450 const bool valid_index_pf_ele = cell_map.count(CellObjectType::PfCand_electron);
1451 const bool valid_index_pf_gamma = cell_map.count(CellObjectType::PfCand_gamma);
1454 if (!cell_map.empty()) {
1455 const sc::ScalingParams& sp =
scalingParamsMap_->at(std::make_pair(ft_global,
false));
1459 get(dnn::tau_inside_ecal_crack) = sp.scale(
isInEcalCrack(
tau.polarP4().eta()), dnn::tau_inside_ecal_crack);
1461 if (valid_index_pf_ele) {
1462 const sc::ScalingParams& sp =
scalingParamsMap_->at(std::make_pair(ft_PFe, is_inner));
1463 size_t index_pf_ele = cell_map.at(CellObjectType::PfCand_electron);
1464 const auto& ele_cand =
dynamic_cast<const CandidateCastType&
>(pfCands.
at(index_pf_ele));
1466 get(dnn::pfCand_ele_valid) = sp.scale(valid_index_pf_ele, dnn::pfCand_ele_valid - PFe_index_offset);
1467 get(dnn::pfCand_ele_rel_pt) =
1468 sp.scale(ele_cand.polarP4().pt() /
tau.polarP4().pt(), dnn::pfCand_ele_rel_pt - PFe_index_offset);
1469 get(dnn::pfCand_ele_deta) =
1470 sp.scale(ele_cand.polarP4().eta() -
tau.polarP4().eta(), dnn::pfCand_ele_deta - PFe_index_offset);
1471 get(dnn::pfCand_ele_dphi) =
1472 sp.scale(
dPhi(
tau.polarP4(), ele_cand.polarP4()), dnn::pfCand_ele_dphi - PFe_index_offset);
1473 get(dnn::pfCand_ele_pvAssociationQuality) = sp.scale<
int>(
1474 candFunc::getPvAssocationQuality(ele_cand), dnn::pfCand_ele_pvAssociationQuality - PFe_index_offset);
1475 get(dnn::pfCand_ele_puppiWeight) = is_inner ? sp.scale(candFunc::getPuppiWeight(ele_cand, 0.9906834f),
1476 dnn::pfCand_ele_puppiWeight - PFe_index_offset)
1477 : sp.scale(candFunc::getPuppiWeight(ele_cand, 0.9669586
f),
1478 dnn::pfCand_ele_puppiWeight - PFe_index_offset);
1479 get(dnn::pfCand_ele_charge) = sp.scale(ele_cand.charge(), dnn::pfCand_ele_charge - PFe_index_offset);
1480 get(dnn::pfCand_ele_lostInnerHits) =
1481 sp.scale<
int>(candFunc::getLostInnerHits(ele_cand, 0), dnn::pfCand_ele_lostInnerHits - PFe_index_offset);
1482 get(dnn::pfCand_ele_numberOfPixelHits) =
1483 sp.scale(candFunc::getNumberOfPixelHits(ele_cand, 0), dnn::pfCand_ele_numberOfPixelHits - PFe_index_offset);
1484 get(dnn::pfCand_ele_vertex_dx) =
1485 sp.scale(ele_cand.vertex().x() -
pv.position().x(), dnn::pfCand_ele_vertex_dx - PFe_index_offset);
1486 get(dnn::pfCand_ele_vertex_dy) =
1487 sp.scale(ele_cand.vertex().y() -
pv.position().y(), dnn::pfCand_ele_vertex_dy - PFe_index_offset);
1488 get(dnn::pfCand_ele_vertex_dz) =
1489 sp.scale(ele_cand.vertex().z() -
pv.position().z(), dnn::pfCand_ele_vertex_dz - PFe_index_offset);
1490 get(dnn::pfCand_ele_vertex_dx_tauFL) =
1491 sp.scale(ele_cand.vertex().x() -
pv.position().x() - tau_funcs.getFlightLength(
tau, tau_index).x(),
1492 dnn::pfCand_ele_vertex_dx_tauFL - PFe_index_offset);
1493 get(dnn::pfCand_ele_vertex_dy_tauFL) =
1494 sp.scale(ele_cand.vertex().y() -
pv.position().y() - tau_funcs.getFlightLength(
tau, tau_index).y(),
1495 dnn::pfCand_ele_vertex_dy_tauFL - PFe_index_offset);
1496 get(dnn::pfCand_ele_vertex_dz_tauFL) =
1497 sp.scale(ele_cand.vertex().z() -
pv.position().z() - tau_funcs.getFlightLength(
tau, tau_index).z(),
1498 dnn::pfCand_ele_vertex_dz_tauFL - PFe_index_offset);
1500 const bool hasTrackDetails = candFunc::getHasTrackDetails(ele_cand);
1501 if (hasTrackDetails) {
1502 get(dnn::pfCand_ele_hasTrackDetails) =
1503 sp.scale(hasTrackDetails, dnn::pfCand_ele_hasTrackDetails - PFe_index_offset);
1504 get(dnn::pfCand_ele_dxy) = sp.scale(candFunc::getTauDxy(ele_cand), dnn::pfCand_ele_dxy - PFe_index_offset);
1505 get(dnn::pfCand_ele_dxy_sig) = sp.scale(
std::abs(candFunc::getTauDxy(ele_cand)) / ele_cand.dxyError(),
1506 dnn::pfCand_ele_dxy_sig - PFe_index_offset);
1507 get(dnn::pfCand_ele_dz) = sp.scale(candFunc::getTauDz(ele_cand), dnn::pfCand_ele_dz - PFe_index_offset);
1508 get(dnn::pfCand_ele_dz_sig) = sp.scale(
std::abs(candFunc::getTauDz(ele_cand)) / ele_cand.dzError(),
1509 dnn::pfCand_ele_dz_sig - PFe_index_offset);
1510 get(dnn::pfCand_ele_track_chi2_ndof) =
1511 candFunc::getPseudoTrack(ele_cand).ndof() > 0
1512 ? sp.scale(candFunc::getPseudoTrack(ele_cand).
chi2() / candFunc::getPseudoTrack(ele_cand).
ndof(),
1513 dnn::pfCand_ele_track_chi2_ndof - PFe_index_offset)
1515 get(dnn::pfCand_ele_track_ndof) =
1516 candFunc::getPseudoTrack(ele_cand).ndof() > 0
1517 ? sp.scale(candFunc::getPseudoTrack(ele_cand).
ndof(), dnn::pfCand_ele_track_ndof - PFe_index_offset)
1521 if (valid_index_pf_gamma) {
1522 const sc::ScalingParams& sp =
scalingParamsMap_->at(std::make_pair(ft_PFg, is_inner));
1523 size_t index_pf_gamma = cell_map.at(CellObjectType::PfCand_gamma);
1524 const auto& gamma_cand =
dynamic_cast<const CandidateCastType&
>(pfCands.
at(index_pf_gamma));
1526 get(dnn::pfCand_gamma_valid + fill_index_offset_PFg) =
1527 sp.scale(valid_index_pf_gamma, dnn::pfCand_gamma_valid - PFg_index_offset);
1528 get(dnn::pfCand_gamma_rel_pt + fill_index_offset_PFg) =
1529 sp.scale(gamma_cand.polarP4().pt() /
tau.polarP4().pt(), dnn::pfCand_gamma_rel_pt - PFg_index_offset);
1530 get(dnn::pfCand_gamma_deta + fill_index_offset_PFg) =
1531 sp.scale(gamma_cand.polarP4().eta() -
tau.polarP4().eta(), dnn::pfCand_gamma_deta - PFg_index_offset);
1532 get(dnn::pfCand_gamma_dphi + fill_index_offset_PFg) =
1533 sp.scale(
dPhi(
tau.polarP4(), gamma_cand.polarP4()), dnn::pfCand_gamma_dphi - PFg_index_offset);
1534 get(dnn::pfCand_gamma_pvAssociationQuality + fill_index_offset_PFg) = sp.scale<
int>(
1535 candFunc::getPvAssocationQuality(gamma_cand), dnn::pfCand_gamma_pvAssociationQuality - PFg_index_offset);
1536 get(dnn::pfCand_gamma_fromPV + fill_index_offset_PFg) =
1537 sp.scale<
int>(candFunc::getFromPV(gamma_cand), dnn::pfCand_gamma_fromPV - PFg_index_offset);
1538 get(dnn::pfCand_gamma_puppiWeight + fill_index_offset_PFg) =
1539 is_inner ? sp.scale(candFunc::getPuppiWeight(gamma_cand, 0.9084110f),
1540 dnn::pfCand_gamma_puppiWeight - PFg_index_offset)
1541 : sp.scale(candFunc::getPuppiWeight(gamma_cand, 0.4211567
f),
1542 dnn::pfCand_gamma_puppiWeight - PFg_index_offset);
1543 get(dnn::pfCand_gamma_puppiWeightNoLep + fill_index_offset_PFg) =
1544 is_inner ? sp.scale(candFunc::getPuppiWeightNoLep(gamma_cand, 0.8857716f),
1545 dnn::pfCand_gamma_puppiWeightNoLep - PFg_index_offset)
1546 : sp.scale(candFunc::getPuppiWeightNoLep(gamma_cand, 0.3822604
f),
1547 dnn::pfCand_gamma_puppiWeightNoLep - PFg_index_offset);
1548 get(dnn::pfCand_gamma_lostInnerHits + fill_index_offset_PFg) =
1549 sp.scale<
int>(candFunc::getLostInnerHits(gamma_cand, 0), dnn::pfCand_gamma_lostInnerHits - PFg_index_offset);
1550 get(dnn::pfCand_gamma_numberOfPixelHits + fill_index_offset_PFg) = sp.scale(
1551 candFunc::getNumberOfPixelHits(gamma_cand, 0), dnn::pfCand_gamma_numberOfPixelHits - PFg_index_offset);
1552 get(dnn::pfCand_gamma_vertex_dx + fill_index_offset_PFg) =
1553 sp.scale(gamma_cand.vertex().x() -
pv.position().x(), dnn::pfCand_gamma_vertex_dx - PFg_index_offset);
1554 get(dnn::pfCand_gamma_vertex_dy + fill_index_offset_PFg) =
1555 sp.scale(gamma_cand.vertex().y() -
pv.position().y(), dnn::pfCand_gamma_vertex_dy - PFg_index_offset);
1556 get(dnn::pfCand_gamma_vertex_dz + fill_index_offset_PFg) =
1557 sp.scale(gamma_cand.vertex().z() -
pv.position().z(), dnn::pfCand_gamma_vertex_dz - PFg_index_offset);
1558 get(dnn::pfCand_gamma_vertex_dx_tauFL + fill_index_offset_PFg) =
1559 sp.scale(gamma_cand.vertex().x() -
pv.position().x() - tau_funcs.getFlightLength(
tau, tau_index).x(),
1560 dnn::pfCand_gamma_vertex_dx_tauFL - PFg_index_offset);
1561 get(dnn::pfCand_gamma_vertex_dy_tauFL + fill_index_offset_PFg) =
1562 sp.scale(gamma_cand.vertex().y() -
pv.position().y() - tau_funcs.getFlightLength(
tau, tau_index).y(),
1563 dnn::pfCand_gamma_vertex_dy_tauFL - PFg_index_offset);
1564 get(dnn::pfCand_gamma_vertex_dz_tauFL + fill_index_offset_PFg) =
1565 sp.scale(gamma_cand.vertex().z() -
pv.position().z() - tau_funcs.getFlightLength(
tau, tau_index).z(),
1566 dnn::pfCand_gamma_vertex_dz_tauFL - PFg_index_offset);
1567 const bool hasTrackDetails = candFunc::getHasTrackDetails(gamma_cand);
1568 if (hasTrackDetails) {
1569 get(dnn::pfCand_gamma_hasTrackDetails + fill_index_offset_PFg) =
1570 sp.scale(hasTrackDetails, dnn::pfCand_gamma_hasTrackDetails - PFg_index_offset);
1571 get(dnn::pfCand_gamma_dxy + fill_index_offset_PFg) =
1572 sp.scale(candFunc::getTauDxy(gamma_cand), dnn::pfCand_gamma_dxy - PFg_index_offset);
1573 get(dnn::pfCand_gamma_dxy_sig + fill_index_offset_PFg) =
1574 sp.scale(
std::abs(candFunc::getTauDxy(gamma_cand)) / gamma_cand.dxyError(),
1575 dnn::pfCand_gamma_dxy_sig - PFg_index_offset);
1576 get(dnn::pfCand_gamma_dz + fill_index_offset_PFg) =
1577 sp.scale(candFunc::getTauDz(gamma_cand), dnn::pfCand_gamma_dz - PFg_index_offset);
1578 get(dnn::pfCand_gamma_dz_sig + fill_index_offset_PFg) =
1579 sp.scale(
std::abs(candFunc::getTauDz(gamma_cand)) / gamma_cand.dzError(),
1580 dnn::pfCand_gamma_dz_sig - PFg_index_offset);
1581 get(dnn::pfCand_gamma_track_chi2_ndof + fill_index_offset_PFg) =
1582 candFunc::getPseudoTrack(gamma_cand).ndof() > 0
1583 ? sp.scale(candFunc::getPseudoTrack(gamma_cand).
chi2() / candFunc::getPseudoTrack(gamma_cand).
ndof(),
1584 dnn::pfCand_gamma_track_chi2_ndof - PFg_index_offset)
1586 get(dnn::pfCand_gamma_track_ndof + fill_index_offset_PFg) =
1587 candFunc::getPseudoTrack(gamma_cand).ndof() > 0
1588 ? sp.scale(candFunc::getPseudoTrack(gamma_cand).
ndof(), dnn::pfCand_gamma_track_ndof - PFg_index_offset)
1592 if (valid_index_ele) {
1593 const sc::ScalingParams& sp =
scalingParamsMap_->at(std::make_pair(ft_e, is_inner));
1595 const auto& ele =
electrons->at(index_ele);
1597 get(dnn::ele_valid + fill_index_offset_e) = sp.scale(valid_index_ele, dnn::ele_valid - e_index_offset);
1598 get(dnn::ele_rel_pt + fill_index_offset_e) =
1599 sp.scale(ele.polarP4().pt() /
tau.polarP4().pt(), dnn::ele_rel_pt - e_index_offset);
1600 get(dnn::ele_deta + fill_index_offset_e) =
1601 sp.scale(ele.polarP4().eta() -
tau.polarP4().eta(), dnn::ele_deta - e_index_offset);
1602 get(dnn::ele_dphi + fill_index_offset_e) =
1603 sp.scale(
dPhi(
tau.polarP4(), ele.polarP4()), dnn::ele_dphi - e_index_offset);
1605 float cc_ele_energy, cc_gamma_energy;
1609 get(dnn::ele_cc_valid + fill_index_offset_e) = sp.scale(cc_valid, dnn::ele_cc_valid - e_index_offset);
1610 get(dnn::ele_cc_ele_rel_energy + fill_index_offset_e) =
1611 sp.scale(cc_ele_energy / ele.polarP4().pt(), dnn::ele_cc_ele_rel_energy - e_index_offset);
1612 get(dnn::ele_cc_gamma_rel_energy + fill_index_offset_e) =
1613 sp.scale(cc_gamma_energy / cc_ele_energy, dnn::ele_cc_gamma_rel_energy - e_index_offset);
1614 get(dnn::ele_cc_n_gamma + fill_index_offset_e) = sp.scale(cc_n_gamma, dnn::ele_cc_n_gamma - e_index_offset);
1616 get(dnn::ele_rel_trackMomentumAtVtx + fill_index_offset_e) =
1617 sp.scale(ele.trackMomentumAtVtx().R() / ele.polarP4().pt(), dnn::ele_rel_trackMomentumAtVtx - e_index_offset);
1618 get(dnn::ele_rel_trackMomentumAtCalo + fill_index_offset_e) = sp.scale(
1619 ele.trackMomentumAtCalo().R() / ele.polarP4().pt(), dnn::ele_rel_trackMomentumAtCalo - e_index_offset);
1620 get(dnn::ele_rel_trackMomentumOut + fill_index_offset_e) =
1621 sp.scale(ele.trackMomentumOut().R() / ele.polarP4().pt(), dnn::ele_rel_trackMomentumOut - e_index_offset);
1622 get(dnn::ele_rel_trackMomentumAtEleClus + fill_index_offset_e) = sp.scale(
1623 ele.trackMomentumAtEleClus().R() / ele.polarP4().pt(), dnn::ele_rel_trackMomentumAtEleClus - e_index_offset);
1624 get(dnn::ele_rel_trackMomentumAtVtxWithConstraint + fill_index_offset_e) =
1625 sp.scale(ele.trackMomentumAtVtxWithConstraint().R() / ele.polarP4().pt(),
1626 dnn::ele_rel_trackMomentumAtVtxWithConstraint - e_index_offset);
1627 get(dnn::ele_rel_ecalEnergy + fill_index_offset_e) =
1628 sp.scale(ele.ecalEnergy() / ele.polarP4().pt(), dnn::ele_rel_ecalEnergy - e_index_offset);
1629 get(dnn::ele_ecalEnergy_sig + fill_index_offset_e) =
1630 sp.scale(ele.ecalEnergy() / ele.ecalEnergyError(), dnn::ele_ecalEnergy_sig - e_index_offset);
1631 get(dnn::ele_eSuperClusterOverP + fill_index_offset_e) =
1632 sp.scale(ele.eSuperClusterOverP(), dnn::ele_eSuperClusterOverP - e_index_offset);
1633 get(dnn::ele_eSeedClusterOverP + fill_index_offset_e) =
1634 sp.scale(ele.eSeedClusterOverP(), dnn::ele_eSeedClusterOverP - e_index_offset);
1635 get(dnn::ele_eSeedClusterOverPout + fill_index_offset_e) =
1636 sp.scale(ele.eSeedClusterOverPout(), dnn::ele_eSeedClusterOverPout - e_index_offset);
1637 get(dnn::ele_eEleClusterOverPout + fill_index_offset_e) =
1638 sp.scale(ele.eEleClusterOverPout(), dnn::ele_eEleClusterOverPout - e_index_offset);
1639 get(dnn::ele_deltaEtaSuperClusterTrackAtVtx + fill_index_offset_e) =
1640 sp.scale(ele.deltaEtaSuperClusterTrackAtVtx(), dnn::ele_deltaEtaSuperClusterTrackAtVtx - e_index_offset);
1641 get(dnn::ele_deltaEtaSeedClusterTrackAtCalo + fill_index_offset_e) =
1642 sp.scale(ele.deltaEtaSeedClusterTrackAtCalo(), dnn::ele_deltaEtaSeedClusterTrackAtCalo - e_index_offset);
1643 get(dnn::ele_deltaEtaEleClusterTrackAtCalo + fill_index_offset_e) =
1644 sp.scale(ele.deltaEtaEleClusterTrackAtCalo(), dnn::ele_deltaEtaEleClusterTrackAtCalo - e_index_offset);
1645 get(dnn::ele_deltaPhiEleClusterTrackAtCalo + fill_index_offset_e) =
1646 sp.scale(ele.deltaPhiEleClusterTrackAtCalo(), dnn::ele_deltaPhiEleClusterTrackAtCalo - e_index_offset);
1647 get(dnn::ele_deltaPhiSuperClusterTrackAtVtx + fill_index_offset_e) =
1648 sp.scale(ele.deltaPhiSuperClusterTrackAtVtx(), dnn::ele_deltaPhiSuperClusterTrackAtVtx - e_index_offset);
1649 get(dnn::ele_deltaPhiSeedClusterTrackAtCalo + fill_index_offset_e) =
1650 sp.scale(ele.deltaPhiSeedClusterTrackAtCalo(), dnn::ele_deltaPhiSeedClusterTrackAtCalo - e_index_offset);
1651 const bool mva_valid =
1652 (ele.mvaInput().earlyBrem > -2) ||
1656 get(dnn::ele_mvaInput_earlyBrem + fill_index_offset_e) =
1657 sp.scale(ele.mvaInput().earlyBrem, dnn::ele_mvaInput_earlyBrem - e_index_offset);
1658 get(dnn::ele_mvaInput_lateBrem + fill_index_offset_e) =
1659 sp.scale(ele.mvaInput().lateBrem, dnn::ele_mvaInput_lateBrem - e_index_offset);
1660 get(dnn::ele_mvaInput_sigmaEtaEta + fill_index_offset_e) =
1661 sp.scale(ele.mvaInput().sigmaEtaEta, dnn::ele_mvaInput_sigmaEtaEta - e_index_offset);
1662 get(dnn::ele_mvaInput_hadEnergy + fill_index_offset_e) =
1663 sp.scale(ele.mvaInput().hadEnergy, dnn::ele_mvaInput_hadEnergy - e_index_offset);
1664 get(dnn::ele_mvaInput_deltaEta + fill_index_offset_e) =
1665 sp.scale(ele.mvaInput().deltaEta, dnn::ele_mvaInput_deltaEta - e_index_offset);
1667 const auto& gsfTrack = ele.gsfTrack();
1668 if (gsfTrack.isNonnull()) {
1669 get(dnn::ele_gsfTrack_normalizedChi2 + fill_index_offset_e) =
1670 sp.scale(gsfTrack->normalizedChi2(), dnn::ele_gsfTrack_normalizedChi2 - e_index_offset);
1671 get(dnn::ele_gsfTrack_numberOfValidHits + fill_index_offset_e) =
1672 sp.scale(gsfTrack->numberOfValidHits(), dnn::ele_gsfTrack_numberOfValidHits - e_index_offset);
1673 get(dnn::ele_rel_gsfTrack_pt + fill_index_offset_e) =
1674 sp.scale(gsfTrack->pt() / ele.polarP4().pt(), dnn::ele_rel_gsfTrack_pt - e_index_offset);
1675 get(dnn::ele_gsfTrack_pt_sig + fill_index_offset_e) =
1676 sp.scale(gsfTrack->pt() / gsfTrack->ptError(), dnn::ele_gsfTrack_pt_sig - e_index_offset);
1678 const auto& closestCtfTrack = ele.closestCtfTrackRef();
1679 const bool has_closestCtfTrack = closestCtfTrack.isNonnull();
1680 if (has_closestCtfTrack) {
1681 get(dnn::ele_has_closestCtfTrack + fill_index_offset_e) =
1682 sp.scale(has_closestCtfTrack, dnn::ele_has_closestCtfTrack - e_index_offset);
1683 get(dnn::ele_closestCtfTrack_normalizedChi2 + fill_index_offset_e) =
1684 sp.scale(closestCtfTrack->normalizedChi2(), dnn::ele_closestCtfTrack_normalizedChi2 - e_index_offset);
1685 get(dnn::ele_closestCtfTrack_numberOfValidHits + fill_index_offset_e) =
1686 sp.scale(closestCtfTrack->numberOfValidHits(), dnn::ele_closestCtfTrack_numberOfValidHits - e_index_offset);
const std::map< std::pair< deep_tau::Scaling::FeatureT, bool >, deep_tau::Scaling::ScalingParams > * scalingParamsMap_
static bool isInEcalCrack(double eta)
static bool calculateElectronClusterVarsV2(const pat::Electron &ele, float &cc_ele_energy, float &cc_gamma_energy, int &cc_n_gamma)
Abs< T >::type abs(const T &t)
const_reference at(size_type pos) const
const unsigned sub_version_