ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
TrigTauInfo Class Reference

#include <TrigTauInfo.h>

Collaboration diagram for TrigTauInfo:

Public Member Functions

 TrigTauInfo ()
 
 TrigTauInfo (const std::string &trigger)
 
 TrigTauInfo (const std::string &trigger, const std::map< std::string, float > &L1Phase1_thresholds)
 
 TrigTauInfo (const std::string &trigger, const std::map< std::string, float > &L1Phase1_thresholds, const std::map< std::string, uint64_t > &L1Phase1_threshold_patterns)
 
 TrigTauInfo (const std::string &trigger, const std::map< int, int > &L1Phase1ThrMap_eTAU, const std::map< int, int > &L1Phase1ThrMap_jTAU)
 
const std::string & getTriggerName () const
 
bool isStreamer () const
 
float getHLTTauThreshold () const
 
const std::vector< float > & getHLTTauThresholds () const
 
const std::string getHLTTauType () const
 
const std::vector< std::string > & getHLTTauTypes () const
 
const std::string getHLTTauID () const
 
const std::vector< std::string > & getHLTTauIDs () const
 
const std::string & getTriggerL1Name () const
 
const std::vector< std::string > & getTriggerL1Items () const
 
const std::string getL1TauItem () const
 
const std::vector< std::string > & getL1TauItems () const
 
float getL1TauThreshold () const
 
const std::vector< float > & getL1TauThresholds () const
 
const std::string getL1TauType () const
 
const std::vector< std::string > & getL1TauTypes () const
 
const std::string getL1TauIsolation () const
 
const std::vector< std::string > & getL1TauIsolations () const
 
bool isL1TauIsolated (const size_t idx=0) const
 
bool areAnyL1TauIsolated () const
 
int64_t getL1TauThresholdPattern () const
 
const std::vector< int64_t > & getL1TauThresholdPatterns () const
 
bool isHLTSingleTau () const
 
bool isHLTDiTau () const
 
bool isHLTTandP () const
 
bool isL1TauOnly () const
 
bool isTauStreamer () const
 
bool hasHLTElectronLeg () const
 
bool hasHLTMuonLeg () const
 
bool hasHLTGammaLeg () const
 
bool hasHLTJetLeg () const
 
bool hasHLTMETLeg () const
 
float getHLTElecThreshold () const
 
const std::vector< float > & getHLTElecThresholds () const
 
float getHLTMuonThreshold () const
 
const std::vector< float > & getHLTMuonThresholds () const
 
float getHLTGammaThreshold () const
 
const std::vector< float > & getHLTGammaThresholds () const
 
float getHLTJetThreshold () const
 
const std::vector< float > & getHLTJetThresholds () const
 
float getHLTMETThreshold () const
 
const std::vector< float > & getHLTMETThresholds () const
 

Private Member Functions

bool is_number (const std::string &s)
 
void parseTriggerString (bool remove_L1_phase1_thresholds=true)
 
void parseTriggerString (const std::map< std::string, float > &L1Phase1_thresholds)
 
void parseTriggerString (const std::map< std::string, float > &L1Phase1_thresholds, const std::map< std::string, uint64_t > &L1Phase1_threshold_patterns)
 
void parseTriggerString (const std::map< int, int > &L1Phase1ThrMap_eTAU, const std::map< int, int > &L1Phase1ThrMap_jTAU)
 

Private Attributes

std::string m_trigger
 
bool m_isStreamer = false
 
std::vector< float > m_HLTThr
 
std::vector< std::string > m_HLTTauTypes
 
std::vector< std::string > m_HLTTauIDs
 
std::string m_L1Item
 
std::vector< std::string > m_L1Items
 
std::vector< float > m_tauL1Thr
 
std::vector< std::string > m_tauL1Items
 
std::vector< std::string > m_tauL1Type
 
std::vector< std::string > m_tauL1Iso
 
std::vector< int64_t > m_tauL1ThresholdPattern
 
std::vector< float > m_HLTElecThr
 
std::vector< float > m_HLTMuonThr
 
std::vector< float > m_HLTGammaThr
 
std::vector< float > m_HLTJetThr
 
std::vector< float > m_HLTMETThr
 

Detailed Description

Definition at line 15 of file TrigTauInfo.h.

