ATLAS Offline Software
PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/StringUtils.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef STRINGUTILS_H
6 #define STRINGUTILS_H
7 
8 #include <string>
9 #include <regex>
10 #include <vector>
11 #include <map>
12 #include <set>
13 
14 namespace FlavorTagDiscriminants {
15 namespace str{
16  typedef std::vector<std::pair<std::regex, std::string> > StringRegexes;
17 
18  const std::string remapName(const std::string& name,
19  std::map<std::string, std::string>& remap,
20  std::set<std::string>& usedRemap);
21 
22  std::string sub_first(const StringRegexes& res,
23  const std::string& var_name,
24  const std::string& context);
25 
26  template <typename T>
27  T match_first(const std::vector<std::pair<std::regex, T> >& regexes,
28  const std::string& var_name,
29  const std::string& context) {
30  for (const auto& pair: regexes) {
31  if (std::regex_match(var_name, pair.first)) {
32  return pair.second;
33  }
34  }
35  throw std::logic_error(
36  "no regex match found for input variable '" + var_name + "' in "
37  + context);
38  }
39 
40 } // end namespace str
41 } // end namespace FlavorTagDiscriminants
42 #endif // STRINGUTILS_H
FlavorTagDiscriminants
This file contains "getter" functions used for accessing tagger inputs from the EDM.
Definition: AssociationEnums.h:11
CheckAppliedSFs.var_name
var_name
Definition: CheckAppliedSFs.py:241
FlavorTagDiscriminants::str::sub_first
std::string sub_first(const StringRegexes &res, const std::string &var_name, const std::string &context)
Definition: PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/StringUtils.cxx:19
FlavorTagDiscriminants::str::StringRegexes
std::vector< std::pair< std::regex, std::string > > StringRegexes
Definition: PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/StringUtils.h:16
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
FlavorTagDiscriminants::str::remapName
const std::string remapName(const std::string &name, std::map< std::string, std::string > &remap, std::set< std::string > &usedRemap)
Definition: PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/StringUtils.cxx:8
FlavorTagDiscriminants::str::match_first
T match_first(const std::vector< std::pair< std::regex, T > > &regexes, const std::string &var_name, const std::string &context)
Definition: PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/StringUtils.h:27
remap
std::map< std::string, std::string > remap
list of directories to be explicitly remapped
Definition: hcg.cxx:92
str
Definition: BTagTrackIpAccessor.cxx:11