Jpp 20.0.0-195-g190c9e876
the software that should make you happy
Loading...
Searching...
No Matches
JSummary.cc File Reference

Auxiliary program to blend and write summary data. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "JDAQ/JDAQSummarysliceIO.hh"
#include "JDetector/JDetector.hh"
#include "JDetector/JDetectorToolkit.hh"
#include "JTrigger/JTriggerParameters.hh"
#include "JSupport/JMultipleFileScanner.hh"
#include "JSupport/JFileRecorder.hh"
#include "JSupport/JSupport.hh"
#include "JSupport/JSupportToolkit.hh"
#include "JSupport/JMeta.hh"
#include "JSummaryslice/JSummaryslice.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to blend and write summary data.

This application can be used to convert measured rates of any detector to a consistent set of rates for a simulated complete detector.
The rates as well as the high-rate veto and FIFO (almost) full will then be included in the run-by-run simulations using JTriggerEfficiency.cc.

The option -f <inputFile> corresponds to a list of input files containing summary data (commonly referred to as "measured rates").
These data can originate from any detector.

The option -a <detectorFile> corresponds to the detector to be used in simulations.
This could be a complete detector.

The option -@ <parameters> corresponds to the trigger parameters.
This is needed here because in the run-by-run simulations, the trigger parameters are taken from the input file.

The application JSummaryWriter.cc can be used to write summary data according user defined input rates.

Author
mdejong

Definition in file JSummary.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 46 of file JSummary.cc.

47{
48 using namespace std;
49 using namespace JPP;
50 using namespace KM3NETDAQ;
51
53 JFileRecorder <JTYPELIST<JDAQSummaryslice, JTriggerParameters, JMeta>::typelist> outputFile;
55 string detectorFile;
56 JTriggerParameters parameters;
57 int run_number;
58 int debug;
59
60 try {
61
62 JParser<> zap("Auxiliary program to blend and write summary data.");
63
64 zap['f'] = make_field(inputFile);
65 zap['U'] = make_field(UTC);
66 zap['o'] = make_field(outputFile);
67 zap['a'] = make_field(detectorFile);
68 zap['@'] = make_field(parameters) = JPARSER::initialised();
69 zap['R'] = make_field(run_number) = 1;
70 zap['d'] = make_field(debug) = 0;
71
72 zap(argc, argv);
73 }
74 catch(const exception &error) {
75 FATAL(error.what() << endl);
76 }
77
78
80
81 try {
82 load(detectorFile, detector);
83 }
84 catch(const JException& error) {
85 FATAL(error);
86 }
87
88
89 // check availability of sufficient summary data
90
91 unsigned int number_of_modules = 0;
92
93 while (inputFile.hasNext() && number_of_modules < detector.size()) {
94 number_of_modules += inputFile.next()->size();
95 }
96
97 if (number_of_modules < detector.size()) {
98 FATAL("Input summary data insufficient: " << number_of_modules << " < " << detector.size() << endl);
99 }
100
101 inputFile.rewind();
102
103
104 outputFile.open();
105
106 outputFile.put(JMeta(argc, argv));
107 outputFile.put(parameters);
108
109 int frame_index = 1;
110
111 for (JDAQUTCExtended utc = UTC.getLowerLimit(); utc < UTC.getUpperLimit(); ) {
112
113 NOTICE("event: " << setw(10) << frame_index << '\r'); DEBUG(endl);
114
115 JSummaryslice summary(JDAQChronometer(detector.getID(),
116 run_number,
117 frame_index,
118 utc),
119 inputFile,
120 detector);
121
122 if (summary.size() == detector.size()) {
123
124 outputFile.put(summary);
125
126 utc.addTimeNanoSecond(getFrameTime());
127
128 frame_index += 1;
129
130 } else {
131
132 inputFile.rewind();
133 }
134 }
135 NOTICE(endl);
136
137 outputFile.close();
138}
string outputFile
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:74
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Detector data structure.
Definition JDetector.hh:96
General exception.
Definition JException.hh:24
Utility class to parse command line options.
Definition JParser.hh:1698
General purpose class for object reading from a list of file names.
virtual void rewind() override
Rewind.
virtual bool hasNext() override
Check availability of next element.
virtual const pointer_type & next() override
Get next element.
Range of values.
Definition JRange.hh:42
T getLowerLimit() const
Get lower limit.
Definition JRange.hh:202
T getUpperLimit() const
Get upper limit.
Definition JRange.hh:213
Data structure for UTC time.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
double getFrameTime()
Get frame time duration.
Definition JDAQClock.hh:162
Detector file.
Definition JHead.hh:227
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72
Auxiliary class to create summary data.