PixelROCDACSettings

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
#ifndef PixelROCDACSettings_h
#define PixelROCDACSettings_h
/*! \file CalibFormats/SiPixelObjects/interface/PixelROCDACSettings.h
*   \brief This class provide the data structure for the ROC DAC parameters
*
*   At this point I do not see a reason to make an abstract layer for this code.
*/

#include <string>
#include <iostream>
#include <vector>
#include <map>
#include <fstream>
#include <sstream>
#include "CalibFormats/SiPixelObjects/interface/PixelConfigKey.h"
#include "CalibFormats/SiPixelObjects/interface/PixelROCName.h"

namespace pos {
  typedef unsigned char bits8;
  typedef unsigned char bits4;

  class PixelROCDACSettings;
  std::ostream& operator<<(std::ostream& s, const PixelROCDACSettings& dacs);

  /*! \class PixelROCDACSettings PixelROCDACSettings.h "interface/PixelROCDACSettings.h"
*   \brief This class implements..
*
*   A longer explanation will be placed here later
*/
  class PixelROCDACSettings {
  public:
    PixelROCDACSettings();
    virtual ~PixelROCDACSettings() { ; };

    PixelROCDACSettings(const PixelROCName& rocid) { rocid_ = rocid; }

    //Build the commands needed to configure ROC
    //Need to use the mask bits also for this
    std::string getConfigCommand();

    int read(std::ifstream& in, const PixelROCName& rocid);
    int read(std::istringstream& in, const PixelROCName& rocid);

    int readBinary(std::ifstream& in, const PixelROCName& rocid);

    void writeBinary(std::ofstream& out) const;

    void writeASCII(std::ostream& out) const;
    void writeXML(pos::PixelConfigKey key, int version, std::string path) const { ; }
    virtual void writeXMLHeader(pos::PixelConfigKey key, int version, std::string path, std::ofstream* out) const { ; }
    virtual void writeXML(std::ofstream* out) const;
    virtual void writeXMLTrailer(std::ofstream* out) const { ; }

    void getDACs(std::vector<unsigned int>& dacs) const;
    void getDACs(std::map<std::string, unsigned int>& dacs) const;

    void setDAC(unsigned int dacaddress, unsigned int dacvalue);
    void setDACs(std::map<std::string, unsigned int>& dacs);

    void compareDACs(std::map<std::string, unsigned int>& dacs,
                     std::map<std::string, bool>& changes,
                     std::map<std::string, unsigned int>& previous);

    void checkTag(std::string tag, std::string dacName, const PixelROCName& rocid);

    void setDac(std::string dacName, int value);

    unsigned int getDac(std::string dacName) const;

    bits4 getVdd() { return Vdd_; }
    void setVdd(bits4 vdd) { Vdd_ = vdd; }

    bits8 getVana() { return Vana_; }
    void setVana(bits8 vana) { Vana_ = vana; }

    bits8 getVsf() { return Vsf_; }
    void setVsf(bits8 vsf) { Vsf_ = vsf; }

    bits4 getVcomp() { return Vcomp_; }
    void setVcomp(bits4 vcomp) { Vcomp_ = vcomp; }

    bits8 getVleak() { return Vleak_; }
    void setVleak(bits8 vleak) { Vleak_ = vleak; }

    bits4 getVrgPr() { return VrgPr_; }
    void setVrgPr(bits4 vrgPr) { VrgPr_ = vrgPr; }

    bits8 getVwllPr() { return VwllPr_; }
    void setVwllPr_(bits8 vwllPr) { VwllPr_ = vwllPr; }

    bits4 getVrgSh() { return VrgSh_; }
    void setVrgSh(bits4 vrgSh) { VrgSh_ = vrgSh; }

    bits8 getVwllSh() { return VwllSh_; }
    void setVwllSh(bits8 vwllSh) { VwllSh_ = vwllSh; }

    bits8 getVHldDel() { return VHldDel_; }
    void setVHldDel(bits8 vHldDel) { VHldDel_ = vHldDel; }

    bits8 getVtrim() { return Vtrim_; }
    void setVtrim(bits8 vtrim) { Vtrim_ = vtrim; }

    bits8 getVcThr() { return VcThr_; }
    void setVcThr(bits8 vcThr) { VcThr_ = vcThr; }

