Belle II Software  release-05-01-25
AxialTrackCreatorHitLegendre.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Bastian Kronenbitter, Thomas Hauth, Viktor Trusov, *
7  * Nils Braun, Oliver Frost, Dmitrii Neverov *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 #pragma once
12 
13 #include <tracking/trackFindingCDC/findlets/base/Findlet.h>
14 
15 #include <tracking/trackFindingCDC/legendre/quadtree/AxialHitQuadTreeProcessor.h>
16 
17 namespace Belle2 {
23  namespace TrackFindingCDC {
24  class CDCTrack;
25  class CDCWireHit;
26 
35  class AxialTrackCreatorHitLegendre : public Findlet<const CDCWireHit* const, CDCTrack> {
36 
37  private:
39  using Super = Findlet<const CDCWireHit* const, CDCTrack>;
40 
41  public:
47  enum class EPass {
49  NonCurlers,
54  FullRange,
57  Straight
58  };
59 
60  public:
63 
65  explicit AxialTrackCreatorHitLegendre(EPass pass);
66 
68  std::string getDescription() final;
69 
71  void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
72 
74  void initialize() final;
75 
77  void apply(const std::vector<const CDCWireHit*>& axialWireHits,
78  std::vector<CDCTrack>& tracks) final;
79 
80  private:
82  std::unique_ptr<AxialHitQuadTreeProcessor> constructQTProcessor(EPass pass);
83 
85  using CandidateReceiver = AxialHitQuadTreeProcessor::CandidateReceiver;
91  void executeRelaxation(const CandidateReceiver& candidateReceiver,
92  AxialHitQuadTreeProcessor& qtProcessor);
93 
94  private: // Parameters
96  EPass m_pass = EPass::NonCurlers;
97 
99  const double m_param_stepScale = 0.75;
100 
102  int m_param_minNHits = 10;
103 
105  double m_param_precision = 0.00000001;
106  };
107  }
109 }
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::Super
Findlet< const CDCWireHit *const, CDCTrack > Super
Type of the base class.
Definition: AxialTrackCreatorHitLegendre.h:48
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::EPass::NonCurlers
@ NonCurlers
Pass corresponds to High-pt track finding and more deeper quadtree.
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::m_pass
EPass m_pass
The pass key for lookup of the parameters for this pass.
Definition: AxialTrackCreatorHitLegendre.h:105
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::EPass::NonCurlersWithIncreasingThreshold
@ NonCurlersWithIncreasingThreshold
Pass corresponds to High-pt track finding and more rough quadtree.
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::getDescription
std::string getDescription() final
Short description of the findlet.
Definition: AxialTrackCreatorHitLegendre.cc:77
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: AxialTrackCreatorHitLegendre.cc:82
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::EPass::Straight
@ Straight
Pass corresponds to very High-pt track and very rough quadtree (monopole tracks, including those with...
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::apply
void apply(const std::vector< const CDCWireHit * > &axialWireHits, std::vector< CDCTrack > &tracks) final
Execute one pass over a quad tree.
Definition: AxialTrackCreatorHitLegendre.cc:102
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::executeRelaxation
void executeRelaxation(const CandidateReceiver &candidateReceiver, AxialHitQuadTreeProcessor &qtProcessor)
Performs quadtree search.
Definition: AxialTrackCreatorHitLegendre.cc:134
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::initialize
void initialize() final
Initialisation before the event processing starts.
Definition: AxialTrackCreatorHitLegendre.cc:97
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::EPass
EPass
Pass keys for the different sets of predefined parameters for a pass if legendre search Note: Naming ...
Definition: AxialTrackCreatorHitLegendre.h:56
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::EPass::FullRange
@ FullRange
Pass corresponds to full pt range and even more rough quadtree (non-ip tracks, tracks with energy los...
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::constructQTProcessor
std::unique_ptr< AxialHitQuadTreeProcessor > constructQTProcessor(EPass pass)
Method to create QTProcessor that performs the search.
Definition: AxialTrackCreatorHitLegendre.cc:26
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::m_param_minNHits
int m_param_minNHits
Parameter to define minimal threshold of hit.
Definition: AxialTrackCreatorHitLegendre.h:111
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::m_param_stepScale
const double m_param_stepScale
Parameter to define multiplier for hits threshold for the next quadtree iteration.
Definition: AxialTrackCreatorHitLegendre.h:108
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::m_param_precision
double m_param_precision
Parameter to define precision of quadtree search in case of straight pass.
Definition: AxialTrackCreatorHitLegendre.h:114
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::CandidateReceiver
AxialHitQuadTreeProcessor::CandidateReceiver CandidateReceiver
lambda function used for postprocessing
Definition: AxialTrackCreatorHitLegendre.h:94
Belle2::TrackFindingCDC::AxialTrackCreatorHitLegendre::AxialTrackCreatorHitLegendre
AxialTrackCreatorHitLegendre()
Constructor.