Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include <packet_cdevbpm.h>
0002 #include <time.h>
0003 
0004 Packet_cdevbpm::Packet_cdevbpm(PACKET_ptr data)
0005   : Packet_w4 (data)
0006 {
0007   ps = 0;
0008 }
0009   
0010 int *Packet_cdevbpm::decode ( int *nwout)
0011 {
0012 
0013   if (ps != 0) return 0; 
0014 
0015   int il = getDataLength();
0016 
0017   no_structures = 4* il / sizeof ( struct cdevBPMData );
0018   std::cout << "no_structures = " << no_structures << std::endl;
0019   int *k = (int *) findPacketDataStart(packet);
0020   if (k == 0) 
0021     {
0022       ps = 0;
0023       *nwout = 0;
0024       return 0;
0025     }
0026 
0027   ps = ( struct cdevBPMData *) k;
0028 
0029 
0030 
0031   // no byte swat for floats
0032   //fix_endianess ( ps->avgOrbTimeStamp);
0033   //fix_endianess ( ps->avgOrbPosition);
0034   //fix_endianess ( ps->avgOrbVariance);
0035   //fix_endianess ( ps->avgOrbStat);
0036 
0037 
0038   *nwout = 0;
0039 
0040   return 0;
0041 }
0042 
0043 
0044 // ------------------------------------------------------
0045 
0046 
0047 void Packet_cdevbpm::dump ( OSTREAM &os) 
0048 {
0049 
0050   int i;
0051 
0052   decode (&i);
0053 
0054   this->identify(os);
0055 
0056   os << "Number of readings: " << iValue(0,"NOREADINGS") << std::endl;
0057   
0058   os << "index      ";
0059   os << "avgOrbTimeStamp " ;
0060   os << "avgOrbPosition  " ;
0061   os << "argOrbVariance  " ;
0062   os << "argOrbStat      " << std::endl;
0063 
0064   for ( i = 0; i < iValue(0,"NOREADINGS") ; i++)
0065     {
0066       os << std::setw(4 ) << i ;
0067       os << std::setw(16) << iValue(i,"avgOrbTimeStamp") ;
0068       os << std::setw(16) << rValue(i,"avgOrbPosition") ;
0069       os << std::setw(16) << rValue(i,"avgOrbVariance") ;
0070       os << std::setw(16) << rValue(i,"avgOrbStat");
0071       os << std::endl;
0072     }
0073 
0074 
0075 
0076   dumpErrorBlock(os);
0077   dumpDebugBlock(os);
0078 }
0079 //-------------------------------------------------------------
0080 
0081 int   Packet_cdevbpm::iValue(const int ich, const char *what)
0082 {
0083 
0084   //  std::cout << "IN  Packet_cdevbpm::rValue " << std::endl;
0085   int i;
0086   decode (&i);
0087 
0088   if ( ich < 0 || ich >= no_structures ) return 0;
0089 
0090 // Unix time
0091   if ( strcmp(what, "NOREADINGS") == 0 ) return   no_structures ;
0092   if ( strcmp(what, "avgOrbTimeStamp") == 0 ) return   ps[ich].avgOrbTimeStamp ;
0093   if ( strcmp(what, "datavalidMask") == 0 ) return   ps[ich].datavalidMask ;
0094 
0095   std::cout << "packet_cdevbpm::iValue error unknown datum: " << what << std::endl;
0096   return 0;
0097 }
0098 
0099 
0100 float   Packet_cdevbpm::rValue(const int ich, const char *what)
0101 {
0102 
0103 
0104   //  std::cout << "IN  Packet_cdevbpm::rValue " << std::endl;
0105   int i;
0106   decode (&i);
0107 
0108   if ( ich < 0 || ich >= no_structures ) return 0;
0109 
0110 
0111   if ( strcmp(what, "avgOrbPosition")  == 0 ) return   ps[ich].avgOrbPosition ;    
0112   if ( strcmp(what, "avgOrbVariance")  == 0 ) return   ps[ich].avgOrbVariance ; 
0113   if ( strcmp(what, "avgOrbStat") == 0 ) return   ps[ich].avgOrbStat;
0114 
0115   std::cout << "packet_cdevbpm::rValue error unknown datum: " << what << std::endl;
0116   return 0;
0117   
0118 
0119   
0120 }
0121 
0122