Belle II Software  release-05-01-25
PhiRecoTrackRelationFilter.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/modules/cosmicsTrackMerger/PhiRecoTrackRelationFilter.h>
11 
12 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
13 #include <tracking/trackFindingCDC/geometry/Vector3D.h>
14 
15 #include <tracking/trackFindingCDC/numerics/Angle.h>
16 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
17 
18 #include <framework/core/ModuleParamList.templateDetails.h>
19 
20 using namespace Belle2;
21 using namespace TrackFindingCDC;
22 
24  const std::string& prefix)
25 {
26  moduleParamList->addParameter(prefixed(prefix, "maximalPhiDistance"),
27  m_param_maximalPhiDistance,
28  "Maximal Phi distance below to tracks should be merged.",
29  m_param_maximalPhiDistance);
30 }
31 
33 {
34  // Make sure we only have one relation out of A -> B and B -> A
35  if (fromTrack->getPositionSeed().Y() < toTrack->getPositionSeed().Y()) {
36  return NAN;
37  }
38 
39  const CDCTrajectory2D fromTrajectory(Vector3D(fromTrack->getPositionSeed()).xy(), 0,
40  Vector3D(fromTrack->getMomentumSeed()).xy(), fromTrack->getChargeSeed());
41  const CDCTrajectory2D toTrajectory(Vector3D(toTrack->getPositionSeed()).xy(), 0,
42  Vector3D(toTrack->getMomentumSeed()).xy(), toTrack->getChargeSeed());
43 
44  const Vector2D origin;
45 
46  const double fromPhi = fromTrajectory.getFlightDirection2D(origin).phi();
47  const double toPhi = toTrajectory.getFlightDirection2D(origin).phi();
48 
49  const double phiDistance = std::fabs(AngleUtil::normalised(fromPhi - toPhi));
50 
51  if (phiDistance > m_param_maximalPhiDistance) {
52  return NAN;
53  } else {
54  return phiDistance;
55  }
56 }
Belle2::Vector3D
HepGeom::Vector3D< double > Vector3D
3D Vector
Definition: Cell.h:35
Belle2::PhiRecoTrackRelationFilter::operator()
TrackFindingCDC::Weight operator()(const CellularRecoTrack &fromTrack, const CellularRecoTrack &toTrack) final
Implementation of the phi calculation.
Definition: PhiRecoTrackRelationFilter.cc:32
Belle2::TrackFindingCDC::WithAutomatonCell
Mixin class to attach an automaton cell to an object or pointer.
Definition: WithAutomatonCell.h:32
Belle2::ModuleParamList::addParameter
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Definition: ModuleParamList.templateDetails.h:38
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PhiRecoTrackRelationFilter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Export all parameters.
Definition: PhiRecoTrackRelationFilter.cc:23
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::TrackFindingCDC::AngleUtil::normalised
static double normalised(const double angle)
Normalise an angle to lie in the range from [-pi, pi].
Definition: Angle.h:43