adding availability check for a list of OCDB objects, code cleanup and updated docume...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 18 Apr 2010 09:45:55 +0000 (09:45 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 18 Apr 2010 09:45:55 +0000 (09:45 +0000)
HLT/BASE/AliHLTMisc.cxx
HLT/BASE/AliHLTMisc.h
HLT/rec/AliHLTMiscImplementation.cxx
HLT/rec/AliHLTMiscImplementation.h

index d1603fb..4417547 100644 (file)
@@ -65,24 +65,30 @@ int AliHLTMisc::SetCDBRunNo(int /*runNo*/)
   return -EFAULT;
 }
 
-int AliHLTMisc::GetCDBRunNo()
+int AliHLTMisc::GetCDBRunNo() const
 {
   // default method, functionality is implemented in the child class
   return -1;
 }
 
-AliCDBEntry* AliHLTMisc::LoadOCDBEntry(const char* /*path*/, int /*runNo*/, int /*version*/, int /*subVersion*/)
+AliCDBEntry* AliHLTMisc::LoadOCDBEntry(const char* /*path*/, int /*runNo*/, int /*version*/, int /*subVersion*/) const
 {
   // default method, functionality is implemented in the child class
   return NULL;
 }
 
-TObject* AliHLTMisc::ExtractObject(AliCDBEntry* /*entry*/)
+TObject* AliHLTMisc::ExtractObject(AliCDBEntry* /*entry*/) const
 {
   // default method, functionality is implemented in the child class
   return NULL;
 }
 
