Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
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.
 
 JSummaryRouter (const double rate_Hz)
 Constructor with default rate.
 
const JDAQSummaryFramegetSummaryFrame () const
 Get default summary frame.
 
double getRate () const
 Get default rate.
 
bool hasDefault () const
 Has default.
 
void setDefault (const double rate_Hz)
 Set default.
 
void unsetDefault ()
 Unset default.
 
void update (const JDAQSummaryslice *ps)
 Update router.
 
bool is_valid () const
 Check validity of summary data.
 
const JDAQSummaryslicegetSummaryslice () const
 Get summary slice.
 
const int getAddress (const JDAQModuleIdentifier &module) const
 Get address of module.
 
bool hasSummaryFrame (const JDAQModuleIdentifier &module) const
 Has summary frame.
 
const JDAQSummaryFramegetSummaryFrame (const JDAQModuleIdentifier &module) const
 Get summary frame.
 
double getRate (const JDAQPMTIdentifier &id) const
 Get rate.
 

Static Public Attributes

static const int MODULE_IDENTIFIER = 1
 module identifier to allow default
 

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 {
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
113
114 for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
116 }
117 }
static const JDAQFrameStatus & getInstance()
Get reference to unique instance of this class object.
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.
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.
Exception for accessing a value in a collection that is outside of its range.
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.
double getRate() const
Get default rate.
const JDAQSummaryFrame & getSummaryFrame() const
Get default summary frame.
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: