CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/IORawData/HcalTBInputService/src/CDFRunInfo.cc

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 }