11 #include <tracking/trackFindingCDC/eventdata/hits/CDCRecoHit3D.h>
12 #include <tracking/trackFindingCDC/hough/boxes/Z0TanLambdaBox.h>
13 #include <tracking/trackFindingCDC/hough/baseelements/SameSignChecker.h>
20 namespace TrackFindingCDC {
27 class HitInZ0TanLambdaBox {
40 float lowerZ0 = z0TanLambdaBox->getLowerZ0();
41 float upperZ0 = z0TanLambdaBox->getUpperZ0();
43 float lowerTanLambda = z0TanLambdaBox->getLowerTanLambda();
44 float upperTanLambda = z0TanLambdaBox->getUpperTanLambda();
46 float perpS = recoHit.getArcLength2D();
47 float reconstructedZ = recoHit.getRecoZ();
49 float distLowerZ0LowerTanLambda = perpS * lowerTanLambda - reconstructedZ + lowerZ0;
50 float distUpperZ0LowerTanLambda = perpS * lowerTanLambda - reconstructedZ + upperZ0;
51 float distLowerZ0UpperTanLambda = perpS * upperTanLambda - reconstructedZ + lowerZ0;
52 float distUpperZ0UpperTanLambda = perpS * upperTanLambda - reconstructedZ + upperZ0;
55 distLowerZ0UpperTanLambda, distUpperZ0UpperTanLambda);
67 static bool compareDistances(
const HoughBox& z0TanLambdaBox,
const CDCRecoHit3D& lhsRecoHit,
const CDCRecoHit3D& rhsRecoHit)
69 const double z0Mean = (z0TanLambdaBox.getLowerZ0() + z0TanLambdaBox.getUpperZ0()) / 2.0;
70 const double tanLambdaMean = (z0TanLambdaBox.getLowerTanLambda() + z0TanLambdaBox.getUpperTanLambda()) / 2.0;
72 const double lhsZ = lhsRecoHit.getRecoZ();
73 const double rhsZ = rhsRecoHit.getRecoZ();
75 const double lhsS = lhsRecoHit.getArcLength2D();
76 const double rhsS = rhsRecoHit.getArcLength2D();
78 const double lhsZDistance = lhsS * tanLambdaMean + z0Mean - lhsZ;
79 const double rhsZDistance = rhsS * tanLambdaMean + z0Mean - rhsZ;
81 return lhsZDistance < rhsZDistance;
85 static const char*
debugLine() {
return "[0] + [1] * x";}