18 m_whichJetFinder(jfType),
20 m_exSum(0), m_eySum(0),
21 m_hxSum(0), m_hySum(0),
22 m_etSum(0), m_htSum(0),
24 m_exSumPipe(), m_eySumPipe(),
25 m_hxSumPipe(), m_hySumPipe(),
26 m_etSumPipe(), m_htSumPipe(),
31 if(m_id < 0 || m_id > 5)
36 <<
"L1GctJetLeafCard::L1GctJetLeafCard() : Jet Leaf Card ID " <<
m_id <<
" has been incorrectly constructed!\n" 37 <<
"ID number should be between the range of 0 to 5\n";
47 <<
"L1GctJetLeafCard::L1GctJetLeafCard() : Jet Leaf Card ID " <<
m_id <<
" has been incorrectly constructed!\n" 48 <<
"Argument iphi is " <<
phiPosition <<
", should be " << (
m_id%3) <<
" for this ID value \n";
76 <<
"L1GctJetLeafCard::L1GctJetLeafCard() : Jet Leaf Card ID " <<
m_id <<
" has been incorrectly constructed!\n" 77 <<
"Unrecognised jetFinder type " <<
m_whichJetFinder <<
", cannot setup jetFinders\n";
83 edm::LogError(
"L1GctSetupError") <<
"Jet Leaf Card ID " <<
m_id <<
" has been incorrectly constructed";
97 std::vector<L1GctJetFinderBase*> jfNeighbours(2);
99 if (neighbours.size()==2) {
101 jfNeighbours.at(0) = neighbours.at(0)->getJetFinderC();
110 jfNeighbours.at(1) = neighbours.at(1)->getJetFinderA();
117 <<
"L1GctJetLeafCard::setNeighbourLeafCards() : In Jet Leaf Card ID " <<
m_id 118 <<
" size of input vector should be 2, but is in fact " << neighbours.size() <<
"\n";
127 s <<
"===L1GctJetLeafCard===" << endl;
128 s <<
"ID = " << card.
m_id << endl;
130 s <<
"Ex " << card.
m_exSum << endl;
131 s <<
"Ey " << card.
m_eySum << endl;
132 s <<
"Hx " << card.
m_hxSum << endl;
133 s <<
"Hy " << card.
m_hySum << endl;
134 s <<
"Et " << card.
m_etSum << endl;
135 s <<
"Ht " << card.
m_htSum << endl;
271 std::vector< L1GctInternEtSum >
result;
272 for (
int bx=0; bx<
numOfBx(); bx++) {
275 static_cast<int16_t
> (bx-
bxMin()) ) );
278 static_cast<int16_t
> (bx-
bxMin()) ) );
281 static_cast<int16_t
> (bx-
bxMin()) ) );
284 static_cast<int16_t
> (bx-
bxMin()) ) );
292 std::vector< L1GctInternHtMiss >
result;
293 for (
int bx=0; bx<
numOfBx(); bx++) {
297 static_cast<int16_t
> (bx-
bxMin()) ) );
void reset()
complete reset of processor
std::vector< L1GctInternHtMiss > getInternalHtMiss() const
Pipeline< htComponentType > m_hxSumPipe
3*3 sliding window algorithm jet finder.
L1GctJetFinderBase * m_jetFinderB
middle jetFinder in phi
std::vector< L1GctJetCand > JetVector
void reset()
clear internal buffers
friend std::ostream & operator<<(std::ostream &os, const L1GctJetLeafCard &card)
Overload << operator.
~L1GctJetLeafCard() override
static L1GctInternEtSum fromEmulatorJetTotEt(unsigned totEt, bool overFlow, int16_t bx)
Emulator constructors.
L1GctJetFinderBase * m_jetFinderC
highest jetFinder in phi
bool m_verbose
Flag to control output messages.
Pipeline< etHadType > m_htSumPipe
Pipeline< etTotalType > m_etSumPipe
etCompInternJfType getEySum() const
Get the y component of vector Et summed over the input regions.
bool setupOk() const
Check setup is Ok.
no-op jet finder for test purposes.
int bxMin() const
Support for multiple beam crossing operation.
void setNeighbourJetFinders(const std::vector< L1GctJetFinderBase * > &neighbours)
Set pointers to neighbours - needed to complete the setup.
std::vector< L1GctInternEtSum > getInternalEtSums() const
get the Et sums in internal component format
ABC for a GCT trigger data processing unit.
void process() override
process the data and set outputs
std::vector< L1GctJetCand > getOutputJetsA() const
Output jetfinder A jets (lowest jetFinder in phi)
static L1GctInternEtSum fromEmulatorJetTotHt(unsigned totHt, bool overFlow, int16_t bx)
etCompInternJfType getExSum() const
Get the x component of vector Et summed over the input regions.
void process() override=0
process the data, fill output buffers; to be filled in by derived jetFinders
void resetProcessor() override
Separate reset methods for the processor itself and any data stored in pipelines. ...
Pipeline< etComponentType > m_eySumPipe
JetVector getJets() const
Get the located jets.
Pipeline< htComponentType > m_hySumPipe
etTotalType getEtSum() const
Get the scalar sum of Et summed over the input regions.
void fetchInput() override
set the input buffers
etHadType getHtSum() const
Get the scalar sum of Ht summed over jets above threshold.
std::vector< L1GctJetCand > getOutputJetsB() const
Output jetfinder B jets (middle jetFinder in phi)
void setBxRange(const int firstBx, const int numberOfBx)
define the bunch crossing range to process
void setBxRange(const int firstBx, const int numberOfBx)
define the bunch crossing range to process
jetFinderType m_whichJetFinder
htCompInternJfType getHySum() const
Get the y component of vector Ht summed over jets above threshold.
htCompInternJfType getHxSum() const
Get the x component of vector Ht summed over jets above threshold.
void setNextBx(const int bx)
partially clear buffers
void setNeighbourLeafCards(const std::vector< L1GctJetLeafCard * > &neighbours)
set pointers to neighbours - needed to complete the setup
static const int MAX_JET_FINDERS
Number of jetfinders per jet leaf card.
static L1GctInternHtMiss emulatorMissHtxHty(const int htx, const int hty, const bool overFlow, const int16_t bx)
Named ctor for making missing Ht x & y components object from emulator (wheel input).
std::vector< L1GctJetCand > getOutputJetsC() const
Ouptut jetfinder C jets (highest jetFinder in phi)
void fetchInput() override=0
get input data from sources; to be filled in by derived jetFinders
L1GctJetLeafCard(int id, int iphi, jetFinderType jfType=tdrJetFinder)
hfTowerSumsType getHfSums() const
Get the Hf tower Et sums and tower-over-threshold counts.
void reset()
reset value and overflow to zero
L1GctTwosComplement< L1GctInternHtMiss::kMissHxOrHyNBits > htComponentType
L1GctJetFinderBase * m_jetFinderA
lowest jetFinder in phi
void setValue(unsigned value)
Set value from unsigned.
Pipeline< hfTowerSumsType > m_hfSumsPipe
bool setupOk() const
Check setup is Ok.
void reset()
reset value and overflow to zero
Emulation of the hardware jet finder.
Pipeline< etComponentType > m_exSumPipe
static L1GctInternEtSum fromEmulatorJetMissEt(int missEtxOrEty, bool overFlow, int16_t bx)
L1GctTwosComplement< L1GctInternEtSum::kMissExOrEyNBits > etComponentType
bool overFlow() const
access overflow
void setNextBx(const int bxnum)
clear input data buffers and process a new bunch crossing
void resetPipelines() override