8 #include <tracking/vxdHoughTracking/filters/relations/AngleAndTimeRelationFilter.h>
9 #include <tracking/trackFindingCDC/filters/base/Filter.icc.h>
10 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
11 #include <framework/core/ModuleParamList.templateDetails.h>
14 using namespace TrackFindingCDC;
15 using namespace vxdHoughTracking;
17 void AngleAndTimeRelationFilter::exposeParameters(
ModuleParamList* moduleParamList,
const std::string& prefix)
19 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"AngleAndTimeThetaCutDeltaL0"), m_ThetaCutDeltaL0,
20 "Simple cut in theta for the overlay region of different ladders in the same layer.",
22 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"AngleAndTimeThetaCutDeltaL1"), m_ThetaCutDeltaL1,
23 "Simple cut in theta for relations between hits with Delta_Layer = +-1.", m_ThetaCutDeltaL1);
24 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"AngleAndTimeThetaCutDeltaL2"), m_ThetaCutDeltaL2,
25 "Simple cut in theta for relations between hits with Delta_Layer = +-2.", m_ThetaCutDeltaL2);
27 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"AngleAndTimeDeltaUTime"), m_DeltaTU,
28 "Cut on the difference in u-side cluster time between two hits during relation creation.", m_DeltaTU);
29 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"AngleAndTimeDeltaVTime"), m_DeltaTV,
30 "Cut on the difference in v-side cluster time between two hits during relation creation.", m_DeltaTV);
31 moduleParamList->
addParameter(TrackFindingCDC::prefixed(prefix,
"useDeltaTCuts"), m_useDeltaTCuts,
32 "Use the cut on the time difference between two hits during relation creation?", m_useDeltaTCuts);
35 TrackFindingCDC::Weight
36 AngleAndTimeRelationFilter::operator()(
const std::pair<const VXDHoughState*, const VXDHoughState*>& relation)
41 const double absThetaDiff = abs(currentHitData.
theta - nextHitData.
theta);
45 if (currentHitData.
layer == nextHitData.
layer) {
46 if (absThetaDiff > m_ThetaCutDeltaL0) {
55 const ushort absLayerDiff = abs(currentHitData.
layer - nextHitData.
layer);
56 if ((absLayerDiff == 1 and absThetaDiff < m_ThetaCutDeltaL1) or
57 (absLayerDiff == 2 and absThetaDiff < m_ThetaCutDeltaL2)) {
59 if (not m_useDeltaTCuts or
61 abs(currentHitData.
uTime - nextHitData.
uTime) < m_DeltaTU and
62 abs(currentHitData.
vTime - nextHitData.
vTime) < m_DeltaTV)) {
The Module parameter list class.
void addParameter(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Abstract base class for different kinds of events.
Cache containing the most important information of this state which will often be needed.
unsigned short layer
Geometrical Layer this state is based on.
float uTime
Time of the u-side cluster.
float theta
Theta value of SpacePoint.
float vTime
Time of the v-side cluster.