Constructor & Destructor Documentation

◆ TrigTauInfo() [1/5]

TrigTauInfo::TrigTauInfo ( )
inline

Definition at line 17 of file TrigTauInfo.h.

17 {} // Required for the dictionary

◆ TrigTauInfo() [2/5]

TrigTauInfo::TrigTauInfo ( const std::string &  trigger)

Definition at line 7 of file TrigTauInfo.cxx.

8  : m_trigger{trigger}
9 {
11 }

◆ TrigTauInfo() [3/5]

TrigTauInfo::TrigTauInfo ( const std::string &  trigger,
const std::map< std::string, float > &  L1Phase1_thresholds 
)

Definition at line 13 of file TrigTauInfo.cxx.

14  : m_trigger{trigger}
15 {
16  parseTriggerString(L1Phase1_thresholds);
17 }

◆ TrigTauInfo() [4/5]

TrigTauInfo::TrigTauInfo ( const std::string &  trigger,
const std::map< std::string, float > &  L1Phase1_thresholds,
const std::map< std::string, uint64_t > &  L1Phase1_threshold_patterns 
)

Definition at line 19 of file TrigTauInfo.cxx.

20  : m_trigger{trigger}
21 {
22  parseTriggerString(L1Phase1_thresholds, L1Phase1_threshold_patterns);
23 }

◆ TrigTauInfo() [5/5]

TrigTauInfo::TrigTauInfo ( const std::string &  trigger,
const std::map< int, int > &  L1Phase1ThrMap_eTAU,
const std::map< int, int > &  L1Phase1ThrMap_jTAU 
)

Definition at line 25 of file TrigTauInfo.cxx.

26  : m_trigger{trigger}
27 {
28  parseTriggerString(L1Phase1ThrMap_eTAU, L1Phase1ThrMap_jTAU);
29 }

Member Function Documentation

◆ areAnyL1TauIsolated()

bool TrigTauInfo::areAnyL1TauIsolated ( ) const
inline

Definition at line 44 of file TrigTauInfo.h.

44 { for(const std::string& iso : m_tauL1Iso) { if(iso.size()) return true; }; return false; } // Returns true any of the L1 items are isolated

◆ getHLTElecThreshold()

float TrigTauInfo::getHLTElecThreshold ( ) const
inline

Definition at line 60 of file TrigTauInfo.h.

60 { return m_HLTElecThr.size() ? m_HLTElecThr[0] : -1; } // Returns the main leg threshold

◆ getHLTElecThresholds()

const std::vector<float>& TrigTauInfo::getHLTElecThresholds ( ) const
inline

Definition at line 61 of file TrigTauInfo.h.

61 { return m_HLTElecThr; }

◆ getHLTGammaThreshold()

float TrigTauInfo::getHLTGammaThreshold ( ) const
inline

Definition at line 64 of file TrigTauInfo.h.

64 { return m_HLTGammaThr.size() ? m_HLTGammaThr[0] : -1; } // Returns the main leg threshold

◆ getHLTGammaThresholds()

const std::vector<float>& TrigTauInfo::getHLTGammaThresholds ( ) const
inline

Definition at line 65 of file TrigTauInfo.h.

65 { return m_HLTGammaThr; }

◆ getHLTJetThreshold()

float TrigTauInfo::getHLTJetThreshold ( ) const
inline

Definition at line 66 of file TrigTauInfo.h.

66 { return m_HLTJetThr.size() ? m_HLTJetThr[0] : -1; } // Returns the main leg threshold

◆ getHLTJetThresholds()

const std::vector<float>& TrigTauInfo::getHLTJetThresholds ( ) const
inline

Definition at line 67 of file TrigTauInfo.h.

67 { return m_HLTJetThr; }

◆ getHLTMETThreshold()

float TrigTauInfo::getHLTMETThreshold ( ) const
inline

Definition at line 68 of file TrigTauInfo.h.

68 { return m_HLTMETThr.size() ? m_HLTMETThr[0] : -1; } // Returns the main leg threshold

◆ getHLTMETThresholds()

const std::vector<float>& TrigTauInfo::getHLTMETThresholds ( ) const
inline

Definition at line 69 of file TrigTauInfo.h.

69 { return m_HLTMETThr; }

