Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JSummary.cc File Reference

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

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;
54 int numberOfEvents;
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['n'] = make_field(numberOfEvents);
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
108 outputFile.put(parameters);
109
110 for (int frame_index = 1; frame_index <= numberOfEvents; ) {
111
112 NOTICE("event: " << setw(10) << frame_index << '\r'); DEBUG(endl);
113
114 JSummaryslice summary(JDAQChronometer(detector.getID(),
115 run_number,
116 frame_index,
117 getTimeOfFrame(frame_index)),
118 inputFile,
119 detector);
120
121 if (summary.size() == detector.size()) {
122
123 outputFile.put(summary);
124
125 ++frame_index;
126
127 } else {
128
129 inputFile.rewind();
130 }
131 }
132 NOTICE(endl);
133
134 outputFile.close();
135}
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:72
#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.
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
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.