22
SciFiTrackPoint::SciFiTrackPoint() : _tracker(-1),
22
SciFiTrackPoint::SciFiTrackPoint() : _spill(-1),
30
_pos(ThreeVector(0, 0, 0)),
31
_mom(ThreeVector(0, 0, 0)),
35
_smoothed_residual(-1),
34
_smoothed_residual(-1) {
35
_cluster = new TRef();
43
SciFiTrackPoint::~SciFiTrackPoint() {}
38
SciFiTrackPoint::~SciFiTrackPoint() {
45
42
SciFiTrackPoint::SciFiTrackPoint(const KalmanState *kalman_site) {
46
43
int id = kalman_site->id();
61
61
int dimension = state_vector.GetNrows();
63
63
if ( dimension == 4 ) {
65
_x = state_vector(0, 0);
66
_px = state_vector(1, 0);
67
_y = state_vector(2, 0);
68
_py = state_vector(3, 0);
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));
69
70
} else if ( dimension == 5 ) {
70
_x = state_vector(0, 0);
71
_px = state_vector(1, 0)/fabs(state_vector(4, 0));
72
_y = state_vector(2, 0);
73
_py = state_vector(3, 0)/fabs(state_vector(4, 0));
74
_pz = 1./fabs(state_vector(4, 0));
71
_pos.setX(state_vector(0, 0));
72
_mom.setX(state_vector(1, 0)/fabs(state_vector(4, 0)));
73
_pos.setY(state_vector(2, 0));
74
_mom.setY(state_vector(3, 0)/fabs(state_vector(4, 0)));
75
_pos.setZ(kalman_site->z());
76
_mom.setZ(1./fabs(state_vector(4, 0)));
77
ThreeVector mc_mom = kalman_site->true_momentum();
78
ThreeVector mc_pos = kalman_site->true_position();
85
79
_pull = kalman_site->residual(KalmanState::Projected)(0, 0);
86
80
_residual = kalman_site->residual(KalmanState::Filtered)(0, 0);
87
81
_smoothed_residual = kalman_site->residual(KalmanState::Smoothed)(0, 0);
92
86
double* matrix_elements = C.GetMatrixArray();
93
87
std::vector<double> covariance(matrix_elements, matrix_elements+num_elements);
94
88
_covariance = covariance;
90
// std::cerr << "Adding cluster with address " << kalman_site->cluster() << " to track point\n";
91
_cluster = new TRef(kalman_site->cluster());
97
94
SciFiTrackPoint::SciFiTrackPoint(const SciFiTrackPoint &point) {
95
_spill = point.spill();
96
_event = point.event();
98
98
_tracker = point.tracker();
99
99
_station = point.station();
100
100
_plane = point.plane();
103
103
_f_chi2 = point.f_chi2();
104
104
_s_chi2 = point.s_chi2();
112
_mc_x = point.mc_x();
113
_mc_px = point.mc_px();
114
_mc_y = point.mc_y();
115
_mc_py = point.mc_py();
116
_mc_pz = point.mc_pz();
118
109
_pull = point.pull();
119
110
_residual = point.residual();
120
111
_smoothed_residual = point.smoothed_residual();
122
113
_covariance = point.covariance();
114
_cluster = new TRef(*point.get_cluster());
125
117
SciFiTrackPoint& SciFiTrackPoint::operator=(const SciFiTrackPoint &rhs) {
126
118
if ( this == &rhs ) {
121
_spill = rhs.spill();
122
_event = rhs.event();
129
123
_tracker = rhs.tracker();
130
124
_station = rhs.station();
131
125
_plane = rhs.plane();