 |
Belle II Software
release-05-02-19
|
14 #define TRG_SHORT_NAMES
20 #include "trg/trg/Utilities.h"
21 #include "trg/trg/Clock.h"
22 #include "trg/trg/Signal.h"
23 #include "trg/trg/SignalVector.h"
24 #include "trg/trg/State.h"
34 TRGSignalVector::TRGSignalVector(
const string& name,
40 for (
unsigned i = 0; i < size; i++) {
49 _name(
"CopyOf" + t._name)
52 const unsigned n = t.size();
53 for (
unsigned i = 0; i < n; i++)
58 _name(
"VectorOf" + t.name())
70 const string& pre)
const
73 cout << pre <<
_name <<
":" << size() <<
" signal(s)" << endl;
75 const bool det = msg.find(
"detail") != string::npos;
76 const bool clk = msg.find(
"clock") != string::npos;
82 for (
unsigned i = 0; i < size(); i++)
83 (*
this)[i].dump(msg,
" " + pre +
"bit" +
84 TRGUtil::itostring(i) +
":");
86 for (
unsigned i = 0; i < size(); i++)
87 if ((*
this)[i].active())
88 (*
this)[i].dump(msg,
" " + pre +
"bit" +
89 TRGUtil::itostring(i) +
":");
110 for (
unsigned i = 0; i < left.size(); i++)
118 for (
unsigned i = 0; i < size(); i++)
119 if ((*
this)[i].active())
137 std::vector<int> list;
138 const unsigned n = size();
139 for (
unsigned i = 0; i < n; i++) {
140 vector<int> a = (* this)[i].stateChanges();
141 for (
unsigned j = 0; j < a.size(); j++)
142 list.push_back(a[j]);
146 std::sort(list.begin(), list.end());
149 std::vector<int> list2;
150 int last = numeric_limits<int>::min();
151 for (
unsigned i = 0; i < list.size(); i++) {
152 const int j = list[i];
165 std::vector<bool> list;
166 const unsigned n = size();
167 for (
unsigned i = 0; i < n; i++)
168 list.push_back((*
this)[i].state(clockPosition));
177 for (
unsigned i = 0; i < size(); i++) {
188 const unsigned n = s.size();
189 for (
unsigned i = 0; i < n; i++) {
191 signal.set(cp, cp + 1, s[i]);
199 if (size() != a.size()) {
204 for (
unsigned i = 0; i < size(); i++) {
205 if ((*
this)[i] != a[i]) {
virtual ~TRGSignalVector()
Destructor.
A class to represent a digitized signal. Unit is nano second.
std::vector< int > stateChanges(void) const
returns a list of clock position of state change.
A class to represent a state of multi bits.
const std::string & name(void) const
returns name.
bool active(void) const
returns true if there is a signal.
void dump(const std::string &message="", const std::string &pre="") const
dumps contents.
const TRGClock & clock(void) const
returns clock.
Abstract base class for different kinds of events.
TRGSignalVector & operator+=(const TRGSignal &)
appends TRGSignal.
bool operator==(const TRGSignalVector &) const
compare two TRGSignalVectors.
static std::string itostring(int i)
converts int to string. (Use boost::lexical_cast)
TRGSignalVector(const std::string &name, const TRGClock &, unsigned size=0)
Default constructor.
const TRGClock * _clock
Clock.
TRGState state(int clockPosition) const
returns state at given clock position.
A class to represent a digitized signal. Unit is nano second.
A class to represent a bundle of digitized signals.
const TRGSignalVector & set(const TRGState &, int clockPosition)
sets state at given clock.