Jpp 19.3.0-rc.3
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.
 
void update (const JDAQHeader &header)
 Update router.
 
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.
 
const JDAQSummaryFramegetSummaryFrame (const JDAQModuleIdentifier &module, const double rate_Hz) const
 Get summary frame.
 
double getRate (const JDAQPMTIdentifier &id, const double rate_Hz) const
 Get rate.
 

Private Attributes

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

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

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.

Member Function Documentation

◆ update() [1/2]

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

Update router.

Parameters
headerheader

Definition at line 58 of file JSummaryFileRouter.hh.

59 {
60 static Long64_t previous = -1;
61
62 const Long64_t index = this->find(header);
63
64 if (index != -1) {
65
66 if (index != previous) {
67
68 previous = index;
69
70 JSummaryRouter::update(this->getEntry(index));
71 }
72 }
73 }
void update(const JDAQSummaryslice *ps)
Update router.

◆ update() [2/2]

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

Update router.

Parameters
pspointer to new summary slice

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

53 {
54 // reset internal router
55
56 if (summary != NULL) {
57 for (JDAQSummaryslice::const_iterator i = summary->begin(); i != summary->end(); ++i) {
58 router.put(i->getModuleID(), router.getDefaultAddress());
59 }
60 }
61
62 summary = ps;
63
64 if (summary != NULL) {
65
66 // set internal router
67
68 for (JDAQSummaryslice::const_iterator i = summary->begin(); i != summary->end(); ++i) {
69 router.put(i->getModuleID(), distance(summary->begin(), i));
70 }
71 }
72 }
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

◆ 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 80 of file JSupport/JSummaryRouter.hh.

81 {
82 return summary != NULL;
83 }

◆ getSummaryslice()

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

Get summary slice.

Returns
pointer to summary slice (may be NULL)

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

92 {
93 return summary;
94 }

◆ getAddress()

const int JSUPPORT::JSummaryRouter::getAddress ( const JDAQModuleIdentifier & module) const
inlineinherited

Get address of module.

Parameters
modulemodule
Returns
address

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

104 {
105 return router.get(module.getModuleID());
106 }
int getModuleID() const
Get module identifier.

◆ 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 115 of file JSupport/JSummaryRouter.hh.

116 {
117 return router.has(module.getModuleID());
118 }

◆ getSummaryFrame() [1/2]

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

Get summary frame.

Parameters
modulemodule
Returns
summary frame

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

128 {
129 if (router.has(module.getModuleID()))
130 return (*summary)[getAddress(module)];
131 else
132 THROW(JValueOutOfRange, "Module identifier " << module);
133 }
#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.

◆ getSummaryFrame() [2/2]

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

Get summary frame.

Parameters
modulemodule
rate_Hzdefault rate [Hz]
Returns
summary frame

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

144 {
145 if (router.has(module.getModuleID())) {
146
147 return (*summary)[getAddress(module)];
148
149 } else {
150
153
154 for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
155 frame.setRate(i, rate_Hz);
156 }
157
158 return frame;
159 }
160 }
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.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition JDAQ.hh:26

◆ getRate()

double JSUPPORT::JSummaryRouter::getRate ( const JDAQPMTIdentifier & id,
const double rate_Hz ) const
inlineinherited

Get rate.

Parameters
idPMT identifier
rate_Hzdefault rate [Hz]
Returns
rate [Hz]

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

171 {
172 double R = 0.0;
173
174 if (this->hasSummaryFrame(id.getModuleIdentifier())) {
175 R = this->getSummaryFrame(id.getModuleIdentifier()).getRate(id.getPMTAddress());
176 }
177
178 if (R < rate_Hz) {
179 R = rate_Hz;
180 }
181
182 return R;
183 }
bool hasSummaryFrame(const JDAQModuleIdentifier &module) const
Has summary frame.
const JDAQSummaryFrame & getSummaryFrame(const JDAQModuleIdentifier &module) const
Get summary frame.
double getRate(const int tdc, const double factor=1.0) const
Get count rate.

Member Data Documentation

◆ router

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

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

◆ summary

const JDAQSummaryslice* JSUPPORT::JSummaryRouter::summary
privateinherited

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

◆ frame

JDAQSummaryFrame JSUPPORT::JSummaryRouter::frame
mutableprivateinherited

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


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