00001 #include "DataFormat-TypeDef.hh"
00002
00003 int main()
00004 {
00005
00006
00007
00008
00009
00010
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
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 }