Belle II Software  release-06-02-00
AngleAndTimeRelationFilter.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
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>
12 
13 using namespace Belle2;
14 using namespace TrackFindingCDC;
15 using namespace vxdHoughTracking;
16 
17 void AngleAndTimeRelationFilter::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
18 {
19  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "AngleAndTimeThetaCutDeltaL0"), m_param_ThetaCutDeltaL0,
20  "Simple cut in theta for the overlay region of different ladders in the same layer.",
21  m_param_ThetaCutDeltaL0);
22  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "AngleAndTimeThetaCutDeltaL1"), m_param_ThetaCutDeltaL1,
23  "Simple cut in theta for relations between hits with Delta_Layer = +-1.", m_param_ThetaCutDeltaL1);
24  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "AngleAndTimeThetaCutDeltaL2"), m_param_ThetaCutDeltaL2,
25  "Simple cut in theta for relations between hits with Delta_Layer = +-2.", m_param_ThetaCutDeltaL2);
26 
27  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "AngleAndTimeDeltaUTime"), m_param_DeltaTU,
28  "Cut on the difference in u-side cluster time between two hits during relation creation.", m_param_DeltaTU);
29  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "AngleAndTimeDeltaVTime"), m_param_DeltaTV,
30  "Cut on the difference in v-side cluster time between two hits during relation creation.", m_param_DeltaTV);
31 }
32 
33 TrackFindingCDC::Weight
34 AngleAndTimeRelationFilter::operator()(const std::pair<const VXDHoughState*, const VXDHoughState*>& relation)
35 {
36  const VXDHoughState::DataCache& currentHitData = relation.first->getDataCache();
37  const VXDHoughState::DataCache& nextHitData = relation.second->getDataCache();
38 
39  const double absThetaDiff = abs(currentHitData.theta - nextHitData.theta);
40 
41  // if the connection is possible in u, it should also be possible in v, but as there could in principle be a chance that the hits
42  // are on different sensors (X.X.1 -> X.(X+-1).2 or X.X.2 -> X.(X+-1).1) check for a similar theta value instead of v
43  if (currentHitData.layer == nextHitData.layer) {
44  if (absThetaDiff > m_param_ThetaCutDeltaL0) {
45  return NAN;
46  }
47  // The hits are on the same layer but neighbouring ladders and in the overlap region they are in close proximity in phi.
48  // And since they passed the condition above, they are also in close proximity in theta.
49  // Thus they are close in phi and should be accepted.
50  return 1.0;
51  }
52 
53  const ushort absLayerDiff = abs(currentHitData.layer - nextHitData.layer);
54  if ((absLayerDiff == 1 and absThetaDiff < m_param_ThetaCutDeltaL1) or
55  (absLayerDiff == 2 and absThetaDiff < m_param_ThetaCutDeltaL2)) {
56 
57  if (abs(currentHitData.uTime - nextHitData.uTime) < m_param_DeltaTU and
58  abs(currentHitData.vTime - nextHitData.vTime) < m_param_DeltaTV) {
59  return 1.0;
60  }
61 
62  }
63 
64  return NAN;
65 
66 }
The Module parameter list class.
void addParameter(const std::string &name, T &paramVariable, 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.
Definition: VXDHoughState.h:70
unsigned short layer
Geometrical Layer this state is based on.
Definition: VXDHoughState.h:96
float uTime
Time of the u-side cluster.
Definition: VXDHoughState.h:92
float vTime
Time of the v-side cluster.
Definition: VXDHoughState.h:94