EventList.cpp

Go to the documentation of this file.
00001 
00002 #include "cafe/EventList.hpp"
00003 #include "cafe/Event.hpp"
00004 #include "cafe/Config.hpp"
00005 
00006 #include "TFile.h"
00007 #include "TEventList.h"
00008 
00009 namespace cafe {
00010 
00011     EventList::EventList(const char *name)
00012         : Processor(name),
00013           _list(0),
00014           _file(0)
00015     {
00016         Config config(name);
00017         
00018         std::string filename = config.get("File", "");
00019         _tags = config.getVString("Tags"," ,");
00020 
00021         if(filename != "") {
00022             _file = new TFile(filename.c_str(), "RECREATE");
00023             out() << "EventList[" << name << "] : Created event list file: " << filename << std::endl;
00024         }
00025 
00026     }
00027 
00028     EventList::~EventList()
00029     {
00030     }
00031 
00032     void EventList::inputFileOpened(TFile *file)
00033     {
00034         if(_file) {
00035             _file->cd();
00036             _list = new TEventList((std::string("EVTS-") + gSystem->BaseName(file->GetName())).c_str(), file->GetName());
00037         }
00038     }
00039 
00040     void EventList::inputFileClosing(TFile *file)
00041     {
00042         if(_file) {
00043             _file->cd();
00044             _list->Write();
00045             delete _list; // ??
00046             _list = 0;
00047         }
00048     }
00049 
00050     bool EventList::processEvent(cafe::Event& event)
00051     {
00052         if(_list && (_tags.empty() || event.hasTag(_tags))) {
00053             _list->Enter(event.getTree()->GetReadEntry());
00054         }
00055         return true;
00056     }
00057 
00058     void EventList::finish()
00059     {
00060         if(_file) {
00061             // _file->Write();
00062             _file->Close();
00063             delete _file;
00064         }
00065     }
00066 }
00067 
00068 ClassImp(cafe::EventList);
00069 

Generated on Thu Apr 3 04:14:23 2008 for CAF by doxygen 1.3.4