Go to the documentation of this file.00001 #include <TMap.h>
00002 #include <TObjString.h>
00003 #include "IORawData/HcalTBInputService/src/CDFRunInfo.h"
00004 #include <stdlib.h>
00005
00006 const char* CDFRunInfo::RootVariableName = "CDFRunInfo";
00007
00008 CDFRunInfo::CDFRunInfo() {
00009 }
00010
00011 CDFRunInfo::CDFRunInfo(TFile* file) {
00012 load(file);
00013 }
00014
00015 const char* CDFRunInfo::get(const char* key) const {
00016 std::map<std::string,std::string>::const_iterator i=m_mapData.find(key);
00017 if (i==m_mapData.end()) return NULL;
00018 return i->second.c_str();
00019 }
00020
00021 int CDFRunInfo::getInt(const char* key) const {
00022 const char* k=get(key);
00023 if (k==NULL) return 0;
00024 return atoi(k);
00025 }
00026
00027 double CDFRunInfo::getDouble(const char* key) const {
00028 const char* k=get(key);
00029 if (k==NULL) return 0;
00030 return atof(k);
00031 }
00032
00033 int CDFRunInfo::getKeys(const char** buffer, int nbufs) {
00034 int j=0;
00035 for (std::map<std::string,std::string>::const_iterator i=m_mapData.begin(); i!=m_mapData.end() && j<nbufs; i++, j++) {
00036 buffer[j]=i->first.c_str();
00037 }
00038 return j;
00039 }
00040
00041 bool CDFRunInfo::hasKey(const char* key) const {
00042 std::map<std::string,std::string>::const_iterator i=m_mapData.find(key);
00043 return (i!=m_mapData.end());
00044 }
00045
00046 void CDFRunInfo::setInfo(const char* key, const char* value) {
00047 m_mapData[key]=value;
00048 }
00049
00050 bool CDFRunInfo::load(TFile* f) {
00051 m_mapData.clear();
00052 if (f==NULL) return false;
00053 TMap* pMap=(TMap*)f->Get(RootVariableName);
00054 if (pMap==NULL) return false;
00055 TIterator* i=pMap->MakeIterator();
00056 TObject* o;
00057
00058 while ((o=i->Next())!=NULL) {
00059 std::string a(o->GetName());
00060 std::string b(pMap->GetValue(o)->GetName());
00061 m_mapData.insert(std::pair<std::string,std::string>(a,b));
00062 }
00063 return true;
00064 }
00065
00066 void CDFRunInfo::store(TFile* f) {
00067 f->cd();
00068 TMap* myMap=new TMap();
00069 for (std::map<std::string,std::string>::iterator i=m_mapData.begin(); i!=m_mapData.end(); i++) {
00070 myMap->Add(new TObjString(i->first.c_str()), new TObjString(i->second.c_str()));
00071 }
00072 myMap->SetName(RootVariableName);
00073 myMap->Write(RootVariableName,TObject::kSingleKey);
00074 }
00075
00076 void CDFRunInfo::print() const {
00077 for (std::map<std::string,std::string>::const_iterator i=m_mapData.begin(); i!=m_mapData.end(); i++)
00078 printf(" '%s' => '%s' \n",i->first.c_str(),i->second.c_str());
00079
00080 }