CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends
L1GctWheelJetFpga Class Reference

Represents a GCT Wheel Jet FPGA. More...

#include <L1GctWheelJetFpga.h>

Inheritance diagram for L1GctWheelJetFpga:
L1GctProcessor

Public Types

typedef L1GctJetLeafCard::hfTowerSumsType hfTowerSumsType
 
typedef L1GctTwosComplement< L1GctInternHtMiss::kMissHxOrHyNBitshtComponentType
 
typedef std::vector< L1GctJetCandJetVector
 

Public Member Functions

void fetchInput () override
 get input data from sources More...
 
JetVector getCentralJets () const
 get the output jets More...
 
JetVector getForwardJets () const
 get the output jets More...
 
JetVector getInputJets () const
 get the input jets. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B... etc. More...
 
std::vector< L1GctInternHtMissgetInternalHtMiss () const
 get the Et sums in internal component format More...
 
hfTowerSumsType getOutputHfSums () const
 get the output Hf Sums More...
 
htComponentType getOutputHx () const
 get the output Ht components More...
 
htComponentType getOutputHy () const
 
JetVector getTauJets () const
 get the output jets More...
 
hfTowerSumsType inputHfSums (unsigned leafnum) const
 get the input Hf Sums More...
 
htComponentType inputHx (unsigned leafnum) const
 get the input Ht components More...
 
htComponentType inputHy (unsigned leafnum) const
 
 L1GctWheelJetFpga (int id, const std::vector< L1GctJetLeafCard *> &inputLeafCards)
 id must be 0 / 1 for -ve/+ve eta halves of CMS More...
 
void process () override
 process the data, fill output buffers More...
 
void setInputJet (int i, const L1GctJetCand &jet)
 set input data More...
 
bool setupOk () const
 Public access to setup check. More...
 
 ~L1GctWheelJetFpga () override
 destructor More...
 
- Public Member Functions inherited from L1GctProcessor
 L1GctProcessor ()
 
void reset ()
 complete reset of processor More...
 
void setBxRange (const int firstBx, const int numberOfBx)
 define the bunch crossing range to process More...
 
void setNextBx (const int bxnum)
 clear input data buffers and process a new bunch crossing More...
 
void setTerse ()
 
bool setupOk () const
 Method to check the setup for this processor. Returns true by default. More...
 
void setVerbose ()
 control output messages More...
 
virtual ~L1GctProcessor ()
 

Static Public Attributes

static const int MAX_JETS_OUT = 4
 Max number of jets of each type we output. More...
 
static const unsigned int MAX_JETS_PER_LEAF
 Max number of jets input from each leaf card. More...
 
static const unsigned int MAX_LEAF_CARDS = 3
 Max number of leaf card pointers. More...
 

Protected Member Functions

void resetPipelines () override
 
void resetProcessor () override
 Separate reset methods for the processor itself and any data stored in pipelines. More...
 
void setupObjects () override
 Initialise inputs with null objects for the correct bunch crossing if required. More...
 
- Protected Member Functions inherited from L1GctProcessor
int bxAbs () const
 
int bxMax () const
 
int bxMin () const
 Support for multiple beam crossing operation. More...
 
int bxRel () const
 
int numOfBx () const
 

Private Member Functions

bool checkSetup () const
 Check the setup, independently of how we have been constructed. More...
 
void classifyJets ()
 Classifies jets into central, forward or tau. More...
 
void setupJetsVectors (const int16_t bx)
 Initialises all the jet vectors with jets of the correct type. More...
 
void storeJets (const JetVector &jets, unsigned short iLeaf, unsigned short offset)
 Puts the output from a jetfinder into the correct index range of the m_inputJets array. More...
 

Private Attributes

JetVector m_centralJets
 
L1GctJetSorterm_centralJetSorter
 Jet sorters. More...
 
JetVector m_forwardJets
 
L1GctJetSorterm_forwardJetSorter
 
int m_id
 algo ID More...
 
std::vector< hfTowerSumsTypem_inputHfSums
 
std::vector< htComponentTypem_inputHx
 
std::vector< htComponentTypem_inputHy
 
JetVector m_inputJets
 input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B... etc. More...
 
std::vector< L1GctJetLeafCard * > m_inputLeafCards
 the jet leaf cards More...
 
hfTowerSumsType m_outputHfSums
 
htComponentType m_outputHx
 
Pipeline< htComponentTypem_outputHxPipe
 
htComponentType m_outputHy
 
Pipeline< htComponentTypem_outputHyPipe
 
JetVector m_rawCentralJets
 
JetVector m_rawForwardJets
 
JetVector m_rawTauJets
 
JetVector m_tauJets
 
L1GctJetSorterm_tauJetSorter
 

Static Private Attributes

