10#ifndef RECMDCKALTRACK_H
11#define RECMDCKALTRACK_H
12#include "CLHEP/Geometry/Point3D.h"
13#include "CLHEP/Matrix/SymMatrix.h"
14#include "CLHEP/Matrix/Vector.h"
15#include "CLHEP/Vector/ThreeVector.h"
16#include "DstEvent/DstMdcKalTrack.h"
17#include "EventModel/EventModel.h"
18#include "GaudiKernel/ContainedObject.h"
19#include "GaudiKernel/ObjectVector.h"
20#include "GaudiKernel/SmartRef.h"
21#include "GaudiKernel/SmartRefVector.h"
46 double getMass(
int pid )
const {
return m_mass[pid]; }
47 double getLength(
int pid )
const {
return m_length[pid]; }
48 double getTof(
int pid )
const {
return m_tof[pid]; }
49 int getNhits(
int pid )
const {
return m_nhits[pid]; }
56 double getPathl(
int i )
const {
return m_pathl[i]; }
57 double getPathSM(
int pid )
const {
return m_pathSM[pid]; }
63 const HepVector&
getLHelix()
const {
return m_lhelixs[2]; }
64 const HepSymMatrix&
getLError()
const {
return m_lerrors[2]; }
65 const double getTHelix(
const int i )
const {
return m_thelix[i]; }
66 const double getTError(
const int i )
const {
return m_terror[i]; }
68 const HepSymMatrix
getTError()
const {
return m_tEa; }
104 const HepPoint3D&
getLPointE()
const {
return m_lpoints[0]; }
106 const HepPoint3D&
getLPoint()
const {
return m_lpoints[2]; }
107 const HepPoint3D&
getLPointK()
const {
return m_lpoints[3]; }
108 const HepPoint3D&
getLPointP()
const {
return m_lpoints[4]; }
110 const HepPoint3D&
getLPivotE()
const {
return m_lpivots[0]; }
112 const HepPoint3D&
getLPivot()
const {
return m_lpivots[2]; }
113 const HepPoint3D&
getLPivotK()
const {
return m_lpivots[3]; }
114 const HepPoint3D&
getLPivotP()
const {
return m_lpivots[4]; }
118 const HepVector&
getLHelix(
const int pid )
const {
return m_lhelixs[pid]; }
119 const HepSymMatrix&
getLError(
const int pid )
const {
return m_lerrors[pid]; }
123 const HepPoint3D&
getLPoint(
const int pid )
const {
return m_lpoints[pid]; }
124 const double getFiTerm(
const int pid )
const {
return m_fiTerm[pid]; }
125 const HepPoint3D&
getLPivot(
const int pid )
const {
return m_lpivots[pid]; }
133 const double getLDr(
void )
const {
return m_lhelixs[2][0]; }
134 const double getLFi0(
void )
const {
return m_lhelixs[2][1]; }
135 const double getLCpa(
void )
const {
return m_lhelixs[2][2]; }
136 const double getLDz(
void )
const {
return m_lhelixs[2][3]; }
137 const double getLTanl(
void )
const {
return m_lhelixs[2][4]; }
150 void setLength(
double length,
int pid ) { m_length[pid] = length; }
151 void setTof(
double tof,
int pid ) { m_tof[pid] = tof; }
152 void setNhits(
int nhits,
int pid ) { m_nhits[pid] = nhits; }
159 void setPathl(
double pathl,
int i ) { m_pathl[i] = pathl; }
160 void setPathSM(
double length,
int pid ) { m_pathSM[pid] = length; }
211 void setLError(
const HepSymMatrix& error,
const int pid ) { m_lerrors[pid] = error; }
213 for (
int i = 0; i < 5; i++ ) { m_lhelixs[pid][i] =
helix[i]; }
217 HepSymMatrix mat( 5 );
218 for (
int i = 0; i < 5; i++ )
220 for (
int j = 0; j <= i; j++, k++ )
222 mat[i][j] = error[k];
223 mat[j][i] = error[k];
226 m_lerrors[pid] = mat;
230 for (
int i = 0; i < 5; i++ ) { m_thelix[i] =
helix[i]; }
235 for (
int i = 0; i < 5; i++ )
237 for (
int j = i; j < 5; j++ )
239 m_terror[k] = error[i][j];
246 HepVector atemp( 5 );
247 for (
int i = 0; i < 5; i++ )
249 m_thelix[i] =
helix[i];
256 HepSymMatrix mat( 5 );
257 for (
int i = 0; i < 5; i++ )
259 for (
int j = 0; j <= i; j++, k++ )
261 mat[i][j] = error[k];
262 mat[j][i] = mat[i][j];
267 for (
int i = 0; i < 15; i++ ) { m_terror[i] = error[i]; }
270 void setLPoint(
const HepPoint3D& point,
const int pid ) { m_lpoints[pid] = point; }
272 void setFiTerm(
double fi,
const int pid ) { m_fiTerm[pid] = fi; }
274 void setLPivot(
const HepPoint3D& pivot,
const int pid ) { m_lpivots[pid] = pivot; }
293 double m_length[5]{};
300 double m_pathl[43]{};
301 double m_pathSM[5]{};
302 double m_fiTerm[5]{};
308 std::vector<HepPoint3D> m_lpivots;
309 std::vector<HepPoint3D> m_lpoints;
313 std::vector<HepVector> m_lhelixs;
314 std::vector<HepSymMatrix> m_lerrors;
315 double m_thelix[5]{};
316 double m_terror[15]{};
const CLID & CLID_RecMdcKalTrack
SmartRefVector< RecMdcKalHelixSeg > HelixSegRefVec
ObjectVector< RecMdcKalTrack > RecMdcKalTrackCol
SmartRefVector< RecMdcKalHelixSeg > HelixSegRefVec
const CLID & CLID_RecMdcKalTrack
std::vector< HepSymMatrix > m_zerrors
std::vector< HepVector > m_zhelixs
const HepVector & helix() const
std::vector< HepVector > m_fhelixs
std::vector< HepPoint3D > m_pocas
std::vector< HepSymMatrix > m_ferrors
const double mass() const
HepSymMatrix & getFErrorE()
const HepVector & getZHelix() const
void setLHelix(const HepVector &helix, const int pid)
void setFiTerm(double fi, const int pid)
const HepPoint3D & getLPivotP() const
const double getFCpa(void) const
double getPathSM(int pid) const
const double getFTanl(void) const
RecMdcKalTrack(const RecMdcKalTrack &track)
const HepVector & getLHelix(const int pid) const
const double getLDz(void) const
const double getLDr(void) const
void setPathSM(double length, int pid)
const HepPoint3D & getLPivotE() const
const double getFDr(void) const
const HepPoint3D & getLPointE() const
void setLError(double *error, const int pid)
int getLastLayer(const int i, const int pid) const
int getFirstLayer(const int i, const int pid) const
HepSymMatrix & getFErrorMu()
const HepPoint3D & getLPointP() const
void setTHelix(double helix[5])
const HepPoint3D & getLPoint() const
HepSymMatrix & getFErrorK()
RecMdcKalTrack & operator=(const RecMdcKalTrack &)
const HepPoint3D & getLPointK() const
const double getFiTerm(const int pid) const
double getTof(int pid) const
const HepVector & getLHelix() const
const double getLTanl(void) const
const HepPoint3D & getLPoint(const int pid) const
const HepPoint3D & getLPivotMu() const
HepVector & getLHelixMu()
const HepSymMatrix & getFError() const
const double getFFi0(void) const
const double getZFi0(void) const
double getChisq(int i, int pid) const
void setLength(double length, int pid)
void setTError(const HepSymMatrix &error)
const HepPoint3D & getLPointMu() const
void setMass(double mass, int pid)
HepSymMatrix & getZErrorE()
HelixSegRefVec getVecHelixSegs(int pid=-1) const
const HepPoint3D & getLPivot(const int pid) const
const HepPoint3D getPocaP() const
const HepPoint3D getPocaK() const
HepSymMatrix & getLErrorP()
const double getZDr(void) const
const HepVector & getFHelix() const
HepVector & getFHelixMu()
const double getLFi0(void) const
const HepSymMatrix & getLError() const
const double getTHelix(const int i) const
HepSymMatrix & getLErrorK()
void setTError(double error[15])
const HepVector getTHelix() const
void setTHelix(const HepVector &helix)
const HepPoint3D getPocaMu() const
void setPathl(double pathl, int i)
const HepPoint3D & getLPivot() const
HepVector & getZHelixMu()
RecMdcKalTrack & operator=(const DstMdcKalTrack &)
int getTrackId(void) const
const HepSymMatrix & getZError() const
void setVecHelixSegs(const HelixSegRefVec &vechelixsegs, int pid=-1)
void setLError(const HepSymMatrix &error, const int pid)
const double getZTanl(void) const
HepSymMatrix & getFErrorP()
HepSymMatrix & getLErrorMu()
static const CLID & classID()
const double getZCpa(void) const
int getNhits(int pid) const
const HepPoint3D & getLPivotK() const
HepSymMatrix & getZErrorMu()
double getMass(int pid) const
void setLPoint(const HepPoint3D &point, const int pid)
const double getFDz(void) const
int getStat(int i, int pid) const
HepSymMatrix & getLErrorE()
int getNster(const int i, const int pid) const
void setLPivot(const HepPoint3D &pivot, const int pid)
const HepSymMatrix getTError() const
double getLength(int pid) const
const HepPoint3D getPoca() const
void setTof(double tof, int pid)
int getNdf(int i, int pid) const
const double getZDz(void) const
const HepSymMatrix & getLError(const int pid) const
void setNhits(int nhits, int pid)
const HepPoint3D getPocaE() const
HepSymMatrix & getZErrorP()
const HepPoint3D & getPoca(const int pid) const
const double getTError(const int i) const
void setLHelix(double *helix, const int pid)
RecMdcKalTrack(const DstMdcKalTrack &track)
HepSymMatrix & getZErrorK()
double getPathl(int i) const
virtual const CLID & clID() const
const double getLCpa(void) const