ATLAS Offline Software
Loading...
Searching...
No Matches
Tracking/TrkEvent/TrkSegment/src/Segment.cxx
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.cxx, (c) ATLAS Detector software
8
9#include <memory>
10
12#include "TrkSegment/Segment.h"
13
14// default constructor
23
25 Amg::MatrixX&& locerr,
27 FitQuality* fitqual,
29 : Trk::MeasurementBase(std::move(locpars), std::move(locerr))
31 , m_fitQuality(fitqual)
32 , m_containedMeasBases(std::move(measurements))
34{
35}
36
37// copy constructor
39 : Trk::MeasurementBase(seg)
41 , m_fitQuality(seg.m_fitQuality ? seg.m_fitQuality->clone() : nullptr)
43 , m_author(seg.m_author)
44{
45 // DV deep copy
47 for (const Trk::MeasurementBase* const measurement :
49 m_containedMeasBases.push_back(measurement->clone());
50 }
51}
52
53// move constructor
56 , m_fitQuality(std::move(seg.m_fitQuality))
57 , m_containedMeasBases(std::move(seg.m_containedMeasBases))
58 , m_author(seg.m_author)
59{
60}
61
62// destructor - child save
63Trk::Segment::~Segment() = default;
64
65// assignment operator
68{
69 if (this != &seg) {
71 m_fitQuality.reset(seg.m_fitQuality ? seg.m_fitQuality->clone() : nullptr);
72 // Deep copy
75 for (const Trk::MeasurementBase* const measurement :
77 m_containedMeasBases.push_back(measurement->clone());
78 }
79 m_author = seg.m_author;
80 }
81 return (*this);
82}
83
84// move assignment operator
85//coverity[exn_spec_violation]
88{
89 if (this != &seg) {
91 m_fitQuality = std::move(seg.m_fitQuality);
92 //called function throws exception of type SG::ExcInsertionInBaseClass.
93 m_containedMeasBases = std::move(seg.m_containedMeasBases);
94 m_author = seg.m_author;
95 }
96 return (*this);
97}
98
99std::string Trk::Segment::dumpAuthor() const {
100 std::string author;
101 switch (m_author) {
102 case AuthorUnknown:
103 author = "AuthorUnknown";
104 break;
106 author = "MooMdtSegmentMakerTool";
107 break;
109 author = "MooCscSegmentMakerTool";
110 break;
111 case Muonboy:
112 author = "Muonboy";
113 break;
115 author = "DCMathSegmentMaker";
116 break;
118 author = "MDT_DHoughSegmentMakerTool";
119 break;
121 author = "CSC_DHoughSegmentMakerTool";
122 break;
124 author = "Csc2dSegmentMaker";
125 break;
127 author = "Csc4dSegmentMaker";
128 break;
129 case TRT_SegmentMaker:
130 author = "TRT_SegmentMaker";
131 break;
132 case NswStereoSeeded:
133 author = "Nsw MM stereo seeded";
134 break;
135 case NswStgcSeeded:
136 author = "Nsw sTgc seeded";
137 break;
138 case NswQuadAlign:
139 author = "Nsw single quad";
140 break;
141 case NswPadSeeded:
142 author = "Nsw single quad";
143 break;
144 default:
145 author = "Unrecognised author, enum = " + std::to_string(m_author);
146 break;
147 }
148 return author;
149}
static Double_t a
Derived DataVector<T>.
Definition DataVector.h:795
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition FitQuality.h:97
This class is the pure abstract base class for all fittable tracking measurements.
MeasurementBase & operator=(const MeasurementBase &)=default
MeasurementBase()=default
Default constructor - needed for POOL/SEAL.
Base class for all TrackSegment implementations, extends the common MeasurementBase.
virtual ~Segment()
Destructor.
Author author() const
return segment author
Author
enum to identify who created the segment.
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
Segment()
Default Constructor for POOL.
void setAuthor(Author a)
sets the segment author
std::unique_ptr< FitQuality > m_fitQuality
The fit quality of the Segment.
Segment & operator=(const Segment &seg)
Assignment operator.
std::string dumpAuthor() const
returns human readble string version of author
virtual Segment * clone() const override=0
Pseudo-constructor: needed to avoid excessive RTTI.
DataVector< const MeasurementBase > m_containedMeasBases
The vector of contained (generic) Trk::MeasurementBase objects.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Ensure that the ATLAS eigen extensions are properly loaded.
STL namespace.