    bits8 getVIbias_bus() { return VIbias_bus_; }
    void setVIbias_bus(bits8 vIbias_bus) { VIbias_bus_ = vIbias_bus; }

    bits4 getVIbias_sf() { return VIbias_sf_; }
    void setVIbias_sf(bits4 vIbias_sf) { VIbias_sf_ = vIbias_sf; }

    bits8 getVOffsetOp() { return VOffsetOp_; }
    void setVOffsetOp(bits8 vOffsetOp) { VOffsetOp_ = vOffsetOp; }

    bits8 getVbiasOp() { return VbiasOp_; }
    void setVbiasOp(bits8 vbiasOp) { VbiasOp_ = vbiasOp; }

    bits8 getVOffsetRO() { return VOffsetRO_; }
    void setVOffsetRO(bits8 vOffsetRO) { VOffsetRO_ = vOffsetRO; }

    bits8 getVIon() { return VIon_; }
    void setVIon(bits8 vIon) { VIon_ = vIon; }

    bits8 getVIbias_PH() { return VIbias_PH_; }
    void setVIbias_PH(bits8 vIbias_PH) { VIbias_PH_ = vIbias_PH; }

    bits8 getVIbias_DAC() { return VIbias_DAC_; }
    void setVIbias_DAC(bits8 vIbias_DAC) { VIbias_DAC_ = vIbias_DAC; }

    bits8 getVIbias_roc() { return VIbias_roc_; }
    void setVIbias_roc(bits8 vIbias_roc) { VIbias_roc_ = vIbias_roc; }

    bits8 getVIColOr() { return VIColOr_; }
    void setVIColOr(bits8 vIColOr) { VIColOr_ = vIColOr; }

    bits8 getVnpix() { return Vnpix_; }
    void setVnpix(bits8 vnpix) { Vnpix_ = vnpix; }

    bits8 getVsumCol() { return VsumCol_; }
    void setVsumCol(bits8 vsumCol) { VsumCol_ = vsumCol; }

    bits8 getVcal() { return Vcal_; }
    void setVcal(bits8 vcal) { Vcal_ = vcal; }

    bits8 getCalDel() { return CalDel_; }
    void setCalDel(bits8 calDel) { CalDel_ = calDel; }

    bits8 getTempRange() { return TempRange_; }
    void setTempRange(bits8 tempRange) { TempRange_ = tempRange; }

    bits8 getWBC() { return WBC_; }
    void setWBC(bits8 wbc) { WBC_ = wbc; }

    bits8 getControlRegister() const { return ChipContReg_; }
    void setControlRegister(bits8 controlregister) { ChipContReg_ = controlregister; }

    PixelROCName getROCName() const { return rocid_; }

    friend std::ostream& operator<<(std::ostream& s, const PixelROCDACSettings& dacs);

  private:
    PixelROCName rocid_;

    //The dac settings used by the ROC

    bits4 Vdd_;          //addr 1
    bits8 Vana_;         //addr 2
    bits8 Vsf_;          //addr 3
    bits4 Vcomp_;        //addr 4
    bits8 Vleak_;        //addr 5
    bits4 VrgPr_;        //addr 6
    bits8 VwllPr_;       //addr 7
    bits4 VrgSh_;        //addr 8
    bits8 VwllSh_;       //addr 9
    bits8 VHldDel_;      //addr 10
    bits8 Vtrim_;        //addr 11
    bits8 VcThr_;        //addr 12
    bits8 VIbias_bus_;   //addr 13
    bits4 VIbias_sf_;    //addr 14
    bits8 VOffsetOp_;    //addr 15
    bits8 VbiasOp_;      //addr 16
    bits8 VOffsetRO_;    //addr 17
    bits8 VIon_;         //addr 18
    bits8 VIbias_PH_;    //addr 19
    bits8 VIbias_DAC_;   //addr 20
    bits8 VIbias_roc_;   //addr 21
    bits8 VIColOr_;      //addr 22
    bits8 Vnpix_;        //addr 23
    bits8 VsumCol_;      //addr 24
    bits8 Vcal_;         //addr 25
    bits8 CalDel_;       //addr 26
    bits8 TempRange_;    //addr 27
    bits8 WBC_;          //addr 254
    bits8 ChipContReg_;  //addr 253

    std::string ToLower(std::string);
  };
}  // namespace pos
#endif