5std::vector<float>
trackProp(
const ldmx::Tracks &tracks,
6 ldmx::TrackStateType ts_type,
7 const std::string &ts_title) {
9 std::vector<float> new_track_states;
12 if (tracks.empty())
return new_track_states;
15 for (
auto &track : tracks) {
17 auto trk_ts = track.getTrackState(ts_type);
19 if (!trk_ts.has_value())
continue;
23 if (ecal_track_state.params_.size() < 5)
continue;
25 float track_state_loc0 =
static_cast<float>(ecal_track_state.params_[0]);
26 float track_state_loc1 =
static_cast<float>(ecal_track_state.params_[1]);
31 float p_track_state = (-1 / ecal_track_state.params_[4]) * 1000;
33 float recoil_mom_x = p_track_state * sin(ecal_track_state.params_[3]) *
34 sin(ecal_track_state.params_[2]);
36 float recoil_mom_y = p_track_state * cos(ecal_track_state.params_[3]);
38 float recoil_mom_z = p_track_state * sin(ecal_track_state.params_[3]) *
39 cos(ecal_track_state.params_[2]);
42 new_track_states.push_back(track_state_loc0);
43 new_track_states.push_back(track_state_loc1);
47 new_track_states.push_back(240.5);
48 }
else if (ts_type == 1) {
50 new_track_states.push_back(0.0);
53 new_track_states.push_back(recoil_mom_x);
54 new_track_states.push_back(recoil_mom_y);
55 new_track_states.push_back(recoil_mom_z);
63 return new_track_states;
68float distTwoLines(ROOT::Math::XYZVector v1, ROOT::Math::XYZVector v2,
69 ROOT::Math::XYZVector w1, ROOT::Math::XYZVector w2) {
70 ROOT::Math::XYZVector e1 = v1 - v2;
71 ROOT::Math::XYZVector e2 = w1 - w2;
72 ROOT::Math::XYZVector crs = e1.Cross(e2);
77 return std::abs(crs.Dot(v1 - w1) / crs.R());
std::vector< float > trackProp(const ldmx::Tracks &tracks, ldmx::TrackStateType ts_type, const std::string &ts_title)
Return a vector of parameters for a propagated recoil track.
float distPtToLine(ROOT::Math::XYZVector h1, ROOT::Math::XYZVector p1, ROOT::Math::XYZVector p2)
Return the minimum distance between the point h1 and the line passing through points p1 and p2.
float distTwoLines(ROOT::Math::XYZVector v1, ROOT::Math::XYZVector v2, ROOT::Math::XYZVector w1, ROOT::Math::XYZVector w2)
Returns the distance between the lines v and w, with v defined to pass through the points (v1,...