8#include "lwtnn/LightweightGraph.hh"
9#include "lwtnn/NanReplacer.hh"
21 const std::vector<FTagInputConfig>& inputs,
22 const std::vector<ConstituentsInputConfig>& tracks_configs,
25 m_graph(new
lwt::LightweightGraph(graph_config,graph_config.outputs.begin()->first)),
30 if (graph_config.inputs.size() > 1) {
31 throw std::logic_error(
"We don't currently support graphs with "
32 "more than one input");
33 }
else if (graph_config.inputs.size() == 1){
34 m_input_node_name = graph_config.inputs.at(0).name;
35 m_variable_cleaner.reset(new lwt::NanReplacer(
36 graph_config.inputs.at(0).defaults,
44 for (
auto config : tracks_configs){
49 graph_config, options);
54 graph_config, options);
62 std::set<std::string> used_remap = loader->getUsedRemap();
77 for (
const auto&
node: dec.second) {
86 std::vector<NamedVar> vvec;
88 vvec.push_back(getter.second(
jet));
90 std::map<std::string, std::map<std::string, double> > nodes;
92 std::map<std::string, double> variables(vvec.begin(), vvec.end());
103 std::map<std::string, std::map<std::string, std::vector<double>>> seqs;
106 std::map<std::string, std::vector<double>> feats;
108 seqs[loader->getName()] = feats;
122 auto out_vals =
m_graph->compute(nodes, seqs, dec.first);
123 for (
const auto&
node: dec.second) {
DL2(const lwt::GraphConfig &, const std::vector< FTagInputConfig > &, const std::vector< ConstituentsInputConfig > &={}, const FTagOptions &=FTagOptions())
std::function< char(const internal::Tracks &)> m_invalid_track_checker
void decorate(const xAOD::IParticle &i_jet) const
std::unique_ptr< lwt::LightweightGraph > m_graph
std::string m_input_node_name
const FTagDataDependencyNames & getDataDependencyNames() const
std::vector< SG::AuxElement::Decorator< char > > m_is_defaults
std::vector< std::shared_ptr< TracksLoader > > m_tracksLoaders
std::unique_ptr< lwt::NanReplacer > m_variable_cleaner
std::map< std::string, internal::OutNodeFloat > m_decorators
FTagDataDependencyNames m_dataDependencyNames
std::vector< std::pair< std::string, internal::VarFromJet > > m_varsFromJet
void decorateWithDefaults(const SG::AuxElement &) const
Base class for elements of a container that can have aux data.
Class providing the definition of the 4-vector interface.
std::tuple< std::map< std::string, internal::OutNodeFloat >, FTagDataDependencyNames, std::set< std::string > > createDecorators(const GraphConfig &config, const FTagOptions &options)
std::tuple< std::vector< std::pair< std::string, internal::VarFromJet > >, FTagDataDependencyNames > createBvarGetters(const std::vector< FTagInputConfig > &inputs)
std::tuple< std::function< char(const internal::Tracks &)>, std::vector< SG::AuxElement::Decorator< char > >, FTagDataDependencyNames, std::set< std::string > > createIpChecker(const GraphConfig &, const FTagOptions &)
void checkForUnusedRemaps(const std::map< std::string, std::string > &requested, const std::set< std::string > &used)
Jet_v1 Jet
Definition of the current "jet version".