|
// $Id: BrSequenceManager.cxx,v 1.1.1.1 2001/06/21 14:55:15 hagel Exp $ // $Author: hagel $ // $Date: 2001/06/21 14:55:15 $ // #include <BrIostream.h> // // ROOT classes // // Brat classes #include "BrSequenceManager.h" #include <BrException.h> /////////////////////////////////////////////////////////////////////// // // This manager class will help the user to get events from // sequential sequence files from a specific run. // The (raw) data files are expected to have the standard // name: runAAAAAAseqBBB.cdat, where AAAAAA and BBB are integers. // // Example of an event loop: // // ------------------------------------------------------------------- // { // input = new BrRawDataInput("data input"); // // BrSequenceManager* seqMan = BrSequenceManager::Instance(); // seqMan->SetDataDirectory("foo"); // seqMan->SetRunNumber(4711); // // // while(1) { // // if (!input->Open(seqMan->GetNextSequenceFile(),"DISKFILE")) // break; // // while(!input->Eof()) { // BrEvent* event = new BrEvent("event", 1, 1); // // input->Event(event); // // ... // // delete event; // } // input->Close(); // } // } // ------------------------------------------------------------------- // // ClassImp(BrSequenceManager); //____________________________________________________________________ // Static instance of manager. BrSequenceManager* BrSequenceManager::fgInstance = 0; //____________________________________________________________________ BrSequenceManager* BrSequenceManager::Instance(){ // There can be only one! if(!fgInstance) fgInstance = new BrSequenceManager; return fgInstance; } //____________________________________________________________________ BrSequenceManager::BrSequenceManager() { // CTOR fgInstance = this; fRunNumber = 0; fSequenceNumber = -1; fDataDir = 0; fStartSequence = 0; fStopSequence = 999; fDataType = raw; } //____________________________________________________________________ BrSequenceManager::~BrSequenceManager() { // DTOR fgInstance = 0; if (fDataDir) delete fDataDir; } //____________________________________________________________________ void BrSequenceManager::SetDataDirectory(const Char_t* directory) { // Set the diretory in wich the manager should look for the // sequence files. if (fDataDir) *fDataDir = directory; else fDataDir = new TString(directory); } //____________________________________________________________________ const Char_t* BrSequenceManager::GetNextSequenceFile(void) { // Return the name of the next sequence file with full path. It's // the users responsibility to copy the string. If the next // sequence number is bigger than 999 or less than 0, this method // return 0. fSequenceNumber++; return GetCurrentSequenceFile(); } //____________________________________________________________________ const Char_t* BrSequenceManager::GetCurrentSequenceFile(void) { // Return the name of the current sequence file with full path. It's // the users responsibility to copy the string. If the current // sequence number is bigger than 999 or less than 0, this method // return 0. if ((fSequenceNumber<0)||(fSequenceNumber>999)) return 0; if ((fSequenceNumber<fStartSequence)||(fSequenceNumber>fStopSequence)) return 0; if (fDataType == raw) return Form("%srun%06dseq%03d.dat", fDataDir->Data(), fRunNumber, fSequenceNumber); else if (fDataType == root) return Form("%srun%06dseq%03d.root", fDataDir->Data(), fRunNumber, fSequenceNumber); else { throw new BrError("BrSequenceManager","Data type unknown!"); return 0; } } //____________________________________________________________________ void BrSequenceManager::SetDataType(const Char_t* type) { TString s(type); if (s.Contains("root",TString::kIgnoreCase)) fDataType = root; else if (s.Contains("raw",TString::kIgnoreCase)) fDataType = raw; else { throw new BrError("BrSequenceManager","Data type %s unknown!", type); return; } } //____________________________________________________________________ Bool_t BrSequenceManager::IsDataTypeRaw(void) { if (fDataType == raw) return kTRUE; return kFALSE; } //____________________________________________________________________ Bool_t BrSequenceManager::IsDataTypeRoot(void) { if (fDataType == root) return kTRUE; return kFALSE; } //____________________________________________________________________ Bool_t BrSequenceManager::IsSequence(Int_t seqNo) { // Checks if the sequence file corresponding to the sequence number // (seqNo) is in the data directory. // ALWAYS RETURNS kTRUE!!!!!!!!!!!!!!!!!!!1 /* const Char_t* fileName = Form("%srun%06dseq%03d.dat", fDataDir->Data(), fRunNumber, seqNo); TDirectory* saveDir = gDirectory; TFile* file = new TFile(fileName, "READ", "file"); Bool_t isSequence = file->IsZombie(); if(file!=0) { file->Close(); delete file; } saveDir->cd(); delete saveDir; return isSequence; */ return kTRUE; } // // $Log: BrSequenceManager.cxx,v $ // Revision 1.1.1.1 2001/06/21 14:55:15 hagel // Initial revision of brat2 // // Revision 1.3 2000/12/26 22:08:09 bramreco // use BrIostream // // Revision 1.2 2000/11/13 16:34:13 ekman // Data type (raw or root) added. Start sequence and stop sequence added. // // Revision 1.1 2000/10/24 15:19:35 ekman // Added BrSequenceManager. The purpose of this class is to serve filenames // of a number of sequences from a single run. // // |
||||||
This page automatically generated by script docBrat by Christian Holm |
Copyright ; 2002 BRAHMS Collaboration
<brahmlib@rcf.rhic.bnl.gov>
|