8 #include <rawdata/modules/PrintData.h>
9 #include <rawdata/dataobjects/RawPXD.h>
10 #include <framework/core/InputController.h>
37 setDescription(
"Encode DataStore into RingBuffer");
39 m_compressionLevel = 0;
40 B2INFO(
"PrintData: Constructor done.");
45 for (
int i = 0; i < 10; i++) hist[ i ] = NULL;
46 for (
int i = 0; i < 1000; i++) prev_tv_eve[ i ] = 0;
54 PrintDataModule::~PrintDataModule()
58 void PrintDataModule::initialize()
61 B2INFO(
"PrintData: initialize() started.");
69 B2INFO(
"PrintData: initialize() done.");
81 sprintf(title,
"Event Number");
82 sprintf(hname,
"h_00");
86 hist[ 0 ] =
new TH1F(hname, title, size, min, max);
87 sprintf(title,
"Size per COPPER");
88 sprintf(hname,
"h_01");
92 hist[ 1 ] =
new TH1F(hname, title, size, min, max);
93 sprintf(title,
"nodeid");
94 sprintf(hname,
"h_02");
98 hist[ 2 ] =
new TH1F(hname, title, size, min, max);
99 sprintf(hname,
"h_03");
100 sprintf(title,
"event rate");
104 hist[ 3 ] =
new TH1F(hname, title, size, min, max);
105 sprintf(hname,
"h_04");
106 sprintf(title,
"time difference");
110 hist[ 4 ] =
new TH1F(hname, title, size, min, max);
111 sprintf(title,
"time difference");
115 sprintf(hname,
"h_05");
116 hist[ 5 ] =
new TH1F(hname, title, size, min, max);
117 sprintf(hname,
"h_06");
118 hist[ 6 ] =
new TH1F(hname, title, size, min, max);
119 sprintf(hname,
"h_07");
120 hist[ 7 ] =
new TH1F(hname, title, size, min, max);
121 sprintf(hname,
"h_08");
122 hist[ 8 ] =
new TH1F(hname, title, size, min, max);
123 sprintf(hname,
"h_09");
124 hist[ 9 ] =
new TH1F(hname, title, size, min, max);
128 void PrintDataModule::endRun()
131 TFile f(
"temp.root",
"RECREATE");
134 for (
int i = 0; i < 10 ; i++) {
150 void PrintDataModule::printBuffer(
int* buf,
int nwords)
153 for (
int j = 0; j < nwords; j++) {
154 printf(
" %.8x", buf[ j ]);
155 if ((j + 1) % 10 == 0) {
167 void PrintDataModule::printFTSWEvent(
RawDataBlock* raw_datablock,
int i)
171 printf(
"*******FTSW data**********: nwords %d\n", nwords);
172 printBuffer(buf, nwords);
179 rawftsw.
SetBuffer(buf, nwords, delete_flag, num_event, num_nodes);
185 printf(
"eve %d TLU %d: %d %d %.8x: tv %d %d\n",
191 (
int)(tv.tv_sec), (
int)(tv.tv_usec)
200 void PrintDataModule::printCOPPEREvent(
RawCOPPER* raw_copper,
int n,
int array_index)
206 unsigned int eve = raw_copper->
GetEveNo(n);
208 if (array_index == 0 && n == 0) {
212 if (hist[3]->GetEntries() == 0) {
217 prev_tv[ prev_tv_pos ] = tv;
218 prev_tv_eve[ prev_tv_pos ] = eve;
219 tv_flag[ prev_tv_pos ] = 0;
223 for (
int i = 0; i < prev_tv_pos ; i++) {
224 if ((
int)(eve - prev_tv_eve[ i ]) == 1) {
225 float diff = (float)(tv.tv_sec - prev_tv[ i ].tv_sec) + (float)(tv.tv_usec - prev_tv[ i ].tv_usec) * 1.e-6 ;
226 hist[ 4 ]->Fill(diff);
227 hist[ 5 ]->Fill(diff);
229 tv_flag[ prev_tv_pos - 1 ] |= 0x1;
231 if ((
int)(eve - prev_tv_eve[ i ]) == -1) {
232 float diff = (float)(tv.tv_sec - prev_tv[ i ].tv_sec) + (float)(tv.tv_usec - prev_tv[ i ].tv_usec) * 1.e-6 ;
233 hist[ 4 ]->Fill(-diff);
234 hist[ 5 ]->Fill(-diff);
236 tv_flag[ prev_tv_pos - 1 ] |= 0x2;
240 for (
int i = 0; i < prev_tv_pos ; i++) {
241 if (tv_flag[ i ] == 3) {
242 for (
int j = i; j < prev_tv_pos - 1 ; j++) {
243 prev_tv[ j ] = prev_tv[ j + 1 ];
244 prev_tv_eve[ j ] = prev_tv_eve[ j + 1 ];
245 tv_flag[ j ] = tv_flag[ j + 1 ];
251 if (eve % 10000 == 0) printf(
"1 %d %d\n", (
int)(tv.tv_sec) - 1422134556, (
int)eve);
252 if (prev_tv_pos > 100) {
253 for (
int i = 0; i < prev_tv_pos ; i++) {
254 printf(
" a %d %d %d\n", i, prev_tv_eve[i ], tv_flag[ i ]);
262 hist[ 3 ]->Fill((
float)(raw_copper->
GetTTUtime(n) - m_start_utime));
265 hist[ 0 ]->Fill((
float)(eve));
267 hist[ 2 ]->Fill((
float)(raw_copper->
GetNodeID(n) & 0xFFF));
270 for (
int i = 0; i < 4; i++) {
277 printf(
": Event # %d : node ID 0x%.8x : block size %d bytes\n",
283 printf(
"===== Raw COPPER data block(including 4 FINESSE buffers )\n");
308 void PrintDataModule::printPXDEvent(
RawPXD* raw_pxd)
310 printf(
": block size %d bytes : bebafeca = %04x :\n",
311 (
int)raw_pxd->
size(), raw_pxd->
data()[0]);
312 printf(
"******* Raw PXD data block (including Detector Buffer) **********\n");
313 printBuffer(raw_pxd->
data(), raw_pxd->
size());
316 void PrintDataModule::event()
319 B2INFO(
"aPrintData: event() started.");
322 for (
int i = 0; i < raw_eclarray.
getEntries(); i++) {
323 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
325 printCOPPEREvent(raw_eclarray[ i ], j, i);