ATLAS Offline Software
Loading...
Searching...
No Matches
HLTResult.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 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>
14using namespace HLT;
15
19
22
25 m_extraData{nullptr}
26{
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
41
43
44 setErrorCoordinates(0, 0xffffffff); // quite unique way of saying that this was not used
45
47
49}
50
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
85
86void 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
93std::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
102bool HLTResult::error() const {
103 return (getHLTStatus().action() >= HLT::Action::ABORT_CHAIN) ? true : false;
104}
105
106uint32_t HLTResult::error_bits() const {
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
124unsigned 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
131namespace
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
243auto 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,
257 {},
259 cuts_dsonly); // cuts for collections only in the DS result
260 find_cuts(collections,
261 m_id_name,
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 */
271unsigned 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(),
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
356bool HLTResult::serialize_bootstrap(uint32_t*& output,
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
376inline
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
389bool HLTResult::serialize_body_DS(uint32_t* output,
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
411bool HLTResult::serialize_regular(uint32_t*& output,
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
424bool HLTResult::serialize_DS(uint32_t*& output,
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
441inline
442bool HLTResult::serialize( std::vector<uint32_t>& output )
443{
444 return serialize(output, /*mod_id*/ 0);
445}
446
447bool 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
462inline
463bool HLTResult::serialize(uint32_t*& output,
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
472inline
474{
475 if (m_extraData)
476 { // the extraData object has been used, so serialize again into m_extras
477 m_extras.clear();
478 m_extraData->serialize(m_extras);
479 }
480}
481
482bool HLTResult::deserialize( const std::vector<uint32_t>& source ) {
483 return unpackFromStorable(source);
484}
485
486
487bool 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
493bool 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
504 if ( version != m_HLTResultClassVersion){
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.assign(raw.begin(),
519 raw.begin()+rawIndNumOfFixedBit);
520
521 // fill up with zeros so use of HLTResult::IndNumOfFixedBit of other indices past the end doesn't break
523
524 if ( raw.size() == rawIndNumOfFixedBit )
525 return true; // that's OK, we have just empty event, no processing started
526
527 // chains
528 uint32_t offset = rawIndNumOfFixedBit;
529 uint32_t sizeOfChains = raw[offset];
530 offset++;
531
532 uint32_t readEnd = offset + sizeOfChains;
533 bool truncation = false;
534
535 if ( readEnd > raw.size() ){
536 readEnd = raw.size();
537 truncation = true;
538 }
539
540
541 m_chainsResult.assign(raw.begin()+offset, raw.begin()+readEnd);
542 offset += sizeOfChains;
543
544 if (truncation) {
545 if ( isHLTResultTruncated() ) // if truncation was marked by creator it is OK
546 return true;
547 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
548 return false;
549 }
550
551 // navigation
552 uint32_t sizeOfNavigation = raw[offset];
553 offset++;
554 // check if offset is not beyond size of raw result
555
556
557 readEnd = offset + sizeOfNavigation;
558 if (readEnd > raw.size()) {
559 readEnd = raw.size();
560 truncation = true;
561 }
562
563
564 if ( offset > readEnd )
565 return true;
566
567 m_navigationResult.assign(raw.begin()+offset,
568 raw.begin()+readEnd);
569
570
571 if (truncation) {
572 if ( isHLTResultTruncated() )
573 return true;
574 else
575 return false;
576 }
577 offset += sizeOfNavigation;
578
579 if (version >= 3) {
580 // extras
581 uint32_t sizeOfExtras = 0;
582 if (offset < raw.size()) {
583 sizeOfExtras = raw[offset++];
584 }
585 else {
586 truncation = true;
587 }
588
589 readEnd = offset + sizeOfExtras;
590 if (readEnd > raw.size()) {
591 readEnd = raw.size();
592 truncation = true;
593 }
594
595 if ( offset > readEnd )
596 return true;
597
598 m_extras.assign(raw.begin()+offset,
599 raw.begin()+readEnd);
600 if (truncation) {
601 if ( isHLTResultTruncated() )
602 return true;
603 else
604 return false;
605 }
606 }
607
608 return true;
609}
610
611
612unsigned int HLTResult::size() const {
613 return m_headerResult.size() + m_chainsResult.size() + m_navigationResult.size() + m_extras.size();
614}
615
616std::vector<unsigned int> HLTResult::partSizes() const {
617 std::vector<unsigned int> sizes;
618 sizes.reserve(4);
619 sizes.push_back(m_headerResult.size());
620 sizes.push_back(m_chainsResult.size());
621 sizes.push_back(m_navigationResult.size());
622 sizes.push_back(m_extras.size());
623 return sizes;
624}
625
627{
628 return (m_chainsResult.empty() && m_navigationResult.empty());
629}
630
631
636
637
641 else
642 return 0;
643}
644
649
653 else
654 return 0;
655}
656
657
659{
660 // On-demand deserialization of m_extras
661 if (m_extraData==0) {
663 }
664 return *m_extraData;
665}
666
682
Definition of the HLT extra data in the HLTResult payload.
Class representing the HLT extra payload stored in HLT::HLTResult::getExtras()
HLT::HLTResult is sumarising result of trigger decision evaluation (online/offline) It contains basic...
Definition HLTResult.h:51
void setCreatedOutsideHLT(bool created)
Definition HLTResult.h:212
void setNumOfSatisfiedSigs(uint32_t sigs)
sget number of satisfied signatures
Definition HLTResult.h:190
virtual uint32_t error_bits() const
bit flags to explain problems during processing
ErrorCode getLvlConverterStatus() const
overall hlt status: if StatusCode::isFailure(), event should be discarded from physics stream (and,...
Definition HLTResult.h:167
HLTResult & operator=(HLTResult rhs)
unified assignement operator
Definition HLTResult.cxx:75
std::vector< uint32_t > m_headerResult
the full payload, and sub-payloads
Definition HLTResult.h:476
std::vector< std::pair< unsigned int, unsigned int > > CutPairs
Definition HLTResult.h:372
std::vector< uint32_t > m_extras
extra storeage (which can be used to store some operational infos)
Definition HLTResult.h:480
bool serialize_body_DS(uint32_t *output, int &data_size, unsigned int max_size, unsigned int nav_size, const CutPairVecs &dscuts, bool truncating) const
friend void swap(HLTResult &lhs, HLTResult &rhs)
void setLvl1Id(uint32_t id)
sets event number (Lvl1-id)
Definition HLTResult.h:126
bool serialize(std::vector< uint32_t > &output, const unsigned int mod_id)
void setHLTLevel(HLTLevel hltLevel)
Definition HLTResult.h:174
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.
std::vector< unsigned int > listOfModIDs() const
return the rob module ID vector
Definition HLTResult.cxx:93
~HLTResult()
destructor
Definition HLTResult.cxx:82
uint32_t getConfigSuperMasterKey() const
gets the key of the menu which was used to trigger this event
bool serialize_bootstrap(uint32_t *&output, int &data_size, bool &truncating, int max_size, unsigned int estimated_size)
std::vector< std::pair< CLID, std::string > > m_id_name
Definition HLTResult.h:482
void setConfigSuperMasterKey(uint32_t key)
sets the key of the menu which was used to trigger this event
void setHLTStatus(ErrorCode hltStatus)
Definition HLTResult.h:159
std::map< unsigned int, std::set< std::pair< CLID, std::string > > > m_modID_id_name
Definition HLTResult.h:486
std::vector< unsigned int > m_navigationResultCuts_DSonly
Definition HLTResult.h:490
bool serialize_DS(uint32_t *&output, int &data_size, int max_size, unsigned int mod_id)
std::vector< std::pair< CLID, std::string > > m_id_name_DSonly
Definition HLTResult.h:484
HLTResult()
constructor
Definition HLTResult.cxx:24
void updateExtras()
ErrorCode getHLTStatus() const
overall hlt status: if StatusCode::isFailure(), event should be discarded from physics stream (and,...
Definition HLTResult.h:158
uint32_t getConfigPrescalesKey() const
gets the key of the prescales config which was used to trigger this event
unsigned int estimateSize() const
Estimate the size this HLTResult would ocuppy once serialized.
bool serialize_body_regular(uint32_t *output, int &data_size, unsigned int umax_size, bool truncating) const
virtual bool error() const
problems during processing
static const uint32_t m_HLTResultClassVersion
the version of this HLTResult class
Definition HLTResult.h:470
std::vector< uint32_t > m_navigationResult
storage of navigation (serialized also)
Definition HLTResult.h:478
HLTExtraData & getExtraData()
bool serialize_navigation_reg(uint32_t *output, int &data_size, unsigned int umax_size, bool truncating) const
bool isEmpty() const
true if result is empty
CutPairVecs findDSCuts(unsigned int) const
Find the pairs of cut points that mark the boundaries of DS collections for the given module id.
std::vector< uint32_t > m_navigationResult_DSonly
storage of navigation (serialized also) for DataScouting
Definition HLTResult.h:479
bool serialize_regular(uint32_t *&output, int &data_size, int max_size)
HLTExtraData * m_extraData
object for m_extras deserialization (on demand)
Definition HLTResult.h:492
unsigned int size() const
void setErrorCoordinates(unsigned int chainCounter=0, unsigned int step=0)
sets the information about the error, namely chain in which the error happened and the step
Definition HLTResult.h:198
std::vector< unsigned int > partSizes() const
std::pair< CutPairs, CutPairs > CutPairVecs
Definition HLTResult.h:373
bool serialize_navigation_DS(uint32_t *output, int &data_size, unsigned int umax_size, unsigned int nav_size, const CutPairVecs &dscuts, bool truncating) const
bool deserialize(const std::vector< uint32_t > &source)
GenericResult::deserialize( const std::vector<uint32_t>& source )
std::vector< uint32_t > m_chainsResult
storege of serialized chains
Definition HLTResult.h:477
@ IndHLTResultClassVersion
Definition HLTResult.h:355
@ IndConfigPrescalesKey
configuration key for prescales
Definition HLTResult.h:368
@ IndNumOfFixedBit
total number of fixed bits
Definition HLTResult.h:369
@ IndConfigSuperMasterKey
configuration key for the menu
Definition HLTResult.h:367
void setAccepted(bool acc)
sets HLT decision
Definition HLTResult.h:136
bool isHLTResultTruncated() const
is serialized HLTResult truncated
Definition HLTResult.h:242
void setLvlConverterStatus(ErrorCode status)
Definition HLTResult.h:168
void setConfigPrescalesKey(uint32_t key)
sets the key of the prescales config which was used to trigger this event
void setHLTResultTruncated(bool truncated)
Definition HLTResult.h:243
bool unpackFromStorable(const std::vector< uint32_t > &raw)
split the rawResult vector into rawPartialResult's
void setPassThrough(bool fa)
set passTrough flag
Definition HLTResult.h:150
std::vector< unsigned int > m_navigationResultCuts
Definition HLTResult.h:488
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
void swap(HLTExtraData &, HLTExtraData &)
void swap(ElementLinkVector< DOBJ > &lhs, ElementLinkVector< DOBJ > &rhs)
setEventNumber uint32_t
@ CONTINUE
if all is OK the processing should be continued
@ ABORT_CHAIN
if things went wrong but it is not severe, other unrelated chains will continue
@ ABORT_EVENT
if things went wrong severely, event corruption suspected
@ NO_LVL2_CHAINS
in the LVL2 result unpacked at EF no active LVL2 chains are present, that means no seeding informatio...
@ NO_LVL1_ITEMS
in the LVL1 result delivered to LVL2 none of LVL1 items are present, that means no seeding informatio...
@ WRONG_HLT_RESULT
error while unpacking HLT reult (happnes at EF when LVL2 result is unpacked)
@ NO_HLT_RESULT
no HLT result is present (means that LVL2 result was not delivered to EF)