Add method for creating a light snapshot.
authorrgrosso <Raffaele.Grosso@cern.ch>
Wed, 4 Jun 2014 08:22:06 +0000 (10:22 +0200)
committerrgrosso <Raffaele.Grosso@cern.ch>
Wed, 4 Jun 2014 08:22:06 +0000 (10:22 +0200)
A light snapshot contains only the information to create a CDB snapshot,
à la UserInfo, that is the map with the storages and the list with the
AliCDBIds of the CDB objects.

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

index a048ad0..0f30619 100644 (file)
@@ -103,7 +103,7 @@ void AliCDBManager::InitFromCache(TMap *entryCache, Int_t run) {
 }
 
 //_____________________________________________________________________________
-void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys) {
+void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys) const {
 //
 // If singleKeys is true, dump the entries map and the ids list to the snapshot file
 // (provided mostly for historical reasons, the file is then read with InitFromSnapshot),
@@ -122,8 +122,8 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
 
   f->cd();
   if(singleKeys){
-  f->WriteObject(&fEntryCache,"CDBentriesMap");
-  f->WriteObject(fIds,"CDBidsList");
+    f->WriteObject(&fEntryCache,"CDBentriesMap");
+    f->WriteObject(fIds,"CDBidsList");
   }else{
     // We write the entries one by one named by their calibration path
     TIter iter(fEntryCache.GetTable());
@@ -143,6 +143,28 @@ void  AliCDBManager::DumpToSnapshotFile(const char* snapshotFileName, Bool_t sin
 }
 
 //_____________________________________________________________________________
+void  AliCDBManager::DumpToLightSnapshotFile(const char* lightSnapshotFileName) const {
+// The light snapshot does not contain the CDB objects (AliCDBEntries) but
+// only the information identifying them, that is the map of storages and
+// the list of AliCDBIds, as in the UserInfo of AliESDs.root
+
+  // open the file
+  TFile *f = TFile::Open(lightSnapshotFileName,"RECREATE");
+  if (!f || f->IsZombie()){
+    AliError(Form("Cannot open file %s",lightSnapshotFileName));
+    return;
+  }
+
+  AliInfo(Form("Dumping map of storages with %d entries!\n", fStorageMap->GetEntries()));
+  AliInfo(Form("Dumping entriesList with %d entries!\n", fIds->GetEntries()));
+  f->WriteObject(fStorageMap,"cdbStoragesMap");
+  f->WriteObject(fIds,"CDBidsList");
+
+  f->Close();
+  delete f;
+}
+
+//_____________________________________________________________________________
 Bool_t AliCDBManager::InitFromSnapshot(const char* snapshotFileName, Bool_t overwrite){
 // initialize manager from a CDB snapshot, that is add the entries
 // to the entries map and the ids to the ids list taking them from
index 36f4d53..118d3e0 100644 (file)
@@ -127,7 +127,8 @@ class AliCDBManager: public TObject {
     Bool_t InitFromSnapshot(const char* snapshotFileName, Bool_t overwrite=kTRUE);
     Bool_t SetSnapshotMode(const char* snapshotFileName="OCDB.root");
     void UnsetSnapshotMode() {fSnapshotMode=kFALSE;}
-    void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys);
+    void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys) const;
+    void DumpToLightSnapshotFile(const char* lightSnapshotFileName) const;
 
     Int_t GetStartRunLHCPeriod();
     Int_t GetEndRunLHCPeriod();