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