File indexing completed on 2024-04-06 12:02:12
0001 #include "CondFormats/GEMObjects/interface/GEMChMap.h"
0002 #include "DataFormats/MuonDetId/interface/GEMDetId.h"
0003 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
0004
0005 GEMChMap::GEMChMap() : theVersion("") {}
0006
0007 GEMChMap::GEMChMap(const std::string& version) : theVersion(version) {}
0008
0009 GEMChMap::~GEMChMap() {}
0010
0011 const std::string& GEMChMap::version() const { return theVersion; }
0012
0013 void GEMChMap::setDummy() {
0014
0015 amcVec_.clear();
0016
0017 chamberMap_.clear();
0018
0019 chamVfats_.clear();
0020 chamIEtas_.clear();
0021
0022 chStMap_.clear();
0023 stChMap_.clear();
0024
0025 unsigned int fedId = 0;
0026
0027 for (int st = GEMDetId::minStationId0; st <= GEMDetId::maxStationId; ++st) {
0028 int maxVFat = 0;
0029 int maxLayerId = GEMDetId::maxLayerId;
0030 int maxiEtaId = 0;
0031 if (st == 0) {
0032 maxVFat = maxVFatGE0_;
0033 maxLayerId = GEMDetId::maxLayerId0;
0034 maxiEtaId = maxiEtaIdGE0_;
0035 } else if (st == 1) {
0036 maxVFat = maxVFatGE11_;
0037 maxiEtaId = maxiEtaIdGE11_;
0038 } else if (st == 2) {
0039 maxVFat = maxVFatGE21_;
0040 maxiEtaId = maxiEtaIdGE21_;
0041 }
0042
0043 uint16_t chipPos = 0;
0044 for (int lphi = 0; lphi < maxVFat; ++lphi) {
0045 for (int ieta = 1; ieta <= maxiEtaId; ++ieta) {
0046 if (st == 2 and ieta % 2 == 0)
0047 continue;
0048 for (int i = 0; i < maxChan_; ++i) {
0049
0050 GEMChMap::channelNum cMap;
0051 cMap.chamberType = st;
0052 cMap.vfatAdd = chipPos;
0053 cMap.chNum = i;
0054
0055 GEMChMap::stripNum sMap;
0056 sMap.chamberType = st;
0057 if (st != 2) {
0058 sMap.iEta = ieta;
0059 sMap.stNum = i + lphi * maxChan_;
0060 } else {
0061 sMap.iEta = ieta + i % 2;
0062 sMap.stNum = i / 2 + lphi * maxChan_ / 2;
0063 }
0064
0065 add(cMap, sMap);
0066 add(sMap, cMap);
0067
0068 GEMChMap::vfatEC ec;
0069 ec.vfatAdd = cMap.vfatAdd;
0070 ec.chamberType = st;
0071
0072 add(cMap.chamberType, cMap.vfatAdd);
0073 add(ec, sMap.iEta);
0074 }
0075 chipPos++;
0076 }
0077 }
0078
0079 for (int re = -1; re <= 1; re = re + 2) {
0080 uint8_t amcNum = 1;
0081 uint8_t gebId = 0;
0082 if (st == 0)
0083 fedId = (re == 1 ? FEDNumbering::MINGE0FEDID + 1 : FEDNumbering::MINGE0FEDID);
0084 else if (st == 1)
0085 fedId = (re == 1 ? FEDNumbering::MINGEMFEDID + 1 : FEDNumbering::MINGEMFEDID);
0086 else if (st == 2)
0087 fedId = (re == 1 ? FEDNumbering::MINGE21FEDID + 1 : FEDNumbering::MINGE21FEDID);
0088
0089 for (int ch = 1; ch <= GEMDetId::maxChamberId; ++ch) {
0090 for (int ly = 1; ly <= maxLayerId; ++ly) {
0091 GEMDetId gemId(re, 1, st, ly, ch, 0);
0092
0093 GEMChMap::chamEC ec;
0094 ec.fedId = fedId;
0095 ec.gebId = gebId;
0096 ec.amcNum = amcNum;
0097
0098 GEMChMap::chamDC dc;
0099 dc.detId = gemId;
0100 dc.chamberType = st;
0101 add(ec, dc);
0102
0103 GEMChMap::sectorEC amcEC = {fedId, amcNum};
0104 if (!isValidAMC(fedId, amcNum))
0105 add(amcEC);
0106
0107
0108 if (st > 0 && gebId == maxGEB1_) {
0109 gebId = 0;
0110 amcNum += 2;
0111 } else if (st == 0 && gebId == maxGEBs_) {
0112 gebId = 0;
0113 amcNum++;
0114 } else {
0115
0116 gebId++;
0117 }
0118 }
0119 }
0120 }
0121 }
0122 }