◆ getHLTMuonThreshold()

float TrigTauInfo::getHLTMuonThreshold ( ) const
inline

Definition at line 62 of file TrigTauInfo.h.

62 { return m_HLTMuonThr.size() ? m_HLTMuonThr[0] : -1; } // Returns the main leg threshold

◆ getHLTMuonThresholds()

const std::vector<float>& TrigTauInfo::getHLTMuonThresholds ( ) const
inline

Definition at line 63 of file TrigTauInfo.h.

63 { return m_HLTMuonThr; }

◆ getHLTTauID()

const std::string TrigTauInfo::getHLTTauID ( ) const
inline

Definition at line 30 of file TrigTauInfo.h.

30 { return m_HLTTauIDs.size() ? m_HLTTauIDs[0] : ""; } // Returns the main HLT tau leg ID algorithm

◆ getHLTTauIDs()

const std::vector<std::string>& TrigTauInfo::getHLTTauIDs ( ) const
inline

Definition at line 31 of file TrigTauInfo.h.

31 { return m_HLTTauIDs; }

◆ getHLTTauThreshold()

float TrigTauInfo::getHLTTauThreshold ( ) const
inline

Definition at line 26 of file TrigTauInfo.h.

26 { return m_HLTThr.size() ? m_HLTThr[0] : -1; } // Returns the main HLT threshold

◆ getHLTTauThresholds()

const std::vector<float>& TrigTauInfo::getHLTTauThresholds ( ) const
inline

Definition at line 27 of file TrigTauInfo.h.

27 { return m_HLTThr; }

◆ getHLTTauType()

const std::string TrigTauInfo::getHLTTauType ( ) const
inline

Definition at line 28 of file TrigTauInfo.h.

28 { return m_HLTTauTypes.size() ? m_HLTTauTypes[0] : ""; } // Returns the main HLT tau leg type

◆ getHLTTauTypes()

const std::vector<std::string>& TrigTauInfo::getHLTTauTypes ( ) const
inline

Definition at line 29 of file TrigTauInfo.h.

29 { return m_HLTTauTypes; }

◆ getL1TauIsolation()

const std::string TrigTauInfo::getL1TauIsolation ( ) const
inline

Definition at line 41 of file TrigTauInfo.h.

41 { return m_tauL1Iso.size() ? m_tauL1Iso[0] : ""; } // Returns the main L1 item isolation

◆ getL1TauIsolations()

const std::vector<std::string>& TrigTauInfo::getL1TauIsolations ( ) const
inline

Definition at line 42 of file TrigTauInfo.h.

42 { return m_tauL1Iso; }

◆ getL1TauItem()

const std::string TrigTauInfo::getL1TauItem ( ) const
inline

Definition at line 35 of file TrigTauInfo.h.

35 { return m_tauL1Items.size() ? m_tauL1Items[0] : ""; } // Returns the main L1 tau item

◆ getL1TauItems()

const std::vector<std::string>& TrigTauInfo::getL1TauItems ( ) const
inline

Definition at line 36 of file TrigTauInfo.h.

36 { return m_tauL1Items; }

◆ getL1TauThreshold()

float TrigTauInfo::getL1TauThreshold ( ) const
inline

Definition at line 37 of file TrigTauInfo.h.

37 { return m_tauL1Thr.size() ? m_tauL1Thr[0] : -1; } // Returns the main L1 item threshold

◆ getL1TauThresholdPattern()

int64_t TrigTauInfo::getL1TauThresholdPattern ( ) const
inline

Definition at line 45 of file TrigTauInfo.h.

45 { return m_tauL1ThresholdPattern.size() ? m_tauL1ThresholdPattern[0] : -1; } // Returns the main L1 item thresholdPattern mask

◆ getL1TauThresholdPatterns()

const std::vector<int64_t>& TrigTauInfo::getL1TauThresholdPatterns ( ) const
inline

Definition at line 46 of file TrigTauInfo.h.

46 { return m_tauL1ThresholdPattern; }

◆ getL1TauThresholds()

const std::vector<float>& TrigTauInfo::getL1TauThresholds ( ) const
inline

Definition at line 38 of file TrigTauInfo.h.

38 { return m_tauL1Thr; }

◆ getL1TauType()

const std::string TrigTauInfo::getL1TauType ( ) const
inline

