ATLAS Offline Software
JsonFileWriterL1.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
4 
5 #include <iomanip>
6 #include <fstream>
7 #include <algorithm>
8 #include <sstream>
9 
10 #include <nlohmann/json.hpp>
12 
13 using namespace std;
14 
16  TrigConfMessaging( "JsonFileWriterL1")
17 {}
18 
19 
20 bool
22 {
23 
24  json items = json::object_t{};
25  for( auto & item : l1menu ) {
26  json jItem({});
27  jItem["name"] = item.name();
28  jItem["ctpid"] = item.ctpId();
29  jItem["definition"] = item.definition();
30  jItem["monitor"] = item.monitor();
31  jItem["partition"] = item.partition();
32  jItem["triggerType"] = item.triggerType();
33  jItem["bunchgroups"] = json(item.bunchgroups());
34  if(auto legacy = item.legacy() )
35  jItem["legacy"] = *legacy;
36  items[item.name()] = jItem;
37  };
38 
39  json thresholds = json::object_t{};
40  for(const std::string & thrType : l1menu.thresholdTypes()) {
41  json jThresholsByType({});
42  // first the thresholds of this type
43  for(auto & thr : l1menu.thresholds(thrType)) {
44  json jThr({});
45  jThr["mapping"] = thr->mapping();
46 
47  if(thr->hasChild("sectors")) { // for MBTS_A and MBTS_C
48  std::vector<std::string> sectors;
49  for(auto & s : thr->getList("sectors")) {
50  sectors.push_back(s.getValue());
51  }
52  jThr["sectors"] = sectors;
53  }
54  if(thr->hasAttribute("voltage")) { // for MBTSII
55  jThr["voltage"] = thr->getAttribute<float>("voltage");
56  }
57 
58  // value
59  try {
60  if(thr->hasAttribute("value")) {
61  auto & caloThr = dynamic_cast<const TrigConf::L1Threshold_Calo &>(*thr); // for MBTSII
62  jThr["value"] = int(caloThr.thrValue());
63  }
64  } catch(std::bad_cast&) {};
65 
66  // MU
67  try {
68  const auto & muThr = dynamic_cast<const TrigConf::L1Threshold_MU &>(*thr);
69  jThr["baThr"] = muThr.ptBarrel();
70  jThr["ecThr"] = muThr.ptEndcap();
71  jThr["fwThr"] = muThr.ptForward();
72  jThr["baIdx"] = muThr.idxBarrel();
73  jThr["ecIdx"] = muThr.idxEndcap();
74  jThr["fwIdx"] = muThr.idxForward();
75  jThr["region"] = muThr.region();
76  jThr["tgcFlags"] = muThr.tgcFlags();
77  jThr["rpcFlags"] = muThr.rpcFlags();
78  if(const std::string & roiExcl = muThr.rpcExclROIList(); !roiExcl.empty()) {
79  jThr["rpcExclROIList"] = roiExcl;
80  }
81  } catch(std::bad_cast&) {};
82 
83  // TAU
84  try {
85  const auto & tauThr = dynamic_cast<const TrigConf::L1Threshold_TAU &>(*thr);
86  std::string isobits = "00000";
87  auto isomask = tauThr.isolationMask();
88  for(size_t b=0; b<5; ++b) {
89  if(isomask & (1<<b)) { isobits[4-b] = '1'; }
90  }
91  jThr["isobits"] = isobits;
92  jThr["thrValues"] = json::array_t({});
93  for(auto & rv : tauThr.thrValues()) {
94  json jRV({});
95  jRV["value"] = static_cast<unsigned int>(rv.value());
96  jRV["etamin"] = rv.etaMin();
97  jRV["etamax"] = rv.etaMax();
98  jRV["phimin"] = 0; // never used, so not read
99  jRV["phimax"] = 64; // never used, so not read
100  jRV["priority"] = rv.priority();
101  jThr["thrValues"] += jRV;
102  }
103  } catch(std::bad_cast&) {};
104 
105  // EM
106  try {
107  const auto & EMThr = dynamic_cast<const TrigConf::L1Threshold_EM &>(*thr);
108  jThr["thrValues"] = json::array_t({});
109  for(auto & rv : EMThr.thrValues()) {
110  json jRV({});
111  jRV["value"] = static_cast<unsigned int>(rv.value());
112  jRV["etamin"] = rv.etaMin();
113  jRV["etamax"] = rv.etaMax();
114  jRV["phimin"] = 0; // never used, so not read
115  jRV["phimax"] = 64; // never used, so not read
116  std::string isobits = "00000";
117  auto isomask = EMThr.isolationMask(rv.etaMin());
118  for(size_t b=0; b<5; ++b) {
119  if(isomask & (1<<b)) { isobits[4-b] = '1'; }
120  }
121  jRV["isobits"] = isobits;
122  jRV["priority"] = rv.priority();
123  jThr["thrValues"] += jRV;
124  }
125  } catch(std::bad_cast&) {};
126 
127  // JET
128  try {
129  const auto & JThr = dynamic_cast<const TrigConf::L1Threshold_JET &>(*thr);
130  jThr["thrValues"] = json::array_t({});
131  for(auto & rv : JThr.thrValues()) {
132  json jRV({});
133  jRV["value"] = static_cast<unsigned int>(rv.value());
134  jRV["etamin"] = rv.etaMin();
135  jRV["etamax"] = rv.etaMax();
136  jRV["phimin"] = 0; // never used, so not read
137  jRV["phimax"] = 64; // never used, so not read
138  jRV["window"] = JThr.window(0);
139  jRV["priority"] = rv.priority();
140  jThr["thrValues"] += jRV;
141  }
142  } catch(std::bad_cast&) {};
143 
144  // TE
145  try {
146  const auto & teThr = dynamic_cast<const TrigConf::L1Threshold_TE &>(*thr);
147  //jThr["thrValues"] = json::array_t({});
148  for(auto & rv : teThr.thrValues()) {
149  json jRV({});
150  jRV["value"] = static_cast<unsigned int>(rv.value());
151  jRV["etamin"] = rv.etaMin();
152  jRV["etamax"] = rv.etaMax();
153  jRV["priority"] = rv.priority();
154  jThr["thrValues"] += jRV;
155  }
156  } catch(std::bad_cast&) {};
157 
158  // ZB
159  try {
160  const auto & zbThr = dynamic_cast<const TrigConf::L1Threshold_ZB &>(*thr);
161  jThr["seed"] = zbThr.seed();
162  jThr["seedBcdelay"] = zbThr.seedBcdelay();
163  jThr["seedMultiplicity"] = zbThr.seedMultiplicity();
164  } catch(std::bad_cast&) {};
165 
166  // ZBTopo
167  try {
168  const auto & zbTopoThr = dynamic_cast<const TrigConf::L1Threshold_ZBTopo &>(*thr);
169  jThr["mask0"] = zbTopoThr.mask0();
170  jThr["mask0"] = zbTopoThr.mask0();
171  jThr["mask0"] = zbTopoThr.mask0();
172  jThr["mask0"] = zbTopoThr.mask0();
173  jThr["mask0"] = zbTopoThr.mask0();
174  jThr["mask0"] = zbTopoThr.mask0();
175  jThr["seedBcdelay"] = zbTopoThr.seedBcdelay();
176 
177  } catch(std::bad_cast&) {};
178 
179  // eEM
180  try {
181  const auto & eEMThr = dynamic_cast<const TrigConf::L1Threshold_eEM &>(*thr);
182  jThr["reta"] = TrigConf::Selection::wpToString(eEMThr.reta());
183  jThr["rhad"] = TrigConf::Selection::wpToString(eEMThr.rhad());
184  jThr["wstot"] = TrigConf::Selection::wpToString(eEMThr.wstot());
185  jThr["thrValues"] = json::value_t::array;
186  for(auto & rv : eEMThr.thrValues()) {
187  json jRV({});
188  jRV["value"] = static_cast<unsigned int>(rv.value());
189  jRV["etamin"] = rv.etaMin();
190  jRV["etamax"] = rv.etaMax();
191  jRV["priority"] = rv.priority();
192  jThr["thrValues"] += jRV;
193  }
194  } catch(std::bad_cast&) {};
195 
196  // jEM
197  try {
198  const auto & jEMThr = dynamic_cast<const TrigConf::L1Threshold_jEM &>(*thr);
199  jThr["iso"] = TrigConf::Selection::wpToString(jEMThr.iso());
200  jThr["frac"] = TrigConf::Selection::wpToString(jEMThr.frac());
201  jThr["frac2"] = TrigConf::Selection::wpToString(jEMThr.frac2());
202  jThr["thrValues"] = json::value_t::array;
203  for(auto & rv : jEMThr.thrValues()) {
204  json jRV({});
205  jRV["value"] = static_cast<unsigned int>(rv.value());
206  jRV["etamin"] = rv.etaMin();
207  jRV["etamax"] = rv.etaMax();
208  jRV["priority"] = rv.priority();
209  jThr["thrValues"] += jRV;
210  }
211  } catch(std::bad_cast&) {};
212 
213  // eTAU
214  try {
215  const auto & eTAUThr = dynamic_cast<const TrigConf::L1Threshold_eTAU &>(*thr);
216  jThr["rCore"] = TrigConf::Selection::wpToString(eTAUThr.rCore());
217  jThr["rHad"] = TrigConf::Selection::wpToString(eTAUThr.rHad());
218  jThr["thrValues"] = json::array_t({});
219  for(auto & rv : eTAUThr.thrValues()) {
220  json jRV({});
221  jRV["value"] = static_cast<unsigned int>(rv.value());
222  jRV["etamin"] = rv.etaMin();
223  jRV["etamax"] = rv.etaMax();
224  jRV["phimin"] = 0; // never used, so not read
225  jRV["phimax"] = 64; // never used, so not read
226  jRV["priority"] = rv.priority();
227  jThr["thrValues"] += jRV;
228  }
229  } catch(std::bad_cast&) {};
230 
231  // jTAU
232  try {
233  const auto & jTAUThr = dynamic_cast<const TrigConf::L1Threshold_jTAU &>(*thr);
234  jThr["isolation"] = TrigConf::Selection::wpToString(jTAUThr.isolation());
235  jThr["thrValues"] = json::array_t({});
236  for(auto & rv : jTAUThr.thrValues()) {
237  json jRV({});
238  jRV["value"] = static_cast<unsigned int>(rv.value());
239  jRV["etamin"] = rv.etaMin();
240  jRV["etamax"] = rv.etaMax();
241  jRV["phimin"] = 0; // never used, so not read
242  jRV["phimax"] = 64; // never used, so not read
243  jRV["priority"] = rv.priority();
244  jThr["thrValues"] += jRV;
245  }
246  } catch(std::bad_cast&) {};
247 
248  // cTAU
249  try {
250  const auto & cTAUThr = dynamic_cast<const TrigConf::L1Threshold_cTAU &>(*thr);
251  jThr["isolation"] = TrigConf::Selection::wpToString(cTAUThr.isolation());
252  jThr["thrValues"] = json::array_t({});
253  for(auto & rv : cTAUThr.thrValues()) {
254  json jRV({});
255  jRV["value"] = static_cast<unsigned int>(rv.value());
256  jRV["etamin"] = rv.etaMin();
257  jRV["etamax"] = rv.etaMax();
258  jRV["phimin"] = 0; // never used, so not read
259  jRV["phimax"] = 64; // never used, so not read
260  jRV["priority"] = rv.priority();
261  jThr["thrValues"] += jRV;
262  }
263  } catch(std::bad_cast&) {};
264 
265  // jJ
266  try {
267  const auto & jJThr = dynamic_cast<const TrigConf::L1Threshold_jJ &>(*thr);
268  jThr["thrValues"] = json::array_t({});
269  for(auto & rv : jJThr.thrValues()) {
270  json jRV({});
271  jRV["value"] = static_cast<unsigned int>(rv.value());
272  jRV["etamin"] = rv.etaMin();
273  jRV["etamax"] = rv.etaMax();
274  jRV["priority"] = rv.priority();
275  jThr["thrValues"] += jRV;
276  }
277  } catch(std::bad_cast&) {};
278 
279  // jLJ
280  try {
281  const auto & jLJThr = dynamic_cast<const TrigConf::L1Threshold_jLJ &>(*thr);
282  jThr["thrValues"] = json::array_t({});
283  for(auto & rv : jLJThr.thrValues()) {
284  json jRV({});
285  jRV["value"] = static_cast<unsigned int>(rv.value());
286  jRV["etamin"] = rv.etaMin();
287  jRV["etamax"] = rv.etaMax();
288  jRV["priority"] = rv.priority();
289  jThr["thrValues"] += jRV;
290  }
291  } catch(std::bad_cast&) {};
292 
293  // gJ
294  try {
295  const auto & gJThr = dynamic_cast<const TrigConf::L1Threshold_gJ &>(*thr);
296  jThr["value"] = int(gJThr.thrValue());
297  } catch(std::bad_cast&) {};
298 
299  // gLJ
300  try {
301  const auto & gLJThr = dynamic_cast<const TrigConf::L1Threshold_gLJ &>(*thr);
302  jThr["value"] = int(gLJThr.thrValue());
303  } catch(std::bad_cast&) {};
304 
305  // jXE
306  try {
307  const auto & jXEThr = dynamic_cast<const TrigConf::L1Threshold_jXE &>(*thr);
308  jThr["value"] = int(jXEThr.thrValue());
309  } catch(std::bad_cast&) {};
310 
311  // jTE
312  try {
313  const auto & jTEThr = dynamic_cast<const TrigConf::L1Threshold_jTE &>(*thr);
314  jThr["value"] = int(jTEThr.thrValue());
315  } catch(std::bad_cast&) {};
316 
317  // gXE
318  try {
319  const auto & gXEThr = dynamic_cast<const TrigConf::L1Threshold_gXE &>(*thr);
320  jThr["value"] = int(gXEThr.thrValue());
321  } catch(std::bad_cast&) {};
322 
323  // gTE
324  try {
325  const auto & gTEThr = dynamic_cast<const TrigConf::L1Threshold_gTE &>(*thr);
326  jThr["value"] = int(gTEThr.thrValue());
327  } catch(std::bad_cast&) {};
328 
329  jThresholsByType[thr->name()] = jThr;
330  };
331  json jThrType({});
332  if(thrType != "internal") {
333  jThrType["thresholds"] = jThresholsByType;
334  }
335  jThrType["type"] = thrType;
336 
337  // extra info
338  auto & extraInfo = l1menu.thrExtraInfo().thrExtraInfo(thrType);
339  if(extraInfo.hasAttribute("ptMinToTopo")) { // for MBTSII
340  jThrType["ptMinToTopo"] = extraInfo.getAttribute<unsigned int>("ptMinToTopo");
341  }
342  if(extraInfo.hasAttribute("resolutionMeV")) { // for MBTSII
343  jThrType["resolutionMeV"] = extraInfo.getAttribute<unsigned int>("resolutionMeV");
344  }
345 
346  // extra info using type specific accessors
347  if(thrType == "internal") {
348  jThrType["names"] = json::array_t({});
349  for(auto & thr : l1menu.thresholds(thrType)) {
350  jThrType["names"] += thr->name();
351  }
352  auto & extInfo = l1menu.thrExtraInfo().thrExtraInfo("internal");
353  if(auto randoms = extInfo.getExtraInfo("randoms")) {
354  for(size_t rc=0; rc<4; ++rc) {
355  jThrType["randoms"]["RNDM" + std::to_string(rc)]["cut"] =
356  randoms->get().getAttribute<unsigned int>("RNDM" + std::to_string(rc)+".cut");
357  }
358  }
359  }
360 
361  if(thrType == "MU") {
362  auto & muinfo = l1menu.thrExtraInfo().MU();
363  jThrType["exclusionLists"] = json::value_t::object;
364  for(auto & listName : muinfo.exclusionListNames()) {
365  jThrType["exclusionLists"][listName] = json::array_t({});
366  for(auto & x : muinfo.exclusionList(listName)) {
367  jThrType["exclusionLists"][listName] += json({ {"sectorName", x.first}, {"rois", x.second}});
368  }
369  }
370  for(auto & rpcPt : muinfo.knownRpcPtValues()) {
371  jThrType["roads"]["rpc"][std::to_string(rpcPt)] = muinfo.rpcIdxForPt(rpcPt);
372  }
373  for(auto & tgcPt : muinfo.knownTgcPtValues()) {
374  jThrType["roads"]["tgc"][std::to_string(tgcPt)] = muinfo.tgcIdxForPt(tgcPt);
375  }
376  }
377 
378  if(thrType == "EM" && l1menu.run()>1) {
379  auto & eminfo = l1menu.thrExtraInfo().EM();
380  for(const std::string isoSet : { "EMIsoForEMthr", "HAIsoForEMthr" }) {
381  jThrType["isolation"][isoSet]["thrtype"] = isoSet;
382  jThrType["isolation"][isoSet]["Parametrization"] = json::array_t({});
383  for(size_t bit = 1; bit<=5; ++bit) {
384  auto & iso = eminfo.isolation(isoSet,bit);
385  json jIso({});
386  jIso["etamax"] = iso.etamax();
387  jIso["etamin"] = iso.etamin();
388  jIso["isobit"] = iso.isobit();
389  jIso["mincut"] = iso.mincut();
390  jIso["offset"] = iso.offset();
391  jIso["priority"] = iso.priority();
392  jIso["slope"] = iso.slope();
393  jIso["upperlimit"] = iso.upperlimit();
394  jThrType["isolation"][isoSet]["Parametrization"] += jIso;
395  }
396  }
397  }
398 
399  if(thrType == "TAU" && l1menu.run()>1) {
400  auto & tauinfo = l1menu.thrExtraInfo().TAU();
401  const std::string isoSet{ "EMIsoForTAUthr" };
402  jThrType["isolation"][isoSet]["thrtype"] = isoSet;
403  jThrType["isolation"][isoSet]["Parametrization"] = json::array_t({});
404  for(size_t bit = 1; bit<=5; ++bit) {
405  auto & iso = tauinfo.isolation(isoSet,bit);
406  json jIso({});
407  jIso["etamax"] = iso.etamax();
408  jIso["etamin"] = iso.etamin();
409  jIso["isobit"] = iso.isobit();
410  jIso["mincut"] = iso.mincut();
411  jIso["offset"] = iso.offset();
412  jIso["priority"] = iso.priority();
413  jIso["slope"] = iso.slope();
414  jIso["upperlimit"] = iso.upperlimit();
415  jThrType["isolation"][isoSet]["Parametrization"] += jIso;
416  }
417  }
418 
419  if(thrType == "JET") {
420  auto & jetinfo = l1menu.thrExtraInfo().JET();
421  jThrType["ptMinToTopoSmallWindow"] = (int)jetinfo.ptMinToTopoSmallWindow();
422  jThrType["ptMinToTopoLargeWindow"] = (int)jetinfo.ptMinToTopoLargeWindow();
423  }
424 
425  if(thrType == "XS") {
426  auto & xsinfo = l1menu.thrExtraInfo().XS();
427  jThrType["significance"]["xeMin"] = xsinfo.xeMin();
428  jThrType["significance"]["xeMax"] = xsinfo.xeMax();
429  jThrType["significance"]["teSqrtMin"] = xsinfo.teSqrtMin();
430  jThrType["significance"]["teSqrtMax"] = xsinfo.teSqrtMax();
431  jThrType["significance"]["xsSigmaScale"] = xsinfo.xsSigmaScale();
432  jThrType["significance"]["xsSigmaOffset"] = xsinfo.xsSigmaOffset();
433  }
434 
435  if(thrType == "eEM") {
436  auto & eeminfo = l1menu.thrExtraInfo().eEM();
437  jThrType["maxEt"] = (int)eeminfo.maxEt();
439  const auto & wpstr = TrigConf::Selection::wpToString(wp);
440  jThrType["workingPoints"][wpstr] = json::array_t({});
441  for(auto & iso : eeminfo.isolation(wp)) {
442  json jWPIso({});
443  std::stringstream stream;
444  stream << std::fixed << std::setprecision(3) << iso.value().reta_d();
445  jWPIso["reta"] = std::stod(stream.str());
446  jWPIso["reta_fw"] = iso.value().reta_fw();
447  stream.str("");
448  stream.clear();
449  stream << std::fixed << std::setprecision(3) << iso.value().rhad_d();
450  jWPIso["rhad"] = std::stod(stream.str());
451  jWPIso["rhad_fw"] = iso.value().rhad_fw();
452  stream.str("");
453  stream.clear();
454  stream << std::fixed << std::setprecision(3) << iso.value().wstot_d();
455  jWPIso["wstot"] = std::stod(stream.str());
456  jWPIso["wstot_fw"] = iso.value().wstot_fw();
457  jWPIso["etamin"] = iso.etaMin();
458  jWPIso["etamax"] = iso.etaMax();
459  jWPIso["priority"] = iso.priority();
460  jThrType["workingPoints"][wpstr] += jWPIso;
461  }
462  }
463  }
464 
465  if(thrType == "jEM") {
466  auto & jeminfo = l1menu.thrExtraInfo().jEM();
467  jThrType["maxEt"] = (int)jeminfo.maxEt();
468  jThrType["ptMinToTopo1"] = (int)jeminfo.ptMinToTopo("1A");
469  jThrType["ptMinToTopo2"] = (int)jeminfo.ptMinToTopo("2A");
470  jThrType["ptMinToTopo3"] = (int)jeminfo.ptMinToTopo("3A");
471  jThrType["ptMinxTOB1"] = (int)jeminfo.ptMinxTOB("1A");
472  jThrType["ptMinxTOB2"] = (int)jeminfo.ptMinxTOB("2A");
473  jThrType["ptMinxTOB3"] = (int)jeminfo.ptMinxTOB("3A");
475  const auto & wpstr = TrigConf::Selection::wpToString(wp);
476  jThrType["workingPoints"][wpstr] = json::array_t({});
477  for(auto & iso : jeminfo.isolation(wp)) {
478  json jWPIso({});
479  std::stringstream stream;
480  stream << std::fixed << std::setprecision(3) << iso.value().iso_d();
481  jWPIso["iso"] = std::stod(stream.str());
482  jWPIso["iso_fw"] = iso.value().iso_fw();
483  stream.str("");
484  stream.clear();
485  stream << std::fixed << std::setprecision(3) << iso.value().frac_d();
486  jWPIso["frac"] = std::stod(stream.str());
487  jWPIso["frac_fw"] = iso.value().frac_fw();
488  stream.str("");
489  stream.clear();
490  stream << std::fixed << std::setprecision(3) << iso.value().frac2_d();
491  jWPIso["frac2"] = std::stod(stream.str());
492  jWPIso["frac2_fw"] = iso.value().frac2_fw();
493  jWPIso["etamin"] = iso.etaMin();
494  jWPIso["etamax"] = iso.etaMax();
495  jWPIso["priority"] = iso.priority();
496  jThrType["workingPoints"][wpstr] += jWPIso;
497  }
498  }
499  }
500 
501  if(thrType == "eTAU") {
502  auto & eeminfo = l1menu.thrExtraInfo().eTAU();
503  jThrType["minIsoEt"] = (int)eeminfo.minIsoEt();
504  jThrType["maxEt"] = (int)eeminfo.maxEt();
505  jThrType["algoVersion"] = (int)eeminfo.algoVersion();
508  const auto & wpstr = TrigConf::Selection::wpToString(wp);
509  jThrType["workingPoints"][wpstr] = json::array_t({});
510  for(auto & iso : eeminfo.isolation(wp)) {
511  json jWPIso({});
512  std::stringstream stream;
513  stream << std::fixed << std::setprecision(3) << iso.value().rCore_d();
514  jWPIso["rCore"] = std::stod(stream.str());
515  jWPIso["rCore_fw"] = iso.value().rCore_fw();
516  stream.str("");
517  stream.clear();
518  stream << std::fixed << std::setprecision(3) << iso.value().rHad_d();
519  jWPIso["rHad"] = std::stod(stream.str());
520  jWPIso["rHad_fw"] = iso.value().rHad_fw();
521  jThrType["workingPoints"][wpstr] += jWPIso;
522  }
523  }
524  }
525 
526  if(thrType == "jTAU") {
527  auto & jtauinfo = l1menu.thrExtraInfo().jTAU();
528  jThrType["maxEt"] = (int)jtauinfo.maxEt();
529  jThrType["ptMinToTopo1"] = (int)jtauinfo.ptMinToTopo("1A");
530  jThrType["ptMinToTopo2"] = (int)jtauinfo.ptMinToTopo("2A");
531  jThrType["ptMinToTopo3"] = (int)jtauinfo.ptMinToTopo("3A");
532  jThrType["ptMinxTOB1"] = (int)jtauinfo.ptMinxTOB("1A");
533  jThrType["ptMinxTOB2"] = (int)jtauinfo.ptMinxTOB("2A");
534  jThrType["ptMinxTOB3"] = (int)jtauinfo.ptMinxTOB("3A");
536  const auto & wpstr = TrigConf::Selection::wpToString(wp);
537  jThrType["workingPoints"][wpstr] = json::array_t({});
538  for(auto & iso : jtauinfo.isolation(wp)) {
539  json jWPIso({});
540  std::stringstream stream;
541  stream << std::fixed << std::setprecision(3) << iso.value().isolation_d();
542  jWPIso["isolation"] = std::stod(stream.str());
543  jWPIso["isolation_fw"] = iso.value().isolation_fw();
544  jThrType["workingPoints"][wpstr] += jWPIso;
545  }
546  }
547  }
548 
549  if(thrType == "cTAU") {
550  auto & eeminfo = l1menu.thrExtraInfo().cTAU();
552  const auto & wpstr = TrigConf::Selection::wpToString(wp);
553  jThrType["workingPoints"][wpstr] = json::array_t({});
554  for(auto & iso : eeminfo.isolation(wp)) {
555  json jWPIso({});
556  std::stringstream stream;
557  stream << std::fixed << std::setprecision(3) << iso.value().isolation_d();
558  jWPIso["isolation"] = std::stod(stream.str());
559  jWPIso["isolation_fw"] = iso.value().isolation_fw();
560  stream.str("");
561  stream << std::fixed << std::setprecision(3) << iso.value().isolation_jTAUCoreScale_d();
562  jWPIso["isolation_jTAUCoreScale"] = std::stod(stream.str());
563  jWPIso["isolation_jTAUCoreScale_fw"] = iso.value().isolation_jTAUCoreScale_fw();
564  stream.str("");
565  stream << std::fixed << std::setprecision(3) << iso.value().eTAU_rCoreMin_WP_d();
566  jWPIso["eTAU_rCoreMin"] = std::stod(stream.str());
567  jWPIso["eTAU_rCoreMin_WP_fw"] = iso.value().eTAU_rCoreMin_WP_fw();
568  stream.str("");
569  stream << std::fixed << std::setprecision(3) << iso.value().eTAU_rHadMin_WP_d();
570  jWPIso["eTAU_rHadMin"] = std::stod(stream.str());
571  jWPIso["eTAU_rHadMin_WP_fw"] = iso.value().eTAU_rHadMin_WP_fw();
572  jThrType["workingPoints"][wpstr] += jWPIso;
573  }
574  }
575  }
576 
577  if(thrType == "jJ") {
578  auto & jjinfo = l1menu.thrExtraInfo().jJ();
579  jThrType["ptMinToTopo1"] = (int)jjinfo.ptMinToTopo("1A");
580  jThrType["ptMinToTopo2"] = (int)jjinfo.ptMinToTopo("2A");
581  jThrType["ptMinToTopo3"] = (int)jjinfo.ptMinToTopo("3A");
582  jThrType["ptMinxTOB1"] = (int)jjinfo.ptMinxTOB("1A");
583  jThrType["ptMinxTOB2"] = (int)jjinfo.ptMinxTOB("2A");
584  jThrType["ptMinxTOB3"] = (int)jjinfo.ptMinxTOB("3A");
585  }
586 
587  if(thrType == "jLJ") {
588  auto & jljinfo = l1menu.thrExtraInfo().jLJ();
589  jThrType["ptMinToTopo1"] = (int)jljinfo.ptMinToTopo("1A");
590  jThrType["ptMinToTopo2"] = (int)jljinfo.ptMinToTopo("2A");
591  jThrType["ptMinToTopo3"] = (int)jljinfo.ptMinToTopo("3A");
592  jThrType["ptMinxTOB1"] = (int)jljinfo.ptMinxTOB("1A");
593  jThrType["ptMinxTOB2"] = (int)jljinfo.ptMinxTOB("2A");
594  jThrType["ptMinxTOB3"] = (int)jljinfo.ptMinxTOB("3A");
595  }
596 
597  if(thrType == "gJ") {
598  auto & gjinfo = l1menu.thrExtraInfo().gJ();
599  jThrType["ptMinToTopo1"] = (int)gjinfo.ptMinToTopo(1);
600  jThrType["ptMinToTopo2"] = (int)gjinfo.ptMinToTopo(2);
601  }
602 
603  if(thrType == "gLJ") {
604  auto & gljinfo = l1menu.thrExtraInfo().gLJ();
605  jThrType["ptMinToTopo1"] = (int)gljinfo.ptMinToTopo(1);
606  jThrType["ptMinToTopo2"] = (int)gljinfo.ptMinToTopo(2);
607  jThrType["seedThrA"] = (int)gljinfo.seedThr('A');
608  jThrType["seedThrB"] = (int)gljinfo.seedThr('B');
609  jThrType["seedThrC"] = (int)gljinfo.seedThr('C');
610  std::stringstream stream;
611  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMin('A');
612  jThrType["rhoTowerMinA"] = std::stod(stream.str());
613  stream.str("");
614  stream.clear();
615  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMin('B');
616  jThrType["rhoTowerMinB"] = std::stod(stream.str());
617  stream.str("");
618  stream.clear();
619  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMin('C');
620  jThrType["rhoTowerMinC"] = std::stod(stream.str());
621  stream.str("");
622  stream.clear();
623  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMax('A');
624  jThrType["rhoTowerMaxA"] = std::stod(stream.str());
625  stream.str("");
626  stream.clear();
627  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMax('B');
628  jThrType["rhoTowerMaxB"] = std::stod(stream.str());
629  stream.str("");
630  stream.clear();
631  stream << std::fixed << std::setprecision(3) << gljinfo.rhoTowerMax('C');
632  jThrType["rhoTowerMaxC"] = std::stod(stream.str());
633  }
634 
635  if(thrType == "jXE") {
636  // nothing to do for now...
637  }
638 
639  if(thrType == "jTE") {
640  auto & ei = l1menu.thrExtraInfo().jTE();
641  jThrType["etaBoundary1"] = ei.etaBoundary("1A");
642  jThrType["etaBoundary1_fw"] = ei.etaBoundary_fw("1A");
643  jThrType["etaBoundary2"] = ei.etaBoundary("2A");
644  jThrType["etaBoundary2_fw"] = ei.etaBoundary_fw("2A");
645  jThrType["etaBoundary3"] = ei.etaBoundary("3A");
646  jThrType["etaBoundary3_fw"] = ei.etaBoundary_fw("3A");
647  }
648 
649  if(thrType == "gXE") {
650  auto & ei = l1menu.thrExtraInfo().gXE();
651  jThrType["seedThrA"] = (int)ei.seedThr('A');
652  jThrType["seedThrB"] = (int)ei.seedThr('B');
653  jThrType["seedThrC"] = (int)ei.seedThr('C');
654  jThrType["XERHO_sigmaPosA"] = ei.XERHO_param('A',true);
655  jThrType["XERHO_sigmaPosB"] = ei.XERHO_param('B',true);
656  jThrType["XERHO_sigmaPosC"] = ei.XERHO_param('C',true);
657  jThrType["XERHO_sigmaNegA"] = ei.XERHO_param('A',false);
658  jThrType["XERHO_sigmaNegB"] = ei.XERHO_param('B',false);
659  jThrType["XERHO_sigmaNegC"] = ei.XERHO_param('C',false);
660  jThrType["XEJWOJ_a_A"] = ei.JWOJ_param('A','a');
661  jThrType["XEJWOJ_a_B"] = ei.JWOJ_param('B','a');
662  jThrType["XEJWOJ_a_C"] = ei.JWOJ_param('C','a');
663  jThrType["XEJWOJ_b_A"] = ei.JWOJ_param('A','b');
664  jThrType["XEJWOJ_b_B"] = ei.JWOJ_param('B','b');
665  jThrType["XEJWOJ_b_C"] = ei.JWOJ_param('C','b');
666  jThrType["XEJWOJ_c_A"] = ei.JWOJ_param('A','c');
667  jThrType["XEJWOJ_c_B"] = ei.JWOJ_param('B','c');
668  jThrType["XEJWOJ_c_C"] = ei.JWOJ_param('C','c');
669  }
670 
671  if(thrType == "gTE") {
672  // nothing to do for now...
673  }
674 
675  std::vector<std::string> legacyCalo = {"EM", "JET", "TAU", "XE", "TE", "XS", "ZB", "JB", "JF", "JE", "R2TOPO"};
676  if( std::any_of(begin(legacyCalo), end(legacyCalo), [&thrType](const std::string &c) { return c==thrType; }) ) {
677  thresholds["legacyCalo"][thrType] = jThrType;
678  } else {
679  thresholds[thrType] = jThrType;
680  }
681  };
682 
683  json boards = json::object_t{};
684  for( auto & bname : l1menu.boardNames() ) {
685  auto & bdef = l1menu.board(bname);
686  boards[bname] = json{ {"connectors", bdef.connectorNames()}, {"type", bdef.type()} };
687  if(bdef.legacy())
688  boards[bname]["legacy"] = true;
689  };
690 
691  json connectors = json::object_t{};
692  for( auto & cname : l1menu.connectorNames() ) {
693  auto jConn = json{};
694  auto & cdef = l1menu.connector(cname);
695  jConn["type"] = cdef.type();
696  if(cdef.legacy())
697  jConn["legacy"] = true;
698  jConn["triggerlines"] = json::array_t();
699  if(cdef.maxClock() == 2){
700  if(cdef.maxFpga() == 2){
701  // legacy topo, TOPO2, TOPO3 and muctpi
702  for(size_t fpga = 0; fpga<cdef.maxFpga(); ++fpga) {
703  for(size_t clock = 0; clock<cdef.maxClock(); ++clock) {
704  for(auto & tl : cdef.triggerLines(fpga, clock)) {
705  jConn["triggerlines"] += json({ {"name", tl.name()}, {"nbits",tl.nbits()}, {"startbit", tl.startbit()}, {"flatindex", tl.flatindex()}, {"fpga", tl.fpga()}, {"clock", tl.clock()}, });
706  }
707  }
708  }
709  } else {
710  // AlfaCpti and merger board
711  for(size_t fpga = 0; fpga<cdef.maxFpga(); ++fpga) {
712  for(size_t clock = 0; clock<cdef.maxClock(); ++clock) {
713  for(auto & tl : cdef.triggerLines(fpga, clock)) {
714  jConn["triggerlines"] += json({ {"name", tl.name()}, {"nbits",tl.nbits()}, {"startbit", tl.startbit()}, {"flatindex", tl.flatindex()}, {"clock", tl.clock()}, });
715  }
716  }
717  }
718  }
719  } else {
720  for(auto & tl : cdef.triggerLines()) {
721  jConn["triggerlines"] += json({ {"name", tl.name()}, {"nbits",tl.nbits()}, {"startbit", tl.startbit()}, {"flatindex", tl.flatindex()} });
722  }
723  }
724  connectors[cname] = jConn;
725  }
726 
727  json ctp = json::object_t{};
728  {
729  for(size_t slot=7; slot<=9; ++slot) {
730  std::string sName = "slot" + std::to_string(slot);
731  ctp["inputs"]["ctpin"][sName] = json({});
732  for(size_t conn=0; conn<=3; ++conn) {
733  ctp["inputs"]["ctpin"][sName]["connector" + std::to_string(conn)] = l1menu.ctp().ctpin(slot,conn);
734  }
735  }
736  ctp["inputs"]["electrical"] = json::object_t{};
737  for(size_t conn=0; conn<3; ++conn) {
738  if(l1menu.ctp().electrical(conn)=="")
739  continue;
740  ctp["inputs"]["electrical"]["connector" + std::to_string(conn)] = l1menu.ctp().electrical(conn);
741  }
742  ctp["inputs"]["optical"] = json::object_t{};
743  for(size_t conn=0; conn<12; ++conn) {
744  if(l1menu.ctp().optical(conn)=="")
745  continue;
746  ctp["inputs"]["optical"]["connector" + std::to_string(conn)] = l1menu.ctp().optical(conn);
747  }
748  json ctpmon = json::object_t{};
749  for(auto & mon : l1menu.ctp().ctpMon()) {
750  ctpmon[mon.first] = json({{"multiplicity",mon.second.first},{"thr",mon.second.second}});
751  }
752  json ctpin = json::object_t{};
753  for(auto & mon : l1menu.ctp().ctpinMon()) {
754  ctpin[mon.first] = json({{"multiplicity", mon.second.first},{"thr", mon.second.second}});
755  }
756  ctp["monitoring"] = json({{"ctpmon", ctpmon}, {"ctpin", ctpin}});
757  }
758 
759  json jtopo = json::object_t{};
760  if(l1menu.run()>1) {
761  std::map<L1TopoAlgorithm::AlgorithmType,std::string> algTypeNames = {
762  {L1TopoAlgorithm::AlgorithmType::SORTING, "sortingAlgorithms"},
763  {L1TopoAlgorithm::AlgorithmType::DECISION, "decisionAlgorithms"},
764  {L1TopoAlgorithm::AlgorithmType::MULTIPLICITY, "multiplicityAlgorithms"}
765  };
766  auto topoCategories = l1menu.isRun2() ? std::vector<std::string> {"R2TOPO"} : std::vector<std::string> {"TOPO", "MUTOPO", "MULTTOPO", "R2TOPO"};
767  for( const std::string& topoCat : topoCategories ) {
768  for(auto & algName : l1menu.topoAlgorithmNames(topoCat)) {
769  json jalg = json::object_t({});
770  auto & alg = l1menu.algorithm(algName,topoCat);
771  jalg["klass"] = alg.klass();
772  // input
774  if(alg.inputs().size()>0) {
775  jalg["input"] = alg.inputs()[0];
776  } else {
777  jalg["input"] = nullptr;
778  }
779  } else if(alg.type()==L1TopoAlgorithm::AlgorithmType::SORTING) {
780  jalg["input"] = alg.inputs()[0];
781  } else {
782  jalg["input"] = alg.inputs();
783  }
784  // output
786  jalg["output"] = alg.outputs();
787  } else {
788  jalg["output"] = alg.outputs()[0];
789  }
790  // generic parameters
791  if(topoCat == "MULTTOPO") {
792  jalg["nbits"] = alg.getAttribute<unsigned int>("nbits");
793  jalg["threshold"] = alg.getAttribute("threshold");
794  if(alg.klass()=="EnergyThreshold"){
795  for(const L1TopoAlgorithm::VariableParameter & vpar : alg.parameters()) {
796  if(vpar.name()=="flavour") jalg["flavour"] = XEFlavour::flavourIntToStr(vpar.value());
797  }
798  }
799  } else {
800  const auto & ds = alg.generics();
801  for(const auto & gpname : ds.getKeys()) {
802  auto gp = ds.getObject(gpname);
803  {
804  if(gp.hasAttribute("position")) {
805  jalg["fixedParameters"]["generics"][gpname]["position"] = gp.getAttribute<unsigned int>("position");
806  }
807  std::string pval = alg.genericParameter(gpname);
808  try{
809  int pvali = std::stoi(pval);
810  jalg["fixedParameters"]["generics"][gpname]["value"] = pvali;
811  } catch(std::invalid_argument &) {
812  jalg["fixedParameters"]["generics"][gpname]["value"] = pval;
813  }
814  }
815  }
816  }
817  // variable parameters
818  if(topoCat != "MULTTOPO") {
819  jalg["variableParameters"] = json::array_t({});
820  for(const L1TopoAlgorithm::VariableParameter & vpar : alg.parameters()) {
821  json jVPar({});
822  jVPar["name"] = vpar.name();
823  jVPar["value"] = vpar.value();
824  if(auto sel = vpar.selection_optional()) { jVPar["selection"] = *sel; }
825  jalg["variableParameters"] += jVPar;
826  }
827  }
828  jtopo[topoCat][algTypeNames[alg.type()]][algName] = jalg;
829  }
830  }
831  }
832 
833  json j = json::object_t{};
834  j["filetype"] = "l1menu";
835  j["run"] = l1menu.run();
836  j["name"] = l1menu.name();
837  j["items"] = items;
838  j["thresholds"] = thresholds;
839  j["topoAlgorithms"] = jtopo;
840  j["boards"] = boards;
841  j["connectors"] = connectors;
842  j["ctp"] = ctp;
843 
844  std::ofstream outfile(filename);
845  outfile << std::setw(4) << j << std::endl;
846 
847  TRG_MSG_INFO("Saved file " << filename);
848  return true;
849 }
850 
851 
852 bool
854 
855  json j;
856  j["filetype"] = "bunchgroupset";
857  j["name"] = l1bgs.name();
858 
859  json groups;
860  for (size_t i = 0 ; i< l1bgs.size(); ++i) {
861  const auto & group = l1bgs.getBunchGroup(i);
862  json jgroup({});
863  jgroup["name"] = group->name();
864  jgroup["id"] = group->id();
865  jgroup["info"] = std::to_string(group->size()) + " bunches, " + std::to_string(group->nGroups()) + " groups";
866  json trains = json::array();
867  for (auto [first, len]: group->trains()) {
868  json train({});
869  train["first"] = first;
870  train["length"] = len;
871  trains.push_back(train);
872  }
873  jgroup["bcids"] = trains;
874  groups["BGRP"+std::to_string(group->id())] = jgroup;
875  }
876  j["bunchGroups"] = groups;
877  std::ofstream outfile(filename);
878  outfile << std::setw(4) << j << std::endl;
879  TRG_MSG_INFO("Saved file " << filename);
880  return true;
881 }
882 
883 bool TrigConf::JsonFileWriterL1::writeJsonFile(const std::string & filename, const TrigConf::L1PrescalesSet & l1ps) const {
884  json j;
885  j["filetype"] = "l1prescale";
886  j["name"] = l1ps.name();
887  json cuts;
888  for ( const auto & [itemName, ps]: l1ps.prescales()){
889  json cut;
890  cut["cut"] = ps.cut;
891  cut["enabled"] = ps.enabled;
892  cut["info"] = "prescale: " + std::to_string(ps.prescale);
893  cuts[itemName] = cut;
894  }
895  j["cutValues"] = cuts;
896  std::ofstream outfile(filename);
897  outfile << std::setw(4) << j << std::endl;
898  TRG_MSG_INFO("Saved file " << filename);
899  return true;
900 }
TrigConf::L1Threshold_jLJ
Definition: L1Threshold.h:290
TrigConf::Selection::WP::LOOSE
@ LOOSE
TrigConf::L1Threshold_cTAU
Definition: L1Threshold.h:255
ChainDefInMenu.groups
groups
Definition: ChainDefInMenu.py:44
TrigConf::L1Threshold_gTE
Definition: L1Threshold.h:380
TrigConf::L1Threshold_jTE
Definition: L1Threshold.h:350
checkxAOD.ds
ds
Definition: Tools/PyUtils/bin/checkxAOD.py:257
checkCorrelInHIST.conn
conn
Definition: checkCorrelInHIST.py:25
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TrigConf::L1Threshold_JET
Definition: L1Threshold.h:55
SGout2dot.alg
alg
Definition: SGout2dot.py:243
TrigConf::L1Threshold_eTAU
Definition: L1Threshold.h:212
JsonFileWriterL1.h
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
json
nlohmann::json json
Definition: HistogramDef.cxx:9
TrigConf::L1Threshold_ZB::seed
const std::string & seed() const
Definition: L1Threshold.h:111
TrigConf::JsonFileWriterL1::JsonFileWriterL1
JsonFileWriterL1()
Constructor.
Definition: JsonFileWriterL1.cxx:15
TrigConf::L1Threshold_jTAU
Definition: L1Threshold.h:234
xAOD::JetAlgorithmType::algName
const std::string & algName(ID id)
Converts a JetAlgorithmType::ID into a string.
Definition: JetContainerInfo.cxx:67
TrigConf::Selection::wpToString
static std::string wpToString(WP)
Definition: L1ThresholdBase.cxx:347
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
TrigConf::L1Threshold_gXE
Definition: L1Threshold.h:365
TrigConf::L1Threshold_jXE
Definition: L1Threshold.h:335
TrigConf::L1Threshold_TE
Definition: L1Threshold.h:88
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
TrigConf::DataStructure::name
virtual const std::string & name() const final
Definition: DataStructure.cxx:109
TrigConf::L1BunchGroupSet::getBunchGroup
const std::shared_ptr< L1BunchGroup > & getBunchGroup(const std::string &name) const
Accessor to the bunchgroup by name.
Definition: L1BunchGroupSet.cxx:118
TrigConf::L1Threshold_eEM
Definition: L1Threshold.h:166
x
#define x
TrigConf::L1Threshold_jEM
Definition: L1Threshold.h:189
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
TrigConf::JsonFileWriterL1::writeJsonFile
bool writeJsonFile(const std::string &filename, const L1Menu &l1menu) const
Definition: JsonFileWriterL1.cxx:21
TrigConf::Selection::WP::HADLOOSE
@ HADLOOSE
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
TrigConf::L1TopoAlgorithm::AlgorithmType::SORTING
@ SORTING
TrigConf::L1Threshold_Calo
Definition: L1ThresholdBase.h:188
xAOD::tgcPt
setTeId setLumiBlock setRoiId setRoiSubsystem setRoiNumber setRoiEta tgcPt
Definition: L2StandAloneMuon_v2.cxx:352
TrigConf::L1Threshold_ZB
Definition: L1Threshold.h:101
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrigConf::L1BunchGroupSet::size
std::size_t size() const
Accessor to the number of defined bunchgroups.
Definition: L1BunchGroupSet.cxx:128
json
nlohmann::json json
Definition: JsonFileWriterL1.cxx:11
sel
sel
Definition: SUSYToolsTester.cxx:92
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
plotBeamSpotVert.cuts
string cuts
Definition: plotBeamSpotVert.py:93
TrigConf::L1BunchGroupSet
L1 board configuration.
Definition: L1BunchGroupSet.h:71
PlotSFuncertainty.wp
wp
Definition: PlotSFuncertainty.py:112
TrigConf::L1TopoAlgorithm::AlgorithmType::MULTIPLICITY
@ MULTIPLICITY
TrigConf::L1Threshold_TAU::isolationMask
uint16_t isolationMask() const
Definition: L1Threshold.h:44
TrigConf::XEFlavour::flavourIntToStr
static std::string flavourIntToStr(const unsigned int flavInt)
Definition: L1TopoAlgorithm.h:129
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
TrigConf::L1PrescalesSet
L1 menu configuration.
Definition: L1PrescalesSet.h:19
TrigConf::Selection::WP::HADTIGHT
@ HADTIGHT
lumiFormat.array
array
Definition: lumiFormat.py:98
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TrigConf::L1Threshold_jJ
Definition: L1Threshold.h:275
TrigJetMonitorAlgorithm.items
items
Definition: TrigJetMonitorAlgorithm.py:79
item
Definition: ItemListSvc.h:43
TrigConf::TrigConfMessaging
Class to provide easy access to TrigConf::MsgStream for TrigConf classes.
Definition: TrigConfMessaging.h:28
dq_make_web_display.rv
def rv
Definition: dq_make_web_display.py:219
TriggerTest.ctp
ctp
Retrieve trigger EDM objects.
Definition: TriggerTest.py:14
TrigConf::Selection::WP::MEDIUM
@ MEDIUM
TrigConf::L1TopoAlgorithm::AlgorithmType::DECISION
@ DECISION
TrigConf::L1Threshold_MU
Definition: L1Threshold.h:400
TrigConf::Selection::WP::TIGHT
@ TIGHT
CaloLCW_tf.group
group
Definition: CaloLCW_tf.py:28
TrigConf::Selection::WP::HADMEDIUM
@ HADMEDIUM
DeMoScan.first
bool first
Definition: DeMoScan.py:534
plotBeamSpotMon.mon
mon
Definition: plotBeamSpotMon.py:67
TrigConf::L1PrescalesSet::prescales
const std::map< std::string, L1Prescale > & prescales() const
Definition: L1PrescalesSet.cxx:58
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
TrigConf::L1Threshold_ZBTopo
Definition: L1Threshold.h:119
pickleTool.object
object
Definition: pickleTool.py:30
TrigConf::L1Threshold_ZBTopo::mask0
const unsigned int & mask0() const
Definition: L1Threshold.h:125
TrigConf::L1TopoAlgorithm::VariableParameter
Definition: L1TopoAlgorithm.h:25
dqt_zlumi_alleff_HIST.tl
tl
Definition: dqt_zlumi_alleff_HIST.py:73
TrigConf::L1Threshold_TAU
Definition: L1Threshold.h:37
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
python.compressB64.c
def c
Definition: compressB64.py:93
TrigConf::L1Threshold_gJ
Definition: L1Threshold.h:305
TrigConf::L1Threshold_MU::ptBarrel
unsigned int ptBarrel() const
Definition: L1Threshold.h:413
TrigConf::L1Threshold_EM
Definition: L1Threshold.h:17
TrigConf::L1Threshold_gLJ
Definition: L1Threshold.h:320