Emulation of the hardware jet finder. More...
#include <L1GctHardwareJetFinder.h>
Public Member Functions | |
virtual void | fetchInput () |
get input data from sources | |
L1GctHardwareJetFinder (int id) | |
id is 0-8 for -ve Eta jetfinders, 9-17 for +ve Eta, for increasing Phi. | |
virtual void | process () |
process the data, fill output buffers | |
virtual void | reset () |
include additional reset functionality | |
~L1GctHardwareJetFinder () | |
Protected Member Functions | |
virtual unsigned | centralCol0 () const |
virtual unsigned | maxRegionsIn () const |
virtual unsigned | nCols () const |
Private Member Functions | |
void | convertClustersToOutputJets () |
Organise the final clustered jets into L1GctJets. | |
void | convertClustersToProtoJets () |
Organise the pre-clustered jets into the ones we keep and those we send to the neighbour. | |
void | findFinalClusters () |
Convert protojets to final jets. | |
void | findJets () |
The second stage of clustering, called by process() | |
void | findLocalMaxima () |
Find local maxima in the search array. | |
void | findProtoClusters () |
Convert local maxima to clusters. | |
void | findProtoJets () |
The first stage of clustering, called by fetchInput() | |
L1GctRegion | makeProtoJet (L1GctRegion localMax) |
Method to make a single proto-jet. | |
Private Attributes | |
RegionsVector | m_cluster00 |
RegionsVector | m_clusters |
Each local maximum becomes a cluster. | |
RegionsVector | m_localMax00 |
RegionsVector | m_localMaxima |
Local vectors used during both stages of clustering. | |
unsigned | m_numberOfClusters |
The number of local Maxima/clusters found at each stage of clustering. | |
Static Private Attributes | |
static const unsigned int | CENTRAL_COL0 = 0 |
static const unsigned int | MAX_REGIONS_IN = (((L1CaloRegionDetId::N_ETA)/2)+N_EXTRA_REGIONS_ETA00)*L1GctHardwareJetFinder::N_COLS |
The real jetFinders must define these constants. | |
static const unsigned int | N_COLS = 2 |
Friends | |
std::ostream & | operator<< (std::ostream &os, const L1GctHardwareJetFinder &algo) |
Overload << operator. |
Emulation of the hardware jet finder.
Definition at line 21 of file L1GctHardwareJetFinder.h.
L1GctHardwareJetFinder::L1GctHardwareJetFinder | ( | int | id | ) |
id is 0-8 for -ve Eta jetfinders, 9-17 for +ve Eta, for increasing Phi.
Definition at line 8 of file L1GctHardwareJetFinder.cc.
References CENTRAL_COL0, L1GctJetFinderBase::m_id, L1GctJetFinderBase::m_minColThisJf, L1CaloRegionDetId::N_PHI, and reset().
: L1GctJetFinderBase(id), m_localMaxima (MAX_JETS_OUT), m_clusters (MAX_JETS_OUT), m_numberOfClusters(0), m_localMax00(2), m_cluster00 (2) { this->reset(); // Initialise parameters for Region input calculations in the // derived class so we get the right values of constants. static const unsigned NPHI = L1CaloRegionDetId::N_PHI; m_minColThisJf = (NPHI + m_id*2 - CENTRAL_COL0) % NPHI; }
L1GctHardwareJetFinder::~L1GctHardwareJetFinder | ( | ) |
Definition at line 23 of file L1GctHardwareJetFinder.cc.
{ }
virtual unsigned L1GctHardwareJetFinder::centralCol0 | ( | ) | const [inline, protected, virtual] |
Reimplemented from L1GctJetFinderBase.
Definition at line 47 of file L1GctHardwareJetFinder.h.
References CENTRAL_COL0.
Referenced by findFinalClusters(), and findLocalMaxima().
{ return CENTRAL_COL0; }
void L1GctHardwareJetFinder::convertClustersToOutputJets | ( | ) | [private] |
Organise the final clustered jets into L1GctJets.
Definition at line 434 of file L1GctHardwareJetFinder.cc.
References j, L1GctJetFinderBase::m_CenJetSeed, m_clusters, L1GctJetFinderBase::m_EtaBoundry, L1GctJetFinderBase::m_FwdJetSeed, L1GctJetFinderBase::m_outputJets, L1GctJetFinderBase::MAX_JETS_OUT, and groupFilesInBlocks::temp.
Referenced by findJets().
{ for (unsigned j=0; j<MAX_JETS_OUT; ++j) { bool isForward = (m_clusters.at(j).rctEta()>=m_EtaBoundry); unsigned JET_THRESHOLD = ( isForward ? m_FwdJetSeed : m_CenJetSeed); if (m_clusters.at(j).et()>=JET_THRESHOLD) { L1GctJet temp(m_clusters.at(j).et(), m_clusters.at(j).gctEta(), m_clusters.at(j).gctPhi(), m_clusters.at(j).overFlow(), isForward, m_clusters.at(j).tauVeto(), m_clusters.at(j).bx()); m_outputJets.at(j) = temp; } } }
void L1GctHardwareJetFinder::convertClustersToProtoJets | ( | ) | [private] |
Organise the pre-clustered jets into the ones we keep and those we send to the neighbour.
Definition at line 421 of file L1GctHardwareJetFinder.cc.
References j, L1GctJetFinderBase::m_CenJetSeed, m_clusters, L1GctJetFinderBase::m_EtaBoundry, L1GctJetFinderBase::m_FwdJetSeed, L1GctJetFinderBase::m_keptProtoJets, L1GctJetFinderBase::m_sentProtoJets, and L1GctJetFinderBase::MAX_JETS_OUT.
Referenced by findProtoJets().
{ for (unsigned j=0; j<MAX_JETS_OUT; ++j) { bool isForward = (m_clusters.at(j).rctEta()>=m_EtaBoundry); unsigned JET_THRESHOLD = ( isForward ? m_FwdJetSeed : m_CenJetSeed); if (m_clusters.at(j).et()>=JET_THRESHOLD) { m_keptProtoJets.at(j) = m_clusters.at(j); m_sentProtoJets.at(j) = m_clusters.at(j); } } }
void L1GctHardwareJetFinder::fetchInput | ( | ) | [virtual] |
get input data from sources
Implements L1GctJetFinderBase.
Definition at line 40 of file L1GctHardwareJetFinder.cc.
References findProtoJets(), and L1GctJetFinderBase::setupOk().
{ if (setupOk()) { findProtoJets(); } }
void L1GctHardwareJetFinder::findFinalClusters | ( | ) | [private] |
Convert protojets to final jets.
Definition at line 322 of file L1GctHardwareJetFinder.cc.
References centralCol0(), L1GctJetFinderBase::COL_OFFSET, eta(), getHLTprescales::index, j, gen::k, L1GctJetFinderBase::m_CenJetSeed, m_cluster00, m_clusters, L1GctJetFinderBase::m_EtaBoundry, L1GctJetFinderBase::m_FwdJetSeed, L1GctJetFinderBase::m_ignoreTauVetoBitsForIsolation, L1GctJetFinderBase::m_inputRegions, L1GctJetFinderBase::m_keptProtoJets, L1GctJetFinderBase::m_rcvdProtoJets, L1GctJetFinderBase::m_tauIsolationThreshold, L1GctJetFinderBase::m_useImprovedTauAlgo, L1GctRegion::makeFinalJetRegion(), L1GctJetFinderBase::MAX_JETS_OUT, L1GctJetFinderBase::N_EXTRA_REGIONS_ETA00, phi, and groupFilesInBlocks::temp.
Referenced by findJets().
{ m_clusters.clear(); m_clusters.resize(MAX_JETS_OUT); // Loop over proto-jets received from neighbours. // Form a jet to send to the output if there is no proto-jet nearby in the // list of jets found locally. If local jets are found nearby, form a jet // if the received jet has higher Et than any one of the local ones. for (unsigned j=0; j<MAX_JETS_OUT; ++j) { unsigned et0 = m_rcvdProtoJets.at(j).et(); unsigned localEta0 = m_rcvdProtoJets.at(j).rctEta(); unsigned localPhi0 = m_rcvdProtoJets.at(j).rctPhi(); unsigned JET_THRESHOLD = ( (localEta0 >= m_EtaBoundry) ? m_FwdJetSeed : m_CenJetSeed); if (et0>=JET_THRESHOLD) { bool storeJet=false; bool isolated=true; // eta00 boundary check/veto if (localEta0==0) { unsigned neighbourEt=m_cluster00.at(1-localPhi0).et(); isolated &= et0 >= neighbourEt; } // If the jet is NOT vetoed, look at the jets found locally (m_keptProtoJets). // We accept the jet if there are no local jets nearby, or if the local jet // (there should be no more than one) has lower Et. if (isolated) { for (unsigned k=0; k<MAX_JETS_OUT; ++k) { unsigned et1 = m_keptProtoJets.at(k).et(); unsigned localEta1 = m_keptProtoJets.at(k).rctEta(); unsigned localPhi1 = m_keptProtoJets.at(k).rctPhi(); if (et1>0) { bool distantJet = ((localPhi0==localPhi1) || (localEta1 > localEta0+1) || (localEta0 > localEta1+1)); isolated &= distantJet; storeJet |= !distantJet && ((et0 > et1) || ((et0 == et1) && localPhi0==1)); } } } storeJet |= isolated; if (storeJet) { // Start with the et sum, tau veto and overflow flags of the protoJet (2x3 regions) unsigned etCluster = et0; bool ovrFlowOr = m_rcvdProtoJets.at(j).overFlow(); bool tauVetoOr = m_rcvdProtoJets.at(j).tauVeto(); unsigned rgnsAboveIsoThreshold = ( m_rcvdProtoJets.at(j).featureBit0() ? 1 : 0); // Combine with the corresponding regions from // the local array to make a 3x3 jet cluster unsigned column=1-localPhi0; // Which rows are we looking over? unsigned rowStart, rowEnd; static const unsigned row0 = N_EXTRA_REGIONS_ETA00 - 1; rowStart = row0 + localEta0; if (localEta0 < COL_OFFSET - row0 - 2) { rowEnd = rowStart + 3; } else { rowEnd = COL_OFFSET; } unsigned index = COL_OFFSET*(this->centralCol0()+column) + rowStart; for (unsigned row=rowStart; row<rowEnd; ++row) { etCluster += m_inputRegions.at(index).et(); ovrFlowOr |= m_inputRegions.at(index).overFlow(); if (m_useImprovedTauAlgo) { if (!m_ignoreTauVetoBitsForIsolation) { tauVetoOr |= m_inputRegions.at(index).tauVeto(); } // check the region energy against the isolation threshold if (m_inputRegions.at(index).et() >= m_tauIsolationThreshold) { rgnsAboveIsoThreshold++; } } else { tauVetoOr |= m_inputRegions.at(index).tauVeto(); } ++index; } // Store the new jet unsigned eta = m_rcvdProtoJets.at(j).gctEta(); unsigned phi = m_rcvdProtoJets.at(j).gctPhi(); int16_t bx = m_rcvdProtoJets.at(j).bx(); // Use the number of towers over threshold for the isolated tau algorithm if (m_useImprovedTauAlgo) { tauVetoOr |= (rgnsAboveIsoThreshold > 1); } L1GctRegion temp(L1GctRegion::makeFinalJetRegion(etCluster, ovrFlowOr, tauVetoOr, eta, phi, bx)); m_clusters.at(j) = temp; } } } }
void L1GctHardwareJetFinder::findJets | ( | ) | [private] |
The second stage of clustering, called by process()
Definition at line 68 of file L1GctHardwareJetFinder.cc.
References convertClustersToOutputJets(), and findFinalClusters().
Referenced by process().
{ findFinalClusters(); convertClustersToOutputJets(); }
void L1GctHardwareJetFinder::findLocalMaxima | ( | ) | [private] |
Find local maxima in the search array.
Both clustering stages need to find local maxima in the search array.
Definition at line 76 of file L1GctHardwareJetFinder.cc.
References centralCol0(), L1GctJetFinderBase::COL_OFFSET, L1GctJetFinderBase::m_CenJetSeed, L1GctJetFinderBase::m_EtaBoundry, L1GctJetFinderBase::m_FwdJetSeed, L1GctJetFinderBase::m_inputRegions, m_localMax00, m_localMaxima, m_numberOfClusters, L1GctJetFinderBase::m_positiveEtaWheel, L1GctJetFinderBase::MAX_JETS_OUT, and phi.
Referenced by findProtoJets().
{ m_localMaxima.clear(); m_localMaxima.resize(MAX_JETS_OUT); m_localMax00.clear(); m_localMax00.resize(2); UShort jetNum = 0; //holds the number of jets currently found UShort centreIndex = COL_OFFSET*this->centralCol0(); for(UShort column = 0; column <2; ++column) //Find jets in the central search region { // The input regions include two extra bins on the other side of eta=0. This allows "seamless" // jetfinding across the eta=0 boundary. We skip the first input region in each row. We perform // the full pre-clustering on the next region but store the resulting clusters separately // from the main list of output pre-clusters - they will be used in the final cluster stage to // make sure we do not produce jets in adjacent regions on opposite sides of eta=0. ++centreIndex; for (UShort row = 1; row < COL_OFFSET; ++row) { // Here's the array of greater-than and greater-or-equal tests // to ensure each localMaximum appears once and only once in the list // It is different for forward and backward eta. unsigned JET_THRESHOLD = ( (row > m_EtaBoundry) ? m_FwdJetSeed : m_CenJetSeed); bool localMax = !m_inputRegions.at(centreIndex).empty() && (m_inputRegions.at(centreIndex).et()>=JET_THRESHOLD); if (m_positiveEtaWheel) { // Forward eta localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex+1).et()); } if (column==0) { localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex+COL_OFFSET).et()); localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex+COL_OFFSET-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex+COL_OFFSET+1).et()); } } else { localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex-COL_OFFSET).et()); localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex-COL_OFFSET-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex-COL_OFFSET+1).et()); } } } else { // Backward eta localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex+1).et()); } if (column==0) { localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex+COL_OFFSET).et()); localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex+COL_OFFSET-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() >= m_inputRegions.at(centreIndex+COL_OFFSET+1).et()); } } else { localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex-COL_OFFSET).et()); localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex-COL_OFFSET-1).et()); if (row < (COL_OFFSET-1)) { localMax &= (m_inputRegions.at(centreIndex).et() > m_inputRegions.at(centreIndex-COL_OFFSET+1).et()); } } } if (localMax) { if (row>1) { if (jetNum < MAX_JETS_OUT) { m_localMaxima.at(jetNum) = m_inputRegions.at(centreIndex); ++jetNum; } } // Treat row 1 as a separate case. It's not required for jetfinding but // is used for vetoing of jets double counted across the eta=0 boundary else { unsigned phi = m_inputRegions.at(centreIndex).rctPhi(); m_localMax00.at(phi) = m_inputRegions.at(centreIndex); } } ++centreIndex; } } m_numberOfClusters = jetNum; }
void L1GctHardwareJetFinder::findProtoClusters | ( | ) | [private] |
Convert local maxima to clusters.
Definition at line 161 of file L1GctHardwareJetFinder.cc.
References j, gen::k, m_cluster00, m_clusters, m_localMax00, m_localMaxima, m_numberOfClusters, makeProtoJet(), L1GctJetFinderBase::MAX_JETS_OUT, pos, and groupFilesInBlocks::temp.
Referenced by findProtoJets().
{ m_clusters.clear(); m_clusters.resize(MAX_JETS_OUT); m_cluster00.clear(); m_cluster00.resize(2); RegionsVector topJets(MAX_JETS_OUT), botJets(MAX_JETS_OUT); std::vector<unsigned> topJetsPosition(MAX_JETS_OUT), botJetsPosition(MAX_JETS_OUT); unsigned numberOfTopJets=0, numberOfBotJets=0; // Loop over local maxima for (unsigned j=0; j<m_numberOfClusters; ++j) { // Make a proto-jet cluster L1GctRegion temp = makeProtoJet(m_localMaxima.at(j)); if (m_localMaxima.at(j).rctPhi()==0) { // Store "top edge" jets topJets.at(numberOfTopJets) = temp; topJetsPosition.at(numberOfTopJets) = 0; for (unsigned k=0; k<numberOfTopJets; ++k) { if (topJets.at(numberOfTopJets).et() >= topJets.at(k).et()) { ++topJetsPosition.at(k); } if (topJets.at(numberOfTopJets).et() <= topJets.at(k).et()) { ++topJetsPosition.at(numberOfTopJets); } } ++numberOfTopJets; } else { // Store "bottom edge" jets botJets.at(numberOfBotJets) = temp; botJetsPosition.at(numberOfBotJets) = 0; for (unsigned k=0; k<numberOfBotJets; ++k) { if (botJets.at(numberOfBotJets).et() >= botJets.at(k).et()) { ++botJetsPosition.at(k); } if (botJets.at(numberOfBotJets).et() <= botJets.at(k).et()) { ++botJetsPosition.at(numberOfBotJets); } } ++numberOfBotJets; } } // Now we've found all the proto-jets, copy the best ones to the output array // // We fill the first half of the array with "bottom jets" // and the remainder with "top jets". For cases where // we have found too many jets in one phi column, // we keep those with the highest Et. static const unsigned int MAX_TOPBOT_JETS = MAX_JETS_OUT/2; unsigned pos=0; for (unsigned j=0; j<numberOfBotJets; ++j) { if (botJetsPosition.at(j)<MAX_TOPBOT_JETS) { m_clusters.at(pos++) = botJets.at(j); } } pos=MAX_TOPBOT_JETS; for (unsigned j=0; j<numberOfTopJets; ++j) { if (topJetsPosition.at(j)<MAX_TOPBOT_JETS) { m_clusters.at(pos++) = topJets.at(j); } } // Finally, deal with eta00 maxima if (!m_localMax00.at(0).empty()) m_cluster00.at(0) = makeProtoJet(m_localMax00.at(0)); if (!m_localMax00.at(1).empty()) m_cluster00.at(1) = makeProtoJet(m_localMax00.at(1)); }
void L1GctHardwareJetFinder::findProtoJets | ( | ) | [private] |
The first stage of clustering, called by fetchInput()
HERE IS THE JETFINDER CODE.
Definition at line 60 of file L1GctHardwareJetFinder.cc.
References convertClustersToProtoJets(), findLocalMaxima(), and findProtoClusters().
Referenced by fetchInput().
{ findLocalMaxima(); findProtoClusters(); convertClustersToProtoJets(); }
L1GctRegion L1GctHardwareJetFinder::makeProtoJet | ( | L1GctRegion | localMax | ) | [private] |
Method to make a single proto-jet.
Definition at line 223 of file L1GctHardwareJetFinder.cc.
References L1CaloRegion::bx(), L1GctJetFinderBase::COL_OFFSET, eta(), L1CaloRegion::gctEta(), L1CaloRegion::gctPhi(), getHLTprescales::index, L1GctJetFinderBase::m_ignoreTauVetoBitsForIsolation, L1GctJetFinderBase::m_inputRegions, L1GctJetFinderBase::m_positiveEtaWheel, L1GctJetFinderBase::m_tauIsolationThreshold, L1GctJetFinderBase::m_useImprovedTauAlgo, L1GctRegion::makeProtoJetRegion(), L1CaloRegionDetId::N_ETA, L1GctJetFinderBase::N_EXTRA_REGIONS_ETA00, phi, L1GctRegion::rctEta(), L1CaloRegion::rctPhi(), and groupFilesInBlocks::temp.
Referenced by findProtoClusters().
{ unsigned eta = localMax.gctEta(); unsigned phi = localMax.gctPhi(); int16_t bx = localMax.bx(); unsigned localEta = localMax.rctEta(); unsigned localPhi = localMax.rctPhi(); unsigned etCluster = 0; bool ovrFlowOr = false; bool tauVetoOr = false; unsigned rgnsAboveIsoThreshold = 0; // check for row00 const unsigned midEta=(L1CaloRegionDetId::N_ETA)/2; bool wrongEtaWheel = ( (!m_positiveEtaWheel) && (eta>=midEta) ) || ( (m_positiveEtaWheel) && (eta<midEta) ); // Which rows are we looking over? unsigned rowStart, rowEnd, rowMid; static const unsigned row0 = N_EXTRA_REGIONS_ETA00 - 1; if (wrongEtaWheel) { if (localEta > row0 - 1) { rowStart = 0; rowMid = 0; } else { rowStart = row0 - 1 - localEta; rowMid = rowStart + 1; } if (localEta > row0 + 2) { // Shouldn't happen, but big problems if it does rowEnd = 0; } else { rowEnd = row0 + 2 - localEta; } } else { rowStart = row0 + localEta; rowMid = rowStart + 1; if (localEta < COL_OFFSET - row0 - 2) { rowEnd = rowStart + 3; } else { rowEnd = COL_OFFSET; } } for (unsigned row=rowStart; row<rowEnd; ++row) { for (unsigned column=0; column<2; ++column) { unsigned index = column*COL_OFFSET + row; etCluster += m_inputRegions.at(index).et(); ovrFlowOr |= m_inputRegions.at(index).overFlow(); // Distinguish between central and tau-flagged jets. Two versions of the algorithm. if (m_useImprovedTauAlgo) { //=========================================================================================== // "Old" version of improved tau algorithm tests the tau veto for the central region always // if ((row==(localEta+N_EXTRA_REGIONS_ETA00)) && (column==localPhi)) { // // central region - check the tau veto // tauVetoOr |= m_inputRegions.at(index).tauVeto(); // } else { // // other regions - check the tau veto if required // if (!m_ignoreTauVetoBitsForIsolation) { // tauVetoOr |= m_inputRegions.at(index).tauVeto(); // } // // check the region energy against the isolation threshold // if (m_inputRegions.at(index).et() >= m_tauIsolationThreshold) { // rgnsAboveIsoThreshold++; // } // } //=========================================================================================== // In the hardware, the ignoreTauVetoBitsForIsolation switch ignores all the veto bits, // including the one for the central region. if (!((row==rowMid) && (column==localPhi))) { // non-central region - check the region energy against the isolation threshold if (m_inputRegions.at(index).et() >= m_tauIsolationThreshold) { rgnsAboveIsoThreshold++; } } // all regions - check the tau veto if required if (!m_ignoreTauVetoBitsForIsolation) { tauVetoOr |= m_inputRegions.at(index).tauVeto(); } // End of improved tau algorithm } else { // Original tau algorithm tauVetoOr |= m_inputRegions.at(index).tauVeto(); } } } // Encode the number of towers over threshold for the isolated tau algorithm bool tauFeatureBit = false; if (m_useImprovedTauAlgo) { tauVetoOr |= (rgnsAboveIsoThreshold > 1); tauFeatureBit |= (rgnsAboveIsoThreshold == 1); } L1GctRegion temp(L1GctRegion::makeProtoJetRegion(etCluster, ovrFlowOr, tauVetoOr, tauFeatureBit, eta, phi, bx)); return temp; }
virtual unsigned L1GctHardwareJetFinder::maxRegionsIn | ( | ) | const [inline, protected, virtual] |
End of event data ***
---------------------------------------------------------------------------------------
Reimplemented from L1GctJetFinderBase.
Definition at line 46 of file L1GctHardwareJetFinder.h.
References MAX_REGIONS_IN.
{ return MAX_REGIONS_IN; }
virtual unsigned L1GctHardwareJetFinder::nCols | ( | ) | const [inline, protected, virtual] |
Reimplemented from L1GctJetFinderBase.
Definition at line 48 of file L1GctHardwareJetFinder.h.
References N_COLS.
{ return N_COLS; }
void L1GctHardwareJetFinder::process | ( | ) | [virtual] |
process the data, fill output buffers
Implements L1GctJetFinderBase.
Definition at line 47 of file L1GctHardwareJetFinder.cc.
References L1GctJetFinderBase::doEnergySums(), L1GctJetFinderBase::fetchProtoJetsFromNeighbour(), findJets(), L1GctJetFinderBase::setupOk(), L1GctJetFinderBase::sortJets(), and L1GctJetFinderBase::TOPBOT.
{ if (setupOk()) { fetchProtoJetsFromNeighbour(TOPBOT); findJets(); sortJets(); doEnergySums(); } }
void L1GctHardwareJetFinder::reset | ( | void | ) | [virtual] |
include additional reset functionality
Reimplemented from L1GctProcessor.
Definition at line 35 of file L1GctHardwareJetFinder.cc.
Referenced by L1GctHardwareJetFinder().
{ L1GctJetFinderBase::reset(); }
std::ostream& operator<< | ( | std::ostream & | os, |
const L1GctHardwareJetFinder & | algo | ||
) | [friend] |
Overload << operator.
Definition at line 27 of file L1GctHardwareJetFinder.cc.
{ os << "===L1GctHardwareJetFinder===" << std::endl; const L1GctJetFinderBase* temp = &algo; os << *temp; return os; }
const unsigned int L1GctHardwareJetFinder::CENTRAL_COL0 = 0 [static, private] |
Reimplemented from L1GctJetFinderBase.
Definition at line 55 of file L1GctHardwareJetFinder.h.
Referenced by centralCol0(), and L1GctHardwareJetFinder().
Definition at line 67 of file L1GctHardwareJetFinder.h.
Referenced by findFinalClusters(), and findProtoClusters().
Each local maximum becomes a cluster.
Definition at line 60 of file L1GctHardwareJetFinder.h.
Referenced by convertClustersToOutputJets(), convertClustersToProtoJets(), findFinalClusters(), and findProtoClusters().
Definition at line 66 of file L1GctHardwareJetFinder.h.
Referenced by findLocalMaxima(), and findProtoClusters().
Local vectors used during both stages of clustering.
Definition at line 58 of file L1GctHardwareJetFinder.h.
Referenced by findLocalMaxima(), and findProtoClusters().
unsigned L1GctHardwareJetFinder::m_numberOfClusters [private] |
The number of local Maxima/clusters found at each stage of clustering.
Definition at line 63 of file L1GctHardwareJetFinder.h.
Referenced by findLocalMaxima(), and findProtoClusters().
const unsigned int L1GctHardwareJetFinder::MAX_REGIONS_IN = (((L1CaloRegionDetId::N_ETA)/2)+N_EXTRA_REGIONS_ETA00)*L1GctHardwareJetFinder::N_COLS [static, private] |
The real jetFinders must define these constants.
Dependent on number of rows and columns.
Reimplemented from L1GctJetFinderBase.
Definition at line 53 of file L1GctHardwareJetFinder.h.
Referenced by maxRegionsIn().
const unsigned int L1GctHardwareJetFinder::N_COLS = 2 [static, private] |
Reimplemented from L1GctJetFinderBase.
Definition at line 54 of file L1GctHardwareJetFinder.h.
Referenced by nCols().