12#define BOOST_TEST_MODULE Test MCHRaw DigitsTimeComputation
13#define BOOST_TEST_MAIN
14#define BOOST_TEST_DYN_LINK
16#include <boost/test/unit_test.hpp>
21BOOST_AUTO_TEST_SUITE(o2_mch_raw)
23BOOST_AUTO_TEST_SUITE(digitstimecomputation)
26static const int32_t BCROLLOVER = (1 << 20);
43 uint32_t bc1 = BCROLLOVER - 10;
54 uint32_t bc2 = BCROLLOVER - 10;
59static std::vector<RawDigit> makeDigitsVector(uint32_t sampaTime, uint32_t bunchCrossing, uint32_t
orbit)
70 std::vector<RawDigit>
digits;
75static std::vector<RawDigit> processDigits(
const std::vector<RawDigit>&
digits, uint32_t tfOrbit, uint32_t tfBunchCrossing)
82 bool mCheckROFs =
false;
83 bool mDummyROFs =
true;
87 decoder.setFirstOrbitInTF(tfOrbit);
90 for (
auto& digit :
digits) {
91 auto& info = digit.
info;
93 decoder.updateTimeFrameStartRecord(chipId, tfOrbit, tfBunchCrossing);
95 decoder.computeDigitsTime();
97 auto& digitsOut = decoder.getDigits();
103 uint32_t sampaTime = 10;
104 uint32_t bunchCrossing =
BCINORBIT - 100;
107 std::vector<RawDigit>
digits = makeDigitsVector(sampaTime, bunchCrossing,
orbit);
109 uint32_t tfOrbit = 1;
110 uint32_t tfBunchCrossing = 0;
112 auto digitsOut = processDigits(
digits, tfOrbit, tfBunchCrossing);
114 int32_t digitTime =
static_cast<int32_t
>(bunchCrossing) +
static_cast<int32_t
>(sampaTime * 4) -
115 static_cast<int32_t
>(tfBunchCrossing);
122 uint32_t sampaTime = 10;
123 uint32_t bunchCrossing = 100;
126 std::vector<RawDigit>
digits = makeDigitsVector(sampaTime, bunchCrossing,
orbit);
128 uint32_t tfOrbit = 1;
129 uint32_t tfBunchCrossing = BCROLLOVER - 100;
131 auto digitsOut = processDigits(
digits, tfOrbit, tfBunchCrossing);
133 int32_t digitTime =
static_cast<int32_t
>(bunchCrossing) +
static_cast<int32_t
>(sampaTime * 4) -
134 static_cast<int32_t
>(tfBunchCrossing) + BCROLLOVER;
141 uint32_t sampaTime = 10;
142 uint32_t bunchCrossing = BCROLLOVER - 100;
145 std::vector<RawDigit>
digits = makeDigitsVector(sampaTime, bunchCrossing,
orbit);
147 uint32_t tfOrbit = 1;
148 uint32_t tfBunchCrossing = 100;
150 auto digitsOut = processDigits(
digits, tfOrbit, tfBunchCrossing);
152 int32_t digitTime =
static_cast<int32_t
>(bunchCrossing) +
static_cast<int32_t
>(sampaTime * 4) -
153 static_cast<int32_t
>(tfBunchCrossing) - BCROLLOVER;
158BOOST_AUTO_TEST_SUITE_END()
159BOOST_AUTO_TEST_SUITE_END()
Definition of the decoder for the MCH data.
int ds2manu(int deId, int ch)
MCH digit implementation.
static int32_t getDigitTimeHBPackets(uint32_t orbitTF, uint32_t bcTF, uint32_t orbitDigit, uint32_t bcDigit)
Helper function for computing the digit time relative to the beginning of the TimeFrame.
static uint64_t getChipId(uint32_t solar, uint32_t ds, uint32_t chip)
Convert a Solar/Ds/Chip triplet into an unique chip index.
std::function< void(o2::header::RDHAny *)> RdhHandler
std::function< void(DsElecId dsId, DualSampaChannelId channel, SampaCluster)> SampaChannelHandler
BOOST_AUTO_TEST_CASE(FlatHisto)
uint32_t bunchCrossing
bit 0 to 9: sampa time
uint32_t orbit
bit 30 to 31: reserved
const bool useDummyElecMap
BOOST_CHECK_EQUAL(triggersD.size(), triggers.size())
std::vector< Digit > digits