25 static std::unique_ptr<DeepMETCache> initializeGlobalCache(
const edm::ParameterSet&);
44 norm_(
cfg.getParameter<double>(
"norm_factor")),
45 ignore_leptons_(
cfg.getParameter<
bool>(
"ignore_leptons")),
46 max_n_pf_(
cfg.getParameter<unsigned
int>(
"max_n_pf")),
48 produces<pat::METCollection>();
50 const tensorflow::TensorShape shape({1,
max_n_pf_, 8});
51 const tensorflow::TensorShape cat_shape({1,
max_n_pf_, 1});
53 input_ = tensorflow::Tensor(tensorflow::DT_FLOAT, shape);
54 input_cat0_ = tensorflow::Tensor(tensorflow::DT_FLOAT, cat_shape);
55 input_cat1_ = tensorflow::Tensor(tensorflow::DT_FLOAT, cat_shape);
56 input_cat2_ = tensorflow::Tensor(tensorflow::DT_FLOAT, cat_shape);
66 input_.flat<
float>().setZero();
72 float px_leptons = 0.;
73 float py_leptons = 0.;
75 for (
const auto&
pf : pfs) {
79 px_leptons +=
pf.px();
80 py_leptons +=
pf.py();
87 float* ptr = &
input_.tensor<
float, 3>()(0, i_pf, 0);
93 *(++ptr) =
pf.puppiWeight();
106 std::vector<tensorflow::Tensor>
outputs;
107 const std::vector<std::string>
output_names = {
"output/BiasAdd"};
119 LogDebug(
"produce") <<
"<DeepMETProducer::produce>:" << std::endl
120 <<
" MET from DeepMET Producer is MET_x " <<
px <<
" and MET_y " <<
py << std::endl;
122 auto pf_mets = std::make_unique<pat::METCollection>();
124 pf_mets->emplace_back(
reco::MET(p4, {}));
130 std::unique_ptr<DeepMETCache>
cache = std::make_unique<DeepMETCache>();
147 desc.add<
bool>(
"ignore_leptons",
false);
148 desc.add<
double>(
"norm_factor", 50.);
149 desc.add<
unsigned int>(
"max_n_pf", 4500);
150 desc.add<
std::string>(
"graph_path",
"RecoMET/METPUSubtraction/data/models/deepmet/deepmet_v1_2018/model.graphdef");
151 descriptions.
add(
"deepMETProducer",
desc);
Session * createSession(SessionOptions &sessionOptions)
std::vector< NamedTensor > NamedTensorList
const bool ignore_leptons_
std::atomic< tensorflow::GraphDef * > graph_def
std::string fullPath() const
void produce(edm::Event &event, const edm::EventSetup &setup) override
tensorflow::Tensor input_cat0_
GraphDef * loadGraphDef(const std::string &pbFile)
tensorflow::Tensor input_cat1_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static void globalEndJob(DeepMETCache *)
static std::unique_ptr< DeepMETCache > initializeGlobalCache(const edm::ParameterSet &)
tensorflow::Tensor input_
DeepMETProducer(const edm::ParameterSet &, const DeepMETCache *)
static const std::unordered_map< int, int32_t > charge_embedding
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::Session * session_
#define DEFINE_FWK_MODULE(type)
static const std::unordered_map< int, int32_t > pdg_id_embedding
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
tensorflow::Tensor input_cat2_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
float scale_and_rm_outlier(float val, float scale)
const unsigned int max_n_pf_
const edm::EDGetTokenT< std::vector< pat::PackedCandidate > > pf_token_