Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "Validator.h" | ||
2 | |||
3 | #include <TProfile.h> | ||
4 | |||
5 | namespace iguana::clas12 { | ||
6 | |||
7 | REGISTER_IGUANA_VALIDATOR(FiducialFilterValidator); | ||
8 | |||
9 | 1 | void FiducialFilterValidator::Start(hipo::banklist& banks) | |
10 | { | ||
11 | // set algorithm options | ||
12 |
3/8✓ Branch 0 (3→4) taken 1 times.
✗ Branch 1 (3→140) not taken.
✓ Branch 2 (4→5) taken 1 times.
✗ Branch 3 (4→134) not taken.
✓ Branch 4 (13→14) taken 1 times.
✗ Branch 5 (13→16) not taken.
✗ Branch 6 (140→141) not taken.
✗ Branch 7 (140→143) not taken.
|
2 | m_algo_eb.SetOption<std::vector<int>>("pids", u_pdg_list); |
13 | |||
14 | // start algorithms | ||
15 | 1 | m_algo_eb.Start(banks); | |
16 | 1 | m_algo_traj.Start(banks); | |
17 | 1 | m_algo_cal.Start(banks); | |
18 | 1 | m_algo_fidu.Start(banks); | |
19 | |||
20 | // get bank indices | ||
21 |
2/4✓ Branch 0 (21→22) taken 1 times.
✗ Branch 1 (21→144) not taken.
✓ Branch 2 (22→23) taken 1 times.
✗ Branch 3 (22→25) not taken.
|
1 | b_particle = GetBankIndex(banks, "REC::Particle"); |
22 |
2/4✓ Branch 0 (28→29) taken 1 times.
✗ Branch 1 (28→150) not taken.
✗ Branch 2 (29→30) not taken.
✓ Branch 3 (29→32) taken 1 times.
|
1 | b_traj = GetBankIndex(banks, "REC::Particle::Traj"); |
23 |
2/4✓ Branch 0 (35→36) taken 1 times.
✗ Branch 1 (35→156) not taken.
✗ Branch 2 (36→37) not taken.
✓ Branch 3 (36→39) taken 1 times.
|
1 | b_cal = GetBankIndex(banks, "REC::Particle::Calorimeter"); |
24 | |||
25 | // set an output file | ||
26 | 1 | auto output_dir = GetOutputDirectory(); | |
27 |
1/2✓ Branch 0 (42→43) taken 1 times.
✗ Branch 1 (42→57) not taken.
|
1 | if(output_dir) { |
28 |
3/6✓ Branch 0 (43→44) taken 1 times.
✗ Branch 1 (43→212) not taken.
✓ Branch 2 (44→45) taken 1 times.
✗ Branch 3 (44→162) not taken.
✓ Branch 4 (50→51) taken 1 times.
✗ Branch 5 (50→212) not taken.
|
2 | m_output_file_basename = output_dir.value() + "/fiducial"; |
29 |
2/4✓ Branch 0 (51→52) taken 1 times.
✗ Branch 1 (51→170) not taken.
✓ Branch 2 (54→55) taken 1 times.
✗ Branch 3 (54→168) not taken.
|
2 | m_output_file = new TFile(m_output_file_basename + ".root", "RECREATE"); |
30 | } | ||
31 | |||
32 | // define plots | ||
33 |
2/2✓ Branch 0 (131→58) taken 4 times.
✓ Branch 1 (131→132) taken 1 times.
|
5 | for(auto const& pdg : u_pdg_list) { |
34 |
2/4✓ Branch 0 (58→59) taken 4 times.
✗ Branch 1 (58→212) not taken.
✓ Branch 2 (59→60) taken 4 times.
✗ Branch 3 (59→212) not taken.
|
4 | TString particle_name = particle::name.at(particle::PDG(pdg)); |
35 |
3/6✓ Branch 0 (60→61) taken 4 times.
✗ Branch 1 (60→210) not taken.
✓ Branch 2 (61→62) taken 4 times.
✗ Branch 3 (61→210) not taken.
✓ Branch 4 (62→63) taken 4 times.
✗ Branch 5 (62→208) not taken.
|
4 | TString particle_title = particle::title.at(particle::PDG(pdg)); |
36 | |||
37 | TH2D *DC1_before = new TH2D( | ||
38 |
1/2✓ Branch 0 (66→67) taken 4 times.
✗ Branch 1 (66→174) not taken.
|
8 | "DC1_before_"+particle_name, |
39 |
1/2✓ Branch 0 (72→73) taken 4 times.
✗ Branch 1 (72→208) not taken.
|
4 | particle_title + " DC1 w/o fiducial cuts; x [cm]; y [cm]", |
40 | 4 | 100, DC1xleft, DC1xright, | |
41 |
1/2✓ Branch 0 (63→64) taken 4 times.
✗ Branch 1 (63→176) not taken.
|
4 | 100, DC1ybottom, DC1ytop |
42 |
1/2✓ Branch 0 (69→70) taken 4 times.
✗ Branch 1 (69→172) not taken.
|
4 | ); |
43 | TH2D *DC1_after = new TH2D( | ||
44 |
1/2✓ Branch 0 (76→77) taken 4 times.
✗ Branch 1 (76→180) not taken.
|
8 | "DC1_after_"+particle_name, |
45 |
1/2✓ Branch 0 (82→83) taken 4 times.
✗ Branch 1 (82→208) not taken.
|
4 | particle_title + " DC1 w fiducial cuts; x [cm]; y [cm]", |
46 | 4 | 100, DC1xleft, DC1xright, | |
47 |
1/2✓ Branch 0 (73→74) taken 4 times.
✗ Branch 1 (73→182) not taken.
|
4 | 100, DC1ybottom, DC1ytop |
48 |
1/2✓ Branch 0 (79→80) taken 4 times.
✗ Branch 1 (79→178) not taken.
|
4 | ); |
49 | |||
50 | TH2D *DC2_before = new TH2D( | ||
51 |
1/2✓ Branch 0 (86→87) taken 4 times.
✗ Branch 1 (86→186) not taken.
|
8 | "DC2_before_" + particle_name, |
52 |
1/2✓ Branch 0 (92→93) taken 4 times.
✗ Branch 1 (92→208) not taken.
|
4 | particle_title + " DC2 w/o fiducial cuts; x [cm]; y [cm]", |
53 | 4 | 100, DC2xleft, DC2xright, | |
54 |
1/2✓ Branch 0 (83→84) taken 4 times.
✗ Branch 1 (83→188) not taken.
|
4 | 100, DC2ybottom, DC2ytop |
55 |
1/2✓ Branch 0 (89→90) taken 4 times.
✗ Branch 1 (89→184) not taken.
|
4 | ); |
56 | TH2D *DC2_after = new TH2D( | ||
57 |
1/2✓ Branch 0 (96→97) taken 4 times.
✗ Branch 1 (96→192) not taken.
|
8 | "DC2_after_" + particle_name, |
58 |
1/2✓ Branch 0 (102→103) taken 4 times.
✗ Branch 1 (102→208) not taken.
|
4 | particle_title + " DC2 w fiducial cuts; x [cm]; y [cm]", |
59 | 4 | 100, DC2xleft, DC2xright, | |
60 |
1/2✓ Branch 0 (93→94) taken 4 times.
✗ Branch 1 (93→194) not taken.
|
4 | 100, DC2ybottom, DC2ytop |
61 |
1/2✓ Branch 0 (99→100) taken 4 times.
✗ Branch 1 (99→190) not taken.
|
4 | ); |
62 | |||
63 | TH2D *DC3_before = new TH2D( | ||
64 |
1/2✓ Branch 0 (106→107) taken 4 times.
✗ Branch 1 (106→198) not taken.
|
8 | "DC3_before_" + particle_name, |
65 |
1/2✓ Branch 0 (112→113) taken 4 times.
✗ Branch 1 (112→208) not taken.
|
4 | particle_title + " DC3 w/o fiducial cuts; x [cm]; y [cm]", |
66 | 4 | 100, DC3xleft, DC3xright, | |
67 |
1/2✓ Branch 0 (103→104) taken 4 times.
✗ Branch 1 (103→200) not taken.
|
4 | 100, DC3ybottom, DC3ytop |
68 |
1/2✓ Branch 0 (109→110) taken 4 times.
✗ Branch 1 (109→196) not taken.
|
4 | ); |
69 | TH2D *DC3_after = new TH2D( | ||
70 |
1/2✓ Branch 0 (116→117) taken 4 times.
✗ Branch 1 (116→204) not taken.
|
8 | "DC3_after_" + particle_name, |
71 |
1/2✓ Branch 0 (122→123) taken 4 times.
✗ Branch 1 (122→208) not taken.
|
4 | particle_title + " DC3 w fiducial cuts; x [cm]; y [cm]", |
72 | 4 | 100, DC3xleft, DC3xright, | |
73 |
1/2✓ Branch 0 (113→114) taken 4 times.
✗ Branch 1 (113→206) not taken.
|
4 | 100, DC3ybottom, DC3ytop |
74 |
1/2✓ Branch 0 (119→120) taken 4 times.
✗ Branch 1 (119→202) not taken.
|
4 | ); |
75 | |||
76 |
1/2✓ Branch 0 (123→124) taken 4 times.
✗ Branch 1 (123→208) not taken.
|
4 | u_DC1_before.insert({pdg, DC1_before}); |
77 |
1/2✓ Branch 0 (124→125) taken 4 times.
✗ Branch 1 (124→208) not taken.
|
4 | u_DC1_after.insert({pdg, DC1_after}); |
78 |
1/2✓ Branch 0 (125→126) taken 4 times.
✗ Branch 1 (125→208) not taken.
|
4 | u_DC2_before.insert({pdg, DC2_before}); |
79 |
1/2✓ Branch 0 (126→127) taken 4 times.
✗ Branch 1 (126→208) not taken.
|
4 | u_DC2_after.insert({pdg, DC2_after}); |
80 |
1/2✓ Branch 0 (127→128) taken 4 times.
✗ Branch 1 (127→208) not taken.
|
4 | u_DC3_before.insert({pdg, DC3_before}); |
81 | 4 | u_DC3_after.insert({pdg, DC3_after}); | |
82 | 4 | } | |
83 | 1 | } | |
84 | |||
85 | |||
86 | 1000 | void FiducialFilterValidator::Run(hipo::banklist& banks) const | |
87 | { | ||
88 |
1/2✓ Branch 0 (3→4) taken 1000 times.
✗ Branch 1 (3→77) not taken.
|
1000 | auto& particle_bank = GetBank(banks, b_particle, "REC::Particle"); |
89 |
1/2✓ Branch 0 (10→11) taken 1000 times.
✗ Branch 1 (10→83) not taken.
|
1000 | auto& traj_bank = GetBank(banks, b_traj, "REC::Particle::Traj"); |
90 | |||
91 | // run the EB filter and TrajLinker | ||
92 | 1000 | m_algo_eb.Run(banks); | |
93 | 1000 | m_algo_traj.Run(banks); | |
94 | 1000 | m_algo_cal.Run(banks); | |
95 | |||
96 | // fill "before" histograms | ||
97 |
2/2✓ Branch 0 (46→21) taken 2348 times.
✓ Branch 1 (46→47) taken 1000 times.
|
3348 | for(auto const& row : particle_bank.getRowList()){ |
98 | 2348 | auto pid = particle_bank.getInt("pid", row); | |
99 |
5/6✓ Branch 0 (22→23) taken 718 times.
✓ Branch 1 (22→26) taken 1630 times.
✓ Branch 2 (23→24) taken 257 times.
✓ Branch 3 (23→26) taken 461 times.
✗ Branch 4 (24→25) not taken.
✓ Branch 5 (24→26) taken 257 times.
|
2348 | if(pid!=11&&pid!=211&&pid!=-211&&pid!=2212) continue; |
100 |
2/2✓ Branch 0 (27→28) taken 1470 times.
✓ Branch 1 (27→32) taken 878 times.
|
2348 | if(traj_bank.getByte("r1_found", row) == 1) |
101 |
1/2✓ Branch 0 (31→32) taken 1470 times.
✗ Branch 1 (31→89) not taken.
|
1470 | u_DC1_before.at(pid)->Fill(traj_bank.getFloat("r1_x", row), traj_bank.getFloat("r1_y", row)); |
102 |
2/2✓ Branch 0 (33→34) taken 1470 times.
✓ Branch 1 (33→38) taken 878 times.
|
2348 | if(traj_bank.getByte("r2_found", row) == 1) |
103 |
1/2✓ Branch 0 (37→38) taken 1470 times.
✗ Branch 1 (37→89) not taken.
|
1470 | u_DC2_before.at(pid)->Fill(traj_bank.getFloat("r2_x", row), traj_bank.getFloat("r2_y", row)); |
104 |
2/2✓ Branch 0 (39→40) taken 1470 times.
✓ Branch 1 (39→44) taken 878 times.
|
2348 | if(traj_bank.getByte("r3_found", row) == 1) |
105 |
1/2✓ Branch 0 (43→44) taken 1470 times.
✗ Branch 1 (43→89) not taken.
|
1470 | u_DC3_before.at(pid)->Fill(traj_bank.getFloat("r3_x", row), traj_bank.getFloat("r3_y", row)); |
106 | } | ||
107 | |||
108 | // apply the fiducial cuts | ||
109 | 1000 | m_algo_fidu.Run(banks); | |
110 | |||
111 | // fill "after" histograms (`particle_bank` is now filtered) | ||
112 |
2/2✓ Branch 0 (75→50) taken 1427 times.
✓ Branch 1 (75→76) taken 1000 times.
|
2427 | for(auto const& row : particle_bank.getRowList()) { |
113 | 1427 | auto pid = particle_bank.getInt("pid", row); | |
114 |
5/6✓ Branch 0 (51→52) taken 485 times.
✓ Branch 1 (51→55) taken 942 times.
✓ Branch 2 (52→53) taken 150 times.
✓ Branch 3 (52→55) taken 335 times.
✗ Branch 4 (53→54) not taken.
✓ Branch 5 (53→55) taken 150 times.
|
1427 | if(pid!=11&&pid!=211&&pid!=-211&&pid!=2212) continue; |
115 |
1/2✓ Branch 0 (56→57) taken 1427 times.
✗ Branch 1 (56→61) not taken.
|
1427 | if(traj_bank.getByte("r1_found", row) == 1) |
116 |
1/2✓ Branch 0 (60→61) taken 1427 times.
✗ Branch 1 (60→90) not taken.
|
1427 | u_DC1_after.at(pid)->Fill(traj_bank.getFloat("r1_x", row), traj_bank.getFloat("r1_y", row)); |
117 |
1/2✓ Branch 0 (62→63) taken 1427 times.
✗ Branch 1 (62→67) not taken.
|
1427 | if(traj_bank.getByte("r2_found", row) == 1) |
118 |
1/2✓ Branch 0 (66→67) taken 1427 times.
✗ Branch 1 (66→90) not taken.
|
1427 | u_DC2_after.at(pid)->Fill(traj_bank.getFloat("r2_x", row), traj_bank.getFloat("r2_y", row)); |
119 |
1/2✓ Branch 0 (68→69) taken 1427 times.
✗ Branch 1 (68→73) not taken.
|
1427 | if(traj_bank.getByte("r3_found", row) == 1) |
120 |
1/2✓ Branch 0 (72→73) taken 1427 times.
✗ Branch 1 (72→90) not taken.
|
1427 | u_DC3_after.at(pid)->Fill(traj_bank.getFloat("r3_x", row), traj_bank.getFloat("r3_y", row)); |
121 | } | ||
122 | 1000 | } | |
123 | |||
124 | |||
125 | 1 | void FiducialFilterValidator::Stop() | |
126 | { | ||
127 | 1 | m_algo_eb.Stop(); | |
128 | 1 | m_algo_traj.Stop(); | |
129 | 1 | m_algo_cal.Stop(); | |
130 | 1 | m_algo_fidu.Stop(); | |
131 |
1/2✓ Branch 0 (8→53) taken 1 times.
✗ Branch 1 (8→103) not taken.
|
2 | if(GetOutputDirectory()) { |
132 | int n_cols = 2; | ||
133 | int n_rows = 2; | ||
134 |
2/2✓ Branch 0 (53→9) taken 3 times.
✓ Branch 1 (53→98) taken 1 times.
|
4 | for(int r=0;r<3;r++){ |
135 | 3 | TString canv_name = Form("beforecanv%d", r); | |
136 |
1/2✓ Branch 0 (14→15) taken 3 times.
✗ Branch 1 (14→104) not taken.
|
3 | auto canv = new TCanvas(canv_name, canv_name, n_cols * 800, n_rows * 600); |
137 |
1/2✓ Branch 0 (15→16) taken 3 times.
✗ Branch 1 (15→120) not taken.
|
3 | canv->Divide(n_cols, n_rows); |
138 | int pad_num = 0; | ||
139 |
2/2✓ Branch 0 (33→17) taken 12 times.
✓ Branch 1 (33→34) taken 3 times.
|
15 | for(auto const& pdg : u_pdg_list){ |
140 |
1/2✓ Branch 0 (17→18) taken 12 times.
✗ Branch 1 (17→120) not taken.
|
12 | auto pad = canv->GetPad(++pad_num); |
141 |
1/2✓ Branch 0 (18→19) taken 12 times.
✗ Branch 1 (18→120) not taken.
|
12 | pad->cd(); |
142 |
1/2✓ Branch 0 (19→20) taken 12 times.
✗ Branch 1 (19→120) not taken.
|
12 | pad->SetGrid(1, 1); |
143 |
1/2✓ Branch 0 (20→21) taken 12 times.
✗ Branch 1 (20→120) not taken.
|
12 | pad->SetLogz(); |
144 |
1/2✓ Branch 0 (21→22) taken 12 times.
✗ Branch 1 (21→120) not taken.
|
12 | pad->SetLeftMargin(0.12); |
145 |
1/2✓ Branch 0 (22→23) taken 12 times.
✗ Branch 1 (22→120) not taken.
|
12 | pad->SetRightMargin(0.12); |
146 |
1/2✓ Branch 0 (23→24) taken 12 times.
✗ Branch 1 (23→120) not taken.
|
12 | pad->SetBottomMargin(0.12); |
147 |
2/2✓ Branch 0 (24→25) taken 4 times.
✓ Branch 1 (24→27) taken 8 times.
|
12 | if(r==0){ |
148 |
1/2✓ Branch 0 (26→32) taken 4 times.
✗ Branch 1 (26→120) not taken.
|
4 | u_DC1_before.at(pdg)->Draw("colz"); |
149 |
2/2✓ Branch 0 (27→28) taken 4 times.
✓ Branch 1 (27→30) taken 4 times.
|
8 | }else if(r==1){ |
150 |
1/2✓ Branch 0 (29→32) taken 4 times.
✗ Branch 1 (29→120) not taken.
|
4 | u_DC2_before.at(pdg)->Draw("colz"); |
151 | }else{ | ||
152 |
1/2✓ Branch 0 (31→32) taken 4 times.
✗ Branch 1 (31→120) not taken.
|
4 | u_DC3_before.at(pdg)->Draw("colz"); |
153 | } | ||
154 | } | ||
155 |
5/10✓ Branch 0 (35→36) taken 3 times.
✗ Branch 1 (35→114) not taken.
✓ Branch 2 (36→37) taken 3 times.
✗ Branch 3 (36→112) not taken.
✓ Branch 4 (37→38) taken 3 times.
✗ Branch 5 (37→110) not taken.
✓ Branch 6 (38→39) taken 3 times.
✗ Branch 7 (38→108) not taken.
✓ Branch 8 (41→42) taken 3 times.
✗ Branch 9 (41→106) not taken.
|
6 | canv->SaveAs(m_output_file_basename + "_before_DC" + std::to_string(r+1) + ".png"); |
156 | 3 | } | |
157 | |||
158 |
2/2✓ Branch 0 (98→54) taken 3 times.
✓ Branch 1 (98→99) taken 1 times.
|
4 | for(int r=0;r<3;r++){ |
159 | 3 | TString canv_name = Form("aftercanv%d", r); | |
160 |
1/2✓ Branch 0 (59→60) taken 3 times.
✗ Branch 1 (59→122) not taken.
|
3 | auto canv = new TCanvas(canv_name, canv_name, n_cols * 800, n_rows * 600); |
161 |
1/2✓ Branch 0 (60→61) taken 3 times.
✗ Branch 1 (60→138) not taken.
|
3 | canv->Divide(n_cols, n_rows); |
162 | int pad_num = 0; | ||
163 |
2/2✓ Branch 0 (78→62) taken 12 times.
✓ Branch 1 (78→79) taken 3 times.
|
15 | for(auto const& pdg : u_pdg_list){ |
164 |
1/2✓ Branch 0 (62→63) taken 12 times.
✗ Branch 1 (62→138) not taken.
|
12 | auto pad = canv->GetPad(++pad_num); |
165 |
1/2✓ Branch 0 (63→64) taken 12 times.
✗ Branch 1 (63→138) not taken.
|
12 | pad->cd(); |
166 |
1/2✓ Branch 0 (64→65) taken 12 times.
✗ Branch 1 (64→138) not taken.
|
12 | pad->SetGrid(1, 1); |
167 |
1/2✓ Branch 0 (65→66) taken 12 times.
✗ Branch 1 (65→138) not taken.
|
12 | pad->SetLogz(); |
168 |
1/2✓ Branch 0 (66→67) taken 12 times.
✗ Branch 1 (66→138) not taken.
|
12 | pad->SetLeftMargin(0.12); |
169 |
1/2✓ Branch 0 (67→68) taken 12 times.
✗ Branch 1 (67→138) not taken.
|
12 | pad->SetRightMargin(0.12); |
170 |
1/2✓ Branch 0 (68→69) taken 12 times.
✗ Branch 1 (68→138) not taken.
|
12 | pad->SetBottomMargin(0.12); |
171 |
2/2✓ Branch 0 (69→70) taken 4 times.
✓ Branch 1 (69→72) taken 8 times.
|
12 | if(r==0){ |
172 |
1/2✓ Branch 0 (71→77) taken 4 times.
✗ Branch 1 (71→138) not taken.
|
4 | u_DC1_after.at(pdg)->Draw("colz"); |
173 |
2/2✓ Branch 0 (72→73) taken 4 times.
✓ Branch 1 (72→75) taken 4 times.
|
8 | }else if(r==1){ |
174 |
1/2✓ Branch 0 (74→77) taken 4 times.
✗ Branch 1 (74→138) not taken.
|
4 | u_DC2_after.at(pdg)->Draw("colz"); |
175 | }else{ | ||
176 |
1/2✓ Branch 0 (76→77) taken 4 times.
✗ Branch 1 (76→138) not taken.
|
4 | u_DC3_after.at(pdg)->Draw("colz"); |
177 | } | ||
178 | } | ||
179 |
5/10✓ Branch 0 (80→81) taken 3 times.
✗ Branch 1 (80→132) not taken.
✓ Branch 2 (81→82) taken 3 times.
✗ Branch 3 (81→130) not taken.
✓ Branch 4 (82→83) taken 3 times.
✗ Branch 5 (82→128) not taken.
✓ Branch 6 (83→84) taken 3 times.
✗ Branch 7 (83→126) not taken.
✓ Branch 8 (86→87) taken 3 times.
✗ Branch 9 (86→124) not taken.
|
6 | canv->SaveAs(m_output_file_basename + "_after_DC" + std::to_string(r+1) + ".png"); |
180 | 3 | } | |
181 | 1 | m_output_file->Write(); | |
182 | 1 | m_log->Info("Wrote output file {}", m_output_file->GetName()); | |
183 | 1 | m_output_file->Close(); | |
184 | } | ||
185 | 1 | } | |
186 | } | ||
187 |