ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::TrkPixelNode Class Reference

#include <TrkFilteringNodes.h>

Inheritance diagram for Trk::TrkPixelNode:
Collaboration diagram for Trk::TrkPixelNode:

Public Member Functions

 TrkPixelNode (TrkPlanarSurface *, double, const PrepRawData *)
 TrkPixelNode (TrkPlanarSurface *, double, const double[2], const double[4])
virtual ~TrkPixelNode ()
virtual void validateMeasurement (TrkTrackState *)
virtual void updateTrackState (TrkTrackState *)
virtual double getChi2Distance (TrkTrackState *)
virtual void serialize (char fileName[])
virtual void report ()
virtual void updateWithRIO (const RIO_OnTrack *)
virtual int getKalmanGain (double[5][2])
virtual int getResiduals (double[2])
virtual int getInverseResidualVariance (double[2][2])
virtual int getMeasurementMatrix (double[2][5])
virtual void runKalmanFilter (TrkTrackState *)
virtual double calculateChi2 ()
virtual bool isValidated ()
virtual void setNodeState (int)
virtual int getNodeState ()
virtual void setNodeType (char)
virtual char getNodeType ()
virtual void updateInternal ()
TrkTrackStategetTrackState ()
virtual TrkPlanarSurfacegetSurface ()
virtual const PrepRawDatagetPrepRawData ()
double getChi2 () const
int getNdof () const

Protected Attributes

double m_B [5][2]
double m_D [2][2]
double m_H [2][5]
double m_K [5][2]
double m_resid [2]
double m_m [2]
double m_V [2][2]
int m_nodeState
double m_chi2Cut
char m_nodeType
TrkPlanarSurfacem_pSurface
const PrepRawDatam_pPRD
double m_dChi2
int m_ndof
TrkTrackStatem_pTrackState

Detailed Description

Definition at line 98 of file TrkFilteringNodes.h.

Constructor & Destructor Documentation

◆ TrkPixelNode() [1/2]

Trk::TrkPixelNode::TrkPixelNode ( TrkPlanarSurface * pS,
double chi2Cut,
const PrepRawData * pPRD )

Definition at line 300 of file TrkFilteringNodes.cxx.

300 {
301 int i, j;
302
303 m_pSurface = pS;
304 m_chi2Cut = chi2Cut;
305 for (i = 0; i < 2; i++) {
306 m_m[i] = pPRD->localPosition()[i];
307 for (j = 0; j < 2; j++) m_V[i][j] = pPRD->localCovariance()(i, j);
308 }
309 m_pPRD = pPRD;
310 m_nodeType = 1;
311 m_ndof = 2;
312 }
const PrepRawData * m_pPRD
Definition TrkBaseNode.h:55
TrkPlanarSurface * m_pSurface
Definition TrkBaseNode.h:54
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ TrkPixelNode() [2/2]

Trk::TrkPixelNode::TrkPixelNode ( TrkPlanarSurface * pS,
double chi2Cut,
const double pos[2],
const double cov[4] )

Definition at line 314 of file TrkFilteringNodes.cxx.

314 {
315 m_pSurface = pS;
316 m_chi2Cut = chi2Cut;
317 m_m[0] = pos[0];
318 m_m[1] = pos[1];
319 m_V[0][0] = cov[0];
320 m_V[0][1] = cov[1];
321 m_V[1][0] = cov[2];
322 m_V[1][1] = cov[3];
323 m_pPRD = nullptr;
324 m_nodeType = 1;
325 m_ndof = 2;
326 }

◆ ~TrkPixelNode()

virtual Trk::TrkPixelNode::~TrkPixelNode ( )
inlinevirtual

Definition at line 103 of file TrkFilteringNodes.h.

103{};

Member Function Documentation

◆ calculateChi2()

double Trk::TrkFilteringNode2D::calculateChi2 ( )
virtualinherited

Definition at line 75 of file TrkFilteringNodes.cxx.

75 {
76 double dchi2;
77
78 dchi2 = m_resid[0] * m_resid[0] * m_D[0][0] + 2 * m_resid[0] * m_resid[1] * m_D[0][1] +
79 m_resid[1] * m_resid[1] * m_D[1][1];
80 return dchi2;
81 }

◆ getChi2()