static const int MAX_JETS_IN = L1GctWheelJetFpga::MAX_LEAF_CARDS * L1GctWheelJetFpga::MAX_JETS_PER_LEAF
 Maximum number of jets we can have as input. More...
 

Friends

std::ostream & operator<< (std::ostream &os, const L1GctWheelJetFpga &fpga)
 Overload << operator. More...
 

Additional Inherited Members

- Protected Attributes inherited from L1GctProcessor
bool m_verbose
 Flag to control output messages. More...
 

Detailed Description

Represents a GCT Wheel Jet FPGA.

Takes as input the Jet and Ht data from one eta half of CMS (three leaf cards of data) and summarises/reduces this data before passing it onto the L1GctJetFinalStage processing that takes place (physically) on the concentrator card.

Author
Jim Brooke & Robert Frazier
Date
May 2006

Definition at line 29 of file L1GctWheelJetFpga.h.

Member Typedef Documentation

◆ hfTowerSumsType

Definition at line 33 of file L1GctWheelJetFpga.h.

◆ htComponentType

Definition at line 32 of file L1GctWheelJetFpga.h.

◆ JetVector

Definition at line 31 of file L1GctWheelJetFpga.h.

Constructor & Destructor Documentation

◆ L1GctWheelJetFpga()

L1GctWheelJetFpga::L1GctWheelJetFpga ( int  id,
const std::vector< L1GctJetLeafCard *> &  inputLeafCards 
)

id must be 0 / 1 for -ve/+ve eta halves of CMS

Definition at line 16 of file L1GctWheelJetFpga.cc.

References checkSetup(), L1GctProcessor::m_verbose, and setupJetsVectors().

17  : L1GctProcessor(),
18  m_id(id),
19  m_inputLeafCards(inputLeafCards),
33  m_outputHx(0),
34  m_outputHy(0),
37  m_outputHyPipe() {
38  if (checkSetup()) {
39  setupJetsVectors(0); //Initialises all the jet vectors with jets of the correct type.
40 
41  } else {
42  if (m_verbose) {
43  edm::LogError("L1GctSetupError") << "L1GctWheelJetFpga has been incorrectly constructed";
44  }
45  }
46 }
void setupJetsVectors(const int16_t bx)
Initialises all the jet vectors with jets of the correct type.
htComponentType m_outputHy
static const unsigned int MAX_LEAF_CARDS
Max number of leaf card pointers.
bool m_verbose
Flag to control output messages.
std::vector< htComponentType > m_inputHy
std::vector< htComponentType > m_inputHx
JetVector m_inputJets
input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B...
Pipeline< htComponentType > m_outputHxPipe
Log< level::Error, false > LogError
std::vector< hfTowerSumsType > m_inputHfSums
bool checkSetup() const
Check the setup, independently of how we have been constructed.
L1GctJetSorter * m_centralJetSorter
Jet sorters.
htComponentType m_outputHx
Pipeline< htComponentType > m_outputHyPipe
static const int MAX_JETS_IN
Maximum number of jets we can have as input.
static const int MAX_JETS_OUT
Max number of jets of each type we output.
std::vector< L1GctJetLeafCard * > m_inputLeafCards
the jet leaf cards
L1GctJetSorter * m_tauJetSorter
hfTowerSumsType m_outputHfSums
L1GctJetSorter * m_forwardJetSorter

◆ ~L1GctWheelJetFpga()

L1GctWheelJetFpga::~L1GctWheelJetFpga ( )
override

destructor

Definition at line 85 of file L1GctWheelJetFpga.cc.

References m_centralJetSorter, m_forwardJetSorter, and m_tauJetSorter.

85  {
86  if (m_centralJetSorter != nullptr)
87  delete m_centralJetSorter;
88  if (m_forwardJetSorter != nullptr)
89  delete m_forwardJetSorter;
90  if (m_tauJetSorter != nullptr)
91  delete m_tauJetSorter;
92 }
L1GctJetSorter * m_centralJetSorter
Jet sorters.
L1GctJetSorter * m_tauJetSorter
L1GctJetSorter * m_forwardJetSorter

Member Function Documentation

◆ checkSetup()

bool L1GctWheelJetFpga::checkSetup ( ) const
private

Check the setup, independently of how we have been constructed.

Definition at line 48 of file L1GctWheelJetFpga.cc.

References mps_fire::i, m_id, m_inputLeafCards, L1GctProcessor::m_verbose, MAX_LEAF_CARDS, and mps_fire::result.

Referenced by fetchInput(), L1GctWheelJetFpga(), process(), and setupOk().

