1 #ifndef RecoParticleFlow_PFClusterProducer_PFECALHashNavigator_h
2 #define RecoParticleFlow_PFClusterProducer_PFECALHashNavigator_h
47 std::unique_ptr<reco::PFRecHitCollection>&
hits,
75 const unsigned nbarrel = 62000;
82 unsigned size = vec.size();
83 for (
unsigned ic = 0; ic <
size; ++ic) {
85 std::vector<DetId> neighbours(barrelTopo.
getWindow(vec[ic], 3, 3));
87 unsigned nneighbours = neighbours.size();
90 if (hashedindex >= nbarrel) {
91 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
99 if (nneighbours == 9) {
101 for (
unsigned in = 0;
in < nneighbours; ++
in) {
103 if (neighbours[
in] != vec[ic]) {
111 for (
unsigned idir = 0; idir < 8; ++idir) {
130 const unsigned nendcap = 19960;
133 for (
unsigned ic = 0; ic <
size; ++ic) {
135 std::vector<DetId> neighbours(endcapTopo.
getWindow(vecee[ic], 3, 3));
136 unsigned nneighbours = neighbours.size();
140 if (hashedindex >= nendcap) {
141 LogDebug(
"CaloGeometryTools") <<
" Array overflow " << std::endl;
144 if (nneighbours == 9) {
146 for (
unsigned in = 0;
in < nneighbours; ++
in) {
148 if (neighbours[
in] != vecee[ic]) {
155 for (
unsigned idir = 0; idir < 8; ++idir) {
174 std::vector<DetId> neighbours;
183 if (!neighbours.empty() && !neighbours[0].null()) {
184 cell = neighbours[0];
192 const int ietaAbs(ebDetId.
ietaAbs());
200 cell = *(ol.begin());
212 if (!neighbours.empty() && !neighbours[0].null()) {
213 cell = neighbours[0];
227 cell = *(ol.begin());
266 return stdsimplemove(cell,
EAST, barrelTopo, endcapTopo, barrelGeom, endcapGeom);
277 return stdsimplemove(cell,
WEST, barrelTopo, endcapTopo, barrelGeom, endcapGeom);
288 return stdsimplemove(cell,
EAST, barrelTopo, endcapTopo, barrelGeom, endcapGeom);
299 return stdsimplemove(cell,
WEST, barrelTopo, endcapTopo, barrelGeom, endcapGeom);
303 return stdsimplemove(cell,
WEST, barrelTopo, endcapTopo, barrelGeom, endcapGeom);
313 DetId originalcell = cell;
320 static const int calodirections[9] = {-1, 1, 2, 0, 4, 3, 7, 5, 6};