Belle II Software  release-05-01-25
CKFRelationCreator.icc.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <tracking/ckf/general/findlets/CKFRelationCreator.dcl.h>
13 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
14 
15 #include <tracking/trackFindingCDC/filters/base/RelationFilterUtil.h>
16 #include <tracking/trackFindingCDC/utilities/Algorithms.h>
17 
18 namespace Belle2 {
23  template<class AState, class ASeedRelationFilter, class AHitRelationFilter>
25 
26  template<class AState, class ASeedRelationFilter, class AHitRelationFilter>
28  {
29  Super::addProcessingSignalListener(&m_seedFilter);
30  Super::addProcessingSignalListener(&m_hitFilter);
31  }
32 
33  template<class AState, class ASeedRelationFilter, class AHitRelationFilter>
35  const std::string& prefix)
36  {
37  m_seedFilter.exposeParameters(moduleParamList, TrackFindingCDC::prefixed("seed", prefix));
38  m_hitFilter.exposeParameters(moduleParamList, TrackFindingCDC::prefixed("hit", prefix));
39  }
40 
41  template<class AState, class ASeedRelationFilter, class AHitRelationFilter>
43  std::vector<AState>& states,
44  std::vector<TrackFindingCDC::WeightedRelation<AState>>& relations)
45  {
46  const std::vector<AState*> seedStatePointers = TrackFindingCDC::as_pointers<AState>(seedStates);
47  const std::vector<AState*> statePointers = TrackFindingCDC::as_pointers<AState>(states);
48 
49  // Just some arbitrary number...
50  relations.reserve(10000);
51 
52  // relations += seed states -> states
53  TrackFindingCDC::RelationFilterUtil::appendUsing(m_seedFilter, seedStatePointers, statePointers, relations, 1000000);
54 
55  // relations += states -> states
56  TrackFindingCDC::RelationFilterUtil::appendUsing(m_hitFilter, statePointers, statePointers, relations, 1000000);
57  }
59 }
Belle2::CKFRelationCreator::~CKFRelationCreator
~CKFRelationCreator()
Default destructor.
Belle2::CKFRelationCreator::apply
void apply(std::vector< AState > &seedStates, std::vector< AState > &states, std::vector< TrackFindingCDC::WeightedRelation< AState >> &relations) override
Apply both filters for creating state-hit and hit-hit relations.
Definition: CKFRelationCreator.icc.h:50
Belle2::CKFRelationCreator::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters of the subfindlet.
Definition: CKFRelationCreator.icc.h:42
Belle2::TrackFindingCDC::RelationFilterUtil::appendUsing
static void appendUsing(ARelationFilter &relationFilter, const std::vector< AObject * > &froms, const std::vector< AObject * > &tos, std::vector< WeightedRelation< AObject >> &weightedRelations, unsigned int maximumNumberOfRelations=std::numeric_limits< unsigned int >::max())
Appends relations between elements in the given AItems using the ARelationFilter.
Definition: RelationFilterUtil.h:71
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CKFRelationCreator::CKFRelationCreator
CKFRelationCreator()
Construct this findlet and add the subfindlet as listener.
Definition: CKFRelationCreator.icc.h:35
Belle2::TrackFindingCDC::WeightedRelation
Type for two related objects with a weight.
Definition: CDCSegment2D.h:36