+
+ dirFile = NULL ;
+ dirOCDB = NULL ;
+ TString refStorage(AliQA::GetQARefStorage()) ;
+ //refStorage += AliQA::GetQARefFileName() ;
+ if (refStorage.Contains(AliQA::GetLabLocalFile())) {
+ refStorage.ReplaceAll(AliQA::GetLabLocalFile(), "") ;
+ if ( fRefFile )
+ if ( fRefFile->IsOpen() )
+ fRefFile->Close() ;
+ fRefFile = TFile::Open(refStorage.Data()) ;
+ if (!fRefFile) {
+ AliError(Form("Cannot find reference file %s", refStorage.Data())) ;
+ dirFile = NULL ;
+ }
+ dirFile = fRefFile->GetDirectory(det) ;
+ if (!dirFile) {
+ AliWarning(Form("Directory %s not found in %d", det, refStorage.Data())) ;
+ } else {
+ dirFile = dirFile->GetDirectory(task) ;
+ if (!dirFile)
+ AliWarning(Form("Directory %s/%s not found in %s", det, task, refStorage.Data())) ;
+ }
+ } else if (refStorage.Contains(AliQA::GetLabLocalOCDB()) || refStorage.Contains(AliQA::GetLabAliEnOCDB())) {
+ AliCDBManager* man = AliCDBManager::Instance() ;
+ if ( strcmp(AliQA::GetRefDataDirName(), "") == 0 ) { // the name of the last level of the directory is not set (RUNTYPE)
+ // Get it from RunInfo
+ if (!fRunInfo) // not yet set, get the info from GRP
+ LoadRunInfoFromGRP() ;
+ AliQA::SetQARefDataDirName(fRunInfo->GetRunType()) ;
+ }
+ if ( ! man->GetLock() ) {
+ man->SetDefaultStorage(AliQA::GetQARefStorage()) ;
+ man->SetSpecificStorage("*", AliQA::GetQARefStorage()) ;
+ }
+ char * detOCDBDir = Form("%s/%s/%s", det, AliQA::GetRefOCDBDirName(), AliQA::GetRefDataDirName()) ;
+ AliInfo(Form("Reference QA data are taken from %s", detOCDBDir)) ;
+ AliCDBEntry * entry = man->Get(detOCDBDir, man->GetRun()) ;
+ if (entry) {
+ TList * listDetQAD = dynamic_cast<TList *>(entry->GetObject()) ;
+ if ( listDetQAD )
+ dirOCDB = dynamic_cast<TObjArray *>(listDetQAD->FindObject(task)) ;
+ }