/** CBM MAPS Hitproducer Written by Michael Deveaux (m.deveaux@gsi.de) Acknowledgements to M. Al-Turany, D. Bertini, G. Gaycken Version beta 0.1 (02.02.2005) */ #include #include #include #include #include #include #include #include #include #include "CbmMapsFileManager.h" #include "TROOT.h" #include #include using std::cout; using std::endl; using std::map; using std::setw; using std::left; using std::right; using std::fixed; using std::pair; using std::setprecision; using std::ios_base; using std::vector; CbmMapsFileManager::CbmMapsFileManager (TString fileName,TString branchName) { fFrameworkFile=gFile; fFrameworkDirectory=gDirectory; fInputFile=(TFile*) gROOT->FindObject(fileName); if (fInputFile==0){fInputFile = new TFile(fileName); }; if (!fInputFile) { Fatal("CbmMapsFileManager: Error, could not open",fileName); }; fCbm = (FairMCApplication*) fInputFile->Get("Cbm"); fTree = (TTree*) fInputFile->Get("cbmsim"); fFolder = (TFolder*) fInputFile->Get("cbmout"); fListOfStsPoints = (TClonesArray*)fFolder->FindObjectAny(branchName); if (!fListOfStsPoints){ Fatal("CbmMapsFileManager: Error, could not open branch",branchName); }; fTree->SetBranchAddress(fListOfStsPoints->GetName(),&fListOfStsPoints); fEventsInFile=(UInt_t) fTree->GetEntries(); if(fEventsInFile<1) {cout<< "Warning: No events in file" << fileName<< endl;} else { cout << fileName << " was opened successfully. " << endl << fEventsInFile; cout << " events available." << endl; }; if(fFrameworkFile) {gFile=fFrameworkFile;}; if(fFrameworkDirectory){gDirectory=fFrameworkDirectory;}; }; CbmMapsFileManager::CbmMapsFileManager (){}; CbmMapsFileManager::~CbmMapsFileManager () { delete fFolder; delete fTree; delete fCbm; fInputFile->Close(); delete fInputFile; }; UInt_t CbmMapsFileManager::GetNumberOfEventsInFile() {return fEventsInFile;}; UInt_t CbmMapsFileManager::GetNumberOfHitsInEvent() {return fHitsInEvent;}; UInt_t CbmMapsFileManager::GetNumberOfCurrentEvent () {return fNumberOfCurrentEvent;}; void CbmMapsFileManager::LoadEntryIntoRam (UInt_t entry) { if (((entry>=fEventsInFile) || (entry<0))) {cout << "CbmMapsFileManager::GetStsPoint: Error, event "; cout << entry << " doesn't exist." << endl; Fatal("CbmMapsFileManager::GetStsPoint"," Aborting"); }; fTree->GetEntry(entry); fHitsInEvent=(UInt_t) fListOfStsPoints->GetEntries(); }; TClonesArray* CbmMapsFileManager::GetEntry (UInt_t eventNumber){ // Reads Entry from disk (independant from framework) LoadEntryIntoRam (eventNumber); return fListOfStsPoints; }; TClonesArray* CbmMapsFileManager::GetFrameworkEntry (){ // Takes Entry from framework (no independen disk access) // May be used to reset TClonesArray for same event. return fListOfStsPoints; }; ClassImp(CbmMapsFileManager)