BOSS 8.0.0
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:Andre.dos.Anjos@cern.ch>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 <cstdlib>
17#include <fstream>
18#include <iostream>
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 using namespace eformat;
32
33 if ( argc != 2 )
34 {
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 {
43 std::cerr << "File `" << argv[1] << "' does not exist?!" << std::endl;
44 std::exit( 1 );
45 }
46 uint32_t* event = new uint32_t[MAX_EVENT_SIZE];
47 uint32_t sevent = 0;
48 while ( in.good() && !in.eof() && sevent != 0xaa1234aa ) { in.read( (char*)&sevent, 4 ); }
49 if ( sevent == 0xaa1234aa ) in.seekg( in.tellg() - (std::streampos)4 );
50 else exit( 1 );
51 // for (int i = 0; i < 100; i++) {
52 // in.read((char*)&sevent, 4);
53 // std::cout << std::hex << sevent << std::endl;
54 // }
55
56 while ( true )
57 {
58
59 if ( !( next_fragment( in, event, MAX_EVENT_SIZE * 4 ) ) ) break;
60
61 try
62 {
64 fe.check_tree();
65 // if check is ok, print the lvl1 identifier
66 std::cout << "Event " << fe.lvl1_id() << " is Ok." << std::endl;
67 } catch ( eformat::Issue& ex )
68 {
69 std::cerr << std::endl << "Uncaught eformat issue: " << ex.what() << std::endl;
70 std::cout << "Trying to continue..." << std::endl;
71 continue;
72 } catch ( ers::Issue& ex )
73 {
74 std::cerr << std::endl << "Uncaught ERS issue: " << ex.what() << std::endl;
75 delete[] event;
76 std::exit( 1 );
77 } catch ( std::exception& ex )
78 {
79 std::cerr << std::endl << "Uncaught std exception: " << ex.what() << std::endl;
80 delete[] event;
81 std::exit( 1 );
82 } catch ( ... )
83 {
84 std::cerr << std::endl << "Uncaught unknown exception" << std::endl;
85 delete[] event;
86 std::exit( 1 );
87 }
88 }
89
90 delete[] event;
91 return 0;
92}
const size_t MAX_EVENT_SIZE
Definition check-old.cxx:26
Root Issue class.
const char * what() const
Human description message.
uint32_t * next_fragment(std::fstream &fs, uint32_t *addr=0, size_t size=0)
Definition util.cxx:24
int main()
Definition phokhara.cc:42