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.
static L1GctInternEtSum fromEmulatorJetTotEt(unsigned totEt, bool overFlow, int16_t bx)
Emulator constructors.
virtual void resetProcessor()
Separate reset methods for the processor itself and any data stored in pipelines. ...
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.
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.
virtual void process()
process the data and set outputs
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.
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)
virtual void fetchInput()
set the input buffers
void setBxRange(const int firstBx, const int numberOfBx)
define the bunch crossing range to process
virtual void process()=0
process the data, fill output buffers; to be filled in by derived jetFinders
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)
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
virtual void fetchInput()=0
get input data from sources; to be filled in by derived jetFinders
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)
virtual void resetPipelines()
L1GctTwosComplement< L1GctInternEtSum::kMissExOrEyNBits > etComponentType
bool overFlow() const
access overflow
void setNextBx(const int bxnum)
clear input data buffers and process a new bunch crossing