ATLAS Offline Software
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 
10 #ifndef BYTESTREAMCNVSVC_DUMPFRAGS_H
11 #define BYTESTREAMCNVSVC_DUMPFRAGS_H
12 
13 
14 #include <iostream>
16 
17 class DumpFrags
18 {
19 public:
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 
OFFLINE_FRAGMENTS_NAMESPACE::PointerType
const DataType * PointerType
Definition: RawEvent.h:25
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
createCoolChannelIdFile.buffer
buffer
Definition: createCoolChannelIdFile.py:11
OFFLINE_FRAGMENTS_NAMESPACE::DataType
uint32_t DataType
Definition: RawEvent.h:24
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:727
RawEvent.h
DumpFrags
Dump eformat fragments from FullEventFragment.
Definition: DumpFrags.h:18
re
const boost::regex re(r_e)
DumpFrags::dump
static void dump(const RawEvent *re)
dump fragments from FullEventFragment
Definition: DumpFrags.h:21