Definition at line 39 of file TrigTauInfo.h.

39 { return m_tauL1Items.size() ? m_tauL1Type[0] : ""; } // Returns the main L1 item type

◆ getL1TauTypes()

const std::vector<std::string>& TrigTauInfo::getL1TauTypes ( ) const
inline

Definition at line 40 of file TrigTauInfo.h.

40 { return m_tauL1Type; }

◆ getTriggerL1Items()

const std::vector<std::string>& TrigTauInfo::getTriggerL1Items ( ) const
inline

Definition at line 34 of file TrigTauInfo.h.

34 { return m_L1Items; }

◆ getTriggerL1Name()

const std::string& TrigTauInfo::getTriggerL1Name ( ) const
inline

Definition at line 33 of file TrigTauInfo.h.

33 { return m_L1Item; }

◆ getTriggerName()

const std::string& TrigTauInfo::getTriggerName ( ) const
inline

Definition at line 23 of file TrigTauInfo.h.

23 { return m_trigger; }

◆ hasHLTElectronLeg()

bool TrigTauInfo::hasHLTElectronLeg ( ) const
inline

Definition at line 54 of file TrigTauInfo.h.

54 { return m_HLTElecThr.size() >= 1; }

◆ hasHLTGammaLeg()

bool TrigTauInfo::hasHLTGammaLeg ( ) const
inline

Definition at line 56 of file TrigTauInfo.h.

56 { return m_HLTGammaThr.size() >= 1; }

◆ hasHLTJetLeg()

bool TrigTauInfo::hasHLTJetLeg ( ) const
inline

Definition at line 57 of file TrigTauInfo.h.

57 { return m_HLTJetThr.size() >= 1; }

◆ hasHLTMETLeg()

bool TrigTauInfo::hasHLTMETLeg ( ) const
inline

Definition at line 58 of file TrigTauInfo.h.

58 { return m_HLTMETThr.size() >= 1; }

◆ hasHLTMuonLeg()

bool TrigTauInfo::hasHLTMuonLeg ( ) const
inline

Definition at line 55 of file TrigTauInfo.h.

55 { return m_HLTMuonThr.size() >= 1; }

◆ is_number()

bool TrigTauInfo::is_number ( const std::string &  s)
inlineprivate

Definition at line 92 of file TrigTauInfo.h.

92  {
93  return !s.empty() && std::find_if(s.begin(), s.end(), [](unsigned char c) {return !std::isdigit(c);}) == s.end();
94  }

◆ isHLTDiTau()

bool TrigTauInfo::isHLTDiTau ( ) const
inline

Definition at line 49 of file TrigTauInfo.h.

49 { return m_HLTThr.size() > 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }

◆ isHLTSingleTau()

bool TrigTauInfo::isHLTSingleTau ( ) const
inline

Definition at line 48 of file TrigTauInfo.h.

48 { return m_HLTThr.size() == 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }

◆ isHLTTandP()

bool TrigTauInfo::isHLTTandP ( ) const
inline

Definition at line 50 of file TrigTauInfo.h.

50 { return m_HLTThr.size() == 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size()) == 1 && (m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }

◆ isL1TauIsolated()

bool TrigTauInfo::isL1TauIsolated ( const size_t  idx = 0) const
inline

Definition at line 43 of file TrigTauInfo.h.

43 { return idx < m_tauL1Iso.size() ? m_tauL1Iso[idx].size() : false; } // Returns true if the (main by default) L1 item is isolated

◆ isL1TauOnly()

bool TrigTauInfo::isL1TauOnly ( ) const
inline

Definition at line 51 of file TrigTauInfo.h.

