Belle II Software  release-05-02-19
StoreArrayMerger.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - 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 #include <tracking/modules/vxdCDCTrackMerger/StoreArrayMerger.h>
11 
12 #include <tracking/trackFindingCDC/utilities/StringManipulation.h>
13 #include <tracking/trackFindingCDC/utilities/Algorithms.h>
14 
15 #include <framework/core/ModuleParamList.templateDetails.h>
16 
17 using namespace Belle2;
18 
19 void StoreArrayMerger::exposeParameters(ModuleParamList* moduleParamList, const std::string& prefix)
20 {
21  Super::exposeParameters(moduleParamList, prefix);
22 
23  // CDC input tracks
24  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "CDCRecoTrackStoreArrayName"), m_param_cdcRecoTrackStoreArrayName,
25  "StoreArray name of the CDC Track Store Array", m_param_cdcRecoTrackStoreArrayName);
26  // VXD input tracks
27  moduleParamList->addParameter(TrackFindingCDC::prefixed(prefix, "VXDRecoTrackStoreArrayName"), m_param_vxdRecoTrackStoreArrayName,
28  "StoreArray name of the VXD Track Store Array", m_param_vxdRecoTrackStoreArrayName);
29 }
30 
32 {
35 
36  m_cdcRecoTracks.registerRelationTo(m_vxdRecoTracks);
37  m_vxdRecoTracks.registerRelationTo(m_cdcRecoTracks);
38 
40 }
41 
42 void StoreArrayMerger::apply(std::vector<RecoTrack*>& cdcRecoTrackVector, std::vector<RecoTrack*>& vxdRecoTrackVector)
43 {
44  cdcRecoTrackVector.reserve(m_cdcRecoTracks.getEntries());
45  vxdRecoTrackVector.reserve(m_vxdRecoTracks.getEntries());
46 
47  for (RecoTrack& recoTrack : m_cdcRecoTracks) {
48  cdcRecoTrackVector.push_back(&recoTrack);
49  }
50 
51  for (RecoTrack& recoTrack : m_vxdRecoTracks) {
52  vxdRecoTrackVector.push_back(&recoTrack);
53  }
54 }
55 
56 void StoreArrayMerger::removeCDCRecoTracksWithPartner(std::vector<RecoTrack*>& tracks)
57 {
59 }
60 
61 void StoreArrayMerger::removeVXDRecoTracksWithPartner(std::vector<RecoTrack*>& tracks)
62 {
64 }
65 
66 void StoreArrayMerger::removeRecoTracksWithPartner(std::vector<RecoTrack*>& tracks, const std::string& partnerStoreArrayName)
67 {
68  const auto& trackHasAlreadyRelations = [&partnerStoreArrayName](const RecoTrack * recoTrack) {
69  return recoTrack->getRelated<RecoTrack>(partnerStoreArrayName) != nullptr;
70  };
71 
72  TrackFindingCDC::erase_remove_if(tracks, trackHasAlreadyRelations);
73 }
Belle2::StoreArrayMerger::apply
void apply(std::vector< RecoTrack * > &cdcRecoTrackVector, std::vector< RecoTrack * > &vxdRecoTrackVector) override
Fetch the RecoTracks from the two input Store Arrays and fill them into two vectors.
Definition: StoreArrayMerger.cc:42
Belle2::StoreArrayMerger::m_cdcRecoTracks
StoreArray< RecoTrack > m_cdcRecoTracks
CDC Reco Tracks Store Array.
Definition: StoreArrayMerger.h:70
Belle2::StoreArrayMerger::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters of the findlet.
Definition: StoreArrayMerger.cc:19
Belle2::StoreArrayMerger::m_vxdRecoTracks
StoreArray< RecoTrack > m_vxdRecoTracks
VXD Reco Tracks Store Array.
Definition: StoreArrayMerger.h:72
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::initialize
void initialize() override
Receive and dispatch signal before the start of the event processing.
Definition: CompositeProcessingSignalListener.cc:17
Belle2::RecoTrack
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:78
Belle2::ModuleParamList::addParameter
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Definition: ModuleParamList.templateDetails.h:38
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::Findlet< RecoTrack *, RecoTrack * >::exposeParameters
virtual void exposeParameters(ModuleParamList *moduleParamList __attribute__((unused)), const std::string &prefix __attribute__((unused)))
Forward prefixed parameters of this findlet to the module parameter list.
Definition: Findlet.h:79
Belle2::StoreArrayMerger::initialize
void initialize() override
Require/register the store arrays.
Definition: StoreArrayMerger.cc:31
Belle2::StoreArrayMerger::removeCDCRecoTracksWithPartner
void removeCDCRecoTracksWithPartner(std::vector< RecoTrack * > &tracks)
Helper function to remove all tracks, which have a related VXD track from the vector.
Definition: StoreArrayMerger.cc:56
Belle2::StoreArrayMerger::m_param_vxdRecoTrackStoreArrayName
std::string m_param_vxdRecoTrackStoreArrayName
StoreArray name of the VXD Track Store Array.
Definition: StoreArrayMerger.h:64
Belle2::StoreArrayMerger::removeVXDRecoTracksWithPartner
void removeVXDRecoTracksWithPartner(std::vector< RecoTrack * > &tracks)
Helper function to remove all tracks, which have a related CDC track from the vector.
Definition: StoreArrayMerger.cc:61
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::StoreArrayMerger::removeRecoTracksWithPartner
void removeRecoTracksWithPartner(std::vector< RecoTrack * > &tracks, const std::string &partnerStoreArrayName)
Helper function to remove all element in a std::vector, which have already a relation to the given st...
Definition: StoreArrayMerger.cc:66
Belle2::StoreArrayMerger::m_param_cdcRecoTrackStoreArrayName
std::string m_param_cdcRecoTrackStoreArrayName
StoreArray name of the CDC Track Store Array.
Definition: StoreArrayMerger.h:66