ATLAS Offline Software
TrkEvent/TrkSegment/TrkSegment/Segment.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // Segment.h, (c) ATLAS Detector software
8 
9 #ifndef TRKSEGMENT_SEGMENT_H
10 #define TRKSEGMENT_SEGMENT_H
11 
12 // Trk
16 #include <atomic>
17 #include <memory>
18 #include <string>
19 #include <utility>
20 #include <vector>
21 class SegmentCnv_p1;
22 
23 namespace Trk {
24 
25 class PrepRawData;
26 class RIO_OnTrack;
27 class TrkDetElementBase;
28 class FitQuality;
29 
53 class Segment
54  : public MeasurementBase
55  , public Trk::ObjectCounter<Trk::Segment>
56 {
57 
58 public:
62  enum Author
63  {
67  Muonboy = 3,
80  NumberOfAuthors = 16
81  };
82 
84  Segment();
86  Segment(const Segment& seg);
88  Segment(Segment&&) noexcept;
90  Segment& operator=(const Segment& seg);
92  Segment& operator=(Segment&&) noexcept;
93 
95  Segment(LocalParameters&& locpars,
96  Amg::MatrixX&& locerr,
97  DataVector<const MeasurementBase>&& measurements,
98  FitQuality* fitq = nullptr,
100 
102  virtual ~Segment();
103 
105  virtual Segment* clone() const override = 0;
106 
108  std::unique_ptr<Segment> uniqueClone() const
109  {
110  return std::unique_ptr<Segment>(clone());
111  }
112 
114  virtual bool type(MeasurementBaseType::Type type) const override final
115  {
117  }
118 
122  const std::vector<const Trk::MeasurementBase*>& containedMeasurements() const;
123 
126 
127  bool hasContainedMeasurements() const;
129  unsigned int numberOfMeasurementBases() const;
130 
132  const MeasurementBase* measurement(unsigned int) const;
133 
136  const FitQuality* fitQuality() const;
137 
139  void setAuthor(Author a);
141  Author author() const;
142 
144  std::string dumpAuthor() const;
145 
146 protected:
147  friend class ::SegmentCnv_p1;
148 
150  std::unique_ptr<FitQuality> m_fitQuality;
151 
154 
157 };
158 
159 inline const FitQuality*
161 {
162  return m_fitQuality.get();
163 }
164 
165 inline const std::vector<const MeasurementBase*>&
167 {
168  return m_containedMeasBases.stdcont();
169 }
170 
173 {
174  return m_containedMeasBases;
175 }
176 
177 inline bool
179 {
180  return !m_containedMeasBases.empty();
181 }
182 
183 inline const MeasurementBase*
184 Segment::measurement(unsigned int indx) const
185 {
186  if (!m_containedMeasBases.empty() && indx < m_containedMeasBases.size()) {
187  return std::as_const(m_containedMeasBases)[indx];
188  }
189  return nullptr;
190 }
191 
192 inline unsigned int
194 {
195  return m_containedMeasBases.size();
196 }
197 
198 inline Segment::Author
200 {
201  return m_author;
202 }
203 }
204 
205 #endif // TRKSEGMENT_SEGMENT_H
206 
Trk::Segment::Author
Author
enum to identify who created the segment.
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:63
Trk::Segment::setAuthor
void setAuthor(Author a)
sets the segment author
Definition: TrkEvent/TrkSegment/src/Segment.cxx:148
Trk::LocalParameters
Definition: LocalParameters.h:98
Trk::Segment::DCMathSegmentMaker
@ DCMathSegmentMaker
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:68
Trk::Segment::MDT_DHoughSegmentMakerTool
@ MDT_DHoughSegmentMakerTool
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:69
Trk::Segment::uniqueClone
std::unique_ptr< Segment > uniqueClone() const
NVI uniqueClone method.
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:108
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
Trk::Segment::MooMdtSegmentMakerTool
@ MooMdtSegmentMakerTool
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:65
MeasurementBase.h
Trk::Segment::Muonboy
@ Muonboy
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:67
Trk::Segment::CSC_DHoughSegmentMakerTool
@ CSC_DHoughSegmentMakerTool
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:70
TrkObjectCounter.h
Csc4dSegmentMaker
Definition: Csc4dSegmentMaker.h:37
Trk::Segment::m_containedMeasBases
DataVector< const MeasurementBase > m_containedMeasBases
The vector of contained (generic) Trk::MeasurementBase objects.
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:153
Trk::Segment::type
virtual bool type(MeasurementBaseType::Type type) const override final
Extended method checking the type.
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:114
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::ObjectCounter
Helper to enable counting number of instantiations in debug builds.
Definition: TrkObjectCounter.h:18
Trk::Segment::numberOfMeasurementBases
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:193
Trk::Segment::MooCscSegmentMakerTool
@ MooCscSegmentMakerTool
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:66
SegmentCnv_p1
Definition: SegmentCnv_p1.h:30
Trk::Segment::containedMeasurements
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:166
Trk::Segment
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:56
Trk::Segment::clone
virtual Segment * clone() const override=0
Pseudo-constructor: needed to avoid excessive RTTI.
Trk::Segment::NswPadSeeded
@ NswPadSeeded
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:78
Trk::Segment::measurement
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:184
Trk::Segment::AuthorUnknown
@ AuthorUnknown
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:64
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Trk::Segment::NswStereoSeeded
@ NswStereoSeeded
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:76
Trk::Segment::DCMathSegmentMakerCurved
@ DCMathSegmentMakerCurved
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:75
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk::MeasurementBaseType::Segment
@ Segment
Definition: MeasurementBase.h:47
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::Segment::m_fitQuality
std::unique_ptr< FitQuality > m_fitQuality
The fit quality of the Segment.
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:150
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
Trk::Segment::m_author
Author m_author
segment author
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:156
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::Segment::containedMeasurementsDataVector
const DataVector< const Trk::MeasurementBase > & containedMeasurementsDataVector() const
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:172
Trk::Segment::Segment
Segment()
Default Constructor for POOL.
Definition: TrkEvent/TrkSegment/src/Segment.cxx:15
Trk::Segment::CTBTracking
@ CTBTracking
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:74
Trk::Segment::dumpAuthor
std::string dumpAuthor() const
returns human readble string version of author
Definition: TrkEvent/TrkSegment/src/Segment.cxx:97
Trk::Segment::hasContainedMeasurements
bool hasContainedMeasurements() const
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:178
Trk::Segment::author
Author author() const
return segment author
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:199
Trk::Segment::NswQuadAlign
@ NswQuadAlign
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:79
Trk::Segment::NswStgcSeeded
@ NswStgcSeeded
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:77
Trk::Segment::fitQuality
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:160
Trk::MeasurementBaseType::Type
Type
Definition: MeasurementBase.h:46
Trk::Segment::TRT_SegmentMaker
@ TRT_SegmentMaker
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:73
python.Dumpers.FitQuality
FitQuality
Definition: Dumpers.py:63
Csc2dSegmentMaker
Definition: Csc2dSegmentMaker.h:24
Trk::Segment::NumberOfAuthors
@ NumberOfAuthors
Definition: TrkEvent/TrkSegment/TrkSegment/Segment.h:80