12#include "trg/trg/Clock.h"
13#include "trg/trg/Time.h"
14#include "trg/trg/Signal.h"
15#include "trg/trg/Utilities.h"
39 _frequency(frequency),
40 _cycle(1000 / frequency),
45 _min(numeric_limits<int>::min() / 16),
46 _max(numeric_limits<int>::max() / 16),
50 if (
this != & Belle2_GDL::GDLSystemClock) {
62 unsigned multiplicationFactor,
63 unsigned divisionFactor)
66 _multi(multiplicationFactor),
68 _offset(source._offset),
69 _frequency(source._frequency *
70 double(multiplicationFactor) /
71 double(divisionFactor)),
72 _cycle(source._cycle /
73 double(multiplicationFactor) *
74 double(divisionFactor)),
75 _min(source._min * int(multiplicationFactor) / int(divisionFactor)),
76 _max(source._max * int(multiplicationFactor) / int(divisionFactor)),
89 const string& pre)
const
94 cout << pre <<
" multiplication factor=" <<
_multi << endl;
95 cout << pre <<
" division factor =" <<
_div << endl;
100 cout << pre <<
" offset :" <<
_offset << endl
102 << pre <<
" cycle(ns):" <<
_cycle << endl
103 << pre <<
" min pos :" <<
_min << endl
104 << pre <<
" max pos :" <<
_max << endl
105 << pre <<
" min(ns) :" <<
minTiming() << endl
106 << pre <<
" max(ns) :" <<
maxTiming() << endl;
108 cout << pre <<
" numeric limit of int (min,max="
109 << numeric_limits<int>::min() <<
","
110 << numeric_limits<int>::max() <<
")" << endl;
118 cout <<
"TRGClock::unit(" <<
_name
119 <<
") !!! out of time window : min=" <<
minTiming()
120 <<
",max=" <<
maxTiming() <<
",given value=" << t << endl;
158 const double pos0 = double(
int(pos));
159 const double dif = pos - pos0;
176 for (
int i = 0; i < 5; i++) {
181 const int maxN = 400;
182 for (
int j = 0; j < maxN; j++) {
183 if (((j - cicle / 2) % cicle) == 0)
184 s.set(j, j + cicle / 2);
189 (* _clockCounter) += s;
A class to represent a digitized signal. Unit is nano second.
const double _offset
Clock offset in nano second.
const unsigned _div
Division factor.
const std::string _name
Name.
const double _cycle
Clock cycle in nano second.
int _max
Clock max. count.
const double _frequency
Frequency in MHz.
int _min
Clock min. count.
const unsigned _multi
Multiplication factor.
const TRGClock * _source
Clock source.
TRGSignalVector * _clockCounter
Clock counter.
A class to represent a bundle of digitized signals.
A class to represent a digitized signal. Unit is nano second.
A class to represent a signal timing in the trigger system.
double absoluteTime(int clockPosition) const
returns absolute time of clock position
double phase(double timing) const
returns phase of given timing in degree (0 to 360).
const std::string & name(void) const
returns name.
static std::string itostring(int i)
converts int to string. (Use boost::lexical_cast)
double maxTiming(void) const
returns max. timing.
double overShoot(double timing) const
returns over shoot.
TRGClock(const std::string &name, double offset, double frequency)
Constructor. "offset" is in unit of ns. "frequency" is in unit of MHz.
const TRGSignalVector & clockCounter(void) const
returns the clock counter.
int position(double timing) const
returns clock position.
TRGTime minTRGTime(bool edge) const
returns min. TRGtime with clock.
virtual ~TRGClock()
Destructor.
TRGTime maxTRGTime(bool edge) const
returns max. TRGtime with clock.
double minTiming(void) const
returns min. timing.
void dump(const std::string &message="", const std::string &pre="") const
dumps contents.
Abstract base class for different kinds of events.