1#ifndef __JDETECTOR__JDETECTOR__
2#define __JDETECTOR__JDETECTOR__
94 public JMultiEquals<JDetector, JTYPELIST<JDetectorID, JVersion>::typelist>,
183 for (iterator module = this->begin();
module != this->end(); ++module) {
184 module->getStatus().set(bit);
196 for (iterator module = this->begin();
module != this->end(); ++module) {
197 module->getStatus().reset(bit);
209 for (iterator module = this->begin();
module != this->end(); ++module) {
210 for (JModule::iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
211 pmt->getStatus().set(bit);
224 for (iterator module = this->begin();
module != this->end(); ++module) {
225 for (JModule::iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
226 pmt->getStatus().reset(bit);
240 for (iterator i = begin(); i != end(); ++i) {
256 for (iterator i = begin(); i != end(); ++i) {
272 return at(address.
first);
284 return at(address.
first);
296 for (JDetector::const_iterator module = this->begin();
module != this->end(); ++module) {
297 if (module->getLocation() == location) {
314 for (JDetector::const_iterator module = this->begin();
module != this->end(); ++module) {
315 if (module->getLocation() == location) {
332 for (JDetector::iterator module = this->begin();
module != this->end(); ++module) {
333 if (module->getLocation() == location) {
386 int number_of_modules;
392 catch(std::exception&) {}
400 in >> number_of_modules;
406 istringstream(buffer) >> number_of_modules;
410 for (
JModule module; number_of_modules != 0 && in >> module; --number_of_modules) {
411 detector.push_back(module);
442 out << static_cast<const JDetectorID&>(
detector);
448 out << static_cast<const JDetectorVersion&>(
detector) << endl;
449 out << static_cast<const JDetectorHeader&> (
detector) << endl;
499 int number_of_modules;
504 in >> number_of_modules;
507 this->resize(number_of_modules);
509 for (JDetector::iterator out = this->begin(); number_of_modules != 0; --number_of_modules, ++out) {
536 for (JComment::const_iterator i = this->
comment.begin(); i != this->comment.end(); ++i) {
546 const int number_of_modules = this->size();
548 out << static_cast<const JDetectorID&> (*
this);
549 out << static_cast<const JDetectorVersion&>(*
this);
550 out << static_cast<const JDetectorHeader&> (*
this);
551 out << number_of_modules;
553 for (const_iterator module = this->begin();
module != this->end(); ++module) {
616 return start_of_comment;
Data structure for detector version.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
void setFormat(const JFormat_t &format)
Set format for given type.
Data structure for optical module.
Data structure for PMT geometry and calibration.
STD extensions for binary I/O.
bool setVersion(const JDetectorVersion::JVersion_t &version, const bool force=false)
Set version.
void resetPMTStatus(const int bit)
Reset status of all PMTs.
static const size_t LENGTH_START_OF_COMMENT
Length of start of comment in binary I/O.
JDetector & operator+=(const JVector3D &pos)
Move detector elements.
static start_of_comment_type & get_start_of_comment()
Get option for short start of comment in binary I/O.
start_of_comment_type
Enumeration for different lengths of start of comment in binary I/O.
virtual JReader & read(JReader &in) override
Read from input.
void resetModuleStatus(const int bit)
Reset status of all modules.
void setPMTStatus(const int bit)
Set status of all PMTs.
static start_of_comment_type getStartOfComment()
Get option for short start of comment in binary I/O.
const JModule & getModule(const JLocation &location) const
Get module parameters.
friend std::istream & operator>>(std::istream &in, JDetector &detector)
Read detector from input.
static void setStartOfComment(const start_of_comment_type option)
Set option for short start of comment in binary I/O.
JDetector & operator-=(const JVector3D &pos)
Move detector elements.
void setVersion(const JVersion &version)
Set version.
void setModuleStatus(const int bit)
Set status of all modules.
JDetector(const JDetectorID &id, const JVersion &version, const JDetectorHeader &header)
Constructor.
JModule & getModule(const JModuleAddress &address)
Get module parameters.
bool hasModule(const JLocation &location) const
Check availability of module parameters.
friend std::ostream & operator<<(std::ostream &out, const JDetector &detector)
Write detector to output.
void setVersion() const
Set version.
JPMT & getPMT(const JPMTAddress &address)
Get PMT parameters.
const JModule & getModule(const JModuleAddress &address) const
Get module parameters.
JModule & getModule(const JLocation &location)
Get module parameters.
const JPMT & getPMT(const JPMTAddress &address) const
Get PMT parameters.
virtual JWriter & write(JWriter &out) const override
Write to output.
JDetector()
Default constructor.
bool setToLatestVersion()
Set to latest version.
Logical location of module.
Address of module in detector data structure.
int first
index of module in detector data structure
Data structure for a composite optical module.
static void setVersion(const JVersion &version)
Set detector version.
Address of PMT in detector data structure.
int second
index of PMT in module data structure.
Data structure for PMT geometry, calibration and status.
Data structure for vector in three dimensions.
Interface for binary input.
Forward declaration of binary output.
Interface for binary output.
Exception for accessing an index in a collection that is outside of its range.
Auxiliary class for object identification.
file Auxiliary data structures and methods for detector calibration.
static const JGetDetectorVersion getDetectorVersion
Function object to map detector version to numerical value.
T getLatestDetectorVersion()
Get latest detector version.
static const JPutDetectorVersion putDetectorVersion(getDetectorVersion)
Function object to map numerical value to detector version.
JLANG::JObjectID JDetectorID
Type definition of detector identifier.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JDetectorVersion()
Default constructor.
JVersion_t
Enumeration of version types.
@ V3
Version with PMT status field and comments.
Auxiliary class for version identifier.
void setVersion(const std::string &version)
Set version.
const std::string & getVersion() const
Get version.
Template definition of auxiliary base class for data structures composed of multiple base classes wit...
Auxiliary class for recursive type list generation.