48  {
49  bool result = true;
50 
51  //Check object construction is ok
52  if (m_id < 0 || m_id > 1) {
53  result = false;
54  if (m_verbose) {
55  edm::LogWarning("L1GctSetupError") << "L1GctWheelJetFpga::L1GctWheelJetFpga() : Wheel Jet FPGA ID " << m_id
56  << " has been incorrectly constructed!\n"
57  << "ID number should be between the range of 0 to 1\n";
58  }
59  }
60 
61  if (m_inputLeafCards.size() != MAX_LEAF_CARDS) {
62  result = false;
63  if (m_verbose) {
64  edm::LogWarning("L1GctSetupError") << "L1GctWheelJetFpga::L1GctWheelJetFpga() : Wheel Jet FPGA ID " << m_id
65  << " has been incorrectly constructed!\n"
66  << "This class needs " << MAX_LEAF_CARDS
67  << " jet leaf card pointers, yet only " << m_inputLeafCards.size()
68  << " leaf card pointers are present.\n";
69  }
70  }
71 
72  for (unsigned int i = 0; i < MAX_LEAF_CARDS; ++i) {
73  if (m_inputLeafCards.at(i) == nullptr) {
74  result = false;
75  if (m_verbose) {
76  edm::LogWarning("L1GctSetupError") << "L1GctWheelJetFpga::L1GctWheelJetFpga() : Wheel Jet FPGA ID " << m_id
77  << " has been incorrectly constructed!\n"
78  << "Leaf card pointer " << i << " has not been set!\n";
79  }
80  }
81  }
82  return result;
83 }
static const unsigned int MAX_LEAF_CARDS
Max number of leaf card pointers.
bool m_verbose
Flag to control output messages.
std::vector< L1GctJetLeafCard * > m_inputLeafCards
the jet leaf cards
Log< level::Warning, false > LogWarning

◆ classifyJets()

void L1GctWheelJetFpga::classifyJets ( )
private

Classifies jets into central, forward or tau.

Definition at line 242 of file L1GctWheelJetFpga.cc.

References m_id, m_inputJets, m_rawCentralJets, m_rawForwardJets, m_rawTauJets, and L1GctProcessor::m_verbose.

Referenced by process().

242  {
243  JetVector::iterator currentJet;
244 
245  unsigned short pos = 0;
246  // In the case of two jets of equal rank, the sort will take the lower priority.
247  // This corresponds to the lower position in the array. In order to mimic the hardware
248  // behaviour, the order of jets from the input leaf cards is maintained here.
249  for (currentJet = m_inputJets.begin(); currentJet != m_inputJets.end(); ++currentJet, ++pos) {
250  if (!currentJet->empty()) {
251  if (currentJet->isForward()) //forward jet
252  {
253  m_rawForwardJets.at(pos) = *currentJet;
254  } else {
255  if (currentJet->isCentral()) //central non-tau jet.
256  {
257  m_rawCentralJets.at(pos) = *currentJet;
258  } else //must be central tau-jet
259  {
260  if (currentJet->isTau()) {
261  m_rawTauJets.at(pos) = *currentJet;
262  } else { //shouldn't get here!
263  if (m_verbose) {
264  edm::LogWarning("L1GctProcessingError")
265  << "Unclassified jet found by WheelJetFpga id " << m_id << ". Jet details follow." << std::endl
266  << *currentJet << std::endl;
267  }
268  }
269  }
270  }
271  }
272  }
273 }
bool m_verbose
Flag to control output messages.
JetVector m_inputJets
input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B...
Log< level::Warning, false > LogWarning

◆ fetchInput()

void L1GctWheelJetFpga::fetchInput ( )
overridevirtual

get input data from sources

Implements L1GctProcessor.

Definition at line 159 of file L1GctWheelJetFpga.cc.

References checkSetup(), m_inputHfSums, m_inputHx, m_inputHy, m_inputLeafCards, L1GctJetFinderBase::MAX_JETS_OUT, MAX_LEAF_CARDS, and storeJets().

159  {
160  if (checkSetup()) {
161  //Get Jets
162  for (unsigned short iLeaf = 0; iLeaf < MAX_LEAF_CARDS; ++iLeaf) {
163  if (m_inputLeafCards.at(iLeaf) != nullptr) { //check that the pointers have been set up!
164 
165  storeJets(m_inputLeafCards.at(iLeaf)->getOutputJetsA(), iLeaf, 0);
166  storeJets(m_inputLeafCards.at(iLeaf)->getOutputJetsB(), iLeaf, L1GctJetFinderBase::MAX_JETS_OUT);
167  storeJets(m_inputLeafCards.at(iLeaf)->getOutputJetsC(), iLeaf, 2 * L1GctJetFinderBase::MAX_JETS_OUT);
168 
169  // Deal with the Ht inputs
170  m_inputHx.at(iLeaf) = m_inputLeafCards.at(iLeaf)->getOutputHx();
171  m_inputHy.at(iLeaf) = m_inputLeafCards.at(iLeaf)->getOutputHy();
172 
173  // Deal with the Hf tower sum inputs
174  m_inputHfSums.at(iLeaf) = m_inputLeafCards.at(iLeaf)->getOutputHfSums();
175  }
176  }
177  }
178 }
static const unsigned int MAX_JETS_OUT
Max of 6 jets found per jetfinder in a 2*11 search area.
static const unsigned int MAX_LEAF_CARDS
Max number of leaf card pointers.
std::vector< htComponentType > m_inputHy
std::vector< htComponentType > m_inputHx
void storeJets(const JetVector &jets, unsigned short iLeaf, unsigned short offset)
Puts the output from a jetfinder into the correct index range of the m_inputJets array.
std::vector< hfTowerSumsType > m_inputHfSums
bool checkSetup() const
Check the setup, independently of how we have been constructed.
std::vector< L1GctJetLeafCard * > m_inputLeafCards
the jet leaf cards

