Belle II Software development
CDCSZObservations.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/fitting/EFitVariance.h>
11
12#include <Math/Vector2D.h>
13
14#include <vector>
15
16namespace Belle2 {
21
22 namespace TrackingUtilities {
23 class CDCTrack;
24 class CDCRecoHit3D;
25 class CDCSegment3D;
26 }
27
28 namespace TrackFindingCDC {
29
32
33 public:
41 explicit CDCSZObservations(EFitVariance fitVariance = EFitVariance::c_Proper,
42 bool onlyStereo = false)
43 : m_fitVariance(fitVariance)
44 , m_onlyStereo(onlyStereo)
45 {
46 }
47
48 public:
50 std::size_t size() const
51 {
52 return m_szObservations.size() / 3;
53 }
54
56 double* data()
57 {
58 return m_szObservations.data();
59 }
60
62 bool empty() const
63 {
64 return m_szObservations.empty();
65 }
66
68 void clear()
69 {
70 m_szObservations.clear();
71 }
72
74 void reserve(std::size_t nObservations)
75 {
76 m_szObservations.reserve(nObservations * 3);
77 }
78
80 double getS(int iObservation) const
81 {
82 return m_szObservations[iObservation * 3];
83 }
84
86 double getZ(int iObservation) const
87 {
88 return m_szObservations[iObservation * 3 + 1];
89 }
90
92 double getWeight(int iObservation) const
93 {
94 return m_szObservations[iObservation * 3 + 2];
95 }
96
108 std::size_t fill(double s, double z, double weight = 1.0);
109
111 std::size_t append(const TrackingUtilities::CDCRecoHit3D& recoHit3D);
112
117 std::size_t appendRange(const std::vector<TrackingUtilities::CDCRecoHit3D>& recoHit3Ds);
118
123 std::size_t appendRange(const TrackingUtilities::CDCSegment3D& segment3D);
124
129 std::size_t appendRange(const TrackingUtilities::CDCTrack& track);
130
132 ROOT::Math::XYVector getCentralPoint() const;
133
135 void passiveMoveBy(const ROOT::Math::XYVector& origin);
136
138 ROOT::Math::XYVector centralize();
139
140 public:
142 void setFitVariance(EFitVariance fitVariance)
143 {
144 m_fitVariance = fitVariance;
145 }
146
147 private:
152 std::vector<double> m_szObservations;
153
159 EFitVariance m_fitVariance;
160
163 };
164 }
166}
std::size_t append(const TrackingUtilities::CDCRecoHit3D &recoHit3D)
Appends the observed position.
ROOT::Math::XYVector centralize()
Picks one observation as a reference point and transform all observations to that new origin.
bool m_onlyStereo
Switch to only use information from stereo hits.
std::size_t fill(double s, double z, double weight=1.0)
Appends the observed position.
CDCSZObservations(EFitVariance fitVariance=EFitVariance::c_Proper, bool onlyStereo=false)
Constructor taking in preferred variance which is taken from the various hit objects if present.
void reserve(std::size_t nObservations)
Reserves enough space for nObservations.
void setFitVariance(EFitVariance fitVariance)
Setter for the indicator that the drift variance should be used.
bool empty() const
Returns true if there are no observations stored.
std::size_t appendRange(const std::vector< TrackingUtilities::CDCRecoHit3D > &recoHit3Ds)
Appends all reconstructed hits from the three dimensional track.
double getWeight(int iObservation) const
Getter for the weight / inverse variance of the observation at the given index.
double getZ(int iObservation) const
Getter for the z value of the observation at the given index.
std::vector< double > m_szObservations
Memory for the individual observations.
double * data()
Return the pointer to the number buffer.
void clear()
Removes all observations stored.
void passiveMoveBy(const ROOT::Math::XYVector &origin)
Moves all observations passively such that the given vector becomes to origin of the new coordinate s...
EFitVariance m_fitVariance
Indicator which variance information should preferably be extracted from hits in calls to append.
std::size_t size() const
Returns the number of observations stored.
double getS(int iObservation) const
Getter for the arc length value of the observation at the given index.
ROOT::Math::XYVector getCentralPoint() const
Extracts the observation center that is at the index in the middle.
Class representing a three dimensional reconstructed hit.
A segment consisting of three dimensional reconstructed hits.
Class representing a sequence of three dimensional reconstructed hits.
Definition CDCTrack.h:37
Abstract base class for different kinds of events.