Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JTimesliceL1.hh
Go to the documentation of this file.
1#ifndef __JTRIGGER__JTIMESLICEL1__
2#define __JTRIGGER__JTIMESLICEL1__
3
4#include <vector>
5#include <algorithm>
6
14
15
16/**
17 * \author mdejong
18 */
19
20namespace JTRIGGER {}
21namespace JPP { using namespace JTRIGGER; }
22
23namespace JTRIGGER {
24
30
31
32 /**
33 * Auxiliary class to build JDAQTimeslice for L1 timeslice.
34 */
35 template<class JDAQTimeslice_t>
37 public JDAQTimeslice_t
38 {
39 public:
40
41
42 /**
43 * Default constructor.
44 */
46 JDAQTimeslice_t()
47 {}
48
49
50 /**
51 * Constructor.
52 *
53 * The raw data referenced in the time slice router are sampled according
54 * the triggered time slice data and the given time window.\n
55 * The status of each frame is taken from the raw data.
56 *
57 * \param timeslice triggered timeslice (e.g.\ L1)
58 * \param timesliceRouter timeslice router
59 * \param moduleRouter module router
60 * \param TMaxLocal_ns time window [ns]
61 */
62 template<class JHit_t>
64 const JTimesliceRouter& timesliceRouter,
65 const JModuleRouter& moduleRouter,
66 const double TMaxLocal_ns) :
67 JDAQTimeslice_t()
68 {
69 using namespace std;
70
71 this->setDAQChronometer(timeslice.getDAQChronometer());
72
73 vector<JDAQHit> buffer;
74
75 for (typename JTimeslice<JHit_t>::const_iterator frame = timeslice.begin(); frame != timeslice.end(); ++frame) {
76
77 const JModule& module = moduleRouter.getModule(frame->getModuleID());
78 const JTimeRange timeOffset = getTimeRange(JTimeRange(0,0), module);
79
80 buffer.clear();
81
82 for (typename JFrame<JHit_t>::const_iterator p = frame->begin(); p != frame->end(); ) {
83
84 double Tmin = frame->getT(*p);
85 double Tmax = Tmin + TMaxLocal_ns;
86
87 while (++p != frame->end() && frame->getT(*p) <= Tmax) {
88 Tmax = frame->getT(*p) + TMaxLocal_ns;
89 }
90
91 const JDAQFrameSubset& subset = timesliceRouter.getFrameSubset(frame->getModuleID(), JTimeRange(Tmin, Tmax).add(timeOffset));
92
93 for (JDAQFrameSubset::const_iterator i = subset.begin(); i != subset.end(); ++i) {
94
95 const JCalibration& calibration = module.getPMT(i->getPMT()).getCalibration();
96 const double t1 = getTime(*i, calibration);
97
98 if (t1 >= Tmin && t1 <= Tmax) {
99 buffer.push_back(*i);
100 }
101 }
102 }
103
104 this->push_back(JDAQSuperFrame(timesliceRouter.getSuperFrame(frame->getModuleID()).getDAQSuperFrameHeader()));
105
106 this->rbegin()->add(buffer.size(), buffer.data());
107 }
108 }
109 };
110}
111
112#endif
Tools for handling different hit types.
Direct access to module in detector data structure.
Data structure for time calibration.
Router for direct addressing of module data in detector data structure.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Definition JModule.hh:75
container_type::const_iterator const_iterator
Definition JFrame.hh:46
Auxiliary class to build JDAQTimeslice for L1 timeslice.
JTimesliceL1(const JTimeslice< JHit_t > &timeslice, const JTimesliceRouter &timesliceRouter, const JModuleRouter &moduleRouter, const double TMaxLocal_ns)
Constructor.
JTimesliceL1()
Default constructor.
Time slice with calibrated data.
Definition JTimeslice.hh:29
std::vector< value_type >::const_iterator const_iterator
Definition JTimeslice.hh:34
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Subset of data frame.
Definition JDAQFrame.hh:24
const_iterator end() const
Definition JDAQFrame.hh:44
const_iterator begin() const
Definition JDAQFrame.hh:43
Hit data structure.
Definition JDAQHit.hh:35
const JDAQSuperFrameHeader & getDAQSuperFrameHeader() const
Get DAQ super frame header.
Data frame of one optical module.
JTOOLS::JRange< double > JTimeRange
Type definition for time range (unit [ns]).
JTimeRange getTimeRange(const JTimeRange &timeRange, const JModule &module)
Get de-calibrated time range.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
const char * getTime()
Get current local time conform ISO-8601 standard.
Auxiliary classes and methods for triggering.
JTimeRange getTimeRange(const JEvent &event)
Get time range (i.e. earlist and latest hit time) of triggered event.
Calibration.
Definition JHead.hh:330
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
JDAQFrameSubset getFrameSubset(const JDAQModuleIdentifier &module, const JTimeRange &timeRange) const
Get subset of frame given module identifier and range of hit times.
const JDAQSuperFrame & getSuperFrame(const JDAQModuleIdentifier &module) const
Get super frame.