Belle II Software  release-05-01-25
AxialTrackMerger.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2014 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Viktor Trusov, Nils Braun, Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <tracking/trackFindingCDC/findlets/base/Findlet.h>
13 
14 #include <tracking/trackFindingCDC/numerics/WithWeight.h>
15 #include <tracking/trackFindingCDC/utilities/MayBePtr.h>
16 
17 #include <vector>
18 #include <string>
19 
20 namespace Belle2 {
26  namespace TrackFindingCDC {
27  class CDCTrack;
28  class CDCWireHit;
29  class CDCTrajectory2D;
30 
32  class AxialTrackMerger : public Findlet<CDCTrack&, const CDCWireHit* const> {
33 
34  private:
36  using Super = Findlet<CDCTrack&, const CDCWireHit* const>;
37 
38  public:
40  std::string getDescription() final;
41 
43  void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
44 
46  void apply(std::vector<CDCTrack>& axialTracks, const std::vector<const CDCWireHit*>& axialWireHits) final;
47 
48  private:
53  void doTracksMerging(std::vector<CDCTrack>& axialTracks,
54  const std::vector<const CDCWireHit*>& allAxialWireHits);
55 
56  private:
64  template <class ACDCTracks>
65  static WithWeight<MayBePtr<CDCTrack> > calculateBestTrackToMerge(CDCTrack& track, ACDCTracks& tracks);
66 
72  static double doTracksFitTogether(CDCTrack& track1, CDCTrack& track2);
73 
79  static void removeStrangeHits(double factor,
80  std::vector<const CDCWireHit*>& wireHits,
81  CDCTrajectory2D& trajectory);
82 
89  static void mergeTracks(CDCTrack& track1,
90  CDCTrack& track2,
91  const std::vector<const CDCWireHit*>& allAxialWireHits);
92 
93  private:
95  double m_param_minFitProb = 0.85;
96  };
97  }
99 }
Belle2::TrackFindingCDC::AxialTrackMerger::doTracksMerging
void doTracksMerging(std::vector< CDCTrack > &axialTracks, const std::vector< const CDCWireHit * > &allAxialWireHits)
The track finding often finds two curling tracks, originating from the same particle.
Definition: AxialTrackMerger.cc:70
Belle2::TrackFindingCDC::CDCTrack
Class representing a sequence of three dimensional reconstructed hits.
Definition: CDCTrack.h:51
Belle2::TrackFindingCDC::AxialTrackMerger::mergeTracks
static void mergeTracks(CDCTrack &track1, CDCTrack &track2, const std::vector< const CDCWireHit * > &allAxialWireHits)
Function to merge two track candidates.
Definition: AxialTrackMerger.cc:196
Belle2::TrackFindingCDC::AxialTrackMerger::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: AxialTrackMerger.cc:34
Belle2::TrackFindingCDC::AxialTrackMerger::calculateBestTrackToMerge
static WithWeight< MayBePtr< CDCTrack > > calculateBestTrackToMerge(CDCTrack &track, ACDCTracks &tracks)
Searches for the best candidate to merge this track to.
Belle2::TrackFindingCDC::CDCTrajectory2D
Particle trajectory as it is seen in xy projection represented as a circle.
Definition: CDCTrajectory2D.h:46
Belle2::TrackFindingCDC::AxialTrackMerger::getDescription
std::string getDescription() final
Short description of the findlet.
Definition: AxialTrackMerger.cc:29
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::AxialTrackMerger::doTracksFitTogether
static double doTracksFitTogether(CDCTrack &track1, CDCTrack &track2)
Fits the hit content of both tracks in a common fit repeated with an annealing schedule removing far ...
Definition: AxialTrackMerger.cc:109
Belle2::TrackFindingCDC::WithWeight
A mixin class to attach a weight to an object.
Definition: WithWeight.h:34
Belle2::TrackFindingCDC::AxialTrackMerger::m_param_minFitProb
double m_param_minFitProb
Parameter : Minimal fit probability of the common fit of two tracks to be eligible for merging.
Definition: AxialTrackMerger.h:103
Belle2::TrackFindingCDC::CDCWireHit
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:65
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::TrackFindingCDC::AxialTrackMerger::Super
Findlet< CDCTrack &, const CDCWireHit *const > Super
Type of the base class.
Definition: AxialTrackMerger.h:44
Belle2::TrackFindingCDC::AxialTrackMerger::removeStrangeHits
static void removeStrangeHits(double factor, std::vector< const CDCWireHit * > &wireHits, CDCTrajectory2D &trajectory)
Remove all hits that are further than factor * driftlength waay from the trajectory.
Definition: AxialTrackMerger.cc:183
Belle2::TrackFindingCDC::AxialTrackMerger::apply
void apply(std::vector< CDCTrack > &axialTracks, const std::vector< const CDCWireHit * > &axialWireHits) final
Merge tracks together. Allows for axial hits to be added as it may see fit.
Definition: AxialTrackMerger.cc:43