double Trk::TrkBaseNode::getChi2 ( ) const
inherited

Definition at line 69 of file TrkBaseNode.cxx.

69 {
70 return m_dChi2;
71 }

◆ getChi2Distance()

double Trk::TrkPixelNode::getChi2Distance ( TrkTrackState * pTS)
virtual

Implements Trk::TrkBaseNode.

Definition at line 349 of file TrkFilteringNodes.cxx.

349 {
350 double det;
351
352 m_H[0][0] = 1.0;
353 m_H[1][1] = 1.0;
354 m_H[0][1] = 0.0;
355 m_H[0][2] = 0.0;
356 m_H[0][3] = 0.0;
357 m_H[0][4] = 0.0;
358 m_H[1][0] = 0.0;
359 m_H[1][2] = 0.0;
360 m_H[1][3] = 0.0;
361 m_H[1][4] = 0.0;
362
363 m_B[0][0] = pTS->getTrackCovariance(0, 0);
364 m_B[0][1] = pTS->getTrackCovariance(0, 1);
365 m_B[1][0] = pTS->getTrackCovariance(0, 1);
366 m_B[1][1] = pTS->getTrackCovariance(1, 1);
367 m_B[2][0] = pTS->getTrackCovariance(0, 2);
368 m_B[2][1] = pTS->getTrackCovariance(1, 2);
369 m_B[3][0] = pTS->getTrackCovariance(0, 3);
370 m_B[3][1] = pTS->getTrackCovariance(1, 3);
371 m_B[4][0] = pTS->getTrackCovariance(0, 4);
372 m_B[4][1] = pTS->getTrackCovariance(1, 4);
373
374 m_resid[0] = m_m[0] - pTS->getTrackState(0);
375 m_resid[1] = m_m[1] - pTS->getTrackState(1);
376
377 double W[2][2];
378
379 W[0][0] = pTS->getTrackCovariance(0, 0) + m_V[0][0];
380 W[1][0] = W[0][1] = pTS->getTrackCovariance(0, 1) + m_V[0][1];
381 W[1][1] = pTS->getTrackCovariance(1, 1) + m_V[1][1];
382 det = W[0][0] * W[1][1] - W[0][1] * W[0][1];
383 if (det == 0.0) return 1e8;
384 det = 1.0 / det;
385 m_D[0][0] = W[1][1] * det;
386 m_D[0][1] = -W[0][1] * det;
387 m_D[1][0] = m_D[0][1];
388 m_D[1][1] = W[0][0] * det;
389
390 return calculateChi2();
391 }

◆ getInverseResidualVariance()

int Trk::TrkFilteringNode2D::getInverseResidualVariance ( double V[2][2])
virtualinherited

Implements Trk::TrkBaseNode.

Definition at line 113 of file TrkFilteringNodes.cxx.

113 {
114 int i, j;
115
116 for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) V[i][j] = m_D[i][j];
117 return 2;
118 }

◆ getKalmanGain()

int Trk::TrkFilteringNode2D::getKalmanGain ( double K[5][2])
virtualinherited

Implements Trk::TrkBaseNode.

Definition at line 100 of file TrkFilteringNodes.cxx.

100 {
101 int i, j;
102
103 for (i = 0; i < 5; i++) for (j = 0; j < 2; j++) K[i][j] = m_K[i][j];
104 return 2;
105 }

◆ getMeasurementMatrix()

int Trk::TrkFilteringNode2D::getMeasurementMatrix ( double H[2][5])
virtualinherited

Implements Trk::TrkBaseNode.

Definition at line 120 of file TrkFilteringNodes.cxx.

120 {
121 int i, j;
122
123 for (j = 0; j < 2; j++) for (i = 0; i < 5; i++) H[j][i] = m_H[j][i];
124 return 2;
125 }
#define H(x, y, z)
Definition MD5.cxx:114

◆ getNdof()

int Trk::TrkBaseNode::getNdof ( ) const
inherited

Definition at line 65 of file TrkBaseNode.cxx.

65 {
66 return m_ndof;
67 }

◆ getNodeState()

int Trk::TrkBaseNode::getNodeState ( )
virtualinherited

Definition at line 53 of file TrkBaseNode.cxx.

53 {
54 return m_nodeState;
55 }

◆ getNodeType()

