Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:01:59

0001 /*
0002  * =====================================================================================
0003  *
0004  *       Filename:  CSCDQM_DCSData.h
0005  *
0006  *    Description:  CSCDQM DCS Objects
0007  *
0008  *        Version:  1.0
0009  *        Created:  05/04/2009 11:20:18 AM
0010  *       Revision:  none
0011  *       Compiler:  gcc
0012  *
0013  *         Author:  Valdas Rapsevicius (VR), valdas.rapsevicius@cern.ch
0014  *        Company:  CERN, CH
0015  *
0016  * =====================================================================================
0017  */
0018 
0019 #ifndef CSCDQM_DCSDATA_H
0020 #define CSCDQM_DCSDATA_H
0021 
0022 #include "CondFormats/Serialization/interface/Serializable.h"
0023 
0024 #include <vector>
0025 
0026 #include "CondFormats/CSCObjects/interface/CSCDQM_DCSBase.h"
0027 
0028 namespace cscdqm {
0029 
0030   /**
0031    * Temperature measurement
0032    */
0033   struct TempMeasType {
0034     DCSAddressType adr;
0035     DCSBoardType board;
0036     unsigned short boardId;
0037     int value;
0038 
0039     friend std::ostream& operator<<(std::ostream& out, const TempMeasType& m) {
0040       std::ostringstream os;
0041       os << m.adr << " ";
0042       os << DCSBoardUtility(m.board);
0043       if (m.board == CFEB) {
0044         os << m.boardId;
0045       }
0046       os << " temp = " << m.value << "oC";
0047       return out << os.str();
0048     }
0049 
0050     COND_SERIALIZABLE;
0051   };
0052 
0053   /**
0054    * HV V measurement
0055    */
0056   struct HVVMeasType {
0057     DCSAddressType adr;
0058     unsigned int position;
0059     int value;
0060 
0061     friend std::ostream& operator<<(std::ostream& out, const HVVMeasType& m) {
0062       std::ostringstream os;
0063       os << m.adr << " ";
0064       os << "position:" << m.position;
0065       os << " V = " << m.value << "V";
0066       return out << os.str();
0067     }
0068 
0069     COND_SERIALIZABLE;
0070   };
0071 
0072   /**
0073    * LV V measurement
0074    */
0075   struct LVVMeasType {
0076     DCSAddressType adr;
0077     DCSBoardType board;
0078     unsigned int boardId;
0079     float nominal_v;
0080 
0081     friend std::ostream& operator<<(std::ostream& out, const LVVMeasType& m) {
0082       std::ostringstream os;
0083       os << m.adr << " ";
0084       os << DCSBoardUtility(m.board);
0085       if (m.board == CFEB) {
0086         os << m.boardId;
0087       }
0088       os << " " << m.nominal_v << "V";
0089       return out << os.str();
0090     }
0091 
0092     COND_SERIALIZABLE;
0093   };
0094 
0095   /**
0096    * LV I measurement
0097    */
0098   struct LVIMeasType {
0099     DCSAddressType adr;
0100     DCSBoardType board;
0101     unsigned int boardId;
0102     float nominal_v;
0103     float value;
0104 
0105     friend std::ostream& operator<<(std::ostream& out, const LVIMeasType& m) {
0106       std::ostringstream os;
0107       os << m.adr << " ";
0108       os << DCSBoardUtility(m.board);
0109       if (m.board == CFEB) {
0110         os << m.boardId;
0111       }
0112       os << " " << m.nominal_v << "V";
0113       os << " " << m.value << "A";
0114       return out << os.str();
0115     }
0116 
0117     COND_SERIALIZABLE;
0118   };
0119 
0120   /**
0121    * @class DCSData
0122    * @brief CSC DCS Data type
0123    */
0124   class DCSData {
0125   public:
0126     DCSData();
0127     virtual ~DCSData();
0128 
0129     /** Temperature exceptions */
0130     std::vector<TempMeasType> temp_meas;
0131 
0132     /** HV V exceptions */
0133     std::vector<HVVMeasType> hvv_meas;
0134 
0135     /** LV V exceptions */
0136     std::vector<LVVMeasType> lvv_meas;
0137 
0138     /** LV I exceptions */
0139     std::vector<LVIMeasType> lvi_meas;
0140 
0141     /** Temperature mode (most frequent value) */
0142     int temp_mode;
0143 
0144     /** HV V mode (most frequent value) */
0145     int hvv_mode;
0146 
0147     /** LV V mode (most frequent value) */
0148     bool lvv_mode;
0149 
0150     /** LV I mode (most frequent value) */
0151     float lvi_mode;
0152 
0153     /** This payload IOV value: timestamp since */
0154     TimeType iov;
0155 
0156     /** This payload last DCS data change value */
0157     TimeType last_change;
0158 
0159     DCSData& operator=(const DCSData& m) {
0160       iov = m.iov;
0161       last_change = m.last_change;
0162       temp_meas = m.temp_meas;
0163       hvv_meas = m.hvv_meas;
0164       lvv_meas = m.lvv_meas;
0165       lvi_meas = m.lvi_meas;
0166       temp_mode = m.temp_mode;
0167       hvv_mode = m.hvv_mode;
0168       lvv_mode = m.lvv_mode;
0169       lvi_mode = m.lvi_mode;
0170       return *this;
0171     }
0172 
0173     COND_SERIALIZABLE;
0174   };
0175 
0176 }  // namespace cscdqm
0177 
0178 #endif