ATLAS Offline Software
Loading...
Searching...
No Matches
HLTResult.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 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
35
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
75//coverity[PASS_BY_VALUE]
77{
78 swap(*this, rhs);
79 return *this;
80}
81
86
87void HLTResult::listOfModIDs(std::vector<unsigned int>& mod_ids) const{
88
89 for (std::map<unsigned int, std::set<std::pair<CLID, std::string> > >::const_iterator map_it = m_modID_id_name.begin();
90 map_it != m_modID_id_name.end(); ++map_it)
91 mod_ids.push_back((*map_it).first);
92}
93
94std::vector<unsigned int> HLTResult::listOfModIDs() const{
95
96 std::vector<unsigned int> mod_ids;
97 for (std::map<unsigned int, std::set<std::pair<CLID, std::string> > >::const_iterator map_it = m_modID_id_name.begin();
98 map_it != m_modID_id_name.end(); ++map_it)
99 mod_ids.push_back((*map_it).first);
100 return mod_ids;
101}
102
103bool HLTResult::error() const {
104 return (getHLTStatus().action() >= HLT::Action::ABORT_CHAIN) ? true : false;
105}
106
107uint32_t HLTResult::error_bits() const {
108 uint32_t bits = 0;
109 // result of erros in previous levels (not correct previous level result)
110 if (getLvlConverterStatus().action() != HLT::Action::CONTINUE) bits |= 0x1;
111 if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_LVL1_ITEMS) bits |= 0x2;
112 if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_LVL2_CHAINS) bits |= 0x4;
113 if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::WRONG_HLT_RESULT) bits |= 0x8;
114 if (getLvlConverterStatus().steeringInternalReason() == HLT::SteeringInternalReason::NO_HLT_RESULT) bits |= 0x10;
115
116 // result of erros in this level
117 if (getHLTStatus().action() == HLT::Action::ABORT_JOB) bits |= 0x100;
118 if (getHLTStatus().action() == HLT::Action::ABORT_EVENT) bits |= 0x200;
119 if (getHLTStatus().action() == HLT::Action::ABORT_CHAIN) bits |= 0x400;
120 if (getHLTStatus().reason() == HLT::Reason::TIMEOUT) bits |= 0x800;
121 if (getHLTStatus().reason() == HLT::Reason::NAV_ERROR) bits |= 0x1000;
122 return bits;
123}
124
125unsigned int HLTResult::estimateSize() const {
126 return IndNumOfFixedBit
127 + m_chainsResult.size() + 1 // size(one word) and payload
128 + m_navigationResult.size() + 1
129 + m_extras.size() + 1;
130}
131
132namespace
133{
134 /*
135 * Serialize an indivisible section of the result (e.g. header)
136 */
137 bool serialize_indivisible(uint32_t* output,
138 int& data_size,
139 const std::vector<uint32_t>& indivisible,
140 unsigned int umax_size,
141 bool truncating,
142 bool first=false)
143 {
144 auto size_indivisible = indivisible.size();
145 auto size_needed = data_size + size_indivisible + (first ? 0 : 1); /*
146 we add a word for the size unless this
147 is the first indivisible we serialize
148 */
149
150 if(truncating && size_needed > umax_size)
151 return false; // we do not have space for this indivisible
152
153 if (!first)
154 output[data_size++] = size_indivisible; // follow existing data with size
155
156 std::copy(std::begin(indivisible),
157 std::end(indivisible),
158 output + data_size);
159 data_size += size_indivisible;
160
161 return true;
162 }
163
164 /*
165 * serialize, the collections in nav whose boundaries are provided into output
166 * output must have enough space. The pairs in boundaries must specify proper
167 * boundaries. That is, each pair "bpair" must respect the following
168 * conditions:
169 * 1) bpair.first in [0, nav.size())
170 * 2) bpair.second in [bpair.first, nav.size()]
171 */
172 void serialize_collections(uint32_t * output,
173 int& data_size,
174 const std::vector<uint32_t>& nav,
175 const std::vector<std::pair<unsigned, unsigned>>& boundaries)
176 {
177 const auto nav_begin = std::begin(nav);
178 for(const auto& bpair : boundaries)
179 {
180 assert(bpair.first < nav.size());
181 assert(bpair.second >= bpair.first);
182 assert(bpair.second <= nav.size());
183
184 std::copy(nav_begin + bpair.first,
185 nav_begin + bpair.second,
186 output + data_size);
187 data_size += bpair.second - bpair.first;
188 }
189 }
190
191 /*
192 * Find, in the provided cuts, the boundaries of the collections that are in
193 * idname_include but not in idname_exclude
194 */
195 void
196 find_cuts(const std::set<std::pair<CLID, std::string>>& collections,
197 const std::vector<std::pair<CLID, std::string>>& idname_include,
198 const std::vector<std::pair<CLID, std::string>>& idname_exclude,
199 std::vector<unsigned int> cuts,
200 std::vector<std::pair<unsigned int, unsigned int>>& out)
201 {
202 for(const auto& coll : collections)
203 {
204 if(std::find(std::begin(idname_exclude),
205 std::end(idname_exclude),
206 coll) == std::end(idname_exclude))
207 { // collection not marked for exclusion
208 auto it = std::find(std::begin(idname_include),
209 std::end(idname_include),
210 coll);
211 if(it != std::end(idname_include)) // this
212 { // collection marked for inclusion
213 auto pos = std::distance(std::begin(idname_include), it);
214 out.emplace_back(cuts.at(pos + 1),
215 cuts.at(pos + 2));
216 }
217 }
218 }
219 }
220
221 /*
222 * Addition of the size of a collection, as specified by its cut boundaries,
223 * to an existing (running) sum
224 */
225 inline
226 unsigned add_collection_to_size(unsigned current_size,
227 const std::pair<unsigned, unsigned>& pair)
228 {
229 return current_size + pair.second - pair.first;
230 }
231
232 /*
233 * Calculate the total size of the collections whose boundaries are provided
234 */
235 inline
236 unsigned int
237 calc_colls_size(const std::vector<std::pair<unsigned, unsigned>>& boundaries)
238 {
239 return std::accumulate(std::begin(boundaries), std::end(boundaries), 0,
240 add_collection_to_size);
241 }
242}
243
244auto HLTResult::findDSCuts(unsigned int mod_id) const -> CutPairVecs
245{
246
247 auto cuts_dsonly = CutPairs{{0, m_navigationResultCuts_DSonly.at(1)}}; /* the
248 first cut pair contains the preamle for DS
249 navigation: {version, NavSize, TEsSize, NumTEs} */
250 auto cuts_reg = CutPairs{}; // starts empty
251
252 auto modid_coll_it = m_modID_id_name.find(mod_id);
253 if(modid_coll_it != std::end(m_modID_id_name))
254 {
255 const auto& collections = modid_coll_it->second;
256 find_cuts(collections,
258 {},
260 cuts_dsonly); // cuts for collections only in the DS result
261 find_cuts(collections,
262 m_id_name,
265 cuts_reg); // cuts for collections in the normal result
266 }
267
268 return std::make_pair(cuts_dsonly, cuts_reg);
269}
270
271/* static */
272unsigned int HLTResult::calc_total_size_DS(unsigned int ds_nav_size)
273{
274 static constexpr auto num_size_words = 3u;
275 return num_size_words + IndNumOfFixedBit + ds_nav_size;
276}
277
279 int& data_size,
280 unsigned int umax_size,
281 bool truncating) const
282{
283 auto calc_size_needed = [data_size](unsigned int nav_size)
284 { return nav_size + data_size + 1; }; /* given a
285 navigation size, this gives the
286 total space needed in the output */
287 auto is_within_size = [umax_size, &calc_size_needed](unsigned int cut)
288 { return calc_size_needed(cut) <= umax_size; }; /* tells
289 whether the given cut would make it
290 within the allowed size */
291
292 if(static_cast<unsigned int>(data_size) < umax_size)
293 { // there is still some space (even if we end up truncating)
294 const auto tot_nav_size = m_navigationResult.size(); // cache the total size
295 auto cut_nav_size = tot_nav_size; // init cut size
296 auto endnav = std::end(m_navigationResult); // and cut point
297
298 if(truncating && calc_size_needed(tot_nav_size) > umax_size)
299 { // Truncation falls in navigation, so find the last cut that still fits
300 auto cutit = std::find_if(m_navigationResultCuts.rbegin(),
302 is_within_size);
303 cut_nav_size = (cutit == m_navigationResultCuts.rend()) ? 0 : *cutit;
304 endnav -= tot_nav_size - cut_nav_size;
305 }
306
307 assert(endnav == std::begin(m_navigationResult) + cut_nav_size); /* endnav
308 now marks the cutting point, while cut_nav_size
309 says how many nav words we are copying */
310
311 output[data_size++] = cut_nav_size;
312 copy(std::begin(m_navigationResult), endnav, output+data_size);
313 data_size += cut_nav_size;
314
315 return endnav == std::end(m_navigationResult); /* whether we went with the
316 full navigation */
317 }
318
319 return false; // we did not even have space for the size
320}
321
323 int& data_size,
324 unsigned int umax_size,
325 unsigned int nav_size,
326 const CutPairVecs& dscuts,
327 bool truncating) const
328{
329 if(nav_size + data_size < umax_size)
330 { // we have space for the navigation + 1 size word
331 output[data_size++] = nav_size;
332 auto index_for_size_in_nav_preamble = data_size + 1;
333
334 serialize_collections(output, data_size, m_navigationResult_DSonly,
335 dscuts.first);
336 serialize_collections(output, data_size, m_navigationResult, dscuts.second);
337
338 output[index_for_size_in_nav_preamble] = nav_size; /* the total size needs
339 to be replaced in the navigation preamble as it was originally
340 calculated with all data scouting collections lumped together in the
341 navigation. This needs to be corrected once headers can be changed and
342 serialization can be requested for each module ID separately.
343 TODO: remove when changing headers */
344 }
345 else
346 {
347 assert(truncating);
348
349 if(static_cast<unsigned int>(data_size) < umax_size)
350 output[data_size++] = 0; /* we can still write the size; (partial
351 navigation not supported in DS) */
352 }
353
354 return !truncating;
355}
356
357bool HLTResult::serialize_bootstrap(uint32_t*& output,
358 int& data_size,
359 bool& truncating,
360 int max_size,
361 unsigned int estimated_size)
362{
363 assert(!data_size);
364 assert(!output);
365
366 auto umax_size = static_cast<unsigned int>(max_size);
367 output = new uint32_t[std::min(umax_size, estimated_size)];
368
369 truncating = max_size >= 0 && estimated_size > umax_size;
370 setHLTResultTruncated(truncating);
371
372 // serialize header
373 return serialize_indivisible(output, data_size, m_headerResult, umax_size,
374 truncating, /*first*/true);
375}
376
377inline
379 int& data_size,
380 unsigned int umax_size,
381 bool truncating) const
382{
383 return serialize_indivisible(output, data_size, m_chainsResult, umax_size,
384 truncating) &&
385 serialize_navigation_reg(output, data_size, umax_size, truncating) &&
386 serialize_indivisible(output, data_size, m_extras, umax_size,
387 truncating);
388}
389
390bool HLTResult::serialize_body_DS(uint32_t* output,
391 int& data_size,
392 unsigned int umax_size,
393 unsigned int nav_size,
394 const CutPairVecs& dscuts,
395 bool truncating) const
396{
397 if(static_cast<unsigned int>(data_size) < umax_size)
398 { // still at least space for chains size
399 output[data_size++] = 0; // no chains
400 if(serialize_navigation_DS(output, data_size, umax_size, nav_size, dscuts,
401 truncating)
402 && static_cast<unsigned int>(data_size) < umax_size)
403 { // we managed to serialize without truncating and have at least 1word left
404 output[data_size++] = 0; // no extras
405 return true; // no truncation
406 }
407 }
408
409 return false;
410}
411
412bool HLTResult::serialize_regular(uint32_t*& output,
413 int& data_size,
414 int max_size)
415{
416 updateExtras();
417 bool truncating{false};
418 auto estim_size = estimateSize();
419 return serialize_bootstrap(output, data_size, truncating,
420 max_size, estim_size) &&
421 serialize_body_regular(output, data_size,
422 max_size, truncating);
423}
424
425bool HLTResult::serialize_DS(uint32_t*& output,
426 int& data_size,
427 int max_size,
428 unsigned int mod_id)
429{
430 assert(mod_id);
431
432 bool truncating{false};
433 auto dscuts = findDSCuts(mod_id);
434 auto navsize = calc_colls_size(dscuts.first) + calc_colls_size(dscuts.second);
435
436 return serialize_bootstrap(output, data_size, truncating, max_size,
437 calc_total_size_DS(navsize)) &&
438 serialize_body_DS(output, data_size, max_size, navsize, dscuts,
439 truncating);
440}
441
442inline
443bool HLTResult::serialize( std::vector<uint32_t>& output )
444{
445 return serialize(output, /*mod_id*/ 0);
446}
447
448bool HLTResult::serialize(std::vector<uint32_t>& output,
449 const unsigned int mod_id)
450{
451 uint32_t * aux = nullptr;
452 int data_size = 0;
453
454 auto ret = serialize(aux, data_size, /*max_size*/ -1, mod_id);
455 auto uptr = std::unique_ptr<uint32_t[]>{aux}; // takes care of deletion
456
457 output.reserve(data_size);
458 std::copy(aux, aux + data_size, std::back_inserter(output));
459
460 return ret;
461}
462
463inline
464bool HLTResult::serialize(uint32_t*& output,
465 int& data_size,
466 const int max_size,
467 const unsigned int mod_id)
468{
469 return mod_id ? serialize_DS(output, data_size, max_size, mod_id)
470 : serialize_regular(output, data_size, max_size);
471}
472
473inline
475{
476 if (m_extraData)
477 { // the extraData object has been used, so serialize again into m_extras
478 m_extras.clear();
479 m_extraData->serialize(m_extras);
480 }
481}
482
483bool HLTResult::deserialize( const std::vector<uint32_t>& source ) {
484 return unpackFromStorable(source);
485}
486
487
488bool HLTResult::deserialize( uint32_t* source, const int data_size ) {
489 if (data_size == 0 ) return false;
490 std::vector<uint32_t> rawResult(&source[0], &source[data_size]);
491 return unpackFromStorable(rawResult);
492}
493
494bool HLTResult::unpackFromStorable(const std::vector<uint32_t>& raw)
495{
496 if (raw.empty())
497 return false;
498
499 // default assumption: fixed bits of raw data are same as present class
500 unsigned int rawIndNumOfFixedBit = HLTResult::IndNumOfFixedBit;
501
502 unsigned version = raw[0];
503
504 // different version handling
505 if ( version != m_HLTResultClassVersion){
506 if (version == 1) {
507 // version 1 had only 12 InitBits
508 rawIndNumOfFixedBit = 12;
509 } else if (version == 2 ) {
510 // nothing to be done
511 } else { // case we don't know about
512 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;
513 return false;
514 }
515
516 }
517 if ( raw.size() < HLTResult::IndNumOfFixedBit )
518 return false;
519 m_headerResult.assign(raw.begin(),
520 raw.begin()+rawIndNumOfFixedBit);
521
522 // fill up with zeros so use of HLTResult::IndNumOfFixedBit of other indices past the end doesn't break
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.assign(raw.begin()+offset, raw.begin()+readEnd);
543 offset += sizeOfChains;
544
545 if (truncation) {
546 if ( isHLTResultTruncated() ) // if truncation was marked by creator it is OK
547 return true;
548 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
549 return false;
550 }
551
552 // navigation
553 uint32_t sizeOfNavigation = raw[offset];
554 offset++;
555 // check if offset is not beyond size of raw result
556
557
558 readEnd = offset + sizeOfNavigation;
559 if (readEnd > raw.size()) {
560 readEnd = raw.size();
561 truncation = true;
562 }
563
564
565 if ( offset > readEnd )
566 return true;
567
568 m_navigationResult.assign(raw.begin()+offset,
569 raw.begin()+readEnd);
570
571
572 if (truncation) {
573 if ( isHLTResultTruncated() )
574 return true;
575 else
576 return false;
577 }
578 offset += sizeOfNavigation;
579
580 if (version >= 3) {
581 // extras
582 uint32_t sizeOfExtras = 0;
583 if (offset < raw.size()) {
584 sizeOfExtras = raw[offset++];
585 }
586 else {
587 truncation = true;
588 }
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.assign(raw.begin()+offset,
600 raw.begin()+readEnd);
601 if (truncation) {
602 if ( isHLTResultTruncated() )
603 return true;
604 else
605 return false;
606 }
607 }
608
609 return true;
610}
611
612
613unsigned int HLTResult::size() const {
614 return m_headerResult.size() + m_chainsResult.size() + m_navigationResult.size() + m_extras.size();
615}
616
617std::vector<unsigned int> HLTResult::partSizes() const {
618 std::vector<unsigned int> sizes;
619 sizes.reserve(4);
620 sizes.push_back(m_headerResult.size());
621 sizes.push_back(m_chainsResult.size());
622 sizes.push_back(m_navigationResult.size());
623 sizes.push_back(m_extras.size());
624 return sizes;
625}
626
628{
629 return (m_chainsResult.empty() && m_navigationResult.empty());
630}
631
632
637
638
642 else
643 return 0;
644}
645
650
654 else
655 return 0;
656}
657
658
660{
661 // On-demand deserialization of m_extras
662 if (m_extraData==0) {
664 }
665 return *m_extraData;
666}
667
683
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:49
void setCreatedOutsideHLT(bool created)
Definition HLTResult.h:210
void setNumOfSatisfiedSigs(uint32_t sigs)
sget number of satisfied signatures
Definition HLTResult.h:188
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:165
HLTResult & operator=(HLTResult rhs)
unified assignement operator
Definition HLTResult.cxx:76
std::vector< uint32_t > m_headerResult
the full payload, and sub-payloads
Definition HLTResult.h:474
std::vector< std::pair< unsigned int, unsigned int > > CutPairs
Definition HLTResult.h:370
std::vector< uint32_t > m_extras
extra storeage (which can be used to store some operational infos)
Definition HLTResult.h:478
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:124
bool serialize(std::vector< uint32_t > &output, const unsigned int mod_id)
void setHLTLevel(HLTLevel hltLevel)
Definition HLTResult.h:172
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:94
~HLTResult()
destructor
Definition HLTResult.cxx:83
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:480
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:157
std::map< unsigned int, std::set< std::pair< CLID, std::string > > > m_modID_id_name
Definition HLTResult.h:484
std::vector< unsigned int > m_navigationResultCuts_DSonly
Definition HLTResult.h:488
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:482
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:156
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:468
std::vector< uint32_t > m_navigationResult
storage of navigation (serialized also)
Definition HLTResult.h:476
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:477
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:490
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:196
std::vector< unsigned int > partSizes() const
std::pair< CutPairs, CutPairs > CutPairVecs
Definition HLTResult.h:371
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:475
@ IndHLTResultClassVersion
Definition HLTResult.h:353
@ IndConfigPrescalesKey
configuration key for prescales
Definition HLTResult.h:366
@ IndNumOfFixedBit
total number of fixed bits
Definition HLTResult.h:367
@ IndConfigSuperMasterKey
configuration key for the menu
Definition HLTResult.h:365
void setAccepted(bool acc)
sets HLT decision
Definition HLTResult.h:134
bool isHLTResultTruncated() const
is serialized HLTResult truncated
Definition HLTResult.h:240
void setLvlConverterStatus(ErrorCode status)
Definition HLTResult.h:166
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:241
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:148
std::vector< unsigned int > m_navigationResultCuts
Definition HLTResult.h:486
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
void swap(HLTExtraData &, HLTExtraData &)
static const ErrorCode FATAL(Action::ABORT_JOB, Reason::UNKNOWN)
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)