◆ getCentralJets()

JetVector L1GctWheelJetFpga::getCentralJets ( ) const
inline

get the output jets

Definition at line 73 of file L1GctWheelJetFpga.h.

References m_centralJets.

73 { return m_centralJets; }

◆ getForwardJets()

JetVector L1GctWheelJetFpga::getForwardJets ( ) const
inline

get the output jets

Definition at line 76 of file L1GctWheelJetFpga.h.

References m_forwardJets.

76 { return m_forwardJets; }

◆ getInputJets()

JetVector L1GctWheelJetFpga::getInputJets ( ) const
inline

get the input jets. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B... etc.

Definition at line 63 of file L1GctWheelJetFpga.h.

References m_inputJets.

63 { return m_inputJets; }
JetVector m_inputJets
input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B...

◆ getInternalHtMiss()

std::vector< L1GctInternHtMiss > L1GctWheelJetFpga::getInternalHtMiss ( ) const

get the Et sums in internal component format

Definition at line 223 of file L1GctWheelJetFpga.cc.

References nano_mu_digi_cff::bx, L1GctProcessor::bxMin(), L1GctInternHtMiss::emulatorMissHtx(), L1GctInternHtMiss::emulatorMissHty(), m_outputHxPipe, m_outputHyPipe, L1GctProcessor::numOfBx(), and mps_fire::result.

223  {
224  std::vector<L1GctInternHtMiss> result;
225  for (int bx = 0; bx < numOfBx(); bx++) {
226  result.push_back(L1GctInternHtMiss::emulatorMissHtx(m_outputHxPipe.contents.at(bx).value(),
227  m_outputHxPipe.contents.at(bx).overFlow(),
228  static_cast<int16_t>(bx - bxMin())));
229  result.push_back(L1GctInternHtMiss::emulatorMissHty(m_outputHyPipe.contents.at(bx).value(),
230  m_outputHyPipe.contents.at(bx).overFlow(),
231  static_cast<int16_t>(bx - bxMin())));
232  }
233  return result;
234 }
int numOfBx() const
static L1GctInternHtMiss emulatorMissHty(const int hty, const bool overFlow, const int16_t bx)
Named ctor for making missing Ht y component object from emulator.
Pipeline< htComponentType > m_outputHxPipe
int bxMin() const
Support for multiple beam crossing operation.
static L1GctInternHtMiss emulatorMissHtx(const int htx, const bool overFlow, const int16_t bx)
Named ctor for making missing Ht x component object from emulator.
Pipeline< htComponentType > m_outputHyPipe

◆ getOutputHfSums()

hfTowerSumsType L1GctWheelJetFpga::getOutputHfSums ( ) const
inline

get the output Hf Sums

Definition at line 86 of file L1GctWheelJetFpga.h.

References m_outputHfSums.

Referenced by L1GctGlobalHfSumAlgos::fetchInput().

86 { return m_outputHfSums; }
hfTowerSumsType m_outputHfSums

◆ getOutputHx()

htComponentType L1GctWheelJetFpga::getOutputHx ( ) const
inline

get the output Ht components

Definition at line 82 of file L1GctWheelJetFpga.h.

References m_outputHx.

Referenced by L1GctGlobalEnergyAlgos::fetchInput().

82 { return m_outputHx; }
htComponentType m_outputHx

◆ getOutputHy()

htComponentType L1GctWheelJetFpga::getOutputHy ( ) const
inline

Definition at line 83 of file L1GctWheelJetFpga.h.

References m_outputHy.

Referenced by L1GctGlobalEnergyAlgos::fetchInput().

83 { return m_outputHy; }
htComponentType m_outputHy

◆ getTauJets()

JetVector L1GctWheelJetFpga::getTauJets ( ) const
inline

get the output jets

Definition at line 79 of file L1GctWheelJetFpga.h.

References m_tauJets.

79 { return m_tauJets; }

