Belle II Software  release-05-01-25
Time.cc
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : TRGTime.cc
5 // Section : TRG
6 // Owner : Yoshihito Iwasaki
7 // Email : yoshihito.iwasaki@kek.jp
8 //-----------------------------------------------------------------------------
9 // Description : A class to represent a signal timing in the trigger system.
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #include <iostream>
15 #include "trg/trg/Clock.h"
16 #include "trg/trg/Time.h"
17 #include "trg/trg/Signal.h"
18 
19 using namespace std;
20 
21 namespace Belle2 {
27  TRGTime::TRGTime(const TRGTime& t) :
28  _time(t._time),
29  _edge(t._edge),
30  _clock(t._clock),
31  _name(t._name)
32  {
33  }
34 
35  TRGTime::TRGTime(double timing,
36  bool edge,
37  const TRGClock& clock,
38  const std::string& name) :
39  _time(clock.position(timing)),
40  _edge(edge),
41  _clock(& clock),
42  _name(name)
43  {
44  }
45 
46  TRGTime::TRGTime(int timing,
47  bool edge,
48  const TRGClock& clock,
49  const std::string& name) :
50  _time(timing),
51  _edge(edge),
52  _clock(& clock),
53  _name(name)
54  {
55  }
56 
58  {
59  }
60 
61  TRGSignal
62  TRGTime::operator&(const TRGTime& left) const
63  {
64  TRGSignal t0(* this);
65  TRGSignal t1(left);
66  return t0 & t1;
67  }
68 
69  TRGSignal
70  TRGTime::operator&(const TRGSignal& left) const
71  {
72  TRGSignal t0(* this);
73  return t0 & left;
74  }
75 
76  TRGSignal
77  TRGTime::operator|(const TRGTime& left) const
78  {
79  TRGSignal t0(* this);
80  TRGSignal t1(left);
81  return t0 | t1;
82  }
83 
84  TRGSignal
85  TRGTime::operator|(const TRGSignal& left) const
86  {
87  TRGSignal t0(* this);
88  return t0 | left;
89  }
90 
91  void
92  TRGTime:: dump(const std::string& msg,
93  const std::string& pre) const
94  {
95  cout << pre << "time(clock):";
96 
97  if (_edge)
98  cout << " o ";
99  else
100  cout << " . ";
101 
102  cout << _time;
103  cout << " abs=" << _clock->absoluteTime(_time);
104  if (msg.find("name") != string::npos ||
105  msg.find("detail") != string::npos) {
106  cout << " (" << _name << ")";
107  }
108  cout << endl;
109  }
110 
111  bool
112  TRGTime::sortByTime(const TRGTime& a, const TRGTime& b)
113  {
114  if (a.time() < b.time()) {
115  return true;
116  } else if (a.time() == b.time()) {
117  if (a.edge() & (! b.edge()))
118  return true;
119  else if (a.edge() == b.edge())
120  return true;
121  }
122  return false;
123  }
124 
125  const TRGClock&
127  {
128  const double t = _clock->absoluteTime(_time);
129  _clock = & c;
130  _time = c.position(t);
131  return * _clock;
132  }
133 
135 } // namespace Belle2
Belle2::TRGSignal
A class to represent a digitized signal. Unit is nano second.
Definition: Signal.h:28
Belle2::TRGTime::_edge
bool _edge
Edge type. true : rising, false : falling.
Definition: Time.h:119
Belle2::TRGTime::operator|
TRGSignal operator|(const TRGTime &) const
oring two TRGTime. A result is TRGSignal.
Definition: Time.cc:77
Belle2::TRGTime::_name
std::string _name
Name.
Definition: Time.h:125
Belle2::TRGTime::dump
void dump(const std::string &message="", const std::string &pre="") const
dumps contents.
Definition: Time.cc:92
Belle2::TRGTime::clock
const TRGClock & clock(void) const
returns clock.
Definition: Time.h:154
Belle2::TRGTime::sortByTime
static bool sortByTime(const TRGTime &a, const TRGTime &b)
returns true if a is older than b.
Definition: Time.cc:112
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGTime::_clock
const TRGClock * _clock
Clock.
Definition: Time.h:122
Belle2::TRGTime::operator&
TRGSignal operator&(const TRGTime &) const
adding two TRGTime. A result is TRGSignal.
Definition: Time.cc:62
Belle2::TRGClock::absoluteTime
double absoluteTime(int clockPosition) const
returns absolute time of clock position
Definition: Clock.cc:133
Belle2::TRGTime::~TRGTime
virtual ~TRGTime()
Destructor.
Definition: Time.cc:57
Belle2::TRGTime::TRGTime
TRGTime(const TRGTime &)
Copy constructor.
Definition: Time.cc:27
Belle2::TRGTime
A class to represent a signal timing in the trigger system.
Definition: Time.h:30
Belle2::TRGClock
A class to represent a digitized signal. Unit is nano second.
Definition: Clock.h:43
Belle2::TRGTime::_time
int _time
Time in clock unit.
Definition: Time.h:116