#include "ARVersion.h"
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBId.h"
#include "AliCDBMetaData.h"
#include <TTree.h>
#include <TList.h>
#include <TObjString.h>
#include <TString.h>
#endif
void makeCDBSnapshotFromUserInfo(const char* defaultStorage, const char* esdFile, const char* snapshotFile)
{
// read UserInfo from an esd tree and build the corresponding single-key snapshot from it
// ATTENTION: it works if we are happy that all objects will be taken from the default CDB
// Example input esd file: "alien:///alice/data/2011/LHC11h_2/000168984/ESDs/pass2/11000168984001.12/AliESDs.root"
//
AliCDBManager *cdb = AliCDBManager::Instance();
cdb->SetDefaultStorage(defaultStorage);
TFile *f = TFile::Open(esdFile);
if(!f){
Printf("Unable to open file \"%s\". Exiting.",esdFile);
return;
}
TTree *tree = (TTree*) f->Get("esdTree");
if(!tree){
Printf("Could not get tree from file. Exiting.");
return;
}
TList *ui = (TList*) tree->GetUserInfo();
if(!ui){
Printf("Could not get user info from tree. Exiting.");
return;
}
TList *ids = (TList*) ui->At(2);
if(!ids){
Printf("Could not get CDB objects' ids from user info. Exiting.");
return;
}
TListIter lIter(ids);
TObjString *oStr = 0;
while ((oStr = dynamic_cast<TObjString*> (lIter.Next()))) {
TString printedId = oStr->GetString();
// add here lines like the following if you don't want a given object in the snapshot
// this should not be needed because the specific storages overwrite the snapshot-mode
//if(printedId.Contains("ITS/Align/Data")||printedId.Contains("MUON/Align/Data"))
// continue;
printedId.Remove(0,printedId.First('"')+1);
TString path = printedId(0,printedId.First('"'));
printedId.Remove(0,printedId.First('[')+1);
TString fRun = printedId(0,printedId.First(','));
printedId.Remove(0,printedId.First(',')+1);
Int_t firstRun = fRun.Atoi();
TString lRun = printedId(0,printedId.First(']'));
Int_t lastRun = lRun.Atoi();
printedId.Remove(0,printedId.First(':')+1);
printedId.Remove(0,2);
printedId.Remove(printedId.First('_'),printedId.Length());
Int_t version = printedId.Atoi();
AliCDBId id(path.Data(),firstRun,lastRun,version);
id.Print();
AliCDBEntry *e = cdb->Get(id,kTRUE);
}
cdb->DumpToSnapshotFile(snapshotFile,kFALSE);
}
makeCDBSnapshotFromUserInfo.C:1 makeCDBSnapshotFromUserInfo.C:2 makeCDBSnapshotFromUserInfo.C:3 makeCDBSnapshotFromUserInfo.C:4 makeCDBSnapshotFromUserInfo.C:5 makeCDBSnapshotFromUserInfo.C:6 makeCDBSnapshotFromUserInfo.C:7 makeCDBSnapshotFromUserInfo.C:8 makeCDBSnapshotFromUserInfo.C:9 makeCDBSnapshotFromUserInfo.C:10 makeCDBSnapshotFromUserInfo.C:11 makeCDBSnapshotFromUserInfo.C:12 makeCDBSnapshotFromUserInfo.C:13 makeCDBSnapshotFromUserInfo.C:14 makeCDBSnapshotFromUserInfo.C:15 makeCDBSnapshotFromUserInfo.C:16 makeCDBSnapshotFromUserInfo.C:17 makeCDBSnapshotFromUserInfo.C:18 makeCDBSnapshotFromUserInfo.C:19 makeCDBSnapshotFromUserInfo.C:20 makeCDBSnapshotFromUserInfo.C:21 makeCDBSnapshotFromUserInfo.C:22 makeCDBSnapshotFromUserInfo.C:23 makeCDBSnapshotFromUserInfo.C:24 makeCDBSnapshotFromUserInfo.C:25 makeCDBSnapshotFromUserInfo.C:26 makeCDBSnapshotFromUserInfo.C:27 makeCDBSnapshotFromUserInfo.C:28 makeCDBSnapshotFromUserInfo.C:29 makeCDBSnapshotFromUserInfo.C:30 makeCDBSnapshotFromUserInfo.C:31 makeCDBSnapshotFromUserInfo.C:32 makeCDBSnapshotFromUserInfo.C:33 makeCDBSnapshotFromUserInfo.C:34 makeCDBSnapshotFromUserInfo.C:35 makeCDBSnapshotFromUserInfo.C:36 makeCDBSnapshotFromUserInfo.C:37 makeCDBSnapshotFromUserInfo.C:38 makeCDBSnapshotFromUserInfo.C:39 makeCDBSnapshotFromUserInfo.C:40 makeCDBSnapshotFromUserInfo.C:41 makeCDBSnapshotFromUserInfo.C:42 makeCDBSnapshotFromUserInfo.C:43 makeCDBSnapshotFromUserInfo.C:44 makeCDBSnapshotFromUserInfo.C:45 makeCDBSnapshotFromUserInfo.C:46 makeCDBSnapshotFromUserInfo.C:47 makeCDBSnapshotFromUserInfo.C:48 makeCDBSnapshotFromUserInfo.C:49 makeCDBSnapshotFromUserInfo.C:50 makeCDBSnapshotFromUserInfo.C:51 makeCDBSnapshotFromUserInfo.C:52 makeCDBSnapshotFromUserInfo.C:53 makeCDBSnapshotFromUserInfo.C:54 makeCDBSnapshotFromUserInfo.C:55 makeCDBSnapshotFromUserInfo.C:56 makeCDBSnapshotFromUserInfo.C:57 makeCDBSnapshotFromUserInfo.C:58 makeCDBSnapshotFromUserInfo.C:59 makeCDBSnapshotFromUserInfo.C:60 makeCDBSnapshotFromUserInfo.C:61 makeCDBSnapshotFromUserInfo.C:62 makeCDBSnapshotFromUserInfo.C:63 makeCDBSnapshotFromUserInfo.C:64 makeCDBSnapshotFromUserInfo.C:65 makeCDBSnapshotFromUserInfo.C:66 makeCDBSnapshotFromUserInfo.C:67 makeCDBSnapshotFromUserInfo.C:68 makeCDBSnapshotFromUserInfo.C:69 makeCDBSnapshotFromUserInfo.C:70 makeCDBSnapshotFromUserInfo.C:71