Belle II Software  release-05-01-25
Clock.cc
1 #include <gtest/gtest.h>
2 
3 #include <trg/trg/Clock.h>
4 
5 using namespace Belle2;
6 
7 namespace TRGTest {
9  TEST(TRGClockTest, TimeConversions)
10  {
11  double cycleBase = 8.; // cycle of base clock in ns
12  int multi = 4;
13  double cycle = cycleBase / multi;
14  TRGClock baseClock("8ns clock", 0., 1000. / cycleBase); // base clock
15  TRGClock syncClock("2ns clock (sync)", baseClock, multi); // synchronized to base clock
16  TRGClock testClock("2ns clock", 0., 1000. / cycle); // independent test clock, same as syncClock
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;
24  }
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;
29  }
30  }
31 
32  TEST(TRGClockTest, ClockConversions)
33  {
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)",
38  _clock,
39  4);
40  const TRGClock _clockD("CDCTrigger data clock", _clock, 1, 4);
41 
42  const double tfe0 = 0.;
43  const double tfe255 = 255;
44 
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);
48 
49  EXPECT_EQ(_clockFE.positionInSourceClock(tfe0),
50  _clockD.positionInSourceClock(tfe0));
51  }
52 }
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TEST
TEST(TestgetDetectorRegion, TestgetDetectorRegion)
Test Constructors.
Definition: utilityFunctions.cc:18
Belle2::TRGClock
A class to represent a digitized signal. Unit is nano second.
Definition: Clock.h:43