Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "Validator.h" | ||
2 | #include "Algorithm.h" | ||
3 | |||
4 | #include <TProfile.h> | ||
5 | |||
6 | namespace iguana::clas12 { | ||
7 | |||
8 | REGISTER_IGUANA_VALIDATOR(FiducialFilterValidator); | ||
9 | |||
10 | 1 | void FiducialFilterValidator::Start(hipo::banklist& banks) | |
11 | { | ||
12 | // define the algorithm sequence | ||
13 | 2 | m_algo_seq = std::make_unique<AlgorithmSequence>(); | |
14 |
3/8✓ Branch 0 (7→8) taken 1 times.
✗ Branch 1 (7→163) not taken.
✓ Branch 2 (8→9) taken 1 times.
✗ Branch 3 (8→157) not taken.
✓ Branch 4 (14→15) taken 1 times.
✗ Branch 5 (14→17) not taken.
✗ Branch 6 (163→164) not taken.
✗ Branch 7 (163→166) not taken.
|
2 | m_algo_seq->Add("clas12::EventBuilderFilter"); |
15 |
3/8✓ Branch 0 (20→21) taken 1 times.
✗ Branch 1 (20→175) not taken.
✓ Branch 2 (21→22) taken 1 times.
✗ Branch 3 (21→169) not taken.
✓ Branch 4 (27→28) taken 1 times.
✗ Branch 5 (27→30) not taken.
✗ Branch 6 (175→176) not taken.
✗ Branch 7 (175→178) not taken.
|
2 | m_algo_seq->Add("clas12::FiducialFilter"); |
16 |
5/14✓ Branch 0 (33→34) taken 1 times.
✗ Branch 1 (33→193) not taken.
✓ Branch 2 (34→35) taken 1 times.
✗ Branch 3 (34→187) not taken.
✓ Branch 4 (35→36) taken 1 times.
✗ Branch 5 (35→181) not taken.
✓ Branch 6 (41→42) taken 1 times.
✗ Branch 7 (41→44) not taken.
✓ Branch 8 (46→47) taken 1 times.
✗ Branch 9 (46→49) not taken.
✗ Branch 10 (187→188) not taken.
✗ Branch 11 (187→190) not taken.
✗ Branch 12 (193→194) not taken.
✗ Branch 13 (193→196) not taken.
|
4 | m_algo_seq->SetOption<std::vector<int>>("clas12::EventBuilderFilter", "pids", u_pdg_list); |
17 | 1 | m_algo_seq->Start(banks); | |
18 | |||
19 | // get bank indices | ||
20 |
2/4✓ Branch 0 (51→52) taken 1 times.
✗ Branch 1 (51→197) not taken.
✓ Branch 2 (52→53) taken 1 times.
✗ Branch 3 (52→55) not taken.
|
1 | b_particle = GetBankIndex(banks, "REC::Particle"); |
21 |
2/4✓ Branch 0 (58→59) taken 1 times.
✗ Branch 1 (58→203) not taken.
✓ Branch 2 (59→60) taken 1 times.
✗ Branch 3 (59→62) not taken.
|
1 | b_traj = GetBankIndex(banks, "REC::Traj"); |
22 | |||
23 | // set an output file | ||
24 | 1 | auto output_dir = GetOutputDirectory(); | |
25 |
1/2✓ Branch 0 (65→66) taken 1 times.
✗ Branch 1 (65→80) not taken.
|
1 | if(output_dir) { |
26 |
3/6✓ Branch 0 (66→67) taken 1 times.
✗ Branch 1 (66→259) not taken.
✓ Branch 2 (67→68) taken 1 times.
✗ Branch 3 (67→209) not taken.
✓ Branch 4 (73→74) taken 1 times.
✗ Branch 5 (73→259) not taken.
|
2 | m_output_file_basename = output_dir.value() + "/fiducial"; |
27 |
2/4✓ Branch 0 (74→75) taken 1 times.
✗ Branch 1 (74→217) not taken.
✓ Branch 2 (77→78) taken 1 times.
✗ Branch 3 (77→215) not taken.
|
2 | m_output_file = new TFile(m_output_file_basename + ".root", "RECREATE"); |
28 | } | ||
29 | |||
30 | // define plots | ||
31 |
2/2✓ Branch 0 (154→81) taken 4 times.
✓ Branch 1 (154→155) taken 1 times.
|
5 | for(auto const& pdg : u_pdg_list) { |
32 |
2/4✓ Branch 0 (81→82) taken 4 times.
✗ Branch 1 (81→259) not taken.
✓ Branch 2 (82→83) taken 4 times.
✗ Branch 3 (82→259) not taken.
|
4 | TString particle_name = particle::name.at(particle::PDG(pdg)); |
33 |
3/6✓ Branch 0 (83→84) taken 4 times.
✗ Branch 1 (83→257) not taken.
✓ Branch 2 (84→85) taken 4 times.
✗ Branch 3 (84→257) not taken.
✓ Branch 4 (85→86) taken 4 times.
✗ Branch 5 (85→255) not taken.
|
4 | TString particle_title = particle::title.at(particle::PDG(pdg)); |
34 | |||
35 | TH2D *DC1_before = new TH2D( | ||
36 |
1/2✓ Branch 0 (89→90) taken 4 times.
✗ Branch 1 (89→221) not taken.
|
8 | "DC1_before_"+particle_name, |
37 |
1/2✓ Branch 0 (95→96) taken 4 times.
✗ Branch 1 (95→255) not taken.
|
4 | particle_title + " DC1 w/o fiducial cuts; x [cm]; y [cm]", |
38 | 4 | 100, DC1xleft, DC1xright, | |
39 |
1/2✓ Branch 0 (86→87) taken 4 times.
✗ Branch 1 (86→223) not taken.
|
4 | 100, DC1ybottom, DC1ytop |
40 |
1/2✓ Branch 0 (92→93) taken 4 times.
✗ Branch 1 (92→219) not taken.
|
4 | ); |
41 | TH2D *DC1_after = new TH2D( | ||
42 |
1/2✓ Branch 0 (99→100) taken 4 times.
✗ Branch 1 (99→227) not taken.
|
8 | "DC1_after_"+particle_name, |
43 |
1/2✓ Branch 0 (105→106) taken 4 times.
✗ Branch 1 (105→255) not taken.
|
4 | particle_title + " DC1 w fiducial cuts; x [cm]; y [cm]", |
44 | 4 | 100, DC1xleft, DC1xright, | |
45 |
1/2✓ Branch 0 (96→97) taken 4 times.
✗ Branch 1 (96→229) not taken.
|
4 | 100, DC1ybottom, DC1ytop |
46 |
1/2✓ Branch 0 (102→103) taken 4 times.
✗ Branch 1 (102→225) not taken.
|
4 | ); |
47 | |||
48 | TH2D *DC2_before = new TH2D( | ||
49 |
1/2✓ Branch 0 (109→110) taken 4 times.
✗ Branch 1 (109→233) not taken.
|
8 | "DC2_before_" + particle_name, |
50 |
1/2✓ Branch 0 (115→116) taken 4 times.
✗ Branch 1 (115→255) not taken.
|
4 | particle_title + " DC2 w/o fiducial cuts; x [cm]; y [cm]", |
51 | 4 | 100, DC2xleft, DC2xright, | |
52 |
1/2✓ Branch 0 (106→107) taken 4 times.
✗ Branch 1 (106→235) not taken.
|
4 | 100, DC2ybottom, DC2ytop |
53 |
1/2✓ Branch 0 (112→113) taken 4 times.
✗ Branch 1 (112→231) not taken.
|
4 | ); |
54 | TH2D *DC2_after = new TH2D( | ||
55 |
1/2✓ Branch 0 (119→120) taken 4 times.
✗ Branch 1 (119→239) not taken.
|
8 | "DC2_after_" + particle_name, |
56 |
1/2✓ Branch 0 (125→126) taken 4 times.
✗ Branch 1 (125→255) not taken.
|
4 | particle_title + " DC2 w fiducial cuts; x [cm]; y [cm]", |
57 | 4 | 100, DC2xleft, DC2xright, | |
58 |
1/2✓ Branch 0 (116→117) taken 4 times.
✗ Branch 1 (116→241) not taken.
|
4 | 100, DC2ybottom, DC2ytop |
59 |
1/2✓ Branch 0 (122→123) taken 4 times.
✗ Branch 1 (122→237) not taken.
|
4 | ); |
60 | |||
61 | TH2D *DC3_before = new TH2D( | ||
62 |
1/2✓ Branch 0 (129→130) taken 4 times.
✗ Branch 1 (129→245) not taken.
|
8 | "DC3_before_" + particle_name, |
63 |
1/2✓ Branch 0 (135→136) taken 4 times.
✗ Branch 1 (135→255) not taken.
|
4 | particle_title + " DC3 w/o fiducial cuts; x [cm]; y [cm]", |
64 | 4 | 100, DC3xleft, DC3xright, | |
65 |
1/2✓ Branch 0 (126→127) taken 4 times.
✗ Branch 1 (126→247) not taken.
|
4 | 100, DC3ybottom, DC3ytop |
66 |
1/2✓ Branch 0 (132→133) taken 4 times.
✗ Branch 1 (132→243) not taken.
|
4 | ); |
67 | TH2D *DC3_after = new TH2D( | ||
68 |
1/2✓ Branch 0 (139→140) taken 4 times.
✗ Branch 1 (139→251) not taken.
|
8 | "DC3_after_" + particle_name, |
69 |
1/2✓ Branch 0 (145→146) taken 4 times.
✗ Branch 1 (145→255) not taken.
|
4 | particle_title + " DC3 w fiducial cuts; x [cm]; y [cm]", |
70 | 4 | 100, DC3xleft, DC3xright, | |
71 |
1/2✓ Branch 0 (136→137) taken 4 times.
✗ Branch 1 (136→253) not taken.
|
4 | 100, DC3ybottom, DC3ytop |
72 |
1/2✓ Branch 0 (142→143) taken 4 times.
✗ Branch 1 (142→249) not taken.
|
4 | ); |
73 | |||
74 |
1/2✓ Branch 0 (146→147) taken 4 times.
✗ Branch 1 (146→255) not taken.
|
4 | u_DC1_before.insert({pdg, DC1_before}); |
75 |
1/2✓ Branch 0 (147→148) taken 4 times.
✗ Branch 1 (147→255) not taken.
|
4 | u_DC1_after.insert({pdg, DC1_after}); |
76 |
1/2✓ Branch 0 (148→149) taken 4 times.
✗ Branch 1 (148→255) not taken.
|
4 | u_DC2_before.insert({pdg, DC2_before}); |
77 |
1/2✓ Branch 0 (149→150) taken 4 times.
✗ Branch 1 (149→255) not taken.
|
4 | u_DC2_after.insert({pdg, DC2_after}); |
78 |
1/2✓ Branch 0 (150→151) taken 4 times.
✗ Branch 1 (150→255) not taken.
|
4 | u_DC3_before.insert({pdg, DC3_before}); |
79 | 4 | u_DC3_after.insert({pdg, DC3_after}); | |
80 | 4 | } | |
81 | 1 | } | |
82 | |||
83 | |||
84 | 1000 | void FiducialFilterValidator::Run(hipo::banklist& banks) const | |
85 | { | ||
86 | // get the momenta before | ||
87 |
1/2✓ Branch 0 (3→4) taken 1000 times.
✗ Branch 1 (3→78) not taken.
|
1000 | auto& particle_bank = GetBank(banks, b_particle, "REC::Particle"); |
88 |
1/2✓ Branch 0 (10→11) taken 1000 times.
✗ Branch 1 (10→84) not taken.
|
1000 | auto& trajBank = GetBank(banks, b_traj, "REC::Traj"); |
89 | // get a pindex'd map of the REC::Traj data | ||
90 | 1000 | auto traj_map = FiducialFilter::GetTrajMap(trajBank); | |
91 | |||
92 |
3/4✓ Branch 0 (17→18) taken 1000 times.
✗ Branch 1 (17→90) not taken.
✓ Branch 2 (45→19) taken 6993 times.
✓ Branch 3 (45→46) taken 1000 times.
|
7993 | for(auto const& row : particle_bank.getRowList()){ |
93 | 6993 | auto pid = particle_bank.getInt("pid", row); | |
94 |
6/6✓ Branch 0 (20→21) taken 5349 times.
✓ Branch 1 (20→24) taken 1644 times.
✓ Branch 2 (21→22) taken 4903 times.
✓ Branch 3 (21→24) taken 446 times.
✓ Branch 4 (22→23) taken 4667 times.
✓ Branch 5 (22→24) taken 236 times.
|
7487 | if(pid!=11&&pid!=211&&pid!=-211&&pid!=2212) continue; |
95 |
2/2✓ Branch 0 (33→34) taken 494 times.
✓ Branch 1 (33→35) taken 1832 times.
|
2326 | if (traj_map.find(row) == traj_map.end()) { |
96 | 494 | continue; | |
97 | } | ||
98 |
2/4✓ Branch 0 (35→36) taken 1832 times.
✗ Branch 1 (35→90) not taken.
✓ Branch 2 (36→37) taken 1832 times.
✗ Branch 3 (36→90) not taken.
|
1832 | auto traj_row = traj_map.at(row); |
99 |
1/2✓ Branch 0 (37→38) taken 1832 times.
✗ Branch 1 (37→90) not taken.
|
1832 | u_DC1_before.at(pid)->Fill(traj_row.x1,traj_row.y1); |
100 |
1/2✓ Branch 0 (39→40) taken 1832 times.
✗ Branch 1 (39→90) not taken.
|
1832 | u_DC2_before.at(pid)->Fill(traj_row.x2,traj_row.y2); |
101 |
1/2✓ Branch 0 (41→42) taken 1832 times.
✗ Branch 1 (41→90) not taken.
|
1832 | u_DC3_before.at(pid)->Fill(traj_row.x3,traj_row.y3); |
102 | } | ||
103 | |||
104 | // run the fiducial cuts | ||
105 |
1/2✓ Branch 0 (46→47) taken 1000 times.
✗ Branch 1 (46→90) not taken.
|
1000 | m_algo_seq->Run(banks); |
106 | |||
107 | // fill the plots | ||
108 |
3/4✓ Branch 0 (47→48) taken 1000 times.
✗ Branch 1 (47→90) not taken.
✓ Branch 2 (75→49) taken 1480 times.
✓ Branch 3 (75→76) taken 1000 times.
|
2480 | for(auto const& row : particle_bank.getRowList()) { |
109 | |||
110 | 1480 | auto pid = particle_bank.getInt("pid", row); | |
111 |
5/6✓ Branch 0 (50→51) taken 488 times.
✓ Branch 1 (50→54) taken 992 times.
✓ Branch 2 (51→52) taken 137 times.
✓ Branch 3 (51→54) taken 351 times.
✗ Branch 4 (52→53) not taken.
✓ Branch 5 (52→54) taken 137 times.
|
1480 | if(pid!=11&&pid!=211&&pid!=-211&&pid!=2212) continue; |
112 |
1/2✗ Branch 0 (63→64) not taken.
✓ Branch 1 (63→65) taken 1480 times.
|
1480 | if (traj_map.find(row) == traj_map.end()) { |
113 | ✗ | continue; | |
114 | } | ||
115 |
2/4✓ Branch 0 (65→66) taken 1480 times.
✗ Branch 1 (65→90) not taken.
✓ Branch 2 (66→67) taken 1480 times.
✗ Branch 3 (66→90) not taken.
|
1480 | auto traj_row = traj_map.at(row); |
116 |
1/2✓ Branch 0 (67→68) taken 1480 times.
✗ Branch 1 (67→90) not taken.
|
1480 | u_DC1_after.at(pid)->Fill(traj_row.x1,traj_row.y1); |
117 |
1/2✓ Branch 0 (69→70) taken 1480 times.
✗ Branch 1 (69→90) not taken.
|
1480 | u_DC2_after.at(pid)->Fill(traj_row.x2,traj_row.y2); |
118 |
1/2✓ Branch 0 (71→72) taken 1480 times.
✗ Branch 1 (71→90) not taken.
|
1480 | u_DC3_after.at(pid)->Fill(traj_row.x3,traj_row.y3); |
119 | } | ||
120 | 1000 | } | |
121 | |||
122 | |||
123 | 1 | void FiducialFilterValidator::Stop() | |
124 | { | ||
125 |
1/2✓ Branch 0 (4→49) taken 1 times.
✗ Branch 1 (4→99) not taken.
|
2 | if(GetOutputDirectory()) { |
126 | int n_cols = 2; | ||
127 | int n_rows = 2; | ||
128 |
2/2✓ Branch 0 (49→5) taken 3 times.
✓ Branch 1 (49→94) taken 1 times.
|
4 | for(int r=0;r<3;r++){ |
129 | 3 | TString canv_name = Form("beforecanv%d", r); | |
130 |
1/2✓ Branch 0 (10→11) taken 3 times.
✗ Branch 1 (10→100) not taken.
|
3 | auto canv = new TCanvas(canv_name, canv_name, n_cols * 800, n_rows * 600); |
131 |
1/2✓ Branch 0 (11→12) taken 3 times.
✗ Branch 1 (11→116) not taken.
|
3 | canv->Divide(n_cols, n_rows); |
132 | int pad_num = 0; | ||
133 |
2/2✓ Branch 0 (29→13) taken 12 times.
✓ Branch 1 (29→30) taken 3 times.
|
15 | for(auto const& pdg : u_pdg_list){ |
134 |
1/2✓ Branch 0 (13→14) taken 12 times.
✗ Branch 1 (13→116) not taken.
|
12 | auto pad = canv->GetPad(++pad_num); |
135 |
1/2✓ Branch 0 (14→15) taken 12 times.
✗ Branch 1 (14→116) not taken.
|
12 | pad->cd(); |
136 |
1/2✓ Branch 0 (15→16) taken 12 times.
✗ Branch 1 (15→116) not taken.
|
12 | pad->SetGrid(1, 1); |
137 |
1/2✓ Branch 0 (16→17) taken 12 times.
✗ Branch 1 (16→116) not taken.
|
12 | pad->SetLogz(); |
138 |
1/2✓ Branch 0 (17→18) taken 12 times.
✗ Branch 1 (17→116) not taken.
|
12 | pad->SetLeftMargin(0.12); |
139 |
1/2✓ Branch 0 (18→19) taken 12 times.
✗ Branch 1 (18→116) not taken.
|
12 | pad->SetRightMargin(0.12); |
140 |
1/2✓ Branch 0 (19→20) taken 12 times.
✗ Branch 1 (19→116) not taken.
|
12 | pad->SetBottomMargin(0.12); |
141 |
2/2✓ Branch 0 (20→21) taken 4 times.
✓ Branch 1 (20→23) taken 8 times.
|
12 | if(r==0){ |
142 |
1/2✓ Branch 0 (22→28) taken 4 times.
✗ Branch 1 (22→116) not taken.
|
4 | u_DC1_before.at(pdg)->Draw("colz"); |
143 |
2/2✓ Branch 0 (23→24) taken 4 times.
✓ Branch 1 (23→26) taken 4 times.
|
8 | }else if(r==1){ |
144 |
1/2✓ Branch 0 (25→28) taken 4 times.
✗ Branch 1 (25→116) not taken.
|
4 | u_DC2_before.at(pdg)->Draw("colz"); |
145 | }else{ | ||
146 |
1/2✓ Branch 0 (27→28) taken 4 times.
✗ Branch 1 (27→116) not taken.
|
4 | u_DC3_before.at(pdg)->Draw("colz"); |
147 | } | ||
148 | } | ||
149 |
5/10✓ Branch 0 (31→32) taken 3 times.
✗ Branch 1 (31→110) not taken.
✓ Branch 2 (32→33) taken 3 times.
✗ Branch 3 (32→108) not taken.
✓ Branch 4 (33→34) taken 3 times.
✗ Branch 5 (33→106) not taken.
✓ Branch 6 (34→35) taken 3 times.
✗ Branch 7 (34→104) not taken.
✓ Branch 8 (37→38) taken 3 times.
✗ Branch 9 (37→102) not taken.
|
6 | canv->SaveAs(m_output_file_basename + "_before_DC" + std::to_string(r+1) + ".png"); |
150 | 3 | } | |
151 | |||
152 |
2/2✓ Branch 0 (94→50) taken 3 times.
✓ Branch 1 (94→95) taken 1 times.
|
4 | for(int r=0;r<3;r++){ |
153 | 3 | TString canv_name = Form("aftercanv%d", r); | |
154 |
1/2✓ Branch 0 (55→56) taken 3 times.
✗ Branch 1 (55→118) not taken.
|
3 | auto canv = new TCanvas(canv_name, canv_name, n_cols * 800, n_rows * 600); |
155 |
1/2✓ Branch 0 (56→57) taken 3 times.
✗ Branch 1 (56→134) not taken.
|
3 | canv->Divide(n_cols, n_rows); |
156 | int pad_num = 0; | ||
157 |
2/2✓ Branch 0 (74→58) taken 12 times.
✓ Branch 1 (74→75) taken 3 times.
|
15 | for(auto const& pdg : u_pdg_list){ |
158 |
1/2✓ Branch 0 (58→59) taken 12 times.
✗ Branch 1 (58→134) not taken.
|
12 | auto pad = canv->GetPad(++pad_num); |
159 |
1/2✓ Branch 0 (59→60) taken 12 times.
✗ Branch 1 (59→134) not taken.
|
12 | pad->cd(); |
160 |
1/2✓ Branch 0 (60→61) taken 12 times.
✗ Branch 1 (60→134) not taken.
|
12 | pad->SetGrid(1, 1); |
161 |
1/2✓ Branch 0 (61→62) taken 12 times.
✗ Branch 1 (61→134) not taken.
|
12 | pad->SetLogz(); |
162 |
1/2✓ Branch 0 (62→63) taken 12 times.
✗ Branch 1 (62→134) not taken.
|
12 | pad->SetLeftMargin(0.12); |
163 |
1/2✓ Branch 0 (63→64) taken 12 times.
✗ Branch 1 (63→134) not taken.
|
12 | pad->SetRightMargin(0.12); |
164 |
1/2✓ Branch 0 (64→65) taken 12 times.
✗ Branch 1 (64→134) not taken.
|
12 | pad->SetBottomMargin(0.12); |
165 |
2/2✓ Branch 0 (65→66) taken 4 times.
✓ Branch 1 (65→68) taken 8 times.
|
12 | if(r==0){ |
166 |
1/2✓ Branch 0 (67→73) taken 4 times.
✗ Branch 1 (67→134) not taken.
|
4 | u_DC1_after.at(pdg)->Draw("colz"); |
167 |
2/2✓ Branch 0 (68→69) taken 4 times.
✓ Branch 1 (68→71) taken 4 times.
|
8 | }else if(r==1){ |
168 |
1/2✓ Branch 0 (70→73) taken 4 times.
✗ Branch 1 (70→134) not taken.
|
4 | u_DC2_after.at(pdg)->Draw("colz"); |
169 | }else{ | ||
170 |
1/2✓ Branch 0 (72→73) taken 4 times.
✗ Branch 1 (72→134) not taken.
|
4 | u_DC3_after.at(pdg)->Draw("colz"); |
171 | } | ||
172 | } | ||
173 |
5/10✓ Branch 0 (76→77) taken 3 times.
✗ Branch 1 (76→128) not taken.
✓ Branch 2 (77→78) taken 3 times.
✗ Branch 3 (77→126) not taken.
✓ Branch 4 (78→79) taken 3 times.
✗ Branch 5 (78→124) not taken.
✓ Branch 6 (79→80) taken 3 times.
✗ Branch 7 (79→122) not taken.
✓ Branch 8 (82→83) taken 3 times.
✗ Branch 9 (82→120) not taken.
|
6 | canv->SaveAs(m_output_file_basename + "_after_DC" + std::to_string(r+1) + ".png"); |
174 | 3 | } | |
175 | 1 | m_output_file->Write(); | |
176 | 1 | m_log->Info("Wrote output file {}", m_output_file->GetName()); | |
177 | 1 | m_output_file->Close(); | |
178 | } | ||
179 | 1 | } | |
180 | } | ||
181 |