34 if (not hgtdDetEleHandle.
isValid() or hgtdElements==
nullptr) {
36 return StatusCode::FAILURE;
40 if (not inputHgtdClusterContainer.
isValid()){
42 return StatusCode::FAILURE;
50 std::vector<float> global_x (hgtdClusterContainer->
size(), 0);
51 std::vector<float> global_y (hgtdClusterContainer->
size(), 0);
52 std::vector<float> global_z (hgtdClusterContainer->
size(), 0);
53 std::vector<float> global_r (hgtdClusterContainer->
size(), 0);
54 std::vector<float>
eta (hgtdClusterContainer->
size(), 0);
56 for (std::size_t
i(0
ul);
i<hgtdClusterContainer->
size(); ++
i) {
62 double Ax[3] = {T(0,0),T(1,0),T(2,0)};
63 double Ay[3] = {T(0,1),T(1,1),T(2,1)};
64 double R [3] = {T(0,3),T(1,3),T(2,3)};
66 const auto& local_position = cluster->template localPosition<3>();
68 M[0] = local_position(0,0);
69 M[1] = local_position(1,0);
70 Amg::Vector3D globalPos(M[0]*Ax[0]+M[1]*Ay[0]+R[0],M[0]*Ax[1]+M[1]*Ay[1]+R[1],M[0]*Ax[2]+M[1]*Ay[2]+R[2]);
72 global_x[
i] = globalPos.x();
73 global_y[
i] = globalPos.y();
74 global_z[
i] = globalPos.z();
75 global_r[
i] = std::sqrt(global_x[
i]*global_x[
i] + global_y[
i]*global_y[
i]);
76 eta[
i] = globalPos.eta();
81 [] (
const auto cluster) ->
float
83 const auto& localPos = cluster->template localPosition<3>();
87 [] (
const auto cluster) ->
float
89 const auto& localPos = cluster->template localPosition<3>();
94 [] (
const auto cluster) ->
float
96 const auto& localPos = cluster->template localPosition<3>();
102 [] (
const auto* cluster) ->
float
103 {
return cluster->template localCovariance<3>()(0, 0); });
105 [] (
const auto* cluster) ->
float
106 {
return cluster->template localCovariance<3>()(1, 1); });
109 [] (
const auto* cluster) ->
float
110 {
return cluster->template localCovariance<3>()(2, 2); });
119 monitor_localX, monitor_localY, monitor_localT,
120 monitor_localCovXX, monitor_localCovYY, monitor_localCovTT,
121 monitor_globalX, monitor_globalY, monitor_globalZ, monitor_globalR,
123 return StatusCode::SUCCESS;