10#include "GaudiKernel/MsgStream.h"
21 ,
Trk::SurfacePtrHolderDetEl(nullptr)
32 ,
Trk::SurfacePtrHolderDetEl(compROT)
37 std::vector<const InDet::TRT_DriftCircleOnTrack*>::const_iterator rotIter =
43 m_globalPosition.store(
44 std::make_unique<const Amg::Vector3D>(*(compROT.m_globalPosition)));
51 std::vector<const InDet::TRT_DriftCircleOnTrack*>&& childrots,
52 std::vector<AssignmentProb>&& assgnProb,
59 ,
Trk::SurfacePtrHolderDetEl(sf)
72 if (
this != &compROT) {
90 std::vector<const InDet::TRT_DriftCircleOnTrack*>::const_iterator rotIter =
102 if (
this != &compROT) {
123 std::vector<const InDet::TRT_DriftCircleOnTrack*>::const_iterator rotIter =
134 out <<
"Trk::CompetingTRT_DriftCirclesOnTrack with ["
139 :
"over different surfaces")
140 <<
" (given prob>cut)" << std::endl;
142 out <<
" - GlobalPosition : ";
144 out <<
"null pointer" <<
endmsg;
154 out <<
"Trk::CompetingTRT_DriftCirclesOnTrack with ["
159 :
"over different surfaces")
160 <<
" (given prob>cut)" << std::endl;
162 out <<
" - GlobalPosition : ";
164 out <<
"null pointer" << std::endl;
173 const bool withNonVanishingAssignProb)
const
181 if (withNonVanishingAssignProb) {
199 double assgnProbSum = 0.;
200 std::vector<AssignmentProb>::const_iterator assgnProbIter =
202 for (; assgnProbIter !=
m_assignProb.end(); ++assgnProbIter) {
203 assgnProbSum += (*assgnProbIter);
207 if (assgnProbSum > 0.) {
208 std::vector<const InDet::TRT_DriftCircleOnTrack*>::const_iterator rotIter =
212 ++rotIter, ++assgnProbIter) {
214 (((*assgnProbIter) / assgnProbSum) * ((*rotIter)->globalPosition()));
227 std::cout <<
"InDet::CompetingTRT_DriftCirclesOnTrack: can not handle ROTs "
228 "in different surfaces without detector specific knowledge "
Class for competing TRT_DriftCircles, it extends the Trk::CompetingRIOsOnTrack base class.
void clearChildRotVector()
private method to clear the Trk::RIO_OnTrack vector
CompetingTRT_DriftCirclesOnTrack & operator=(const CompetingTRT_DriftCirclesOnTrack &compROT)
Assignment operator.
virtual void setLocalParametersAndErrorMatrix()
recalculate the LocalParameters and ErrorMatrix
const Amg::Vector3D & globalPosition() const
Interface method to get the global Position.
virtual ~CompetingTRT_DriftCirclesOnTrack()
Destructor.
int m_ROTsHaveCommonSurface
unsigned int numberOfContainedROTs() const
Number of RIO_OnTracks to be contained by this CompetingRIOsOnTrack.
CxxUtils::CachedUniquePtr< const Amg::Vector3D > m_globalPosition
The global Position.
bool ROTsHaveCommonSurface(const bool withNonVanishingAssignProb=true) const
Have all the contained ROTs a common associated surface?
CompetingTRT_DriftCirclesOnTrack()
Default Constructor for POOL.
MsgStream & dump(MsgStream &out) const
returns some information about this MeasurementBase/CompetingTRT_DriftCirclesOnTrack.
std::vector< const InDet::TRT_DriftCircleOnTrack * > m_containedChildRots
The vector of contained InDet::TRT_DriftCircleOnTrack objects.
std::vector< AssignmentProb > m_assignProb
assignment probabilities of the ROTs
CompetingRIOsOnTrack & operator=(const CompetingRIOsOnTrack &compROT)=default
Assignment operator.
virtual MsgStream & dump(MsgStream &out) const override
returns the some information about the base class members (avoid code duplication)
CompetingRIOsOnTrack()
Default Constructor for POOL.
LocalParameters m_localParams
Amg::MatrixX m_localCovariance
SurfacePtrHolderImplDetEl & operator=(const SurfacePtrHolderImplDetEl &other)
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.