◆ inputHfSums()

hfTowerSumsType L1GctWheelJetFpga::inputHfSums ( unsigned  leafnum) const
inline

get the input Hf Sums

Definition at line 70 of file L1GctWheelJetFpga.h.

References m_inputHfSums.

70 { return m_inputHfSums.at(leafnum); }
std::vector< hfTowerSumsType > m_inputHfSums

◆ inputHx()

htComponentType L1GctWheelJetFpga::inputHx ( unsigned  leafnum) const
inline

get the input Ht components

Definition at line 66 of file L1GctWheelJetFpga.h.

References m_inputHx.

66 { return m_inputHx.at(leafnum); }
std::vector< htComponentType > m_inputHx

◆ inputHy()

htComponentType L1GctWheelJetFpga::inputHy ( unsigned  leafnum) const
inline

Definition at line 67 of file L1GctWheelJetFpga.h.

References m_inputHy.

67 { return m_inputHy.at(leafnum); }
std::vector< htComponentType > m_inputHy

◆ process()

void L1GctWheelJetFpga::process ( )
overridevirtual

process the data, fill output buffers

Implements L1GctProcessor.

Definition at line 180 of file L1GctWheelJetFpga.cc.

References L1GctProcessor::bxRel(), checkSetup(), classifyJets(), L1GctJetSorter::getSortedJets(), m_centralJets, m_centralJetSorter, m_forwardJets, m_forwardJetSorter, m_inputHfSums, m_inputHx, m_inputHy, m_outputHfSums, m_outputHx, m_outputHxPipe, m_outputHy, m_outputHyPipe, m_rawCentralJets, m_rawForwardJets, m_rawTauJets, m_tauJets, m_tauJetSorter, MAX_JETS_OUT, and L1GctJetSorter::setJets().

180  {
181  if (checkSetup()) {
182  classifyJets();
183 
187 
191 
192  for (unsigned short iJet = 0; iJet < MAX_JETS_OUT; ++iJet) {
193  m_centralJets.at(iJet) = m_rawCentralJets.at(iJet);
194  m_forwardJets.at(iJet) = m_rawForwardJets.at(iJet);
195  m_tauJets.at(iJet) = m_rawTauJets.at(iJet);
196  }
197 
198  //Ht processing
199  m_outputHx = m_inputHx.at(0) + m_inputHx.at(1) + m_inputHx.at(2);
200  m_outputHy = m_inputHy.at(0) + m_inputHy.at(1) + m_inputHy.at(2);
201 
202  //Hf tower sums processing
204 
205  m_outputHxPipe.store(m_outputHx, bxRel());
206  m_outputHyPipe.store(m_outputHy, bxRel());
207  }
208 }
htComponentType m_outputHy
std::vector< htComponentType > m_inputHy
std::vector< htComponentType > m_inputHx
Pipeline< htComponentType > m_outputHxPipe
int bxRel() const
std::vector< hfTowerSumsType > m_inputHfSums
bool checkSetup() const
Check the setup, independently of how we have been constructed.
L1GctJetSorter * m_centralJetSorter
Jet sorters.
JetVector getSortedJets() const
htComponentType m_outputHx
Pipeline< htComponentType > m_outputHyPipe
static const int MAX_JETS_OUT
Max number of jets of each type we output.
L1GctJetSorter * m_tauJetSorter
void setJets(JetVector &inputJets)
hfTowerSumsType m_outputHfSums
L1GctJetSorter * m_forwardJetSorter
void classifyJets()
Classifies jets into central, forward or tau.

◆ resetPipelines()

void L1GctWheelJetFpga::resetPipelines ( )
overrideprotectedvirtual

Implements L1GctProcessor.

Definition at line 154 of file L1GctWheelJetFpga.cc.

References m_outputHxPipe, m_outputHyPipe, and L1GctProcessor::numOfBx().

154  {
155  m_outputHxPipe.reset(numOfBx());
156  m_outputHyPipe.reset(numOfBx());
157 }
int numOfBx() const
Pipeline< htComponentType > m_outputHxPipe
Pipeline< htComponentType > m_outputHyPipe

◆ resetProcessor()

void L1GctWheelJetFpga::resetProcessor ( )
overrideprotectedvirtual

Separate reset methods for the processor itself and any data stored in pipelines.

Implements L1GctProcessor.

Definition at line 141 of file L1GctWheelJetFpga.cc.

References mps_fire::i, m_inputHfSums, m_inputHx, m_inputHy, m_outputHfSums, m_outputHx, m_outputHy, MAX_LEAF_CARDS, L1GctTwosComplement< nBits >::reset(), and L1GctJetFinderBase::hfTowerSumsType::reset().