+int AliHLTMisc::CheckOCDBEntries(const TMap* const /*pMap*/) const
+{
+  // default method, functionality is implemented in the child class
+  return -ENOENT;
+}
+
 int AliHLTMisc::InitMagneticField() const
 {
   // default method, functionality is implemented in the child class
index f7996c7..7846f41 100644 (file)
@@ -25,6 +25,7 @@ class AliCDBEntry;
 class AliRawReader;
 class AliHLTComponentDataType;
 class AliHLTGlobalTriggerDecision;
+class TMap;
 
 class AliHLTMisc : public TObject {
  public:
@@ -39,11 +40,18 @@ class AliHLTMisc : public TObject {
   virtual int InitCDB(const char* cdbpath);
 
   virtual int SetCDBRunNo(int runNo);
-  virtual int GetCDBRunNo();
+  virtual int GetCDBRunNo() const;
 
-  virtual AliCDBEntry* LoadOCDBEntry(const char* path, int runNo=-1, int version = -1, int subVersion = -1);
+  /// Load an OCDB object
+  virtual AliCDBEntry* LoadOCDBEntry(const char* path, int runNo=-1, int version = -1, int subVersion = -1) const;
 
-  virtual TObject* ExtractObject(AliCDBEntry* entry);
+  // Extract the TObject instance from the CDB object
+  virtual TObject* ExtractObject(AliCDBEntry* entry) const;
+
+  /// check the availability of the OCDB entry descriptions in the TMap
+  ///  key : complete OCDB path of the entry
+  ///  value : auxiliary object - short description
+  virtual int CheckOCDBEntries(const TMap* const pMap) const;
 
   virtual int InitMagneticField() const;
 
index 726b492..508c10d 100644 (file)
@@ -90,7 +90,7 @@ int AliHLTMiscImplementation::SetCDBRunNo(int runNo)
   return iResult;
 }
 
-int AliHLTMiscImplementation::GetCDBRunNo()
+int AliHLTMiscImplementation::GetCDBRunNo() const
 {
   // see header file for function documentation
   AliCDBManager* pCDB = AliCDBManager::Instance();
@@ -103,7 +103,7 @@ int AliHLTMiscImplementation::GetCDBRunNo()
   return -1;
 }
 
-AliCDBEntry* AliHLTMiscImplementation::LoadOCDBEntry(const char* path, int runNo, int version, int subVersion)
+AliCDBEntry* AliHLTMiscImplementation::LoadOCDBEntry(const char* path, int runNo, int version, int subVersion) const
 {
   // see header file for function documentation
   AliCDBStorage* store = AliCDBManager::Instance()->GetDefaultStorage();
@@ -112,16 +112,52 @@ AliCDBEntry* AliHLTMiscImplementation::LoadOCDBEntry(const char* path, int runNo
   }
   if (version<0) version = store->GetLatestVersion(path, runNo);
   if (subVersion<0) subVersion = store->GetLatestSubVersion(path, runNo, version);
-  return AliCDBManager::Instance()->Get(path, runNo, version, subVersion);
+  return store->Get(path, runNo, version, subVersion);
 }
 
-TObject* AliHLTMiscImplementation::ExtractObject(AliCDBEntry* entry)
+TObject* AliHLTMiscImplementation::ExtractObject(AliCDBEntry* entry) const
 {
   // see header file for function documentation
   if (!entry) return NULL;
   return entry->GetObject();
 }
 
+int AliHLTMiscImplementation::CheckOCDBEntries(const TMap* const pMap) const
+{
+  // check the availability of the OCDB entry descriptions in the TMap
+  //  key : complete OCDB path of the entry
+  //  value : auxiliary object - short description
+  int iResult=0;
+  if (!pMap) return -EINVAL;
+
+  const TMap* pStorages=AliCDBManager::Instance()->GetStorageMap();
+  Int_t runNo = GetCDBRunNo();
+
+  TIterator* next=pMap->MakeIterator();
+  TObject* pEntry=NULL;
+  while ((pEntry=next->Next())) {
+    // check if the entry has specific storage
+    AliCDBStorage* pStorage=NULL;
+    TObject* pStorageId=pStorages->GetValue(pEntry->GetName());
+    if (pStorageId) {
+      pStorage=AliCDBManager::Instance()->GetStorage(pStorageId->GetName());
+    } else {
+      pStorage=AliCDBManager::Instance()->GetDefaultStorage();
+    }
+
+    if (pStorage->GetLatestVersion(pEntry->GetName(), runNo)<0) {
+      AliHLTLogging log;
+      log.Logging(kHLTLogError, "CheckOCDBEntries", "CDB handling", "can not find required OCDB object %s for run number %d in storage %s", pEntry->GetName(), runNo, pStorage->GetURI().Data());
+      iResult=-ENOENT;
+    } else {
+      AliHLTLogging log;
+      log.Logging(kHLTLogDebug, "CheckOCDBEntries", "CDB handling", "found required OCDB object %s for run number %d in storage %s", pEntry->GetName(), runNo, pStorage->GetURI().Data());
+    }
+  }
+
+  return iResult;
+}
+
 int AliHLTMiscImplementation::InitMagneticField() const
 {
   // see header file for function documentation
index 2b08d70..102794d 100644 (file)
@@ -2,7 +2,7 @@
 // $Id$
 
 #ifndef ALIHLTMISCIMPLEMENTATION_H
-#define ALIHLTMISCIMPLEMENTATION_H_H
+#define ALIHLTMISCIMPLEMENTATION_H
 //* This file is property of and copyright by the ALICE HLT Project        * 
 //* ALICE Experiment at CERN, All rights reserved.                         *
 //* See cxx source for full Copyright notice                               */
@@ -24,11 +24,12 @@ class AliHLTMiscImplementation : public AliHLTMisc
   int InitCDB(const char* cdbpath);
 
   int SetCDBRunNo(int runNo);
-  int GetCDBRunNo();
+  int GetCDBRunNo() const;
 
-  AliCDBEntry* LoadOCDBEntry(const char* path, int runNo=-1, int version = -1, int subVersion = -1);
+  AliCDBEntry* LoadOCDBEntry(const char* path, int runNo=-1, int version = -1, int subVersion = -1) const;
 
-  TObject* ExtractObject(AliCDBEntry* entry);
+  TObject* ExtractObject(AliCDBEntry* entry) const;
+  int CheckOCDBEntries(const TMap* const pMap) const;
 
   int InitMagneticField() const;