46 {
50
60
63
68
69 int TMax_ns = 10;
76
79
80 try {
81
84
86
95
108
110 properties_description.append(
"\tM_RATE: multiplicity threshold to compare the SN hit rates to the triggered event rates\n");
111
116
118
132
134
135 }
136
137 catch(const exception &error) {
139 }
140
142 FATAL(
"Length of the trigger window must be smaller than the queue.");
143 }
144
145
147
149
150
151
152
153
156
157 try {
159 }
162 }
163
164 try {
166 }
169 }
170
172
174
176
178
180
181
182
183
184
186
188
190
191
192
196
204
206
209
211
212
217 }
218
219
220
221
222
223 try {
224
225
226
230
234
239
240 }
243
244
245
247
250 }
251 else {
FATAL(
"Need either a root file or a ligier as input!" <<
endl); }
252
256 }
257
259
263
267 }
268
272 }
273
274
275
276 int RUN = 0;
279
280
288
290
291 if (in->hasNext()) {
292
294
295 DEBUG(timeslice->getDAQHeader() <<
endl);
297
299
300
301
302
303
304 const int r = timeslice->getRunNumber();
305
306 if (r != RUN) {
307
308 if (RUN != 0) {
309
311
313
315
317
319
320 pmts.clear();
321
323
325
327
328 }
329
330 RUN = r;
331
332 }
333
334
335
336
337
338 while (
sm->hasNext() ) {
339
341
343
345
346 for (JDAQSummaryslice::const_iterator
summary_frame = summary->begin();
349
351
354 }
355
356 doms[frame_index].push_back(DOMID);
357
358
361 }
362
364 }
365
366 }
367
368 while (
ev->hasNext() ) {
369
371
372 DEBUG(
"EVT " << event->getDAQHeader() <<
endl);
373
374 int frame_index = event->getFrameIndex();
375
377
378 }
379
380
381
382
383
385
387
389
391
395
396
397
398
399
401
403
404
409 }
410
411
412
420 } else {
422 }
423 }
424
425
427
429 double tmax = tmin + 0.1;
430
434 }
435
436
439
440
442
443
448 }
449
451
452
454
455
458
463
464 }
465
466
469
470 }
471
472
476 }
477
479
480
486 }
487
488 }
489
491
492
493
494
495
497
499
501
503
505
507
508 }
509 else {
510
512 }
513
515
516 }
517 }
518 else {
520 }
521 }
522
524
525
529
531 }
532 }
535 }
536 }
537 else {
539
540 ++i;
541 }
542
544
545
546
549
553
557
558
559
562
566
570
571
573
575
577 if (
veto.count(frame_index)) {
579 }
580
583
586
587
590
593 if (trg.getPeak().multiplicity >=
M_RATE) {
595 }
598 for (
auto &
snc: trg){
601 }
602 }
603 }
606 for (
auto &
snc: trg){
609 }
610 }
611 }
612 }
613
614
615
617
620
623
626
627
636
643 }
644 }
645 }
646 }
647
650
653
654
655
658
660
661
662
664
665
666
672
674
678
680
681 if (!
rates.empty() &&
683
685
688
690
692
693 }
694
695 } else {
696
698
699 }
700
702
703 }
704
707
708
709
712
713
729
730 string msg =
jd.dump();
731
733
734
735
753
755
757 }
758
761
764 }
765 else {
766
768 break;
769 }
770 }
771 else {
772
773
777 }
778 }
779
780
781
783
785
787
791
796 }
797
798 }
799 }
800 }
801 }
802
805 }
806
808
809}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
static const std::string active_pmts_name
static const std::string cc_name
static const std::string daq_time_name
static const std::string detid_name
static const std::string trignum_name
static const std::string c_name
static const std::string m_name
static const std::string coincnum_name
static const std::string run_number_name
static const std::string observables_name
static const std::string detector_rate_name
static const std::string ev_name
static const std::string trigger_name
static const std::string active_doms_name
static const std::string frame_index_name
static const std::string multiplicities_name
Simple wrapper around JModuleRouter class for direct addressing of PMT data in detector data structur...
Router for direct addressing of module data in detector data structure.
Utility class to parse parameter values.
void setEndOfLine(const std::string &eol)
Set end of line characters.
virtual const char * what() const override
Get error message.
Auxiliary class for time values.
int PutFullString(const JTag &tag, const std::string &buffer)
Send string.
int getSize() const
Get size.
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
Template definition of a multi-dimensional oscillation probability interpolation table.
Auxiliary class to manage a cluster of coincidences.
Auxiliary class to store reduced information of a coincidence on an optical module This class allows ...
Auxiliary class to build the supernova trigger dataset.
SN filter based on veto window.
SN filter based on multiplicity selection optional suppression of multi-module coincidences WARNING: ...
SN trigger statistics, the information is stored in the form of a count as a function of the trigger ...
Auxiliary class to apply the supernova trigger to SN data.
Auxiliary class to manage a set of vetoes.
Auxiliary class to define a veto time window on a set of optical modules.
int getFrameIndex() const
Get frame index.
Data structure for UTC time.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
std::string to_string(const T &value)
Convert value to string.
T getRandom()
Get random value.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
std::vector< event_type > data_type
KM3NeT DAQ data structures and auxiliaries.
double getFrameTime()
Get frame time duration.
void setDAQLongprint(const bool option)
Set DAQ print option.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Normalisation of MUPAGE events.
Data structure for measured coincidence rates of all pairs of PMTs in optical module.
Auxiliary class for all subscription.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary class to select DAQ hits based on time-over-treshold value.
Timeslice data structure for SN data.