9 std::vector<size_t>
idx(
v.size());
10 for (
size_t i = 0;
i !=
idx.size(); ++
i)
26 float tanTheta =
tan(2 * atan(
exp(-1 *
a->eta())));
27 float ax =
b->z() * tanTheta *
cos(
a->phi());
28 float ay =
b->z() * tanTheta *
sin(
a->phi());
29 return (ax -
b->x()) * (ax -
b->x()) + (ay -
b->y()) * (ay -
b->y());
35 std::vector<reco::HGCalMultiCluster> thePreClusters;
37 std::vector<int> vused(es.size(), 0);
39 for (
unsigned int i = 0;
i < es.size(); ++
i) {
42 temp.push_back(thecls[es[
i]]);
43 vused[
i] = (thecls[es[
i]]->z() > 0) ? 1 : -1;
44 for (
unsigned int j =
i + 1;
j < es.size(); ++
j) {
46 float distanceCheck = 9999.;
48 distanceCheck = distAxisCluster2(thecls[es[
i]], thecls[es[
j]]);
50 distanceCheck = dist2(thecls[es[
i]], thecls[es[
j]]);
51 DetId detid = thecls[es[
j]]->hitsAndFractions()[0].first();
59 if (distanceCheck < radius2 &&
int(thecls[es[
j]]->
z() * vused[
i]) > 0) {
60 temp.push_back(thecls[es[
j]]);
66 thePreClusters.push_back(
temp);
67 auto &back = thePreClusters.back();
68 back.setPosition(
clusterTools->getMultiClusterPosition(back));
69 back.setEnergy(
clusterTools->getMultiClusterEnergy(back));
74 return thePreClusters;
Sin< T >::type sin(const T &t)
std::unique_ptr< hgcal::ClusterTools > clusterTools
hgcal::RecHitTools rhtools_
Cos< T >::type cos(const T &t)
std::vector< size_t > sorted_indices(const std::vector< T > &v)
Tan< T >::type tan(const T &t)
std::vector< float > radii
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
std::vector< reco::HGCalMultiCluster > makePreClusters(const reco::HGCalMultiCluster::ClusterCollection &) const