48{
52
54 JLimit_t& numberOfEvents = inputFile.getLimit();
64
65 try {
66
67 JParser<> zap(
"Monitoring of PMT time-over-threshold distributions.");
68
80
82 }
83 catch(const exception &error) {
85 }
86
87
88
89
90
91
92 if (!T_ns.is_valid()) {
93 FATAL(
"Invalid time window [ns] " << T_ns <<
endl);
94 }
95
96 if (selector == JDAQTimeslice ::Class_Name() ||
97 selector == JDAQTimesliceL1::Class_Name()) {
98
100
101 try {
103 }
105 FATAL(
"No trigger parameters from input." <<
endl);
106 }
107
108 if ((selector == JDAQTimeslice ::Class_Name() && parameters.writeL1.prescale > 0) ||
109 (selector == JDAQTimesliceL1::Class_Name())) {
110
111 if (parameters.TMaxLocal_ns < T_ns.getUpperLimit()) {
112 FATAL(
"Option -T <T_ns> = " << T_ns.getUpperLimit() <<
" is larger than in the trigger " << parameters.TMaxLocal_ns <<
endl);
113 }
114 }
115 }
116
117 if (!multiplicity.is_valid()) {
FATAL(
"Invalid multiplicity " << multiplicity <<
endl); }
118 if ( multiplicity.getLowerLimit() < 1) {
FATAL(
"Invalid multiplicity " << multiplicity <<
endl); }
119
120
121
122
123
125
126 try {
128 }
131 }
132
135 }
136
138
139
140
141
142
143 const double zmin = -0.5;
144 const double zmax = 256.5;
145 const int nz = (
int) ((zmax-zmin) / 1.0);
146
148
152
154
156
158
159
161
163
165
166 for (
counter_type counter = 0; in.hasNext() && counter != inputFile.getLimit(); ++counter) {
167
169
171
174
176
178 }
179
180 for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
181
182 if (router.hasModule(frame->getModuleID())) {
183
185 const JModule&
module = router.getModule(frame->getModuleID());
186
187 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame,
module);
188
189 buffer.preprocess(option, match);
190
191 JSuperFrame1D_t&
data = JSuperFrame1D_t::multiplex(buffer);
192
194
195 for (JSuperFrame1D_t::const_iterator p =
data.begin(); p !=
data.end(); ) {
196
197 JSuperFrame1D_t::const_iterator q = p;
198
199
200
203
204 while (++q !=
data.end() && q->getT() - p->getT() < T_ns.getUpperLimit()) {
205
207 const double dt = q->getT() - p->getT();
208
211 }
212
215 }
216 }
217
219
220 for (JSuperFrame1D_t::const_iterator i = p; i != q; ++i) {
221
223 h2->Fill(i->getPMT(), i->getToT());
224 }
225
226 t0[i->getPMT()] = i->getT();
227 }
228 }
229
230 p = q;
231 }
232 }
233 }
234 }
235
237
239
240 out.Close();
241 out.Write();
242}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define MAKE_CSTRING(A)
Make C-string.
Router for direct addressing of module data in detector data structure.
Data structure for a composite optical module.
Template definition of a multi-dimensional oscillation probability interpolation table.
Reduced data structure for L0 hit.
int getDetectorID() const
Get detector identifier.
int getRunNumber() const
Get run number.
static const char *const _2SToT
Histogram naming.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
double getDot(const JFirst_t &first, const JSecond_t &second)
Get dot product of objects.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
KM3NeT DAQ data structures and auxiliaries.
Transmission with position.
Auxiliary class to select ROOT class based on class name.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.
Auxiliary class for specifying the way of pre-processing of hits.
static std::vector< JPreprocessor > getOptions()
Get options.