Jpp  master_rocky
the software that should make you happy
Public Member Functions | Static Public Attributes | Private Attributes | List of all members
JSUPPORT::JSummaryFileRouter Class Reference

File router for fast addressing of summary data. More...

#include <JSummaryFileRouter.hh>

Inheritance diagram for JSUPPORT::JSummaryFileRouter:
JSUPPORT::JSummaryRouter JSUPPORT::JTreeScanner< JDAQSummaryslice, JDAQEvaluator >

Public Member Functions

 JSummaryFileRouter (const std::string &file_name)
 Constructor. More...
 
 JSummaryFileRouter (const std::string &file_name, const double rate_Hz)
 Constructor. More...
 
void update (const JDAQHeader &header)
 Update router. More...
 
const JDAQSummaryFramegetSummaryFrame () const
 Get default summary frame. More...
 
const JDAQSummaryFramegetSummaryFrame (const JDAQModuleIdentifier &module) const
 Get summary frame. More...
 
double getRate () const
 Get default rate. More...
 
double getRate (const JDAQPMTIdentifier &id) const
 Get 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...
 

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

File router for fast addressing of summary data.

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 at the closest time of the event.

Definition at line 37 of file JSummaryFileRouter.hh.

Constructor & Destructor Documentation

◆ JSummaryFileRouter() [1/2]

JSUPPORT::JSummaryFileRouter::JSummaryFileRouter ( const std::string &  file_name)
inline

Constructor.

Parameters
file_namefile name

Definition at line 47 of file JSummaryFileRouter.hh.

◆ JSummaryFileRouter() [2/2]

JSUPPORT::JSummaryFileRouter::JSummaryFileRouter ( const std::string &  file_name,
const double  rate_Hz 
)
inline

Constructor.

Parameters
file_namefile name
rate_Hzdefault singles rate [Hz]

Definition at line 59 of file JSummaryFileRouter.hh.

Member Function Documentation

◆ update() [1/2]

void JSUPPORT::JSummaryFileRouter::update ( const JDAQHeader header)
inline

Update router.

Parameters
headerheader

Definition at line 71 of file JSummaryFileRouter.hh.

72  {
73  static Long64_t previous = -1;
74 
75  const Long64_t index = this->find(header);
76 
77  if (index != -1) {
78 
79  if (index != previous) {
80 
81  previous = index;
82 
83  JSummaryRouter::update(this->getEntry(index));
84  }
85  }
86  }
void update(const JDAQSummaryslice *ps)
Update router.

◆ getSummaryFrame() [1/2]

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

Get default summary frame.

Returns
summary frame

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

73  {
74  return frame;
75  }

◆ getSummaryFrame() [2/2]

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

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
bool hasDefault() const
Has default.
const JDAQSummaryslice * summary
const int getAddress(const JDAQModuleIdentifier &module) const
Get address of module.
int getModuleID() const
Get module identifier.

◆ getRate() [1/2]

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

Get default rate.

Returns
rate [Hz]

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

84  {
85  return this->rate_Hz;
86  }

◆ getRate() [2/2]

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

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.

◆ hasDefault()

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

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

◆ setDefault()

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

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 ( )
inlineinherited

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() [2/2]

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

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
inlineinherited

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
inlineinherited

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
inlineinherited

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
inlineinherited

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  }

Member Data Documentation

◆ MODULE_IDENTIFIER

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

module identifier to allow default

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

◆ router

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

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

◆ summary

const JDAQSummaryslice* JSUPPORT::JSummaryRouter::summary
privateinherited

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

◆ frame

JDAQSummaryFrame JSUPPORT::JSummaryRouter::frame
privateinherited

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

◆ rate_Hz

double JSUPPORT::JSummaryRouter::rate_Hz
privateinherited

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


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