#include "km3net-dataformat/online/JDAQEvent.hh" /** * \author mdejong */ namespace KM3NETDAQ { /** * Get triggered hits. * * \return triggered hits */ template<> const std::vector& JDAQEvent::getHits() const { return triggeredHits; } /** * Get snapshot hits. * * \return snapshot hits */ template<> const std::vector& JDAQEvent::getHits() const { return snapshotHits; } /** * Get triggered hits. * * \return triggered hits */ template<> std::vector& JDAQEvent::getHits() { return triggeredHits; } /** * Get snapshot hits. * * \return snapshot hits */ template<> std::vector& JDAQEvent::getHits() { return snapshotHits; } /** * Get begin of triggered hits. * * \return begin triggered hits */ template<> JDAQEvent::const_iterator JDAQEvent::begin() const { return triggeredHits.begin(); } /** * Get end of triggered hits. * * \return end triggered hits */ template<> JDAQEvent::const_iterator JDAQEvent::end() const { return triggeredHits.end(); } /** * Get begin of snapshot hits. * * \return begin snapshot hits */ template<> JDAQEvent::const_iterator JDAQEvent::begin() const { return snapshotHits.begin(); } /** * Get end of snapshot hits. * * \return end snapshot hits */ template<> JDAQEvent::const_iterator JDAQEvent::end() const { return snapshotHits.end(); } /** * Get reverse begin of triggered hits. * * \return begin triggered hits */ template<> JDAQEvent::const_reverse_iterator JDAQEvent::rbegin() const { return triggeredHits.rbegin(); } /** * Get reverse end of triggered hits. * * \return end triggered hits */ template<> JDAQEvent::const_reverse_iterator JDAQEvent::rend() const { return triggeredHits.rend(); } /** * Get reverse begin of snapshot hits. * * \return begin snapshot hits */ template<> JDAQEvent::const_reverse_iterator JDAQEvent::rbegin() const { return snapshotHits.rbegin(); } /** * Get reverse end of snapshot hits. * * \return end snapshot hits */ template<> JDAQEvent::const_reverse_iterator JDAQEvent::rend() const { return snapshotHits.rend(); } /** * Get number of triggered hits. * * \return number of triggered hits */ template<> unsigned int JDAQEvent::size() const { return triggeredHits.size(); } /** * Get number of snapshot hits. * * \return number of snapshot hits */ template<> unsigned int JDAQEvent::size() const { return snapshotHits.size(); } /** * Check emptyness of triggered data. * * \return emptyness triggered hits */ template<> bool JDAQEvent::empty() const { return triggeredHits.empty(); } /** * Check emptyness of snapshot data. * * \return emptyness snapshot hits */ template<> bool JDAQEvent::empty() const { return snapshotHits.empty(); } /** * Equal operator for DAQ events. * * \param first event * \param second event * \result true if first event equal to second; else false */ bool operator==(const JDAQEvent& first, const JDAQEvent& second) { return (first.getDAQEventHeader() == second.getDAQEventHeader() && first.getHits() == second.getHits() && first.getHits () == second.getHits ()); } /** * Print DAQ Event. * * \param out output stream * \param lpr long print * \return output stream */ std::ostream& JDAQEvent::print(std::ostream& out, const bool lpr) const { using namespace std; out << this->ClassName() << endl; out << dynamic_cast (*this) << endl; out << dynamic_cast(*this) << endl; out << "Trigger counter " << this->getCounter() << endl; out << "Trigger mask (hex) " << hex << this->getTriggerMask() << dec << endl; out << "Overlays " << this->getOverlays() << endl; out << "Triggered hits " << this->size() << endl; out << "Snapshot hits " << this->size () << endl; { typedef JDAQTriggeredHit JHit_t; for (JDAQEvent::const_iterator hit = this->begin(); hit != this->end(); ++hit) { out << setw(5) << hit->getModuleID() << ' ' << setw(2) << (int) hit->getPMT() << ' ' << setw(10) << (int) hit->getT() << ' ' << setw(3) << (int) hit->getToT() << ' ' << setw(10) << hex << hit->getTriggerMask() << dec << endl; } } if (lpr) { typedef JDAQSnapshotHit JHit_t; for (JDAQEvent::const_iterator hit = this->begin(); hit != this->end(); ++hit) { out << setw(5) << hit->getModuleID() << ' ' << setw(2) << (int) hit->getPMT() << ' ' << setw(10) << (int) hit->getT() << ' ' << setw(3) << (int) hit->getToT() << endl; } } return out; } /** * Get time difference between two events. * * \param first event * \param second event * \result time difference [s] */ inline double getTimeDifference(const JDAQEvent& first, const JDAQEvent& second) { double dt = getTimeDifference(first.getTimesliceStart(), second.getTimesliceStart()); if (!first.empty() && !second.empty()) { dt += (second.begin()->getT() - first .begin()->getT()) * 1.0e-9; } return dt; } }