Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
externals/km3net-dataformat/src/JDAQTimeslice.cc
Go to the documentation of this file.
1#include <map>
2#include <vector>
3#include <algorithm>
4
8
9
10/**
11 * \author mdejong
12 */
13
14namespace KM3NETDAQ {
15
16 /**
17 * Constructor.
18 *
19 * \param event DAQ event
20 * \param snapshot use shapshot hits (else use triggered hits)
21 */
23 const bool snapshot) :
25 JDAQTimesliceHeader(event.getDAQChronometer()),
27 {
28 using namespace std;
29
31
32 if (snapshot) {
33
34 for (vector<JDAQSnapshotHit>::const_iterator hit = event.begin<JDAQSnapshotHit> (); hit != event.end<JDAQSnapshotHit> (); ++hit) {
35 buffer[hit->getModuleID()].push_back(*hit);
36 }
37
38 } else {
39
40 for (vector<JDAQTriggeredHit>::const_iterator hit = event.begin<JDAQTriggeredHit>(); hit != event.end<JDAQTriggeredHit>(); ++hit) {
41 buffer[hit->getModuleID()].push_back(*hit);
42 }
43 }
44
45
46 for (map<int, vector<JDAQHit> >::iterator entry = buffer.begin(); entry != buffer.end(); ++entry) {
47
48 sort(entry->second.begin(), entry->second.end());
49
50 this->push_back(JDAQSuperFrame(JDAQSuperFrameHeader(getDAQChronometer(), entry->first)));
51
52 this->rbegin()->add(entry->second.size(), entry->second.data());
53 }
54 }
55
56
57 /**
58 * Constructor.
59 *
60 * \param event DAQ event
61 * \param summary summary
62 * \param snapshot use shapshot hits (else use triggered hits)
63 */
65 const JDAQSummaryslice& summary,
66 const bool snapshot) :
68 JDAQTimesliceHeader(event.getDAQChronometer()),
70 {
71 using namespace std;
72 using namespace JPP;
73
75
76 if (snapshot) {
77
78 for (vector<JDAQSnapshotHit>::const_iterator hit = event.begin<JDAQSnapshotHit> (); hit != event.end<JDAQSnapshotHit> (); ++hit) {
79 buffer[hit->getModuleID()].push_back(*hit);
80 }
81
82 } else {
83
84 for (vector<JDAQTriggeredHit>::const_iterator hit = event.begin<JDAQTriggeredHit>(); hit != event.end<JDAQTriggeredHit>(); ++hit) {
85 buffer[hit->getModuleID()].push_back(*hit);
86 }
87 }
88
90
91 for (JDAQSummaryslice::const_iterator i = summary.begin(); i != summary.end(); ++i) {
92 sumo[i->getModuleID()] = i->getDAQFrameStatus();
93 }
94
95 for (map<int, vector<JDAQHit> >::iterator entry = buffer.begin(); entry != buffer.end(); ++entry) {
96
97 sort(entry->second.begin(), entry->second.end());
98
99 JDAQFrameStatus status = JDAQFrameStatus::getInstance();
100
101 map<int, JDAQFrameStatus>::const_iterator ps = sumo.find(entry->first);
102
103 if (ps != sumo.end()) {
104 status = ps->second;
105 }
106
107 this->push_back(JDAQSuperFrame(JDAQSuperFrameHeader(getDAQChronometer(), entry->first, status)));
108
109 this->rbegin()->add(entry->second.size(), entry->second.data());
110 }
111 }
112}
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
const_iterator< T > end() const
Get end of data.
const_iterator< T > begin() const
Get begin of data.
Data frame of one optical module.
JDAQTimeslice()
Default constructor.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
for(int i=n/2;i !=0 &&p !=this->end();--i,++p)
Definition JPolint.hh:793
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
Auxiliary class for a DAQ type holder.