1 #ifndef __L1Trigger_L1THGCal_HGCalHistoSeedingImpl_h__ 2 #define __L1Trigger_L1THGCal_HGCalHistoSeedingImpl_h__ 18 std::array<float, 3>
values = {{0., 0., 0.}};
25 using Data = std::vector<T>;
53 <<
") in seeding histogram of size (" <<
bins1_ <<
"," <<
bins2_ <<
")";
70 if (
x1 < 0 || x2 < 0 || x1 >= std::get<0>(
bins_) ||
x2 >= std::get<1>(
bins_)) {
71 throw cms::Exception(
"OutOfBound") <<
"Setting invalid navigator home position (" <<
x1 <<
"," <<
x2 <<
"\n)";
77 std::array<int, 2>
move(
int offset1,
int offset2) {
return {{offset<0>(offset1), offset<1>(offset2)}}; }
81 int shifted = std::get<N>(
home_);
86 if (shifted < 0 || shifted >=
max)
93 while (shifted >=
max)
116 std::vector<std::pair<GlobalPoint, double>>& seedPositionsEnergy);
const_iterator end() const
std::vector< std::pair< GlobalPoint, double > > computeInterpolatedMaxSeeds(const Histogram &histoClusters)
static constexpr unsigned neighbour_weights_size_
std::vector< unsigned > binsSumsHisto_
Histogram fillSmoothPhiHistoClusters(const Histogram &histoClusters, const vector< unsigned > &binSums)
const T & at(int zside, unsigned x1, unsigned x2) const
std::array< int, 2 > bins_
const_iterator begin() const
void setHome(int x1, int x2)
Histogram fillSmoothRPhiHistoClusters(const Histogram &histoClusters)
SeedingPosition seedingPosition_
typename Data::const_iterator const_iterator
static constexpr unsigned kSides_
typename Data::iterator iterator
std::vector< std::pair< GlobalPoint, double > > computeMaxSeeds(const Histogram &histoClusters)
HGCalTriggerTools triggerTools_
std::vector< std::pair< GlobalPoint, double > > computeSecondaryMaxSeeds(const Histogram &histoClusters)
SeedingSpace seedingSpace_
void findHistoSeeds(const std::vector< edm::Ptr< l1t::HGCalCluster >> &clustersPtr, std::vector< std::pair< GlobalPoint, double >> &seedPositionsEnergy)
void setSeedEnergyAndPosition(std::vector< std::pair< GlobalPoint, double >> &seedPositionsEnergy, int z_side, unsigned bin_R, unsigned bin_phi, const Bin &histBin)
Histogram fillSmoothHistoClusters(const Histogram &, const vector< double > &, Bin::Content)
std::array< int, 2 > move(int offset1, int offset2)
std::array< double, 4 > boundaries()
HistogramT< Bin > Histogram
float dR(const l1t::HGCalCluster &clu, const GlobalPoint &seed) const
std::vector< double > smoothing_ecal_
void setGeometry(const HGCalTriggerGeometryBase *const geom)
std::vector< std::pair< GlobalPoint, double > > computeThresholdSeeds(const Histogram &histoClusters)
std::array< float, 3 > values
std::array< AxisType, 2 > axis_types_
unsigned index(int zside, unsigned x1, unsigned x2) const
std::vector< double > neighbour_weights_
Histogram fillHistoClusters(const std::vector< edm::Ptr< l1t::HGCalCluster >> &clustersPtrs)
std::array< int, 2 > home_
static constexpr double kXYMax_
static unsigned int const shift
std::string seedingAlgoType_
Navigator(int bins1, AxisType type_axis1, int bins2, AxisType type_axis2)
T & at(int zside, unsigned x1, unsigned x2)
std::vector< double > smoothing_hcal_
HistogramT(unsigned bins1, unsigned bins2)
static constexpr double area_per_triggercell_
HGCalHistoSeedingImpl(const edm::ParameterSet &conf)