Belle II Software development
AxialTrackMerger.h
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#pragma once
9
10#include <tracking/trackingUtilities/findlets/base/Findlet.h>
11
12#include <tracking/trackingUtilities/numerics/WithWeight.h>
13#include <tracking/trackingUtilities/utilities/MayBePtr.h>
14
15#include <vector>
16#include <string>
17
18namespace Belle2 {
23
24 namespace TrackingUtilities {
25 class CDCTrack;
26 class CDCWireHit;
27 class CDCTrajectory2D;
28 }
29
30 namespace TrackFindingCDC {
31
33 class AxialTrackMerger : public
34 TrackingUtilities::Findlet<TrackingUtilities::CDCTrack&, const TrackingUtilities::CDCWireHit* const> {
35
36 private:
39
40 public:
42 std::string getDescription() final;
43
45 void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
46
48 void apply(std::vector<TrackingUtilities::CDCTrack>& axialTracks,
49 const std::vector<const TrackingUtilities::CDCWireHit*>& axialWireHits) final;
50
51 private:
56 void doTracksMerging(std::vector<TrackingUtilities::CDCTrack>& axialTracks,
57 const std::vector<const TrackingUtilities::CDCWireHit*>& allAxialWireHits);
58
59 private:
67 template <class ACDCTracks>
68 static TrackingUtilities::WithWeight<TrackingUtilities::MayBePtr<TrackingUtilities::CDCTrack> > calculateBestTrackToMerge(
69 TrackingUtilities::CDCTrack& track, ACDCTracks& tracks);
70
76 static double doTracksFitTogether(TrackingUtilities::CDCTrack& track1, TrackingUtilities::CDCTrack& track2);
77
85 static void removeStrangeHits(double factor,
86 std::vector<const TrackingUtilities::CDCWireHit*>& wireHits,
87 TrackingUtilities::CDCTrajectory2D& trajectory);
88
95 static void mergeTracks(TrackingUtilities::CDCTrack& track1,
96 TrackingUtilities::CDCTrack& track2,
97 const std::vector<const TrackingUtilities::CDCWireHit*>& allAxialWireHits);
98
99 private:
101 double m_param_minFitProb = 0.85;
102 };
103 }
105}
The Module parameter list class.
Findlet implementing the merging of axial tracks found in the legendre tree search.
void apply(std::vector< TrackingUtilities::CDCTrack > &axialTracks, const std::vector< const TrackingUtilities::CDCWireHit * > &axialWireHits) final
Merge tracks together. Allows for axial hits to be added as it may see fit.
static void removeStrangeHits(double factor, std::vector< const TrackingUtilities::CDCWireHit * > &wireHits, TrackingUtilities::CDCTrajectory2D &trajectory)
Remove all hits that are further than factor * driftlength away from the trajectory.
void doTracksMerging(std::vector< TrackingUtilities::CDCTrack > &axialTracks, const std::vector< const TrackingUtilities::CDCWireHit * > &allAxialWireHits)
The track finding often finds two curling tracks, originating from the same particle.
TrackingUtilities::Findlet< TrackingUtilities::CDCTrack &, const TrackingUtilities::CDCWireHit *const > Super
Type of the base class.
std::string getDescription() final
Short description of the findlet.
static void mergeTracks(TrackingUtilities::CDCTrack &track1, TrackingUtilities::CDCTrack &track2, const std::vector< const TrackingUtilities::CDCWireHit * > &allAxialWireHits)
Function to merge two track candidates.
static double doTracksFitTogether(TrackingUtilities::CDCTrack &track1, TrackingUtilities::CDCTrack &track2)
Fits the hit content of both tracks in a common fit repeated with an annealing schedule removing far ...
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
static TrackingUtilities::WithWeight< TrackingUtilities::MayBePtr< TrackingUtilities::CDCTrack > > calculateBestTrackToMerge(TrackingUtilities::CDCTrack &track, ACDCTracks &tracks)
Searches for the best candidate to merge this track to.
double m_param_minFitProb
Parameter : Minimal fit probability of the common fit of two tracks to be eligible for merging.
Class representing a sequence of three dimensional reconstructed hits.
Definition CDCTrack.h:39
Particle trajectory as it is seen in xy projection represented as a circle.
Class representing a hit wire in the central drift chamber.
Definition CDCWireHit.h:58
Interface for a minimal algorithm part that wants to expose some parameters to a module.
Definition Findlet.h:26
STL class.
Abstract base class for different kinds of events.
STL namespace.