51 { return (m_HLTThr.size() + m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0 && !m_tauL1Items.empty(); }

◆ isStreamer()

bool TrigTauInfo::isStreamer ( ) const
inline

Definition at line 24 of file TrigTauInfo.h.

24 { return m_isStreamer; }

◆ isTauStreamer()

bool TrigTauInfo::isTauStreamer ( ) const
inline

Definition at line 52 of file TrigTauInfo.h.

52 { return m_isStreamer && !m_tauL1Items.empty(); }

◆ parseTriggerString() [1/4]

void TrigTauInfo::parseTriggerString ( bool  remove_L1_phase1_thresholds = true)
private

Definition at line 31 of file TrigTauInfo.cxx.

32 {
33  std::string clean_trigger = m_trigger;
34 
35  // Change the "L1_" prefix to "L1" internally, in case the trigger being parsed is a pure L1 trigger with the usual L1 standalone naming scheme
36  if(clean_trigger.size() > 3 && clean_trigger.rfind("L1_", 0) == 0) {
37  clean_trigger = "L1" + clean_trigger.substr(3);
38  }
39 
40  std::vector<std::string> sections;
41  boost::split(sections, m_trigger, boost::is_any_of("_"));
42 
43  std::regex tau_rgx("^(\\d*)tau(\\d+)$");
44  std::regex elec_rgx("^(\\d*)e(\\d+)$");
45  std::regex muon_rgx("^(\\d*)mu(\\d+)$");
46  std::regex gamma_rgx("^(\\d*)g(\\d+)$");
47  std::regex jet_rgx("^(\\d*)j(\\d+)$");
48  std::regex met_rgx("^xe(\\d+)$");
49  std::regex noalg_rgx("^noalg$");
50  std::regex l1_rgx("^L1.*$");
51  std::regex l1_tau_rgx("(\\d*)(e|j|c|)TAU(\\d+)(L|M|T|HL|HM|HT|H|IM|I|)");
52  std::regex l1_toposeparate_rgx("^(\\d{0,2})(DETA|DPHI)(\\d{0,2})$");
53  std::regex topo_rgx("^.*(invm|dR|deta|dphi)AB.*$");
54  std::vector<std::regex*> all_regexes = {&tau_rgx, &elec_rgx, &muon_rgx, &gamma_rgx, &jet_rgx, &met_rgx, &l1_rgx};
55 
56  std::regex tau_type_rgx("^(ptonly|tracktwoMVA|tracktwoMVABDT|tracktwoLLP|trackLRT)$");
57  std::regex tau_ID_rgx("^(perf|idperf|veryloose.*|loose.*|medium.*|tight.*)$");
58 
59  std::smatch match;
60  std::regex_token_iterator<std::string::iterator> rend;
61 
62  // Check each leg
63  std::vector<std::string> leg;
64  for(size_t i = 0; i < sections.size(); i++) {
65  leg.push_back(sections[i]); // Attach to the current leg
66 
67  //Match the beginning of a new leg, or the end of the chain
68  if(i == sections.size() - 1 || (std::any_of(all_regexes.begin(), all_regexes.end(), [&sections, i](const std::regex* rgx) { return std::regex_match(sections[i+1], *rgx); }))) {
69  // Process the previous leg, which starts with the item, multiplicity, and threshold
70  if(std::regex_match(leg[0], match, tau_rgx)) {
71  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
72  unsigned int threshold = std::stoi(match[2].str());
73 
74  // HLT Tau sequence
75  auto itr = find_if(leg.begin(), leg.end(), [tau_type_rgx](const std::string& s) { return std::regex_match(s, tau_type_rgx); });
76  std::string type = itr != leg.end() ? *itr : "";
77 
78  // HLT Tau ID
79  itr = find_if(leg.begin(), leg.end(), [tau_ID_rgx](const std::string& s) { return std::regex_match(s, tau_ID_rgx); });
80  std::string tau_id = itr != leg.end() ? *itr : "";
81  if(boost::starts_with(tau_id, "veryloose")) tau_id = tau_id.substr(9);
82  else if(boost::starts_with(tau_id, "loose")) tau_id = tau_id.substr(5);
83  else if(boost::starts_with(tau_id, "medium")) tau_id = tau_id.substr(6);
84  else if(boost::starts_with(tau_id, "tight")) tau_id = tau_id.substr(5);
85 
86  // Override for the old trigger names
87  if(tau_id == "RNN") {
88  if(type == "tracktwoMVA") tau_id = "DeepSet";
89  if(type == "tracktwoLLP" || type == "trackLRT") tau_id = "RNNLLP";
90  }
91 
92  // Replacements (this is temprary, the entire TrigTauInfo class will be removed soon, and all this will be handled centrally in Python using the already available infrastructure)
93  if(tau_id == "DS") tau_id = "DeepSet";
94  else if(tau_id == "GNT") tau_id = "GNTau";
95 
96  for(size_t j = 0; j < multiplicity; j++) {
97  m_HLTThr.push_back(threshold);
98  m_HLTTauTypes.push_back(type);
99  m_HLTTauIDs.push_back(tau_id);
100  }
101  } else if(std::regex_match(leg[0], match, elec_rgx)) {
102  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
103  unsigned int threshold = std::stoi(match[2].str());
104  for(size_t j = 0; j < multiplicity; j++) m_HLTElecThr.push_back(threshold);
105  } else if(std::regex_match(leg[0], match, muon_rgx)) {
106  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
107  unsigned int threshold = std::stoi(match[2].str());
108  for(size_t j = 0; j < multiplicity; j++) m_HLTMuonThr.push_back(threshold);
109  } else if(std::regex_match(leg[0], match, gamma_rgx)) {
110  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
111  unsigned int threshold = std::stoi(match[2].str());
112  for(size_t j = 0; j < multiplicity; j++) m_HLTGammaThr.push_back(threshold);
113  } else if(std::regex_match(leg[0], match, jet_rgx)) {
114  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
115  unsigned int threshold = std::stoi(match[2].str());
116  for(size_t j = 0; j < multiplicity; j++) m_HLTJetThr.push_back(threshold);
117  } else if(std::regex_match(leg[0], match, met_rgx)) {
118  unsigned int threshold = std::stoi(match[2].str());
119  m_HLTMETThr.push_back(threshold);
120  } else if(std::regex_match(leg[0], match, noalg_rgx)) {
121  m_isStreamer = true;
122  } else if(std::regex_match(leg[0], l1_rgx)) { // Treat the L1 items as a leg
123  for(size_t j = 0; j < leg.size(); j++) {
124  if(std::regex_match(leg[j], topo_rgx)) continue; // Remove HLT topo sections, not part of the L1 item
125 
126  // L1Topo items (they all include a "-" in the name, or have a separate "##DETA/PHI##_" prefix):
127  if(leg[j].find('-') != std::string::npos || std::regex_match(leg[j], l1_toposeparate_rgx)) {
128  // We only keep information from the legacy L1Topo item, from which we will not always use all thresholds
129  // Since we won't be adding any more Legacy thresholds, let's hard-code it...
130  if(leg[0] == "L1TAU60" && leg[j] == "DR-TAU12ITAU12I") leg[j] = "TAU12IM"; // L1_TAU60_DR-TAU20ITAU12I, uses "TAU12IM" threshold from the L1Topo item
131  else if(leg.size() == 1 && (leg[0] == "L1DR-TAU20ITAU12I" || leg[0] == "L1DR-TAU20ITAU12I-J25")) {
132  // Uses both TAU items, in the M isolation threshold
133  leg[0] = "L1TAU20IM";
134  leg.push_back("TAU12IM");
135  // Even on combined chains using jets, we don't use the jets threshold
136  }
137  else continue; // Remove the Phase 1 L1Topo items, since we always use a multiplicity threshold
138  }
139 
140  m_L1Items.push_back(j == 0 ? leg[j].substr(2, leg[j].size()) : leg[j]); // Remove the "L1" prefix on the first L1 item
141  }
142  }
143 
144  // Start a new leg
145  leg = {};
146  }
147  }
148 
149  if(!m_L1Items.empty()) {
150  // Build the full L1 string
151  m_L1Item = m_L1Items[0];
152  for(size_t j = 1; j < m_L1Items.size(); j++) m_L1Item += "_" + m_L1Items[j];
153 
154  // Get all individual L1 TAU items
155  std::regex_token_iterator<std::string::iterator> rgx_iter(m_L1Item.begin(), m_L1Item.end(), l1_tau_rgx);
156  while(rgx_iter != rend) {
157  std::string s = *rgx_iter;
158  std::regex_match(s, match, l1_tau_rgx);
159  size_t multiplicity = match[1].str() == "" ? 1 : std::stoi(match[1].str());
160  std::string item_type = match[2].str(); // e, j, c, or ""
161  int threshold = std::stoi(match[3].str());
162  std::string item_isolation = match[4].str(); // "", L, M, T, HL, HM, HT, IM, H
163 
164  // Set the Phase 1 thresholds to -1
165  if(remove_L1_phase1_thresholds && (item_type == "e" || item_type == "j" || item_type == "c")) threshold = -1;
166 
167  for(size_t j = 0; j < multiplicity; j++) {
168  m_tauL1Items.push_back(s.substr(match[1].str().size()));
169  m_tauL1Thr.push_back(threshold);
170  m_tauL1Type.push_back(item_type + "TAU");
171  m_tauL1Iso.push_back(item_isolation);
172  m_tauL1ThresholdPattern.push_back(-1);
173  }
174  rgx_iter++;
175  }
176 
177  m_L1Item = "L1" + m_L1Items[0];
178  }
179 }

◆ parseTriggerString() [2/4]

void TrigTauInfo::parseTriggerString ( const std::map< int, int > &  L1Phase1ThrMap_eTAU,
const std::map< int, int > &  L1Phase1ThrMap_jTAU 
)
private

Definition at line 208 of file TrigTauInfo.cxx.

209 {
210  parseTriggerString(false);
211 
212  // Correct the Phase 1 thresholds:
213  for(size_t i = 0; i < m_tauL1Items.size(); i++) {
214  const std::string& item_type = m_tauL1Type.at(i);
215  if(item_type == "eTAU" || item_type == "cTAU") {
216  m_tauL1Thr[i] = L1Phase1ThrMap_eTAU.at(m_tauL1Thr.at(i));
217  } else if(item_type == "jTAU") {
218  m_tauL1Thr[i] = L1Phase1ThrMap_jTAU.at(m_tauL1Thr.at(i));
219  }
220  }
221 }

◆ parseTriggerString() [3/4]

void TrigTauInfo::parseTriggerString ( const std::map< std::string, float > &  L1Phase1_thresholds)
private

Definition at line 181 of file TrigTauInfo.cxx.

182 {
184 
185  for(size_t i = 0; i < m_tauL1Items.size(); i++) {
186  if(m_tauL1Type.at(i) == "TAU") continue; // Skip the legacy items
187 
188  const std::string& item = m_tauL1Items.at(i);
189 
190  m_tauL1Thr[i] = L1Phase1_thresholds.at(item);
191  }
192 }

◆ parseTriggerString() [4/4]

void TrigTauInfo::parseTriggerString ( const std::map< std::string, float > &  L1Phase1_thresholds,
const std::map< std::string, uint64_t > &  L1Phase1_threshold_patterns 
)
private

Definition at line 194 of file TrigTauInfo.cxx.

195 {
197 
198  for(size_t i = 0; i < m_tauL1Items.size(); i++) {
199  if(m_tauL1Type.at(i) == "TAU") continue; // Skip the legacy items
200 
201  const std::string& item = m_tauL1Items.at(i);
202 
203  m_tauL1Thr[i] = L1Phase1_thresholds.at(item);
204  m_tauL1ThresholdPattern[i] = L1Phase1_threshold_patterns.at(item);
205  }
206 }

Member Data Documentation

◆ m_HLTElecThr

std::vector<float> TrigTauInfo::m_HLTElecThr
private

Definition at line 86 of file TrigTauInfo.h.

◆ m_HLTGammaThr

std::vector<float> TrigTauInfo::m_HLTGammaThr
private

Definition at line 88 of file TrigTauInfo.h.

◆ m_HLTJetThr

std::vector<float> TrigTauInfo::m_HLTJetThr
private

Definition at line 89 of file TrigTauInfo.h.

◆ m_HLTMETThr

std::vector<float> TrigTauInfo::m_HLTMETThr
private

Definition at line 90 of file TrigTauInfo.h.

◆ m_HLTMuonThr

std::vector<float> TrigTauInfo::m_HLTMuonThr
private

Definition at line 87 of file TrigTauInfo.h.

◆ m_HLTTauIDs

std::vector<std::string> TrigTauInfo::m_HLTTauIDs
private

Definition at line 76 of file TrigTauInfo.h.

◆ m_HLTTauTypes

std::vector<std::string> TrigTauInfo::m_HLTTauTypes
private

Definition at line 75 of file TrigTauInfo.h.

◆ m_HLTThr

std::vector<float> TrigTauInfo::m_HLTThr
private

Definition at line 74 of file TrigTauInfo.h.

◆ m_isStreamer

bool TrigTauInfo::m_isStreamer = false
private

Definition at line 73 of file TrigTauInfo.h.

◆ m_L1Item

std::string TrigTauInfo::m_L1Item
private

Definition at line 78 of file TrigTauInfo.h.

◆ m_L1Items

std::vector<std::string> TrigTauInfo::m_L1Items
private

Definition at line 79 of file TrigTauInfo.h.

◆ m_tauL1Iso

std::vector<std::string> TrigTauInfo::m_tauL1Iso
private

Definition at line 83 of file TrigTauInfo.h.

◆ m_tauL1Items

std::vector<std::string> TrigTauInfo::m_tauL1Items
private

Definition at line 81 of file TrigTauInfo.h.

◆ m_tauL1Thr

std::vector<float> TrigTauInfo::m_tauL1Thr
private

Definition at line 80 of file TrigTauInfo.h.

◆ m_tauL1ThresholdPattern

std::vector<int64_t> TrigTauInfo::m_tauL1ThresholdPattern
private

Definition at line 84 of file TrigTauInfo.h.

◆ m_tauL1Type

std::vector<std::string> TrigTauInfo::m_tauL1Type
private

Definition at line 82 of file TrigTauInfo.h.

◆ m_trigger

std::string TrigTauInfo::m_trigger
private

Definition at line 72 of file TrigTauInfo.h.


The documentation for this class was generated from the following files:
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TrigTauInfo::m_HLTElecThr
std::vector< float > m_HLTElecThr
Definition: TrigTauInfo.h:86
TrigTauInfo::m_HLTTauIDs
std::vector< std::string > m_HLTTauIDs
Definition: TrigTauInfo.h:76
TrigTauInfo::m_L1Item
std::string m_L1Item
Definition: TrigTauInfo.h:78
TrigTauInfo::m_HLTMETThr
std::vector< float > m_HLTMETThr
Definition: TrigTauInfo.h:90
TrigTauInfo::m_isStreamer
bool m_isStreamer
Definition: TrigTauInfo.h:73
TrigTauInfo::m_L1Items
std::vector< std::string > m_L1Items
Definition: TrigTauInfo.h:79
TrigTauInfo::m_HLTMuonThr
std::vector< float > m_HLTMuonThr
Definition: TrigTauInfo.h:87
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
lumiFormat.i
int i
Definition: lumiFormat.py:85
TrigTauInfo::m_tauL1ThresholdPattern
std::vector< int64_t > m_tauL1ThresholdPattern
Definition: TrigTauInfo.h:84
TrigTauInfo::m_trigger
std::string m_trigger
Definition: TrigTauInfo.h:72
compute_lumi.leg
leg
Definition: compute_lumi.py:95
TrigTauInfo::m_HLTJetThr
std::vector< float > m_HLTJetThr
Definition: TrigTauInfo.h:89
TrigTauInfo::m_tauL1Items
std::vector< std::string > m_tauL1Items
Definition: TrigTauInfo.h:81
TrigTauInfo::m_HLTTauTypes
std::vector< std::string > m_HLTTauTypes
Definition: TrigTauInfo.h:75
threshold
Definition: chainparser.cxx:74
item
Definition: ItemListSvc.h:43
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
TrigTauInfo::m_HLTGammaThr
std::vector< float > m_HLTGammaThr
Definition: TrigTauInfo.h:88
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TrigTauInfo::m_tauL1Type
std::vector< std::string > m_tauL1Type
Definition: TrigTauInfo.h:82
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TrigTauInfo::m_tauL1Iso
std::vector< std::string > m_tauL1Iso
Definition: TrigTauInfo.h:83
python.prefilter_mask.rgx
rgx
Definition: prefilter_mask.py:14
TrigTauInfo::m_tauL1Thr
std::vector< float > m_tauL1Thr
Definition: TrigTauInfo.h:80
python.compressB64.c
def c
Definition: compressB64.py:93
TrigTauInfo::parseTriggerString
void parseTriggerString(bool remove_L1_phase1_thresholds=true)
Definition: TrigTauInfo.cxx:31
TrigTauInfo::m_HLTThr
std::vector< float > m_HLTThr
Definition: TrigTauInfo.h:74
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356