41
SciFiTrackPoint::SciFiTrackPoint(const KalmanState *kalman_site) {
42
int id = kalman_site->id();
48
_spill = kalman_site->spill();
49
_event = kalman_site->event();
52
_station = ((id-1)/3)+1;
54
_channel = kalman_site->measurement()(0, 0);
56
_chi2 = kalman_site->chi2();
58
TMatrixD state_vector = kalman_site->a(KalmanState::Smoothed);
59
int dimension = state_vector.GetNrows();
61
if ( dimension == 4 ) {
62
_pos.setZ(kalman_site->z());
63
_mom.setZ(200.0); // MeV/c
64
_pos.setX(state_vector(0, 0));
65
_mom.setX(state_vector(1, 0));
66
_pos.setY(state_vector(2, 0));
67
_mom.setY(state_vector(3, 0));
68
} else if ( dimension == 5 ) {
69
_pos.setX(state_vector(0, 0));
70
_mom.setX(state_vector(1, 0));
71
_pos.setY(state_vector(2, 0));
72
_mom.setY(state_vector(3, 0));
73
_pos.setZ(kalman_site->z());
74
_mom.setZ(1./fabs(state_vector(4, 0)));
77
_pull = kalman_site->residual(KalmanState::Projected)(0, 0);
78
_residual = kalman_site->residual(KalmanState::Filtered)(0, 0);
79
_smoothed_residual = kalman_site->residual(KalmanState::Smoothed)(0, 0);
81
TMatrixD C = kalman_site->covariance_matrix(KalmanState::Smoothed);
82
int size = C.GetNrows();
83
int num_elements = size*size;
84
double* matrix_elements = C.GetMatrixArray();
85
std::vector<double> covariance(matrix_elements, matrix_elements+num_elements);
86
_covariance = covariance;
88
_cluster = new TRef(kalman_site->cluster());
43
//SciFiTrackPoint::SciFiTrackPoint(const KalmanState *kalman_site) {
44
// int id = kalman_site->id();
50
// _spill = kalman_site->spill();
51
// _event = kalman_site->event();
54
// _station = ((id-1)/3)+1;
56
// _channel = kalman_site->measurement()(0, 0);
58
// _chi2 = kalman_site->chi2();
60
// TMatrixD state_vector = kalman_site->a(KalmanState::Smoothed);
61
// int dimension = state_vector.GetNrows();
63
// if ( dimension == 4 ) {
64
// _pos.setZ(kalman_site->z());
65
// _mom.setZ(200.0); // MeV/c
66
// _pos.setX(state_vector(0, 0));
67
// _mom.setX(state_vector(1, 0));
68
// _pos.setY(state_vector(2, 0));
69
// _mom.setY(state_vector(3, 0));
70
// } else if ( dimension == 5 ) {
71
// _pos.setX(state_vector(0, 0));
72
// _mom.setX(state_vector(1, 0));
73
// _pos.setY(state_vector(2, 0));
74
// _mom.setY(state_vector(3, 0));
75
// _pos.setZ(kalman_site->z());
76
// _mom.setZ(1./fabs(state_vector(4, 0)));
79
// _pull = kalman_site->residual(KalmanState::Projected)(0, 0);
80
// _residual = kalman_site->residual(KalmanState::Filtered)(0, 0);
81
// _smoothed_residual = kalman_site->residual(KalmanState::Smoothed)(0, 0);
83
// TMatrixD C = kalman_site->covariance_matrix(KalmanState::Smoothed);
84
// int size = C.GetNrows();
85
// int num_elements = size*size;
86
// double* matrix_elements = C.GetMatrixArray();
87
// std::vector<double> covariance(num_elements);
88
// for ( int i = 0; i < num_elements; ++i ) {
89
// covariance[i] = matrix_elements[i];
91
// _covariance = covariance;
92
// std::vector<double> errors(size);
93
// for ( int i = 0; i < size; ++i ) {
94
// errors[i] = std::sqrt(fabs(C(i, i)));
98
// _cluster = new TRef(kalman_site->cluster());
102
//SciFiTrackPoint::SciFiTrackPoint(const Kalman::State& state, const SciFiGeometryHelper* geom) {
103
// int id = state.GetId();
110
//// _spill = state->spill();
111
//// _event = kalman_site->event();
113
// TMatrixD state_vector = state.GetVector();
114
// int dimension = state_vector.GetNrows();
116
// const SciFiGeometryMap& geom_map = geom->GeometryMap();
118
// SciFiGeometryMap::const_iterator it = geom_map.find(id);
120
// ThreeVector reference_pos = geom->GetReferenceFramePosition(_tracker);
121
// HepRotation reference_rot = geom->GetReferenceFrameRotation(_tracker);
124
// _station = ((id-1)/3)+1;
125
// _plane = (id-1)%3;
127
// if ( dimension == 4 ) {
128
// _pos.setZ(state.GetPosition());
129
// _mom.setZ(200.0); // MeV/c
130
// _pos.setX(state_vector(0, 0));
131
// _mom.setX(state_vector(1, 0));
132
// _pos.setY(state_vector(2, 0));
133
// _mom.setY(state_vector(3, 0));
134
// } else if ( dimension == 5 ) {
135
// _pos.setX(state_vector(0, 0));
136
// _mom.setX(state_vector(1, 0));
137
// _pos.setY(state_vector(2, 0));
138
// _mom.setY(state_vector(3, 0));
139
// _pos.setZ(state.GetPosition());
140
// _mom.setZ(1./fabs(state_vector(4, 0)));
142
// _pos *= reference_rot;
143
// _pos += reference_pos;
145
// _mom *= reference_rot;
148
//// _pull = kalman_site->residual(KalmanState::Projected)(0, 0);
149
//// _residual = kalman_site->residual(KalmanState::Filtered)(0, 0);
150
//// _smoothed_residual = kalman_site->residual(KalmanState::Smoothed)(0, 0);
153
// _smoothed_residual = 0.0;
155
// TMatrixD C = state.GetCovariance();
156
// int size = C.GetNrows();
157
// int num_elements = size*size;
158
// double* matrix_elements = C.GetMatrixArray();
159
// std::vector<double> covariance(num_elements);
160
// for ( int i = 0; i < num_elements; ++i ) {
161
// covariance[i] = matrix_elements[i];
163
// _covariance = covariance;
164
// std::vector<double> errors(size);
165
// for ( int i = 0; i < size; ++i ) {
166
// errors[i] = std::sqrt(fabs(C(i, i)));
171
//// _cluster = new TRef(kalman_site->cluster());
172
// _cluster = new TRef();
91
175
SciFiTrackPoint::SciFiTrackPoint(const SciFiTrackPoint &point) {
92
176
_spill = point.spill();