Jpp  17.3.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JPrintMeta.cc File Reference

Auxiliary program to print Jpp meta data. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "TROOT.h"
#include "TFile.h"
#include "TNamed.h"
#include "TKey.h"
#include "TRegexp.h"
#include "JLang/JLangToolkit.hh"
#include "JLang/JObjectMultiplexer.hh"
#include "Jeep/JeepToolkit.hh"
#include "JSon/JSon.hh"
#include "JSupport/JMultipleFileScanner.hh"
#include "JSupport/JMeta.hh"
#include "JSupport/JSupport.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 print Jpp meta data.

Author
mdejong

Definition in file JPrintMeta.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 37 of file JPrintMeta.cc.

38 {
39  using namespace std;
40  using namespace JPP;
41 
42  string inputFile;
43  JLimit_t numberOfEvents;
44  string application;
45  string option;
46  vector<string> key;
47  int debug;
48 
49  try {
50 
51  JParser<> zap("Auxiliary program to print Jpp meta data.");
52 
53  zap['f'] = make_field(inputFile);
54  zap['n'] = make_field(numberOfEvents) = JLimit::max();
55  zap['A'] = make_field(application) = "";
56  zap['O'] = make_field(option) = plain_t, json_t;
57  zap['k'] = make_field(key, "possible values: "
58  << GITrelease_t << ", "
59  << SVNrelease_t << ", "
60  << ROOTrelease_t << ", "
61  << namespace_t << ", "
62  << command_t << ", "
64  zap['d'] = make_field(debug) = 1;
65 
66  zap(argc, argv);
67  }
68  catch(const exception &error) {
69  FATAL(error.what() << endl);
70  }
71 
72 
73  if (application != "") {
74 
75  TFile* in = TFile::Open(inputFile.c_str(), "exists");
76 
77  if (in != NULL && in->IsOpen()) {
78 
79  const TRegexp regexp(application.c_str());
80 
81  TIter iter(in->GetListOfKeys());
82 
83  for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
84 
85  const TString tag(key->GetName());
86 
87  if (tag.Contains(regexp)) {
88 
89  TNamed* named = dynamic_cast<TNamed*>(key->ReadObj());
90 
91  if (named != NULL) {
92  cout << named->GetName() << "[" << key->GetCycle() << "] " << named->GetTitle() << endl;
93  }
94  }
95  }
96 
97  in->Close();
98 
99  } else {
100 
101  ERROR("Error opening file: " << inputFile << endl);
102  }
103 
104  } else {
105 
106  JMultipleFileScanner<JMetaTypes_t> in(inputFile, numberOfEvents);
108 
109  json js;
110 
111  while (abc.hasNext()) {
112 
113  JMeta* meta = abc.next();
114 
115  if (option == plain_t) {
116 
117  if (key.empty()) {
118 
119  cout << (*meta) << endl;
120 
121  } else {
122 
123  for (const auto& i : key) {
124  cout << ' ' << (*meta)[i];
125  }
126  cout << endl;
127  }
128 
129  } else if (option == json_t) {
130 
131  js += json(*meta);
132  }
133  }
134 
135  if (option == json_t) {
136  cout << setw(4) << js << endl;
137  }
138  }
139 }
Auxiliary class for ROOT I/O of application specific meta data.
Definition: JMeta.hh:70
Utility class to parse command line options.
Definition: JParser.hh:1517
static const char *const GITrelease_t
GIT release.
Definition: JMeta.hh:60
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:83
Auxiliary class for multiplexing object iterators.
static const char *const ROOTrelease_t
ROOT release.
Definition: JMeta.hh:61
static const char *const SVNrelease_t
SVN release.
Definition: JMeta.hh:59
Auxiliary class for defining the range of iterations of objects.
Definition: JLimit.hh:41
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
#define ERROR(A)
Definition: JMessage.hh:66
static const char *const system_t
system information
Definition: JMeta.hh:64
#define FATAL(A)
Definition: JMessage.hh:67
static const char *const namespace_t
name space
Definition: JMeta.hh:62
General purpose class for object reading from a list of file names.
nlohmann::json json
static const char *const command_t
Linux command.
Definition: JMeta.hh:63
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
int debug
debug level