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 @@ ...@@ -10,11 +10,11 @@
#define TRKPARAMETERSBASE_PARAMETERSBASE_H #define TRKPARAMETERSBASE_PARAMETERSBASE_H
// Amg // Amg
#include "CxxUtils/checker_macros.h"
#include "EventPrimitives/EventPrimitives.h" #include "EventPrimitives/EventPrimitives.h"
#include "GeoPrimitives/GeoPrimitives.h" #include "GeoPrimitives/GeoPrimitives.h"
#include "TrkParametersBase/Charged.h" #include "TrkParametersBase/Charged.h"
#include "TrkParametersBase/Neutral.h" #include "TrkParametersBase/Neutral.h"
#include "CxxUtils/checker_macros.h"
#include <memory> #include <memory>
#include <type_traits> #include <type_traits>
...@@ -84,8 +84,7 @@ public: ...@@ -84,8 +84,7 @@ public:
/** Access method for the covariance matrix - returns nullptr if no covariance /** Access method for the covariance matrix - returns nullptr if no covariance
* matrix is given */ * matrix is given */
const AmgSymMatrix(DIM) * covariance() const; const AmgSymMatrix(DIM) * covariance() const;
AmgSymMatrix(DIM)* covariance(); AmgSymMatrix(DIM) * covariance();
/** Access method for transverse momentum */ /** Access method for transverse momentum */
double pT() const; double pT() const;
...@@ -100,10 +99,17 @@ public: ...@@ -100,10 +99,17 @@ public:
local parameter definitions differ for each surface type. */ local parameter definitions differ for each surface type. */
Amg::Vector2D localPosition() const; Amg::Vector2D localPosition() const;
/** set parameters*/
void setParameters(const AmgVector(DIM) & param);
/** set covariance */
void setCovariance(const AmgSymMatrix(DIM) & cov);
/** Update parameters and covariance. /** Update parameters and covariance.
*
* Derived classes override the * Derived classes override the
* implementation via updateParametersHelper * implementation via updateParametersHelper
* as this could possibly lead to updating
* other data members
*/ */
void updateParameters(const AmgVector(DIM) &, AmgSymMatrix(DIM) * = nullptr); void updateParameters(const AmgVector(DIM) &, AmgSymMatrix(DIM) * = nullptr);
...@@ -113,9 +119,11 @@ public: ...@@ -113,9 +119,11 @@ public:
* *
* Derived classes override the * Derived classes override the
* implementation via updateParametersHelper * implementation via updateParametersHelper
* as this could possibly lead to updating
* other data members
*/ */
void updateParameters(const AmgVector(DIM) &, const AmgSymMatrix(DIM) &); void updateParameters(const AmgVector(DIM) &, const AmgSymMatrix(DIM) &);
/** Returns the charge */ /** Returns the charge */
virtual double charge() const = 0; virtual double charge() const = 0;
......
...@@ -52,25 +52,25 @@ Trk::ParametersBase<DIM, T>::ParametersBase(const AmgVector(DIM) & parameters, ...@@ -52,25 +52,25 @@ Trk::ParametersBase<DIM, T>::ParametersBase(const AmgVector(DIM) & parameters,
{} {}
template<int DIM, class T> template<int DIM, class T>
const AmgVector(DIM)& ParametersBase<DIM, T>::parameters() const const AmgVector(DIM) & ParametersBase<DIM, T>::parameters() const
{ {
return m_parameters; return m_parameters;
} }
template<int DIM, class T> template<int DIM, class T>
AmgVector(DIM)& ParametersBase<DIM, T>::parameters() AmgVector(DIM) & ParametersBase<DIM, T>::parameters()
{ {
return m_parameters; return m_parameters;
} }
template<int DIM, class T> 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(); return m_covariance.get();
} }
template<int DIM, class T> template<int DIM, class T>
AmgSymMatrix(DIM)* ParametersBase<DIM, T>::covariance() AmgSymMatrix(DIM) * ParametersBase<DIM, T>::covariance()
{ {
return m_covariance.get(); return m_covariance.get();
} }
...@@ -107,6 +107,25 @@ ParametersBase<DIM, T>::localPosition() const ...@@ -107,6 +107,25 @@ ParametersBase<DIM, T>::localPosition() const
return Amg::Vector2D(parameters()[Trk::loc1], parameters()[Trk::loc2]); 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> template<int DIM, class T>
void void
ParametersBase<DIM, T>::updateParameters(const AmgVector(DIM) & ParametersBase<DIM, T>::updateParameters(const AmgVector(DIM) &
......
...@@ -29,7 +29,7 @@ NO_SANITIZE_UNDEFINED(Trk::ParametersT<DIM, T, S>& p) ...@@ -29,7 +29,7 @@ NO_SANITIZE_UNDEFINED(Trk::ParametersT<DIM, T, S>& p)
{ {
AmgVector(DIM) newParam = p.parameters(); AmgVector(DIM) newParam = p.parameters();
newParam[Trk::qOverP] = 0; 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