PixelFEDCard

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
#ifndef TP_PIXELFEDCARD_H
#define TP_PIXELFEDCARD_H
/**
*   \file CalibFormats/SiPixelObjects/interface/PixelFEDCard.h
*   \brief This class implements..
*
*   A longer explanation will be placed here later
*/

#include "CalibFormats/SiPixelObjects/interface/PixelConfigBase.h"

#include <vector>
#include <string>
#include <cstdint>

namespace pos {
  /*!  \ingroup ConfigurationObjects "Configuration Objects"
*    
*  @{
*
*  \class PixelFEDCard PixelFEDCard.h
*  \brief This is the documentation about PixelFEDCard...
*
*  The structure which holds all the informations needed to setup 
*  a pixel FED. Danek Kotlinski 18/4/06
*/
  class PixelFEDCard : public PixelConfigBase {
  public:
    //Return true or false depending on if iChannel is used
    //iChannel=1..36
    bool useChannel(unsigned int iChannel);

    //Set iChannel enable to mode
    //iChannel=1..36
    void setChannel(unsigned int iChannel, bool mode);

    void restoreBaselinAndChannelMasks();
    void restoreControlAndModeRegister();

    // Constructor and destructor
    PixelFEDCard();                                             // empty
    PixelFEDCard(std::string filename);                         // create from files
    PixelFEDCard(std::vector<std::vector<std::string> > &tab);  // create from DB
    ~PixelFEDCard() override {}

    void readDBTBMLevels(std::vector<std::vector<std::string> > &tableMat, int first, int last);
    void readDBROCLevels(std::vector<std::vector<std::string> > &tableMat, int first, int last);
    void writeASCII(std::string dir = "") const override;  // write to files
    void writeXML(pos::PixelConfigKey key, int version, std::string path) const override;
    void writeXMLHeader(pos::PixelConfigKey key, int version, std::string path, std::ofstream *out) const override;
    void writeXML(std::ofstream *out) const override;
    void writeXMLTrailer(std::ofstream *out) const override;
    void writeXMLHeader(pos::PixelConfigKey key,
                        int version,
                        std::string path,
                        std::ofstream *fedstream,
                        std::ofstream *roclvlstream,
                        std::ofstream *tbmlvlsteram) const override;
    void writeXML(std::ofstream *fedstream, std::ofstream *rocstream, std::ofstream *tbmstream) const override;
    void writeXMLTrailer(std::ofstream *fedstream, std::ofstream *recostream, std::ofstream *tbmstream) const override;
    uint64_t enabledChannels();  // returns 64-bit integer mask 35..0

    //Settable optical input parameters (one for each 12-receiver)
    int opt_cap[3];    // Capacitor adjust
    int opt_inadj[3];  // DC-input offset
    int opt_ouadj[3];  // DC-output offset

    //input offset dac (one for each channel)
    int offs_dac[36];

    //clock phases, use bits 0-8, select the clock edge
    unsigned int clkphs1_9, clkphs10_18, clkphs19_27, clkphs28_36;

    //Channel delays, one for each channel, 0=15
    int DelayCh[36];

    //Blacks and Ultra-blacks, 3 limit per channel
    int BlackHi[36];
    int BlackLo[36];
    int Ublack[36];

    //Signal levels for the TBM, one per channel
    int TBM_L0[36], TBM_L1[36], TBM_L2[36], TBM_L3[36], TBM_L4[36];
    int TRL_L0[36], TRL_L1[36], TRL_L2[36], TRL_L3[36], TRL_L4[36];
    // Address levels 1 per channel (36) per roc(max=26)
    int ROC_L0[36][26], ROC_L1[36][26], ROC_L2[36][26], ROC_L3[36][26], ROC_L4[36][26];

    //These bits turn off(1) and on(0) channels
    unsigned int Ncntrl, NCcntrl, SCcntrl, Scntrl;

    //The values as read from file so that they can be restored after
    //calibration
    unsigned int Ncntrl_original, NCcntrl_original, SCcntrl_original, Scntrl_original;

    //Bits (1st 8) used to mask TBM trailer bits
    unsigned int N_TBMmask, NC_TBMmask, SC_TBMmask, S_TBMmask;

    //Bits (1st 8) used to set the Private Word in the gap and filler words
    unsigned int N_Pword, NC_Pword, SC_Pword, S_Pword;

    // 1 = Special Random trigger DAC mode on, 0=off
    unsigned int SpecialDac;

    // Control register and delays for the TTCrx
    int CoarseDel, FineDes2Del, FineDes1Del;
    unsigned int ClkDes2;

    //Main control reg for determining the DAQ mode
    unsigned int Ccntrl;  // "CtrlReg" in LAD_C

    //Mode register
    int modeRegister;  // "ModeReg" in LAD_C

    //Number of ROCS per FED channel
    int NRocs[36];

    //Control Regs for setting ADC 1Vpp and 2Vpp
    unsigned int Nadcg, NCadcg, SCadcg, Sadcg;

    //Control and data Regs for setting Baseline Adjustment
    unsigned int Nbaseln, NCbaseln, SCbaseln, Sbaseln;

    //data Regs for TTs adjustable levels
    int Ooslvl, Errlvl;

    //data Regs adjustable fifo Almost Full levels
    int Nfifo1Bzlvl, NCfifo1Bzlvl, SCfifo1Bzlvl, Sfifo1Bzlvl, fifo3Wrnlvl;

    //Master delay for FED TTC signals
    int FedTTCDelay;

    //data Regs adjustable hit limits in fifo1s by fpga
    int N_hitlimit, NC_hitlimit, SC_hitlimit, S_hitlimit;

    //data Regs to skip bad ROCs by fpga
    int N_testreg, NC_testreg, SC_testreg, S_testreg;

    //The values as read from file so that they can be restored after
    //calibration
    int Nbaseln_original, NCbaseln_original, SCbaseln_original, Sbaseln_original;

    int Ccntrl_original;
    int modeRegister_original;

    //VME base address
    unsigned long FEDBASE_0, fedNumber;

    // Most recent additions requested by Will and Danek (Dario)
    int BusyHoldMin;
    int BusyWhenBehind;
    int FeatureRegister;
    int FIFO2Limit;
    int LastDacOff;
    int SimHitsPerRoc;
    int TimeoutOROOSLimit;
    int TriggerHoldoff;
    int SPARE1;
    int SPARE2;
    int SPARE3;
    int SPARE4;
    int SPARE5;
    int SPARE6;
    int SPARE7;
    int SPARE8;
    int SPARE9;
    int SPARE10;

  private:
    // Added by Dario (March 26th 2008)
    void clear(void);

  };  // end class PixelFEDCard
}  // namespace pos
/* @} */
#endif  // ifdef include