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
#include <iostream>
#include <iomanip>

#include <stdio.h>
#include <string.h>
#include <stdint.h>

using namespace std;

#include "EventFilter/L1TXRawToDigi/interface/UCTDAQRawData.h"
#include "EventFilter/L1TXRawToDigi/interface/UCTAMCRawData.h"
#include "EventFilter/L1TXRawToDigi/interface/UCTCTP7RawData.h"

int main(int argc, char** argv) {
  uint32_t index = 0;
  uint64_t fedRawDataArray[694] = {0};
  char line[256] = {0};
  while (cin.getline(line, 256)) {
    char* saveptr;
    char* iToken = strtok_r(line, ":", &saveptr);
    if (iToken == 0)
      continue;
    if (sscanf(iToken, "%d", &index) == 1) {
      if (index < 694) {
        char* fToken = strtok_r(nullptr, "\n", &saveptr);
        if (fToken == 0)
          continue;
        if (sscanf(fToken, "%lX", &fedRawDataArray[index]) != 1) {
          cerr << "oops! format error :(" << endl;
          continue;
        }
      } else {
        cerr << "oops! index is too high :(" << endl;
      }
    } else {
      cout << line << endl;
    }
  }
  if (index == 0) {
    cout << "error: failed to read input" << std::endl;
    return 1;
  }

  UCTDAQRawData daqData(fedRawDataArray);
  daqData.print();
  for (uint32_t i = 0; i < daqData.nAMCs(); i++) {
    UCTAMCRawData amcData(daqData.amcPayload(i));
    cout << endl;
    amcData.print();
    cout << endl;
    UCTCTP7RawData ctp7Data(amcData.payload());
    ctp7Data.print();
    cout << endl;
  }
  cout << "Goodbye!" << endl;
}