CMS 3D CMS Logo

HGCalClusteringImpl.h
Go to the documentation of this file.
1 #ifndef __L1Trigger_L1THGCal_HGCalClusteringImpl_h__
2 #define __L1Trigger_L1THGCal_HGCalClusteringImpl_h__
3 
4 #include <array>
5 #include <string>
12 
14 
15 private:
16  static const unsigned kNSides_ = 2;
17  // FIXME: currently there is no access to the HGCal DDDConstants
18  // So cannot retrieve the following constants.
19  static const unsigned kLayersEE_ = 28;
20  static const unsigned kLayersFH_ = 12;
21  static const unsigned kLayersBH_ = 12;
22  static const unsigned kLayers_ = kLayersEE_+kLayersFH_+kLayersBH_;
23 
24 public:
25 
26  HGCalClusteringImpl( const edm::ParameterSet & conf);
27 
28 
29  /* dR-algorithms */
30  bool isPertinent( const l1t::HGCalTriggerCell & tc,
31  const l1t::HGCalCluster & clu,
32  double distXY) const;
33 
34  void clusterizeDR( const edm::PtrVector<l1t::HGCalTriggerCell> & triggerCellsPtrs,
36  );
37 
38  /* NN-algorithms */
39  void mergeClusters( l1t::HGCalCluster & main_cluster,
40  const l1t::HGCalCluster & secondary_cluster ) const;
41 
42  void NNKernel( const std::vector<edm::Ptr<l1t::HGCalTriggerCell>> &reshuffledTriggerCells,
44  const HGCalTriggerGeometryBase & triggerGeometry
45  );
46 
47  void clusterizeNN( const edm::PtrVector<l1t::HGCalTriggerCell> & triggerCellsPtrs,
49  const HGCalTriggerGeometryBase & triggerGeometry
50  );
51 
52 
53 private:
54 
59  double dr_;
61  void triggerCellReshuffling( const edm::PtrVector<l1t::HGCalTriggerCell> & triggerCellsPtrs,
62  std::array<std::array<std::vector<edm::Ptr<l1t::HGCalTriggerCell>>, kLayers_>, kNSides_> & reshuffledTriggerCells );
63 
64 
65 };
66 
67 #endif
void clusterizeDR(const edm::PtrVector< l1t::HGCalTriggerCell > &triggerCellsPtrs, l1t::HGCalClusterBxCollection &clusters)
void mergeClusters(l1t::HGCalCluster &main_cluster, const l1t::HGCalCluster &secondary_cluster) const
static const unsigned kLayersFH_
void clusterizeNN(const edm::PtrVector< l1t::HGCalTriggerCell > &triggerCellsPtrs, l1t::HGCalClusterBxCollection &clusters, const HGCalTriggerGeometryBase &triggerGeometry)
bool isPertinent(const l1t::HGCalTriggerCell &tc, const l1t::HGCalCluster &clu, double distXY) const
void triggerCellReshuffling(const edm::PtrVector< l1t::HGCalTriggerCell > &triggerCellsPtrs, std::array< std::array< std::vector< edm::Ptr< l1t::HGCalTriggerCell >>, kLayers_ >, kNSides_ > &reshuffledTriggerCells)
static const unsigned kLayersEE_
std::string clusteringAlgorithmType_
static const unsigned kNSides_
HGCalClusteringImpl(const edm::ParameterSet &conf)
void NNKernel(const std::vector< edm::Ptr< l1t::HGCalTriggerCell >> &reshuffledTriggerCells, l1t::HGCalClusterBxCollection &clusters, const HGCalTriggerGeometryBase &triggerGeometry)
static const unsigned kLayers_
double scintillatorTriggerCellThreshold_
static const unsigned kLayersBH_