char Trk::TrkBaseNode::getNodeType ( )
virtualinherited

Definition at line 61 of file TrkBaseNode.cxx.

61 {
62 return m_nodeType;
63 }

◆ getPrepRawData()

const PrepRawData * Trk::TrkBaseNode::getPrepRawData ( )
virtualinherited

Definition at line 39 of file TrkBaseNode.cxx.

39 {
40 return m_pPRD;
41 }

◆ getResiduals()

int Trk::TrkFilteringNode2D::getResiduals ( double r[2])
virtualinherited

Implements Trk::TrkBaseNode.

Definition at line 107 of file TrkFilteringNodes.cxx.

107 {
108 r[0] = m_resid[0];
109 r[1] = m_resid[1];
110 return 2;
111 }
int r
Definition globals.cxx:22

◆ getSurface()

TrkPlanarSurface * Trk::TrkBaseNode::getSurface ( )
virtualinherited

Definition at line 35 of file TrkBaseNode.cxx.

35 {
36 return m_pSurface;
37 }

◆ getTrackState()

TrkTrackState * Trk::TrkBaseNode::getTrackState ( )
inherited

Definition at line 43 of file TrkBaseNode.cxx.

43 {
44 return m_pTrackState;
45 }
TrkTrackState * m_pTrackState
Definition TrkBaseNode.h:58

◆ isValidated()

bool Trk::TrkBaseNode::isValidated ( )
virtualinherited

Definition at line 31 of file TrkBaseNode.cxx.

31 {
32 return (m_nodeState != 0);
33 }

◆ report()

void Trk::TrkPixelNode::report ( )
virtual

Implements Trk::TrkBaseNode.

Definition at line 337 of file TrkFilteringNodes.cxx.

337 {
338 /*
339 printf("PIXEL NODE x=%f y=%f\n",m_m[0],m_m[1]);
340 */
341 m_pSurface->report();
342 }

◆ runKalmanFilter()

void Trk::TrkFilteringNode2D::runKalmanFilter ( TrkTrackState * pTS)
virtualinherited

Definition at line 83 of file TrkFilteringNodes.cxx.

83 {
84 int i, j, idx = 0;
85 double updState[5], updCov[15];
86
87 for (i = 0; i < 5; i++)
88 for (j = 0; j < 2; j++)
89 m_K[i][j] = m_B[i][0] * m_D[0][j] + m_B[i][1] * m_D[1][j];
90 for (i = 0; i < 5; i++)
91 updState[i] = m_K[i][0] * m_resid[0] + m_K[i][1] * m_resid[1];
92 pTS->updateTrackState(updState);
93 for (i = 0; i < 5; i++) for (j = i; j < 5; j++) {
94 updCov[idx] = -m_K[i][0] * m_B[j][0] - m_K[i][1] * m_B[j][1];
95 idx++;
96 }
97 pTS->updateTrackCovariance(updCov);
98 }

◆ serialize()

void Trk::TrkPixelNode::serialize ( char fileName[])
virtual

Implements Trk::TrkBaseNode.

Definition at line 328 of file TrkFilteringNodes.cxx.

328 {
329 FILE* pFile = fopen(fileName, "a");
330 if (!pFile) {
331 std::cerr << "Cannot open file " << fileName << " for write.\n";
332 std::abort();
333 }
334 fclose(pFile);
335 }

◆ setNodeState()

void Trk::TrkBaseNode::setNodeState ( int s)
virtualinherited

Definition at line 49 of file TrkBaseNode.cxx.

49 {
50 m_nodeState = s;
51 }

◆ setNodeType()

void Trk::TrkBaseNode::setNodeType ( char s)
virtualinherited

Definition at line 57 of file TrkBaseNode.cxx.

57 {
58 m_nodeType = s;
59 }

◆ updateInternal()

void Trk::TrkBaseNode::updateInternal ( )
virtualinherited

Reimplemented in Trk::TrkTrtNode.

Definition at line 73 of file TrkBaseNode.cxx.

73 {
74 }

◆ updateTrackState()

void Trk::TrkPixelNode::updateTrackState ( TrkTrackState * pTS)
virtual

Implements Trk::TrkBaseNode.

Definition at line 393 of file TrkFilteringNodes.cxx.

