42 #include "boost/property_tree/ptree.hpp" 43 #include "boost/property_tree/json_parser.hpp" 155 typedef ap_ufixed<PT_W, PT_I, AP_TRN, AP_SAT>
Pt_t;
156 typedef ap_ufixed<ET_W, ET_I, AP_TRN, AP_SAT>
Et_t;
158 typedef ap_ufixed<CALIBPT_W, CALIBPT_I, AP_TRN, AP_SAT>
CalibPt_t;
159 typedef ap_ufixed<ID_W, ID_I, AP_TRN, AP_SAT>
Id_t;
181 template <
class outPrecision,
class inPrecision>
208 template <
int W,
int I, ap_q_mode _AP_Q, ap_o_mode _AP_O>
209 ap_ufixed<W, I>
ap_abs(ap_fixed<W, I, _AP_Q, _AP_O>
x);
347 std::vector<tensorflow::Tensor> outputsIdent,
348 std::vector<tensorflow::Tensor> outputsCalib,
349 std::vector<InputTowerCluster_pstn> clustersNxM_pstn);
361 edm::LogInfo(
"Initialization") <<
"Init NN models Global Cache " << std::endl;
410 EcalEtMinForClustering(iConfig.getParameter<double>(
"EcalEtMinForClustering")),
411 HcalEtMinForClustering(iConfig.getParameter<double>(
"HcalEtMinForClustering")),
412 EtMinForSeeding(iConfig.getParameter<double>(
"EtMinForSeeding")),
413 EtaRestriction(iConfig.getParameter<double>(
"EtaRestriction")),
414 CB_CE_split(iConfig.getParameter<double>(
"CB_CE_split")),
415 PuidThr(iConfig.getParameter<double>(
"PuidThr")),
417 IdWp90_CB(iConfig.getParameter<double>(
"IdWp90_CB")),
418 IdWp95_CB(iConfig.getParameter<double>(
"IdWp95_CB")),
419 IdWp99_CB(iConfig.getParameter<double>(
"IdWp99_CB")),
421 IdWp90_CE(iConfig.getParameter<double>(
"IdWp90_CE")),
422 IdWp95_CE(iConfig.getParameter<double>(
"IdWp95_CE")),
423 IdWp99_CE(iConfig.getParameter<double>(
"IdWp99_CE")) {
434 produces<BXVector<l1t::Tau>>(
"L1NNCaloTauCollectionBXV");
456 if (
hit.towerIEta() == -1016 &&
hit.towerIPhi() == -962) {
474 <<
" TOWERS WITH towerIeta=-1016 AND towerIphi=-962" << std::endl;
493 return a.towerEt >
b.towerEt;
497 std::vector<SimpleHGCluster> AllHGClusters;
501 auto& cl3d = *cl3dIt;
506 l1t::PFCluster cluster(cl3d.pt(), cl3d.eta(), cl3d.phi(), cl3d.hOverE());
510 float pt_new = cl3d.iPt(l1t::HGCalMulticluster::EnergyInterpretation::EM);
512 cluster =
l1t::PFCluster(pt_new, cl3d.eta(), cl3d.phi(), hoe_new, isEM);
516 float had_old = cl3d.
pt() - cluster.emEt();
517 float em_new = cl3d.iPt(l1t::HGCalMulticluster::EnergyInterpretation::EM);
518 float pt_new = had_old + em_new;
519 float hoe_new = em_new > 0 ? (had_old / em_new) : -1;
520 cluster =
l1t::PFCluster(pt_new, cl3d.eta(), cl3d.phi(), hoe_new, isEM);
523 float em_new = cl3d.iPt(l1t::HGCalMulticluster::EnergyInterpretation::EM);
524 float hoe_new = em_new > 0 ? (cl3d.pt() / em_new - 1) : -1;
525 cluster =
l1t::PFCluster(cl3d.pt(), cl3d.eta(), cl3d.phi(), hoe_new, isEM);
531 idScore = cluster.egVsPUMVAOut();
541 HGCluster.showerlength = cl3d.showerLength();
542 HGCluster.coreshowerlength = cl3d.coreShowerLength();
549 AllHGClusters.push_back(HGCluster);
565 std::vector<InputTowerCluster> l1TowerClustersNxM_CB;
566 std::vector<InputTowerCluster_pstn> l1TowerClustersNxM_CB_pstn;
567 std::vector<InputTowerCluster> l1TowerClustersNxM_CE;
568 std::vector<InputTowerCluster_pstn> l1TowerClustersNxM_CE_pstn;
569 std::vector<InputHGCluster> HGClusters;
572 std::vector<InputTowerCluster> AllL1TowerClustersNxM_CE;
573 std::vector<InputTowerCluster_pstn> AllL1TowerClustersNxM_CE_pstn;
575 int Nclusters_CB = 0;
576 int AllNclusters_CE = 0;
577 bool caloTauSeedingFinished =
false;
579 while (!caloTauSeedingFinished) {
589 l1CaloTower.stale4seed) {
597 caloTauSeedingFinished =
true;
602 clNxM_pstn.
fill(l1CaloTower);
603 if (l1CaloTower.isBarrel) {
607 l1CaloTower.stale4seed = 0x1;
608 l1CaloTower.stale = 0x1;
615 dIEtaPhi_t d_iPhi = dPhi<dIEtaPhi_t, IPhi_t>(l1CaloTower.towerIphi, clNxM_pstn.
seedIphi);
619 l1CaloTower.stale4seed = 0x1;
627 l1TowerClustersNxM_CB.push_back(clNxM);
628 l1TowerClustersNxM_CB_pstn.push_back(clNxM_pstn);
631 AllL1TowerClustersNxM_CE.push_back(clNxM);
632 AllL1TowerClustersNxM_CE_pstn.push_back(clNxM_pstn);
640 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CB; clNxMIdx++) {
643 if (l1CaloTower.stale) {
647 dIEtaPhi_t d_iEta =
tower_dIEta(l1CaloTower.towerIeta, l1TowerClustersNxM_CB_pstn[clNxMIdx].seedIeta);
649 dPhi<dIEtaPhi_t, IPhi_t>(l1CaloTower.towerIphi, l1TowerClustersNxM_CB_pstn[clNxMIdx].seedIphi);
650 int hitIdx = d_iEta * 9 + d_iPhi +
seedIdx;
654 l1TowerClustersNxM_CB[clNxMIdx].fill(hitIdx, l1CaloTower);
655 l1CaloTower.stale = 0x1;
664 int Nclusters_CE = 0;
665 for (
int clNxMIdx = 0; clNxMIdx < AllNclusters_CE; clNxMIdx++) {
667 for (
auto& HGCluster : AllHGClusters) {
674 dEtaPhi_t d_iEta =
tw2cl_dEta(HGCluster.eta, AllL1TowerClustersNxM_CE_pstn[clNxMIdx].seedIeta);
675 dEtaPhi_t d_iPhi =
tw2cl_dPhi(HGCluster.phi, AllL1TowerClustersNxM_CE_pstn[clNxMIdx].seedIphi);
679 HGCluster.stale = 0x1;
681 cl3d.
fill(HGCluster);
682 HGClusters.push_back(cl3d);
683 l1TowerClustersNxM_CE.push_back(AllL1TowerClustersNxM_CE[clNxMIdx]);
684 l1TowerClustersNxM_CE_pstn.push_back(AllL1TowerClustersNxM_CE_pstn[clNxMIdx]);
693 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CE; clNxMIdx++) {
696 if (l1CaloTower.stale) {
700 dIEtaPhi_t d_iEta =
tower_dIEta(l1CaloTower.towerIeta, l1TowerClustersNxM_CE_pstn[clNxMIdx].seedIeta);
702 dPhi<dIEtaPhi_t, IPhi_t>(l1CaloTower.towerIphi, l1TowerClustersNxM_CE_pstn[clNxMIdx].seedIphi);
703 int hitIdx = d_iEta * 9 + d_iPhi +
seedIdx;
707 l1TowerClustersNxM_CE[clNxMIdx].fill(hitIdx, l1CaloTower);
708 l1CaloTower.stale = 0x1;
717 int batchSize_CB = (
int)(Nclusters_CB);
718 tensorflow::TensorShape imageShape_CB({batchSize_CB,
IEta_dim,
IPhi_dim, 2});
719 tensorflow::TensorShape positionShape_CB({batchSize_CB, 2});
720 tensorflow::Tensor TowerClusterImage_CB(tensorflow::DT_FLOAT, imageShape_CB);
721 tensorflow::Tensor TowerClusterPosition_CB(tensorflow::DT_FLOAT, positionShape_CB);
723 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CB; clNxMIdx++) {
728 TowerClusterImage_CB.tensor<
float, 4>()(clNxMIdx,
eta,
phi, 0) =
729 (l1TowerClustersNxM_CB[clNxMIdx].towerHits[towerIdx].l1egTowerEt.to_float() +
730 l1TowerClustersNxM_CB[clNxMIdx].towerHits[towerIdx].towerEm.to_float());
731 TowerClusterImage_CB.tensor<
float, 4>()(clNxMIdx,
eta,
phi, 1) =
732 (l1TowerClustersNxM_CB[clNxMIdx].towerHits[towerIdx].towerHad.to_float());
736 TowerClusterPosition_CB.tensor<
float, 2>()(clNxMIdx, 0) =
floatIEta(l1TowerClustersNxM_CB_pstn[clNxMIdx].seedIeta);
737 TowerClusterPosition_CB.tensor<
float, 2>()(clNxMIdx, 1) =
floatIPhi(l1TowerClustersNxM_CB_pstn[clNxMIdx].seedIphi);
745 {
"TowerClusterPosition", TowerClusterPosition_CB}};
746 std::vector<tensorflow::Tensor> CNNmodel_CBoutputs;
748 CNNmodel_CBinputList,
749 {
"TauMinator_CB_conv/middleMan/concat"},
750 &CNNmodel_CBoutputs);
754 std::vector<tensorflow::Tensor> DNN_CBoutputsIdent;
757 {
"TauMinator_CB_ident/sigmoid_IDout/Sigmoid"},
758 &DNN_CBoutputsIdent);
761 std::vector<tensorflow::Tensor> DNN_CBoutputsCalib;
764 {
"TauMinator_CB_calib/DNNout/MatMul"},
765 &DNN_CBoutputsCalib);
768 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CB; clNxMIdx++) {
770 MakeTauCandidate(
true, clNxMIdx, DNN_CBoutputsIdent, DNN_CBoutputsCalib, l1TowerClustersNxM_CB_pstn);
771 if (
l1Tau.pt() < 0) {
774 L1NNCaloTauCollectionBXV->push_back(0,
l1Tau);
779 int batchSize_CE = (
int)(Nclusters_CE);
780 tensorflow::TensorShape imageShape_CE({batchSize_CE,
IEta_dim,
IPhi_dim, 2});
781 tensorflow::TensorShape positionShape_CE({batchSize_CE, 2});
782 tensorflow::TensorShape cl3dfeatShape_CE({batchSize_CE, 8});
783 tensorflow::Tensor TowerClusterImage_CE(tensorflow::DT_FLOAT, imageShape_CE);
784 tensorflow::Tensor TowerClusterPosition_CE(tensorflow::DT_FLOAT, positionShape_CE);
785 tensorflow::Tensor Cl3dShapeFeatures_CE(tensorflow::DT_FLOAT, cl3dfeatShape_CE);
787 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CE; clNxMIdx++) {
795 TowerClusterImage_CE.tensor<
float, 4>()(clNxMIdx,
eta,
phi, 0) =
796 (l1TowerClustersNxM_CE[clNxMIdx].towerHits[towerIdx].l1egTowerEt.to_float() +
797 l1TowerClustersNxM_CE[clNxMIdx].towerHits[towerIdx].towerEm.to_float());
798 TowerClusterImage_CE.tensor<
float, 4>()(clNxMIdx,
eta,
phi, 1) =
799 (l1TowerClustersNxM_CE[clNxMIdx].towerHits[towerIdx].towerHad.to_float());
803 TowerClusterPosition_CE.tensor<
float, 2>()(clNxMIdx, 0) =
floatIEta(l1TowerClustersNxM_CE_pstn[clNxMIdx].seedIeta);
804 TowerClusterPosition_CE.tensor<
float, 2>()(clNxMIdx, 1) =
floatIPhi(l1TowerClustersNxM_CE_pstn[clNxMIdx].seedIphi);
806 Cl3dShapeFeatures_CE.tensor<
float, 2>()(clNxMIdx, 0) =
inputScaler(HGClu.
pt.to_float(),
"pt");
809 Cl3dShapeFeatures_CE.tensor<
float, 2>()(clNxMIdx, 3) =
822 {
"TowerClusterPosition", TowerClusterPosition_CE},
823 {
"AssociatedCl3dFeatures", Cl3dShapeFeatures_CE}};
824 std::vector<tensorflow::Tensor> CNNmodel_CEoutputs;
826 CNNmodel_CEinputList,
827 {
"TauMinator_CE_conv/middleMan/concat"},
828 &CNNmodel_CEoutputs);
832 std::vector<tensorflow::Tensor> DNN_CEoutputsIdent;
835 {
"TauMinator_CE_ident/sigmoid_IDout/Sigmoid"},
836 &DNN_CEoutputsIdent);
839 std::vector<tensorflow::Tensor> DNN_CEoutputsCalib;
842 {
"TauMinator_CE_calib/LIN_DNNout/Relu"},
843 &DNN_CEoutputsCalib);
846 for (
int clNxMIdx = 0; clNxMIdx < Nclusters_CE; clNxMIdx++) {
848 MakeTauCandidate(
false, clNxMIdx, DNN_CEoutputsIdent, DNN_CEoutputsCalib, l1TowerClustersNxM_CE_pstn);
849 if (
l1Tau.pt() < 0) {
852 L1NNCaloTauCollectionBXV->push_back(0,
l1Tau);
857 iEvent.put(
std::move(L1NNCaloTauCollectionBXV),
"L1NNCaloTauCollectionBXV");
861 template <
class outPrecision,
class inPrecision>
865 outPrecision dphi0 = dphi > outPrecision(
INTPHI_PI) ? outPrecision(dphi -
INTPHI_2PI) : dphi;
866 outPrecision dphi1 = dphi <= outPrecision(-
INTPHI_PI) ? outPrecision(dphi +
INTPHI_2PI) : dphi;
868 outPrecision
result = dphi > outPrecision(0) ? dphi0 : dphi1;
874 ap_int<12>
mult = iEta_1 * iEta_2;
891 return dPhi<dEtaPhi_t, EtaPhi_t>(
iPhi_1, fineiPhi_2);
903 return iEta_1 - fineiEta_2;
933 template <
int W,
int I, ap_q_mode _AP_Q, ap_o_mode _AP_O>
946 return min(floor(inputF / LSB),
float(
pow(2, nbits) - 1)) * LSB;
950 return min(floor(inputF / LSB),
float(
pow(2, nbits) - 1));
954 float mean = (globalCache()->FeatScaler_CE).get_child(feature).get<
float>(
"mean");
955 float std = (globalCache()->FeatScaler_CE).get_child(feature).get<
float>(
"std");
986 float fphi =
phi.to_float();
998 std::vector<tensorflow::Tensor> outputsIdent,
999 std::vector<tensorflow::Tensor> outputsCalib,
1000 std::vector<L1NNCaloTauEmulator::InputTowerCluster_pstn> clustersNxM_pstn) {
1001 int seedIeta = clustersNxM_pstn[clNxMIdx].seedIeta;
1002 int seedIphi = clustersNxM_pstn[clNxMIdx].seedIphi;
1009 float tau_IDscore = outputsIdent[0].matrix<
float>()(0, clNxMIdx);
1010 float tau_calibPt = outputsCalib[0].matrix<
float>()(0, clNxMIdx);
1050 l1Tau.setTowerIEta(seedIeta);
1051 l1Tau.setTowerIPhi(seedIphi);
1062 edm::InputTag(
"l1tHGCalBackEndLayer2Producer",
"HGCalBackendLayer2Processor3DClustering"));
1067 psd0.
add<
bool>(
"isPUFilter",
true);
1074 std::vector<edm::ParameterSet> temp2;
1080 temp2.push_back(temp3);
1086 temp2.push_back(temp3);
1092 temp2.push_back(temp3);
1098 temp2.push_back(temp3);
1104 temp2.push_back(temp3);
1106 psd0.
addVPSet(
"variables", vpsd2, temp2);
1109 "weightsFile",
"L1Trigger/Phase2L1ParticleFlow/data/hgcal_egID/Photon_Pion_vs_Neutrino_BDTweights_1116.xml.gz");
1114 desc.add<
double>(
"EcalEtMinForClustering", 0.0);
1115 desc.add<
double>(
"HcalEtMinForClustering", 0.0);
1116 desc.add<
double>(
"EtMinForSeeding", 2.5);
1117 desc.add<
double>(
"EtaRestriction", 2.4);
1118 desc.add<
double>(
"CB_CE_split", 1.55);
1119 desc.add<
double>(
"PuidThr", -0.1);
1121 desc.add<
std::string>(
"CNNmodel_CB_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/CNNmodel_CB.pb");
1122 desc.add<
std::string>(
"DNNident_CB_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/DNNident_CB.pb");
1123 desc.add<
std::string>(
"DNNcalib_CB_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/DNNcalib_CB.pb");
1124 desc.add<
std::string>(
"CNNmodel_CE_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/CNNmodel_CE.pb");
1125 desc.add<
std::string>(
"DNNident_CE_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/DNNident_CE.pb");
1126 desc.add<
std::string>(
"DNNcalib_CE_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/v22/DNNcalib_CE.pb");
1127 desc.add<
std::string>(
"FeatScaler_CE_path",
"L1Trigger/L1CaloTrigger/data/Phase2_NNCaloTaus/Cl3dFeatScaler_CE.json");
1129 desc.add<
double>(
"IdWp90_CB", 0.706);
1130 desc.add<
double>(
"IdWp95_CB", 0.3432);
1131 desc.add<
double>(
"IdWp99_CB", 0.0337);
1132 desc.add<
double>(
"IdWp90_CE", 0.5711);
1133 desc.add<
double>(
"IdWp95_CE", 0.2742);
1134 desc.add<
double>(
"IdWp99_CE", 0.0394);
1136 desc.add<
bool>(
"DEBUG",
false);
1138 descriptions.
add(
"l1tNNCaloTauEmulator",
desc);
boost::property_tree::ptree FeatScaler_CE
ap_int< IETAPHI_W > IEta_t
tensorflow::Session * CNNmodel_CEsession
tensorflow::GraphDef * DNNident_CB
std::string DNNident_CE_path
std::string DNNcalib_CB_path
edm::EDGetToken hgcalTowersToken
ap_uint< MEANZ_W > Meanz_t
std::vector< NamedTensor > NamedTensorList
static constexpr int ID_I
T getParameter(std::string const &) const
tensorflow::GraphDef * CNNmodel_CB
static constexpr int CALIBPT_W
static constexpr int PUID_W
int apintQuantizer(float inputF, float LSB, int nbits)
outPrecision dPhi(inPrecision iPhi_1, inPrecision iPhi_2)
ParameterDescriptionBase * addVPSet(U const &iLabel, ParameterSetDescription const &validator, std::vector< ParameterSet > const &defaults)
static constexpr int ET_W
static void globalEndJob(const NNmodels_GlobalCache *)
StringCutObjectSelector< l1t::HGCalMulticluster > preEmId
double EcalEtMinForClustering
double pt() const final
transverse momentum
static constexpr float MEANZ_LSB
static constexpr int INTPHI_PI
std::string fullPath() const
static constexpr int PT_W
GraphDef * loadGraphDef(const std::string &pbFile)
static constexpr int INTPHI_2PI
static constexpr int FINEINTPHI_2PI
double HcalEtMinForClustering
edm::Handle< l1tp2::CaloTowerCollection > l1CaloTowerHandle
T const * product() const
static constexpr int SHOWLEN_W
static constexpr float ETAHGCAL_OFFSET
ap_ufixed< CALIBPT_W, CALIBPT_I, AP_TRN, AP_SAT > CalibPt_t
static constexpr int DETAPHI_W
tensorflow::Session * DNNident_CBsession
tensorflow::Session * DNNcalib_CEsession
static constexpr float MEANZ_OFFSET
std::string CNNmodel_CB_path
float floatPuId(PUid_t pu)
void fill(SimpleTowerHit Tower)
static std::unique_ptr< NNmodels_GlobalCache > initializeGlobalCache(const edm::ParameterSet &)
dEtaPhi_t tw2cl_dPhi(EtaPhi_t iPhi_1, IPhi_t iPhi_2)
static constexpr int MEANZ_W
float floatEta(EtaPhi_t eta)
tensorflow::Session * DNNident_CEsession
float correctInputMeanzCl3d(float meanz)
BXVector< HGCalTower > HGCalTowerBxCollection
static constexpr int SHAPEFEAT_W
static constexpr float IETAHGCAL_LSBp
ap_int< DIETAPHI_W > dIEtaPhi_t
tensorflow::GraphDef * DNNcalib_CE
ap_int< DETAPHI_W > dEtaPhi_t
std::string CNNmodel_CE_path
ap_ufixed< PT_W, PT_I, AP_TRN, AP_SAT > Pt_t
void addParameter(std::string const &name, T const &value)
float floatSzz(ShapeFeat_t szz)
BXVector< HGCalMulticluster > HGCalMulticlusterBxCollection
void run(Session *session, const NamedTensorList &inputs, const std::vector< std::string > &outputNames, std::vector< Tensor > *outputs, const thread::ThreadPoolOptions &threadPoolOptions)
Abs< T >::type abs(const T &t)
tensorflow::GraphDef * CNNmodel_CE
static constexpr float PTET_LSB
float inputScaler(float inputF, std::string feature)
std::string DNNident_CB_path
#define DEFINE_FWK_MODULE(type)
ap_int< ETAPHI_W > EtaPhi_t
IEta_t makeEndcapHwIEta(float eta)
static constexpr int ID_W
ParameterDescriptionBase * add(U const &iLabel, T const &value)
IPhi_t makeEndcapHwIPhi(float phi)
void produce(edm::Event &, const edm::EventSetup &) override
ap_int< W > ap_abs(ap_int< W > x)
typename CacheTypes::GlobalCache GlobalCache
dIEtaPhi_t tower_dIEta(IEta_t iEta_1, IEta_t iEta_2)
l1tpf::HGC3DClusterEgID VsPuId
static constexpr int CALIBPT_I
static constexpr int ET_I
tensorflow::Session * DNNcalib_CBsession
Session * createSession()
std::string DNNcalib_CE_path
float apfixedQuantizer(float inputF, float LSB, int nbits)
ap_ufixed< ID_W, ID_I, AP_TRN, AP_SAT > Id_t
Log< level::Info, false > LogInfo
edm::Handle< l1t::HGCalTowerBxCollection > hgcalTowersHandle
static constexpr float PUID_LSB
void setLogging(const std::string &level="3")
float correctInputEtaCl3d(float eta)
static constexpr int IETAPHI_W
static constexpr float SZZ_LSB
ap_uint< SHOWLEN_W > ShowLen_t
static constexpr int IETAHGCAL_OFFSET
static constexpr int R2cone
float floatIPhi(IPhi_t phi)
tensorflow::Session * CNNmodel_CBsession
static constexpr int FINEINTPHI_PI
static constexpr float CM2MM
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< l1t::HGCalMulticlusterBxCollection > HGClusterToken
float floatIEta(IEta_t eta)
l1t::Tau MakeTauCandidate(bool isBarrel, int clNxMIdx, std::vector< tensorflow::Tensor > outputsIdent, std::vector< tensorflow::Tensor > outputsCalib, std::vector< InputTowerCluster_pstn > clustersNxM_pstn)
static constexpr int DIETAPHI_W
static constexpr int PT_I
tensorflow::GraphDef * DNNcalib_CB
float floatPhi(EtaPhi_t phi)
float floatShape(ShapeFeat_t shape)
ap_ufixed< ET_W, ET_I, AP_TRN, AP_SAT > Et_t
static constexpr float IETAPHI_LSB
ap_uint< SHAPEFEAT_W > ShapeFeat_t
static constexpr float SHAPEFEAT_LSB
static constexpr float IETAHGCAL_LSB
L1NNCaloTauEmulator(const edm::ParameterSet &, const NNmodels_GlobalCache *)
edm::Handle< l1t::HGCalMulticlusterBxCollection > HGClusterHandle
float floatMeanZ(Meanz_t meanz)
Log< level::Warning, false > LogWarning
static constexpr float ETAPHI_LSB
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
float passID(l1t::HGCalMulticluster c, l1t::PFCluster &cpf)
ShowLen_t coreshowerlength
std::string FeatScaler_CE_path
static constexpr int ETAPHI_W
tensorflow::GraphDef * DNNident_CE
dEtaPhi_t tw2cl_dEta(EtaPhi_t iEta_1, IEta_t iEta_2)
Power< A, B >::type pow(const A &a, const B &b)
ap_uint< IETAPHI_W > IPhi_t
float floatMeanZHgcalCoord(Meanz_t meanz)
edm::EDGetTokenT< l1tp2::CaloTowerCollection > l1TowersToken
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.