Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #ifndef __PACKET_CDEVPOLARIMETER_H__
0002 #define __PACKET_CDEVPOLARIMETER_H__
0003 
0004 #include <packet_w124.h>
0005 
0006 /**
0007    This is the packet decoding the CDEV polarimeter data.
0008    It inherits from Packet\_w4 because the data are 32bit entities.
0009 */
0010 #ifndef __CINT__
0011 class WINDOWSEXPORT Packet_cdevpolarimeter : public Packet_w4 {
0012 #else
0013 class  Packet_cdevpolarimeter : public Packet_w4 {
0014 #endif
0015 
0016 public:
0017   Packet_cdevpolarimeter(PACKET_ptr);
0018 
0019   /**
0020 Because the polarimeter data are a mixture of all kind of data,
0021 the only supported interface is the 
0022 \begin{verbatim}
0023  packet->rValue(i,"WHAT") 
0024 \end{verbatim}
0025 call, which returns a float value (most of the parameters are delivered as floats
0026 from RHIC).
0027 
0028 As a rule of thumb, if a field is just a single value, such as "avgAsymXS", then
0029 the "i" parameter is ignored, so just p->rValue(0,"avgAsymXS") will do.
0030 
0031 For the arrays, such as "encoderPositionS" (array of 2)  or "bunchAsymXS" (array of 360),
0032 the index has to be in the right range, 0 or 1, or 0<= i < 360, respectively.
0033 
0034 If an array is out of bounds, or the keyword is not recognized, the call returns 0.
0035 
0036 Here are the keywords, which are just the (somewhat cryptic at times) names of the 
0037 fields assigned by CA:
0038 
0039 \begin{verbatim}
0040 
0041  "m_cdevCaptureTimeStamp"
0042  "runIdS"
0043  "startTimeS"
0044  "stopTimeS"
0045  "encoderPositionS"       (array of 2)
0046  "statusS"
0047  "totalCountsS"
0048  "upCountsS"
0049  "downCountsS"
0050  "unpolCountsS"
0051  "avgAsymXS"
0052  "avgAsymX45S"
0053  "avgAsymX90S"
0054  "avgAsymYS"
0055  "avgAsymErrorXS"
0056  "avgAsymErrorX45S"
0057  "avgAsymErrorX90S"
0058  "avgAsymErrorYS"
0059  "beamEnergyS"
0060  "analyzingPowerS"
0061  "analyzingPowerErrorS"
0062  "numberEventsS"
0063  "maxTimeS"
0064  "polarizationM"
0065  "bunchAsymXS"               (array of 360)
0066  "bunchAsymYS"               (array of 360)
0067  "bunchAsymErrorXS"          (array of 360)
0068  "bunchAsymErrorYS"          (array of 360)
0069  "countsUpLeftS"             (array of 360)
0070  "countsLeftS"               (array of 360)
0071  "countsDownLeftS"           (array of 360)
0072  "countsDownRightS"          (array of 360)
0073  "countsRightS"              (array of 360)
0074  "countsUpRightS"            (array of 360)
0075 \end{verbatim}
0076 
0077 
0078   */
0079  
0080 
0081 
0082   double   dValue(const int channel,const char *what);
0083   float    rValue(const int channel,const char *what);
0084   int      iValue(const int channel,const char *what);
0085 
0086 
0087   void  dump ( OSTREAM& ) ;
0088   
0089 protected:
0090   virtual int *decode (int *);
0091   struct cdevPolarimeterData *ps;
0092   int haspoldata;
0093 
0094 };
0095 
0096 #endif /* __PACKET_CDEVPOLARIMETER_H__ */