10 #include <tracking/trackFindingCDC/filters/facet/RealisticFacetFilter.h>
12 #include <tracking/trackFindingCDC/eventdata/hits/CDCFacet.h>
14 #include <tracking/trackFindingCDC/numerics/Quadratic.h>
16 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
18 #include <framework/core/ModuleParamList.templateDetails.h>
23 using namespace TrackFindingCDC;
26 : m_param_phiPullCut(11)
31 : m_param_phiPullCut(phiPullCut)
36 const std::string& prefix)
39 moduleParamList->
addParameter(prefixed(prefix,
"phiPullCut"),
41 "Acceptable angle pull in the angle of adjacent tangents to the "
52 const double startDriftLengthStd = sqrt(startDriftLengthVar);
56 const double middleDriftLengthStd = sqrt(middleDriftLengthVar);
60 const double endDriftLengthStd = sqrt(endDriftLengthVar);
70 const double startToMiddleLength = startToMiddleTangentialVector.
norm();
71 const double startToEndLength = startToEndTangentialVector.
norm();
72 const double middleToEndLength = middleToEndTangentialVector.
norm();
74 const double startCos = startToMiddleTangentialVector.
cosWith(startToEndTangentialVector);
75 const double middleCos = startToMiddleTangentialVector.
cosWith(middleToEndTangentialVector);
76 const double endCos = startToEndTangentialVector.
cosWith(middleToEndTangentialVector);
78 const double startPhi = acos(startCos);
79 const double middlePhi = acos(middleCos);
80 const double endPhi = acos(endCos);
82 const double startToMiddleSigmaPhi = startDriftLengthStd / startToMiddleLength;
83 const double startToEndSigmaPhi = startDriftLengthStd / startToEndLength;
85 const double middleToStartSigmaPhi = middleDriftLengthStd / startToMiddleLength;
86 const double middleToEndSigmaPhi = middleDriftLengthStd / middleToEndLength;
88 const double endToStartSigmaPhi = endDriftLengthStd / startToEndLength;
89 const double endToMiddleSigmaPhi = endDriftLengthStd / middleToEndLength;
91 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
92 middleToStartSigmaPhi,
95 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
96 middleToStartSigmaPhi + middleToEndSigmaPhi,
99 const double endPhiSigma = hypot3(startToEndSigmaPhi,
101 endToStartSigmaPhi - endToMiddleSigmaPhi);
103 const double startPhiPull = startPhi / startPhiSigma;
104 const double middlePhiPull = middlePhi / middlePhiSigma;
105 const double endPhiPull = endPhi / endPhiSigma;
115 std::fmin(0.1, (startPhiPull + middlePhiPull + endPhiPull) /
m_param_phiPullCut / 1000);
119 return 3 - miniPenalty;