141  {
142  for (unsigned int i = 0; i < MAX_LEAF_CARDS; ++i) {
143  m_inputHx.at(i).reset();
144  m_inputHy.at(i).reset();
145  m_inputHfSums.at(i).reset();
146  }
147  m_outputHx.reset();
148  m_outputHy.reset();
150 }
htComponentType m_outputHy
static const unsigned int MAX_LEAF_CARDS
Max number of leaf card pointers.
std::vector< htComponentType > m_inputHy
std::vector< htComponentType > m_inputHx
std::vector< hfTowerSumsType > m_inputHfSums
htComponentType m_outputHx
void reset()
reset value and overflow to zero
hfTowerSumsType m_outputHfSums

◆ setInputJet()

void L1GctWheelJetFpga::setInputJet ( int  i,
const L1GctJetCand jet 
)

set input data

Definition at line 210 of file L1GctWheelJetFpga.cc.

References mps_fire::i, metsig::jet, m_id, m_inputJets, L1GctProcessor::m_verbose, and MAX_JETS_IN.

210  {
211  if (i >= 0 && i < MAX_JETS_IN) {
212  m_inputJets.at(i) = jet;
213  } else {
214  if (m_verbose) {
215  edm::LogError("L1GctInputError") << "L1GctWheelJetFpga::setInputJet() : In WheelJetFpga ID " << m_id
216  << ", inputted jet candidate " << i << " is outside input index range of 0 to "
217  << (MAX_JETS_IN - 1) << "\n";
218  }
219  }
220 }
bool m_verbose
Flag to control output messages.
JetVector m_inputJets
input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B...
Log< level::Error, false > LogError
static const int MAX_JETS_IN
Maximum number of jets we can have as input.

◆ setupJetsVectors()

void L1GctWheelJetFpga::setupJetsVectors ( const int16_t  bx)
private

Initialises all the jet vectors with jets of the correct type.

Definition at line 275 of file L1GctWheelJetFpga.cc.

References nano_mu_digi_cff::bx, m_centralJets, m_forwardJets, m_rawCentralJets, m_rawForwardJets, m_rawTauJets, m_tauJets, MAX_JETS_IN, and MAX_JETS_OUT.

Referenced by L1GctWheelJetFpga(), and setupObjects().

275  {
276  // Create empty jet candidates with the three different combinations
277  // of flags, corresponding to central, forward and tau jets
278  L1GctJetCand tempCen(0, 0, 0, false, false, (uint16_t)0, (uint16_t)0, bx);
279  L1GctJetCand tempTau(0, 0, 0, true, false, (uint16_t)0, (uint16_t)0, bx);
280  L1GctJetCand tempFwd(0, 0, 0, false, true, (uint16_t)0, (uint16_t)0, bx);
281 
282  // Initialize the jet vectors with copies of the appropriate empty jet type
283  m_rawCentralJets.assign(MAX_JETS_IN, tempCen);
284  m_rawTauJets.assign(MAX_JETS_IN, tempTau);
285  m_rawForwardJets.assign(MAX_JETS_IN, tempFwd);
286 
287  m_centralJets.assign(MAX_JETS_OUT, tempCen);
288  m_tauJets.assign(MAX_JETS_OUT, tempTau);
289  m_forwardJets.assign(MAX_JETS_OUT, tempFwd);
290 }
Level-1 Trigger jet candidate.
Definition: L1GctJetCand.h:17
static const int MAX_JETS_IN
Maximum number of jets we can have as input.
static const int MAX_JETS_OUT
Max number of jets of each type we output.

◆ setupObjects()

void L1GctWheelJetFpga::setupObjects ( )
overrideprotectedvirtual

Initialise inputs with null objects for the correct bunch crossing if required.

Implements L1GctProcessor.

Definition at line 152 of file L1GctWheelJetFpga.cc.

References L1GctProcessor::bxAbs(), and setupJetsVectors().

152 { setupJetsVectors(static_cast<int16_t>(bxAbs())); }
void setupJetsVectors(const int16_t bx)
Initialises all the jet vectors with jets of the correct type.
int bxAbs() const

◆ setupOk()

bool L1GctWheelJetFpga::setupOk ( ) const
inline

Public access to setup check.

Definition at line 89 of file L1GctWheelJetFpga.h.

References checkSetup().

89 { return checkSetup(); }
bool checkSetup() const
Check the setup, independently of how we have been constructed.

◆ storeJets()

void L1GctWheelJetFpga::storeJets ( const JetVector jets,
unsigned short  iLeaf,
unsigned short  offset 
)
private

Puts the output from a jetfinder into the correct index range of the m_inputJets array.

Definition at line 236 of file L1GctWheelJetFpga.cc.

References PDWG_EXODelayedJetMET_cff::jets, m_inputJets, L1GctJetFinderBase::MAX_JETS_OUT, MAX_JETS_PER_LEAF, and hltrates_dqm_sourceclient-live_cfg::offset.

