CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/L1Trigger/GlobalCaloTrigger/interface/L1GctWheelJetFpga.h

Go to the documentation of this file.
00001 #ifndef L1GCTWHEELJETFPGA_H_
00002 #define L1GCTWHEELJETFPGA_H_
00003 
00017 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctJetCand.h"
00018 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEtHad.h"
00019 
00020 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctProcessor.h"
00021 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctJetLeafCard.h"
00022 
00023 #include "L1Trigger/GlobalCaloTrigger/src/L1GctUnsignedInt.h"
00024 
00025 class L1GctJetSorter;
00026 
00027 #include <vector>
00028 
00029 class L1GctWheelJetFpga : public L1GctProcessor
00030 {
00031 public:
00032   typedef std::vector<L1GctJetCand> JetVector;
00033   typedef L1GctTwosComplement< L1GctInternHtMiss::kMissHxOrHyNBits > htComponentType;
00034   typedef L1GctJetLeafCard::hfTowerSumsType hfTowerSumsType;
00035 
00037   static const int MAX_JETS_OUT;
00038 
00040   static const unsigned int MAX_LEAF_CARDS;
00041 
00043   static const unsigned int MAX_JETS_PER_LEAF;
00044 
00046   L1GctWheelJetFpga(int id,
00047                     const std::vector<L1GctJetLeafCard*>& inputLeafCards);
00048 
00050   ~L1GctWheelJetFpga();
00051 
00053   friend std::ostream& operator << (std::ostream& os, const L1GctWheelJetFpga& fpga);
00054 
00056   virtual void fetchInput();
00057 
00059   virtual void process();
00060 
00062   void setInputJet(int i, L1GctJetCand jet); 
00063     
00065   JetVector getInputJets() const { return m_inputJets; }
00066     
00068   htComponentType inputHx(unsigned leafnum) const { return m_inputHx.at(leafnum); }
00069   htComponentType inputHy(unsigned leafnum) const { return m_inputHy.at(leafnum); }
00070     
00072   hfTowerSumsType inputHfSums(unsigned leafnum) const { return m_inputHfSums.at(leafnum); }
00073 
00075   JetVector getCentralJets() const { return m_centralJets; }
00076 
00078   JetVector getForwardJets() const { return m_forwardJets; }
00079 
00081   JetVector getTauJets() const { return m_tauJets; }
00082 
00084   htComponentType getOutputHx() const { return m_outputHx; }
00085   htComponentType getOutputHy() const { return m_outputHy; }
00086 
00088   hfTowerSumsType getOutputHfSums() const { return m_outputHfSums; }
00089 
00091   bool setupOk() const { return checkSetup(); }
00092 
00094   std::vector< L1GctInternHtMiss > getInternalHtMiss() const;
00095 
00096  protected:
00097 
00099   virtual void resetProcessor();
00100   virtual void resetPipelines();
00101 
00103   virtual void setupObjects();
00104 
00105 private:
00106 
00107   static const int MAX_JETS_IN;    
00108     
00110   int m_id;
00111 
00113   std::vector<L1GctJetLeafCard*> m_inputLeafCards;
00114 
00116   L1GctJetSorter* m_centralJetSorter;
00117   L1GctJetSorter* m_forwardJetSorter;
00118   L1GctJetSorter* m_tauJetSorter;
00119 
00121   JetVector m_inputJets;
00122     
00123   // Holds the all the various inputted jets, re-addressed using proper GCT->GT jet addressing
00124   JetVector m_rawCentralJets; 
00125   JetVector m_rawForwardJets; 
00126   JetVector m_rawTauJets; 
00127 
00128   // input Ht component sums from each leaf card
00129   std::vector< htComponentType > m_inputHx;
00130   std::vector< htComponentType > m_inputHy;
00131 
00132   // input Hf Et sums from each leaf card
00133   std::vector< hfTowerSumsType > m_inputHfSums;
00134 
00135   // output data
00136   JetVector m_centralJets;
00137   JetVector m_forwardJets;
00138   JetVector m_tauJets;
00139     
00140   // data sent to GlobalEnergyAlgos
00141   htComponentType m_outputHx;
00142   htComponentType m_outputHy;
00143   hfTowerSumsType m_outputHfSums;
00144       
00145   Pipeline< htComponentType > m_outputHxPipe;
00146   Pipeline< htComponentType > m_outputHyPipe;
00147 
00148   //PRIVATE METHODS
00150   bool checkSetup() const;
00152   void storeJets(JetVector jets, unsigned short iLeaf, unsigned short offset);
00154   void classifyJets();
00156   void setupJetsVectors(const int16_t bx);
00157 };
00158 
00159 std::ostream& operator << (std::ostream& os, const L1GctWheelJetFpga& fpga);
00160 
00161 #endif /*L1GCTWHEELJETFPGA_H_*/