00001 00014 #ifndef ANA_PROCESSOR_HH 00015 #define ANA_PROCESSOR_HH 00016 00017 #include <TFile.h> 00018 #include <vector> 00019 #include "ana_base.hh" 00020 #include "storage_manager.hh" 00021 00028 class ana_processor : public decoder_base{ 00029 00030 public: 00031 00033 enum PROCESS_FLAG{ 00034 INIT, 00035 READY, 00036 PROCESSING, 00037 FINISHED 00038 }; 00039 00041 ana_processor(); 00042 00044 ~ana_processor(){}; 00045 00047 00051 virtual void set_verbosity(MSG::Level level); 00052 00054 void add_input_file(std::string name){_storage->add_in_filename(name);}; 00055 00057 void set_output_file(std::string name){_storage->set_out_filename(name);}; 00058 00060 void set_ana_output_file(std::string name){_ofile_name=name;}; 00061 00063 void set_io_mode(storage_manager::MODE mode){_storage->set_io_mode(mode);}; 00064 00066 void set_data_to_read(DATA_STRUCT::DATA_TYPE type,bool read=true) 00067 {_storage->set_data_to_read(type,read);}; 00068 00070 void set_data_to_write(DATA_STRUCT::DATA_TYPE type,bool write=true) 00071 {_storage->set_data_to_write(type,write);}; 00072 00074 bool get_ana_status(ana_base* ptr) const; 00075 00077 bool run(UInt_t start_index=0, UInt_t nevents=0); 00078 00080 bool process_event(UInt_t index=0); 00081 00083 size_t add_process(ana_base* ana){_analyzers.push_back(ana); return _analyzers.size()-1;}; 00084 00086 ana_base* get_process(size_t loc){return (_analyzers.size() > loc) ? _analyzers[loc] : 0;}; 00087 00089 PROCESS_FLAG get_process_status() {return _process;}; 00090 00091 private: 00092 00094 void reset(); 00095 00097 bool initialize(); 00098 00100 bool finalize(); 00101 00102 std::vector<ana_base*> _analyzers; 00103 std::map<ana_base*,bool> _ana_status; 00104 00105 PROCESS_FLAG _process; 00106 UInt_t _nevents; 00107 UInt_t _index; 00108 std::string _ofile_name; 00109 TFile* _fout; 00110 storage_manager* _storage; 00111 00112 }; 00113 #endif 00114 // end of doxygen group
1.4.7