10 std::vector<double>
const& rFront,
11 std::vector<double>
const&
slope) {
17 for (
unsigned int k=0;
k<slope.size(); ++
k) {
18 if (z < zFront[
k]+
tol)
break;
19 r = rFront[
k] + (z - zFront[
k]) * slope[
k];
32 std::vector<double>
const& zFront,
33 std::vector<double>
const& rFront) {
39 for (
unsigned int k=0;
k<rFront.size(); ++
k) {
40 int k1 = layerf-layer0+(
int)(
k);
41 if (k1 < (
int)(zFront.size())) {
42 if (z < zFront[k1]+
tol)
break;
63 xc[0] = xpos; yc[0] = ypos+
R;
64 xc[1] = xpos-
r; yc[1] = ypos+0.5*
R;
66 xc[2] = xpos+
r; yc[2] = ypos-0.5*
R;
68 xc[2] = xpos-
r; yc[2] = ypos-0.5*
R;
70 xc[3] = xpos; yc[3] = ypos-
R;
71 xc[4] = xpos+
r; yc[4] = ypos-0.5*
R;
72 xc[5] = xpos+
r; yc[5] = ypos+0.5*
R;
73 int32_t nCorner(0), firstCorner(-1), firstMiss(-1);
75 std::vector<uint32_t> corners;
78 double rpos =
sqrt(xc[
k]*xc[
k]+yc[
k]*yc[
k]);
79 if ((rpos <= rMax) && (rpos >= rMin)) {
81 corners.emplace_back(k);
83 if (firstCorner < 0) firstCorner =
k;
86 if (firstMiss < 0) firstMiss =
k;
89 if ((nCorner > 1) && (firstCorner == 0) && (firstMiss < nCorner)) {
90 firstCorner = firstMiss+HGCalParameters::k_CornerSize-nCorner;
94 << nCorner <<
" corners; first corner " 99 corners.end()) ?
" In" :
" Out";
101 <<
" y " << yc[
k] <<
" R " << rpos <<
ok;
104 return std::make_pair(nCorner,firstCorner);
static const double slope[3]
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
static uint32_t k_CornerSize