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