| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "Validator.h" | ||
| 2 | |||
| 3 | namespace iguana::physics { | ||
| 4 | |||
| 5 | REGISTER_IGUANA_VALIDATOR(DepolarizationValidator); | ||
| 6 | |||
| 7 | 1 | void DepolarizationValidator::Start(hipo::banklist& banks) | |
| 8 | { | ||
| 9 | // define the algorithm sequence | ||
| 10 | 2 | m_algo_seq = std::make_unique<AlgorithmSequence>(); | |
| 11 |
3/8✓ Branch 7 → 8 taken 1 time.
✗ Branch 7 → 208 not taken.
✓ Branch 8 → 9 taken 1 time.
✗ Branch 8 → 202 not taken.
✓ Branch 14 → 15 taken 1 time.
✗ Branch 14 → 17 not taken.
✗ Branch 208 → 209 not taken.
✗ Branch 208 → 211 not taken.
|
2 | m_algo_seq->Add("physics::InclusiveKinematics"); |
| 12 |
3/8✓ Branch 20 → 21 taken 1 time.
✗ Branch 20 → 220 not taken.
✓ Branch 21 → 22 taken 1 time.
✗ Branch 21 → 214 not taken.
✓ Branch 27 → 28 taken 1 time.
✗ Branch 27 → 30 not taken.
✗ Branch 220 → 221 not taken.
✗ Branch 220 → 223 not taken.
|
2 | m_algo_seq->Add("physics::Depolarization"); |
| 13 |
2/6✓ Branch 34 → 35 taken 1 time.
✗ Branch 34 → 232 not taken.
✓ Branch 43 → 44 taken 1 time.
✗ Branch 43 → 46 not taken.
✗ Branch 232 → 233 not taken.
✗ Branch 232 → 235 not taken.
|
3 | m_algo_seq->SetOption("physics::Depolarization", "log", m_log->GetLevel()); |
| 14 | 1 | m_algo_seq->Start(banks); | |
| 15 | |||
| 16 | // get bank indices | ||
| 17 |
2/4✓ Branch 50 → 51 taken 1 time.
✗ Branch 50 → 238 not taken.
✗ Branch 51 → 52 not taken.
✓ Branch 51 → 54 taken 1 time.
|
1 | b_inc_kin = GetBankIndex(banks, "physics::InclusiveKinematics"); |
| 18 |
2/4✓ Branch 57 → 58 taken 1 time.
✗ Branch 57 → 244 not taken.
✗ Branch 58 → 59 not taken.
✓ Branch 58 → 61 taken 1 time.
|
1 | b_depol = GetBankIndex(banks, "physics::Depolarization"); |
| 19 | |||
| 20 | // set an output file | ||
| 21 | 1 | auto output_dir = GetOutputDirectory(); | |
| 22 |
1/2✓ Branch 64 → 65 taken 1 time.
✗ Branch 64 → 79 not taken.
|
1 | if(output_dir) { |
| 23 |
3/6✓ Branch 65 → 66 taken 1 time.
✗ Branch 65 → 346 not taken.
✓ Branch 66 → 67 taken 1 time.
✗ Branch 66 → 250 not taken.
✓ Branch 72 → 73 taken 1 time.
✗ Branch 72 → 346 not taken.
|
2 | m_output_file_basename = output_dir.value() + "/depolarization"; |
| 24 |
2/4✓ Branch 73 → 74 taken 1 time.
✗ Branch 73 → 258 not taken.
✓ Branch 76 → 77 taken 1 time.
✗ Branch 76 → 256 not taken.
|
2 | m_output_file = new TFile(m_output_file_basename + ".root", "RECREATE"); |
| 25 | } | ||
| 26 | |||
| 27 | // plot binning | ||
| 28 | int const n_bins = 100; | ||
| 29 | std::pair<double, double> const depol_range = {-0.5, 2.5}; | ||
| 30 | std::map<TString, std::pair<double, double>> const kin_range = { | ||
| 31 |
1/2✓ Branch 79 → 80 taken 1 time.
✗ Branch 79 → 270 not taken.
|
1 | {"Q2", {0, 10}}, |
| 32 |
1/2✓ Branch 81 → 82 taken 1 time.
✗ Branch 81 → 268 not taken.
|
2 | {"x", {0, 1}}, |
| 33 |
4/8✓ Branch 83 → 84 taken 1 time.
✗ Branch 83 → 266 not taken.
✗ Branch 85 → 86 not taken.
✓ Branch 85 → 87 taken 1 time.
✓ Branch 88 → 89 taken 3 times.
✓ Branch 88 → 91 taken 1 time.
✗ Branch 260 → 261 not taken.
✗ Branch 260 → 263 not taken.
|
5 | {"y", {0, 1}}}; |
| 34 | |||
| 35 | // plot names, in preferred order for the canvas | ||
| 36 | std::vector<TString> const depol_names = { | ||
| 37 | "A", | ||
| 38 | "B", | ||
| 39 | "C", | ||
| 40 | "V", | ||
| 41 | "W", | ||
| 42 | "epsilon", | ||
| 43 | "BA", | ||
| 44 | "CA", | ||
| 45 | "VA", | ||
| 46 |
1/2✓ Branch 94 → 95 taken 1 time.
✗ Branch 94 → 344 not taken.
|
1 | "WA"}; |
| 47 | |||
| 48 | // plot titles | ||
| 49 | std::map<TString, TString> const depol_titles = { | ||
| 50 | {"epsilon", "#varepsilon"}, | ||
| 51 | {"A", "A"}, | ||
| 52 | {"B", "B"}, | ||
| 53 | {"C", "C"}, | ||
| 54 | {"V", "V"}, | ||
| 55 | {"W", "W"}, | ||
| 56 | {"BA", "B/A"}, | ||
| 57 | {"CA", "C/A"}, | ||
| 58 | {"VA", "V/A"}, | ||
| 59 |
4/8✗ Branch 105 → 106 not taken.
✓ Branch 105 → 107 taken 1 time.
✓ Branch 108 → 109 taken 10 times.
✓ Branch 108 → 112 taken 1 time.
✓ Branch 112 → 113 taken 1 time.
✗ Branch 112 → 289 not taken.
✗ Branch 275 → 276 not taken.
✗ Branch 275 → 279 not taken.
|
11 | {"WA", "W/A"}}; |
| 60 | |||
| 61 | // bank accessors | ||
| 62 | std::map<TString, std::function<double(hipo::bank const&, int const)>> const accessors = { | ||
| 63 | {"epsilon", [](auto const& b, auto const r) { return b.getDouble("epsilon", r); }}, | ||
| 64 | 429 | {"A", [](auto const& b, auto const r) { return b.getDouble("A", r); }}, | |
| 65 | 429 | {"B", [](auto const& b, auto const r) { return b.getDouble("B", r); }}, | |
| 66 | 429 | {"C", [](auto const& b, auto const r) { return b.getDouble("C", r); }}, | |
| 67 | 429 | {"V", [](auto const& b, auto const r) { return b.getDouble("V", r); }}, | |
| 68 | 429 | {"W", [](auto const& b, auto const r) { return b.getDouble("W", r); }}, | |
| 69 | 429 | {"BA", [](auto const& b, auto const r) { return b.getDouble("B", r) / b.getDouble("A", r); }}, | |
| 70 | 429 | {"CA", [](auto const& b, auto const r) { return b.getDouble("C", r) / b.getDouble("A", r); }}, | |
| 71 | 429 | {"VA", [](auto const& b, auto const r) { return b.getDouble("V", r) / b.getDouble("A", r); }}, | |
| 72 |
3/6✗ Branch 122 → 123 not taken.
✓ Branch 122 → 124 taken 1 time.
✓ Branch 125 → 126 taken 10 times.
✓ Branch 125 → 127 taken 1 time.
✗ Branch 286 → 287 not taken.
✗ Branch 286 → 288 not taken.
|
440 | {"WA", [](auto const& b, auto const r) { return b.getDouble("W", r) / b.getDouble("A", r); }}}; |
| 73 | |||
| 74 | // construct plots | ||
| 75 |
2/2✓ Branch 195 → 128 taken 10 times.
✓ Branch 195 → 196 taken 1 time.
|
11 | for(auto const& name : depol_names) { |
| 76 |
9/18✓ Branch 128 → 129 taken 10 times.
✗ Branch 128 → 338 not taken.
✓ Branch 129 → 130 taken 10 times.
✗ Branch 129 → 305 not taken.
✓ Branch 130 → 131 taken 10 times.
✗ Branch 130 → 303 not taken.
✓ Branch 131 → 132 taken 10 times.
✗ Branch 131 → 303 not taken.
✓ Branch 132 → 133 taken 10 times.
✗ Branch 132 → 301 not taken.
✓ Branch 133 → 134 taken 10 times.
✗ Branch 133 → 300 not taken.
✓ Branch 134 → 135 taken 10 times.
✗ Branch 134 → 300 not taken.
✓ Branch 137 → 138 taken 10 times.
✗ Branch 137 → 298 not taken.
✓ Branch 140 → 141 taken 10 times.
✗ Branch 140 → 296 not taken.
|
40 | plots_vs_Q2.push_back({new TH2D(name + "_vs_Q2", depol_titles.at(name) + " vs. Q^{2}", n_bins, kin_range.at("Q2").first, kin_range.at("Q2").second, n_bins, depol_range.first, depol_range.second), |
| 77 | 10 | accessors.at(name)}); | |
| 78 |
9/18✓ Branch 150 → 151 taken 10 times.
✗ Branch 150 → 338 not taken.
✓ Branch 151 → 152 taken 10 times.
✗ Branch 151 → 320 not taken.
✓ Branch 152 → 153 taken 10 times.
✗ Branch 152 → 318 not taken.
✓ Branch 153 → 154 taken 10 times.
✗ Branch 153 → 318 not taken.
✓ Branch 154 → 155 taken 10 times.
✗ Branch 154 → 316 not taken.
✓ Branch 155 → 156 taken 10 times.
✗ Branch 155 → 315 not taken.
✓ Branch 156 → 157 taken 10 times.
✗ Branch 156 → 315 not taken.
✓ Branch 159 → 160 taken 10 times.
✗ Branch 159 → 313 not taken.
✓ Branch 162 → 163 taken 10 times.
✗ Branch 162 → 311 not taken.
|
40 | plots_vs_x.push_back({new TH2D(name + "_vs_x", depol_titles.at(name) + " vs. x", n_bins, kin_range.at("x").first, kin_range.at("x").second, n_bins, depol_range.first, depol_range.second), |
| 79 | 10 | accessors.at(name)}); | |
| 80 |
9/18✓ Branch 172 → 173 taken 10 times.
✗ Branch 172 → 338 not taken.
✓ Branch 173 → 174 taken 10 times.
✗ Branch 173 → 335 not taken.
✓ Branch 174 → 175 taken 10 times.
✗ Branch 174 → 333 not taken.
✓ Branch 175 → 176 taken 10 times.
✗ Branch 175 → 333 not taken.
✓ Branch 176 → 177 taken 10 times.
✗ Branch 176 → 331 not taken.
✓ Branch 177 → 178 taken 10 times.
✗ Branch 177 → 330 not taken.
✓ Branch 178 → 179 taken 10 times.
✗ Branch 178 → 330 not taken.
✓ Branch 181 → 182 taken 10 times.
✗ Branch 181 → 328 not taken.
✓ Branch 184 → 185 taken 10 times.
✗ Branch 184 → 326 not taken.
|
40 | plots_vs_y.push_back({new TH2D(name + "_vs_y", depol_titles.at(name) + " vs. y", n_bins, kin_range.at("y").first, kin_range.at("y").second, n_bins, depol_range.first, depol_range.second), |
| 81 | 10 | accessors.at(name)}); | |
| 82 | } | ||
| 83 |
16/44✓ Branch 95 → 96 taken 1 time.
✗ Branch 95 → 280 not taken.
✓ Branch 96 → 97 taken 1 time.
✗ Branch 96 → 280 not taken.
✓ Branch 97 → 98 taken 1 time.
✗ Branch 97 → 280 not taken.
✓ Branch 98 → 99 taken 1 time.
✗ Branch 98 → 280 not taken.
✓ Branch 99 → 100 taken 1 time.
✗ Branch 99 → 280 not taken.
✓ Branch 100 → 101 taken 1 time.
✗ Branch 100 → 280 not taken.
✓ Branch 101 → 102 taken 1 time.
✗ Branch 101 → 280 not taken.
✓ Branch 102 → 103 taken 1 time.
✗ Branch 102 → 280 not taken.
✓ Branch 103 → 104 taken 1 time.
✗ Branch 103 → 280 not taken.
✓ Branch 104 → 105 taken 1 time.
✗ Branch 104 → 280 not taken.
✓ Branch 141 → 142 taken 10 times.
✗ Branch 141 → 296 not taken.
✓ Branch 142 → 143 taken 10 times.
✗ Branch 142 → 296 not taken.
✓ Branch 163 → 164 taken 10 times.
✗ Branch 163 → 311 not taken.
✓ Branch 164 → 165 taken 10 times.
✗ Branch 164 → 311 not taken.
✓ Branch 185 → 186 taken 10 times.
✗ Branch 185 → 326 not taken.
✓ Branch 186 → 187 taken 10 times.
✗ Branch 186 → 326 not taken.
✗ Branch 271 → 272 not taken.
✗ Branch 271 → 274 not taken.
✗ Branch 281 → 282 not taken.
✗ Branch 281 → 285 not taken.
✗ Branch 290 → 291 not taken.
✗ Branch 290 → 292 not taken.
✗ Branch 305 → 306 not taken.
✗ Branch 305 → 307 not taken.
✗ Branch 320 → 321 not taken.
✗ Branch 320 → 322 not taken.
✗ Branch 335 → 336 not taken.
✗ Branch 335 → 337 not taken.
|
33 | } |
| 84 | |||
| 85 | |||
| 86 | 1000 | bool DepolarizationValidator::Run(hipo::banklist& banks) const | |
| 87 | { | ||
| 88 | // calculate kinematics | ||
| 89 | 1000 | m_algo_seq->Run(banks); | |
| 90 |
2/4✓ Branch 3 → 4 taken 1000 times.
✗ Branch 3 → 65 not taken.
✓ Branch 4 → 5 taken 1000 times.
✗ Branch 4 → 59 not taken.
|
1000 | auto& inc_kin_bank = GetBank(banks, b_inc_kin, "physics::InclusiveKinematics"); |
| 91 |
2/4✓ Branch 10 → 11 taken 1000 times.
✗ Branch 10 → 72 not taken.
✓ Branch 11 → 12 taken 1000 times.
✗ Branch 11 → 66 not taken.
|
1000 | auto& depol_bank = GetBank(banks, b_depol, "physics::Depolarization"); |
| 92 | |||
| 93 | // skip events with empty bank(s) | ||
| 94 |
3/4✓ Branch 20 → 21 taken 143 times.
✓ Branch 20 → 25 taken 857 times.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 27 taken 143 times.
|
2143 | if(inc_kin_bank.getRowList().size() == 0 || depol_bank.getRowList().size() == 0) { |
| 95 | 857 | m_log->Debug("skip this event, since it has no kinematics results"); | |
| 96 | 857 | return false; | |
| 97 | } | ||
| 98 | |||
| 99 | // lock mutex and fill the plots | ||
| 100 | 143 | std::scoped_lock<std::mutex> lock(m_mutex); | |
| 101 |
3/4✓ Branch 28 → 29 taken 143 times.
✗ Branch 28 → 73 not taken.
✓ Branch 55 → 30 taken 143 times.
✓ Branch 55 → 56 taken 143 times.
|
286 | for(auto const& row : inc_kin_bank.getRowList()) { |
| 102 |
2/2✓ Branch 37 → 31 taken 1430 times.
✓ Branch 37 → 38 taken 143 times.
|
1573 | for(auto& plot : plots_vs_Q2) |
| 103 |
2/4✗ Branch 31 → 32 not taken.
✓ Branch 31 → 33 taken 1430 times.
✓ Branch 35 → 36 taken 1430 times.
✗ Branch 35 → 73 not taken.
|
2860 | plot.hist->Fill(inc_kin_bank.getDouble("Q2", row), plot.get_val(depol_bank, row)); |
| 104 |
2/2✓ Branch 45 → 39 taken 1430 times.
✓ Branch 45 → 46 taken 143 times.
|
1573 | for(auto& plot : plots_vs_x) |
| 105 |
2/4✗ Branch 39 → 40 not taken.
✓ Branch 39 → 41 taken 1430 times.
✓ Branch 43 → 44 taken 1430 times.
✗ Branch 43 → 73 not taken.
|
2860 | plot.hist->Fill(inc_kin_bank.getDouble("x", row), plot.get_val(depol_bank, row)); |
| 106 |
2/2✓ Branch 53 → 47 taken 1430 times.
✓ Branch 53 → 54 taken 143 times.
|
1573 | for(auto& plot : plots_vs_y) |
| 107 |
2/4✗ Branch 47 → 48 not taken.
✓ Branch 47 → 49 taken 1430 times.
✓ Branch 51 → 52 taken 1430 times.
✗ Branch 51 → 73 not taken.
|
2860 | plot.hist->Fill(inc_kin_bank.getDouble("y", row), plot.get_val(depol_bank, row)); |
| 108 | } | ||
| 109 | return true; | ||
| 110 | } | ||
| 111 | |||
| 112 | |||
| 113 | 1 | void DepolarizationValidator::Stop() | |
| 114 | { | ||
| 115 |
1/2✓ Branch 4 → 5 taken 1 time.
✗ Branch 4 → 19 not taken.
|
2 | if(GetOutputDirectory()) { |
| 116 | |||
| 117 |
1/2✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 3 times.
|
3 | auto make_plots = [this](TString const& name, std::vector<Plot2D> const& plot_list) { |
| 118 | int const n_cols = 5; | ||
| 119 | 3 | int const n_rows = (plot_list.size() - 1) / n_cols + 1; | |
| 120 |
3/6✗ Branch 5 → 6 not taken.
✓ Branch 5 → 7 taken 3 times.
✓ Branch 8 → 9 taken 3 times.
✗ Branch 8 → 37 not taken.
✓ Branch 11 → 12 taken 3 times.
✗ Branch 11 → 35 not taken.
|
9 | auto canv = new TCanvas("canv_" + name, name, n_cols * 800, n_rows * 1000); |
| 121 | 3 | canv->Divide(n_cols, n_rows); | |
| 122 | int pad_num = 0; | ||
| 123 |
2/2✓ Branch 23 → 15 taken 30 times.
✓ Branch 23 → 24 taken 3 times.
|
33 | for(auto& plot : plot_list) { |
| 124 | 30 | auto pad = canv->GetPad(++pad_num); | |
| 125 | 30 | pad->cd(); | |
| 126 | 30 | pad->SetGrid(1, 1); | |
| 127 | 30 | pad->SetLeftMargin(0.12); | |
| 128 | 30 | pad->SetRightMargin(0.15); | |
| 129 | 30 | pad->SetBottomMargin(0.12); | |
| 130 | 30 | plot.hist->Draw("colz"); | |
| 131 | } | ||
| 132 |
3/6✓ Branch 26 → 27 taken 3 times.
✗ Branch 26 → 43 not taken.
✓ Branch 27 → 28 taken 3 times.
✗ Branch 27 → 41 not taken.
✓ Branch 30 → 31 taken 3 times.
✗ Branch 30 → 39 not taken.
|
6 | canv->SaveAs(m_output_file_basename + "_" + canv->GetTitle() + ".png"); |
| 133 | 3 | }; | |
| 134 | |||
| 135 |
1/2✓ Branch 6 → 7 taken 1 time.
✗ Branch 6 → 20 not taken.
|
1 | make_plots("Q2", plots_vs_Q2); |
| 136 |
1/2✓ Branch 9 → 10 taken 1 time.
✗ Branch 9 → 22 not taken.
|
1 | make_plots("x", plots_vs_x); |
| 137 |
1/2✓ Branch 12 → 13 taken 1 time.
✗ Branch 12 → 24 not taken.
|
1 | make_plots("y", plots_vs_y); |
| 138 | |||
| 139 | 1 | m_output_file->Write(); | |
| 140 | 1 | m_log->Info("Wrote output file {}", m_output_file->GetName()); | |
| 141 | 1 | m_output_file->Close(); | |
| 142 | } | ||
| 143 | 1 | } | |
| 144 | |||
| 145 | } | ||
| 146 |