Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
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.
 
 JSummaryFileRouter (const std::string &file_name, const double rate_Hz)
 Constructor.
 
void update (const JDAQHeader &header)
 Update router.
 
const JDAQSummaryFramegetSummaryFrame () const
 Get default summary frame.
 
const JDAQSummaryFramegetSummaryFrame (const JDAQModuleIdentifier &module) const
 Get summary frame.
 
double getRate () const
 Get default rate.
 
double getRate (const JDAQPMTIdentifier &id) const
 Get 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.
 

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

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.

47 :
50 {}
JSummaryRouter()
Default constructor.
Template definition for direct access of elements in ROOT TChain.

◆ 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.
Exception for accessing a value in a collection that is outside of its range.
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.
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.

◆ 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 {
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
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 ( )
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: