Belle II Software  release-05-02-19
Clock.h
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : TRGClock.h
5 // Section : TRG
6 // Owner : Yoshihito Iwasaki
7 // Email : yoshihito.iwasaki@kek.jp
8 //-----------------------------------------------------------------------------
9 // Description : A class to represent a clock.
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #ifndef TRGClock_FLAG_
15 #define TRGClock_FLAG_
16 
17 #include <string>
18 #include "trg/trg/SignalVector.h"
19 
20 namespace Belle2 {
25  class TRGClock;
26  class TRGTime;
28 }
29 
30 namespace Belle2_GDL {
31 
32  //...This should be moved to GDL module...
33  extern const Belle2::TRGClock GDLSystemClock;
34 }
35 
36 namespace Belle2 {
42  class TRGClock {
44 
45  public:
46 
48  TRGClock(const std::string& name,
49  double offset,
50  double frequency);
51 
53  TRGClock(const std::string& name,
54  const TRGClock&,
55  unsigned multiplicationFactor,
56  unsigned divisionFactor = 1);
57 
59  virtual ~TRGClock();
60 
61  public:// Selectors
62 
64  const std::string& name(void) const;
65 
67  int position(double timing) const;
68 
70  int positionInSourceClock(double timing) const;
71 
73  double absoluteTime(int clockPosition) const;
74 
76  double overShoot(double timing) const;
77 
79  int unit(double period) const;
80 
82  double offset(void) const;
83 
85  double frequency(void) const;
86 
88  double phase(double timing) const;
89 
91  const TRGSignalVector& clockCounter(void) const;
92 
95  void dump(const std::string& message = "",
96  const std::string& pre = "") const;
97 
98  public://
99 
101  int min(void) const;
102 
104  int max(void) const;
105 
107  double minTiming(void) const;
108 
110  double maxTiming(void) const;
111 
113  TRGTime minTRGTime(bool edge) const;
114 
116  TRGTime maxTRGTime(bool edge) const;
117 
118  private:
119 
121  const std::string _name;
122 
125 
127  const unsigned _multi;
128 
130  const unsigned _div;
131 
133  const double _offset;
134 
136  const double _frequency;
137 
139  const double _cycle;
140 
142  int _min;
143 
145  int _max;
146 
149  };
150 
151 //-----------------------------------------------------------------------------
152 
153  inline
154  double
155  TRGClock::offset(void) const
156  {
157  return _offset;
158  }
159 
160  inline
161  const std::string&
162  TRGClock::name(void) const
163  {
164  return _name;
165  }
166 
167  inline
168  double
170  {
171 // return _min * _cycle + _offset;
172  return _min * _cycle;
173  }
174 
175  inline
176  double
178  {
179 // return _max * _cycle + _offset;
180  return _max * _cycle;
181  }
182 
183  inline
184  int
185  TRGClock::unit(double a) const
186  {
187  return int(a / _cycle) + 1;
188  }
189 
190  inline
191  double
193  {
194  return _frequency;
195  }
196 
197  inline
198  int
199  TRGClock::min(void) const
200  {
201  return _min;
202  }
203 
204  inline
205  int
206  TRGClock::max(void) const
207  {
208  return _max;
209  }
210 
211  inline
212  int
214  {
215  return _source->position(a);
216  }
217 
219 } // namespace Belle2
220 
221 #endif /* TRGClock_FLAG_ */
Belle2::TRGClock::frequency
double frequency(void) const
returns frequency in MHz.
Definition: Clock.h:192
Belle2::TRGClock::unit
int unit(double period) const
returns min # of clocks to cover given time period.
Definition: Clock.h:185
Belle2::TRGClock::_source
const TRGClock * _source
Clock source.
Definition: Clock.h:124
Belle2::TRGClock::_min
int _min
Clock min. count.
Definition: Clock.h:142
Belle2::TRGClock::clockCounter
const TRGSignalVector & clockCounter(void) const
returns the clock counter.
Definition: Clock.cc:171
Belle2::TRGClock::min
int min(void) const
returns min. clock point.
Definition: Clock.h:199
Belle2::TRGClock::name
const std::string & name(void) const
returns name.
Definition: Clock.h:162
Belle2::TRGClock::positionInSourceClock
int positionInSourceClock(double timing) const
returns clock position in the source clock.
Definition: Clock.h:213
Belle2::TRGClock::_cycle
const double _cycle
Clock cycle in nano second.
Definition: Clock.h:139
Belle2::TRGClock::dump
void dump(const std::string &message="", const std::string &pre="") const
dumps contents.
Definition: Clock.cc:93
Belle2::TRGClock::minTRGTime
TRGTime minTRGTime(bool edge) const
returns min. TRGtime with clock.
Definition: Clock.cc:145
Belle2::TRGClock::_div
const unsigned _div
Division factor.
Definition: Clock.h:130
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGClock::minTiming
double minTiming(void) const
returns min. timing.
Definition: Clock.h:169
Belle2::TRGClock::overShoot
double overShoot(double timing) const
returns over shoot.
Definition: Clock.cc:139
Belle2::TRGClock::_frequency
const double _frequency
Frequency in MHz.
Definition: Clock.h:136
Belle2::TRGClock::maxTRGTime
TRGTime maxTRGTime(bool edge) const
returns max. TRGtime with clock.
Definition: Clock.cc:152
Belle2::TRGClock::_max
int _max
Clock max. count.
Definition: Clock.h:145
Belle2::TRGClock::maxTiming
double maxTiming(void) const
returns max. timing.
Definition: Clock.h:177
Belle2::TRGClock::offset
double offset(void) const
returns offset of the clock zero position in nano second.
Definition: Clock.h:155
Belle2::TRGClock::position
int position(double timing) const
returns clock position.
Definition: Clock.cc:119
Belle2::TRGClock::~TRGClock
virtual ~TRGClock()
Destructor.
Definition: Clock.cc:86
Belle2::TRGClock::TRGClock
TRGClock(const std::string &name, double offset, double frequency)
Constructor. "offset" is in unit of ns. "frequency" is in unit of MHz.
Definition: Clock.cc:36
Belle2::TRGClock::_name
const std::string _name
Name.
Definition: Clock.h:121
Belle2::TRGClock::_clockCounter
TRGSignalVector * _clockCounter
Clock counter.
Definition: Clock.h:148
Belle2::TRGClock::max
int max(void) const
returns max. clock point.
Definition: Clock.h:206
Belle2::TRGClock::absoluteTime
double absoluteTime(int clockPosition) const
returns absolute time of clock position
Definition: Clock.cc:133
Belle2::TRGClock::_multi
const unsigned _multi
Multiplication factor.
Definition: Clock.h:127
Belle2::TRGClock::phase
double phase(double timing) const
returns phase of given timing in degree (0 to 360).
Definition: Clock.cc:159
Belle2::TRGClock::_offset
const double _offset
Clock offset in nano second.
Definition: Clock.h:133
Belle2::TRGClock
A class to represent a digitized signal. Unit is nano second.
Definition: Clock.h:43
Belle2::TRGSignalVector
A class to represent a bundle of digitized signals.
Definition: SignalVector.h:31