Jpp
Public Member Functions | Public Attributes | List of all members
JDETECTOR::JModuleAddressMap Class Reference

Lookup table for PMT addresses in optical module. More...

#include <JModuleAddressMap.hh>

Inheritance diagram for JDETECTOR::JModuleAddressMap:
std::vector< JPMTAddressTranslator >

Public Member Functions

 JModuleAddressMap ()
 Default constructor. More...
 
bool has (const int index) const
 Test whether index is available. More...
 
bool hasTDC (const int tdc) const
 Test whether TDC is available. More...
 
bool hasPMT (const JPMTPhysicalAddress &address) const
 Test whether PMT is available. More...
 
void configure ()
 Configure internal router. More...
 
void swap (const int i1, const int i2)
 Swap readout addresses corresponding to indices. More...
 
void swapTDC (const int tdc1, const int tdc2)
 Swap physical addresses corresponding to TDCs. More...
 
int getIndex (const int tdc) const
 Get PMT logical index for given TDC channel. More...
 
const JPMTAddressTranslatorgetAddressTranslator (const int tdc) const
 Get PMT address translator. More...
 
const JPMTAddressTranslatorgetAddressTranslator (const JPMTPhysicalAddress &address) const
 Get PMT address translator. More...
 

Public Attributes

std::vector< int > router
 

Detailed Description

Lookup table for PMT addresses in optical module.

Definition at line 82 of file JModuleAddressMap.hh.

Constructor & Destructor Documentation

◆ JModuleAddressMap()

JDETECTOR::JModuleAddressMap::JModuleAddressMap ( )
inline

Default constructor.

The list of valid PMT address translations should be build according to the detector type. The internal router is used to convert a readout channel (TDC) to a PMT readout address.

Definition at line 92 of file JModuleAddressMap.hh.

92  :
94  {}

Member Function Documentation

◆ has()

bool JDETECTOR::JModuleAddressMap::has ( const int  index) const
inline

Test whether index is available.

Parameters
indexindex
Returns
true if index is available; else false

Definition at line 103 of file JModuleAddressMap.hh.

104  {
105  return (index >= 0 && index < (int) this->size());
106  }

◆ hasTDC()

bool JDETECTOR::JModuleAddressMap::hasTDC ( const int  tdc) const
inline

Test whether TDC is available.

Parameters
tdcTDC
Returns
true if TDC is available; else false

Definition at line 115 of file JModuleAddressMap.hh.

116  {
117  return (tdc >= 0 && tdc < (int) router.size() && router[tdc] != -1);
118  }

◆ hasPMT()

bool JDETECTOR::JModuleAddressMap::hasPMT ( const JPMTPhysicalAddress address) const
inline

Test whether PMT is available.

Parameters
addressPMT address
Returns
true if PMT is available; else false

Definition at line 127 of file JModuleAddressMap.hh.

128  {
129  using namespace std;
130 
131  const_iterator p = lower_bound(this->begin(), this->end(), address, less<JPMTPhysicalAddress>());
132 
133  return (p != this->end() && *p == address);
134  }

◆ configure()

void JDETECTOR::JModuleAddressMap::configure ( )
inline

Configure internal router.

Definition at line 140 of file JModuleAddressMap.hh.

141  {
142  using namespace std;
143 
144  sort(this->begin(), this->end(), less<JPMTPhysicalAddress>());
145 
146  for (const_iterator i = this->begin(); i != this->end(); ++i) {
147 
148  if (i->tdc >= (int) router.size()) {
149  router.resize(i->tdc + 1, -1);
150  }
151 
152  router[i->tdc] = std::distance(const_iterator(this->begin()),i);
153  }
154  }

◆ swap()

void JDETECTOR::JModuleAddressMap::swap ( const int  i1,
const int  i2 
)
inline

Swap readout addresses corresponding to indices.

Parameters
i1first index
i2second index

Definition at line 163 of file JModuleAddressMap.hh.

164  {
165  std::swap(router[at(i1).tdc],
166  router[at(i2).tdc]);
167 
168  std::swap(static_cast<JPMTReadoutAddress&>(at(i1)),
169  static_cast<JPMTReadoutAddress&>(at(i2)));
170  }

◆ swapTDC()

void JDETECTOR::JModuleAddressMap::swapTDC ( const int  tdc1,
const int  tdc2 
)
inline

Swap physical addresses corresponding to TDCs.

Parameters
tdc1first TDC
tdc2second TDC

Definition at line 179 of file JModuleAddressMap.hh.

180  {
181  std::swap(static_cast<JPMTReadoutAddress&>(at(router[tdc1])),
182  static_cast<JPMTReadoutAddress&>(at(router[tdc2])));
183 
184  std::swap(router[tdc1],
185  router[tdc2]);
186 
187  }

◆ getIndex()

int JDETECTOR::JModuleAddressMap::getIndex ( const int  tdc) const
inline

Get PMT logical index for given TDC channel.

Parameters
tdcTDC
Returns
PMT logical index

Definition at line 196 of file JModuleAddressMap.hh.

197  {
198  return router.at(tdc);
199  }

◆ getAddressTranslator() [1/2]

const JPMTAddressTranslator& JDETECTOR::JModuleAddressMap::getAddressTranslator ( const int  tdc) const
inline

Get PMT address translator.

Parameters
tdcTDC
Returns
PMT address translator

Definition at line 208 of file JModuleAddressMap.hh.

209  {
210  return at(getIndex(tdc));
211  }

◆ getAddressTranslator() [2/2]

const JPMTAddressTranslator& JDETECTOR::JModuleAddressMap::getAddressTranslator ( const JPMTPhysicalAddress address) const
inline

Get PMT address translator.

Parameters
addressPMT address
Returns
PMT address translator

Definition at line 220 of file JModuleAddressMap.hh.

221  {
222  using namespace std;
223 
224  const_iterator p = lower_bound(this->begin(), this->end(), address, less<JPMTPhysicalAddress>());
225 
226  if (p != this->end() && *p == address)
227  return *p;
228  else
229  THROW(JIndexOutOfRange, "Invalid PMT address " << address);
230  }

Member Data Documentation

◆ router

std::vector<int> JDETECTOR::JModuleAddressMap::router

Definition at line 234 of file JModuleAddressMap.hh.


The documentation for this class was generated from the following file:
std::vector< JPMTAddressTranslator >
distance
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Definition: PhysicsEvent.hh:434
THROW
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
JDETECTOR::JModuleAddressMap::router
std::vector< int > router
Definition: JModuleAddressMap.hh:234
std
Definition: jaanetDictionary.h:36
JDETECTOR::JModuleAddressMap::getIndex
int getIndex(const int tdc) const
Get PMT logical index for given TDC channel.
Definition: JModuleAddressMap.hh:196