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