393 {
394 if (isValidated()) runKalmanFilter(pTS);
395 m_pTrackState = pTS;
396 }
virtual bool isValidated()
virtual void runKalmanFilter(TrkTrackState *)

◆ updateWithRIO()

void Trk::TrkPixelNode::updateWithRIO ( const RIO_OnTrack * pRIO)
virtual

Implements Trk::TrkBaseNode.

Definition at line 398 of file TrkFilteringNodes.cxx.

398 {
399 int i, j;
400
401 /*
402 printf("RIO update, Pixel: old m %f %f new m %f %f\n",
403 m_m[0],m_m[1],pRIO->localParameters()[Trk::locX],pRIO->localParameters()[Trk::locY]);
404 */
405 m_m[0] = pRIO->localParameters()[Trk::locX];
406 m_m[1] = pRIO->localParameters()[Trk::locY];
407
408 // printf("old errors: %f %f %f\n",sqrt(m_V[0][0]),m_V[0][1],sqrt(m_V[1][1]));
409
410 for (i = 0; i < 2; i++) {
411 for (j = 0; j < 2; j++) m_V[i][j] = pRIO->localCovariance()(i, j);
412 }
413 // printf("new errors: %f %f %f\n",sqrt(m_V[0][0]),m_V[0][1],sqrt(m_V[1][1]));
414 }
@ locY
local cartesian
Definition ParamDefs.h:38
@ locX
Definition ParamDefs.h:37

◆ validateMeasurement()

void Trk::TrkPixelNode::validateMeasurement ( TrkTrackState * pTS)
virtual

Implements Trk::TrkBaseNode.

Definition at line 344 of file TrkFilteringNodes.cxx.

344 {
346 m_nodeState = (m_dChi2 < m_chi2Cut) ? 1 : 0;
347 }
virtual double getChi2Distance(TrkTrackState *)

Member Data Documentation

◆ m_B

double Trk::TrkFilteringNode2D::m_B[5][2]
protectedinherited

Definition at line 61 of file TrkFilteringNodes.h.

◆ m_chi2Cut

double Trk::TrkBaseNode::m_chi2Cut
protectedinherited

Definition at line 52 of file TrkBaseNode.h.

◆ m_D

double Trk::TrkFilteringNode2D::m_D[2][2]
protectedinherited

Definition at line 61 of file TrkFilteringNodes.h.

◆ m_dChi2

double Trk::TrkBaseNode::m_dChi2
protectedinherited

Definition at line 56 of file TrkBaseNode.h.

◆ m_H

double Trk::TrkFilteringNode2D::m_H[2][5]
protectedinherited

Definition at line 61 of file TrkFilteringNodes.h.

◆ m_K

double Trk::TrkFilteringNode2D::m_K[5][2]
protectedinherited

Definition at line 61 of file TrkFilteringNodes.h.

◆ m_m

double Trk::TrkFilteringNode2D::m_m[2]
protectedinherited

Definition at line 63 of file TrkFilteringNodes.h.

◆ m_ndof

int Trk::TrkBaseNode::m_ndof
protectedinherited

Definition at line 57 of file TrkBaseNode.h.

◆ m_nodeState

int Trk::TrkBaseNode::m_nodeState
protectedinherited

Definition at line 51 of file TrkBaseNode.h.

◆ m_nodeType

char Trk::TrkBaseNode::m_nodeType
protectedinherited

Definition at line 53 of file TrkBaseNode.h.

◆ m_pPRD

const PrepRawData* Trk::TrkBaseNode::m_pPRD
protectedinherited

Definition at line 55 of file TrkBaseNode.h.

◆ m_pSurface

TrkPlanarSurface* Trk::TrkBaseNode::m_pSurface
protectedinherited

Definition at line 54 of file TrkBaseNode.h.

◆ m_pTrackState

TrkTrackState* Trk::TrkBaseNode::m_pTrackState
protectedinherited

Definition at line 58 of file TrkBaseNode.h.

◆ m_resid

double Trk::TrkFilteringNode2D::m_resid[2]
protectedinherited

Definition at line 62 of file TrkFilteringNodes.h.

◆ m_V

double Trk::TrkFilteringNode2D::m_V[2][2]
protectedinherited

Definition at line 64 of file TrkFilteringNodes.h.


The documentation for this class was generated from the following files: