CMS 3D CMS Logo

L1GlobalCaloTrigger.h
Go to the documentation of this file.
1 #ifndef L1GLOBALCALOTRIGGER_H_
2 #define L1GLOBALCALOTRIGGER_H_
3 
6 
8 
10 
13 
14 #include <vector>
15 
28 class L1GctJetLeafCard;
29 class L1GctJetFinderBase;
30 class L1GctEmLeafCard;
32 
33 class L1GctWheelJetFpga;
35 class L1GctJetFinalStage;
41 class L1GctChannelMask;
42 class L1CaloEtScale;
43 
45 public:
47  static const int N_JET_LEAF_CARDS;
49  static const int N_EM_LEAF_CARDS;
51  static const int N_WHEEL_CARDS;
52 
58 
61 
64  unsigned jetLeafMask = 0);
65 
68 
70  void reset();
71 
73  void process();
74 
79  void setJetFinderParams(const L1GctJetFinderParams* const jfpars);
80 
82  void setJetEtCalibrationLuts(const lutPtrVector& jfluts);
83 
85  void setupTauAlgo(const bool useImprovedAlgo, const bool ignoreVetoBitsForIsolation);
86 
88  void setHtMissScale(const L1CaloEtScale* const scale);
89 
91  void setupHfSumLuts(const L1CaloEtScale* const scale);
92 
94  void setChannelMask(const L1GctChannelMask* const mask);
95 
101  void setBxRange(const int firstBx, const int lastBx);
103  void setBxRangeSymmetric(const int numOfBx);
105  void setBxRangeAutomatic();
106 
108  int getFirstBx() const { return m_bxStart; }
109  int getLastBx() const { return (m_bxStart + m_numOfBx - 1); }
110  int getTotalBx() const { return m_numOfBx; }
111 
117  void fillRegions(const std::vector<L1CaloRegion>& rgn);
118 
120  void fillEmCands(const std::vector<L1CaloEmCand>& rgn);
121 
124  void setRegion(const L1CaloRegion& region);
125 
127  void setRegion(const unsigned et,
128  const unsigned ieta,
129  const unsigned iphi,
130  const bool overFlow = false,
131  const bool fineGrain = true);
132 
134  void setIsoEm(const L1CaloEmCand& em);
135 
137  void setNonIsoEm(const L1CaloEmCand& em);
138 
144 
147 
150 
153 
156 
159 
162 
165 
168 
171 
175 
176  // Hf sums output to GT
179 
184  std::vector<L1GctJetLeafCard*> getJetLeafCards() const { return theJetLeafCards; }
185 
187  std::vector<L1GctEmLeafCard*> getEmLeafCards() const { return theEmLeafCards; }
188 
190  std::vector<L1GctWheelJetFpga*> getWheelJetFpgas() const { return theWheelJetFpgas; }
191 
193  std::vector<L1GctWheelEnergyFpga*> getWheelEnergyFpgas() const { return theWheelEnergyFpgas; }
194 
197 
200 
203 
207 
210 
212  const lutPtrVector getJetEtCalibLuts() const { return m_jetEtCalLuts; }
213 
218  void print();
219 
221  void setVerbose();
222  void setTerse();
223 
224 private:
227  void sortInputData();
229  void bxSetup();
231  void bxReset(const int bx);
233  void fillEmCands(std::vector<L1CaloEmCand>::iterator& emc, const int bx);
234  void fillRegions(std::vector<L1CaloRegion>::iterator& rgn, const int bx);
236  void bxProcess(const int bx);
237 
239  void build(L1GctJetLeafCard::jetFinderType jfType, unsigned jetLeafMask);
240 
242  bool setupOk() const;
243 
246  unsigned sorterNo(const L1CaloEmCand& em) const;
247 
251  template <class T>
252  struct CompareBx {
253  bool operator()(const T& i, const T& j) const { return i.bx() < j.bx(); }
254  };
257 
258 private:
260  std::vector<L1GctJetLeafCard*> theJetLeafCards;
261 
263  std::vector<L1GctJetFinderBase*> theJetFinders;
264 
266  std::vector<L1GctEmLeafCard*> theEmLeafCards;
267 
269  std::vector<L1GctElectronSorter*> theIsoElectronSorters;
270  std::vector<L1GctElectronSorter*> theNonIsoElectronSorters;
271 
273  std::vector<L1GctWheelJetFpga*> theWheelJetFpgas;
274 
276  std::vector<L1GctWheelEnergyFpga*> theWheelEnergyFpgas;
277 
280 
283 
286 
289 
292 
294  lutPtrVector m_jetEtCalLuts;
295 
298 
303 
306  std::vector<L1CaloEmCand> m_allInputEmCands;
307  std::vector<L1CaloRegion> m_allInputRegions;
308 };
309 
310 #endif /*L1GLOBALCALOTRIGGER_H_*/
std::vector< L1GctJetLeafCard * > getJetLeafCards() const
Emulates the energy summing on a GCT Wheel card.
L1GctJetFinderBase::lutPtrVector lutPtrVector
L1GctHFRingEtSumsCollection getHFRingEtSumsCollection() const
std::vector< L1GctWheelEnergyFpga * > getWheelEnergyFpgas() const
get the Wheel Energy Fpgas
void bxReset(const int bx)
Partial reset for a new bunch crossing.
bool setupOk() const
check we have done all the setup
void fillEmCands(const std::vector< L1CaloEmCand > &rgn)
set electrons from the RCT at the input to be processed
L1GctJetCandCollection getTauJets() const
tau jet outputs to GT
std::vector< L1GctJetLeafCard * > theJetLeafCards
pointers to the Jet Leaf cards
void setupTauAlgo(const bool useImprovedAlgo, const bool ignoreVetoBitsForIsolation)
setup the tau algorithm parameters
void sortInputData()
Sort the input data by bunch crossing number.
L1GctHFBitCountsCollection getHFBitCountsCollection() const
L1GctElectronFinalSort * getNonIsoEmFinalStage() const
std::vector< L1GctEtMiss > L1GctEtMissCollection
Represents a GCT Wheel Jet FPGA.
Jet Et calibration LUT.
int getFirstBx() const
accessor methods
std::vector< L1CaloEmCand > m_allInputEmCands
static const int N_WHEEL_CARDS
Number of Wheel Cards.
Emulates the GCT summing and packing of Hf Et sums and tower-over-threshold counts.
std::vector< L1GctHFRingEtSums > L1GctHFRingEtSumsCollection
std::vector< L1GctWheelEnergyFpga * > theWheelEnergyFpgas
Wheel Card Energy Fpgas.
void setJetFinderParams(const L1GctJetFinderParams *const jfpars)
unsigned sorterNo(const L1CaloEmCand &em) const
L1GctGlobalEnergyAlgos * theEnergyFinalStage
energy final stage algos
std::vector< L1GctEtHad > L1GctEtHadCollection
const L1GctChannelMask * m_inputChannelMask
Input channel mask.
L1GctUnsignedInt< L1GctEtHad::kEtHadNBits > etHadType
void setIsoEm(const L1CaloEmCand &em)
set an isolated EM candidate to be processed
std::vector< L1GctInternHtMiss > L1GctInternHtMissCollection
bool m_bxRangeAuto
Multiple bunch crossing operation.
Level-1 Region Calorimeter Trigger EM candidate.
Definition: L1CaloEmCand.h:17
L1GctJetCandCollection getForwardJets() const
forward jet outputs to GT
L1GctJet::lutPtr lutPtr
~L1GlobalCaloTrigger()
dismantle the GCT
L1GctEmCandCollection getNonIsoElectrons() const
non-iso electron outputs to GT
L1GctElectronFinalSort * theNonIsoEmFinalStage
non-iso electron final stage sorter
lutPtrVector m_jetEtCalLuts
Jet Et calibration LUT.
L1GctHtMissCollection getHtMissCollection() const
Htmiss output to GT.
Bit-level emulation of the Global Calorimeter Trigger.
L1GctUnsignedInt< L1GctEtMiss::kEtMissPhiNBits > etMissPhiType
L1GctGlobalHfSumAlgos * getHfSumProcessor() const
provide access to hf sum processor
L1GctJetFinderBase::lutPtr lutPtr
Base class to allow implementation of jetFinder algorithms.
L1GctEtTotalCollection getEtSumCollection() const
Total Et output to GT.
std::vector< L1GctJetFinderBase * > theJetFinders
pointers to the Jet Finders
std::vector< L1GctWheelJetFpga * > theWheelJetFpgas
Wheel Card Jet Fpgas.
std::vector< L1GctEtTotal > L1GctEtTotalCollection
std::vector< L1GctHFBitCounts > L1GctHFBitCountsCollection
std::vector< L1GctJetCand > L1GctJetCandCollection
Represents the final stage of L1 jet processing.
CompareBx< L1CaloRegion > rgnBxComparator
const L1GctJetFinderParams * getJetFinderParams() const
get the jetFinder parameters
L1GctElectronFinalSort * theIsoEmFinalStage
iso electron final stage sorter
void setHtMissScale(const L1CaloEtScale *const scale)
setup scale for missing Ht
L1GctInternHtMissCollection getInternalHtMiss() const
static const int N_JET_LEAF_CARDS
Number of Leaf Cards configured for jet processing.
void fillRegions(const std::vector< L1CaloRegion > &rgn)
std::vector< L1GctElectronSorter * > theIsoElectronSorters
pointers to the electron sorters
Class that sorts electron candidates.
Emulates the GCT global energy algorithms.
L1GctEtHadCollection getEtHadCollection() const
Total hadronic Et output to GT.
void setupHfSumLuts(const L1CaloEtScale *const scale)
setup Hf sum LUTs
void setBxRange(const int firstBx, const int lastBx)
L1GctJetCandCollection getCentralJets() const
central jet outputs to GT
void setNonIsoEm(const L1CaloEmCand &em)
set a non-isolated EM candidate to be processed
void bxProcess(const int bx)
Process a new bunch crossing.
L1GctInternJetDataCollection getInternalJets() const
all jets from jetfinders in raw format
CompareBx< L1CaloEmCand > emcBxComparator
L1GctGlobalEnergyAlgos * getEnergyFinalStage() const
get the energy final stage
void reset()
Reset internal buffers.
void setChannelMask(const L1GctChannelMask *const mask)
setup the input channel mask
void bxSetup()
Setup bunch crossing range (depending on input data)
L1GctEmCandCollection getIsoElectrons() const
std::vector< L1GctHtMiss > L1GctHtMissCollection
void setJetEtCalibrationLuts(const lutPtrVector &jfluts)
setup the Jet Calibration Luts
L1GctElectronFinalSort * getIsoEmFinalStage() const
get the electron final stage sorters
void setBxRangeAutomatic()
process all crossings present in the input (and only those crossings)
std::vector< L1GctWheelJetFpga * > getWheelJetFpgas() const
get the Wheel Jet FPGAs
const lutPtrVector getJetEtCalibLuts() const
get the Jet Et calibration LUT
L1GlobalCaloTrigger(const L1GctJetLeafCard::jetFinderType jfType=L1GctJetLeafCard::hardwareJetFinder, unsigned jetLeafMask=0)
construct the GCT
L1GctUnsignedInt< L1GctEtTotal::kEtTotalNBits > etTotalType
typedefs for energy values in fixed numbers of bits
static const int N_EM_LEAF_CARDS
Number of Leaf Cards configured for EM processing.
std::vector< lutPtr > lutPtrVector
std::vector< L1GctInternJetData > L1GctInternJetDataCollection
L1GctJetFinalStage * getJetFinalStage() const
get the jet final stage
std::vector< L1GctElectronSorter * > theNonIsoElectronSorters
std::vector< L1CaloRegion > m_allInputRegions
void build(L1GctJetLeafCard::jetFinderType jfType, unsigned jetLeafMask)
instantiate the hardware & algo objects and wire up the system
A calorimeter trigger region (sum of 4x4 trigger towers)
Definition: L1CaloRegion.h:21
void setRegion(const L1CaloRegion &region)
std::vector< L1GctInternEtSum > L1GctInternEtSumCollection
void setBxRangeSymmetric(const int numOfBx)
process crossings from (-numOfBx) to (numOfBx)
bool operator()(const T &i, const T &j) const
long double T
L1GctUnsignedInt< L1GctEtMiss::kEtMissNBits > etMissType
L1GctJetFinalStage * theJetFinalStage
jet final stage algo
std::vector< L1GctEmLeafCard * > theEmLeafCards
pointers to the EM Leaf cards
L1GctEtMissCollection getEtMissCollection() const
Etmiss output to GT.
void process()
process an event
const L1GctJetFinderParams * m_jetFinderParams
Jetfinder parameters.
Emulates a leaf card programmed for electron sorting.
std::vector< L1GctEmLeafCard * > getEmLeafCards() const
get the Jet Leaf cards
void setVerbose()
control output messages
std::vector< L1GctEmCand > L1GctEmCandCollection
L1GctInternEtSumCollection getInternalEtSums() const
Et sums and components in internal format.