1 #include <gtest/gtest.h>
3 #include <trg/trg/Clock.h>
9 TEST(TRGClockTest, TimeConversions)
11 double cycleBase = 8.;
13 double cycle = cycleBase / multi;
14 TRGClock baseClock(
"8ns clock", 0., 1000. / cycleBase);
15 TRGClock syncClock(
"2ns clock (sync)", baseClock, multi);
16 TRGClock testClock(
"2ns clock", 0., 1000. / cycle);
17 for (
double time = -2 * cycle; time <= 2 * cycle; time += cycle / 2.) {
18 EXPECT_EQ(1, testClock.position(time + cycle) - testClock.position(time)) <<
"time " << time <<
" cycle " << cycle;
19 EXPECT_EQ(testClock.overShoot(time), time - testClock.absoluteTime(testClock.position(time))) <<
"time " << time;
20 EXPECT_LT(testClock.overShoot(time), cycle) <<
"time " << time;
21 EXPECT_GE(testClock.overShoot(time), 0) <<
"time " << time;
22 EXPECT_EQ(testClock.position(time), syncClock.position(time)) <<
"time " << time;
23 EXPECT_EQ(testClock.overShoot(time), syncClock.overShoot(time)) <<
"time " << time;
25 for (
int clock = -2; clock <= 2; ++clock) {
26 EXPECT_EQ(cycle, testClock.absoluteTime(clock + 1) - testClock.absoluteTime(clock)) <<
"clock " << clock;
27 EXPECT_EQ(clock, testClock.position(testClock.absoluteTime(clock))) <<
"clock " << clock;
28 EXPECT_EQ(testClock.absoluteTime(clock), syncClock.absoluteTime(clock)) <<
"clock " << clock;
32 TEST(TRGClockTest, ClockConversions)
34 const double tdcBinWidth = 1.0;
35 const TRGClock _clock(
"CDCTrigger system clock", 0, 125. / tdcBinWidth);
36 const TRGClock _clockFE(
"CDCFE TDC clock", _clock, 8);
37 const TRGClock _clockTDC(
"CDCTrigger TDC clock (after mergers)",
40 const TRGClock _clockD(
"CDCTrigger data clock", _clock, 1, 4);
42 const double tfe0 = 0.;
43 const double tfe255 = 255;
45 EXPECT_EQ(_clockFE.position(tfe0), _clockD.position(tfe0));
46 EXPECT_EQ(_clockFE.position(tfe255) / 8, _clock.position(tfe255));
47 EXPECT_EQ(_clockD.position(tfe255), _clockFE.position(tfe255) / 32);
49 EXPECT_EQ(_clockFE.positionInSourceClock(tfe0),
50 _clockD.positionInSourceClock(tfe0));