]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCConfigParser.cxx
store ntuple in same file as histos (Renu)
[u/mrichter/AliRoot.git] / TPC / AliTPCConfigParser.cxx
index b756cead9d89469f0213f8a38d14c6f670c0783d..f9261bbc0a1d07d680156c87dba02e69a421aa70 100644 (file)
@@ -36,6 +36,7 @@
 #include <TString.h>
 #include <TIterator.h>
 #include <TList.h>
+#include <TSystem.h>
 //AliRoot includes
 
 //header
@@ -107,8 +108,8 @@ Int_t AliTPCConfigParser::ParseConfigFileTxt(const char* cfgfile)
  //
  // Function to parse a configuration file
  //
-  
-  ifstream file(cfgfile);
+  ResetMap();
+  ifstream file(gSystem->ExpandPathName(cfgfile));
   if ( !file.is_open() ){
     Error("ParseConfigFileTxt","File '%s' could not be opened!", cfgfile);
     return 1;
@@ -142,7 +143,7 @@ Int_t AliTPCConfigParser::ParseConfigFileTxt(const char* cfgfile)
     TObjArray  *objArr=0x0;
     if (nentries==2){
       TObject *objVal=arrValues->At(1);
-      const TString &str=((TObjString*)objVal)->GetString();
+      const TString str=objVal->GetName();
       if (str.Contains(","))
         objArr=str.Tokenize(",");
       else{
@@ -173,6 +174,57 @@ Float_t AliTPCConfigParser::GetValue(const char *key, UInt_t position)
   return sval.Atof();
 }
 //_____________________________________________________________________
+const char* AliTPCConfigParser::GetData(const char *key, UInt_t position)
+{
+  //
+  //Get value for the speciefied key
+  //
+  TObjArray *arr=((TObjArray*)fConfigMap->FindObject(key));
+  if (position>=(UInt_t)(arr->GetEntries())) return "";
+  TObject *val=arr->At(position);
+  if ( !val ) return "";
+  return val->GetName();
+}
+//_____________________________________________________________________
+Float_t AliTPCConfigParser::GetValue(const TObject *key, UInt_t position)
+{
+  //
+  //Get value for the speciefied key
+  //
+  TObject *val=((TObjArray*)fConfigMap->FindObject(key))->At(position);
+  if ( !val ) return -999.;
+  TString sval(((TObjString*)val)->GetString());
+  return sval.Atof();
+}
+//_____________________________________________________________________
+const char* AliTPCConfigParser::GetData(const TObject *key, UInt_t position)
+{
+  //
+  //Get value for the speciefied key
+  //
+  TObjArray *arr=((TObjArray*)fConfigMap->FindObject(key));
+  if (position>=((UInt_t)arr->GetEntries())) return "";
+  TObject *val=arr->At(position);
+  if ( !val ) return "";
+  return val->GetName();
+}
+//_____________________________________________________________________
+Int_t AliTPCConfigParser::GetNumberOfValues(const char* key) const
+{
+  //
+  // return the number of values for key
+  //
+  return ((TObjArray*)fConfigMap->FindObject(key))->GetEntries();
+}
+//_____________________________________________________________________
+Int_t AliTPCConfigParser::GetNumberOfValues(TObject* key) const
+{
+  //
+  // return the number of values for key
+  //
+  return ((TObjArray*)fConfigMap->FindObject(key))->GetEntries();
+}
+//_____________________________________________________________________
 TObject* AliTPCConfigParser::NextKey(){
   if (!fKeyIter) fKeyIter=fConfigMap->MakeIterator();
   TObject *obj=fKeyIter->Next();
@@ -194,7 +246,10 @@ TObject* AliTPCConfigParser::NextValue(TObject *key){
 TObject* AliTPCConfigParser::NextValueIter(TObjArray *key){
   if (!key) return 0;
   //check if the collection has changed
-  if (fValIter && key!=fValIter->GetCollection()) delete fValIter;
+  if (fValIter && key!=fValIter->GetCollection()) {
+    delete fValIter;
+    fValIter=0x0;
+  }
   if (!fValIter) fValIter=key->MakeIterator();
   TObject *value=fValIter->Next();
   if (!value) {