244 if (flip_config != FlipTagConfig::STANDARD) {
245 rewriteFlipConfig(
config, flip_converters);
251 TypeRegexes type_regexes = {
252 {
".*_isDefaults"_r, EDMType::CHAR},
256 {
"IP[23]D(Neg)?_[pbc](b|c|u|tau)"_r, EDMType::FLOAT},
257 {
"SV1(Flip)?_[pbc](b|c|u|tau)"_r, EDMType::FLOAT},
258 {
"(rnnip|iprnn|(?:dips|DIPS)[^_]*)(flip)?_p(b|c|u|tau)"_r, EDMType::FLOAT},
259 {
"(JetFitter|SV1|JetFitterSecondaryVertex)(Flip)?_[Nn].*"_r, EDMType::INT},
260 {
"(JetFitter|SV1|JetFitterSecondaryVertex).*"_r, EDMType::FLOAT},
261 {
"(log_)?pt|abs_eta|eta|phi|energy|mass"_r, EDMType::CUSTOM_GETTER},
262 {
"softMuon_p[bcu]"_r, EDMType::FLOAT},
263 {
"softMuon_.*"_r, EDMType::FLOAT},
267 {
"IP2D_.*"_r,
"IP2D_isDefaults"},
268 {
"IP2DNeg_.*"_r,
"IP2DNeg_isDefaults"},
269 {
"IP3D_.*"_r,
"IP3D_isDefaults"},
270 {
"IP3DNeg_.*"_r,
"IP3DNeg_isDefaults"},
271 {
"SV1_.*"_r,
"SV1_isDefaults"},
272 {
"SV1Flip_.*"_r,
"SV1Flip_isDefaults"},
273 {
"JetFitter_.*"_r,
"JetFitter_isDefaults"},
274 {
"JetFitterFlip_.*"_r,
"JetFitterFlip_isDefaults"},
275 {
"JetFitterSecondaryVertex_.*"_r,
"JetFitterSecondaryVertex_isDefaults"},
276 {
"JetFitterSecondaryVertexFlip_.*"_r,
"JetFitterSecondaryVertexFlip_isDefaults"},
277 {
"rnnip_.*"_r,
"rnnip_isDefaults"},
278 {
"((?:dips|DIPS)[^_]*)_.*"_r,
"$1_isDefaults"},
279 {
"rnnipflip_.*"_r,
"rnnipflip_isDefaults"},
281 {
"smt_.*"_r,
"softMuon_isDefaults"},
282 {
"softMuon_.*"_r,
"softMuon_isDefaults"},
283 {
"((log_)?pt|abs_eta|eta|phi|energy|mass)"_r,
""}};
285 std::vector<FTagInputConfig> input_config;
288 remap_inputs(
node.variables, remap_scalar,
node.defaults);
290 std::vector<std::string> input_names;
291 for (
const auto&
var:
node.variables) {
292 input_names.push_back(
var.name);
297 if (!input_config.empty()) {
298 throw std::logic_error(
299 "We don't currently support multiple scalar input nodes");
301 input_config = get_input_config(input_names, type_regexes, default_flag_regexes);
305 std::vector<std::pair<std::string, std::vector<std::string>>> constituent_names;
307 remap_inputs(
node.variables, remap_scalar,
310 std::vector<std::string>
names;
311 for (
const auto&
var:
node.variables) {
317 std::vector<ConstituentsInputConfig> constituent_configs;
318 for (
auto el: constituent_names){
319 constituent_configs.push_back(
326 if (
auto h = remap_scalar.extract(
options.track_prefix)) {
329 if (
auto h = remap_scalar.extract(
options.track_link_name)) {
330 options.track_link_name =
h.mapped();
332 if (
auto h = remap_scalar.extract(
options.invalid_ip_key)) {
333 options.invalid_ip_key =
h.mapped();
336 options.remap_scalar = remap_scalar;
337 options.track_link_type = track_link_type;
338 return std::make_tuple(input_config, constituent_configs,
options);