ATO-15 STEER/CDB/AliOCDBtoolkit.{h,cxx} - implementing LoadOCDB functions + reorderi...
authormivanov <marian.ivanov@cern.ch>
Wed, 14 May 2014 20:54:37 +0000 (22:54 +0200)
committermivanov <marian.ivanov@cern.ch>
Wed, 14 May 2014 20:54:37 +0000 (22:54 +0200)
       STEER/CDB/AliCDBManager.{h.cxx}  AliCDBManager::DumpToSnapshotFile -
        a.) always dump also simple list
        b.) Do not exit after MakeSnapshot
        c.) Optionaly catch mising entry exception in the AliCDBManage::Get

STEER/CDB/AliCDBManager.cxx
STEER/CDB/AliCDBManager.h
STEER/CDB/AliOCDBtoolkit.cxx
STEER/CDB/AliOCDBtoolkit.h

index 26e754d..d485595 100644 (file)
 #include "TMessage.h"
 #include "TObject.h"
 #include "TRegexp.h"
+ // STD
+using namespace std;
+#include <iostream>
+#include <algorithm>
+#include <sstream>
+#include <stdexcept>
+#include <functional>
 
 ClassImp(AliCDBParam)
 
@@ -120,11 +127,10 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
   AliInfo(Form("Dumping entriesList with %d entries!\n", fIds->GetEntries()));
 
   f->cd();
+  f->WriteObject(&fEntryCache,"CDBentriesMap");
+  f->WriteObject(fIds,"CDBidsList");
 
