Belle II Software  release-08-01-10
AxialTrackCreatorHitLegendre Class Referenceabstract

Generates axial tracks from hit using special leaf postprocessing. More...

#include <AxialTrackCreatorHitLegendre.h>

Inheritance diagram for AxialTrackCreatorHitLegendre:
Collaboration diagram for AxialTrackCreatorHitLegendre:

Public Types

enum class  EPass {
  NonCurlers ,
  NonCurlersWithIncreasingThreshold ,
  FullRange ,
  Straight
}
 Pass keys for the different sets of predefined parameters for a pass if legendre search Note: Naming copied from original location. More...
 
using IOTypes = std::tuple< AIOTypes... >
 Types that should be served to apply on invokation.
 
using IOVectors = std::tuple< std::vector< AIOTypes >... >
 Vector types that should be served to apply on invokation.
 

Public Member Functions

 AxialTrackCreatorHitLegendre ()
 Constructor.
 
 AxialTrackCreatorHitLegendre (EPass pass)
 Constructor from a pass key.
 
std::string getDescription () final
 Short description of the findlet.
 
void exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) final
 Expose the parameters to a module.
 
void initialize () final
 Initialisation before the event processing starts.
 
void apply (const std::vector< const CDCWireHit * > &axialWireHits, std::vector< CDCTrack > &tracks) final
 Execute one pass over a quad tree.
 
virtual void apply (ToVector< AIOTypes > &... ioVectors)=0
 Main function executing the algorithm.
 
void beginRun () override
 Receive and dispatch signal for the beginning of a new run.
 
void beginEvent () override
 Receive and dispatch signal for the start of a new event.
 
void endRun () override
 Receive and dispatch signal for the end of the run.
 
void terminate () override
 Receive and dispatch Signal for termination of the event processing.
 

Protected Types

using ToVector = typename ToVectorImpl< T >::Type
 Short hand for ToRangeImpl.
 

Protected Member Functions

void addProcessingSignalListener (ProcessingSignalListener *psl)
 Register a processing signal listener to be notified.
 
int getNProcessingSignalListener ()
 Get the number of currently registered listeners.
 

Private Types

using Super = Findlet< const CDCWireHit *const, CDCTrack >
 Type of the base class.
 
using CandidateReceiver = AxialHitQuadTreeProcessor::CandidateReceiver
 lambda function used for postprocessing
 

Private Member Functions

std::unique_ptr< AxialHitQuadTreeProcessorconstructQTProcessor (EPass pass)
 Method to create QTProcessor that performs the search.
 
void executeRelaxation (const CandidateReceiver &candidateReceiver, AxialHitQuadTreeProcessor &qtProcessor)
 Performs quadtree search. More...
 

Private Attributes

EPass m_pass = EPass::NonCurlers
 The pass key for lookup of the parameters for this pass.
 
const double m_param_stepScale = 0.75
 Parameter to define multiplier for hits threshold for the next quadtree iteration.
 
int m_param_minNHits = 10
 Parameter to define minimal threshold of hit.
 
double m_param_precision = 0.00000001
 Parameter to define precision of quadtree search in case of straight pass.
 
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
 References to subordinary signal processing listener contained in this findlet.
 
bool m_initialized = false
 Flag to keep track whether initialization happend before.
 
bool m_terminated = false
 Flag to keep track whether termination happend before.
 
std::string m_initializedAs
 Name of the type during initialisation.
 

Detailed Description

Generates axial tracks from hit using special leaf postprocessing.

Implements Legendre transformation of the drift time circles. This is a module, performing tracking in the CDC. It is based on the paper "Implementation of the Legendre Transform for track segment reconstruction in drift tube chambers" by T. Alexopoulus, et al. NIM A592 456-462 (2008).

Definition at line 32 of file AxialTrackCreatorHitLegendre.h.

Member Enumeration Documentation

◆ EPass

enum EPass
strong

Pass keys for the different sets of predefined parameters for a pass if legendre search Note: Naming copied from original location.

Does not actually match with the associated parameters.

Enumerator
NonCurlers 

Pass corresponds to High-pt track finding and more deeper quadtree.

NonCurlersWithIncreasingThreshold 

Pass corresponds to High-pt track finding and more rough quadtree.

FullRange 

Pass corresponds to full pt range and even more rough quadtree (non-ip tracks, tracks with energy losses etc)

Straight 

Pass corresponds to very High-pt track and very rough quadtree (monopole tracks, including those with low hit count)

Definition at line 44 of file AxialTrackCreatorHitLegendre.h.

44  {
46  NonCurlers,
48  NonCurlersWithIncreasingThreshold,
51  FullRange,
54  Straight
55  };

Member Function Documentation

◆ executeRelaxation()

void executeRelaxation ( const CandidateReceiver candidateReceiver,
AxialHitQuadTreeProcessor qtProcessor 
)
private

Performs quadtree search.

Parameters
candidateReceiverlambda interface process found leaves in the legendre search
qtProcessorreference to the AxialHitQuadTreeProcessor instance

Definition at line 131 of file AxialTrackCreatorHitLegendre.cc.

133 {
134  // radius of the CDC
135  const double rCDC = 113.;
136 
137  // Curvature for high pt particles that leave the CDC
138  const double curlCurv = 2. / rCDC;
139 
140  // find leavers
141  qtProcessor.fill(candidateReceiver, 50, curlCurv);
142 
143  // find curlers with diameter higher than half of radius of CDC
144  qtProcessor.fill(candidateReceiver, 70, 2 * curlCurv);
145 
146  // Start relaxation loop
147  int minNHits = m_pass == EPass::FullRange ? 30 : 50;
148  double maxCurv = m_pass == EPass::FullRange ? 0.15 : 0.07;
149  do {
150  qtProcessor.fill(candidateReceiver, minNHits, maxCurv);
151 
152  minNHits = minNHits * m_param_stepScale;
153 
154  if (m_pass != EPass::NonCurlers) {
155  maxCurv *= 2.;
156  if (maxCurv > 0.15) maxCurv = 0.15;
157  }
158 
159  } while (minNHits >= m_param_minNHits);
160 }
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.
int m_param_minNHits
Parameter to define minimal threshold of hit.
@ 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...
void fill(const CandidateReceiver &candidateReceiver, int nHitsThreshold)
Start filling the already created tree.

The documentation for this class was generated from the following files: