13 m_plusWheelJetFpga(wheelJetFpga.at(1)),
14 m_minusWheelJetFpga(wheelJetFpga.at(0)),
17 m_hfInputSumsPlusWheel(),
18 m_hfInputSumsMinusWheel(),
21 if (wheelJetFpga.size() != 2) {
25 <<
"L1GctGlobalHfSumAlgos::L1GctGlobalHfSumAlgos() : Global HfSum Algos has been incorrectly constructed!\n"
26 <<
"This class needs two wheel jet fpga pointers. "
27 <<
"Number of wheel jet fpga pointers present is " << wheelJetFpga.size() <<
".\n";
35 <<
"L1GctGlobalHfSumAlgos::L1GctGlobalHfSumAlgos() has been incorrectly constructed!\n"
36 <<
"Plus Wheel Jet Fpga pointer has not been set!\n";
43 <<
"L1GctGlobalHfSumAlgos::L1GctGlobalHfSumAlgos() has been incorrectly constructed!\n"
44 <<
"Minus Wheel Jet Fpga pointer has not been set!\n";
49 edm::LogError(
"L1GctSetupError") <<
"L1GctGlobalEnergyAlgos has been incorrectly constructed";
54 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfBitCountsLut*>::const_iterator bclut =
m_bitCountLuts.begin();
59 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfEtSumsLut*>::const_iterator eslut =
m_etSumLuts.begin();
67 os <<
"===L1GctGlobalHfSumAlgos===" << std::endl;
69 os <<
"Plus wheel inputs:" << std::endl;
75 os <<
"Minus wheel inputs:" << std::endl;
81 int bxZero = -fpga.
bxMin();
82 if (bxZero >= 0 && bxZero < fpga.
numOfBx()) {
83 os <<
"Output word " << std::hex << fpga.
hfSumsWord().at(bxZero) <<
std::dec << std::endl;
99 for (
unsigned t = 0;
t < nTypes; ++
t) {
145 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfBitCountsLut*>::const_iterator bclut =
m_bitCountLuts.find(type);
153 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfEtSumsLut*>::const_iterator eslut =
m_etSumLuts.find(type);
162 std::map<L1GctHfEtSumsLut::hfLutType, Pipeline<uint16_t> >::const_iterator lut =
m_hfOutputSumsPipe.find(type);
172 std::vector<uint16_t> outputBits;
175 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
176 result.at(
bx) |= outputBits.at(
bx);
180 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
181 result.at(
bx) |= outputBits.at(
bx) << 3;
185 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
186 result.at(
bx) |= outputBits.at(
bx) << 6;
190 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
191 result.at(
bx) |= outputBits.at(
bx) << 9;
195 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
196 result.at(
bx) |= outputBits.at(
bx) << 12;
200 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
201 result.at(
bx) |= outputBits.at(
bx) << 16;
205 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
206 result.at(
bx) |= outputBits.at(
bx) << 19;
210 for (
unsigned bx = 0;
bx < outputBits.size();
bx++) {
211 result.at(
bx) |= outputBits.at(
bx) << 22;
245 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfBitCountsLut*>::const_iterator bclut =
m_bitCountLuts.find(type);
247 return (bclut->second);
254 std::map<L1GctHfEtSumsLut::hfLutType, const L1GctHfEtSumsLut*>::const_iterator eslut =
m_etSumLuts.find(type);
256 return (eslut->second);
264 std::vector<double>
result;
266 if (ESLut !=
nullptr) {
std::vector< unsigned > hfSumsWord() const
L1GctWheelJetFpga * m_minusWheelJetFpga
void process() override
process the data, fill output buffers
void fetchInput() override
get input data from sources; this is the standard way to provide input
L1GctJetCount< kHfCountBits > nOverThreshold1
std::map< L1GctHfEtSumsLut::hfLutType, Pipeline< uint16_t > > m_hfOutputSumsPipe
Emulates the GCT summing and packing of Hf Et sums and tower-over-threshold counts.
bool m_verbose
Flag to control output messages.
hfTowerSumsType m_hfInputSumsPlusWheel
L1GctJetCount< kHfEtSumBits > etSum1
L1GctGlobalHfSumAlgos(const std::vector< L1GctWheelJetFpga * > &WheelJetFpga)
Constructor needs the Wheel card Fpgas set up first.
int bxMin() const
Support for multiple beam crossing operation.
Log< level::Error, false > LogError
std::ostream & operator<<(std::ostream &out, const ALILine &li)
const L1CaloEtScale * lutFunction() const
Return the Lut function.
hfTowerSumsType m_hfInputSumsMinusWheel
void resetProcessor() override
Separate reset methods for the processor itself and any data stored in pipelines. ...
ABC for a GCT trigger data processing unit.
unsigned value() const
access value as unsigned
std::map< L1GctHfEtSumsLut::hfLutType, const L1GctHfEtSumsLut * > m_etSumLuts
const L1GctHfBitCountsLut * getBCLut(const L1GctHfEtSumsLut::hfLutType type) const
Get lut pointers.
~L1GctGlobalHfSumAlgos() override
Destructor.
const std::vector< double > & getThresholds() const
get thresholds
L1GctWheelJetFpga * m_plusWheelJetFpga
LUT for compression of HF feature bit counts to output format.
void storeEtSum(L1GctHfEtSumsLut::hfLutType type, uint16_t value)
std::vector< uint16_t > hfSumsOutput(const L1GctHfEtSumsLut::hfLutType type) const
Access to output quantities.
LUT for compression of HF Et sum to output format.
L1GctJetCount< kHfCountBits > nOverThreshold0
std::map< L1GctHfEtSumsLut::hfLutType, const L1GctHfBitCountsLut * > m_bitCountLuts
hfTowerSumsType getOutputHfSums() const
get the output Hf Sums
const L1GctHfEtSumsLut * getESLut(const L1GctHfEtSumsLut::hfLutType type) const
std::vector< double > getThresholds(const L1GctHfEtSumsLut::hfLutType type) const
Get thresholds.
L1GctJetCount< kHfEtSumBits > etSum0
void resetPipelines() override
void setupLuts(const L1CaloEtScale *scale)
Setup luts.
Log< level::Warning, false > LogWarning
void storeBitCount(L1GctHfEtSumsLut::hfLutType type, uint16_t value)