#include "DataFormat-TypeDef.hh"
Go to the source code of this file.
Functions | |
int | main () |
int main | ( | ) |
Definition at line 3 of file test_simple_io.cc.
References larlight::storage_manager::add_in_filename(), larlight::storage_manager::close(), larlight::DATA::DATA_TREE_NAME, larlight::DATA::DATA_TYPE_MAX, larlight::MSG::ERROR, larlight::DATA::Event, larlight::storage_manager::get_data(), larlight::DATA::MCNeutrino, larlight::DATA::MCTrajectory, larlight::storage_manager::next_event(), larlight::MSG::NORMAL, larlight::storage_manager::open(), larlight::storage_manager::READ, larlight::storage_manager::reset(), larlight::DATA::Seed, larlight::Message::send(), larlight::storage_manager::set_io_mode(), larlight::storage_manager::set_out_filename(), larlight::larlight_base::set_verbosity(), and larlight::storage_manager::WRITE.
00004 { 00005 00006 // 00007 // This is a simple routine to test I/O. 00008 // 00009 00010 // (1) Open file and write 10 events of various data type 00011 00012 const std::string test_fname("from_io_test_you_can_remove_me.root"); 00013 00014 larlight::storage_manager man; 00015 man.set_io_mode(man.WRITE); 00016 man.set_out_filename(test_fname); 00017 man.set_verbosity(larlight::MSG::NORMAL); 00018 00019 int nevents_written[larlight::DATA::DATA_TYPE_MAX]={0}; 00020 00021 std::cout 00022 << std::endl 00023 << "test routine event loop starts here..." << std::endl 00024 << std::endl; 00025 00026 man.open(); 00027 for(int i=0; i<10; i++) { 00028 00029 for(int j=0; j<larlight::DATA::DATA_TYPE_MAX; ++j) { 00030 00031 if( j == larlight::DATA::Seed || 00032 j == larlight::DATA::Event || 00033 j == larlight::DATA::MCTrajectory || 00034 j == larlight::DATA::MCNeutrino || 00035 j == larlight::DATA::DATA_TYPE_MAX ) 00036 00037 continue; 00038 man.get_data((larlight::DATA::DATA_TYPE)j); 00039 00040 nevents_written[j]++; 00041 } 00042 00043 man.next_event(); 00044 00045 } 00046 00047 man.close(); 00048 man.reset(); 00049 00050 std::cout 00051 << std::endl 00052 << "First event loop finished & file closed." 00053 << std::endl; 00054 00055 for(int i=0; i<larlight::DATA::DATA_TYPE_MAX; ++i) { 00056 00057 if(nevents_written[i]) 00058 00059 std::cout 00060 << Form("Written %s_tree with %d events", 00061 larlight::DATA::DATA_TREE_NAME[i].c_str(), 00062 nevents_written[i]) 00063 << std::endl; 00064 } 00065 std::cout << std::endl; 00066 00067 // (2) Alright now let's test reading what was written. 00068 man.set_io_mode(man.READ); 00069 man.add_in_filename(test_fname); 00070 00071 std::cout 00072 << "Now attempting to read what is written." << std::endl 00073 << std::endl; 00074 00075 man.open(); 00076 while(man.next_event()) { 00077 00078 for(int i=0; i<larlight::DATA::DATA_TYPE_MAX; ++i) { 00079 00080 larlight::event_base* my_event_data = man.get_data((larlight::DATA::DATA_TYPE)i); 00081 00082 if(my_event_data) 00083 00084 nevents_written[i]-=1; 00085 00086 } 00087 00088 } 00089 00090 man.close(); 00091 00092 std::cout 00093 << std::endl 00094 << "Finished read event loop and closed file." << std::endl 00095 << "Check the following block for an error message." << std::endl 00096 << "//********************************************//" 00097 << std::endl; 00098 00099 for(int i=0; i<larlight::DATA::DATA_TYPE_MAX; ++i) { 00100 00101 if(nevents_written[i]>0) 00102 00103 larlight::Message::send(larlight::MSG::ERROR, 00104 Form("TTree, \"%s_tree\", has more entries (+%d) than expected!", 00105 larlight::DATA::DATA_TREE_NAME[i].c_str(), 00106 nevents_written[i])); 00107 00108 else if(nevents_written[i]<0) 00109 00110 larlight::Message::send(larlight::MSG::ERROR, 00111 Form("TTree, \"%s_tree\", has less entries (%d) than expected!", 00112 larlight::DATA::DATA_TREE_NAME[i].c_str(), 00113 nevents_written[i])); 00114 00115 } 00116 std::cout 00117 << "//********************************************//" << std::endl 00118 << std::endl 00119 << "End of test routine..." << std::endl 00120 << std::endl; 00121 00122 return 0; 00123 }