Jpp  debug
the software that should make you happy
Functions
JEditTripod.cc File Reference

Auxiliary program to modify tripod configuration. More...

#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
#include "TRandom3.h"
#include "JDetector/JTripod.hh"
#include "JSupport/JMeta.hh"
#include "JLang/JComparator.hh"
#include "JLang/JComparison.hh"
#include "Jeep/JContainer.hh"
#include "Jeep/JPrint.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 modify tripod configuration.

Syntax:

    -T "<tripod identifier>     (set|add|sub)    East North depth"
    -T "<tripod identifier>     (setx|addx|subx) East"
    -T "<tripod identifier>     (sety|addy|suby) North"
    -T "<tripod identifier>     (setz|addz|subz) depth"

The options

    -A "<tripod identifier> East North depth"
    -r "<tripod identifier>"
    -k "<tripod identifier>"

can be used to add, remove and keep a specific tripod, respectively.

Author
mdejong

Definition in file JEditTripod.cc.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 232 of file JEditTripod.cc.

233 {
234  using namespace std;
235  using namespace JPP;
236 
237  typedef JContainer< vector<JTripod> > container_type;
238 
239  string inputFile;
240  string outputFile;
241  vector<JModifier> mod;
242  vector<JTripod> add;
243  set<int> rm;
244  set<int> keep;
245  bool squash;
246  int debug;
247 
248  try {
249 
250  JParser<> zap("Auxiliary program to modify tripod configuration.");
251 
252  zap['f'] = make_field(inputFile, "tripod input file");
253  zap['o'] = make_field(outputFile, "tripod output file");
254  zap['T'] = make_field(mod, "tripod modifier") = JPARSER::initialised();
255  zap['A'] = make_field(add, "add tripod") = JPARSER::initialised();
256  zap['r'] = make_field(rm, "remove tripod[s]") = JPARSER::initialised();
257  zap['k'] = make_field(keep, "keep tripod[s]") = JPARSER::initialised();
258  zap['q'] = make_field(squash, "squash meta data");
259  zap['d'] = make_field(debug, "debug level") = 2;
260 
261  zap(argc, argv);
262  }
263  catch(const exception &error) {
264  FATAL(error.what() << endl);
265  }
266 
267  gRandom->SetSeed(0);
268 
269 
270  if (!rm.empty() && !keep.empty()) {
271  FATAL("Use either option -K or -D." << endl);
272  }
273 
274  container_type data;
275 
276  if (inputFile != "") {
277  try {
278  data.load(inputFile.c_str());
279  }
280  catch(const exception& error) {
281  //FATAL(error.what() << endl);
282  }
283  }
284 
285  if (squash) {
286  data.comment.clear();
287  }
288 
289  data.comment.add(JMeta(argc, argv));
290 
291  for (vector<JTripod>::const_iterator i = add.begin(); i != add.end(); ++i) {
292  data.push_back(*i);
293  }
294 
295  for (vector<JModifier>::const_iterator i = mod.begin(); i != mod.end(); ++i) {
296 
297  for (container_type::iterator target = data.begin(); target != data.end(); ++target) {
298 
299  if (target->getID() == i->id || i->id == WILDCARD) {
300 
301  DEBUG("Modifier" << ' '
302  << "(" << FILL(2,'0') << target->getID() << FILL() << ")" << ' '
303  << i->action << ' ' << JEEPZ() << i->data << endl);
304 
305  if (!i->apply(*target)) {
306  ERROR("No valid action: " << *i << endl);
307  }
308  }
309  }
310  }
311 
312  if (!rm.empty()) {
313  for (container_type::iterator target = data.begin(); target != data.end(); ) {
314  if (rm.count(target->getID()) != 0)
315  target = data.erase(target);
316  else
317  ++target;
318  }
319  }
320 
321  if (!keep.empty()) {
322  for (container_type::iterator target = data.begin(); target != data.end(); ) {
323  if (keep.count(target->getID()) == 0)
324  target = data.erase(target);
325  else
326  ++target;
327  }
328  }
329 
330  sort(data.begin(), data.end(), make_comparator(&JTripod::getID));
331 
332  data.store(outputFile.c_str());
333 }
string outputFile
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
#define ERROR(A)
Definition: JMessage.hh:66
#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:2158
Utility class to parse command line options.
Definition: JParser.hh:1714
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
static const char WILDCARD
Definition: JDAQTags.hh:56
Definition: JSTDTypes.hh:14
Auxiliary data structure for sequence of same character.
Definition: JManip.hh:330
Target.
Definition: JHead.hh:300
Auxiliary data structure for streaming of STL containers.
Definition: JPrint.hh:66
Auxiliary wrapper for I/O of container with optional comment (see JComment).
Definition: JContainer.hh:42
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:84
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:72