35 if (not hgtdDetEleHandle.
isValid() or hgtdElements==
nullptr) {
37 return StatusCode::FAILURE;
41 if (not inputHgtdClusterContainer.
isValid()){
43 return StatusCode::FAILURE;
51 std::vector<float> global_x (hgtdClusterContainer->
size(), 0);
52 std::vector<float> global_y (hgtdClusterContainer->
size(), 0);
53 std::vector<float> global_z (hgtdClusterContainer->
size(), 0);
54 std::vector<float> global_r (hgtdClusterContainer->
size(), 0);
55 std::vector<float>
eta (hgtdClusterContainer->
size(), 0);
57 for (std::size_t i(0ul); i<hgtdClusterContainer->
size(); ++i) {
63 double Ax[3] = {T(0,0),T(1,0),T(2,0)};
64 double Ay[3] = {T(0,1),T(1,1),T(2,1)};
65 double R [3] = {T(0,3),T(1,3),T(2,3)};
67 const auto& local_position = cluster->template localPosition<3>();
69 M[0] = local_position(0,0);
70 M[1] = local_position(1,0);
71 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]);
73 global_x[i] = globalPos.x();
74 global_y[i] = globalPos.y();
75 global_z[i] = globalPos.z();
76 global_r[i] = std::sqrt(global_x[i]*global_x[i] + global_y[i]*global_y[i]);
77 eta[i] = globalPos.eta();
82 [] (
const auto cluster) ->
float
84 const auto& localPos = cluster->template localPosition<3>();
88 [] (
const auto cluster) ->
float
90 const auto& localPos = cluster->template localPosition<3>();
95 [] (
const auto cluster) ->
float
97 return cluster->time();
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->timeCovariance(); });
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;