ATLAS Offline Software
TrigTauInfo.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGTAUMONITORING_TRIGTAUINFO_H
6 #define TRIGTAUMONITORING_TRIGTAUINFO_H
7 
8 #include <string>
9 #include <regex>
10 #include <map>
11 #include <iostream>
12 
13 #include <boost/algorithm/string.hpp>
14 
15 class TrigTauInfo {
16 public:
17  TrigTauInfo() {} // Required for the dictionary
18  TrigTauInfo(const std::string& trigger);
19  TrigTauInfo(const std::string& trigger, const std::map<std::string, float>& L1Phase1_thresholds);
20  TrigTauInfo(const std::string& trigger, const std::map<std::string, float>& L1Phase1_thresholds, const std::map<std::string, uint64_t>& L1Phase1_threshold_patterns);
21  TrigTauInfo(const std::string& trigger, const std::map<int, int>& L1Phase1ThrMap_eTAU, const std::map<int, int>& L1Phase1ThrMap_jTAU);
22 
23  inline const std::string& getTriggerName() const { return m_trigger; }
24  inline bool isStreamer() const { return m_isStreamer; }
25 
26  inline float getHLTTauThreshold() const { return m_HLTThr.size() ? m_HLTThr[0] : -1; } // Returns the main HLT threshold
27  inline const std::vector<float>& getHLTTauThresholds() const { return m_HLTThr; }
28  inline const std::string getHLTTauType() const { return m_HLTTauTypes.size() ? m_HLTTauTypes[0] : ""; } // Returns the main HLT tau leg type
29  inline const std::vector<std::string>& getHLTTauTypes() const { return m_HLTTauTypes; }
30 
31  inline const std::string& getTriggerL1Name() const { return m_L1Item; }
32  inline const std::vector<std::string>& getTriggerL1Items() const { return m_L1Items; }
33  inline const std::string getL1TauItem() const { return m_tauL1Items.size() ? m_tauL1Items[0] : ""; } // Returns the main L1 tau item
34  inline const std::vector<std::string>& getL1TauItems() const { return m_tauL1Items; }
35  inline float getL1TauThreshold() const { return m_tauL1Thr.size() ? m_tauL1Thr[0] : -1; } // Returns the main L1 item threshold
36  inline const std::vector<float>& getL1TauThresholds() const { return m_tauL1Thr; }
37  inline const std::string getL1TauType() const { return m_tauL1Items.size() ? m_tauL1Type[0] : ""; } // Returns the main L1 item type
38  inline const std::vector<std::string>& getL1TauTypes() const { return m_tauL1Type; }
39  inline const std::string getL1TauIsolation() const { return m_tauL1Iso.size() ? m_tauL1Iso[0] : ""; } // Returns the main L1 item isolation
40  inline const std::vector<std::string>& getL1TauIsolations() const { return m_tauL1Iso; }
41  inline bool isL1TauIsolated(const size_t idx = 0) const { return idx < m_tauL1Iso.size() ? m_tauL1Iso[idx].size() : false; } // Returns true if the (main by default) L1 item is isolated
42  inline bool areAnyL1TauIsolated() const { for(const std::string& iso : m_tauL1Iso) { if(iso.size()) return true; }; return false; } // Returns true any of the L1 items are isolated
43  inline int64_t getL1TauThresholdPattern() const { return m_tauL1ThresholdPattern.size() ? m_tauL1ThresholdPattern[0] : -1; } // Returns the main L1 item thresholdPattern mask
44  inline const std::vector<int64_t>& getL1TauThresholdPatterns() const { return m_tauL1ThresholdPattern; }
45 
46  inline bool isHLTSingleTau() const { return m_HLTThr.size() == 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }
47  inline bool isHLTDiTau() const { return m_HLTThr.size() > 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }
48  inline bool isHLTTandP() const { return m_HLTThr.size() == 1 && (m_HLTElecThr.size() + m_HLTMuonThr.size()) == 1 && (m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0; }
49  inline bool isL1TauOnly() const { return (m_HLTThr.size() + m_HLTElecThr.size() + m_HLTMuonThr.size() + m_HLTGammaThr.size() + m_HLTJetThr.size() + m_HLTMETThr.size()) == 0 && !m_tauL1Items.empty(); }
50  inline bool isTauStreamer() const { return m_isStreamer && !m_tauL1Items.empty(); }
51 
52  inline bool hasHLTElectronLeg() const { return m_HLTElecThr.size() >= 1; }
53  inline bool hasHLTMuonLeg() const { return m_HLTMuonThr.size() >= 1; }
54  inline bool hasHLTGammaLeg() const { return m_HLTGammaThr.size() >= 1; }
55  inline bool hasHLTJetLeg() const { return m_HLTJetThr.size() >= 1; }
56  inline bool hasHLTMETLeg() const { return m_HLTMETThr.size() >= 1; }
57 
58  inline float getHLTElecThreshold() const { return m_HLTElecThr.size() ? m_HLTElecThr[0] : -1; } // Returns the main leg threshold
59  inline const std::vector<float>& getHLTElecThresholds() const { return m_HLTElecThr; }
60  inline float getHLTMuonThreshold() const { return m_HLTMuonThr.size() ? m_HLTMuonThr[0] : -1; } // Returns the main leg threshold
61  inline const std::vector<float>& getHLTMuonThresholds() const { return m_HLTMuonThr; }
62  inline float getHLTGammaThreshold() const { return m_HLTGammaThr.size() ? m_HLTGammaThr[0] : -1; } // Returns the main leg threshold
63  inline const std::vector<float>& getHLTGammaThresholds() const { return m_HLTGammaThr; }
64  inline float getHLTJetThreshold() const { return m_HLTJetThr.size() ? m_HLTJetThr[0] : -1; } // Returns the main leg threshold
65  inline const std::vector<float>& getHLTJetThresholds() const { return m_HLTJetThr; }
66  inline float getHLTMETThreshold() const { return m_HLTMETThr.size() ? m_HLTMETThr[0] : -1; } // Returns the main leg threshold
67  inline const std::vector<float>& getHLTMETThresholds() const { return m_HLTMETThr; }
68 
69 private:
70  std::string m_trigger; // Full trigger name (e.g. HLT_tau25_mediumRNN_tracktwoMVA_L1eTAU20)
71  bool m_isStreamer = false; // Is a streamer HLT trigger
72  std::vector<float> m_HLTThr; // List of all tau thresholds
73  std::vector<std::string> m_HLTTauTypes; // Type for each tau leg (e.g. tracktwoMVA, trackwoLLP, etc...)
74 
75  std::string m_L1Item; // full L1 trigger string (e.g. L1eTAU20, or L1eTAU80_2eTAU60)
76  std::vector<std::string> m_L1Items; // full L1 trigger items
77  std::vector<float> m_tauL1Thr; // L1 Tau item thresholds, corrected for Phase1 items
78  std::vector<std::string> m_tauL1Items; // Individual l1 tau items
79  std::vector<std::string> m_tauL1Type; // Individual l1 tau item type (eTAU, jTAU, cTAU, TAU)
80  std::vector<std::string> m_tauL1Iso; // Individual l1 tau item isolation ("", L, M, T, HL, HM, HT, H, IM)
81  std::vector<int64_t> m_tauL1ThresholdPattern; // Individual l1 tau item thresholdPattern mask
82 
83  std::vector<float> m_HLTElecThr; // List of all electron leg thresholds
84  std::vector<float> m_HLTMuonThr; // List of all muon leg thresholds
85  std::vector<float> m_HLTGammaThr; // List of all photon leg thresholds
86  std::vector<float> m_HLTJetThr; // List of all jet leg thresholds
87  std::vector<float> m_HLTMETThr; // List of all MET leg thresholds
88 
89  inline bool is_number(const std::string& s) {
90  return !s.empty() && std::find_if(s.begin(), s.end(), [](unsigned char c) {return !std::isdigit(c);}) == s.end();
91  }
92 
93  void parseTriggerString(bool remove_L1_phase1_thresholds = true); // Parse the trigger string, without applying the Phase1 remapping (L1 thresholds will be set to -1 on Phase1 items)
94  void parseTriggerString(const std::map<std::string, float>& L1Phase1_thresholds); // Parse the trigger string, applying the Phase1 ET mapping
95  void parseTriggerString(const std::map<std::string, float>& L1Phase1_thresholds, const std::map<std::string, uint64_t>& L1Phase1_threshold_patterns); // Parse the trigger string, applying the Phase1 threshold mapping
96  void parseTriggerString(const std::map<int, int>& L1Phase1ThrMap_eTAU, const std::map<int, int>& L1Phase1ThrMap_jTAU); // Parse the trigger string, applying the Phase1 remapping
97 };
98 
99 #endif
TrigTauInfo::getHLTTauType
const std::string getHLTTauType() const
Definition: TrigTauInfo.h:28
TrigTauInfo::getTriggerL1Name
const std::string & getTriggerL1Name() const
Definition: TrigTauInfo.h:31
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TrigTauInfo::getHLTTauThreshold
float getHLTTauThreshold() const
Definition: TrigTauInfo.h:26
TrigTauInfo::getTriggerName
const std::string & getTriggerName() const
Definition: TrigTauInfo.h:23
TrigTauInfo::getHLTJetThreshold
float getHLTJetThreshold() const
Definition: TrigTauInfo.h:64
TrigTauInfo::getHLTMuonThreshold
float getHLTMuonThreshold() const
Definition: TrigTauInfo.h:60
TrigTauInfo::getHLTMETThresholds
const std::vector< float > & getHLTMETThresholds() const
Definition: TrigTauInfo.h:67
TrigTauInfo::m_HLTElecThr
std::vector< float > m_HLTElecThr
Definition: TrigTauInfo.h:83
TrigTauInfo::getHLTTauThresholds
const std::vector< float > & getHLTTauThresholds() const
Definition: TrigTauInfo.h:27
TrigTauInfo::getHLTElecThresholds
const std::vector< float > & getHLTElecThresholds() const
Definition: TrigTauInfo.h:59
TrigTauInfo::getL1TauThresholdPatterns
const std::vector< int64_t > & getL1TauThresholdPatterns() const
Definition: TrigTauInfo.h:44
TrigTauInfo::m_L1Item
std::string m_L1Item
Definition: TrigTauInfo.h:75
TrigTauInfo::m_HLTMETThr
std::vector< float > m_HLTMETThr
Definition: TrigTauInfo.h:87
TrigTauInfo::m_isStreamer
bool m_isStreamer
Definition: TrigTauInfo.h:71
TrigTauInfo::m_L1Items
std::vector< std::string > m_L1Items
Definition: TrigTauInfo.h:76
TrigTauInfo::getHLTJetThresholds
const std::vector< float > & getHLTJetThresholds() const
Definition: TrigTauInfo.h:65
TrigTauInfo::m_HLTMuonThr
std::vector< float > m_HLTMuonThr
Definition: TrigTauInfo.h:84
TrigTauInfo::getHLTMuonThresholds
const std::vector< float > & getHLTMuonThresholds() const
Definition: TrigTauInfo.h:61
TrigTauInfo::isStreamer
bool isStreamer() const
Definition: TrigTauInfo.h:24
TrigTauInfo::getL1TauThresholds
const std::vector< float > & getL1TauThresholds() const
Definition: TrigTauInfo.h:36
TrigTauInfo::hasHLTGammaLeg
bool hasHLTGammaLeg() const
Definition: TrigTauInfo.h:54
TrigTauInfo::getHLTMETThreshold
float getHLTMETThreshold() const
Definition: TrigTauInfo.h:66
TrigTauInfo::hasHLTElectronLeg
bool hasHLTElectronLeg() const
Definition: TrigTauInfo.h:52
TrigTauInfo::getTriggerL1Items
const std::vector< std::string > & getTriggerL1Items() const
Definition: TrigTauInfo.h:32
TrigTauInfo::is_number
bool is_number(const std::string &s)
Definition: TrigTauInfo.h:89
TrigTauInfo::isL1TauIsolated
bool isL1TauIsolated(const size_t idx=0) const
Definition: TrigTauInfo.h:41
TrigTauInfo::getL1TauTypes
const std::vector< std::string > & getL1TauTypes() const
Definition: TrigTauInfo.h:38
TrigTauInfo::getL1TauThresholdPattern
int64_t getL1TauThresholdPattern() const
Definition: TrigTauInfo.h:43
TrigTauInfo::m_tauL1ThresholdPattern
std::vector< int64_t > m_tauL1ThresholdPattern
Definition: TrigTauInfo.h:81
TrigTauInfo::m_trigger
std::string m_trigger
Definition: TrigTauInfo.h:70
TrigTauInfo::getL1TauIsolations
const std::vector< std::string > & getL1TauIsolations() const
Definition: TrigTauInfo.h:40
TrigTauInfo::m_HLTJetThr
std::vector< float > m_HLTJetThr
Definition: TrigTauInfo.h:86
TrigTauInfo::getL1TauItem
const std::string getL1TauItem() const
Definition: TrigTauInfo.h:33
TrigTauInfo::getL1TauType
const std::string getL1TauType() const
Definition: TrigTauInfo.h:37
TrigTauInfo::m_tauL1Items
std::vector< std::string > m_tauL1Items
Definition: TrigTauInfo.h:78
TrigTauInfo::isHLTDiTau
bool isHLTDiTau() const
Definition: TrigTauInfo.h:47
TrigTauInfo::m_HLTTauTypes
std::vector< std::string > m_HLTTauTypes
Definition: TrigTauInfo.h:73
TrigTauInfo::getHLTGammaThresholds
const std::vector< float > & getHLTGammaThresholds() const
Definition: TrigTauInfo.h:63
TrigTauInfo::getL1TauThreshold
float getL1TauThreshold() const
Definition: TrigTauInfo.h:35
TrigTauInfo::isTauStreamer
bool isTauStreamer() const
Definition: TrigTauInfo.h:50
TrigTauInfo::getHLTTauTypes
const std::vector< std::string > & getHLTTauTypes() const
Definition: TrigTauInfo.h:29
TrigTauInfo::getHLTElecThreshold
float getHLTElecThreshold() const
Definition: TrigTauInfo.h:58
TrigTauInfo::TrigTauInfo
TrigTauInfo()
Definition: TrigTauInfo.h:17
TrigTauInfo
Definition: TrigTauInfo.h:15
TrigTauInfo::isHLTSingleTau
bool isHLTSingleTau() const
Definition: TrigTauInfo.h:46
TrigTauInfo::isHLTTandP
bool isHLTTandP() const
Definition: TrigTauInfo.h:48
TrigTauInfo::m_HLTGammaThr
std::vector< float > m_HLTGammaThr
Definition: TrigTauInfo.h:85
TrigTauInfo::getHLTGammaThreshold
float getHLTGammaThreshold() const
Definition: TrigTauInfo.h:62
TrigTauInfo::m_tauL1Type
std::vector< std::string > m_tauL1Type
Definition: TrigTauInfo.h:79
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TrigTauInfo::hasHLTJetLeg
bool hasHLTJetLeg() const
Definition: TrigTauInfo.h:55
TrigTauInfo::m_tauL1Iso
std::vector< std::string > m_tauL1Iso
Definition: TrigTauInfo.h:80
TrigTauInfo::getL1TauIsolation
const std::string getL1TauIsolation() const
Definition: TrigTauInfo.h:39
TrigTauInfo::getL1TauItems
const std::vector< std::string > & getL1TauItems() const
Definition: TrigTauInfo.h:34
TrigTauInfo::hasHLTMETLeg
bool hasHLTMETLeg() const
Definition: TrigTauInfo.h:56
TrigTauInfo::m_tauL1Thr
std::vector< float > m_tauL1Thr
Definition: TrigTauInfo.h:77
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:72
TrigTauInfo::areAnyL1TauIsolated
bool areAnyL1TauIsolated() const
Definition: TrigTauInfo.h:42
TrigTauInfo::hasHLTMuonLeg
bool hasHLTMuonLeg() const
Definition: TrigTauInfo.h:53
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27
TrigTauInfo::isL1TauOnly
bool isL1TauOnly() const
Definition: TrigTauInfo.h:49