ATLAS Offline Software
Loading...
Searching...
No Matches
L1ThrExtraInfo.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGCONFDATA_L1THREXTRAINFO_H
6#define TRIGCONFDATA_L1THREXTRAINFO_H
7
10
11#include <map>
12#include <vector>
13#include <iostream>
14
15namespace TrigConf {
16
35
37 public:
38 static std::unique_ptr<L1ThrExtraInfoBase> createExtraInfo(const std::string & thrTypeName, const boost::property_tree::ptree & data);
39
40 std::weak_ptr<TrigConf::L1ThrExtraInfoBase> addExtraInfo(const std::string & thrTypeName, const boost::property_tree::ptree & data);
41
42 const L1ThrExtraInfo_EMTAULegacy & EM() const;
43 const L1ThrExtraInfo_EMTAULegacy & TAU() const;
44 const L1ThrExtraInfo_JETLegacy & JET() const;
45 const L1ThrExtraInfo_XSLegacy & XS() const;
46 const L1ThrExtraInfo_eEM & eEM() const;
47 const L1ThrExtraInfo_jEM & jEM() const;
48 const L1ThrExtraInfo_eTAU & eTAU() const;
49 const L1ThrExtraInfo_jTAU & jTAU() const;
50 const L1ThrExtraInfo_cTAU & cTAU() const;
51 const L1ThrExtraInfo_jJ & jJ() const;
52 const L1ThrExtraInfo_gJ & gJ() const;
53 const L1ThrExtraInfo_gLJ & gLJ() const;
54 const L1ThrExtraInfo_jLJ & jLJ() const;
55 const L1ThrExtraInfo_gXE & gXE() const;
56 const L1ThrExtraInfo_jXE & jXE() const;
57 const L1ThrExtraInfo_gTE & gTE() const;
58 const L1ThrExtraInfo_jTE & jTE() const;
59 const L1ThrExtraInfo_MU & MU() const;
60
61 const L1ThrExtraInfoBase & thrExtraInfo(const std::string & thrTypeName) const;
62
63 bool hasInfo(const std::string & typeName) const;
64
65 void clear();
66
67 private:
68 // map from threshold type to L1ThrExtraInfo object
69 std::map<std::string, std::shared_ptr<TrigConf::L1ThrExtraInfoBase>> m_thrExtraInfo{};
70 std::shared_ptr<TrigConf::L1ThrExtraInfoBase> m_emptyInfo{ nullptr };
71 };
72
73
74
76 public:
77 L1ThrExtraInfo_EMTAULegacy(const std::string & thrTypeName, const ptree & data) :
78 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
79 virtual ~L1ThrExtraInfo_EMTAULegacy() override = default;
80 virtual std::string className() const override { return "L1ThrExtraInfo_EMTAULegacy"; }
81 unsigned int emScale() const { return 1000 / resolutionMeV(); }
82 float ptMinToTopo() const { return m_ptMinToTopoMeV/1000.0f; }
83 unsigned int ptMinToTopoMeV() const { return m_ptMinToTopoMeV; }
84 unsigned int ptMinToTopoCounts() const { return energyInCounts( m_ptMinToTopoMeV, resolutionMeV() ); }
85 const IsolationLegacy & isolation(const std::string & thrType, size_t bit) const;
86 private:
88 void load();
90 unsigned int m_ptMinToTopoMeV{0}; // in MeV
91 std::map<std::string,std::vector<IsolationLegacy>> m_isolation{};
92 };
93
94
96 public:
97 L1ThrExtraInfo_JETLegacy(const std::string & thrTypeName, const ptree & data) :
98 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
99 virtual ~L1ThrExtraInfo_JETLegacy() override = default;
100 virtual std::string className() const override { return "L1ThrExtraInfo_JETLegacy"; }
101 unsigned int jetScale() const { return 1000 / resolutionMeV(); }
102 double ptMinToTopoLargeWindow() const { return m_ptMinToTopoLargeWindowMeV / 1000.0; }
103 double ptMinToTopoSmallWindow() const { return m_ptMinToTopoSmallWindowMeV / 1000.0; }
108 private:
110 void load();
114 };
115
116
118 public:
119 L1ThrExtraInfo_XSLegacy(const std::string & thrTypeName, const ptree & data) :
120 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
121 virtual ~L1ThrExtraInfo_XSLegacy() override = default;
122 virtual std::string className() const override { return "L1ThrExtraInfo_XSLegacy"; }
123 unsigned int xeMin() const { return m_xeMin; };
124 unsigned int xeMax() const { return m_xeMax; };
125 unsigned int teSqrtMin() const { return m_teSqrtMin; };
126 unsigned int teSqrtMax() const { return m_teSqrtMax; };
127 unsigned int xsSigmaScale() const { return m_xsSigmaScale; };
128 unsigned int xsSigmaOffset() const { return m_xsSigmaOffset; };
129 private:
131 void load();
133 unsigned int m_xeMin{0};
134 unsigned int m_xeMax{0};
135 unsigned int m_teSqrtMin{0};
136 unsigned int m_teSqrtMax{0};
137 unsigned int m_xsSigmaScale{0};
138 unsigned int m_xsSigmaOffset{0};
139 };
140
141
142 /***********************************
143 * Extra info for new thresholds
144 ***********************************/
146 public:
148 public:
149 WorkingPoints_eEM() = default;
150 WorkingPoints_eEM( const boost::property_tree::ptree & );
151 bool isDefined() const { return m_isDefined; }
152 int reta_fw() const { return m_reta_fw; }
153 int wstot_fw() const { return m_wstot_fw; }
154 int rhad_fw() const { return m_rhad_fw; }
155 float reta_d() const { return m_reta_d; }
156 float wstot_d() const { return m_wstot_d; }
157 float rhad_d() const { return m_rhad_d; }
158 private:
159 bool m_isDefined { false };
160 float m_reta_d { 0 };
161 float m_wstot_d { 0 };
162 float m_rhad_d { 0 };
163 int m_reta_fw { 0 };
164 int m_wstot_fw { 0 };
165 int m_rhad_fw { 0 };
166 };
167 L1ThrExtraInfo_eEM(const std::string & thrTypeName, const ptree & data) :
168 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
169 virtual ~L1ThrExtraInfo_eEM() override = default;
170 virtual std::string className() const override { return "L1ThrExtraInfo_eEM"; }
171 unsigned int maxEtMeV() const { return m_maxEt; }
172 unsigned int maxEtCounts(const unsigned int resolutionMeV) const { return TrigConf::energyInCounts( m_maxEt, resolutionMeV ); }
173 float maxEt() const { return m_maxEt/1000.0f; }
174 float ptMinToTopo() const { return m_ptMinToTopoMeV/1000.0f; }
175 unsigned int ptMinToTopoMeV() const { return m_ptMinToTopoMeV; }
176 unsigned int ptMinToTopoCounts() const { return energyInCounts( m_ptMinToTopoMeV, resolutionMeV() ); }
177 const WorkingPoints_eEM & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); }
179 unsigned int algoVersion() const { return m_algoVersion; }
180 private:
182 void load();
184 unsigned int m_ptMinToTopoMeV{0};
185 unsigned int m_maxEt { 0 };
186 std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_eEM>> m_isolation{};
187 unsigned int m_algoVersion { 0 };
188 };
189 std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_eEM::WorkingPoints_eEM & iso);
190
192 public:
194 public:
195 WorkingPoints_jEM() = default;
196 WorkingPoints_jEM( const boost::property_tree::ptree & );
197 bool isDefined() const { return m_isDefined; }
198 int iso_fw() const { return m_iso_fw; }
199 int frac_fw() const { return m_frac_fw; }
200 int frac2_fw() const { return m_frac2_fw; }
201 float iso_d() const { return m_iso_d; }
202 float frac_d() const { return m_frac_d; }
203 float frac2_d() const { return m_frac2_d; }
204 private:
205 bool m_isDefined { false };
206 float m_iso_d { 0 };
207 float m_frac_d { 0 };
208 float m_frac2_d { 0 };
209 int m_iso_fw { 0 };
210 int m_frac_fw { 0 };
211 int m_frac2_fw { 0 };
212 };
213 L1ThrExtraInfo_jEM(const std::string & thrTypeName, const ptree & data) :
214 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
215 virtual ~L1ThrExtraInfo_jEM() override = default;
216 virtual std::string className() const override { return "L1ThrExtraInfo_jEM"; }
217 const WorkingPoints_jEM & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); }
219 unsigned int maxEtMeV() const { return m_maxEt; }
220 unsigned int maxEtCounts(const unsigned int resolutionMeV) const { return TrigConf::energyInCounts( m_maxEt, resolutionMeV ); }
221 float maxEt() const { return m_maxEt/1000.0f; }
222 float ptMinToTopo(const std::string& module) const { return ptMinToTopoMeV(module)/ 1000.0; }
223 unsigned int ptMinToTopoCounts(const std::string& module) const { return energyInCounts(ptMinToTopoMeV(module), resolutionMeV()); }
224 unsigned int ptMinToTopoMeV(const std::string& module) const {
225 if(module=="1C" || module=="1A") return m_ptMinToTopoMeV1;
226 if(module=="2C" || module=="2A") return m_ptMinToTopoMeV2;
227 if(module=="3C" || module=="3A") return m_ptMinToTopoMeV3;
228 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jEM ptMinToTopo");
229 }
230 float ptMinxTOB(const std::string& module) const { return ptMinxTOBMeV(module)/ 1000.0; }
231 unsigned int ptMinxTOBCounts(const std::string& module) const { return energyInCounts(ptMinxTOBMeV(module), resolutionMeV()); }
232 unsigned int ptMinxTOBMeV(const std::string& module) const {
233 if(module=="1C" || module=="1A") return m_ptMinxTOBMeV1;
234 if(module=="2C" || module=="2A") return m_ptMinxTOBMeV2;
235 if(module=="3C" || module=="3A") return m_ptMinxTOBMeV3;
236 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jEM ptMinxTOB");
237 }
238 private:
240 void load();
242 unsigned int m_maxEt { 0 };
243 unsigned int m_ptMinToTopoMeV1{0};
244 unsigned int m_ptMinToTopoMeV2{0};
245 unsigned int m_ptMinToTopoMeV3{0};
246 unsigned int m_ptMinxTOBMeV1{0};
247 unsigned int m_ptMinxTOBMeV2{0};
248 unsigned int m_ptMinxTOBMeV3{0};
249 std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_jEM>> m_isolation{};
250 };
251 std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_jEM::WorkingPoints_jEM & iso);
252
254 public:
256 public:
257 WorkingPoints_eTAU( const boost::property_tree::ptree & );
258 bool isDefined() const { return m_isDefined; }
259 int rCore_fw() const { return m_rCore_fw; }
260 float rCore_d() const { return m_rCore_d; }
261 int rHad_fw() const { return m_rHad_fw; }
262 float rHad_d() const { return m_rHad_d; }
263 private:
264 bool m_isDefined { false };
265 int m_rCore_fw {0};
266 int m_rHad_fw {0};
267 float m_rCore_d { 0 };
268 float m_rHad_d { 0 };
269 };
270 L1ThrExtraInfo_eTAU(const std::string & thrTypeName, const ptree & data) :
271 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
272 virtual ~L1ThrExtraInfo_eTAU() override = default;
273 virtual std::string className() const override { return "L1ThrExtraInfo_eTAU"; }
274 unsigned int minIsoEtMeV() const { return m_minIsoEt; }
275 unsigned int minIsoEtCounts(const unsigned int resolutionMeV) const { return TrigConf::energyInCounts( m_minIsoEt, resolutionMeV ); }
276 float minIsoEt() const { return m_minIsoEt/1000.0f; }
277 unsigned int maxEtMeV() const { return m_maxEt; }
278 unsigned int maxEtCounts(const unsigned int resolutionMeV) const { return TrigConf::energyInCounts( m_maxEt, resolutionMeV ); }
279 float maxEt() const { return m_maxEt/1000.0f; }
280 float ptMinToTopo() const { return m_ptMinToTopoMeV/1000.0f; }
281 unsigned int ptMinToTopoMeV() const { return m_ptMinToTopoMeV; }
282 unsigned int ptMinToTopoCounts() const { return energyInCounts( m_ptMinToTopoMeV, resolutionMeV() ); }
283 const WorkingPoints_eTAU & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); }
285 unsigned int algoVersion() const { return m_algoVersion; }
286 private:
288 void load();
290 unsigned int m_minIsoEt { 0 }; // In MeV
291 unsigned int m_maxEt { 0 }; // In MeV
292 unsigned int m_ptMinToTopoMeV{0};
293 std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_eTAU>> m_isolation{};
294 unsigned int m_algoVersion { 0 };
295 };
296 std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_eTAU::WorkingPoints_eTAU & iso);
297
299 public:
301 public:
302 WorkingPoints_jTAU( const boost::property_tree::ptree & );
303 bool isDefined() const { return m_isDefined; }
304 int isolation_fw() const { return m_isolation_fw; }
305 float isolation_d() const { return m_isolation_d; }
306 private:
307 bool m_isDefined { false };
309 float m_isolation_d { 0 };
310 };
311 L1ThrExtraInfo_jTAU(const std::string & thrTypeName, const ptree & data) :
312 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
313 virtual ~L1ThrExtraInfo_jTAU() override = default;
314 virtual std::string className() const override { return "L1ThrExtraInfo_jTAU"; }
315 const WorkingPoints_jTAU & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); }
317 unsigned int maxEtMeV() const { return m_maxEt; }
318 unsigned int maxEtCounts(const unsigned int resolutionMeV) const { return TrigConf::energyInCounts( m_maxEt, resolutionMeV ); }
319 float maxEt() const { return m_maxEt/1000.0f; }
320 float ptMinToTopo(const std::string& module) const { return ptMinToTopoMeV(module)/ 1000.0; }
321 unsigned int ptMinToTopoCounts(const std::string& module) const { return energyInCounts(ptMinToTopoMeV(module), resolutionMeV()); }
322 unsigned int ptMinToTopoMeV(const std::string& module) const {
323 if(module=="1C" || module=="1A") return m_ptMinToTopoMeV1;
324 if(module=="2C" || module=="2A") return m_ptMinToTopoMeV2;
325 if(module=="3C" || module=="3A") return m_ptMinToTopoMeV3;
326 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jTAU ptMinToTopo");
327 }
328 float ptMinxTOB(const std::string& module) const { return ptMinxTOBMeV(module)/ 1000.0; }
329 unsigned int ptMinxTOBCounts(const std::string& module) const { return energyInCounts(ptMinxTOBMeV(module), resolutionMeV()); }
330 unsigned int ptMinxTOBMeV(const std::string& module) const {
331 if(module=="1C" || module=="1A") return m_ptMinxTOBMeV1;
332 if(module=="2C" || module=="2A") return m_ptMinxTOBMeV2;
333 if(module=="3C" || module=="3A") return m_ptMinxTOBMeV3;
334 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jTAU ptMinxTOB");
335 }
336 private:
338 void load();
340 unsigned int m_maxEt { 0 };
341 unsigned int m_ptMinToTopoMeV1{0};
342 unsigned int m_ptMinToTopoMeV2{0};
343 unsigned int m_ptMinToTopoMeV3{0};
344 unsigned int m_ptMinxTOBMeV1{0};
345 unsigned int m_ptMinxTOBMeV2{0};
346 unsigned int m_ptMinxTOBMeV3{0};
347 std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_jTAU>> m_isolation{};
348 };
349 std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_jTAU::WorkingPoints_jTAU & iso);
350
352 public:
354 public:
355 WorkingPoints_cTAU( const boost::property_tree::ptree & );
356 bool isDefined() const { return m_isDefined; }
357 unsigned int isolation_fw() const { return m_isolation_fw; }
358 float isolation_d() const { return m_isolation_d; }
361 float eTAU_rCoreMin_WP_d() const { return m_eTAU_rCoreMin_WP_d; }
362 unsigned int eTAU_rCoreMin_WP_fw() const { return m_eTAU_rCoreMin_WP_fw; }
364 float eTAU_rHadMin_WP_d() const { return m_eTAU_rHadMin_WP_d; }
365 unsigned int eTAU_rHadMin_WP_fw() const { return m_eTAU_rHadMin_WP_fw; }
367 private:
368 bool m_isDefined {false};
369 unsigned int m_isolation_fw {0};
370 float m_isolation_d {0};
374 unsigned int m_eTAU_rCoreMin_WP_fw {0};
376 unsigned int m_eTAU_rHadMin_WP_fw {0};
377 };
378 L1ThrExtraInfo_cTAU(const std::string & thrTypeName, const ptree & data) :
379 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
380 virtual ~L1ThrExtraInfo_cTAU() override = default;
381 virtual std::string className() const override { return "L1ThrExtraInfo_cTAU"; }
382 const WorkingPoints_cTAU & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); }
384 private:
386 void load();
388 std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_cTAU>> m_isolation{};
389 };
390 std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_cTAU::WorkingPoints_cTAU & iso);
391
393 public:
394 L1ThrExtraInfo_jJ(const std::string & thrTypeName, const ptree & data) :
395 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
396 virtual ~L1ThrExtraInfo_jJ() override = default;
397 virtual std::string className() const override { return "L1ThrExtraInfo_jJ"; }
398 float ptMinToTopo(const std::string& module) const { return ptMinToTopoMeV(module)/ 1000.0; }
399 unsigned int ptMinToTopoCounts(const std::string& module) const { return energyInCounts(ptMinToTopoMeV(module), resolutionMeV()); }
400 unsigned int ptMinToTopoMeV(const std::string& module) const {
401 if(module=="1C" || module=="1A") return m_ptMinToTopoMeV1;
402 if(module=="2C" || module=="2A") return m_ptMinToTopoMeV2;
403 if(module=="3C" || module=="3A") return m_ptMinToTopoMeV3;
404 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jJ ptMinToTopo");
405 }
406 float ptMinxTOB(const std::string& module) const { return ptMinxTOBMeV(module)/ 1000.0; }
407 unsigned int ptMinxTOBCounts(const std::string& module) const { return energyInCounts(ptMinxTOBMeV(module), resolutionMeV()); }
408 unsigned int ptMinxTOBMeV(const std::string& module) const {
409 if(module=="1C" || module=="1A") return m_ptMinxTOBMeV1;
410 if(module=="2C" || module=="2A") return m_ptMinxTOBMeV2;
411 if(module=="3C" || module=="3A") return m_ptMinxTOBMeV3;
412 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jJ ptMinxTOB");
413 }
414 float seedThreshold(const std::string& module) const { return seedThresholdMeV(module)/ 1000.0; }
415 unsigned int seedThresholdCounts(const std::string& module) const { return energyInCounts(seedThresholdMeV(module), 25 /*jFEX internal resolution!*/); }
416 unsigned int seedThresholdMeV(const std::string& module) const {
417 if(module=="1C" || module=="1A") return m_seedThresholdMeV1;
418 if(module=="2C" || module=="2A") return m_seedThresholdMeV2;
419 if(module=="3C" || module=="3A") return m_seedThresholdMeV3;
420 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jJ seedThreshold");
421 }
422 private:
424 void load();
426 unsigned int m_ptMinToTopoMeV1{0};
427 unsigned int m_ptMinToTopoMeV2{0};
428 unsigned int m_ptMinToTopoMeV3{0};
429 unsigned int m_ptMinxTOBMeV1{0};
430 unsigned int m_ptMinxTOBMeV2{0};
431 unsigned int m_ptMinxTOBMeV3{0};
432 int m_seedThresholdMeV1{-1}; //signed to allow effectively turning off seed thresholding via negative values
435 };
436
438 public:
439 L1ThrExtraInfo_jLJ(const std::string & thrTypeName, const ptree & data) :
440 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
441 virtual ~L1ThrExtraInfo_jLJ() override = default;
442 virtual std::string className() const override { return "L1ThrExtraInfo_jLJ"; }
443 float ptMinToTopo(const std::string& module) const { return ptMinToTopoMeV(module)/ 1000.0; }
444 unsigned int ptMinToTopoCounts(const std::string& module) const { return energyInCounts(ptMinToTopoMeV(module), resolutionMeV()); }
445 unsigned int ptMinToTopoMeV(const std::string& module) const {
446 if(module=="1C" || module=="1A") return m_ptMinToTopoMeV1;
447 if(module=="2C" || module=="2A") return m_ptMinToTopoMeV2;
448 if(module=="3C" || module=="3A") return m_ptMinToTopoMeV3;
449 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jLJ ptMinToTopo");
450 }
451 float ptMinxTOB(const std::string& module) const { return ptMinxTOBMeV(module)/ 1000.0; }
452 unsigned int ptMinxTOBCounts(const std::string& module) const { return energyInCounts(ptMinxTOBMeV(module), resolutionMeV()); }
453 unsigned int ptMinxTOBMeV(const std::string& module) const {
454 if(module=="1C" || module=="1A") return m_ptMinxTOBMeV1;
455 if(module=="2C" || module=="2A") return m_ptMinxTOBMeV2;
456 if(module=="3C" || module=="3A") return m_ptMinxTOBMeV3;
457 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jLJ ptMinxTOB");
458 }
459 private:
461 void load();
463 unsigned int m_ptMinToTopoMeV1{0};
464 unsigned int m_ptMinToTopoMeV2{0};
465 unsigned int m_ptMinToTopoMeV3{0};
466 unsigned int m_ptMinxTOBMeV1{0};
467 unsigned int m_ptMinxTOBMeV2{0};
468 unsigned int m_ptMinxTOBMeV3{0};
469 };
470
472 public:
473 L1ThrExtraInfo_gJ(const std::string & thrTypeName, const ptree & data) :
474 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
475 virtual ~L1ThrExtraInfo_gJ() override = default;
476 virtual std::string className() const override { return "L1ThrExtraInfo_gJ"; }
477 float ptMinToTopo(const unsigned int eta_range) const { return ptMinToTopoMeV(eta_range)/ 1000.0; }
478 unsigned int ptMinToTopoCounts(const unsigned int eta_range) const { return energyInCounts(ptMinToTopoMeV(eta_range), resolutionMeV()); }
479 unsigned int ptMinToTopoMeV(const unsigned int eta_range) const {
480 if(eta_range==1) return m_ptMinToTopoMeV1;
481 if(eta_range==2) return m_ptMinToTopoMeV2;
482 throw std::runtime_error("L1ThrExtraInfo: Eta range " + std::to_string(eta_range) + " not valid for gJ ptMinToTopo");
483 }
484 private:
486 void load();
488 unsigned int m_ptMinToTopoMeV1{0};
489 unsigned int m_ptMinToTopoMeV2{0};
490 };
491
493 public:
494 L1ThrExtraInfo_gLJ(const std::string & thrTypeName, const ptree & data) :
495 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
496 virtual ~L1ThrExtraInfo_gLJ() override = default;
497 virtual std::string className() const override { return "L1ThrExtraInfo_gLJ"; }
498 float ptMinToTopo(const unsigned int eta_range) const { return ptMinToTopoMeV(eta_range)/ 1000.0; }
499 unsigned int ptMinToTopoCounts(const unsigned int eta_range) const { return energyInCounts(ptMinToTopoMeV(eta_range), resolutionMeV()); }
500 unsigned int ptMinToTopoMeV(const unsigned int eta_range) const {
501 if(eta_range==1) return m_ptMinToTopoMeV1;
502 if(eta_range==2) return m_ptMinToTopoMeV2;
503 throw std::runtime_error("L1ThrExtraInfo: Eta range " + std::to_string(eta_range) + " not valid for gLJ ptMinToTopo");
504 }
505 float seedThr(const char fpga) const { return seedThrMeV(fpga)/ 1000.0; }
506 unsigned int seedThrCounts(const char fpga) const { return energyInCounts(seedThrMeV(fpga), resolutionMeV()); }
507 unsigned int seedThrMeV(const char fpga) const {
508 if(fpga=='A') return m_seedThrMeVA;
509 if(fpga=='B') return m_seedThrMeVB;
510 if(fpga=='C') return m_seedThrMeVC;
511 throw std::runtime_error(std::string("L1ThrExtraInfo: FPGA ") + fpga + " not recongnised for gLJ seedThr");
512 }
513 float rhoTowerMin(const char fpga) const { return rhoTowerMinMeV(fpga)/ 1000.0; }
514 int rhoTowerMinMeV(const char fpga) const {
515 if(fpga=='A') return m_rhoTowerMinMeVA;
516 if(fpga=='B') return m_rhoTowerMinMeVB;
517 if(fpga=='C') return m_rhoTowerMinMeVC;
518 throw std::runtime_error(std::string("L1ThrExtraInfo: FPGA ") + fpga + " not recongnised for gLJ rhoTowerMin");
519 }
520 float rhoTowerMax(const char fpga) const { return rhoTowerMaxMeV(fpga)/ 1000.0; }
521 int rhoTowerMaxMeV(const char fpga) const {
522 if(fpga=='A') return m_rhoTowerMaxMeVA;
523 if(fpga=='B') return m_rhoTowerMaxMeVB;
524 if(fpga=='C') return m_rhoTowerMaxMeVC;
525 throw std::runtime_error(std::string("L1ThrExtraInfo: FPGA ") + fpga + " not recongnised for gLJ rhoTowerMax");
526 }
527 private:
529 void load();
531 unsigned int m_ptMinToTopoMeV1{0};
532 unsigned int m_ptMinToTopoMeV2{0};
533 unsigned int m_seedThrMeVA{0};
534 unsigned int m_seedThrMeVB{0};
535 unsigned int m_seedThrMeVC{0};
542 };
543
545 public:
546 L1ThrExtraInfo_jXE(const std::string & thrTypeName, const ptree & data) :
547 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
548 virtual ~L1ThrExtraInfo_jXE() override = default;
549 virtual std::string className() const override { return "L1ThrExtraInfo_jXE"; }
550 private:
552 void load();
554 };
555
557 public:
558 L1ThrExtraInfo_jTE(const std::string & thrTypeName, const ptree & data) :
559 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
560 virtual ~L1ThrExtraInfo_jTE() override = default;
561 virtual std::string className() const override { return "L1ThrExtraInfo_jTE"; }
562 unsigned int etaBoundary_fw(const std::string& module) const {
563 if(module=="1C" || module=="1A") return m_etaBoundary1_fw;
564 if(module=="2C" || module=="2A") return m_etaBoundary2_fw;
565 if(module=="3C" || module=="3A") return m_etaBoundary3_fw;
566 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jTE etaBoundary_fw");
567 }
568 unsigned int etaBoundary(const std::string& module) const {
569 if(module=="1C" || module=="1A") return m_etaBoundary1;
570 if(module=="2C" || module=="2A") return m_etaBoundary2;
571 if(module=="3C" || module=="3A") return m_etaBoundary3;
572 throw std::runtime_error("L1ThrExtraInfo: Module" + module + " not recongnised for jTE etaBoundary");
573 }
574 private:
576 void load();
578 unsigned int m_etaBoundary1{0}; // eta for module 1A, 1C
579 unsigned int m_etaBoundary1_fw{0}; // tower number for module 1A, 1C
580 unsigned int m_etaBoundary2{0}; // eta for module 2A, 2C
581 unsigned int m_etaBoundary2_fw{0}; // tower number for module 2A, 2C
582 unsigned int m_etaBoundary3{0}; // eta for module 3A, 3C
583 unsigned int m_etaBoundary3_fw{0}; // tower number for module 3A, 3C
584 };
585
587 public:
588 L1ThrExtraInfo_gXE(const std::string & thrTypeName, const ptree & data) :
589 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
590 virtual ~L1ThrExtraInfo_gXE() override = default;
591 virtual std::string className() const override { return "L1ThrExtraInfo_gXE"; }
592 float seedThr(const char fpga) const { return energyInCounts(seedThrMeV(fpga), resolutionMeV()); }//seedThr is defined in counts
593 unsigned int seedThrCounts(const char fpga) const { return energyInCounts(seedThrMeV(fpga), resolutionMeV()); }
594 unsigned int seedThrMeV(const char fpga) const {
595 if(fpga=='A') return m_seedThrMeVA;
596 if(fpga=='B') return m_seedThrMeVB;
597 if(fpga=='C') return m_seedThrMeVC;
598 throw std::runtime_error(std::string("L1ThrExtraInfo: FPGA ") + fpga + " not recongnised for gXE seedThr");
599 }
600 unsigned int XERHO_param(const char fpga, const bool sigmapos) const {
601 if(fpga=='A' && sigmapos==true) return m_XERHO_sigmaPosA;
602 if(fpga=='B' && sigmapos==true) return m_XERHO_sigmaPosB;
603 if(fpga=='C' && sigmapos==true) return m_XERHO_sigmaPosC;
604 if(fpga=='A' && sigmapos==false) return m_XERHO_sigmaNegA;
605 if(fpga=='B' && sigmapos==false) return m_XERHO_sigmaNegB;
606 if(fpga=='C' && sigmapos==false) return m_XERHO_sigmaNegC;
607 throw std::runtime_error(std::string("L1ThrExtraInfo: ") + fpga + " and " + (sigmapos ? "pos" : "neg") + " not recongnised for gXE XERHO_param");
608 }
609 unsigned int JWOJ_param(const char fpga, const char param) const {
610 if(fpga=='A' && param=='a') return m_XEJWOJ_a_A;
611 if(fpga=='B' && param=='a') return m_XEJWOJ_a_B;
612 if(fpga=='C' && param=='a') return m_XEJWOJ_a_C;
613 if(fpga=='A' && param=='b') return m_XEJWOJ_b_A;
614 if(fpga=='B' && param=='b') return m_XEJWOJ_b_B;
615 if(fpga=='C' && param=='b') return m_XEJWOJ_b_C;
616 if(fpga=='A' && param=='c') return m_XEJWOJ_c_A;
617 if(fpga=='B' && param=='c') return m_XEJWOJ_c_B;
618 if(fpga=='C' && param=='c') return m_XEJWOJ_c_C;
619 throw std::runtime_error(std::string("L1ThrExtraInfo: ") + fpga + " and " + param + " not recongnised for gXE JWOJ_param");
620 }
621 private:
623 void load();
625 unsigned int m_XERHO_sigmaPosA{0};
626 unsigned int m_XERHO_sigmaPosB{0};
627 unsigned int m_XERHO_sigmaPosC{0};
628 unsigned int m_XERHO_sigmaNegA{0};
629 unsigned int m_XERHO_sigmaNegB{0};
630 unsigned int m_XERHO_sigmaNegC{0};
631 unsigned int m_seedThrMeVA{0};
632 unsigned int m_seedThrMeVB{0};
633 unsigned int m_seedThrMeVC{0};
634 unsigned int m_XEJWOJ_a_A{0};
635 unsigned int m_XEJWOJ_a_B{0};
636 unsigned int m_XEJWOJ_a_C{0};
637 unsigned int m_XEJWOJ_b_A{0};
638 unsigned int m_XEJWOJ_b_B{0};
639 unsigned int m_XEJWOJ_b_C{0};
640 unsigned int m_XEJWOJ_c_A{0};
641 unsigned int m_XEJWOJ_c_B{0};
642 unsigned int m_XEJWOJ_c_C{0};
643 };
644
646 public:
647 L1ThrExtraInfo_gTE(const std::string & thrTypeName, const ptree & data) :
648 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
649 virtual ~L1ThrExtraInfo_gTE() override = default;
650 virtual std::string className() const override { return "L1ThrExtraInfo_gTE"; }
651 private:
653 void load();
655 };
656
658 public:
659 L1ThrExtraInfo_MU(const std::string & thrTypeName, const ptree & data) :
660 L1ThrExtraInfoBase(thrTypeName, data) { load(); }
661 virtual ~L1ThrExtraInfo_MU() override = default;
662 virtual std::string className() const override { return "L1ThrExtraInfo_MU"; }
663 unsigned int rpcIdxForPt(unsigned int pt) const;
664 unsigned int tgcIdxForPt(unsigned int pt) const;
665 unsigned int ptForRpcIdx(unsigned int idx) const;
666 unsigned int ptForTgcIdx(unsigned int idx) const;
667 unsigned int tgcIdxForRpcIdx(unsigned int rpcIdx) const; // this maps the rpc idx to the tgc idx for the same pt value
668 std::vector<unsigned int> knownRpcPtValues() const;
669 std::vector<unsigned int> knownTgcPtValues() const;
670 std::vector<std::string> exclusionListNames() const;
671 const std::map<std::string, std::vector<unsigned int>> & exclusionList(const std::string & listName) const;
672 private:
674 void load();
676 std::map<unsigned int, unsigned int> m_rpcPtMap; // map of pt value (1..~20) to road index (0..5)
677 std::map<unsigned int, unsigned int> m_tgcPtMap; // map of pt value (1..~30) to road index (0..15)
678 std::map<std::string, std::map<std::string, std::vector<unsigned int>>> m_roiExclusionLists; // named lists of excluded rois
679 };
680
681}
682
683#endif
Scalar eta() const
pseudorapidity method
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
const ptree & data() const
Access to the underlying data, if needed.
boost::property_tree::ptree ptree
L1 extra information for certain threshold types.
unsigned int resolutionMeV() const
const IsolationLegacy & isolation(const std::string &thrType, size_t bit) const
EM legacy extra info.
L1ThrExtraInfo_EMTAULegacy(const std::string &thrTypeName, const ptree &data)
std::map< std::string, std::vector< IsolationLegacy > > m_isolation
void load()
Update the internal members.
virtual ~L1ThrExtraInfo_EMTAULegacy() override=default
virtual std::string className() const override
A string that is the name of the class.
unsigned int m_ptMinToTopoMeV
EM specific data.
unsigned int ptMinToTopoSmallWindowMeV() const
virtual std::string className() const override
A string that is the name of the class.
unsigned int ptMinToTopoSmallWindowCounts() const
virtual ~L1ThrExtraInfo_JETLegacy() override=default
unsigned int ptMinToTopoLargeWindowCounts() const
L1ThrExtraInfo_JETLegacy(const std::string &thrTypeName, const ptree &data)
void load()
Update the internal members.
unsigned int ptMinToTopoLargeWindowMeV() const
unsigned int m_ptMinToTopoLargeWindowMeV
JET specific data.
const std::map< std::string, std::vector< unsigned int > > & exclusionList(const std::string &listName) const
std::map< unsigned int, unsigned int > m_rpcPtMap
MU specific data.
std::vector< std::string > exclusionListNames() const
unsigned int rpcIdxForPt(unsigned int pt) const
unsigned int ptForTgcIdx(unsigned int idx) const
std::map< unsigned int, unsigned int > m_tgcPtMap
std::vector< unsigned int > knownTgcPtValues() const
unsigned int tgcIdxForRpcIdx(unsigned int rpcIdx) const
unsigned int tgcIdxForPt(unsigned int pt) const
std::vector< unsigned int > knownRpcPtValues() const
unsigned int ptForRpcIdx(unsigned int idx) const
std::map< std::string, std::map< std::string, std::vector< unsigned int > > > m_roiExclusionLists
void load()
Update the internal members.
virtual std::string className() const override
A string that is the name of the class.
virtual ~L1ThrExtraInfo_MU() override=default
L1ThrExtraInfo_MU(const std::string &thrTypeName, const ptree &data)
virtual std::string className() const override
A string that is the name of the class.
L1ThrExtraInfo_XSLegacy(const std::string &thrTypeName, const ptree &data)
virtual ~L1ThrExtraInfo_XSLegacy() override=default
unsigned int m_xeMin
XS specific data.
void load()
Update the internal members.
WorkingPoints_cTAU(const boost::property_tree::ptree &)
std::map< TrigConf::Selection::WP, ValueWithEtaDependence< WorkingPoints_cTAU > > m_isolation
cTAU specific data
void load()
Update the internal members.
L1ThrExtraInfo_cTAU(const std::string &thrTypeName, const ptree &data)
const ValueWithEtaDependence< WorkingPoints_cTAU > & isolation(TrigConf::Selection::WP wp) const
virtual ~L1ThrExtraInfo_cTAU() override=default
const WorkingPoints_cTAU & isolation(TrigConf::Selection::WP wp, int eta) const
virtual std::string className() const override
A string that is the name of the class.
unsigned int ptMinToTopoMeV() const
std::map< TrigConf::Selection::WP, ValueWithEtaDependence< WorkingPoints_eEM > > m_isolation
const WorkingPoints_eEM & isolation(TrigConf::Selection::WP wp, int eta) const
const ValueWithEtaDependence< WorkingPoints_eEM > & isolation(TrigConf::Selection::WP wp) const
unsigned int maxEtMeV() const
unsigned int ptMinToTopoCounts() const
void load()
Update the internal members.
virtual ~L1ThrExtraInfo_eEM() override=default
unsigned int maxEtCounts(const unsigned int resolutionMeV) const
unsigned int m_ptMinToTopoMeV
eEM specific data
unsigned int algoVersion() const
virtual std::string className() const override
A string that is the name of the class.
L1ThrExtraInfo_eEM(const std::string &thrTypeName, const ptree &data)
WorkingPoints_eTAU(const boost::property_tree::ptree &)
unsigned int minIsoEtCounts(const unsigned int resolutionMeV) const
void load()
Update the internal members.
unsigned int maxEtCounts(const unsigned int resolutionMeV) const
unsigned int minIsoEtMeV() const
unsigned int m_minIsoEt
eTAU specific data
L1ThrExtraInfo_eTAU(const std::string &thrTypeName, const ptree &data)
unsigned int ptMinToTopoMeV() const
unsigned int algoVersion() const
unsigned int ptMinToTopoCounts() const
virtual ~L1ThrExtraInfo_eTAU() override=default
unsigned int maxEtMeV() const
const WorkingPoints_eTAU & isolation(TrigConf::Selection::WP wp, int eta) const
std::map< TrigConf::Selection::WP, ValueWithEtaDependence< WorkingPoints_eTAU > > m_isolation
const ValueWithEtaDependence< WorkingPoints_eTAU > & isolation(TrigConf::Selection::WP wp) const
virtual std::string className() const override
A string that is the name of the class.
unsigned int m_ptMinToTopoMeV1
gJ specific data
unsigned int ptMinToTopoCounts(const unsigned int eta_range) const
void load()
Update the internal members.
float ptMinToTopo(const unsigned int eta_range) const
unsigned int ptMinToTopoMeV(const unsigned int eta_range) const
virtual std::string className() const override
A string that is the name of the class.
L1ThrExtraInfo_gJ(const std::string &thrTypeName, const ptree &data)
virtual ~L1ThrExtraInfo_gJ() override=default
unsigned int m_ptMinToTopoMeV1
gLJ specific data
int rhoTowerMinMeV(const char fpga) const
virtual std::string className() const override
A string that is the name of the class.
unsigned int ptMinToTopoCounts(const unsigned int eta_range) const
virtual ~L1ThrExtraInfo_gLJ() override=default
void load()
Update the internal members.
int rhoTowerMaxMeV(const char fpga) const
float seedThr(const char fpga) const
unsigned int seedThrMeV(const char fpga) const
L1ThrExtraInfo_gLJ(const std::string &thrTypeName, const ptree &data)
unsigned int ptMinToTopoMeV(const unsigned int eta_range) const
unsigned int seedThrCounts(const char fpga) const
float rhoTowerMax(const char fpga) const
float rhoTowerMin(const char fpga) const
float ptMinToTopo(const unsigned int eta_range) const
virtual ~L1ThrExtraInfo_gTE() override=default
virtual std::string className() const override
A string that is the name of the class.
void load()
Update the internal members.
L1ThrExtraInfo_gTE(const std::string &thrTypeName, const ptree &data)
float seedThr(const char fpga) const
L1ThrExtraInfo_gXE(const std::string &thrTypeName, const ptree &data)
virtual std::string className() const override
A string that is the name of the class.
unsigned int XERHO_param(const char fpga, const bool sigmapos) const
unsigned int seedThrMeV(const char fpga) const
void load()
Update the internal members.
unsigned int JWOJ_param(const char fpga, const char param) const
unsigned int m_XERHO_sigmaPosA
gXE specific data
unsigned int seedThrCounts(const char fpga) const
virtual ~L1ThrExtraInfo_gXE() override=default
unsigned int ptMinxTOBCounts(const std::string &module) const
virtual std::string className() const override
A string that is the name of the class.
const WorkingPoints_jEM & isolation(TrigConf::Selection::WP wp, int eta) const
unsigned int m_maxEt
jEM specific data
unsigned int maxEtCounts(const unsigned int resolutionMeV) const
const ValueWithEtaDependence< WorkingPoints_jEM > & isolation(TrigConf::Selection::WP wp) const
std::map< TrigConf::Selection::WP, ValueWithEtaDependence< WorkingPoints_jEM > > m_isolation
virtual ~L1ThrExtraInfo_jEM() override=default
unsigned int ptMinToTopoCounts(const std::string &module) const
unsigned int maxEtMeV() const
L1ThrExtraInfo_jEM(const std::string &thrTypeName, const ptree &data)
unsigned int ptMinxTOBMeV(const std::string &module) const
unsigned int ptMinToTopoMeV(const std::string &module) const
float ptMinxTOB(const std::string &module) const
void load()
Update the internal members.
float ptMinToTopo(const std::string &module) const
L1ThrExtraInfo_jJ(const std::string &thrTypeName, const ptree &data)
virtual std::string className() const override
A string that is the name of the class.
unsigned int seedThresholdCounts(const std::string &module) const
void load()
Update the internal members.
float ptMinxTOB(const std::string &module) const
unsigned int ptMinxTOBCounts(const std::string &module) const
unsigned int ptMinToTopoCounts(const std::string &module) const
unsigned int ptMinToTopoMeV(const std::string &module) const
float seedThreshold(const std::string &module) const
float ptMinToTopo(const std::string &module) const
unsigned int m_ptMinToTopoMeV1
jJ specific data
virtual ~L1ThrExtraInfo_jJ() override=default
unsigned int ptMinxTOBMeV(const std::string &module) const
unsigned int seedThresholdMeV(const std::string &module) const
float ptMinToTopo(const std::string &module) const
unsigned int ptMinxTOBCounts(const std::string &module) const
float ptMinxTOB(const std::string &module) const
void load()
Update the internal members.
unsigned int ptMinToTopoMeV(const std::string &module) const
unsigned int ptMinToTopoCounts(const std::string &module) const
unsigned int ptMinxTOBMeV(const std::string &module) const
virtual std::string className() const override
A string that is the name of the class.
virtual ~L1ThrExtraInfo_jLJ() override=default
L1ThrExtraInfo_jLJ(const std::string &thrTypeName, const ptree &data)
unsigned int m_ptMinToTopoMeV1
jLJ specific data
WorkingPoints_jTAU(const boost::property_tree::ptree &)
const ValueWithEtaDependence< WorkingPoints_jTAU > & isolation(TrigConf::Selection::WP wp) const
L1ThrExtraInfo_jTAU(const std::string &thrTypeName, const ptree &data)
unsigned int m_maxEt
jTAU specific data
virtual ~L1ThrExtraInfo_jTAU() override=default
unsigned int ptMinxTOBCounts(const std::string &module) const
unsigned int ptMinToTopoCounts(const std::string &module) const
unsigned int maxEtMeV() const
float ptMinxTOB(const std::string &module) const
unsigned int ptMinToTopoMeV(const std::string &module) const
float ptMinToTopo(const std::string &module) const
const WorkingPoints_jTAU & isolation(TrigConf::Selection::WP wp, int eta) const
unsigned int maxEtCounts(const unsigned int resolutionMeV) const
virtual std::string className() const override
A string that is the name of the class.
std::map< TrigConf::Selection::WP, ValueWithEtaDependence< WorkingPoints_jTAU > > m_isolation
void load()
Update the internal members.
unsigned int ptMinxTOBMeV(const std::string &module) const
L1ThrExtraInfo_jTE(const std::string &thrTypeName, const ptree &data)
virtual std::string className() const override
A string that is the name of the class.
unsigned int etaBoundary(const std::string &module) const
void load()
Update the internal members.
unsigned int etaBoundary_fw(const std::string &module) const
unsigned int m_etaBoundary1
jTE specific data
virtual ~L1ThrExtraInfo_jTE() override=default
L1ThrExtraInfo_jXE(const std::string &thrTypeName, const ptree &data)
virtual std::string className() const override
A string that is the name of the class.
void load()
Update the internal members.
virtual ~L1ThrExtraInfo_jXE() override=default
const L1ThrExtraInfo_eTAU & eTAU() const
const L1ThrExtraInfo_gXE & gXE() const
const L1ThrExtraInfo_jEM & jEM() const
std::map< std::string, std::shared_ptr< TrigConf::L1ThrExtraInfoBase > > m_thrExtraInfo
const L1ThrExtraInfo_XSLegacy & XS() const
const L1ThrExtraInfo_MU & MU() const
std::shared_ptr< TrigConf::L1ThrExtraInfoBase > m_emptyInfo
const L1ThrExtraInfoBase & thrExtraInfo(const std::string &thrTypeName) const
const L1ThrExtraInfo_jJ & jJ() const
const L1ThrExtraInfo_jLJ & jLJ() const
const L1ThrExtraInfo_cTAU & cTAU() const
const L1ThrExtraInfo_JETLegacy & JET() const
const L1ThrExtraInfo_EMTAULegacy & TAU() const
const L1ThrExtraInfo_gLJ & gLJ() const
std::weak_ptr< TrigConf::L1ThrExtraInfoBase > addExtraInfo(const std::string &thrTypeName, const boost::property_tree::ptree &data)
static std::unique_ptr< L1ThrExtraInfoBase > createExtraInfo(const std::string &thrTypeName, const boost::property_tree::ptree &data)
const L1ThrExtraInfo_gJ & gJ() const
const L1ThrExtraInfo_gTE & gTE() const
const L1ThrExtraInfo_eEM & eEM() const
const L1ThrExtraInfo_jTE & jTE() const
const L1ThrExtraInfo_jTAU & jTAU() const
const L1ThrExtraInfo_jXE & jXE() const
const L1ThrExtraInfo_EMTAULegacy & EM() const
bool hasInfo(const std::string &typeName) const
class to implement a L1 threshold cut that varies with eta
Forward iterator to traverse the main components of the trigger configuration.
Definition Config.h:22
unsigned int energyInCounts(unsigned int energyMeV, unsigned int energyResolutionMeV)
helper funtion to translate energies into counts
std::ostream & operator<<(std::ostream &os, const TrigConf::IsolationLegacy &iso)