SND@LHC Software
Loading...
Searching...
No Matches
sndConfiguration.cxx
Go to the documentation of this file.
1#include "sndConfiguration.h"
2
3#include <cmath>
4#include <iostream>
5#include <stdexcept>
6
7#include "Scifi.h"
8#include "MuFilter.h"
9
10snd::Configuration::Configuration(Option option, Scifi *scifi_geometry, MuFilter *muon_filter_geometry)
11{
12 // Parameters from geometry
13 scifi_n_stations = scifi_geometry->GetConfParI("Scifi/nscifi");
14 scifi_boards_per_plane = scifi_geometry->GetConfParI("Scifi/nmats");
15 scifi_n_channels_per_plane = scifi_geometry->GetConfParI("Scifi/nsipm_channels") * scifi_geometry->GetConfParI("Scifi/nmats") * scifi_geometry->GetConfParI("Scifi/nsipm_mat");
16 scifi_fiber_lenght = scifi_geometry->GetConfParF("Scifi/fiber_length");
17 scifi_centroid_error_x = scifi_geometry->GetConfParF("Scifi/channel_width");
18 scifi_centroid_error_y = scifi_geometry->GetConfParF("Scifi/channel_width");
19 scifi_centroid_error_z = scifi_geometry->GetConfParF("Scifi/channel_height");
20
21 veto_n_stations = muon_filter_geometry->GetConfParI("MuFilter/NVetoPlanes");
22
23 us_n_stations = muon_filter_geometry->GetConfParI("MuFilter/NUpstreamPlanes");
24 us_bar_per_station = muon_filter_geometry->GetConfParI("MuFilter/NUpstreamBars");
25 us_n_sipm_per_bar = muon_filter_geometry->GetConfParI("MuFilter/UpstreamnSiPMs") * muon_filter_geometry->GetConfParI("MuFilter/UpstreamnSides");
27 us_centroid_error_x = muon_filter_geometry->GetConfParF("MuFilter/UpstreamBarX") / std::sqrt(12);
28 us_centroid_error_y = muon_filter_geometry->GetConfParF("MuFilter/UpstreamBarY") / std::sqrt(12);
29 us_centroid_error_z = muon_filter_geometry->GetConfParF("MuFilter/UpstreamBarZ");
30
31 ds_n_stations = muon_filter_geometry->GetConfParI("MuFilter/NDownstreamPlanes");
32 ds_hor_spatial_resolution_x = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarX") / std::sqrt(12);
33 ds_hor_spatial_resolution_y = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarY") / std::sqrt(12);
34 ds_hor_spatial_resolution_z = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarZ") / std::sqrt(12);
35 ds_ver_spatial_resolution_x = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarX_ver") / std::sqrt(12);
36 ds_ver_spatial_resolution_y = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarY_ver") / std::sqrt(12);
37 ds_ver_spatial_resolution_z = muon_filter_geometry->GetConfParF("MuFilter/DownstreamBarZ_ver") / std::sqrt(12);
38
39 // Common parameters not present in geometry
42 us_min_timestamp = -0.5;
43 us_max_timestamp = 3.0;
45 us_qdc_to_gev = 0.0151;
46
47 // Ad hoc parameters not present in geometry
48 if (option == Option::ti18_2024_2025)
49 {
53 scifi_qdc_to_gev = 0.14;
54
55 scifi_x_min = -50.0;
56 scifi_x_max = 0.0;
57 scifi_y_min = 10.0;
58 scifi_y_max = 60.0;
59 scifi_z_min = 280.0;
60 scifi_z_max = 360.0;
61
62 us_x_min = -80.0;
63 us_x_max = 0.0;
64 us_y_min = 0.0;
65 us_y_max = 80.0;
66 us_z_min = 370.0;
67 us_z_max = 480.0;
68
70 }
71
72 else if (option == Option::ti18_2022_2023)
73 {
77 scifi_qdc_to_gev = 0.14;
78 scifi_x_min = -50.0;
79 scifi_x_max = 0.0;
80 scifi_y_min = 10.0;
81 scifi_y_max = 60.0;
82 scifi_z_min = 280.0;
83 scifi_z_max = 360.0;
86
87 us_x_min = -80.0;
88 us_x_max = 0.0;
89 us_y_min = 0.0;
90 us_y_max = 80.0;
91 us_z_min = 370.0;
92 us_z_max = 480.0;
93
95 }
96
97 else if (option == Option::test_beam_2023)
98 {
102 scifi_qdc_to_gev = 0.053; // mirrors
103
104 scifi_x_min = -47.0;
105 scifi_x_max = -27.0;
106 scifi_y_min = 35.0;
107 scifi_y_max = 55.0;
108 scifi_z_min = 310.0;
109 scifi_z_max = 360.0;
110
111 us_x_min = -80.0;
112 us_x_max = 5.0;
113 us_y_min = 10.0;
114 us_y_max = 80.0;
115 us_z_min = 370.0;
116 us_z_max = 480.0;
117
119 }
120 else if (option == Option::test_beam_2024)
121 {
125 scifi_qdc_to_gev = 0.14;
126
127 scifi_x_min = -47.0;
128 scifi_x_max = -27.0;
129 scifi_y_min = 35.0;
130 scifi_y_max = 55.0;
131 scifi_z_min = 310.0;
132 scifi_z_max = 380.0;
133
134 us_x_min = std::nan("");
135 us_x_max = std::nan("");
136 us_y_min = std::nan("");
137 us_y_max = std::nan("");
138 us_z_min = std::nan("");
139 us_z_max = std::nan("");
140
142 }
143 else
144 {
145 throw std::invalid_argument("Unknown configuration option");
146 }
147}
148
150{
151 if (run_number >= 100840) {
152 std::cout << "Choosing option >>>>>>>>>>\t test_beam_2024 \t<<<<<<<<<<" <<std::endl;
154 }
155 if (run_number >= 100000) {
156 std::cout << "Choosing option >>>>>>>>>>\t test_beam_2023 \t<<<<<<<<<<" <<std::endl;
158 }
159 else if (run_number < 7648) {
160 std::cout << "Choosing option >>>>>>>>>>\t ti18_2022_2023 \t<<<<<<<<<<" <<std::endl;
162 }
163 else {
164 std::cout << "Choosing option >>>>>>>>>>\t ti18_2024_2025 \t<<<<<<<<<<" <<std::endl;
166 }
167}
Float_t GetConfParF(TString name)
Definition MuFilter.h:46
Int_t GetConfParI(TString name)
Definition MuFilter.h:47
Definition Scifi.h:20
Float_t GetConfParF(TString name)
Definition Scifi.h:50
Int_t GetConfParI(TString name)
Definition Scifi.h:51
static Option GetOption(int run_number)
Configuration(Option option, Scifi *scifi_geometry, MuFilter *muon_filter_geometry)