File indexing completed on 2024-04-06 12:10:41
0001
0002
0003
0004 #include "EventFilter/GEMRawToDigi/interface/GEMRawToDigi.h"
0005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0006
0007 std::unique_ptr<GEMAMC13> GEMRawToDigi::convertWordToGEMAMC13(const uint64_t* word) {
0008 vfatError_ = false;
0009 amcError_ = false;
0010
0011 auto amc13 = std::make_unique<GEMAMC13>();
0012
0013 amc13->setCDFHeader(*word);
0014 amc13->setAMC13Header(*(++word));
0015
0016
0017 for (uint8_t i = 0; i < amc13->nAMC(); ++i)
0018 amc13->addAMCheader(*(++word));
0019
0020
0021 for (uint8_t i = 0; i < amc13->nAMC(); ++i) {
0022 auto amc = GEMAMC();
0023 amc.setAMCheader1(*(++word));
0024 amc.setAMCheader2(*(++word));
0025 amc.setGEMeventHeader(*(++word));
0026
0027
0028 for (uint8_t j = 0; j < amc.davCnt(); ++j) {
0029 auto oh = GEMOptoHybrid();
0030 oh.setVersion(amc.formatVer());
0031 oh.setChamberHeader(*(++word));
0032
0033
0034 for (uint16_t k = 0; k < oh.vfatWordCnt() / 3; k++) {
0035 auto vfat = GEMVFAT();
0036 vfat.read_fw(*(++word));
0037 vfat.read_sw(*(++word));
0038 vfat.read_tw(*(++word));
0039 oh.addVFAT(vfat);
0040
0041 }
0042
0043 oh.setChamberTrailer(*(++word));
0044 amc.addGEB(oh);
0045
0046 }
0047
0048 amc.setGEMeventTrailer(*(++word));
0049 amc.setAMCTrailer(*(++word));
0050 amc13->addAMCpayload(amc);
0051
0052 }
0053
0054 amc13->setAMC13Trailer(*(++word));
0055 amc13->setCDFTrailer(*(++word));
0056
0057 return amc13;
0058 }