1#ifndef __JSUPPORT__JMETA__
2#define __JSUPPORT__JMETA__
71 public std::map<std::string, std::string>
86 JMeta(
const int argc,
const char*
const argv[])
99 for (
int i = 1; i != argc; ++i) {
100 if (get_number_of_tokens(argv[i]) == 1)
109 << buffer.sysname <<
' '
110 << buffer.nodename <<
' '
111 << buffer.release <<
' '
112 << buffer.version <<
' '
127 for (const_iterator i = this->begin(); i != this->end(); ++i) {
128 comment.push_back(i->first +
' ' + i->second);
141 static void copy(
const char*
const file_name, TFile& out);
170 istringstream is(buffer);
174 for (
JEquation equation; is >> equation; ) {
175 meta[equation.getKey()] = equation.getValue();
196 for (JMeta::const_iterator i = this->begin(); i != this->end(); ++i) {
197 os << JEquation::make_equation(i->first, i->second);
217 if (p != meta.end()) {
218 for (const_iterator i = meta.begin(); i != meta.end(); ++i) {
220 out << p->second <<
' ' << i->second << endl;
259 file->GetObject(key, __p);
265 const TString title = __p->GetTitle();
269 const string::size_type pos = buffer.find(
';');
271 if (pos != string::npos) {
275 istringstream(buffer.substr(pos + 1)) >> cycle;
277 buffer = buffer.substr(0, pos);
279 for (
int i = 1; i < cycle; ++i) {
283 if (__p != NULL && __p->GetTitle() == title) {
318 if (number_of_cycles != 0) {
346 inline bool putMeta(TDirectory& dir,
const std::string& key,
const std::string& buffer)
348 static TNamed object;
356 object.SetName (key.c_str());
357 object.SetTitle(buffer.c_str());
359 return (p->WriteTObject(&
object) > 0);
374 if (p != meta.end()) {
427 while (in.hasNext()) {
429 const JMeta* p = in.next();
473 const char* buffer[number_of_items] = {
493 if (number_of_cycles != 0) {
497 file->GetObject(key, __p);
503 for (
int i = 1; i != number_of_items; ++i) {
508 (*ps)[buffer[i]] = __p->GetTitle();
#define MAKE_CSTRING(A)
Make C-string.
#define MAKE_STRING(A)
Make string.
Jpp environment information.
Auxiliary class for fit parameter with optional limits.
Facet class to specify parsing of equations in currect locale (see class JLANG::JEquation).
Simple data structure to support I/O of equations (see class JLANG::JEquation).
General purpose equation class.
std::vector< std::string > JComment_t
Type definition of comment block.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Support classes and methods for experiment specific I/O.
static const char *const SVNrelease_t
SVN release.
bool putMeta(TDirectory &dir, const std::string &key, const std::string &buffer)
Write meta data as ROOT TNamed object.
static const char *const command_t
Linux command.
bool putObject(TDirectory &dir, const JMeta &meta)
Write meta data to ROOT directory.
static const char *const META_NAME
ROOT name for meta data.
void getObject(TFile *file, const TString &key, JMeta *&ps)
Read object from ROOT file.
static const char *const GITrelease_t
GIT release.
static const char *const META_DIRECTORY
ROOT sub-directory for meta data.
static const char *const application_t
Definition of meta data parameters.
const char * getName(const JType< JMeta > &type)
Get ROOT name of given data type.
static const char *const namespace_t
name space
int getNumberOfCycles(TFile *file, const TString &key)
Get number of cycles of named objects with same title as given key.
TFile & operator<<(TFile &file, const JMeta &meta)
Write meta data to ROOT file.
static const char *const ROOTrelease_t
ROOT release.
static const char *const system_t
system information
Auxiliary class for a type holder.
Auxiliary class for operating system information.