ATLAS Offline Software
GSFTsos.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #ifndef TrkGsfTsos_H
13 #define TrkGsfTsos_H
14 
16 
17 struct GSFTsos {
18 
19  // Full state
21  // Collapsed to single Parameters state
22  std::unique_ptr<Trk::TrackParameters> trackParameters{};
23  // Measurement
24  std::unique_ptr<Trk::MeasurementBase> measurementOnTrack{};
25  // FitQuality
27  // Type of TSOS
28  std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
30 
31  // default move, move assignment and dtor
32  GSFTsos() = default;
33  GSFTsos& operator=(GSFTsos&&) = default;
34  GSFTsos(GSFTsos&&) = default;
35  ~GSFTsos() = default;
36 
37  // implement copy and copy assignment
38  GSFTsos(const GSFTsos& rhs) = delete;
39  GSFTsos& operator=(const GSFTsos& rhs) = delete;
40 
41  // Full constructor with passing of type flags
43  const Trk::FitQualityOnSurface& inFitQualityOnSurface,
44  std::unique_ptr<Trk::MeasurementBase> inMeasurementBase,
45  std::unique_ptr<Trk::TrackParameters> inTrackParameters,
46  Trk::MultiComponentState&& inMultiComponentState,
47  const std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>& inTypeFlags)
48  : multiComponentState(std::move(inMultiComponentState)),
49  trackParameters(std::move(inTrackParameters)),
50  measurementOnTrack(std::move(inMeasurementBase)),
51  fitQualityOnSurface(inFitQualityOnSurface),
52  typeFlags(inTypeFlags) {}
53 
54  // constructor with automatic setting of type flags
55  GSFTsos(const Trk::FitQualityOnSurface& inFitQualityOnSurface,
56  std::unique_ptr<Trk::MeasurementBase> inMeasurementBase,
57  std::unique_ptr<Trk::TrackParameters> inTrackParameters,
58  Trk::MultiComponentState&& inMultiComponentState)
59  : multiComponentState(std::move(inMultiComponentState)),
60  trackParameters(std::move(inTrackParameters)),
61  measurementOnTrack(std::move(inMeasurementBase)),
62  fitQualityOnSurface(inFitQualityOnSurface) {
63  if (measurementOnTrack) {
65  }
66  if (!multiComponentState.empty()) {
68  }
69  if (fitQualityOnSurface) {
71  }
72  }
73  // convert pass ownership to MTSOS
74  std::unique_ptr<const Trk::MultiComponentStateOnSurface> convert(bool slim) {
75  if (!trackParameters) {
76  trackParameters = multiComponentState.front().params->uniqueClone();
77  }
78  if (slim) {
79  multiComponentState.clear();
80  }
81  return std::make_unique<const Trk::MultiComponentStateOnSurface>(
83  std::move(trackParameters), std::move(multiComponentState), nullptr,
84  typeFlags);
85  }
86 };
87 
88 #endif
GSFTsos::~GSFTsos
~GSFTsos()=default
GSFTsos::GSFTsos
GSFTsos(const Trk::FitQualityOnSurface &inFitQualityOnSurface, std::unique_ptr< Trk::MeasurementBase > inMeasurementBase, std::unique_ptr< Trk::TrackParameters > inTrackParameters, Trk::MultiComponentState &&inMultiComponentState, const std::bitset< Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes > &inTypeFlags)
Definition: GSFTsos.h:42
Trk::FitQualityOnSurface
Definition: FitQualityOnSurface.h:19
GSFTsos::typeFlags
std::bitset< Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes > typeFlags
Definition: GSFTsos.h:29
GSFTsos::trackParameters
std::unique_ptr< Trk::TrackParameters > trackParameters
Definition: GSFTsos.h:22
GSFTsos::measurementOnTrack
std::unique_ptr< Trk::MeasurementBase > measurementOnTrack
Definition: GSFTsos.h:24
GSFTsos::GSFTsos
GSFTsos(GSFTsos &&)=default
Trk::MultiComponentState
std::vector< ComponentParameters > MultiComponentState
Definition: ComponentParameters.h:27
Trk::TrackStateOnSurface::Parameter
@ Parameter
This TSOS contains a Trk::ParameterBase.
Definition: TrackStateOnSurface.h:140
GSFTsos::GSFTsos
GSFTsos(const Trk::FitQualityOnSurface &inFitQualityOnSurface, std::unique_ptr< Trk::MeasurementBase > inMeasurementBase, std::unique_ptr< Trk::TrackParameters > inTrackParameters, Trk::MultiComponentState &&inMultiComponentState)
Definition: GSFTsos.h:55
GSFTsos
Definition: GSFTsos.h:17
GSFTsos::multiComponentState
Trk::MultiComponentState multiComponentState
Definition: GSFTsos.h:20
GSFTsos::fitQualityOnSurface
Trk::FitQualityOnSurface fitQualityOnSurface
Definition: GSFTsos.h:26
Trk::TrackStateOnSurface::FitQuality
@ FitQuality
This TSOS contains a Trk::FitQualityOnSurface.
Definition: TrackStateOnSurface.h:145
GSFTsos::GSFTsos
GSFTsos()=default
GSFTsos::GSFTsos
GSFTsos(const GSFTsos &rhs)=delete
GSFTsos::operator=
GSFTsos & operator=(GSFTsos &&)=default
GSFTsos::convert
std::unique_ptr< const Trk::MultiComponentStateOnSurface > convert(bool slim)
Definition: GSFTsos.h:74
MultiComponentStateOnSurface.h
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
GSFTsos::operator=
GSFTsos & operator=(const GSFTsos &rhs)=delete