Jpp  17.2.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | Private Attributes | List of all members
JSUPPORT::JSummaryRouter Class Reference

Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a function of the optical module identifier and PMT address. More...

#include <JSummaryRouter.hh>

Inheritance diagram for JSUPPORT::JSummaryRouter:
JSUPPORT::JSummaryFileRouter

Public Member Functions

 JSummaryRouter ()
 Default constructor. More...
 
 JSummaryRouter (const double rate_Hz)
 Constructor with default rate. More...
 
const JDAQSummaryFramegetSummaryFrame () const
 Get default summary frame. More...
 
double getRate () const
 Get default rate. More...
 
bool hasDefault () const
 Has default. More...
 
void setDefault (const double rate_Hz)
 Set default. More...
 
void unsetDefault ()
 Unset default. More...
 
void update (const JDAQSummaryslice *ps)
 Update router. More...
 
bool is_valid () const
 Check validity of summary data. More...
 
const JDAQSummaryslicegetSummaryslice () const
 Get summary slice. More...
 
const int getAddress (const JDAQModuleIdentifier &module) const
 Get address of module. More...
 
bool hasSummaryFrame (const JDAQModuleIdentifier &module) const
 Has summary frame. More...
 
const JDAQSummaryFramegetSummaryFrame (const JDAQModuleIdentifier &module) const
 Get summary frame. More...
 
double getRate (const JDAQPMTIdentifier &id) const
 Get rate. More...
 

Static Public Attributes

static const int MODULE_IDENTIFIER = 1
 module identifier to allow default More...
 

Private Attributes

JTOOLS::JRouter< int > router
 
const JDAQSummaryslicesummary
 
JDAQSummaryFrame frame
 

Detailed Description

Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a function of the optical module identifier and PMT address.

The member method update() should be used to update the internal router for a given event. The member method getRate(const JDAQPMTIdentifier&) const can subsequently be used to obtain the measured singles rate for a given PMT.

Optionally, a default rate can be set. In that case, a default KM3NETDAQ::JDAQSummaryFrame is setup which is used when no summary data are available or if the rate is below the specified default rate.
Note that the default rate is subject to the limited accuracy of the summary data.

Definition at line 41 of file JSupport/JSummaryRouter.hh.

Constructor & Destructor Documentation

JSUPPORT::JSummaryRouter::JSummaryRouter ( )
inline

Default constructor.

Definition at line 46 of file JSupport/JSummaryRouter.hh.

46  :
47  router (-1),
48  summary(NULL)
49  {}
const JDAQSummaryslice * summary
JSUPPORT::JSummaryRouter::JSummaryRouter ( const double  rate_Hz)
inline

Constructor with default rate.

Parameters
rate_Hzsingles rate [Hz]

Definition at line 57 of file JSupport/JSummaryRouter.hh.

57  :
58  router (-1),
59  summary(NULL)
60  {
61  setDefault(rate_Hz);
62  }
void setDefault(const double rate_Hz)
Set default.
const JDAQSummaryslice * summary

Member Function Documentation

const JDAQSummaryFrame& JSUPPORT::JSummaryRouter::getSummaryFrame ( ) const
inline

Get default summary frame.

Returns
summary frame

Definition at line 70 of file JSupport/JSummaryRouter.hh.

71  {
72  return frame;
73  }
double JSUPPORT::JSummaryRouter::getRate ( ) const
inline

Get default rate.

Returns
rate [Hz]

Definition at line 81 of file JSupport/JSummaryRouter.hh.

82  {
83  return frame.getRate(0);
84  }
double getRate(const int tdc, const double factor=1.0) const
Get count rate.
bool JSUPPORT::JSummaryRouter::hasDefault ( ) const
inline

Has default.

Returns
true if default has been set; else false

Definition at line 92 of file JSupport/JSummaryRouter.hh.

93  {
94  return (frame.getModuleID() == MODULE_IDENTIFIER);
95  }
int getModuleID() const
Get module identifier.
static const int MODULE_IDENTIFIER
module identifier to allow default
void JSUPPORT::JSummaryRouter::setDefault ( const double  rate_Hz)
inline

Set default.

Parameters
rate_Hzrate [Hz]

Definition at line 103 of file JSupport/JSummaryRouter.hh.

104  {
105  using namespace KM3NETDAQ;
106 
107  frame.setModuleIdentifier(MODULE_IDENTIFIER); // allow default
109 
110  for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
111  frame.setRate(i, rate_Hz);
112  }
113  }
static const int MODULE_IDENTIFIER
module identifier to allow default
T & getInstance(const T &object)
Get static instance from temporary object.
Definition: JObject.hh:75
void setModuleIdentifier(const JDAQModuleIdentifier &module)
Set Module identifier.
void setDAQFrameStatus(const JDAQFrameStatus &status)
Set DAQ frame status.
void setRate(const int tdc, const double rate_Hz)
Set count rate.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
void JSUPPORT::JSummaryRouter::unsetDefault ( )
inline

Unset default.

Definition at line 119 of file JSupport/JSummaryRouter.hh.

