Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JDAQEvaluator.hh
Go to the documentation of this file.
1 #ifndef __JDAQEVALUATOR__
2 #define __JDAQEVALUATOR__
3 
7 
8 
9 /**
10  * \author mdejong
11  */
12 
13 namespace KM3NETDAQ {
14 
15  /**
16  * Auxiliary class to determine time of DAQ objects.
17  *
18  * The time is relative to the fixed time defined in JDAQUTCExtended.\n
19  * For DAQ events, the time is offset by the product of the event counter and a constant weight.\n
20  * To correlate DAQ events with summary data, the weight should be set to a value such that
21  * this product is strictly less than half of the frame duration.
22  */
23  struct JDAQEvaluator {
24  /**
25  * Type definition of time value.
26  */
27  struct value_type {
28 
31 
32  /**
33  * Less-than operator.
34  *
35  * \param first first value
36  * \param second second value
37  * \return true if first value less than second value; else false
38  */
39  friend inline bool operator<(const value_type& first, const value_type& second)
40  {
41  if (first.utc == second.utc)
42  return first.counter < second.counter;
43  else
44  return first.utc < second.utc;
45  }
46 
47  /**
48  * Subtraction operator.
49  *
50  * \param first first value
51  * \param second second value
52  * \return difference
53  */
54  friend inline double operator-(const value_type& first, const value_type& second)
55  {
56  if (first.utc == second.utc)
57  return (double) first.counter - (double) second.counter;
58  else
59  return getTimeDifference(second.utc, first.utc);
60  }
61  };
62 
63 
64  /**
65  * Default constructor.
66  */
68  {}
69 
70 
71  /**
72  * Get time of object.
73  *
74  * \param object UTC time
75  * \return time
76  */
77  inline value_type operator()(const JDAQUTCExtended& object) const
78  {
79  return { object, 0 };
80  }
81 
82 
83  /**
84  * Get time of object.
85  *
86  * \param object DAQ header
87  * \return time
88  */
89  inline value_type operator()(const JDAQHeader& object) const
90  {
91  return(*this)(object.getTimesliceStart());
92  }
93 
94 
95  /**
96  * Get time of event.
97  *
98  * \param object event header
99  * \return time
100  */
101  inline value_type operator()(const JDAQEventHeader& object) const
102  {
103  return { object.getTimesliceStart(), object.getCounter() };
104  }
105  };
106 
107 
108  /**
109  * Function object for evaluation of DAQ objects.
110  */
112 }
113 
114 #endif
static const JDAQEvaluator getDAQValue
Function object for evaluation of DAQ objects.
value_type operator()(const JDAQHeader &object) const
Get time of object.
JDAQEvaluator()
Default constructor.
Data structure for UTC time.
unsigned long long int JTriggerCounter_t
Type definition of trigger counter.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
value_type operator()(const JDAQEventHeader &object) const
Get time of event.
value_type operator()(const JDAQUTCExtended &object) const
Get time of object.
friend double operator-(const value_type &first, const value_type &second)
Subtraction operator.
double getTimeDifference(const JDAQChronometer &first, const JDAQChronometer &second)
Get time difference between two chronometers.
friend bool operator<(const value_type &first, const value_type &second)
Less-than operator.
Type definition of time value.
Auxiliary class to determine time of DAQ objects.