11 #include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit3D.h>
12 #include <tracking/trackFindingCDC/hough/boxes/PQBox.h>
13 #include <tracking/trackFindingCDC/hough/baseelements/SameSignChecker.h>
20 namespace TrackFindingCDC {
30 class HitInQuadraticBox {
43 float lowerP = pqBox->getLowerP();
44 float upperP = pqBox->getUpperP();
46 float lowerQ = pqBox->getLowerQ();
47 float upperQ = pqBox->getUpperQ();
49 float perpS = recoHit.getArcLength2D();
50 float reconstructedZ = recoHit.getRecoZ();
52 float distLowerPLowerQ = (lowerP + 4 * lowerQ) * perpS - lowerQ / 25 * perpS * perpS - reconstructedZ;
53 float distUpperPLowerQ = (upperP + 4 * lowerQ) * perpS - lowerQ / 25 * perpS * perpS - reconstructedZ;
54 float distLowerPUpperQ = (lowerP + 4 * upperQ) * perpS - upperQ / 25 * perpS * perpS - reconstructedZ;
55 float distUpperPUpperQ = (upperP + 4 * upperQ) * perpS - upperQ / 25 * perpS * perpS - reconstructedZ;
58 distLowerPUpperQ, distUpperPUpperQ);
72 const double pMean = (pqBox.getLowerP() + pqBox.getUpperP()) / 2.0;
73 const double qMean = (pqBox.getLowerQ() + pqBox.getUpperQ()) / 2.0;
75 const double lhsZ = lhsRecoHit.getRecoZ();
76 const double rhsZ = rhsRecoHit.getRecoZ();
78 const double lhsS = lhsRecoHit.getArcLength2D();
79 const double rhsS = rhsRecoHit.getArcLength2D();
81 const double lhsZDistance = (pMean + 4 * qMean) * lhsS - qMean / 25 * lhsS * lhsS - lhsZ;
82 const double rhsZDistance = (pMean + 4 * qMean) * rhsS - qMean / 25 * rhsS * rhsS - rhsZ;
84 return lhsZDistance < rhsZDistance;
88 static const char*
debugLine() {
return "([0] + 4*[1])*x - [1] / 25 * x * x";}