CMS 3D CMS Logo

HGCalClusteringAlgoBase.h
Go to the documentation of this file.
1 #ifndef RecoLocalCalo_HGCalRecProducers_HGCalClusteringAlgoBase_h
2 #define RecoLocalCalo_HGCalRecProducers_HGCalClusteringAlgoBase_h
3 
6 
10 
12 
13 // C/C++ headers
14 #include <vector>
15 #include <numeric>
16 
17 namespace hgcal_clustering {
18  template <typename T>
19  std::vector<size_t> sorted_indices(const std::vector<T> &v) {
20  // initialize original index locations
21  std::vector<size_t> idx(v.size());
22  std::iota(std::begin(idx), std::end(idx), 0);
23 
24  // sort indices based on comparing values in v
25  std::sort(idx.begin(), idx.end(), [&v](size_t i1, size_t i2) { return v[i1] > v[i2]; });
26 
27  return idx;
28  }
29 
30  template <typename T>
31  size_t max_index(const std::vector<T> &v) {
32  // initialize original index locations
33  std::vector<size_t> idx(v.size(), 0);
34  std::iota(std::begin(idx), std::end(idx), 0);
35 
36  // take the max index based on comparing values in v
37  auto maxidx = std::max_element(
38  idx.begin(), idx.end(), [&v](size_t i1, size_t i2) { return v[i1].data.rho < v[i2].data.rho; });
39 
40  return (*maxidx);
41  }
42 
43  //Density collection
44  typedef std::map<DetId, float> Density;
45 
46 }; // namespace hgcal_clustering
47 
49 public:
50  enum VerbosityLevel { pDEBUG = 0, pWARNING = 1, pINFO = 2, pERROR = 3 };
51 
55 
56  virtual void populate(const HGCRecHitCollection &hits) = 0;
57  virtual void makeClusters() = 0;
58  virtual std::vector<reco::BasicCluster> getClusters(bool) = 0;
59  virtual void reset() = 0;
61  virtual void getEventSetupPerAlgorithm(const edm::EventSetup &es) {}
62 
63  inline void getEventSetup(const edm::EventSetup &es) {
72  }
73  inline void setVerbosity(VerbosityLevel the_verbosity) { verbosity_ = the_verbosity; }
74  inline void setAlgoId(reco::CaloCluster::AlgoId algo, bool isNose = false) {
75  algoId_ = algo;
76  isNose_ = isNose;
77  }
78 
79  //max number of layers
80  unsigned int maxlayer_;
81  // last layer per subdetector
82  unsigned int lastLayerEE_;
83  unsigned int lastLayerFH_;
84  unsigned int firstLayerBH_;
86  bool isNose_;
87 
88 protected:
89  // The verbosity level
91 
92  // The vector of clusters
93  std::vector<reco::BasicCluster> clusters_v_;
94 
96 
97  // The algo id
99 
101 };
102 
103 #endif
HGCalClusteringAlgoBase::getClusters
virtual std::vector< reco::BasicCluster > getClusters(bool)=0
HGCalClusteringAlgoBase::~HGCalClusteringAlgoBase
virtual ~HGCalClusteringAlgoBase()
Definition: HGCalClusteringAlgoBase.h:54
HGCalClusteringAlgoBase::populate
virtual void populate(const HGCRecHitCollection &hits)=0
testProducerWithPsetDescEmpty_cfi.i2
i2
Definition: testProducerWithPsetDescEmpty_cfi.py:46
hgcal::RecHitTools
Definition: RecHitTools.h:23
HGCalClusteringAlgoBase::pINFO
Definition: HGCalClusteringAlgoBase.h:50
hgcal_clustering::sorted_indices
std::vector< size_t > sorted_indices(const std::vector< T > &v)
Definition: HGCalClusteringAlgoBase.h:19
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
HGCalClusteringAlgoBase::verbosity_
VerbosityLevel verbosity_
Definition: HGCalClusteringAlgoBase.h:90
BasicCluster.h
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
HGCalClusteringAlgoBase::caloGeomToken_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_
Definition: HGCalClusteringAlgoBase.h:100
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
RecHitTools.h
edm::SortedCollection
Definition: SortedCollection.h:49
HGCalClusteringAlgoBase::HGCalClusteringAlgoBase
HGCalClusteringAlgoBase(VerbosityLevel v, reco::CaloCluster::AlgoId algo, edm::ConsumesCollector iC)
Definition: HGCalClusteringAlgoBase.h:52
findQualityFiles.v
v
Definition: findQualityFiles.py:179
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
cmsdt::algo
algo
Definition: constants.h:171
hgcal::RecHitTools::lastLayerFH
unsigned int lastLayerFH() const
Definition: RecHitTools.h:68
HGCalClusteringAlgoBase::lastLayerFH_
unsigned int lastLayerFH_
Definition: HGCalClusteringAlgoBase.h:83
CaloGeometry
Definition: CaloGeometry.h:21
HGCalClusteringAlgoBase::reset
virtual void reset()=0
HGCalClusteringAlgoBase::clusters_v_
std::vector< reco::BasicCluster > clusters_v_
Definition: HGCalClusteringAlgoBase.h:93
HGCalClusteringAlgoBase::lastLayerEE_
unsigned int lastLayerEE_
Definition: HGCalClusteringAlgoBase.h:82
HGCalClusteringAlgoBase::firstLayerBH_
unsigned int firstLayerBH_
Definition: HGCalClusteringAlgoBase.h:84
hgcal_clustering::Density
std::map< DetId, float > Density
Definition: HGCalClusteringAlgoBase.h:44
mps_fire.end
end
Definition: mps_fire.py:242
edm::ESHandle< CaloGeometry >
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
reco::CaloCluster::AlgoId
AlgoId
Definition: CaloCluster.h:33
hgcal_clustering
Definition: HGCalClusteringAlgoBase.h:17
HGCalClusteringAlgoBase::setVerbosity
void setVerbosity(VerbosityLevel the_verbosity)
Definition: HGCalClusteringAlgoBase.h:73
HGCalClusteringAlgoBase::algoId_
reco::CaloCluster::AlgoId algoId_
Definition: HGCalClusteringAlgoBase.h:98
HGCalClusteringAlgoBase::setAlgoId
void setAlgoId(reco::CaloCluster::AlgoId algo, bool isNose=false)
Definition: HGCalClusteringAlgoBase.h:74
HGCRecHitCollections.h
HGCalClusteringAlgoBase::rhtools_
hgcal::RecHitTools rhtools_
Definition: HGCalClusteringAlgoBase.h:95
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
hgcal::RecHitTools::lastLayerEE
unsigned int lastLayerEE(bool nose=false) const
Definition: RecHitTools.h:67
HGCalClusteringAlgoBase::maxlayer_
unsigned int maxlayer_
Definition: HGCalClusteringAlgoBase.h:80
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
HGCalClusteringAlgoBase::getDensity
virtual hgcal_clustering::Density getDensity()=0
edm::EventSetup
Definition: EventSetup.h:58
edm::ESGetToken< CaloGeometry, CaloGeometryRecord >
hgcal::RecHitTools::lastLayer
unsigned int lastLayer(bool nose=false) const
Definition: RecHitTools.h:71
hgcal_clustering::max_index
size_t max_index(const std::vector< T > &v)
Definition: HGCalClusteringAlgoBase.h:31
HGCalClusteringAlgoBase::pERROR
Definition: HGCalClusteringAlgoBase.h:50
hgcal::RecHitTools::firstLayerBH
unsigned int firstLayerBH() const
Definition: RecHitTools.h:69
hgcal::RecHitTools::setGeometry
void setGeometry(CaloGeometry const &)
Definition: RecHitTools.cc:68
HGCalClusteringAlgoBase::getEventSetupPerAlgorithm
virtual void getEventSetupPerAlgorithm(const edm::EventSetup &es)
Definition: HGCalClusteringAlgoBase.h:61
HGCalClusteringAlgoBase::pWARNING
Definition: HGCalClusteringAlgoBase.h:50
Point3D.h
EventSetup.h
HGCalClusteringAlgoBase::pDEBUG
Definition: HGCalClusteringAlgoBase.h:50
ConsumesCollector.h
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
HGCalClusteringAlgoBase::scintMaxIphi_
int scintMaxIphi_
Definition: HGCalClusteringAlgoBase.h:85
HGCalClusteringAlgoBase::makeClusters
virtual void makeClusters()=0
HGCalClusteringAlgoBase::VerbosityLevel
VerbosityLevel
Definition: HGCalClusteringAlgoBase.h:50
HGCalClusteringAlgoBase
Definition: HGCalClusteringAlgoBase.h:48
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
hgcal::RecHitTools::getScintMaxIphi
int getScintMaxIphi() const
Definition: RecHitTools.h:75
HGCalClusteringAlgoBase::isNose_
bool isNose_
Definition: HGCalClusteringAlgoBase.h:86
HGCalClusteringAlgoBase::getEventSetup
void getEventSetup(const edm::EventSetup &es)
Definition: HGCalClusteringAlgoBase.h:63