BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
check.cxx
Go to the documentation of this file.
1//Dear emacs, this is -*- c++ -*-
2
3/**
4 * @file test/check.cxx
5 * @author <a href="mailto:[email protected]>Andr� Rabello dos
6 * ANJOS</a>
7 * $Author: zhangy $
8 * $Revision: 1.1.1.1 $
9 * $Date: 2009/06/19 07:35:41 $
10 *
11 * This source code describes a small test program based on the eformat
12 * library. It will read a file containing complete events and check the
13 * format correctness.
14 */
15
16#include <fstream>
17#include <iostream>
18#include <cstdlib>
19
20#include "eformat/eformat.h"
21
22/**
23 * The maximum event size, in words
24 */
25const size_t MAX_EVENT_SIZE = 2500000;
26
27/**
28 * Reads a file and check its validity (for the time being)
29 */
30int main (int argc, char** argv)
31{
32 using namespace eformat;
33
34 if ( argc != 2 ) {
35 std::cerr << "usage: " << argv[0] << " <file>" << std::endl;
36 std::exit(1);
37 }
38
39 //open normally a file
40 std::fstream in(argv[1], std::ios::in|std::ios::binary);
41 if (!in) {
42 std::cerr << "File `" << argv[1] << "' does not exist?!" << std::endl;
43 std::exit(1);
44 }
45 uint32_t* event = new uint32_t[MAX_EVENT_SIZE];
46 uint32_t sevent = 0;
47 while(in.good() && !in.eof() && sevent != 0xaa1234aa) {
48 in.read((char*)&sevent, 4);
49 }
50 if (sevent == 0xaa1234aa) in.seekg(in.tellg()-(std::streampos)4);
51 else exit(1);
52 //for (int i = 0; i < 100; i++) {
53 // in.read((char*)&sevent, 4);
54 // std::cout << std::hex << sevent << std::endl;
55 //}
56
57 while (true) {
58
59 if (!(next_fragment(in, event, MAX_EVENT_SIZE*4))) break;
60
61 try {
63 fe.check_tree();
64 //if check is ok, print the lvl1 identifier
65 std::cout << "Event " << fe.lvl1_id() << " is Ok." << std::endl;
66 }
67 catch (eformat::Issue& ex) {
68 std::cerr << std::endl
69 << "Uncaught eformat issue: " << ex.what() << std::endl;
70 std::cout << "Trying to continue..." << std::endl;
71 continue;
72 }
73 catch (ers::Issue& ex) {
74 std::cerr << std::endl
75 << "Uncaught ERS issue: " << ex.what() << std::endl;
76 delete[] event;
77 std::exit(1);
78 }
79 catch (std::exception& ex) {
80 std::cerr << std::endl
81 << "Uncaught std exception: " << ex.what() << std::endl;
82 delete[] event;
83 std::exit(1);
84 }
85 catch (...) {
86 std::cerr << std::endl << "Uncaught unknown exception" << std::endl;
87 delete[] event;
88 std::exit(1);
89 }
90
91 }
92
93 delete[] event;
94 return 0;
95}
const size_t MAX_EVENT_SIZE
Definition: check.cxx:25
Root Issue class.
const char * what() const
Human description message.
Includes all entities from the Event Format Library (eformat)
int main()
Definition: test_IFile.cxx:11