Skip to content
Snippets Groups Projects
Commit bdaade3d authored by Marco Clemencic's avatar Marco Clemencic
Browse files

updates for EventIDBase

- add some methods to test payload of EventIDBase
- use std::tie for comparisons

See merge request !153
parents d86d094e e6e1fd1c
No related branches found
No related tags found
1 merge request!153updates for EventIDBase
Pipeline #
......@@ -14,8 +14,10 @@
*/
#include <iostream>
#include <tuple>
#include <stdint.h>
/**
* @class EventIDBase
*
......@@ -88,6 +90,10 @@ public:
friend bool operator<=(const EventIDBase& lhs, const EventIDBase& rhs);
friend bool operator>=(const EventIDBase& lhs, const EventIDBase& rhs);
bool isRunEvent() const;
bool isTimeStamp() const;
bool isLumiEvent() const;
/// Extraction operators
friend std::ostream& operator<<(std::ostream& os, const EventIDBase& rhs);
......@@ -161,25 +167,24 @@ inline bool operator<(const EventIDBase& lhs, const EventIDBase& rhs) {
// then try ordering by lumi/event if both have non-zero lumi
// then order by run/event
if (lhs.m_time_stamp != 0 && rhs.m_time_stamp != 0) {
return (lhs.m_time_stamp < rhs.m_time_stamp);
} else {
if (lhs.m_lumiBlock != 0 && rhs.m_lumiBlock != 0) {
return ( lhs.m_lumiBlock < rhs.m_lumiBlock ||
( lhs.m_lumiBlock == rhs.m_lumiBlock &&
lhs.m_event_number < rhs.m_event_number) );
return (std::tie(lhs.m_lumiBlock, lhs.m_event_number) <
std::tie(rhs.m_lumiBlock, rhs.m_event_number) );
} else {
return ( lhs.m_run_number<rhs.m_run_number ||
( lhs.m_run_number==rhs.m_run_number &&
lhs.m_event_number<rhs.m_event_number) );
return (std::tie(lhs.m_run_number, lhs.m_event_number) <
std::tie(rhs.m_run_number, rhs.m_event_number) );
}
}
}
inline bool operator==(const EventIDBase& lhs, const EventIDBase& rhs) {
// We assume that equality via run/event numbers is sufficient
return lhs.m_run_number == rhs.m_run_number &&
lhs.m_event_number == rhs.m_event_number;
return ( lhs.m_run_number == rhs.m_run_number &&
lhs.m_event_number == rhs.m_event_number );
}
inline bool operator>(const EventIDBase& lhs, const EventIDBase& rhs) {
return !( (lhs < rhs) || (lhs == rhs));
......
......@@ -10,22 +10,34 @@
#include "GaudiKernel/EventIDBase.h"
EventIDBase::EventIDBase(number_type run_number,
uint64_t event_number,
number_type time_stamp,
number_type time_stamp_ns_offset,
number_type lumi_block,
number_type bunch_crossing_id)
:
m_run_number (run_number),
m_event_number (event_number),
m_time_stamp (time_stamp),
m_time_stamp_ns_offset (time_stamp_ns_offset),
m_lumiBlock (lumi_block),
m_bunch_crossing_id (bunch_crossing_id)
uint64_t event_number,
number_type time_stamp,
number_type time_stamp_ns_offset,
number_type lumi_block,
number_type bunch_crossing_id)
:
m_run_number (run_number),
m_event_number (event_number),
m_time_stamp (time_stamp),
m_time_stamp_ns_offset (time_stamp_ns_offset),
m_lumiBlock (lumi_block),
m_bunch_crossing_id (bunch_crossing_id)
{}
EventIDBase::~EventIDBase()
{}
bool
EventIDBase::isRunEvent() const {
return (m_run_number + m_event_number != 0);
}
bool
EventIDBase::isTimeStamp() const {
return (m_time_stamp + m_time_stamp_ns_offset != 0);
}
bool
EventIDBase::isLumiEvent() const {
return (m_lumiBlock != 0);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment