Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JPrintMeta.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4
5#include "TROOT.h"
6#include "TFile.h"
7#include "TNamed.h"
8#include "TKey.h"
9#include "TRegexp.h"
10
11#include "JLang/JLangToolkit.hh"
13#include "Jeep/JeepToolkit.hh"
14#include "JSon/JSon.hh"
15
17#include "JSupport/JMeta.hh"
18#include "JSupport/JSupport.hh"
19
20#include "Jeep/JParser.hh"
21#include "Jeep/JMessage.hh"
22
23namespace {
24
25 /**
26 * Print options.
27 */
28 static const char* plain_t = "plain"; //!< plain text
29 static const char* json_t = "JSON"; //!< JSON format
30}
31
32/**
33 * \file
34 * Auxiliary program to print Jpp meta data.
35 * \author mdejong
36 */
37int main(int argc, char **argv)
38{
39 using namespace std;
40 using namespace JPP;
41
42 string inputFile;
43 JLimit_t numberOfEvents;
44 string application;
45 string option;
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);
107 JObjectMultiplexer <JMetaTypes_t> abc(in);
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}
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
ROOT I/O of application specific meta data.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
Definition JPrintMeta.cc:37
nlohmann::json json
ROOT TTree parameter settings of various packages.
Auxiliary methods for handling file names, type names and environment.
virtual bool hasNext() override
Check availability of next element.
virtual const pointer_type & next() override
Get next element.
Utility class to parse command line options.
Definition JParser.hh:1698
General purpose class for object reading from a list of file names.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
static const char *const SVNrelease_t
SVN release.
Definition JMeta.hh:59
static const char *const command_t
Linux command.
Definition JMeta.hh:63
static const char *const GITrelease_t
GIT release.
Definition JMeta.hh:60
static const char *const namespace_t
name space
Definition JMeta.hh:62
static const char *const ROOTrelease_t
ROOT release.
Definition JMeta.hh:61
static const char *const system_t
system information
Definition JMeta.hh:64
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for defining the range of iterations of objects.
Definition JLimit.hh:45
static counter_type max()
Get maximum counter value.
Definition JLimit.hh:128
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72