CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/L1Trigger/GlobalCaloTrigger/interface/L1GctHardwareJetFinder.h

Go to the documentation of this file.
00001 #ifndef L1GCTHARDWAREJETFINDER_H_
00002 #define L1GCTHARDWAREJETFINDER_H_
00003 
00004 #include "L1Trigger/GlobalCaloTrigger/interface/L1GctJetFinderBase.h"
00005 
00006 #include <boost/cstdint.hpp> //for uint16_t
00007 #include <vector>
00008 
00014 /*
00015  * \author Greg Heath
00016  * \date June 2006
00017  */
00018 
00019 
00020 
00021 class L1GctHardwareJetFinder : public L1GctJetFinderBase
00022 {
00023  public:
00024 
00026   L1GctHardwareJetFinder(int id);
00027                  
00028   ~L1GctHardwareJetFinder();
00029    
00031   friend std::ostream& operator << (std::ostream& os, const L1GctHardwareJetFinder& algo);
00032 
00034   virtual void reset();
00035 
00037   virtual void fetchInput();
00038 
00040   virtual void process();
00041 
00042  protected:
00043 
00044   // Each jetFinder must define the constants as private and copy the
00045   // function definitions below.
00046   virtual unsigned maxRegionsIn() const { return MAX_REGIONS_IN; }
00047   virtual unsigned centralCol0() const { return CENTRAL_COL0; }
00048   virtual unsigned nCols() const { return N_COLS; }
00049 
00050 private:
00051 
00053   static const unsigned int MAX_REGIONS_IN; 
00054   static const unsigned int N_COLS;
00055   static const unsigned int CENTRAL_COL0;
00056 
00058   RegionsVector m_localMaxima;
00060   RegionsVector m_clusters;
00061 
00063   unsigned m_numberOfClusters;
00064 
00065   // Additional clusters to avoid double counting of jets across eta=0
00066   RegionsVector m_localMax00;
00067   RegionsVector  m_cluster00;
00068   
00070   void findProtoJets();  
00071   L1GctRegion makeProtoJet(L1GctRegion localMax);
00073   void findJets();  
00074 
00076   void findLocalMaxima();
00078   void findProtoClusters();
00080   void findFinalClusters();
00081 
00083   void convertClustersToProtoJets();
00085   void convertClustersToOutputJets();
00086 
00087 };
00088 
00089 std::ostream& operator << (std::ostream& os, const L1GctHardwareJetFinder& algo);
00090 
00091 #endif /*L1GCTHARDWAREJETFINDER_H_*/