-  if(singleKeys){
-    f->WriteObject(&fEntryCache,"CDBentriesMap");
-    f->WriteObject(fIds,"CDBidsList");
-  }else{
+  if(!singleKeys){
     // We write the entries one by one named by their calibration path
     /*
        fEntryCache.Write("CDBentriesMap");
@@ -145,7 +151,7 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
   f->Close();
   delete f;
 
-  exit(0);
+  //exit(0);
 }
 
 //_____________________________________________________________________________
@@ -935,11 +941,14 @@ AliCDBEntry* AliCDBManager::Get(const AliCDBPath& path,
 }
 
 //_____________________________________________________________________________
-AliCDBEntry* AliCDBManager::Get(const AliCDBId& query, Bool_t forceCaching) {
+AliCDBEntry* AliCDBManager::Get(const AliCDBId& query, Bool_t forceCaching, Bool_t doCatch) {
 // get an AliCDBEntry object from the database
 
   // check if query's path and runRange are valid
   // query is invalid also if version is not specified and subversion is!
+  try {
+     
+  
   if (!query.IsValid()) {
     AliError(Form("Invalid query: %s", query.ToString().Data()));
     return NULL;
@@ -1014,10 +1023,16 @@ AliCDBEntry* AliCDBManager::Get(const AliCDBId& query, Bool_t forceCaching) {
   if(entry && !fIds->Contains(&entry->GetId())){
     fIds->Add(entry->GetId().Clone());
   }
-
-
   return entry;
-
+  }catch(const exception &e){
+    cerr << "OCDB retrieval failed!" << endl;
+    cerr << "Detailes: " << e.what() << endl;
+    if (!doCatch) {
+      throw std::runtime_error(e.what());
+    }
+    return 0;
+  }
+  return 0;
 }
 
 //_____________________________________________________________________________
index 36f4d53..0145d0d 100644 (file)
@@ -70,7 +70,7 @@ class AliCDBManager: public TObject {
 
     void UnsetDrain(){fDrainStorage = 0x0;}
 
-    AliCDBEntry* Get(const AliCDBId& query, Bool_t forceCaching=kFALSE);
+    AliCDBEntry* Get(const AliCDBId& query, Bool_t forceCaching=kFALSE, Bool_t doCatch=kFALSE);
     AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
         Int_t version = -1, Int_t subVersion = -1);
     AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
index 9dfeda6..d6e4caf 100644 (file)
@@ -38,7 +38,7 @@
   AliOCDBtoolkit::MakeDiffExampleUseCase();
   or from the AliOCDBtoolkit.sh in propmpt
   ocdbMakeTable AliESDs.root ESD OCDBrec.list
-  ocdbMakeTable galice.root ESD OCDBsim.list
+  ocdbMakeTable galice.root MC OCDBsim.list
 
   
    
 
 */
 
+/*
+  To check:
+  1.) Verify hash value uasge as and MD5 sum - 
+
+ */
 
 using namespace std;
 
@@ -164,7 +169,7 @@ void AliOCDBtoolkit::DumpOCDBAsTxt(const TString fInput, const TString fType, co
        // 
        man->SetDefaultStorage(((TPair*)cdbMap->FindObject("default"))->Value()->GetName());
         TList *cdbListMC0 = (TList*)file->Get("cdbList");     // this is list of TObjStrings
-        cdbList = ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
+        cdbList = AliOCDBtoolkit::ConvertListStringToCDBId(cdbListMC0);        // convert to the TObjArray of AliCDBids
   } 
     else if(fType.EqualTo("ESD",TString::kIgnoreCase)){
       file = TFile::Open(fInput.Data());
@@ -193,7 +198,7 @@ void AliOCDBtoolkit::DumpOCDBAsTxt(const TString fInput, const TString fType, co
 
 
 Bool_t AliOCDBtoolkit::ParseInfoFromOcdbString(TString ocdbString, TString &ocdbPath, Int_t &run0, Int_t &run1, Int_t &version, Int_t &subVersion){
-  //
+  // Functionalit
   // Parse OCDB id string and provide basic ocdb information
   //
   //  a.) parse ocdbPath
@@ -344,14 +349,53 @@ void AliOCDBtoolkit::LoadOCDBFromLog(const char *logName, Int_t verbose){
   }
 }
 
-
-void AliOCDBtoolkit::LoadOCDBFromMap(const TMap */*cdbMap*/, const TList */*cdbList*/){
+void  AliOCDBtoolkit::SetStorage(const TMap *cdbMap){
+  //
+  // Set storages as speified in the map - TO CHECK.. Should go to the AliCDBmanager if not alreadyhhere
+  //   
+  AliCDBManager * man = AliCDBManager::Instance();  
+  TIter iter(cdbMap->GetTable());
+  TPair* aPair=0;
+  while ((aPair = (TPair*) iter.Next())) {
+    //    aPair->Value();
+    //aPair->Print();
+    if (TString(aPair->GetName())=="default") man->SetDefaultStorage(aPair->Value()->GetName());
+    else
+      man->SetSpecificStorage(aPair->GetName(), aPair->Value()->GetName());
+  }  
+}
+void AliOCDBtoolkit::LoadOCDBFromMap(const TMap *cdbMap, const TList *cdbList){
   //
   // Initilaize OCDB
   // Load OCDB setting as specified in maps
-  // Or Do we have already implementation in AliCDBanager?
+  // Or Do we have already implementation in AliCDBanager?  TO CHECK.. Should go to the AliCDBmanager if not alreadyhhere
+  AliCDBManager * man = AliCDBManager::Instance();  
+  AliOCDBtoolkit::SetStorage(cdbMap);  
+  TIter iter(cdbList);
+  TObjString *ocdbString=0;
+  while (( ocdbString= (TObjString*) iter.Next())) {
+    AliCDBId* cdbId = AliCDBId::MakeFromString(ocdbString->String());
+    try {
+      //      AliCDBEntry * cdbEntry = (AliCDBEntry*) man->Get(*cdbId,kTRUE);
+      man->Get(*cdbId,kTRUE);
+    } catch(const exception &e){
+      cerr << "OCDB retrieval failed!" << endl;
+      cerr << "Detailes: " << e.what() << endl;
+    }   
+  }    
 }
 
+void AliOCDBtoolkit::LoadOCDBFromESD(const char *fname){
+  //
+  // Load OCDB setup from the ESD file
+  // 
+  TFile * fesd = TFile::Open(fname);
+  TList *listESD = ((TTree*)fesd->Get("esdTree"))->GetUserInfo();
+  TMap *cdbMapESD= (TMap*)listESD->FindObject("cdbMap");  
+  TList *cdbListESD0= (TList*)listESD->FindObject("cdbList"); // this is list of TObjStrings
+  AliOCDBtoolkit::LoadOCDBFromMap(cdbMapESD, cdbListESD0);
+}
 
 
 void AliOCDBtoolkit::MakeDiff(const TMap */*cdbMap0*/, const TList *cdbList0, const TMap */*cdbMap1*/, const TList *cdbList1, Int_t /*verbose*/){
@@ -361,7 +405,7 @@ void AliOCDBtoolkit::MakeDiff(const TMap */*cdbMap0*/, const TList *cdbList0, co
   // Input:
   //   maps and list charactireizing OCDB setup  
   // Output:
-  //   To be decided, currently it is the teinal output
+  //   To be decided.
   //
   Int_t entriesList0=cdbList0->GetEntries();
   Int_t entriesList1=cdbList1->GetEntries();
@@ -427,7 +471,7 @@ void AliOCDBtoolkit::DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const
     cdbPath = ostr->GetString();
     if(cdbPath.Contains("local://"))cdbPath=cdbPath(8,cdbPath.Length()).Data();
     
-    cdbEntry = (AliCDBEntry*) man->Get(*CDBId);
+    cdbEntry = (AliCDBEntry*) man->Get(*CDBId,kTRUE);
     if (!cdbEntry) {
       printf("Object not avaliable\n");
       CDBId->Print();
@@ -721,3 +765,14 @@ Bool_t AliOCDBtoolkit::AddoptOCDBEntry( const char *finput, const char *output,
   pocdbStorage->Put(entry->GetObject(), (*id1), metaData);
   return kTRUE;
 }
+
+
+void AliOCDBtoolkit::MakeSnapshotFromTxt(const TString fInput, const TString outfile, Bool_t singleKeys){
+  //
+  // Make snasphot form the txt file
+  //
+  AliCDBManager * man = AliCDBManager::Instance();
+  LoadOCDBFromList(fInput.Data());
+  man->DumpToSnapshotFile(outfile.Data(), singleKeys);
+
+}
index 3beda47..e46a342 100644 (file)
@@ -12,33 +12,31 @@ class TMemStatManager;
 using std::fstream;
 
 class AliOCDBtoolkit : public TObject {
-public:
-  //AliOCDBtoolkit();
-  //static AliOCDBtoolkit * Instance();
-  
+public:  
   static void MakeDiffExampleUseCase();    // example usage
   static void DumpOCDBAsTxt(const TString fInput,const TString fType, const TString outfile);
+  static void MakeSnapshotFromTxt(const TString fInput,const TString outfile, Bool_t singleKeys); 
   //
   static Bool_t   ParseInfoFromOcdbString(TString ocdbString, TString &ocdbPath, Int_t &run0, Int_t &run1, Int_t &version, Int_t &subVersion);   
   static Bool_t   ParseInfoFromOcdbString(TString ocdbString, AliCDBId &cdbId);
+  static TList  * ConvertListStringToCDBId(const TList */*cdbList0*/);   
   //
+  // Load OCDB entries 
   //
-  //
-  static void LoadOCDB(const TMap *cdbMap0, const TList *cdbList0); // to be implemented
-  static void LoadOCDBFromList(const char *ocdbList); // to be implemented
-  static void SetStorage(const TMap *cdbMap0){;}   // to be iplemented
-  //
-  static TList  * ConvertListStringToCDBId(const TList *cdbList0);   
-  static void LoadOCDBFromLog(const char *logName, Int_t verbose);
+  static void SetStorage(const TMap *cdbMap0);   
   static void LoadOCDBFromMap(const TMap *cdbMap, const TList *cdbList);
-  static void MakeDiff(const TMap *cdbMap0, const TList *cdbList0, const TMap *cdbMap1, const TList *cdbList1, Int_t verbose);
-  static void DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const TString outfile);
+  static void LoadOCDBFromLog(const char *logName, Int_t verbose);
+  static void LoadOCDBFromESD(const char *fname="AliESDs.root");
+  static void LoadOCDBFromList(const char */*ocdbList*/){;} // to be implemented  
+
   //
-  // dump object functionality
+  // Dump object functionality
   //  
+  static void DumpOCDB(const TMap *cdbMap0, const TList *cdbList0, const TString outfile);
   static void DumpObjectRecursive(TObject *obj);
   static void DumpObjectRecursive(TObject *obj, TString prefix, Int_t &counterRec);
   static void DumpOCDBFile(const char *finput , const char *foutput, Bool_t dumpMetaData, Bool_t xml);
+  static void MakeDiff(const TMap *cdbMap0, const TList *cdbList0, const TMap *cdbMap1, const TList *cdbList1, Int_t verbose);
   //
   // addopt OCDB entry
   //