CMS 3D CMS Logo

L1GctGlobalEnergyAlgos.h
Go to the documentation of this file.
1 #ifndef L1GCTGLOBALENERGYALGOS_H_
2 #define L1GCTGLOBALENERGYALGOS_H_
3 
7 
10 
11 #include <vector>
12 
14 class L1GctWheelJetFpga;
16 
34 public:
41 
42  enum maxValues {
46  };
47 
49  L1GctGlobalEnergyAlgos(const std::vector<L1GctWheelEnergyFpga*>& WheelFpga,
50  const std::vector<L1GctWheelJetFpga*>& WheelJetFpga);
52  ~L1GctGlobalEnergyAlgos() override;
53 
55  friend std::ostream& operator<<(std::ostream& os, const L1GctGlobalEnergyAlgos& fpga);
56 
58  void reset();
59 
61  void fetchInput() override;
62 
64  void process() override;
65 
67  void setBxRange(const int firstBx, const int numberOfBx);
68 
70  void setNextBx(const int bx);
71 
73  void setInputWheelEx(unsigned wheel, int energy, bool overflow);
75  void setInputWheelEy(unsigned wheel, int energy, bool overflow);
77  void setInputWheelEt(unsigned wheel, unsigned energy, bool overflow);
79  void setInputWheelHt(unsigned wheel, unsigned energy, bool overflow);
81  void setInputWheelHx(unsigned wheel, unsigned energy, bool overflow);
82  void setInputWheelHy(unsigned wheel, unsigned energy, bool overflow);
83 
85  void setInputWheelJc(unsigned wheel, unsigned jcnum, unsigned count);
86 
97 
99  inline std::vector<etComponentType> getInputExValPlusWheel() const { return m_exValPlusPipe.contents; }
101  inline std::vector<etComponentType> getInputEyValPlusWheel() const { return m_eyValPlusPipe.contents; }
103  inline std::vector<etComponentType> getInputExVlMinusWheel() const { return m_exVlMinusPipe.contents; }
105  inline std::vector<etComponentType> getInputEyVlMinusWheel() const { return m_eyVlMinusPipe.contents; }
107  inline std::vector<etTotalType> getInputEtValPlusWheel() const { return m_etValPlusPipe.contents; }
109  inline std::vector<etHadType> getInputHtValPlusWheel() const { return m_htValPlusPipe.contents; }
111  inline std::vector<etComponentType> getInputHxValPlusWheel() const { return m_hxValPlusPipe.contents; }
112  inline std::vector<etComponentType> getInputHyValPlusWheel() const { return m_hyValPlusPipe.contents; }
114  inline std::vector<etTotalType> getInputEtVlMinusWheel() const { return m_etVlMinusPipe.contents; }
116  inline std::vector<etHadType> getInputHtVlMinusWheel() const { return m_htVlMinusPipe.contents; }
118  inline std::vector<etComponentType> getInputHxVlMinusWheel() const { return m_hxVlMinusPipe.contents; }
119  inline std::vector<etComponentType> getInputHyVlMinusWheel() const { return m_hyVlMinusPipe.contents; }
120 
123  inline std::vector<etMissType> getEtMissColl() const { return m_outputEtMiss.contents; }
125  inline std::vector<etMissPhiType> getEtMissPhiColl() const { return m_outputEtMissPhi.contents; }
127  inline std::vector<etTotalType> getEtSumColl() const { return m_outputEtSum.contents; }
129  inline std::vector<etHadType> getEtHadColl() const { return m_outputEtHad.contents; }
131  inline std::vector<etMissType> getHtMissColl() const { return m_outputHtMiss.contents; }
133  inline std::vector<etMissPhiType> getHtMissPhiColl() const { return m_outputHtMissPhi.contents; }
134 
135  void setJetFinderParams(const L1GctJetFinderParams* const jfpars);
136  void setHtMissScale(const L1CaloEtScale* const scale);
137 
138  // get the missing Ht LUT (used by L1GctPrintLuts)
140 
142  bool setupOk() const;
143 
144 protected:
146  void resetProcessor() override;
147  void resetPipelines() override;
148 
150  void setupObjects() override {}
151 
152 private:
153  // Here are the algorithm types we get our inputs from
158 
159  // Here's the class that does the Hf sums
161 
162  // Missing Et and missing Ht
165 
166  // input data
173 
180 
181  // stored copies of input data
182  Pipeline<etComponentType> m_exValPlusPipe;
183  Pipeline<etComponentType> m_eyValPlusPipe;
184  Pipeline<etTotalType> m_etValPlusPipe;
185  Pipeline<etHadType> m_htValPlusPipe;
186  Pipeline<etComponentType> m_hxValPlusPipe;
187  Pipeline<etComponentType> m_hyValPlusPipe;
188 
189  Pipeline<etComponentType> m_exVlMinusPipe;
190  Pipeline<etComponentType> m_eyVlMinusPipe;
191  Pipeline<etTotalType> m_etVlMinusPipe;
192  Pipeline<etHadType> m_htVlMinusPipe;
193  Pipeline<etComponentType> m_hxVlMinusPipe;
194  Pipeline<etComponentType> m_hyVlMinusPipe;
195 
196  // output data
197  Pipeline<etMissType> m_outputEtMiss;
198  Pipeline<etMissPhiType> m_outputEtMissPhi;
199  Pipeline<etTotalType> m_outputEtSum;
200  Pipeline<etHadType> m_outputEtHad;
201  Pipeline<etMissType> m_outputHtMiss;
202  Pipeline<etMissPhiType> m_outputHtMissPhi;
203 
204  bool m_setupOk;
205 };
206 
207 std::ostream& operator<<(std::ostream& os, const L1GctGlobalEnergyAlgos& fpga);
208 
209 #endif /*L1GCTGLOBALENERGYALGOS_H_*/
L1GctMet::etmiss_vec etmiss_vec
Emulates the energy summing on a GCT Wheel card.
std::vector< etMissType > getEtMissColl() const
void reset()
clear internal buffers
const L1GctHtMissLut * getHtMissLut() const
Definition: L1GctMet.h:66
Pipeline< etMissType > m_outputHtMiss
std::vector< etComponentType > getInputHxValPlusWheel() const
return input Ht component values wheel 1
friend std::ostream & operator<<(std::ostream &os, const L1GctGlobalEnergyAlgos &fpga)
Overload << operator.
L1GctGlobalHfSumAlgos * getHfSumProcessor() const
provide access to hf sum processor
Represents a GCT Wheel Jet FPGA.
Emulates the GCT summing and packing of Hf Et sums and tower-over-threshold counts.
L1GctMet::etMissType etMissType
Pipeline< etComponentType > m_eyVlMinusPipe
Pipeline< etComponentType > m_exValPlusPipe
void fetchInput() override
get input data from sources
void setInputWheelEx(unsigned wheel, int energy, bool overflow)
set input Ex value per wheel (0 or 1); not used in normal operation
Pipeline< etMissPhiType > m_outputHtMissPhi
Pipeline< etComponentType > m_hyVlMinusPipe
L1GctWheelJetFpga * getPlusWheelJetFpga() const
provide access to input pointer, Wheel Jet Fpga 1
std::vector< etComponentType > getInputExValPlusWheel() const
return input Ex value wheel 1
std::ostream & operator<<(std::ostream &os, const L1GctGlobalEnergyAlgos &fpga)
Pipeline< etComponentType > m_hxVlMinusPipe
Pipeline< etComponentType > m_hxValPlusPipe
void setInputWheelHy(unsigned wheel, unsigned energy, bool overflow)
void setJetFinderParams(const L1GctJetFinderParams *const jfpars)
std::vector< etTotalType > getInputEtValPlusWheel() const
return input Et value wheel 1
L1GctWheelJetFpga * m_plusWheelJetFpga
std::vector< etComponentType > getInputExVlMinusWheel() const
return input Ey value wheel 0
std::vector< etMissType > getHtMissColl() const
return output missing Ht magnitude
LUT for conversion of Ht components x and y to magnitude and angle.
L1GctMet::etMissPhiType etMissPhiType
Stores Level-1 missing Et in (Ex, Ey) form, allowing it to be retrieved as (magnitude, angle)
Definition: L1GctMet.h:20
void setupObjects() override
Initialise inputs with null objects for the correct bunch crossing if required.
std::vector< etComponentType > getInputHyValPlusWheel() const
void setHtMissScale(const L1CaloEtScale *const scale)
ABC for a GCT trigger data processing unit.
std::vector< etComponentType > getInputHyVlMinusWheel() const
L1GctUnsignedInt< L1GctEtTotal::kEtTotalNBits > etTotalType
Pipeline< etHadType > m_outputEtHad
L1GctWheelEnergyFpga * m_minusWheelFpga
std::vector< etHadType > getEtHadColl() const
return std::vector< output calibrated jet Et
void setInputWheelHx(unsigned wheel, unsigned energy, bool overflow)
set input Ht component values per wheel (0 or 1); not used in normal operation
Pipeline< etTotalType > m_etValPlusPipe
L1GctGlobalHfSumAlgos * m_hfSumProcessor
L1GctUnsignedInt< L1GctEtHad::kEtHadNBits > etHadType
std::vector< etMissPhiType > getHtMissPhiColl() const
return output missing Ht value
L1GctWheelEnergyFpga * getPlusWheelFpga() const
provide access to input pointer, Wheel Energy Fpga 1
Emulates the GCT global energy algorithms.
std::vector< etComponentType > getInputHxVlMinusWheel() const
return input Ht value wheel 0
void process() override
process the data, fill output buffers
Pipeline< etComponentType > m_hyValPlusPipe
void setBxRange(const int firstBx, const int numberOfBx)
define the bunch crossing range to process
std::vector< etComponentType > getInputEyValPlusWheel() const
return input Ex value wheel 1
std::vector< etComponentType > getInputEyVlMinusWheel() const
return input Ey value wheel 0
Pipeline< etHadType > m_htValPlusPipe
void setInputWheelHt(unsigned wheel, unsigned energy, bool overflow)
set input Ht value per wheel (0 or 1); not used in normal operation
L1GctGlobalEnergyAlgos(const std::vector< L1GctWheelEnergyFpga *> &WheelFpga, const std::vector< L1GctWheelJetFpga *> &WheelJetFpga)
Constructor needs the Wheel card Fpgas set up first.
std::vector< etTotalType > getInputEtVlMinusWheel() const
return input Et value wheel 0
L1GctWheelJetFpga * m_minusWheelJetFpga
Pipeline< etComponentType > m_exVlMinusPipe
void setInputWheelEy(unsigned wheel, int energy, bool overflow)
set input Ey value per wheel (0 or 1); not used in normal operation
std::vector< etHadType > getInputHtValPlusWheel() const
return input Ht value wheel 1
Pipeline< etMissPhiType > m_outputEtMissPhi
L1GctWheelEnergyFpga * m_plusWheelFpga
L1GctWheelEnergyFpga * getMinusWheelFpga() const
provide access to input pointer, Wheel Energy Fpga 0
Pipeline< etComponentType > m_eyValPlusPipe
Pipeline< etMissType > m_outputEtMiss
std::vector< etTotalType > getEtSumColl() const
return output total scalar Et
bool setupOk() const
check setup
void setInputWheelJc(unsigned wheel, unsigned jcnum, unsigned count)
set input jet count (number 0-11) per wheel (0 or 1); not used in normal operation ...
~L1GctGlobalEnergyAlgos() override
Destructor.
Pipeline< etHadType > m_htVlMinusPipe
std::vector< etHadType > getInputHtVlMinusWheel() const
return input Ht value wheel 0
const L1GctHtMissLut * getHtMissLut() const
L1GctWheelEnergyFpga::etComponentType etComponentType
void setNextBx(const int bx)
partially clear buffers
Pipeline< etTotalType > m_outputEtSum
Pipeline< etTotalType > m_etVlMinusPipe
void resetProcessor() override
Separate reset methods for the processor itself and any data stored in pipelines. ...
void setInputWheelEt(unsigned wheel, unsigned energy, bool overflow)
set input Et value per wheel (0 or 1); not used in normal operation
L1GctWheelJetFpga * getMinusWheelJetFpga() const
provide access to input pointer, Wheel Jet Fpga 0
std::vector< etMissPhiType > getEtMissPhiColl() const
return output missing Et value