ATLAS Offline Software
Loading...
Searching...
No Matches
DumpFrags.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
9
10#ifndef BYTESTREAMCNVSVC_DUMPFRAGS_H
11#define BYTESTREAMCNVSVC_DUMPFRAGS_H
12
13
14#include <iostream>
16
18{
19public:
21 static void dump(const RawEvent* re)
22 {
23 std::cout << " ---FullEventFragment run number = "
24 << re->run_no() << " Size = " << re->fragment_size_word() << std::endl;
25
26 std::cout<<" Global id "<<re->global_id()<<std::endl;
27 std::cout<<" Run type "<<re->run_type()<<std::endl;
28 std::cout<<" Lumi block "<<re->lumi_block()<<std::endl;
29 std::cout<<" level 1 id "<<re->lvl1_id()<<std::endl;
30 std::cout<<" Bunch crossing id "<<re->bc_id()<<std::endl;
31 std::cout<<" Bunch crossing time in seconds "<<re->bc_time_seconds()<<std::endl;
32 std::cout<<" Bunch crossing time nanoseconds offset "<<re->bc_time_nanoseconds()<<std::endl;
33 std::cout<<" Level 1 trigger type "<<re->lvl1_trigger_type()<<std::endl;
34
36 re->lvl1_trigger_info(buffer) ;
37 uint32_t n = re->nlvl1_trigger_info() ;
38 std::cout << " Lvl1 trigger info , size = " <<n <<std::endl;
39
40 for(uint32_t i=0;i<n;++i) {
41 std::cout << " "<< *buffer;
42 ++buffer;
43 }
44
45 std::cout << std::endl;
46
47 re->lvl2_trigger_info(buffer) ;
48 n = re->nlvl2_trigger_info() ;
49 std::cout << " Lvl2 trigger info, size = " <<n <<std::endl;
50
51 for(uint32_t i=0;i<n;++i) {
52 std::cout << " "<< *buffer;
53 ++buffer;
54 }
55 std::cout << std::endl;
56
57 re->event_filter_info(buffer) ;
58 n = re->nevent_filter_info() ;
59 std::cout << " event filter trigger info, size = " <<n <<std::endl;
60
61 for(uint32_t i=0;i<n;++i) {
62 std::cout << " "<< *buffer;
63 ++buffer;
64 }
65 std::cout << std::endl;
66
67
68 // get all the ROBFragments
69 const size_t MAX_ROBFRAGMENTS = 2048;
70 std::vector<OFFLINE_FRAGMENTS_NAMESPACE::PointerType> robF(MAX_ROBFRAGMENTS);
72 re->start(rePointer);
73 size_t robcount = re->children(robF.data(),MAX_ROBFRAGMENTS);
74 if (robcount == MAX_ROBFRAGMENTS)
75 {
76 std::cout << "ERROR : ROB buffer overflow" << std::endl;
77 }
78
79 // loop over all ROBs
80 for (size_t irob=0; irob<robcount; ++irob)
81 {
82 // add to the map
84
85 std::cout << " ROBFragment, src ID ="
86 << std::hex << rob.source_id()
87 << " size_word =" << rob.fragment_size_word() << std::endl;
88
89 // dump ROD
90 std::cout << " RODFragment, src ID ="
91 << std::hex << rob.rod_source_id()
92 << " size_word =" << rob.rod_fragment_size_word() << std::endl;
93 std::cout << " RODFragment, run number ="
94 << std::dec << rob.rod_run_no() << std::endl;
95
96 if (rob.rod_fragment_size_word() >= rob.rod_header_size_word() + rob.rod_trailer_size_word()) {
98 rob.rod_data(rodPointer);
99 for(size_t i=0; i<rob.rod_ndata(); ++i)
100 {
101 if (i%10 == 0) std::cout << std::endl << " ";
102 std::cout << std::hex<< *rodPointer << " " ;
103 ++rodPointer;
104 }
105 std::cout << std::endl << " Number of words in ROD = "
106 << rob.rod_ndata() << std::endl;
107 } else {
108 std::cout << std::endl << "WARNING : ROD has unexpected data size "
109 << rob.rod_ndata() << " and RODFragment size_word is too small!" << std::endl;
110 }
111 }
112 }
113};
114
115#endif // BYTESTREAMCNVSVC_DUMPFRAGS_H
116
const boost::regex re(r_e)
static const size_t MAX_ROBFRAGMENTS
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition RawEvent.h:37
Dump eformat fragments from FullEventFragment.
Definition DumpFrags.h:18
static void dump(const RawEvent *re)
dump fragments from FullEventFragment
Definition DumpFrags.h:21
const DataType * PointerType
Definition RawEvent.h:25
eformat::ROBFragment< PointerType > ROBFragment
Definition RawEvent.h:27