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 00022 namespace larlight { 00029 class ana_processor : public larlight_base{ 00030 00031 public: 00032 00034 enum PROCESS_FLAG{ 00035 INIT, 00036 READY, 00037 PROCESSING, 00038 FINISHED 00039 }; 00040 00042 ana_processor(); 00043 00045 ~ana_processor(){} 00046 00048 00052 virtual void set_verbosity(MSG::Level level); 00053 00055 void add_input_file(std::string name){_storage->add_in_filename(name);} 00056 00058 void set_input_rootdir(std::string name) {_storage->set_in_rootdir(name);} 00059 00061 void set_output_file(std::string name){_storage->set_out_filename(name);} 00062 00064 void set_ana_output_file(std::string name){_ofile_name=name;} 00065 00067 void set_io_mode(storage_manager::MODE mode){_storage->set_io_mode(mode);} 00068 00070 void set_data_to_read(DATA::DATA_TYPE type,Bool_t read=true) 00071 {_storage->set_data_to_read(type,read);} 00072 00074 Bool_t get_ana_status(ana_base* ptr) const; 00075 00077 Bool_t run(UInt_t start_index=0, UInt_t nevents=0); 00078 00080 Bool_t 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_t initialize(); 00098 00100 Bool_t finalize(); 00101 00102 std::vector<ana_base*> _analyzers; 00103 std::map<ana_base*,Bool_t> _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 } 00114 #endif 00115 // end of doxygen group