Referenced by fetchInput().

236  {
237  for (unsigned short iJet = 0; iJet < L1GctJetFinderBase::MAX_JETS_OUT; ++iJet) {
238  m_inputJets.at(iLeaf * MAX_JETS_PER_LEAF + offset + iJet) = jets.at(iJet);
239  }
240 }
static const unsigned int MAX_JETS_OUT
Max of 6 jets found per jetfinder in a 2*11 search area.
JetVector m_inputJets
input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B...
static const unsigned int MAX_JETS_PER_LEAF
Max number of jets input from each leaf card.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const L1GctWheelJetFpga fpga 
)
friend

Overload << operator.

Definition at line 94 of file L1GctWheelJetFpga.cc.

94  {
95  using std::endl;
96  os << "===L1GctWheelJetFPGA===" << endl;
97  os << "ID = " << fpga.m_id << endl;
98  os << "No of Input Leaf Cards " << fpga.m_inputLeafCards.size() << endl;
99  for (unsigned i = 0; i < fpga.m_inputLeafCards.size(); i++) {
100  os << "InputLeafCard* " << i << " = " << fpga.m_inputLeafCards.at(i) << endl;
101  }
102  // os << "No. of Input Jets " << fpga.m_inputJets.size() << endl;
103  // for(unsigned i=0; i < fpga.m_inputJets.size(); i++)
104  // {
105  // os << fpga.m_inputJets.at(i);
106  // }
107  // os << "No. of raw central Jets " << fpga.m_rawCentralJets.size() << endl;
108  // for(unsigned i=0; i < fpga.m_rawCentralJets.size(); i++)
109  // {
110  // os << fpga.m_rawCentralJets.at(i);
111  // }
112  // os << "No. of raw forward Jets " << fpga.m_rawForwardJets.size() << endl;
113  // for(unsigned i=0; i < fpga.m_rawForwardJets.size(); i++)
114  // {
115  // os << fpga.m_rawForwardJets.at(i);
116  // }
117  // os << "No. of raw tau Jets " << fpga.m_rawTauJets.size() << endl;
118  // for(unsigned i=0; i < fpga.m_rawTauJets.size(); i++)
119  // {
120  // os << fpga.m_rawTauJets.at(i);
121  // }
122  // os << "No. of output central Jets " << fpga.m_centralJets.size() << endl;
123  // for(unsigned i=0; i < fpga.m_centralJets.size(); i++)
124  // {
125  // os << fpga.m_centralJets.at(i);
126  // }
127  // os << "No. of output forward Jets " << fpga.m_forwardJets.size() << endl;
128  // for(unsigned i=0; i < fpga.m_forwardJets.size(); i++)
129  // {
130  // os << fpga.m_forwardJets.at(i);
131  // }
132  // os << "No. of output tau Jets " << fpga.m_tauJets.size() << endl;
133  // for(unsigned i=0; i < fpga.m_tauJets.size(); i++)
134  // {
135  // os << fpga.m_tauJets.at(i);
136  // }
137  os << endl;
138  return os;
139 }
std::vector< L1GctJetLeafCard * > m_inputLeafCards
the jet leaf cards

Member Data Documentation

◆ m_centralJets

JetVector L1GctWheelJetFpga::m_centralJets
private

Definition at line 132 of file L1GctWheelJetFpga.h.

Referenced by getCentralJets(), process(), and setupJetsVectors().

◆ m_centralJetSorter

L1GctJetSorter* L1GctWheelJetFpga::m_centralJetSorter
private

Jet sorters.

Definition at line 112 of file L1GctWheelJetFpga.h.

Referenced by process(), and ~L1GctWheelJetFpga().

◆ m_forwardJets

JetVector L1GctWheelJetFpga::m_forwardJets
private

Definition at line 133 of file L1GctWheelJetFpga.h.

Referenced by getForwardJets(), process(), and setupJetsVectors().

◆ m_forwardJetSorter

L1GctJetSorter* L1GctWheelJetFpga::m_forwardJetSorter
private

Definition at line 113 of file L1GctWheelJetFpga.h.

Referenced by process(), and ~L1GctWheelJetFpga().

◆ m_id

int L1GctWheelJetFpga::m_id
private

algo ID

Definition at line 106 of file L1GctWheelJetFpga.h.

Referenced by checkSetup(), classifyJets(), operator<<(), and setInputJet().

◆ m_inputHfSums

std::vector<hfTowerSumsType> L1GctWheelJetFpga::m_inputHfSums
private

Definition at line 129 of file L1GctWheelJetFpga.h.

Referenced by fetchInput(), inputHfSums(), process(), and resetProcessor().

◆ m_inputHx

std::vector<htComponentType> L1GctWheelJetFpga::m_inputHx
private

