Jpp  17.0.0
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/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 87 of file JMergeFit.cc.

88 {
89  using namespace std;
90  using namespace JPP;
91  using namespace KM3NETDAQ;
92 
93  typedef JParallelFileScanner< JTypeList<JDAQEvent, JEvt> > JParallelFileScanner_t;
94  typedef JParallelFileScanner_t::multi_pointer_type multi_pointer_type;
96 
97  vector<std::string> inputFile;
99  int debug;
100 
101  try {
102 
103  JParser<> zap("Program to merge different files with JFIT::JEvt data " \
104  "(e.g. from JMuonXXX[.sh] and JShowerXXX[.sh] applied to the same input data)." \
105  "\nThe input files should be event-by-event synchronised.");
106 
107  zap['f'] = make_field(inputFile, "list of JEvt compatible files");
108  zap['o'] = make_field(outputFile, "single file with merged JEvt data");
109  zap['d'] = make_field(debug) = 1;
110 
111  zap(argc, argv);
112  }
113  catch(const exception& error) {
114  FATAL(error.what() << endl);
115  }
116 
117  cout.tie(&cerr);
118 
119  if (inputFile.empty()) {
120  FATAL("No input files." << endl);
121  }
122 
123  outputFile.open();
124 
125  outputFile.put(JMeta(argc, argv));
126 
127 
128  JParallelFileScanner_t in(inputFile[0]);
129 
130  vector<JTreeRouter_t> buffer(1); // skip one entry
131 
132  for (size_t i = 1; i != inputFile.size(); ++i) {
133  buffer.push_back(JTreeRouter_t(inputFile[i]));
134  }
135 
136  while (in.hasNext()) {
137 
138  STATUS("event: " << setw(10) << in.getCounter() << '\r'); DEBUG(endl);
139 
140  multi_pointer_type ps = in.next();
141 
142  const JDAQEvent* tev = ps;
143  const JEvt* evt = ps;
144 
145  JEvt out(*evt);
146 
147  for (size_t i = 1; i != inputFile.size(); ++i) {
148 
149  const JEvt* p = buffer[i].get(*tev);
150 
151  if (p != NULL) {
152 
153  copy(p->begin(), p->end(), back_inserter(out));
154 
155  } else {
156 
157  FATAL("Inconsistent data at " << in.getFilename() << ":" << in.getCounter() << endl);
158  }
159  }
160 
161  outputFile.put(out);
162  }
163  STATUS(endl);
164 
166 
167  io >> outputFile;
168 
169  outputFile.close();
170 }
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:1500
#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:1961
int debug
debug level
Definition: JSirene.cc:66
#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:139
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:46
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62