74 weightWords[weightIndex] =
parameter(
"weights"+std::to_string(weightIndex)).value();
86 unsigned rawValue = ( weightWords[startBit/32] >> (startBit%32) ) & weightMask;
88 if (nOverflowBits > 0) {
113 const std::vector<TCS::TOBArray *> & ,
123 if(input.size()!=2) {
124 TCS_EXCEPTION(
"KalmanMETCorrection alg must have exactly two input list (jets and MET list), but got " << input.size());
128 int64_t metXY[2] {
met.Ex(),
met.Ey()};
129 int64_t jetSumXY[2] {0, 0};
131 tob != input[1]->end() && distance( input[1]->begin(), tob) <
p_NumberLeading2;
133 if( (*tob)->Et() <=
p_MinEt )
continue;
134 unsigned tobEta = abs((*tob)->eta());
148 unsigned tobPhi = (*tob)->phi();
160 uint64_t kfmetSq = kfmetXY[0] * kfmetXY[0] + kfmetXY[1] * kfmetXY[1];
163 const auto XE64 =
static_cast<uint64_t
>(
p_XE[i]);
164 decision.
setBit( i, kfmetSq > XE64 * XE64 );
173 const std::vector<TCS::TOBArray *> & output,
#define REGISTER_ALG_TCS(CLASS)
#define TCS_EXCEPTION(MSG)
const Parameter & parameter(const std::string ¶meterName) const
bool isLegacyTopo() const
const std::string & name() const
void defineParameter(const std::string &name, TCS::parType_t value)
data_t::const_iterator const_iterator
void setNumberOutputBits(unsigned int numberOutputBits)
DecisionAlg(const std::string &name)
unsigned int numberOutputBits() const
void setBit(unsigned int index, bool value)
KalmanMETCorrection(const std::string &name)
virtual StatusCode process(const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decison)
virtual ~KalmanMETCorrection()
int p_correctionLut[KFMET::nEtaBins][KFMET::nLogEtBins]
virtual StatusCode processBitCorrect(const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decison)
parType_t p_NumberLeading2
virtual StatusCode initialize()
constexpr size_t lookupEtaBinFallback
const std::map< unsigned, size_t > lookupEtaBin
constexpr unsigned nEtaBins
constexpr unsigned correctionBitWidth
constexpr int jetEtBinOffset
constexpr unsigned nLogEtBins
constexpr unsigned correctionDecimalBitWidth
constexpr size_t nWeightWords
int toSigned(unsigned bits, unsigned length)
static const std::vector< int > CosInt
static const std::vector< int > SinInt