File indexing completed on 2025-03-05 03:16:36
0001 #include "L1Trigger/L1TGEM/interface/ME0StubAlgoMask.h"
0002
0003 using namespace l1t::me0;
0004
0005 std::vector<int> l1t::me0::shiftCenter(const HiLo& layer, int maxSpan) {
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 int center = std::floor(maxSpan / 2);
0017 int hi = layer.hi + center;
0018 int lo = layer.lo + center;
0019 std::vector<int> out = {lo, hi};
0020 return out;
0021 }
0022
0023 uint64_t l1t::me0::setHighBits(const std::vector<int>& loHiPair) {
0024
0025
0026
0027
0028 int lo = loHiPair[0], hi = loHiPair[1];
0029 uint64_t out = std::pow(2, (hi - lo + 1)) - 1;
0030 out <<= lo;
0031 return out;
0032 }
0033
0034 Mask l1t::me0::getLayerMask(const PatternDefinition& layerPattern, int maxSpan) {
0035
0036
0037
0038
0039 std::vector<std::vector<int>> mVals;
0040 std::vector<uint64_t> mVec;
0041
0042
0043
0044 mVals.reserve(layerPattern.layers.size());
0045 for (HiLo layer : layerPattern.layers) {
0046 mVals.push_back(shiftCenter(layer, maxSpan));
0047 }
0048
0049
0050
0051 mVec.reserve(mVals.size());
0052 for (const std::vector<int>& x : mVals) {
0053 mVec.push_back(setHighBits(x));
0054 }
0055
0056 Mask mask_{layerPattern.id, mVec};
0057 return mask_;
0058 }