CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
HGCalBackendLayer1Processor2DClustering Class Reference
Inheritance diagram for HGCalBackendLayer1Processor2DClustering:
HGCalProcessorBaseT< InputCollection, OutputCollection >

Public Member Functions

 HGCalBackendLayer1Processor2DClustering (const edm::ParameterSet &conf)
 
void run (const edm::Handle< l1t::HGCalTriggerCellBxCollection > &collHandle, l1t::HGCalClusterBxCollection &collCluster2D) override
 
- Public Member Functions inherited from HGCalProcessorBaseT< InputCollection, OutputCollection >
 HGCalProcessorBaseT (const edm::ParameterSet &conf)
 
const std::string & name () const
 
virtual void run (const InputCollection &inputColl, OutputCollection &outColl)=0
 
virtual void setGeometry (const HGCalTriggerGeometryBase *const geom)
 
virtual ~HGCalProcessorBaseT ()
 

Private Types

enum  ClusterType { dRC2d, NNC2d, dRNNC2d, dummyC2d }
 

Private Attributes

std::unique_ptr< HGCalClusteringImplclustering_
 
ClusterType clusteringAlgorithmType_
 
std::unique_ptr< HGCalClusteringDummyImplclusteringDummy_
 

Additional Inherited Members

- Protected Member Functions inherited from HGCalProcessorBaseT< InputCollection, OutputCollection >
const HGCalTriggerGeometryBasegeometry () const
 

Detailed Description

Definition at line 10 of file HGCalBackendLayer1Processor2DClustering.cc.

Member Enumeration Documentation

◆ ClusterType

Constructor & Destructor Documentation

◆ HGCalBackendLayer1Processor2DClustering()

HGCalBackendLayer1Processor2DClustering::HGCalBackendLayer1Processor2DClustering ( const edm::ParameterSet conf)
inline

Definition at line 12 of file HGCalBackendLayer1Processor2DClustering.cc.

References clustering_, clusteringAlgorithmType_, clusteringDummy_, dRC2d, dRNNC2d, dummyC2d, Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), NNC2d, and AlCaHLTBitMon_QueryRunRegistry::string.

13  std::string typeCluster(conf.getParameterSet("C2d_parameters").getParameter<std::string>("clusterType"));
14  if (typeCluster == "dRC2d") {
16  clustering_ = std::make_unique<HGCalClusteringImpl>(conf.getParameterSet("C2d_parameters"));
17  } else if (typeCluster == "NNC2d") {
19  clustering_ = std::make_unique<HGCalClusteringImpl>(conf.getParameterSet("C2d_parameters"));
20  } else if (typeCluster == "dRNNC2d") {
22  clustering_ = std::make_unique<HGCalClusteringImpl>(conf.getParameterSet("C2d_parameters"));
23  } else if (typeCluster == "dummyC2d") {
25  clusteringDummy_ = std::make_unique<HGCalClusteringDummyImpl>(conf.getParameterSet("C2d_parameters"));
26  } else {
27  throw cms::Exception("HGCTriggerParameterError") << "Unknown clustering type '" << typeCluster;
28  }
29  }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
ParameterSet const & getParameterSet(std::string const &) const
HGCalProcessorBaseT< edm::Handle< l1t::HGCalTriggerCellBxCollection >, l1t::HGCalClusterBxCollection > HGCalBackendLayer1ProcessorBase
std::unique_ptr< HGCalClusteringDummyImpl > clusteringDummy_

Member Function Documentation

◆ run()

void HGCalBackendLayer1Processor2DClustering::run ( const edm::Handle< l1t::HGCalTriggerCellBxCollection > &  collHandle,
l1t::HGCalClusterBxCollection collCluster2D 
)
inlineoverride

Definition at line 31 of file HGCalBackendLayer1Processor2DClustering.cc.

References a, b, clustering_, clusteringAlgorithmType_, clusteringDummy_, dRC2d, dRNNC2d, dummyC2d, HGCalProcessorBaseT< InputCollection, OutputCollection >::geometry(), mps_fire::i, NNC2d, BXVector< T >::size(), and jetUpdater_cfi::sort.

32  {
33  if (clustering_)
34  clustering_->setGeometry(geometry());
35  if (clusteringDummy_)
36  clusteringDummy_->setGeometry(geometry());
37 
38  /* create a persistent vector of pointers to the trigger-cells */
39  std::vector<edm::Ptr<l1t::HGCalTriggerCell>> triggerCellsPtrs;
40  for (unsigned i = 0; i < collHandle->size(); ++i) {
41  edm::Ptr<l1t::HGCalTriggerCell> ptr(collHandle, i);
42  triggerCellsPtrs.push_back(ptr);
43  }
44 
45  std::sort(triggerCellsPtrs.begin(),
46  triggerCellsPtrs.end(),
48  return a->mipPt() > b->mipPt();
49  });
50 
51  /* call to C2d clustering */
52  switch (clusteringAlgorithmType_) {
53  case dRC2d:
54  clustering_->clusterizeDR(triggerCellsPtrs, collCluster2D);
55  break;
56  case NNC2d:
57  clustering_->clusterizeNN(triggerCellsPtrs, collCluster2D, *geometry());
58  break;
59  case dRNNC2d:
60  clustering_->clusterizeDRNN(triggerCellsPtrs, collCluster2D, *geometry());
61  break;
62  case dummyC2d:
63  clusteringDummy_->clusterizeDummy(triggerCellsPtrs, collCluster2D);
64  break;
65  default:
66  // Should not happen, clustering type checked in constructor
67  break;
68  }
69  }
unsigned size(int bx) const
const HGCalTriggerGeometryBase * geometry() const
std::unique_ptr< HGCalClusteringDummyImpl > clusteringDummy_
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

Member Data Documentation

◆ clustering_

std::unique_ptr<HGCalClusteringImpl> HGCalBackendLayer1Processor2DClustering::clustering_
private

◆ clusteringAlgorithmType_

ClusterType HGCalBackendLayer1Processor2DClustering::clusteringAlgorithmType_
private

◆ clusteringDummy_

std::unique_ptr<HGCalClusteringDummyImpl> HGCalBackendLayer1Processor2DClustering::clusteringDummy_
private