Jpp  18.3.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JMergeFit.cc File Reference

Program to merge different files with JFIT::JEvt data. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
#include "km3net-dataformat/offline/Head.hh"
#include "km3net-dataformat/offline/MultiHead.hh"
#include "km3net-dataformat/offline/Evt.hh"
#include "JDAQ/JDAQEventIO.hh"
#include "JDAQ/JDAQTimesliceIO.hh"
#include "JDAQ/JDAQSummarysliceIO.hh"
#include "JDAQ/JDAQEvaluator.hh"
#include "JTrigger/JTriggerParameters.hh"
#include "JSupport/JParallelFileScanner.hh"
#include "JSupport/JTreeScanner.hh"
#include "JSupport/JFileRecorder.hh"
#include "JSupport/JSupport.hh"
#include "JSupport/JMeta.hh"
#include "JReconstruction/JEvt.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

Program to merge different files with JFIT::JEvt data.

Author
mdejong

Definition in file JMergeFit.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 89 of file JMergeFit.cc.

90 {
91  using namespace std;
92  using namespace JPP;
93  using namespace KM3NETDAQ;
94 
95  typedef JParallelFileScanner< JTypeList<JDAQEvent, JEvt> > JParallelFileScanner_t;
96  typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
97 
99 
100  vector<std::string> inputFile;
102  int debug;
103 
104  try {
105 
106  JParser<> zap("Program to merge different files with JFIT::JEvt data " \
107  "(e.g. from JMuonXXX[.sh] and JShowerXXX[.sh] applied to the same input data)." \
108  "\nThe input files should be event-by-event synchronised.");
109 
110  zap['f'] = make_field(inputFile, "list of JEvt compatible files");
111  zap['o'] = make_field(outputFile, "single file with merged JEvt data");
112  zap['d'] = make_field(debug) = 1;
113 
114  zap(argc, argv);
115  }
116  catch(const exception& error) {
117  FATAL(error.what() << endl);
118  }
119 
120 
121  if (inputFile.empty()) {
122  FATAL("No input files." << endl);
123  }
124 
125  outputFile.open();
126 
127  outputFile.put(JMeta(argc, argv));
128 
129  JParallelFileScanner_t in(inputFile[0]);
130 
131  vector<JTreeRouter_t> buffer(1); // skip one entry
132 
133  for (size_t i = 1; i != inputFile.size(); ++i) {
134  buffer.push_back(JTreeRouter_t(inputFile[i]));
135  }
136 
137  while (in.hasNext()) {
138 
139  STATUS("event: " << setw(10) << in.getCounter() << '\r'); DEBUG(endl);
140 
141  multi_pointer_type ps = in.next();
142 
143  const JDAQEvent* tev = ps;
144  const JEvt* evt = ps;
145 
146  JEvt out(*evt);
147 
148  for (size_t i = 1; i != inputFile.size(); ++i) {
149 
150  const JEvt* p = buffer[i].get(*tev);
151 
152  if (p != NULL) {
153 
154  copy(p->begin(), p->end(), back_inserter(out));
155 
156  } else {
157 
158  FATAL("Inconsistent data at " << in.getFilename() << ":" << in.getCounter() << endl);
159  }
160  }
161 
162  outputFile.put(out);
163  }
164  STATUS(endl);
165 
166  {
168 
169  io >> outputFile;
170  }
171  {
173 
174  io >> outputFile;
175  }
176 
177  outputFile.close();
178 }
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:70
Object writing to file.
Utility class to parse command line options.
Definition: JParser.hh:1514
#define STATUS(A)
Definition: JMessage.hh:63
General purpose class for parallel reading of objects from a single file or multiple files...
string outputFile
Type list.
Definition: JTypeList.hh:22
Acoustic event fit.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
#define FATAL(A)
Definition: JMessage.hh:67
General purpose class for object reading from a list of file names.
void copy(const Head &from, JHead &to)
Copy header from from to to.
Definition: JHead.cc:162
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
int debug
debug level
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62