Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
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;
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 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
Utility class to parse command line options.
Definition JParser.hh:1698
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).
Auxiliary data structure for sequence of same character.
Definition JManip.hh:330
Target.
Definition JHead.hh:300
Auxiliary wrapper for I/O of container with optional comment (see JComment).
Definition JContainer.hh:42
Auxiliary data structure for streaming of STL containers.
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