CMS 3D CMS Logo

GEMRawToDigi.cc
Go to the documentation of this file.
1 
6 
7 std::unique_ptr<GEMAMC13> GEMRawToDigi::convertWordToGEMAMC13(const uint64_t* word) {
8  vfatError_ = false;
9  amcError_ = false;
10 
11  auto amc13 = std::make_unique<GEMAMC13>();
12 
13  amc13->setCDFHeader(*word);
14  amc13->setAMC13Header(*(++word));
15 
16  // Readout out AMC headers
17  for (uint8_t i = 0; i < amc13->nAMC(); ++i)
18  amc13->addAMCheader(*(++word));
19 
20  // Readout out AMC payloads
21  for (uint8_t i = 0; i < amc13->nAMC(); ++i) {
22  auto amc = GEMAMC();
23  amc.setAMCheader1(*(++word));
24  amc.setAMCheader2(*(++word));
25  amc.setGEMeventHeader(*(++word));
26 
27  // Fill GEB
28  for (uint8_t j = 0; j < amc.davCnt(); ++j) {
29  auto oh = GEMOptoHybrid();
30  oh.setVersion(amc.formatVer());
31  oh.setChamberHeader(*(++word));
32 
33  // Fill vfat
34  for (uint16_t k = 0; k < oh.vfatWordCnt() / 3; k++) {
35  auto vfat = GEMVFAT();
36  vfat.read_fw(*(++word));
37  vfat.read_sw(*(++word));
38  vfat.read_tw(*(++word));
39  oh.addVFAT(vfat);
40 
41  } // end of vfat loop
42 
43  oh.setChamberTrailer(*(++word));
44  amc.addGEB(oh);
45 
46  } // end of geb loop
47 
48  amc.setGEMeventTrailer(*(++word));
49  amc.setAMCTrailer(*(++word));
50  amc13->addAMCpayload(amc);
51 
52  } // end of amc loop
53 
54  amc13->setAMC13Trailer(*(++word));
55  amc13->setCDFTrailer(*(++word));
56 
57  return amc13;
58 }
uint64_t word
Definition: GEMVFAT.h:5
std::unique_ptr< GEMAMC13 > convertWordToGEMAMC13(const uint64_t *word)
Definition: GEMRawToDigi.cc:7
unsigned long long uint64_t
Definition: Time.h:13
Definition: GEMAMC.h:6
Definition: AMCSpec.h:8