#include "VFileManager.h" #include #include VFileManager* VFileManager::fInstance = 0; VFileManager::VFileManager() { } VFileManager::~VFileManager() { if (fInstance != 0) delete fInstance; } VFileManager* VFileManager::instance() { if (fInstance == 0) { fInstance = new VFileManager; } return fInstance; } void VFileManager::addFile( const QString& name) { if (name != "") { std::string fileName = name.toStdString(); TFile* file = new TFile(fileName.c_str());// ,"R"); TTree* tree = (TTree*)file->Get("cbmsim"); TFolder* folder = (TFolder*)file->Get("cbmroot"); if (folder == NULL) folder = (TFolder*) file->Get("cbmout"); if (folder == NULL) return; fFileNames.push_back(name); fFiles.push_back(file); fTrees.push_back(tree); fFolders.push_back(folder); } qDebug() << "-I- Add file: " << name; } TClonesArray* VFileManager::getArray( TString branchName) { TClonesArray* array = NULL; int nofFiles = fFiles.size(); if (nofFiles == 0) return array; for (int i = 0; i < nofFiles; i++) { if (!fFolders[i]) continue; if (!fTrees[i]) continue; array = (TClonesArray*) fFolders[i]->FindObjectAny(branchName); if (!array) continue; fTrees[i]->SetBranchAddress(array->GetName(),&array); return array; } return array; } void VFileManager::setEventNum( int ievent) { fEventNumber = ievent; int nofFiles = fFiles.size(); for (int i = 0; i < nofFiles; i++) { if (fTrees[i]) fTrees[i]->GetEntry(ievent); } } int VFileManager::getNofEvents() const { if (fFiles.size() == 0) return 0; if (!fTrees[0]) return 0; return fTrees[0]->GetEntriesFast(); } const QString& VFileManager::getFileName( int ifile) const { return fFileNames[ifile]; }