ATLAS Offline Software
HLTResult.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 #include <cassert>
9 #include <algorithm>
10 #include <numeric>
11 #include <utility>
12 #include <map>
13 #include <set>
14 using namespace HLT;
15 
19 
22 
25  m_extraData{nullptr}
26 {
27  m_headerResult.resize(IndNumOfFixedBit);
28  m_headerResult[IndHLTResultClassVersion] = m_HLTResultClassVersion;
29  //std::cerr << "HLTResult instantiated with version " << m_HLTResultClassVersion << std::endl;
30  // set all fixed bits, if there will be an error then they will be OK ??? mean showing an error
31  setLvl1Id(0xffffffff);
32  setAccepted(false);
33 
34  setHLTStatus(HLT::FATAL);
35 
36  setLvlConverterStatus(HLT::FATAL);
37 
38  setPassThrough(false);
39 
40  setHLTLevel(HLT::UNKNOWN);
41 
42  setNumOfSatisfiedSigs(0);
43 
44  setErrorCoordinates(0, 0xffffffff); // quite unique way of saying that this was not used
45 
46  setCreatedOutsideHLT(true);
47 
48  setHLTResultTruncated(false);
49 }
50 
53  : m_headerResult{rhs.m_headerResult},
54  m_chainsResult{rhs.m_chainsResult},
55  m_navigationResult{rhs.m_navigationResult},
56  m_navigationResult_DSonly{rhs.m_navigationResult_DSonly},
57  m_extras{rhs.m_extras},
58  m_id_name{rhs.m_id_name},
59  m_id_name_DSonly{rhs.m_id_name_DSonly},
60  m_modID_id_name{rhs.m_modID_id_name},
61  m_navigationResultCuts{rhs.m_navigationResultCuts},
62  m_navigationResultCuts_DSonly{rhs.m_navigationResultCuts_DSonly},
63  m_extraData{rhs.m_extraData ? new HLTExtraData{*rhs.m_extraData} : nullptr}
64 {
65 }
66 
67 // move ctor
69  : HLTResult{}
70 {
71  swap(*this, rhs);
72 }
73 
74 // unifying assignment operator
76 {
77  swap(*this, rhs);
78  return *this;
79 }
80 
83  delete m_extraData;
84 }
85 
86 void HLTResult::listOfModIDs(std::vector<unsigned int>& mod_ids) const{
87 
88  for (std::map<unsigned int, std::set<std::pair<CLID, std::string> > >::const_iterator map_it = m_modID_id_name.begin();
89  map_it != m_modID_id_name.end(); ++map_it)
90  mod_ids.push_back((*map_it).first);
91 }
92 
93 std::vector<unsigned int> HLTResult::listOfModIDs() const{
94 
95  std::vector<unsigned int> mod_ids;
96  for (std::map<unsigned int, std::set<std::pair<CLID, std::string> > >::const_iterator map_it = m_modID_id_name.begin();
97  map_it != m_modID_id_name.end(); ++map_it)
98  mod_ids.push_back((*map_it).first);
99  return mod_ids;
100 }
101 
102 bool HLTResult::error() const {
103  return (getHLTStatus().action() >= HLT::Action::ABORT_CHAIN) ? true : false;
104 }
105 
107  uint32_t bits = 0;
108  // result of erros in previous levels (not correct previous level result)
109  if (getLvlConverterStatus().action() != HLT::Action::CONTINUE) bits |= 0x1;
110  if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_LVL1_ITEMS) bits |= 0x2;
111  if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_LVL2_CHAINS) bits |= 0x4;
112  if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::WRONG_HLT_RESULT) bits |= 0x8;
113  if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_HLT_RESULT) bits |= 0x10;
114 
115  // result of erros in this level
116  if (getHLTStatus().action() == HLT::Action::ABORT_JOB) bits |= 0x100;
117  if (getHLTStatus().action() == HLT::Action::ABORT_EVENT) bits |= 0x200;
118  if (getHLTStatus().action() == HLT::Action::ABORT_CHAIN) bits |= 0x400;
119  if (getHLTStatus().reason() == HLT::Reason::TIMEOUT) bits |= 0x800;
120  if (getHLTStatus().reason() == HLT::Reason::NAV_ERROR) bits |= 0x1000;
121  return bits;
122 }
123 
124 unsigned int HLTResult::estimateSize() const {
125  return IndNumOfFixedBit
126  + m_chainsResult.size() + 1 // size(one word) and payload
127  + m_navigationResult.size() + 1
128  + m_extras.size() + 1;
129 }
130 
131 namespace
132 {
133  /*
134  * Serialize an indivisible section of the result (e.g. header)
135  */
136  bool serialize_indivisible(uint32_t* output,
137  int& data_size,
138  const std::vector<uint32_t>& indivisible,
139  unsigned int umax_size,
140  bool truncating,
141  bool first=false)
142  {
143  auto size_indivisible = indivisible.size();
144  auto size_needed = data_size + size_indivisible + (first ? 0 : 1); /*
145  we add a word for the size unless this
146  is the first indivisible we serialize
147  */
148 
149  if(truncating && size_needed > umax_size)
150  return false; // we do not have space for this indivisible
151 
152  if (!first)
153  output[data_size++] = size_indivisible; // follow existing data with size
154 
155  std::copy(std::begin(indivisible),
156  std::end(indivisible),
157  output + data_size);
158  data_size += size_indivisible;
159 
160  return true;
161  }
162 
163  /*
164  * serialize, the collections in nav whose boundaries are provided into output
165  * output must have enough space. The pairs in boundaries must specify proper
166  * boundaries. That is, each pair "bpair" must respect the following
167  * conditions:
168  * 1) bpair.first in [0, nav.size())
169  * 2) bpair.second in [bpair.first, nav.size()]
170  */
171  void serialize_collections(uint32_t * output,
172  int& data_size,
173  const std::vector<uint32_t>& nav,
174  const std::vector<std::pair<unsigned, unsigned>>& boundaries)
175  {
176  const auto nav_begin = std::begin(nav);
177  for(const auto& bpair : boundaries)
178  {
179  assert(bpair.first < nav.size());
180  assert(bpair.second >= bpair.first);
181  assert(bpair.second <= nav.size());
182 
183  std::copy(nav_begin + bpair.first,
184  nav_begin + bpair.second,
185  output + data_size);
186  data_size += bpair.second - bpair.first;
187  }
188  }
189 
190  /*
191  * Find, in the provided cuts, the boundaries of the collections that are in
192  * idname_include but not in idname_exclude
193  */
194  void
195  find_cuts(const std::set<std::pair<CLID, std::string>>& collections,
196  const std::vector<std::pair<CLID, std::string>>& idname_include,
197  const std::vector<std::pair<CLID, std::string>>& idname_exclude,
198  std::vector<unsigned int> cuts,
199  std::vector<std::pair<unsigned int, unsigned int>>& out)
200  {
201  for(const auto& coll : collections)
202  {
203  if(std::find(std::begin(idname_exclude),
204  std::end(idname_exclude),
205  coll) == std::end(idname_exclude))
206  { // collection not marked for exclusion
207  auto it = std::find(std::begin(idname_include),
208  std::end(idname_include),
209  coll);
210  if(it != std::end(idname_include)) // this
211  { // collection marked for inclusion
212  auto pos = std::distance(std::begin(idname_include), it);
213  out.emplace_back(cuts.at(pos + 1),
214  cuts.at(pos + 2));
215  }
216  }
217  }
218  }
219 
220  /*
221  * Addition of the size of a collection, as specified by its cut boundaries,
222  * to an existing (running) sum
223  */
224  inline
225  unsigned add_collection_to_size(unsigned current_size,
226  const std::pair<unsigned, unsigned>& pair)
227  {
228  return current_size + pair.second - pair.first;
229  }
230 
231  /*
232  * Calculate the total size of the collections whose boundaries are provided
233  */
234  inline
235  unsigned int
236  calc_colls_size(const std::vector<std::pair<unsigned, unsigned>>& boundaries)
237  {
238  return std::accumulate(std::begin(boundaries), std::end(boundaries), 0,
239  add_collection_to_size);
240  }
241 }
242 
243 auto HLTResult::findDSCuts(unsigned int mod_id) const -> CutPairVecs
244 {
245 
246  auto cuts_dsonly = CutPairs{{0, m_navigationResultCuts_DSonly.at(1)}}; /* the
247  first cut pair contains the preamle for DS
248  navigation: {version, NavSize, TEsSize, NumTEs} */
249  auto cuts_reg = CutPairs{}; // starts empty
250 
251  auto modid_coll_it = m_modID_id_name.find(mod_id);
252  if(modid_coll_it != std::end(m_modID_id_name))
253  {
254  const auto& collections = modid_coll_it->second;
255  find_cuts(collections,
256  m_id_name_DSonly,
257  {},
258  m_navigationResultCuts_DSonly,
259  cuts_dsonly); // cuts for collections only in the DS result
260  find_cuts(collections,
261  m_id_name,
262  m_id_name_DSonly,
263  m_navigationResultCuts,
264  cuts_reg); // cuts for collections in the normal result
265  }
266 
267  return std::make_pair(cuts_dsonly, cuts_reg);
268 }
269 
270 /* static */
271 unsigned int HLTResult::calc_total_size_DS(unsigned int ds_nav_size)
272 {
273  static constexpr auto num_size_words = 3u;
274  return num_size_words + IndNumOfFixedBit + ds_nav_size;
275 }
276 
278  int& data_size,
279  unsigned int umax_size,
280  bool truncating) const
281 {
282  auto calc_size_needed = [data_size](unsigned int nav_size)
283  { return nav_size + data_size + 1; }; /* given a
284  navigation size, this gives the
285  total space needed in the output */
286  auto is_within_size = [umax_size, &calc_size_needed](unsigned int cut)
287  { return calc_size_needed(cut) <= umax_size; }; /* tells
288  whether the given cut would make it
289  within the allowed size */
290 
291  if(static_cast<unsigned int>(data_size) < umax_size)
292  { // there is still some space (even if we end up truncating)
293  const auto tot_nav_size = m_navigationResult.size(); // cache the total size
294  auto cut_nav_size = tot_nav_size; // init cut size
295  auto endnav = std::end(m_navigationResult); // and cut point
296 
297  if(truncating && calc_size_needed(tot_nav_size) > umax_size)
298  { // Truncation falls in navigation, so find the last cut that still fits
299  auto cutit = std::find_if(m_navigationResultCuts.rbegin(),
300  m_navigationResultCuts.rend(),
301  is_within_size);
302  cut_nav_size = (cutit == m_navigationResultCuts.rend()) ? 0 : *cutit;
303  endnav -= tot_nav_size - cut_nav_size;
304  }
305 
306  assert(endnav == std::begin(m_navigationResult) + cut_nav_size); /* endnav
307  now marks the cutting point, while cut_nav_size
308  says how many nav words we are copying */
309 
310  output[data_size++] = cut_nav_size;
311  copy(std::begin(m_navigationResult), endnav, output+data_size);
312  data_size += cut_nav_size;
313 
314  return endnav == std::end(m_navigationResult); /* whether we went with the
315  full navigation */
316  }
317 
318  return false; // we did not even have space for the size
319 }
320 
322  int& data_size,
323  unsigned int umax_size,
324  unsigned int nav_size,
325  const CutPairVecs& dscuts,
326  bool truncating) const
327 {
328  if(nav_size + data_size < umax_size)
329  { // we have space for the navigation + 1 size word
330  output[data_size++] = nav_size;
331  auto index_for_size_in_nav_preamble = data_size + 1;
332 
333  serialize_collections(output, data_size, m_navigationResult_DSonly,
334  dscuts.first);
335  serialize_collections(output, data_size, m_navigationResult, dscuts.second);
336 
337  output[index_for_size_in_nav_preamble] = nav_size; /* the total size needs
338  to be replaced in the navigation preamble as it was originally
339  calculated with all data scouting collections lumped together in the
340  navigation. This needs to be corrected once headers can be changed and
341  serialization can be requested for each module ID separately.
342  TODO: remove when changing headers */
343  }
344  else
345  {
346  assert(truncating);
347 
348  if(static_cast<unsigned int>(data_size) < umax_size)
349  output[data_size++] = 0; /* we can still write the size; (partial
350  navigation not supported in DS) */
351  }
352 
353  return !truncating;
354 }
355 
357  int& data_size,
358  bool& truncating,
359  int max_size,
360  unsigned int estimated_size)
361 {
362  assert(!data_size);
363  assert(!output);
364 
365  auto umax_size = static_cast<unsigned int>(max_size);
366  output = new uint32_t[std::min(umax_size, estimated_size)];
367 
368  truncating = max_size >= 0 && estimated_size > umax_size;
369  setHLTResultTruncated(truncating);
370 
371  // serialize header
372  return serialize_indivisible(output, data_size, m_headerResult, umax_size,
373  truncating, /*first*/true);
374 }
375 
376 inline
378  int& data_size,
379  unsigned int umax_size,
380  bool truncating) const
381 {
382  return serialize_indivisible(output, data_size, m_chainsResult, umax_size,
383  truncating) &&
384  serialize_navigation_reg(output, data_size, umax_size, truncating) &&
385  serialize_indivisible(output, data_size, m_extras, umax_size,
386  truncating);
387 }
388 
390  int& data_size,
391  unsigned int umax_size,
392  unsigned int nav_size,
393  const CutPairVecs& dscuts,
394  bool truncating) const
395 {
396  if(static_cast<unsigned int>(data_size) < umax_size)
397  { // still at least space for chains size
398  output[data_size++] = 0; // no chains
399  if(serialize_navigation_DS(output, data_size, umax_size, nav_size, dscuts,
400  truncating)
401  && static_cast<unsigned int>(data_size) < umax_size)
402  { // we managed to serialize without truncating and have at least 1word left
403  output[data_size++] = 0; // no extras
404  return true; // no truncation
405  }
406  }
407 
408  return false;
409 }
410 
412  int& data_size,
413  int max_size)
414 {
415  updateExtras();
416  bool truncating{false};
417  auto estim_size = estimateSize();
418  return serialize_bootstrap(output, data_size, truncating,
419  max_size, estim_size) &&
420  serialize_body_regular(output, data_size,
421  max_size, truncating);
422 }
423 
425  int& data_size,
426  int max_size,
427  unsigned int mod_id)
428 {
429  assert(mod_id);
430 
431  bool truncating{false};
432  auto dscuts = findDSCuts(mod_id);
433  auto navsize = calc_colls_size(dscuts.first) + calc_colls_size(dscuts.second);
434 
435  return serialize_bootstrap(output, data_size, truncating, max_size,
436  calc_total_size_DS(navsize)) &&
437  serialize_body_DS(output, data_size, max_size, navsize, dscuts,
438  truncating);
439 }
440 
441 inline
442 bool HLTResult::serialize( std::vector<uint32_t>& output )
443 {
444  return serialize(output, /*mod_id*/ 0);
445 }
446 
447 bool HLTResult::serialize(std::vector<uint32_t>& output,
448  const unsigned int mod_id)
449 {
450  uint32_t * aux = nullptr;
451  int data_size = 0;
452 
453  auto ret = serialize(aux, data_size, /*max_size*/ -1, mod_id);
454  auto uptr = std::unique_ptr<uint32_t[]>{aux}; // takes care of deletion
455 
456  output.reserve(data_size);
457  std::copy(aux, aux + data_size, std::back_inserter(output));
458 
459  return ret;
460 }
461 
462 inline
464  int& data_size,
465  const int max_size,
466  const unsigned int mod_id)
467 {
468  return mod_id ? serialize_DS(output, data_size, max_size, mod_id)
469  : serialize_regular(output, data_size, max_size);
470 }
471 
472 inline
474 {
475  if (m_extraData)
476  { // the extraData object has been used, so serialize again into m_extras
477  m_extras.clear();
479  }
480 }
481 
482 bool HLTResult::deserialize( const std::vector<uint32_t>& source ) {
483  return unpackFromStorable(source);
484 }
485 
486 
487 bool HLTResult::deserialize( uint32_t* source, const int data_size ) {
488  if (data_size == 0 ) return false;
489  std::vector<uint32_t> rawResult(&source[0], &source[data_size]);
490  return unpackFromStorable(rawResult);
491 }
492 
493 bool HLTResult::unpackFromStorable(const std::vector<uint32_t>& raw)
494 {
495  if (raw.empty())
496  return false;
497 
498  // default assumption: fixed bits of raw data are same as present class
499  unsigned int rawIndNumOfFixedBit = HLTResult::IndNumOfFixedBit;
500 
501  unsigned version = raw[0];
502 
503  // different version handling
505  if (version == 1) {
506  // version 1 had only 12 InitBits
507  rawIndNumOfFixedBit = 12;
508  } else if (version == 2 ) {
509  // nothing to be done
510  } else { // case we don't know about
511  std::cerr << "HLTResult::unpackFromStorable has noticed a class version mismatch and does not know how to translate: raw data version " << raw[0] << " current class version " << m_HLTResultClassVersion << std::endl;
512  return false;
513  }
514 
515  }
516  if ( raw.size() < HLTResult::IndNumOfFixedBit )
517  return false;
518  m_headerResult.clear();
520  m_headerResult.insert(m_headerResult.end(), &raw[0], &raw[rawIndNumOfFixedBit]);
521 
522  // fill up with zeros so use of HLTResult::IndNumOfFixedBit of other indices past the end doesn't break
523  m_headerResult.insert(m_headerResult.end(), HLTResult::IndNumOfFixedBit-rawIndNumOfFixedBit, 0);
524 
525  if ( raw.size() == rawIndNumOfFixedBit )
526  return true; // that's OK, we have just empty event, no processing started
527 
528  // chains
529  uint32_t offset = rawIndNumOfFixedBit;
530  uint32_t sizeOfChains = raw[offset];
531  offset++;
532 
533  uint32_t readEnd = offset + sizeOfChains;
534  bool truncation = false;
535 
536  if ( readEnd > raw.size() ){
537  readEnd = raw.size();
538  truncation = true;
539  }
540 
541 
542  m_chainsResult.clear();
543  m_chainsResult.reserve( sizeOfChains );
544  m_chainsResult.insert( m_chainsResult.end(), &raw[offset], &raw[readEnd] );
545  offset += sizeOfChains;
546 
547  if (truncation) {
548  if ( isHLTResultTruncated() ) // if truncation was marked by creator it is OK
549  return true;
550  else // we need to report problems as there was extra truncation in the way which might have been done w/o any care about content
551  return false;
552  }
553 
554  // navigation
555  uint32_t sizeOfNavigation = raw[offset];
556  offset++;
557  uint32_t trueSizeOfNavigation = sizeOfNavigation;
558  // check if offset is not beyond size of raw result
559 
560 
561  readEnd = offset + sizeOfNavigation;
562  if (readEnd > raw.size()) {
563  readEnd = raw.size();
564  truncation = true;
565  trueSizeOfNavigation = raw.size() - offset;
566  }
567 
568 
569  if ( offset > readEnd )
570  return true;
571 
572  m_navigationResult.clear();
573  m_navigationResult.reserve(trueSizeOfNavigation);
574  m_navigationResult.insert(m_navigationResult.end(), &raw[offset], &raw[readEnd]);
575 
576 
577  if (truncation) {
578  if ( isHLTResultTruncated() )
579  return true;
580  else
581  return false;
582  }
583  offset += sizeOfNavigation;
584 
585  if (version >= 3) {
586  // extras
587  uint32_t sizeOfExtras = raw[offset];
588  offset++;
589 
590  readEnd = offset + sizeOfExtras;
591  if (readEnd > raw.size()) {
592  readEnd = raw.size();
593  truncation = true;
594  }
595 
596  if ( offset > readEnd )
597  return true;
598 
599  m_extras.clear();
600  m_extras.reserve(sizeOfExtras);
601  m_extras.insert(m_extras.end(), &raw[offset], &raw[readEnd]);
602  if (truncation) {
603  if ( isHLTResultTruncated() )
604  return true;
605  else
606  return false;
607  }
608  }
609 
610  return true;
611 }
612 
613 
614 unsigned int HLTResult::size() const {
615  return m_headerResult.size() + m_chainsResult.size() + m_navigationResult.size() + m_extras.size();
616 }
617 
618 std::vector<unsigned int> HLTResult::partSizes() const {
619  std::vector<unsigned int> sizes;
620  sizes.reserve(4);
621  sizes.push_back(m_headerResult.size());
622  sizes.push_back(m_chainsResult.size());
623  sizes.push_back(m_navigationResult.size());
624  sizes.push_back(m_extras.size());
625  return sizes;
626 }
627 
628 bool HLTResult::isEmpty() const
629 {
630  return (m_chainsResult.empty() && m_navigationResult.empty());
631 }
632 
633 
635  if (m_HLTResultClassVersion >=2 )
637 }
638 
639 
643  else
644  return 0;
645 }
646 
648  if (m_HLTResultClassVersion >=2 )
650 }
651 
655  else
656  return 0;
657 }
658 
659 
661 {
662  // On-demand deserialization of m_extras
663  if (m_extraData==0) {
665  }
666  return *m_extraData;
667 }
668 
669 void HLT::swap(HLTResult& lhs, HLTResult& rhs)
670 {
671  using std::swap;
672 
677  swap(lhs.m_extras, rhs.m_extras);
678  swap(lhs.m_id_name, rhs.m_id_name);
683 }
684 
HLT::HLTResult::operator=
HLTResult & operator=(HLTResult rhs)
unified assignement operator
Definition: HLTResult.cxx:75
HLT::Reason::NAV_ERROR
@ NAV_ERROR
suspected Navigation error
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:33
HLT::SteeringInternalReason::NO_LVL1_ITEMS
@ NO_LVL1_ITEMS
in the LVL1 result delivered to LVL2 none of LVL1 items are present, that means no seeding informatio...
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:54
HLT::HLTResult::~HLTResult
~HLTResult()
destructor
Definition: HLTResult.cxx:82
HLT::HLTResult::m_extras
std::vector< uint32_t > m_extras
extra storeage (which can be used to store some operational infos)
Definition: HLTResult.h:486
HLT::HLTResult::serialize_regular
bool serialize_regular(uint32_t *&output, int &data_size, int max_size)
Definition: HLTResult.cxx:411
HLT::HLTResult::serialize_bootstrap
bool serialize_bootstrap(uint32_t *&output, int &data_size, bool &truncating, int max_size, unsigned int estimated_size)
Definition: HLTResult.cxx:356
HLT::HLTResult::deserialize
bool deserialize(const std::vector< uint32_t > &source)
GenericResult::deserialize( const std::vector<uint32_t>& source )
Definition: HLTResult.cxx:482
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
HLT::HLTResult::CutPairVecs
std::pair< CutPairs, CutPairs > CutPairVecs
Definition: HLTResult.h:379
HLT::HLTResult::m_modID_id_name
std::map< unsigned int, std::set< std::pair< CLID, std::string > > > m_modID_id_name
Definition: HLTResult.h:492
HLT::SteeringInternalReason::WRONG_HLT_RESULT
@ WRONG_HLT_RESULT
error while unpacking HLT reult (happnes at EF when LVL2 result is unpacked)
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:57
HLT::Action::ABORT_EVENT
@ ABORT_EVENT
if things went wrong severely, event corruption suspected
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:18
HLT::Action::ABORT_JOB
@ ABORT_JOB
if things go really wrong, i.e.
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:19
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
HLT::HLTResult::m_extraData
HLTExtraData * m_extraData
object for m_extras deserialization (on demand)
Definition: HLTResult.h:498
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:396
HLT::SteeringInternalReason::NO_LVL2_CHAINS
@ NO_LVL2_CHAINS
in the LVL2 result unpacked at EF no active LVL2 chains are present, that means no seeding informatio...
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:55
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
HLT::SteeringInternalReason::NO_HLT_RESULT
@ NO_HLT_RESULT
no HLT result is present (means that LVL2 result was not delivered to EF)
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:58
HLT::HLTResult::swap
friend void swap(HLTResult &lhs, HLTResult &rhs)
HLT::HLTResult::error
virtual bool error() const
problems during processing
Definition: HLTResult.cxx:102
HLT::HLTResult::IndConfigPrescalesKey
@ IndConfigPrescalesKey
configuration key for prescales
Definition: HLTResult.h:374
HLTResult.h
HLT::swap
void swap(HLTExtraData &, HLTExtraData &)
Definition: HLTExtraData.cxx:76
HLT::HLTExtraData::serialize
void serialize(std::vector< uint32_t > &storage)
Serialize the data and append it to the vector.
Definition: HLTExtraData.cxx:47
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
HLT::HLTResult::m_chainsResult
std::vector< uint32_t > m_chainsResult
storege of serialized chains
Definition: HLTResult.h:483
HLT::HLTResult::IndNumOfFixedBit
@ IndNumOfFixedBit
total number of fixed bits
Definition: HLTResult.h:375
HLT::UNKNOWN
@ UNKNOWN
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:173
HLT::HLTResult::m_navigationResult_DSonly
std::vector< uint32_t > m_navigationResult_DSonly
storage of navigation (serialized also) for DataScouting
Definition: HLTResult.h:485
HLT::HLTResult::getLvlConverterStatus
ErrorCode getLvlConverterStatus() const
overall hlt status: if StatusCode::isFailure(), event should be discarded from physics stream (and,...
Definition: HLTResult.h:173
HLT::HLTResult::serialize
bool serialize(std::vector< uint32_t > &output, const unsigned int mod_id)
Definition: HLTResult.cxx:447
HLT::HLTResult::CutPairs
std::vector< std::pair< unsigned int, unsigned int > > CutPairs
Definition: HLTResult.h:378
HLT::HLTResult::listOfModIDs
std::vector< unsigned int > listOfModIDs() const
return the rob module ID vector
Definition: HLTResult.cxx:93
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
HLT::HLTResult::serialize_DS
bool serialize_DS(uint32_t *&output, int &data_size, int max_size, unsigned int mod_id)
Definition: HLTResult.cxx:424
HLT::HLTResult::IndConfigSuperMasterKey
@ IndConfigSuperMasterKey
configuration key for the menu
Definition: HLTResult.h:373
HLT::HLTResult::isHLTResultTruncated
bool isHLTResultTruncated() const
is serialized HLTResult truncated
Definition: HLTResult.h:248
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
HLT::HLTResult::error_bits
virtual uint32_t error_bits() const
bit flags to explain problems during processing
Definition: HLTResult.cxx:106
HLT::HLTResult::m_id_name
std::vector< std::pair< CLID, std::string > > m_id_name
Definition: HLTResult.h:488
HLT::HLTResult
HLT::HLTResult is sumarising result of trigger decision evaluation (online/offline) It contains basic...
Definition: HLTResult.h:57
WriteCalibToCool.swap
swap
Definition: WriteCalibToCool.py:94
HLT::HLTResult::m_id_name_DSonly
std::vector< std::pair< CLID, std::string > > m_id_name_DSonly
Definition: HLTResult.h:490
HLT::HLTResult::estimateSize
unsigned int estimateSize() const
Estimate the size this HLTResult would ocuppy once serialized.
Definition: HLTResult.cxx:124
HLTExtraData.h
Definition of the HLT extra data in the HLTResult payload.
HLT::HLTResult::setConfigSuperMasterKey
void setConfigSuperMasterKey(uint32_t key)
sets the key of the menu which was used to trigger this event
Definition: HLTResult.cxx:634
HLT::HLTResult::isEmpty
bool isEmpty() const
true if result is empty
Definition: HLTResult.cxx:628
HLT::HLTResult::serialize_navigation_DS
bool serialize_navigation_DS(uint32_t *output, int &data_size, unsigned int umax_size, unsigned int nav_size, const CutPairVecs &dscuts, bool truncating) const
Definition: HLTResult.cxx:321
HLT::HLTResult::m_navigationResult
std::vector< uint32_t > m_navigationResult
storage of navigation (serialized also)
Definition: HLTResult.h:484
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
min
#define min(a, b)
Definition: cfImp.cxx:40
HLT::Reason::TIMEOUT
@ TIMEOUT
the timeout occured
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:36
merge.output
output
Definition: merge.py:17
HLT::HLTResult::serialize_body_DS
bool serialize_body_DS(uint32_t *output, int &data_size, unsigned int max_size, unsigned int nav_size, const CutPairVecs &dscuts, bool truncating) const
Definition: HLTResult.cxx:389
HLT::Action::ABORT_CHAIN
@ ABORT_CHAIN
if things went wrong but it is not severe, other unrelated chains will continue
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:17
HLT::HLTResult::getHLTStatus
ErrorCode getHLTStatus() const
overall hlt status: if StatusCode::isFailure(), event should be discarded from physics stream (and,...
Definition: HLTResult.h:164
HLT::HLTResult::m_navigationResultCuts
std::vector< unsigned int > m_navigationResultCuts
Definition: HLTResult.h:494
HLT::Action::CONTINUE
@ CONTINUE
if all is OK the processing should be continued
Definition: Trigger/TrigEvent/TrigSteeringEvent/TrigSteeringEvent/Enums.h:16
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
HLT::HLTResult::calc_total_size_DS
static unsigned int calc_total_size_DS(unsigned int ds_nav_size)
Calculate the size of a DS result, given the size of its navigation.
Definition: HLTResult.cxx:271
get_generator_info.version
version
Definition: get_generator_info.py:33
HLT::HLTResult::m_headerResult
std::vector< uint32_t > m_headerResult
the full payload, and sub-payloads
Definition: HLTResult.h:482
HLT::HLTResult::setConfigPrescalesKey
void setConfigPrescalesKey(uint32_t key)
sets the key of the prescales config which was used to trigger this event
Definition: HLTResult.cxx:647
python.CaloScaleNoiseConfig.action
action
Definition: CaloScaleNoiseConfig.py:77
HLT::HLTResult::HLTResult
HLTResult()
constructor
Definition: HLTResult.cxx:24
DeMoScan.first
bool first
Definition: DeMoScan.py:536
HLT::HLTResult::partSizes
std::vector< unsigned int > partSizes() const
Definition: HLTResult.cxx:618
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
HLT::HLTResult::size
unsigned int size() const
Definition: HLTResult.cxx:614
HLT::HLTResult::getConfigPrescalesKey
uint32_t getConfigPrescalesKey() const
gets the key of the prescales config which was used to trigger this event
Definition: HLTResult.cxx:652
HLT::HLTResult::unpackFromStorable
bool unpackFromStorable(const std::vector< uint32_t > &raw)
split the rawResult vector into rawPartialResult's
Definition: HLTResult.cxx:493
HLT::HLTResult::getConfigSuperMasterKey
uint32_t getConfigSuperMasterKey() const
gets the key of the menu which was used to trigger this event
Definition: HLTResult.cxx:640
copySelective.source
string source
Definition: copySelective.py:32
HLT::HLTResult::getExtraData
HLTExtraData & getExtraData()
Definition: HLTResult.cxx:660
calibdata.copy
bool copy
Definition: calibdata.py:27
HLT::HLTResult::IndHLTResultClassVersion
@ IndHLTResultClassVersion
Definition: HLTResult.h:361
HLT::HLTResult::serialize_navigation_reg
bool serialize_navigation_reg(uint32_t *output, int &data_size, unsigned int umax_size, bool truncating) const
Definition: HLTResult.cxx:277
HLT::HLTResult::m_navigationResultCuts_DSonly
std::vector< unsigned int > m_navigationResultCuts_DSonly
Definition: HLTResult.h:496
HLT::HLTExtraData
Class representing the HLT extra payload stored in HLT::HLTResult::getExtras()
Definition: HLTExtraData.h:36
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
HLT::HLTResult::m_HLTResultClassVersion
static const uint32_t m_HLTResultClassVersion
the version of this HLTResult class
Definition: HLTResult.h:476
HLT::HLTResult::updateExtras
void updateExtras()
Definition: HLTResult.cxx:473
HLT::HLTResult::findDSCuts
CutPairVecs findDSCuts(unsigned int) const
Find the pairs of cut points that mark the boundaries of DS collections for the given module id.
Definition: HLTResult.cxx:243
HLT::HLTResult::setHLTResultTruncated
void setHLTResultTruncated(bool truncated)
Definition: HLTResult.h:249
HLT::HLTResult::serialize_body_regular
bool serialize_body_regular(uint32_t *output, int &data_size, unsigned int umax_size, bool truncating) const
Definition: HLTResult.cxx:377
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37