120  {
121  using namespace KM3NETDAQ;
122 
123  frame.setModuleIdentifier(JDAQModuleIdentifier()); // disallow default
124  frame.setDAQFrameStatus(JDAQFrameStatus()); // invalid status
125 
126  for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
127  frame[i] = JDAQRate();
128  }
129  }
Data storage class for rate measurement of one PMT.
void setModuleIdentifier(const JDAQModuleIdentifier &module)
Set Module identifier.
void setDAQFrameStatus(const JDAQFrameStatus &status)
Set DAQ frame status.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
void JSUPPORT::JSummaryRouter::update ( const JDAQSummaryslice ps)
inline

Update router.

Parameters
pspointer to new summary slice

Definition at line 137 of file JSupport/JSummaryRouter.hh.

138  {
139  // reset internal router
140 
141  if (summary != NULL) {
142  for (JDAQSummaryslice::const_iterator i = summary->begin(); i != summary->end(); ++i) {
143  router.put(i->getModuleID(), router.getDefaultAddress());
144  }
145  }
146 
147  summary = ps;
148 
149  if (summary != NULL) {
150 
151  // set internal router
152 
153  for (JDAQSummaryslice::const_iterator i = summary->begin(); i != summary->end(); ++i) {
154  router.put(i->getModuleID(), distance(summary->begin(), i));
155  }
156  }
157  }
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
const JDAQSummaryslice * summary
bool JSUPPORT::JSummaryRouter::is_valid ( ) const
inline

Check validity of summary data.

Returns
true if summary data available; else false

Definition at line 165 of file JSupport/JSummaryRouter.hh.

166  {
167  return summary != NULL;
168  }
const JDAQSummaryslice * summary
const JDAQSummaryslice* JSUPPORT::JSummaryRouter::getSummaryslice ( ) const
inline

Get summary slice.

pointer to summary slice (may be NULL)

Definition at line 176 of file JSupport/JSummaryRouter.hh.

177  {
178  return summary;
179  }
const JDAQSummaryslice * summary
const int JSUPPORT::JSummaryRouter::getAddress ( const JDAQModuleIdentifier module) const
inline

Get address of module.

Parameters
modulemodule
Returns
address

Definition at line 188 of file JSupport/JSummaryRouter.hh.

189  {
190  return router.get(module.getModuleID());
191  }
int getModuleID() const
Get module identifier.
bool JSUPPORT::JSummaryRouter::hasSummaryFrame ( const JDAQModuleIdentifier module) const
inline

Has summary frame.

Parameters
modulemodule
Returns
true if module present; else false

Definition at line 200 of file JSupport/JSummaryRouter.hh.

201  {
202  return router.has(module.getModuleID()) || this->hasDefault();
203  }
int getModuleID() const
Get module identifier.
bool hasDefault() const
Has default.
const JDAQSummaryFrame& JSUPPORT::JSummaryRouter::getSummaryFrame ( const JDAQModuleIdentifier module) const
inline

Get summary frame.

Parameters
modulemodule
Returns
summary frame

Definition at line 212 of file JSupport/JSummaryRouter.hh.

213  {
214  if (router.has(module.getModuleID()))
215  return (*summary)[getAddress(module)];
216  else if (this->hasDefault())
217  return frame;
218  else
219  THROW(JValueOutOfRange, "Invalid module identifier " << module);
220  }
int getModuleID() const
Get module identifier.
bool hasDefault() const
Has default.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:696
const JDAQSummaryslice * summary
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:162
const int getAddress(const JDAQModuleIdentifier &module) const
Get address of module.
double JSUPPORT::JSummaryRouter::getRate ( const JDAQPMTIdentifier id) const
inline

Get rate.

Parameters
idPMT identifier
Returns
rate [Hz]

Definition at line 229 of file JSupport/JSummaryRouter.hh.

230  {
231  double R = 0.0;
232 
233  if (this->hasSummaryFrame(id.getModuleIdentifier())) {
234  R = this->getSummaryFrame(id.getModuleIdentifier()).getRate(id.getPMTAddress());
235  }
236 
237  if (R < this->getRate()) {
238  R = this->getRate();
239  }
240 
241  return R;
242  }
double getRate(const int tdc, const double factor=1.0) const
Get count rate.
double getRate() const
Get default rate.
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:43
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.

Member Data Documentation

const int JSUPPORT::JSummaryRouter::MODULE_IDENTIFIER = 1
static

module identifier to allow default

Definition at line 244 of file JSupport/JSummaryRouter.hh.

JTOOLS::JRouter<int> JSUPPORT::JSummaryRouter::router
private

Definition at line 247 of file JSupport/JSummaryRouter.hh.

const JDAQSummaryslice* JSUPPORT::JSummaryRouter::summary
private

Definition at line 248 of file JSupport/JSummaryRouter.hh.

JDAQSummaryFrame JSUPPORT::JSummaryRouter::frame
private

Definition at line 249 of file JSupport/JSummaryRouter.hh.


The documentation for this class was generated from the following file: