9 #include <rawdata/modules/PrintData.h>
10 #include <rawdata/dataobjects/RawPXD.h>
11 #include <framework/core/InputController.h>
38 setDescription(
"Encode DataStore into RingBuffer");
40 m_compressionLevel = 0;
41 B2INFO(
"PrintData: Constructor done.");
46 for (
int i = 0; i < 10; i++) hist[ i ] = NULL;
47 for (
int i = 0; i < 1000; i++) prev_tv_eve[ i ] = 0;
49 for (
int i = 0; i < 1000; i++) tv_flag[ i ] = 0;
55 PrintDataModule::~PrintDataModule()
59 void PrintDataModule::initialize()
62 B2INFO(
"PrintData: initialize() started.");
70 B2INFO(
"PrintData: initialize() done.");
82 sprintf(title,
"Event Number");
83 sprintf(hname,
"h_00");
87 hist[ 0 ] =
new TH1F(hname, title, size, min, max);
88 sprintf(title,
"Size per COPPER");
89 sprintf(hname,
"h_01");
93 hist[ 1 ] =
new TH1F(hname, title, size, min, max);
94 sprintf(title,
"nodeid");
95 sprintf(hname,
"h_02");
99 hist[ 2 ] =
new TH1F(hname, title, size, min, max);
100 sprintf(hname,
"h_03");
101 sprintf(title,
"event rate");
105 hist[ 3 ] =
new TH1F(hname, title, size, min, max);
106 sprintf(hname,
"h_04");
107 sprintf(title,
"time difference");
111 hist[ 4 ] =
new TH1F(hname, title, size, min, max);
112 sprintf(title,
"time difference");
116 sprintf(hname,
"h_05");
117 hist[ 5 ] =
new TH1F(hname, title, size, min, max);
118 sprintf(hname,
"h_06");
119 hist[ 6 ] =
new TH1F(hname, title, size, min, max);
120 sprintf(hname,
"h_07");
121 hist[ 7 ] =
new TH1F(hname, title, size, min, max);
122 sprintf(hname,
"h_08");
123 hist[ 8 ] =
new TH1F(hname, title, size, min, max);
124 sprintf(hname,
"h_09");
125 hist[ 9 ] =
new TH1F(hname, title, size, min, max);
129 void PrintDataModule::endRun()
132 TFile f(
"temp.root",
"RECREATE");
135 for (
int i = 0; i < 10 ; i++) {
151 void PrintDataModule::printBuffer(
int* buf,
int nwords)
154 for (
int j = 0; j < nwords; j++) {
155 printf(
" %.8x", buf[ j ]);
156 if ((j + 1) % 10 == 0) {
168 void PrintDataModule::printFTSWEvent(
RawDataBlock* raw_datablock,
int i)
172 printf(
"*******FTSW data**********: nwords %d\n", nwords);
173 printBuffer(buf, nwords);
180 rawftsw.
SetBuffer(buf, nwords, delete_flag, num_event, num_nodes);
186 printf(
"eve %u TLU %d: %d %d %.8x: tv %d %d\n",
192 (
int)(tv.tv_sec), (
int)(tv.tv_usec)
201 void PrintDataModule::printCOPPEREvent(
RawCOPPER* raw_copper,
int n,
int array_index)
207 unsigned int eve = raw_copper->
GetEveNo(n);
209 if (array_index == 0 && n == 0) {
213 if (hist[3]->GetEntries() == 0) {
218 prev_tv[ prev_tv_pos ] = tv;
219 prev_tv_eve[ prev_tv_pos ] = eve;
220 tv_flag[ prev_tv_pos ] = 0;
224 for (
int i = 0; i < prev_tv_pos ; i++) {
225 if ((
int)(eve - prev_tv_eve[ i ]) == 1) {
226 float diff = (float)(tv.tv_sec - prev_tv[ i ].tv_sec) + (float)(tv.tv_usec - prev_tv[ i ].tv_usec) * 1.e-6 ;
227 hist[ 4 ]->Fill(diff);
228 hist[ 5 ]->Fill(diff);
230 tv_flag[ prev_tv_pos - 1 ] |= 0x1;
232 if ((
int)(eve - prev_tv_eve[ i ]) == -1) {
233 float diff = (float)(tv.tv_sec - prev_tv[ i ].tv_sec) + (float)(tv.tv_usec - prev_tv[ i ].tv_usec) * 1.e-6 ;
234 hist[ 4 ]->Fill(-diff);
235 hist[ 5 ]->Fill(-diff);
237 tv_flag[ prev_tv_pos - 1 ] |= 0x2;
241 for (
int i = 0; i < prev_tv_pos ; i++) {
242 if (tv_flag[ i ] == 3) {
243 for (
int j = i; j < prev_tv_pos - 1 ; j++) {
244 prev_tv[ j ] = prev_tv[ j + 1 ];
245 prev_tv_eve[ j ] = prev_tv_eve[ j + 1 ];
246 tv_flag[ j ] = tv_flag[ j + 1 ];
252 if (eve % 10000 == 0) printf(
"1 %d %d\n", (
int)(tv.tv_sec) - 1422134556, (
int)eve);
253 if (prev_tv_pos > 100) {
254 for (
int i = 0; i < prev_tv_pos ; i++) {
255 printf(
" a %d %u %d\n", i, prev_tv_eve[i ], tv_flag[ i ]);
263 hist[ 3 ]->Fill((
float)(raw_copper->
GetTTUtime(n) - m_start_utime));
266 hist[ 0 ]->Fill((
float)(eve));
268 hist[ 2 ]->Fill((
float)(raw_copper->
GetNodeID(n) & 0xFFF));
271 for (
int i = 0; i < 4; i++) {
314 void PrintDataModule::printPXDEvent(
RawPXD* raw_pxd)
316 printf(
": block size %d bytes : bebafeca = %04x :\n",
317 (
int)raw_pxd->
size(), raw_pxd->
data()[0]);
318 printf(
"******* Raw PXD data block (including Detector Buffer) **********\n");
319 printBuffer(raw_pxd->
data(), raw_pxd->
size());
322 void PrintDataModule::event()
325 B2INFO(
"aPrintData: event() started.");
328 for (
int i = 0; i < raw_eclarray.
getEntries(); i++) {
329 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
331 printCOPPEREvent(raw_eclarray[ i ], j, i);
Read RawCOPPER objects and shows their hex dump.
The Raw COPPER class This class stores data received by COPPER via belle2linkt Data from all detector...
The RawDataBlock class Base class for rawdata handling.
virtual int * GetBuffer(int n)
get nth buffer pointer
virtual int GetBlockNwords(int n)
get size of a data block
unsigned int GetFTSWNodeID(int n)
Get Node # ( should be "TTD " )
unsigned int GetEveNo(int n)
Get event #.
int Get15bitTLUTag(int n)
DESY test only.
int GetNwordsHeader(int n)
Get # of words of header.
void GetTTTimeVal(int n, struct timeval *tv)
Get timeval from ctime and utime.
void SetBuffer(int *bufin, int nwords, int delete_flag, int num_events, int num_nodes) OVERRIDE_CPP17
set buffer ( delete_flag : m_buffer is freeed( = 0 )/ not freeed( = 1 ) in Destructer )
virtual int * data(void)
get pointer to data
virtual int size() const
get size of buffer in 32 Bit words
Accessor to arrays stored in the data store.
int getEntries() const
Get the number of objects in the array.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
unsigned int GetEveNo(int n)
get subrun #(8bit)
unsigned int GetTTUtime(int n)
Check if COPPER Magic words are correct.
int Get1stFINESSENwords(int n)
get data size of FINESSE slot A buffer
void GetTTTimeVal(int n, struct timeval *tv)
Get timeval.
unsigned int GetNodeID(int n)
get node-ID from data
Abstract base class for different kinds of events.