Skip to content
Snippets Groups Projects
Commit d1c82da4 authored by Adam Edward Barton's avatar Adam Edward Barton
Browse files

Merge branch 'ParameterBase_add_direct_setter_helps_wit_TPCnv' into 'master'

ParametersBase . Add direct setters , fix  TrackParticleAthenaPool test

See merge request atlas/athena!38399
parents 804e7051 0a4328da
No related branches found
No related tags found
No related merge requests found
......@@ -10,11 +10,11 @@
#define TRKPARAMETERSBASE_PARAMETERSBASE_H
// Amg
#include "CxxUtils/checker_macros.h"
#include "EventPrimitives/EventPrimitives.h"
#include "GeoPrimitives/GeoPrimitives.h"
#include "TrkParametersBase/Charged.h"
#include "TrkParametersBase/Neutral.h"
#include "CxxUtils/checker_macros.h"
#include <memory>
#include <type_traits>
......@@ -84,8 +84,7 @@ public:
/** Access method for the covariance matrix - returns nullptr if no covariance
* matrix is given */
const AmgSymMatrix(DIM) * covariance() const;
AmgSymMatrix(DIM)* covariance();
AmgSymMatrix(DIM) * covariance();
/** Access method for transverse momentum */
double pT() const;
......@@ -100,10 +99,17 @@ public:
local parameter definitions differ for each surface type. */
Amg::Vector2D localPosition() const;
/** set parameters*/
void setParameters(const AmgVector(DIM) & param);
/** set covariance */
void setCovariance(const AmgSymMatrix(DIM) & cov);
/** Update parameters and covariance.
*
* Derived classes override the
* implementation via updateParametersHelper
* as this could possibly lead to updating
* other data members
*/
void updateParameters(const AmgVector(DIM) &, AmgSymMatrix(DIM) * = nullptr);
......@@ -113,9 +119,11 @@ public:
*
* Derived classes override the
* implementation via updateParametersHelper
* as this could possibly lead to updating
* other data members
*/
void updateParameters(const AmgVector(DIM) &, const AmgSymMatrix(DIM) &);
/** Returns the charge */
virtual double charge() const = 0;
......
......@@ -52,25 +52,25 @@ Trk::ParametersBase<DIM, T>::ParametersBase(const AmgVector(DIM) & parameters,
{}
template<int DIM, class T>
const AmgVector(DIM)& ParametersBase<DIM, T>::parameters() const
const AmgVector(DIM) & ParametersBase<DIM, T>::parameters() const
{
return m_parameters;
}
template<int DIM, class T>
AmgVector(DIM)& ParametersBase<DIM, T>::parameters()
AmgVector(DIM) & ParametersBase<DIM, T>::parameters()
{
return m_parameters;
}
template<int DIM, class T>
const AmgSymMatrix(DIM)* ParametersBase<DIM, T>::covariance() const
const AmgSymMatrix(DIM) * ParametersBase<DIM, T>::covariance() const
{
return m_covariance.get();
}
template<int DIM, class T>
AmgSymMatrix(DIM)* ParametersBase<DIM, T>::covariance()
AmgSymMatrix(DIM) * ParametersBase<DIM, T>::covariance()
{
return m_covariance.get();
}
......@@ -107,6 +107,25 @@ ParametersBase<DIM, T>::localPosition() const
return Amg::Vector2D(parameters()[Trk::loc1], parameters()[Trk::loc2]);
}
template<int DIM, class T>
void
ParametersBase<DIM, T>::setParameters(const AmgVector(DIM) & param)
{
m_parameters = param;
}
template<int DIM, class T>
void
ParametersBase<DIM, T>::setCovariance(const AmgSymMatrix(DIM) & cov)
{
// if the covariance is there update in place
if (m_covariance) {
(*m_covariance) = cov;
} else { // otherwise create one
m_covariance = std::make_unique<AmgSymMatrix(DIM)>(cov);
}
}
template<int DIM, class T>
void
ParametersBase<DIM, T>::updateParameters(const AmgVector(DIM) &
......
......@@ -29,7 +29,7 @@ NO_SANITIZE_UNDEFINED(Trk::ParametersT<DIM, T, S>& p)
{
AmgVector(DIM) newParam = p.parameters();
newParam[Trk::qOverP] = 0;
p.updateParameters(newParam);
p.setParameters(newParam);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment