ATLAS Offline Software
Loading...
Searching...
No Matches
ImportData.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// contact: jmaurer@cern.ch
6
7#ifndef TRIGGLOBALEFFICIENCYCORRECTION_IMPORTDATA_H
8#define TRIGGLOBALEFFICIENCYCORRECTION_IMPORTDATA_H 1
9
10#include <algorithm>
11#include <array>
12#include <cctype>
13#include <functional>
14#include <map>
15#include <vector>
16
19
20namespace TrigGlobEffCorr {
21
24 TT_X2Y_FLAG = 0x1, // used to distinguish X_2Y from 2X_Y triggers
29 TT_SYM = 0x100,
30 TT_HALFSYM = 0x200,
31 TT_ASYM = 0x300,
34 // single lepton triggers
39 // dilepton triggers
52 // trilepton triggers
78 // tetralepton triggers
84};
85
88
89 public:
90 struct TrigDef {
92 std::size_t name;
93 std::array<std::size_t, 4> leg;
94 bool used = false; // auxiliary variable used by
95 // Calculator::Helper::extra() and bindFunction()
97 std::size_t leg0 = 0, std::size_t leg1 = 0, std::size_t leg2 = 0,
98 std::size_t leg3 = 0)
99 : type(type), name(name), leg{leg0, leg1, leg2, leg3} {}
100 };
101
102 ImportData();
104 ~ImportData();
105
106 bool importHierarchies();
107 bool importTriggers();
108 bool importThresholds(
109 const std::map<std::string, std::string>& overridenThresholds = {});
110 bool importPeriods();
111 bool importMapKeys(
112 const std::string& tag,
113 std::map<std::size_t, std::map<std::size_t, int>>& keysPerLeg);
114 // NB: the following function calls all import*() functions except
115 // importMapKeys()
116 bool importAll(
117 const std::map<std::string, std::string>& overridenThresholds = {});
118
119 bool getPeriodBoundaries(const std::string& period,
120 std::pair<unsigned, unsigned>& boundaries);
122 const std::map<std::string, std::string>& triggerCombination,
123 const std::string& version,
124 std::map<std::string, std::string>& legsPerKey,
126 const std::map<std::size_t, TrigDef>& getTriggerDefs() const {
127 return m_triggerDefs;
128 }
129 const std::map<std::size_t, float>& getTriggerThresholds() const {
130 return m_triggerThresholds;
131 }
132 const std::map<std::string, std::pair<unsigned, unsigned>>& getDataPeriods()
133 const {
134 return m_dataPeriods;
135 }
136 const std::vector<Hierarchy>& getHierarchyMeta() const {
137 return m_hierarchyMeta;
138 }
139 const std::vector<std::size_t>& getHierarchyData() const {
140 return m_hierarchyData;
141 }
142 const std::map<std::size_t, std::string>& getDictionary() const {
143 return m_dictionary;
144 }
146 bool& success);
147 static xAOD::Type::ObjectType associatedLeptonFlavour(const std::string& leg,
148 bool& success);
149 std::vector<TrigDef> parseTriggerString(const std::string& triggerString,
150 bool& success);
153 std::vector<ImportData::TrigDef>& triggers);
154
155 protected:
156 bool readDataFile(const char* filename, std::vector<std::string>& contents);
157 void setNonMixed3LType(TrigDef& def, TriggerType flavourFlag);
158
160 std::map<std::size_t, std::string>& m_dictionary;
161 std::hash<std::string>& m_hasher;
162
163 std::map<std::size_t, TrigDef> m_triggerDefs;
164 std::map<std::size_t, float> m_triggerThresholds;
165 std::map<std::string, std::pair<unsigned, unsigned>> m_dataPeriods;
166 std::vector<Hierarchy> m_hierarchyMeta;
167 std::vector<std::size_t> m_hierarchyData;
168};
169
170inline std::string removeWhitespaces(const std::string& s) {
171 std::string t(s);
172 t.erase(std::remove_if(t.begin(), t.end(),
173 [](char c) { return std::isspace(c); }),
174 t.end());
175 return t;
176}
177
178} // namespace TrigGlobEffCorr
179
180#endif
bool readDataFile(const char *filename, std::vector< std::string > &contents)
xAOD::Type::ObjectType associatedLeptonFlavour(std::size_t leg, bool &success)
bool adaptTriggerListForTriggerMatching(std::vector< ImportData::TrigDef > &triggers)
const std::map< std::size_t, float > & getTriggerThresholds() const
Definition ImportData.h:129
TrigGlobalEfficiencyCorrectionTool::Hierarchy Hierarchy
Definition ImportData.h:87
const std::map< std::size_t, std::string > & getDictionary() const
Definition ImportData.h:142
bool importThresholds(const std::map< std::string, std::string > &overridenThresholds={})
std::vector< TrigDef > parseTriggerString(const std::string &triggerString, bool &success)
const std::map< std::size_t, TrigDef > & getTriggerDefs() const
Definition ImportData.h:126
bool importMapKeys(const std::string &tag, std::map< std::size_t, std::map< std::size_t, int > > &keysPerLeg)
const std::vector< Hierarchy > & getHierarchyMeta() const
Definition ImportData.h:136
std::hash< std::string > & m_hasher
Definition ImportData.h:161
TrigGlobalEfficiencyCorrectionTool * getParent()
Definition ImportData.h:151
void setNonMixed3LType(TrigDef &def, TriggerType flavourFlag)
bool importAll(const std::map< std::string, std::string > &overridenThresholds={})
bool suggestEgammaMapKeys(const std::map< std::string, std::string > &triggerCombination, const std::string &version, std::map< std::string, std::string > &legsPerKey, xAOD::Type::ObjectType type)
std::vector< std::size_t > m_hierarchyData
Definition ImportData.h:167
bool getPeriodBoundaries(const std::string &period, std::pair< unsigned, unsigned > &boundaries)
const std::map< std::string, std::pair< unsigned, unsigned > > & getDataPeriods() const
Definition ImportData.h:132
TrigGlobalEfficiencyCorrectionTool * m_parent
Definition ImportData.h:159
ImportData()
the following two variables are owned by this tool and released in the destructor
std::map< std::string, std::pair< unsigned, unsigned > > m_dataPeriods
Definition ImportData.h:165
std::map< std::size_t, TrigDef > m_triggerDefs
Definition ImportData.h:163
const std::vector< std::size_t > & getHierarchyData() const
Definition ImportData.h:139
std::map< std::size_t, float > m_triggerThresholds
Definition ImportData.h:164
std::vector< Hierarchy > m_hierarchyMeta
Definition ImportData.h:166
std::map< std::size_t, std::string > & m_dictionary
Definition ImportData.h:160
Class mimicking the AthMessaging class from the offline software.
void contents(std::vector< std::string > &keys, TDirectory *td, const std::string &directory, const std::string &pattern, const std::string &path)
the template specializations below must be enclosed in this namespace
std::string removeWhitespaces(const std::string &s)
Definition ImportData.h:170
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.
ObjectType
Type of objects that have a representation in the xAOD EDM.
Definition ObjectType.h:32
TrigDef(TriggerType type=TT_UNKNOWN, std::size_t name=0, std::size_t leg0=0, std::size_t leg1=0, std::size_t leg2=0, std::size_t leg3=0)
Definition ImportData.h:96
std::array< std::size_t, 4 > leg
Definition ImportData.h:93