Jpp  master_rocky-40-g5f0272dcd
the software that should make you happy
Functions
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/JTriggerParametersSupportkit.hh"
#include "JSupport/JSupport.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 
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:69
#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
Object writing to file.
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
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given frame index.
Definition: JDAQClock.hh:185
Definition: JSTDTypes.hh:14
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.