Belle II Software  release-08-01-10
AxialTrackCreatorHitLegendre.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/trackFindingCDC/findlets/base/Findlet.h>
11 
12 #include <tracking/trackFindingCDC/legendre/quadtree/AxialHitQuadTreeProcessor.h>
13 
14 namespace Belle2 {
20  namespace TrackFindingCDC {
21  class CDCTrack;
22  class CDCWireHit;
23 
32  class AxialTrackCreatorHitLegendre : public Findlet<const CDCWireHit* const, CDCTrack> {
33 
34  private:
37 
38  public:
44  enum class EPass {
46  NonCurlers,
51  FullRange,
54  Straight
55  };
56 
57  public:
60 
62  explicit AxialTrackCreatorHitLegendre(EPass pass);
63 
65  std::string getDescription() final;
66 
68  void exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix) final;
69 
71  void initialize() final;
72 
74  void apply(const std::vector<const CDCWireHit*>& axialWireHits,
75  std::vector<CDCTrack>& tracks) final;
76 
77  private:
80 
88  void executeRelaxation(const CandidateReceiver& candidateReceiver,
89  AxialHitQuadTreeProcessor& qtProcessor);
90 
91  private: // Parameters
93  EPass m_pass = EPass::NonCurlers;
94 
96  const double m_param_stepScale = 0.75;
97 
99  int m_param_minNHits = 10;
100 
102  double m_param_precision = 0.00000001;
103  };
104  }
106 }
The Module parameter list class.
Generates axial tracks from hit using special leaf postprocessing.
void apply(const std::vector< const CDCWireHit * > &axialWireHits, std::vector< CDCTrack > &tracks) final
Execute one pass over a quad tree.
EPass m_pass
The pass key for lookup of the parameters for this pass.
const double m_param_stepScale
Parameter to define multiplier for hits threshold for the next quadtree iteration.
void initialize() final
Initialisation before the event processing starts.
int m_param_minNHits
Parameter to define minimal threshold of hit.
std::string getDescription() final
Short description of the findlet.
AxialHitQuadTreeProcessor::CandidateReceiver CandidateReceiver
lambda function used for postprocessing
void executeRelaxation(const CandidateReceiver &candidateReceiver, AxialHitQuadTreeProcessor &qtProcessor)
Performs quadtree search.
std::unique_ptr< AxialHitQuadTreeProcessor > constructQTProcessor(EPass pass)
Method to create QTProcessor that performs the search.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
double m_param_precision
Parameter to define precision of quadtree search in case of straight pass.
EPass
Pass keys for the different sets of predefined parameters for a pass if legendre search Note: Naming ...
@ NonCurlers
Pass corresponds to High-pt track finding and more deeper quadtree.
@ FullRange
Pass corresponds to full pt range and even more rough quadtree (non-ip tracks, tracks with energy los...
@ Straight
Pass corresponds to very High-pt track and very rough quadtree (monopole tracks, including those with...
@ NonCurlersWithIncreasingThreshold
Pass corresponds to High-pt track finding and more rough quadtree.
Class representing a sequence of three dimensional reconstructed hits.
Definition: CDCTrack.h:41
Class representing a hit wire in the central drift chamber.
Definition: CDCWireHit.h:55
Interface for a minimal algorithm part that wants to expose some parameters to a module.
Definition: Findlet.h:26
Abstract base class for different kinds of events.