Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include <packet_gl1psum.h>
0002 #include <buffer.h>
0003 
0004 Packet_gl1psum::Packet_gl1psum(PACKET_ptr data)
0005   : Packet_w4(data)
0006 {
0007 }
0008 
0009 Packet_gl1psum::~Packet_gl1psum()
0010 {
0011 }
0012 
0013 int *Packet_gl1psum::decode ( int *nwout)
0014 {
0015   int *p,*k, *from;
0016   int i;
0017   p = new int[11];
0018 
0019   from = (int *)  findPacketDataStart(packet);
0020   
0021   k = p;
0022   if ( getHitFormat() == IDGL1PSUMOBS) 
0023     {
0024       for (i =0; i<11; i++) *k++ = buffer::i4swap(from[i]);
0025     }
0026   else
0027     {
0028       for (i =0; i<11; i++) *k++ = from[i];
0029     }
0030 
0031   p[0] = p[0] & 0xFF;
0032   p[1] = ( p[1] &0xF)+((p[1]>>4)&0x7)*15; 
0033 
0034   
0035   *nwout = 11;
0036   return p;
0037 }
0038 
0039 int Packet_gl1psum::iValue(const int ich)
0040 {
0041   if (ich < 0 || ich >= 8) return 0;
0042   
0043   if ( decoded_data1 ==0 ) decoded_data1 = decode(&data1_length);
0044   
0045   return decoded_data1[ich+2];
0046 }
0047 
0048 
0049 
0050 int Packet_gl1psum::iValue(const int ich, const char *what)
0051 {
0052   
0053   
0054   if ( decoded_data1 ==0 ) decoded_data1 = decode(&data1_length);
0055   
0056   if (!strcmp(what,"EVTNR"))
0057     {
0058     return decoded_data1[0] ;
0059     }
0060 
0061   else if (!strcmp(what,"BEAMCROSSID"))
0062     {
0063     return decoded_data1[1];
0064     }
0065   else if (!strcmp(what,"CROSSCTR"))
0066     {
0067     return decoded_data1[10];
0068     }
0069   else return 0;
0070 
0071 }
0072 
0073 
0074 void Packet_gl1psum::dump ( OSTREAM &os)
0075 {
0076 
0077   int i;
0078 
0079 
0080   this->identify(os); 
0081   os << "Evt number:       " << (unsigned int) iValue(0,"EVTNR") << std::endl;
0082   os << "Crossing ID:      " << (unsigned int) iValue(0, "BEAMCROSSID") << std::endl;
0083   os << "Crossing Counter: " << (unsigned int) iValue(0, "CROSSCTR") << std::endl;
0084   
0085   for ( i = 0; i < 4; i++) 
0086     {
0087       os << std::setw(12) << iValue(i) << "  ";
0088     }
0089   os << std::endl;
0090 
0091   for ( i = 4; i < 8; i++) 
0092     {
0093       os << std::setw(12) << iValue(i) << "  ";
0094     }
0095   os << std::endl << std::endl;
0096 
0097 }
0098