Jpp  19.1.0
the software that should make you happy
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
 
double rate_Hz
 

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

◆ JSummaryRouter() [1/2]

JSUPPORT::JSummaryRouter::JSummaryRouter ( )
inline

Default constructor.

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

46  :
47  router (-1),
48  summary(NULL),
49  rate_Hz(0.0)
50  {}
const JDAQSummaryslice * summary

◆ JSummaryRouter() [2/2]

JSUPPORT::JSummaryRouter::JSummaryRouter ( const double  rate_Hz)
inline

Constructor with default rate.

Parameters
rate_Hzsingles rate [Hz]

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

58  :
59  router (-1),
60  summary(NULL),
62  {
64  }
void setDefault(const double rate_Hz)
Set default.

Member Function Documentation

◆ getSummaryFrame() [1/2]

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

Get default summary frame.

Returns
summary frame

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

73  {
74  return frame;
75  }

◆ getRate() [1/2]

double JSUPPORT::JSummaryRouter::getRate ( ) const
inline

Get default rate.

Returns
rate [Hz]

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

84  {
85  return this->rate_Hz;
86  }

◆ hasDefault()

bool JSUPPORT::JSummaryRouter::hasDefault ( ) const
inline

Has default.

Returns
true if default has been set; else false

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

95  {
96  return (frame.getModuleID() == MODULE_IDENTIFIER);
97  }
static const int MODULE_IDENTIFIER
module identifier to allow default
int getModuleID() const
Get module identifier.

◆ setDefault()

void JSUPPORT::JSummaryRouter::setDefault ( const double  rate_Hz)
inline

Set default.

Parameters
rate_Hzrate [Hz]

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

106  {
107  using namespace KM3NETDAQ;
108 
109  this->rate_Hz = rate_Hz;
110 
111  frame.setModuleIdentifier(MODULE_IDENTIFIER); // allow default
113 
114  for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
115  frame.setRate(i, rate_Hz);
116  }
117  }
void setDAQFrameStatus(const JDAQFrameStatus &status)
Set DAQ frame status.
void setModuleIdentifier(const JDAQModuleIdentifier &module)
Set Module identifier.
void setRate(const int tdc, const double rate_Hz)
Set count rate.
T & getInstance(const T &object)
Get static instance from temporary object.
Definition: JObject.hh:75
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26

◆ unsetDefault()

void JSUPPORT::JSummaryRouter::unsetDefault ( )
inline

Unset default.

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

124  {
125  using namespace KM3NETDAQ;
126 
127  frame.setModuleIdentifier(JDAQModuleIdentifier()); // disallow default
128  frame.setDAQFrameStatus(JDAQFrameStatus()); // invalid status
129 
130  for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
131  frame[i] = JDAQRate();
132  }
133  }
Data storage class for rate measurement of one PMT.

◆ update()

void JSUPPORT::JSummaryRouter::update ( const JDAQSummaryslice ps)
inline

Update router.

Parameters
pspointer to new summary slice

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

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

◆ is_valid()

bool JSUPPORT::JSummaryRouter::is_valid ( ) const
inline

Check validity of summary data.

Returns
true if summary data available; else false

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

170  {
171  return summary != NULL;
172  }

◆ getSummaryslice()

const JDAQSummaryslice* JSUPPORT::JSummaryRouter::getSummaryslice ( ) const
inline

Get summary slice.

                    pointer to summary slice (may be NULL)

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

181  {
182  return summary;
183  }

◆ getAddress()

const int JSUPPORT::JSummaryRouter::getAddress ( const JDAQModuleIdentifier module) const
inline

Get address of module.

Parameters
modulemodule
Returns
address

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

193  {
194  return router.get(module.getModuleID());
195  }

◆ hasSummaryFrame()

bool JSUPPORT::JSummaryRouter::hasSummaryFrame ( const JDAQModuleIdentifier module) const
inline

Has summary frame.

Parameters
modulemodule
Returns
true if module present; else false

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

205  {
206  return router.has(module.getModuleID()) || this->hasDefault();
207  }
bool hasDefault() const
Has default.

◆ getSummaryFrame() [2/2]

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

Get summary frame.

Parameters
modulemodule
Returns
summary frame

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

217  {
218  if (router.has(module.getModuleID()))
219  return (*summary)[getAddress(module)];
220  else if (this->hasDefault())
221  return frame;
222  else
223  THROW(JValueOutOfRange, "Invalid module identifier " << module);
224  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:180
const int getAddress(const JDAQModuleIdentifier &module) const
Get address of module.

◆ getRate() [2/2]

double JSUPPORT::JSummaryRouter::getRate ( const JDAQPMTIdentifier id) const
inline

Get rate.

Parameters
idPMT identifier
Returns
rate [Hz]

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

234  {
235  double R = 0.0;
236 
237  if (this->hasSummaryFrame(id.getModuleIdentifier())) {
238  R = this->getSummaryFrame(id.getModuleIdentifier()).getRate(id.getPMTAddress());
239  }
240 
241  if (R < this->getRate()) {
242  R = this->getRate();
243  }
244 
245  return R;
246  }
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
double getRate() const
Get default rate.
double getRate(const int tdc, const double factor=1.0) const
Get count rate.

Member Data Documentation

◆ MODULE_IDENTIFIER

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

module identifier to allow default

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

◆ router

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

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

◆ summary

const JDAQSummaryslice* JSUPPORT::JSummaryRouter::summary
private

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

◆ frame

JDAQSummaryFrame JSUPPORT::JSummaryRouter::frame
private

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

◆ rate_Hz

double JSUPPORT::JSummaryRouter::rate_Hz
private

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


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