18 std::string h_name_base =
"";
19 std::string obj_x, obj_y;
20 if (element_i < 8 && element_j < 8) {
21 if (element_i >= element_j)
continue;
22 obj_x = Form(
"Sts%d", element_i);
23 obj_y = Form(
"Sts%d", element_j);
24 h_name_base = Form(
"Sts%d:Sts%d", element_i, element_j);
26 else if (element_i > 8 && element_j > 8) {
30 if (unit_i >= unit_j)
continue;
32 obj_x = Form(
"Sts0x%x", element_i);
33 obj_y = Form(
"Sts0x%x", element_j);
34 h_name_base = Form(
"Sts0x%x:Sts0x%x", element_i, element_j);
37 if (!h_name_base.length())
continue;
38 LOG(debug) << Form(
"Booking for %s", h_name_base.c_str());
40 double x_min_i = geo_i[0];
41 double x_max_i = geo_i[1];
42 double y_min_i = geo_i[2];
43 double y_max_i = geo_i[3];
48 double x_min_j = geo_j[0];
49 double x_max_j = geo_j[1];
50 double y_min_j = geo_j[2];
51 double y_max_j = geo_j[3];
53 LOG(debug) << Form(
"XX_[%0.3f, %0.3f]:[%0.3f, %0.3f]", x_min_i, x_max_i, x_min_j, x_max_j);
54 LOG(debug) << Form(
"YY_[%0.3f, %0.3f]:[%0.3f, %0.3f]", y_min_i, y_max_i, y_min_j, y_max_j);
60 h_name = Form(
"%s_XX", h_name_base.c_str());
62 std::make_unique<TH2D>(h_name.c_str(),
"", nb_bins_x_i, x_min_i, x_max_i, nb_bins_x_j, x_min_j, x_max_j);
63 fH2D[h_name]->GetXaxis()->SetTitle(Form(
"X_{%s} [cm]", obj_x.c_str()));
64 fH2D[h_name]->GetYaxis()->SetTitle(Form(
"X_{%s} [cm]", obj_y.c_str()));
65 fH2D[h_name]->GetXaxis()->CenterTitle(
true);
66 fH2D[h_name]->GetYaxis()->CenterTitle(
true);
68 h_name = Form(
"%s_YY", h_name_base.c_str());
70 std::make_unique<TH2D>(h_name.c_str(),
"", nb_bins_y_i, y_min_i, y_max_i, nb_bins_y_j, y_min_j, y_max_j);
71 fH2D[h_name]->GetXaxis()->SetTitle(Form(
"Y_{%s} [cm]", obj_x.c_str()));
72 fH2D[h_name]->GetYaxis()->SetTitle(Form(
"Y_{%s} [cm]", obj_y.c_str()));
73 fH2D[h_name]->GetXaxis()->CenterTitle(
true);
74 fH2D[h_name]->GetYaxis()->CenterTitle(
true);
81 bool is_mc_data =
false;
83 for (
int sts_unit_i = 0; sts_unit_i <
nb_sts_station_ - 1; sts_unit_i++) {
84 for (
int sts_unit_j = sts_unit_i + 1; sts_unit_j <
nb_sts_station_; sts_unit_j++) {
85 LOG(debug) << Form(
"Building correlations for STS%d:STS%d: %ld\t%ld", sts_unit_i, sts_unit_j,
87 for (
auto sts_hit_i :
fStsHits[sts_unit_i]) {
88 int32_t sts_address_i = sts_hit_i->GetAddress();
89 double sts_i_x = sts_hit_i->GetX();
90 double sts_i_y = sts_hit_i->GetY();
93 double abs_time_diff = 999;
94 for (
auto sts_hit_j :
fStsHits[sts_unit_j]) {
97 int32_t sts_address_j = sts_hit_j->GetAddress();
98 double sts_j_x = sts_hit_j->GetX();
99 double sts_j_y = sts_hit_j->GetY();
101 fH2D[Form(
"Sts%d:Sts%d_YY", sts_unit_i, sts_unit_j)]->Fill(sts_i_y, sts_j_y);
102 fH2D[Form(
"Sts%d:Sts%d_XX", sts_unit_i, sts_unit_j)]->Fill(sts_i_x, sts_j_x);
103 fH2D[Form(
"Sts0x%x:Sts0x%x_YY", sts_address_i, sts_address_j)]->Fill(sts_i_y, sts_j_y);
104 fH2D[Form(
"Sts0x%x:Sts0x%x_XX", sts_address_i, sts_address_j)]->Fill(sts_i_x, sts_j_x);
108 double dt = std::abs(sts_hit_i->GetTime() - sts_hit_j->GetTime());
109 if (abs_time_diff > dt) {
111 closest_hit = sts_hit_j;
115 if (!is_mc_data && closest_hit !=
nullptr) {
116 int32_t sts_address_j = closest_hit->
GetAddress();
117 double sts_j_x = closest_hit->
GetX();
118 double sts_j_y = closest_hit->
GetY();
120 fH2D[Form(
"Sts%d:Sts%d_YY", sts_unit_i, sts_unit_j)]->Fill(sts_i_y, sts_j_y);
121 fH2D[Form(
"Sts%d:Sts%d_XX", sts_unit_i, sts_unit_j)]->Fill(sts_i_x, sts_j_x);
122 fH2D[Form(
"Sts0x%x:Sts0x%x_YY", sts_address_i, sts_address_j)]->Fill(sts_i_y, sts_j_y);
123 fH2D[Form(
"Sts0x%x:Sts0x%x_XX", sts_address_i, sts_address_j)]->Fill(sts_i_x, sts_j_x);