78       auto maxItr = std::max_element(startItr, stopItr);
    80       float maxValue = *maxItr;
    85         auto firstItr = 
std::distance(startItr, maxItr) > 2 ? maxItr - 1 : startItr;
    87         while (firstItr != startItr) {
    92           if (*firstItr < *(firstItr + 1) && *firstItr <= *(firstItr - 1)) 
break;
   100         findHitCandidates(startItr, firstItr + 1, roiStartTick, planeIdx, hitCandidateVec);
   103         auto lastItr = 
std::distance(maxItr, stopItr) > 2 ? maxItr + 1 : stopItr - 1;
   105         while (lastItr != stopItr - 1) {
   110           if (*lastItr <= *(lastItr + 1) && *lastItr < *(lastItr - 1)) 
break;
   118         HitCandidate hitCandidate;
   119         hitCandidate.startTick = roiStartTick + firstTime;
   120         hitCandidate.stopTick = roiStartTick + lastTime;
   121         hitCandidate.maxTick = roiStartTick + firstTime;
   122         hitCandidate.minTick = roiStartTick + lastTime;
   123         hitCandidate.maxDerivative = *(startItr + firstTime);
   124         hitCandidate.minDerivative = *(startItr + lastTime);
   125         hitCandidate.hitCenter = roiStartTick + maxTime;
   126         hitCandidate.hitSigma = 
std::max(2., 
float(lastTime - firstTime) / 6.);
   127         hitCandidate.hitHeight = maxValue;
   129         hitCandidateVec.push_back(hitCandidate);
 
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
 
static int max(int a, int b)