Definition at line 125 of file L1GctWheelJetFpga.h.

Referenced by fetchInput(), inputHx(), process(), and resetProcessor().

◆ m_inputHy

std::vector<htComponentType> L1GctWheelJetFpga::m_inputHy
private

Definition at line 126 of file L1GctWheelJetFpga.h.

Referenced by fetchInput(), inputHy(), process(), and resetProcessor().

◆ m_inputJets

JetVector L1GctWheelJetFpga::m_inputJets
private

input data. Jets 0-5 from leaf card 0, jetfinderA. Jets 6-11 from leaf card 0, jetfinder B... etc.

Definition at line 117 of file L1GctWheelJetFpga.h.

Referenced by classifyJets(), getInputJets(), setInputJet(), and storeJets().

◆ m_inputLeafCards

std::vector<L1GctJetLeafCard*> L1GctWheelJetFpga::m_inputLeafCards
private

the jet leaf cards

Definition at line 109 of file L1GctWheelJetFpga.h.

Referenced by checkSetup(), fetchInput(), and operator<<().

◆ m_outputHfSums

hfTowerSumsType L1GctWheelJetFpga::m_outputHfSums
private

Definition at line 139 of file L1GctWheelJetFpga.h.

Referenced by getOutputHfSums(), process(), and resetProcessor().

◆ m_outputHx

htComponentType L1GctWheelJetFpga::m_outputHx
private

Definition at line 137 of file L1GctWheelJetFpga.h.

Referenced by getOutputHx(), process(), and resetProcessor().

◆ m_outputHxPipe

Pipeline<htComponentType> L1GctWheelJetFpga::m_outputHxPipe
private

Definition at line 141 of file L1GctWheelJetFpga.h.

Referenced by getInternalHtMiss(), process(), and resetPipelines().

◆ m_outputHy

htComponentType L1GctWheelJetFpga::m_outputHy
private

Definition at line 138 of file L1GctWheelJetFpga.h.

Referenced by getOutputHy(), process(), and resetProcessor().

◆ m_outputHyPipe

Pipeline<htComponentType> L1GctWheelJetFpga::m_outputHyPipe
private

Definition at line 142 of file L1GctWheelJetFpga.h.

Referenced by getInternalHtMiss(), process(), and resetPipelines().

◆ m_rawCentralJets

JetVector L1GctWheelJetFpga::m_rawCentralJets
private

Definition at line 120 of file L1GctWheelJetFpga.h.

Referenced by classifyJets(), process(), and setupJetsVectors().

◆ m_rawForwardJets

JetVector L1GctWheelJetFpga::m_rawForwardJets
private

Definition at line 121 of file L1GctWheelJetFpga.h.

Referenced by classifyJets(), process(), and setupJetsVectors().

◆ m_rawTauJets

JetVector L1GctWheelJetFpga::m_rawTauJets
private

Definition at line 122 of file L1GctWheelJetFpga.h.

Referenced by classifyJets(), process(), and setupJetsVectors().

◆ m_tauJets

JetVector L1GctWheelJetFpga::m_tauJets
private

Definition at line 134 of file L1GctWheelJetFpga.h.

Referenced by getTauJets(), process(), and setupJetsVectors().

◆ m_tauJetSorter

L1GctJetSorter* L1GctWheelJetFpga::m_tauJetSorter
private

Definition at line 114 of file L1GctWheelJetFpga.h.

Referenced by process(), and ~L1GctWheelJetFpga().

◆ MAX_JETS_IN

const int L1GctWheelJetFpga::MAX_JETS_IN = L1GctWheelJetFpga::MAX_LEAF_CARDS * L1GctWheelJetFpga::MAX_JETS_PER_LEAF
staticprivate

Maximum number of jets we can have as input.

Definition at line 103 of file L1GctWheelJetFpga.h.

Referenced by setInputJet(), and setupJetsVectors().

◆ MAX_JETS_OUT

const int L1GctWheelJetFpga::MAX_JETS_OUT = 4
static

Max number of jets of each type we output.

Definition at line 36 of file L1GctWheelJetFpga.h.

Referenced by process(), setupJetsVectors(), and L1GctJetFinalStage::storeJets().

◆ MAX_JETS_PER_LEAF

const unsigned int L1GctWheelJetFpga::MAX_JETS_PER_LEAF
static
Initial value:

Max number of jets input from each leaf card.

Definition at line 42 of file L1GctWheelJetFpga.h.

Referenced by storeJets().

◆ MAX_LEAF_CARDS

const unsigned int L1GctWheelJetFpga::MAX_LEAF_CARDS = 3
static

Max number of leaf card pointers.

Definition at line 39 of file L1GctWheelJetFpga.h.

Referenced by checkSetup(), fetchInput(), and resetProcessor().