1 #ifndef RecoLocalCalo_HGCalRecProducers_HGCalImagingAlgo_h 2 #define RecoLocalCalo_HGCalRecProducers_HGCalImagingAlgo_h 40 kappa_(ps.getParameter<double>(
"kappa")),
41 ecut_(ps.getParameter<double>(
"ecut")),
47 fcPerEle_(ps.getParameter<double>(
"fcPerEle")),
63 std::vector<reco::BasicCluster>
getClusters(
bool)
override;
74 std::vector<KDNode>().
swap(
it);
76 for (
unsigned int i = 0;
i <
minpos_.size();
i++) {
89 iDesc.
add<std::vector<double>>(
"thresholdW0", {2.9, 2.9, 2.9});
90 iDesc.
add<std::vector<double>>(
"positionDeltaRho_c", {1.3, 1.3, 1.3});
91 iDesc.
add<std::vector<double>>(
"deltac",
97 iDesc.
add<
bool>(
"dependSensor",
true);
98 iDesc.
add<
double>(
"ecut", 3.0);
99 iDesc.
add<
double>(
"kappa", 9.0);
101 iDesc.
add<std::vector<double>>(
"dEdXweights", {});
102 iDesc.
add<std::vector<double>>(
"thicknessCorrection", {});
103 iDesc.
add<std::vector<double>>(
"fcPerMip", {});
104 iDesc.
add<
double>(
"fcPerEle", 0.0);
106 descNestedNoises.
add<std::vector<double>>(
"values", {});
109 descNestedNoiseMIP.
add<
bool>(
"scaleByDose",
false);
110 descNestedNoiseMIP.add<
double>(
"scaleByDoseFactor", 1.);
114 descNestedNoiseMIP.
add<
double>(
"noise_MIP", 1. / 100.);
225 std::vector<size_t>
idx(
v.size());
226 std::iota(std::begin(
idx), std::end(
idx), 0);
227 sort(
idx.begin(),
idx.end(), [&
v](
size_t i1,
size_t i2) {
return v[
i1].data.delta >
v[
i2].data.delta; });
257 void setDensity(
const std::vector<KDNode> &nd);
264 void shareEnergy(
const std::vector<KDNode> &,
const std::vector<unsigned> &,
std::vector<std::vector<double>> &);
math::XYZPoint calculatePosition(std::vector< KDNode > &) const
void getEventSetupPerAlgorithm(const edm::EventSetup &es) override
bool operator>(const Hexel &rhs) const
double calculateEnergyWithFraction(const std::vector< KDNode > &, const std::vector< double > &)
math::XYZPoint calculatePositionWithFraction(const std::vector< KDNode > &, const std::vector< double > &)
KDTreeNodeInfo< Hexel > KDNode
std::vector< HGCRecHit > HGCRecHitCollection
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::vector< std::vector< double > > thresholds_
void shareEnergy(const std::vector< KDNode > &, const std::vector< unsigned > &, std::vector< std::vector< double >> &)
double distance(const Hexel &pt1, const Hexel &pt2) const
KDTreeLinkerAlgo< Hexel > KDTree
math::XYZPoint Point
point in the space
double distance2(const Hexel &pt1, const Hexel &pt2) const
std::vector< reco::BasicCluster > getClusters(bool) override
std::vector< std::array< float, 2 > > minpos_
std::vector< double > positionDeltaRho_c_
std::vector< double > thresholdW0_
void swap(Association< C > &lhs, Association< C > &rhs)
void makeClusters() override
std::map< DetId, float > Density
std::vector< size_t > sort_by_delta(const std::vector< KDNode > &v) const
std::vector< std::array< float, 2 > > maxpos_
std::vector< reco::BasicCluster > clusters_v_
std::vector< std::vector< KDNode > > points_
std::vector< double > vecDeltas_
std::vector< double > dEdXweights_
std::vector< std::vector< double > > sigmaNoise_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double calculateLocalDensity(std::vector< KDNode > &, KDTree &, const unsigned int) const
void setDensity(const std::vector< KDNode > &nd)
std::vector< unsigned > findLocalMaximaInCluster(const std::vector< KDNode > &)
Density getDensity() override
void populate(const HGCRecHitCollection &hits) override
const hgcal::RecHitTools * tools
int findAndAssignClusters(std::vector< KDNode > &, KDTree &, double, KDTreeBox< 2 > &, const unsigned int, std::vector< std::vector< KDNode >> &) const
~HGCalImagingAlgo() override
std::vector< double > thicknessCorrection_
std::vector< std::vector< std::vector< KDNode > > > layerClustersPerLayer_
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< double > fcPerMip_
std::vector< double > nonAgedNoises_
HGCalImagingAlgo(const edm::ParameterSet &ps)
static int position[264][3]
Hexel(const HGCRecHit &hit, DetId id_in, bool isHalf, float sigmaNoise_in, float thickness_in, const hgcal::RecHitTools *tools_in)
hgcal_clustering::Density Density
double calculateDistanceToHigher(std::vector< KDNode > &) const