Belle II Software  release-05-02-19
NetworkPathConversion.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2017 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Jonas Wagner, Felix Metzner *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #include <vector>
13 
14 #include <tracking/spacePointCreation/SpacePointTrackCand.h>
15 #include <tracking/trackFindingVXD/segmentNetwork/Segment.h>
16 #include <tracking/trackFindingVXD/segmentNetwork/TrackNode.h>
17 
18 namespace Belle2 {
25  template<class NetworkPath>
26  inline SpacePointTrackCand convertNetworkPath(NetworkPath networkPath)
27  {
28  std::vector <const SpacePoint*> spVector;
29  spVector.reserve(networkPath.size());
30  if (networkPath.empty()) {
31  return SpacePointTrackCand();
32  }
33 
34  auto family = networkPath[0]->getFamily();
35  for (auto aNodeIt = networkPath.rbegin(); aNodeIt != networkPath.rend(); ++aNodeIt) {
36  insertSpacePoints(spVector, (*aNodeIt)->getEntry());
37  }
38 
39  auto sptc = SpacePointTrackCand(spVector);
40  sptc.setFamily(family);
41  return sptc;
42  }
43 
44 
46  inline void insertSpacePoint(std::vector<const SpacePoint*>& target, TrackNode source)
47  {
48  target.push_back(source.m_spacePoint);
49  }
50 
51 
53  inline void insertSpacePoints(std::vector<const SpacePoint*>& target, const Segment<TrackNode>& source)
54  {
55  if (target.empty()) {
56  insertSpacePoint(target, *(source.getInnerHit()));
57  insertSpacePoint(target, *(source.getOuterHit()));
58  } else {
59  insertSpacePoint(target, *(source.getOuterHit()));
60  }
61  }
63 }
Belle2::insertSpacePoints
void insertSpacePoints(std::vector< const SpacePoint * > &target, const Segment< TrackNode > &source)
Insert of inner and outer TrackNodes of a Segment as SpacePoints into path of SpacePoints.
Definition: NetworkPathConversion.h:61
Belle2::convertNetworkPath
SpacePointTrackCand convertNetworkPath(NetworkPath networkPath)
Create new SPTC from network path.
Definition: NetworkPathConversion.h:34
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::insertSpacePoint
void insertSpacePoint(std::vector< const SpacePoint * > &target, TrackNode source)
Convert TrackNode to SpaePoint an add to a SpacePoint path.
Definition: NetworkPathConversion.h:54