File indexing completed on 2024-09-10 02:58:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef DTDigi_DTuROSControlData_h
0015 #define DTDigi_DTuROSControlData_h
0016
0017 #include <vector>
0018
0019 static const int DOCESLOTS = 12;
0020 static const int SEISXOK = 12;
0021
0022 class DTuROSROSData {
0023 public:
0024
0025 DTuROSROSData() : slot_(-1), header1_(0), header2_(0), trailer_(0), okword1_(0), okword2_(0) {
0026 for (int i = 0; i < SEISXOK; i++)
0027 okxword_[i] = 0;
0028 }
0029
0030
0031 ~DTuROSROSData() {}
0032
0033 void setslot(int slot) { slot_ = slot; }
0034
0035 void setheader1(long dword) { header1_ = dword; }
0036
0037 void setheader2(long dword) { header2_ = dword; }
0038
0039 void settrailer(long dword) { trailer_ = dword; }
0040
0041 void setokword1(long okword) { okword1_ = okword; }
0042
0043 void setokword2(long okword) { okword2_ = okword; }
0044
0045 void setokxword(int i, long okxword) { okxword_[i] = okxword; }
0046
0047 void setexword(long exword) { exword_.push_back(exword); }
0048
0049 void seterror(int error) { error_.push_back(error); }
0050
0051 int getslot() const { return slot_; }
0052
0053 long getheader1() const { return header1_; }
0054
0055 long getheader2() const { return header2_; }
0056
0057 long gettrailer() const { return trailer_; }
0058
0059 long getokword1() const { return okword1_; }
0060
0061 long getokword2() const { return okword2_; }
0062
0063 int getokflag(int i) const {
0064 if (i < 60)
0065 return ((okword1_ >> i) & 0x1);
0066 return ((okword2_ >> (i - 60)) & 0x1);
0067 }
0068
0069 long getokxword(int i) const { return okxword_[i]; }
0070
0071 int getokxflag(int i) const { return ((okxword_[i / 12] >> (5 * (i % 12))) & 0x1F); }
0072
0073 std::vector<long> getexwords() const { return exword_; }
0074
0075 long getexword(int i) const { return exword_.at(i); }
0076
0077 std::vector<int> geterrors() const { return error_; }
0078
0079 int geterror(int i) const { return error_.at(i); }
0080
0081 int geterrorROBID(int i) const { return (error_.at(i) >> 21) & 0x7F; }
0082
0083 int geterrorTDCID(int i) const { return (error_.at(i) >> 19) & 0x3; }
0084
0085 int geterrorFlag(int i) const { return (error_.at(i)) & 0x7FFF; }
0086
0087 int getboardId() const { return (getheader2()) & 0xFFFF; }
0088
0089 int getuserWord() const { return (getheader2() >> 32) & 0xFFFFFFFF; }
0090
0091 private:
0092 int slot_;
0093
0094 long header1_, header2_, trailer_;
0095
0096 long okword1_, okword2_, okxword_[SEISXOK];
0097
0098 std::vector<long> exword_;
0099
0100 std::vector<int> error_;
0101 };
0102
0103 class DTuROSFEDData {
0104 public:
0105
0106 DTuROSFEDData() : header1_(0), header2_(0), trailer_(0), fed_(-1), nslots_(0), evtLgth_(0) {
0107 for (int i = 0; i < DOCESLOTS; i++)
0108 rsize_[i] = 0;
0109 }
0110
0111
0112 ~DTuROSFEDData() {}
0113
0114 void setfed(int fed) { fed_ = fed; }
0115
0116 void setheader1(long dword) { header1_ = dword; }
0117
0118 void setheader2(long dword) { header2_ = dword; }
0119
0120 void settrailer(long dword) { trailer_ = dword; }
0121
0122 void setnslots(int nslots) { nslots_ = nslots; }
0123
0124 void setevtlgth(int evtLgth) { evtLgth_ = evtLgth; }
0125
0126 void setslotsize(int slot, int size) { rsize_[slot - 1] = size; }
0127
0128 void setuROS(int slot, DTuROSROSData rwords) { rdata_[slot - 1] = rwords; }
0129
0130 int getfed() const { return fed_; }
0131
0132 long getheader1() const { return header1_; }
0133
0134 long getheader2() const { return header2_; }
0135
0136 long gettrailer() const { return trailer_; }
0137
0138 int getnslots() const { return nslots_; }
0139
0140 int getevtlgth() const { return evtLgth_; }
0141
0142 int getslotsize(int slot) const { return rsize_[slot - 1]; }
0143
0144 int getBXId() const { return (getheader1() >> 20) & 0xFFF; }
0145
0146 int getTTS() const { return (gettrailer() >> 4) & 0xF; }
0147
0148 DTuROSROSData getuROS(int slot) const { return rdata_[slot - 1]; }
0149
0150 private:
0151 long header1_, header2_, trailer_;
0152
0153 int fed_, nslots_, evtLgth_, rsize_[DOCESLOTS];
0154
0155 DTuROSROSData rdata_[DOCESLOTS];
0156 };
0157
0158 typedef std::vector<DTuROSFEDData> DTuROSFEDDataCollection;
0159 #endif