1 #ifndef RecoLocalCalo_HGCalRecProducers_HGCalCLUEAlgo_h
2 #define RecoLocalCalo_HGCalRecProducers_HGCalCLUEAlgo_h
29 template <
typename TILE>
40 kappa_(ps.getParameter<double>(
"kappa")),
41 ecut_(ps.getParameter<double>(
"ecut")),
49 fcPerEle_(ps.getParameter<double>(
"fcPerEle")),
52 use2x2_(ps.getParameter<bool>(
"use2x2")),
67 std::vector<reco::BasicCluster>
getClusters(
bool)
override;
78 cells.shrink_to_fit();
88 iDesc.
add<std::vector<double>>(
"thresholdW0", {2.9, 2.9, 2.9});
89 iDesc.
add<
double>(
"positionDeltaRho2", 1.69);
90 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<
double>(
"sciThicknessCorrection", 0.9);
104 iDesc.
add<
int>(
"deltasi_index_regemfac", 3);
105 iDesc.
add<
unsigned>(
"maxNumberOfThickIndices", 6);
106 iDesc.
add<std::vector<double>>(
"fcPerMip", {});
107 iDesc.
add<
double>(
"fcPerEle", 0.0);
108 iDesc.
add<std::vector<double>>(
"noises", {});
110 descNestedNoiseMIP.
add<
bool>(
"scaleByDose",
false);
111 descNestedNoiseMIP.add<
unsigned int>(
"scaleByDoseAlgo", 0);
112 descNestedNoiseMIP.add<
double>(
"scaleByDoseFactor", 1.);
113 descNestedNoiseMIP.add<
std::string>(
"doseMap",
"");
114 descNestedNoiseMIP.add<
std::string>(
"sipmMap",
"");
115 descNestedNoiseMIP.add<
double>(
"referenceIdark", -1);
116 descNestedNoiseMIP.add<
double>(
"referenceXtalk", -1);
117 descNestedNoiseMIP.add<
double>(
"noise_MIP", 1. / 100.);
119 iDesc.
add<
bool>(
"use2x2",
true);
165 std::vector<float>
x;
166 std::vector<float>
y;
198 detid.shrink_to_fit();
199 isSi.shrink_to_fit();
206 delta.shrink_to_fit();
219 inline float distance2(
int cell1,
int cell2,
int layerId,
bool isEtaPhi)
const {
222 const float deta =
cells_[layerId].eta[cell1] -
cells_[layerId].eta[cell2];
223 return (deta * deta + dphi * dphi);
225 const float dx =
cells_[layerId].x[cell1] -
cells_[layerId].x[cell2];
226 const float dy =
cells_[layerId].y[cell1] -
cells_[layerId].y[cell2];
227 return (dx * dx + dy * dy);
231 inline float distance(
int cell1,
int cell2,
int layerId,
bool isEtaPhi)
const {
237 const unsigned int layerId,
constexpr double deltaPhi(double phi1, double phi2)
const double positionDeltaRho2_
std::vector< double > thresholdW0_
unsigned maxNumberOfThickIndices_
int deltasi_index_regemfac_
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
int findAndAssignClusters(const unsigned int layerId, float delta_c, float delta_r)
Density getDensity() override
std::vector< int > numberOfClustersPerLayer_
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
void setDensity(const unsigned int layerId)
std::vector< std::vector< double > > thresholds_
std::vector< int > clusterIndex
float distance2(int cell1, int cell2, int layerId, bool isEtaPhi) const
void prepareDataStructures(const unsigned int layerId)
std::vector< reco::BasicCluster > clusters_v_
void populate(const HGCRecHitCollection &hits) override
std::vector< double > dEdXweights_
std::vector< float > sigmaNoise
std::vector< bool > isSeed
std::map< DetId, float > Density
void calculateDistanceToHigher(const TILE <, const unsigned int layerId, float delta_c, float delta_r)
math::XYZPoint calculatePosition(const std::vector< int > &v, const unsigned int layerId) const
void calculateLocalDensity(const TILE <, const unsigned int layerId, float delta_c, float delta_r)
std::vector< CellsOnLayer > cells_
HGCalCLUEAlgoT(const edm::ParameterSet &ps, edm::ConsumesCollector iC)
void getEventSetupPerAlgorithm(const edm::EventSetup &es) override
double delta_r(const Fourvec &a, const Fourvec &b)
Find the distance between two four-vectors in the two-dimensional space .
std::vector< double > vecDeltas_
std::vector< double > fcPerMip_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
math::XYZPoint Point
point in the space
std::vector< float > delta
std::vector< DetId > detid
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
std::vector< std::vector< int > > followers
std::vector< reco::BasicCluster > getClusters(bool) override
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< std::vector< double > > v_sigmaNoise_
float outlierDeltaFactor_
std::vector< double > nonAgedNoises_
< trclass="colgroup">< tdclass="colgroup"colspan=5 > DT local reconstruction</td ></tr >< tr >< td >< ahref="classDTRecHit1DPair.html"> DTRecHit1DPair</a ></td >< td >< ahref="DataFormats_DTRecHit.html"> edm::RangeMap & lt
std::vector< float > weight
std::vector< double > thicknessCorrection_
double sciThicknessCorrection_
void makeClusters() override
hgcal_clustering::Density Density
~HGCalCLUEAlgoT() override
std::vector< int > nearestHigher
float distance(int cell1, int cell2, int layerId, bool isEtaPhi) const