Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:42

0001  
0002 
0003 #include "buffer.h"
0004 #include <cstdio>
0005 #include <iostream>
0006 #include <iomanip>
0007 #include <cstdlib>
0008 #include <csignal>
0009 
0010 #include <unistd.h>
0011 #include <sys/types.h>
0012 #include <sys/stat.h>
0013 #include <fcntl.h>
0014 
0015 
0016 
0017 void exitmsg()
0018 {
0019   std::cout << "** usage: prdfcheck [-v] file name" << std::endl;
0020   exit(0);
0021 }
0022 
0023 
0024 int 
0025 main(int argc, char *argv[])
0026 {
0027 
0028   unsigned int buffer[8*8192];
0029 
0030   int fd;
0031 
0032   fd = open(argv[1], O_RDONLY | O_LARGEFILE);
0033 
0034   int needs_swap = 0;
0035   int length;
0036   int ip;
0037 
0038   int total_read = 0;
0039 
0040   int xc;
0041 
0042   xc = read ( fd, (char *)buffer, 8192);
0043   //  total_read++;
0044   while ( xc == 8192 )
0045     {
0046  
0047       ip = 8192;
0048 
0049 
0050       if ( buffer[1] == BUFFERMARKER || 
0051        buffer::u4swap(buffer[1]) == BUFFERMARKER || 
0052        buffer[1] == ONCSBUFFERMARKER || 
0053        buffer::u4swap(buffer[1]) == ONCSBUFFERMARKER ||
0054        buffer[1] == GZBUFFERMARKER || 
0055        buffer::u4swap(buffer[1]) ==  GZBUFFERMARKER ||
0056        buffer[1] == LZO1XBUFFERMARKER || 
0057        buffer::u4swap(buffer[1]) == LZO1XBUFFERMARKER ||
0058        buffer[1] == LZO1CBUFFERMARKER || 
0059        buffer::u4swap(buffer[1]) == LZO1CBUFFERMARKER ||
0060        buffer[1] == LZO2ABUFFERMARKER || 
0061        buffer::u4swap(buffer[1]) == LZO2ABUFFERMARKER ||
0062        buffer[1] == BZ2BUFFERMARKER || 
0063        buffer::u4swap(buffer[1]) == BZ2BUFFERMARKER )
0064     {
0065 
0066 
0067       if ( buffer::u4swap(buffer[1]) == BUFFERMARKER || 
0068            buffer::u4swap(buffer[1]) == ONCSBUFFERMARKER ||
0069            buffer::u4swap(buffer[1]) == GZBUFFERMARKER ||
0070            buffer::u4swap(buffer[1]) == LZO1XBUFFERMARKER ||
0071            buffer::u4swap(buffer[1]) == LZO1CBUFFERMARKER ||
0072            buffer::u4swap(buffer[1]) == LZO2ABUFFERMARKER ||
0073            buffer::u4swap(buffer[1]) == BZ2BUFFERMARKER )
0074         {
0075           needs_swap = 1;
0076         }
0077 
0078       if (needs_swap)
0079         {
0080           length = buffer::i4swap(buffer[0]);
0081         }
0082       else
0083         {
0084           length = buffer[0];
0085         }
0086 
0087       if ( needs_swap ) 
0088         {
0089           std::cout << "buffer at record " << std::setw(4) << total_read 
0090            << " length = " << std::setw(7) <<  buffer::i4swap(buffer[0]) 
0091             <<  "  " <<     (buffer::i4swap(buffer[0]) + 8192)/8192 
0092             << " marker = " << std::hex <<  buffer::i4swap(buffer[1]) << std::dec << "  ";
0093         }
0094       else
0095         {
0096           std::cout << "buffer at record " << std::setw(4) << total_read 
0097            << " length = " << std::setw(7) << buffer[0] 
0098             << "  " <<  ( buffer[0] + 8192)/8192    
0099             << " marker = " << std::hex << buffer[1] << std::dec << "  ";
0100         }
0101 
0102       if ( buffer[1] == BUFFERMARKER || 
0103            buffer::u4swap(buffer[1]) == BUFFERMARKER ) std::cout << "Uncomp. Marker" << std::endl;
0104       else if ( buffer[1] == ONCSBUFFERMARKER || 
0105             buffer::u4swap(buffer[1]) == ONCSBUFFERMARKER ) std::cout << "sPHENIX Marker" << std::endl;
0106       else if ( buffer[1] == GZBUFFERMARKER || 
0107             buffer::u4swap(buffer[1]) == GZBUFFERMARKER ) std::cout << "GZIP Marker" << std::endl;
0108       else if ( buffer[1] == LZO1XBUFFERMARKER || 
0109             buffer::u4swap(buffer[1]) == LZO1XBUFFERMARKER ||
0110             buffer[1] == LZO1CBUFFERMARKER || 
0111             buffer::u4swap(buffer[1]) == LZO1CBUFFERMARKER || 
0112             buffer[1] == LZO2ABUFFERMARKER || 
0113             buffer::u4swap(buffer[1]) == LZO1CBUFFERMARKER ) 
0114         {
0115           std::cout << "LZO Marker ";
0116           std::cout << " Or.length: " << buffer[3];
0117           float ratio = 100.*buffer[0]/buffer[3];
0118           std::cout << "  " << ratio << "%";
0119 
0120           int e = buffer[2] & 0xffff;
0121           int atp = (buffer[2] >> 16) & 0xffff;
0122           if ( atp) 
0123         {
0124           std::cout << " events: " << e << " from ATP " << atp << std::endl;
0125         }
0126           else
0127         {
0128           std::cout << std::endl;
0129         }
0130         }
0131 
0132       else if ( buffer[1] == BZ2BUFFERMARKER || 
0133             buffer::u4swap(buffer[1]) == BZ2BUFFERMARKER )
0134         {
0135           std::cout << "BZ2 Marker ";
0136           std::cout << " Or.length: " << buffer[3];
0137           float ratio = 100.*buffer[0]/buffer[3];
0138           std::cout << "  " << ratio << "%";
0139 
0140           int e = buffer[2] & 0xffff;
0141           int atp = (buffer[2] >> 16) & 0xffff;
0142           if ( atp) 
0143         {
0144           std::cout << " events: " << e << " from ATP " << atp << std::endl;
0145         }
0146           else
0147         {
0148           std::cout << std::endl;
0149         }
0150         }
0151 
0152 
0153       while ( ip < length)
0154         {
0155           xc = read ( fd, (char *)buffer, 8192);
0156           if ( xc < 8192 ) 
0157         {
0158           std::cout << "end or error in read loop at rec " << total_read << std::endl;
0159           exit(1);
0160         }
0161           total_read++;
0162           ip+= 8192;
0163         }
0164       xc = read ( fd, (char *)buffer, 8192);
0165       if ( xc < 8192 ) 
0166         {
0167           std::cout << "legitimate end or error at rec " << total_read << std::endl;
0168           exit(1);
0169         }
0170       total_read++;
0171 
0172     }
0173 
0174       else
0175     {
0176       if (needs_swap)
0177         {
0178           std::cout << "found a non-buffer start..."<< total_read 
0179             << " length = " << buffer::u4swap(buffer[0]) << " marker = " << std::hex << buffer::i4swap(buffer[1]) << std::dec ;
0180         }
0181       else
0182         {
0183           std::cout << "found a non-buffer start..."<< total_read 
0184             << " length = " << buffer[0] << " marker = " << std::hex << buffer[1] << std::dec ;
0185         }
0186 
0187       int skipped = 0;
0188       while (  buffer[1] != BUFFERMARKER &&
0189        buffer::u4swap(buffer[1]) != BUFFERMARKER &&
0190        buffer[1] != GZBUFFERMARKER && 
0191        buffer::u4swap(buffer[1]) != GZBUFFERMARKER )
0192         {
0193           xc = read ( fd, (char *)buffer, 8192);
0194           if ( xc < 8192 ) 
0195         {
0196           std::cout << "end or error in salavge loop at rec " << total_read << std::endl;
0197           exit(1);
0198         }
0199           total_read++;
0200           skipped++;
0201         }
0202       std::cout << " Skipped " << skipped << std::endl;
0203     }
0204     }
0205   return 0;
0206 
0207 }
0208