| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "Validator.h" | ||
| 2 | |||
| 3 | #include <TProfile.h> | ||
| 4 | |||
| 5 | namespace iguana::clas12 { | ||
| 6 | |||
| 7 | REGISTER_IGUANA_VALIDATOR(SectorFinderValidator); | ||
| 8 | |||
| 9 | 1 | void SectorFinderValidator::Start(hipo::banklist& banks) | |
| 10 | { | ||
| 11 | // define the algorithm sequence | ||
| 12 | 2 | m_algo_seq = std::make_unique<AlgorithmSequence>(); | |
| 13 |
3/8✓ Branch 7 → 8 taken 1 time.
✗ Branch 7 → 181 not taken.
✓ Branch 8 → 9 taken 1 time.
✗ Branch 8 → 175 not taken.
✓ Branch 14 → 15 taken 1 time.
✗ Branch 14 → 17 not taken.
✗ Branch 181 → 182 not taken.
✗ Branch 181 → 184 not taken.
|
2 | m_algo_seq->Add("clas12::EventBuilderFilter"); |
| 14 |
3/8✓ Branch 20 → 21 taken 1 time.
✗ Branch 20 → 193 not taken.
✓ Branch 21 → 22 taken 1 time.
✗ Branch 21 → 187 not taken.
✓ Branch 27 → 28 taken 1 time.
✗ Branch 27 → 30 not taken.
✗ Branch 193 → 194 not taken.
✗ Branch 193 → 196 not taken.
|
2 | m_algo_seq->Add("clas12::SectorFinder"); |
| 15 |
5/14✓ Branch 33 → 34 taken 1 time.
✗ Branch 33 → 211 not taken.
✓ Branch 34 → 35 taken 1 time.
✗ Branch 34 → 205 not taken.
✓ Branch 35 → 36 taken 1 time.
✗ Branch 35 → 199 not taken.
✓ Branch 41 → 42 taken 1 time.
✗ Branch 41 → 44 not taken.
✓ Branch 46 → 47 taken 1 time.
✗ Branch 46 → 49 not taken.
✗ Branch 205 → 206 not taken.
✗ Branch 205 → 208 not taken.
✗ Branch 211 → 212 not taken.
✗ Branch 211 → 214 not taken.
|
4 | m_algo_seq->SetOption<std::vector<int>>("clas12::EventBuilderFilter", "pids", u_pdg_list); |
| 16 |
5/14✓ Branch 50 → 51 taken 1 time.
✗ Branch 50 → 227 not taken.
✓ Branch 51 → 52 taken 1 time.
✗ Branch 51 → 221 not taken.
✓ Branch 52 → 53 taken 1 time.
✗ Branch 52 → 215 not taken.
✓ Branch 58 → 59 taken 1 time.
✗ Branch 58 → 61 not taken.
✓ Branch 63 → 64 taken 1 time.
✗ Branch 63 → 66 not taken.
✗ Branch 221 → 222 not taken.
✗ Branch 221 → 224 not taken.
✗ Branch 227 → 228 not taken.
✗ Branch 227 → 230 not taken.
|
4 | m_algo_seq->SetOption<std::string>("clas12::SectorFinder", "bank_charged", "REC::Track"); |
| 17 |
5/14✓ Branch 69 → 70 taken 1 time.
✗ Branch 69 → 245 not taken.
✓ Branch 70 → 71 taken 1 time.
✗ Branch 70 → 239 not taken.
✓ Branch 71 → 72 taken 1 time.
✗ Branch 71 → 233 not taken.
✓ Branch 77 → 78 taken 1 time.
✗ Branch 77 → 80 not taken.
✓ Branch 82 → 83 taken 1 time.
✗ Branch 82 → 85 not taken.
✗ Branch 239 → 240 not taken.
✗ Branch 239 → 242 not taken.
✗ Branch 245 → 246 not taken.
✗ Branch 245 → 248 not taken.
|
4 | m_algo_seq->SetOption<std::string>("clas12::SectorFinder", "bank_uncharged", "default"); |
| 18 | 1 | m_algo_seq->Start(banks); | |
| 19 | |||
| 20 | |||
| 21 |
2/4✓ Branch 89 → 90 taken 1 time.
✗ Branch 89 → 251 not taken.
✓ Branch 90 → 91 taken 1 time.
✗ Branch 90 → 93 not taken.
|
1 | b_particle = GetBankIndex(banks, "REC::Particle"); |
| 22 |
2/4✓ Branch 96 → 97 taken 1 time.
✗ Branch 96 → 257 not taken.
✗ Branch 97 → 98 not taken.
✓ Branch 97 → 100 taken 1 time.
|
1 | b_cal = GetBankIndex(banks, "REC::Calorimeter"); |
| 23 |
2/4✓ Branch 103 → 104 taken 1 time.
✗ Branch 103 → 263 not taken.
✗ Branch 104 → 105 not taken.
✓ Branch 104 → 107 taken 1 time.
|
1 | b_sector = GetBankIndex(banks, "REC::Particle::Sector"); |
| 24 | |||
| 25 | // set an output file | ||
| 26 | 1 | auto output_dir = GetOutputDirectory(); | |
| 27 |
1/2✓ Branch 110 → 111 taken 1 time.
✗ Branch 110 → 125 not taken.
|
1 | if(output_dir) { |
| 28 |
3/6✓ Branch 111 → 112 taken 1 time.
✗ Branch 111 → 312 not taken.
✓ Branch 112 → 113 taken 1 time.
✗ Branch 112 → 269 not taken.
✓ Branch 118 → 119 taken 1 time.
✗ Branch 118 → 312 not taken.
|
2 | m_output_file_basename = output_dir.value() + "/sector_finder"; |
| 29 |
2/4✓ Branch 119 → 120 taken 1 time.
✗ Branch 119 → 277 not taken.
✓ Branch 122 → 123 taken 1 time.
✗ Branch 122 → 275 not taken.
|
2 | m_output_file = new TFile(m_output_file_basename + ".root", "RECREATE"); |
| 30 | } | ||
| 31 | |||
| 32 | // define plots | ||
| 33 |
2/2✓ Branch 170 → 126 taken 2 times.
✓ Branch 170 → 171 taken 1 time.
|
3 | for(auto const& pdg : u_pdg_list) { |
| 34 | std::vector<TH2D*> YvsX; | ||
| 35 |
2/6✓ Branch 126 → 127 taken 2 times.
✗ Branch 126 → 306 not taken.
✓ Branch 127 → 128 taken 2 times.
✗ Branch 127 → 306 not taken.
✗ Branch 306 → 307 not taken.
✗ Branch 306 → 309 not taken.
|
2 | TString particle_name = particle::name.at(particle::PDG(pdg)); |
| 36 |
2/4✓ Branch 128 → 129 taken 2 times.
✗ Branch 128 → 304 not taken.
✓ Branch 129 → 130 taken 2 times.
✗ Branch 129 → 304 not taken.
|
2 | TString particle_title = particle::title.at(particle::PDG(pdg)); |
| 37 |
2/2✓ Branch 157 → 131 taken 12 times.
✓ Branch 157 → 158 taken 2 times.
|
14 | for(int sec = 1; sec <= 6; sec++) { |
| 38 |
2/4✓ Branch 131 → 132 taken 12 times.
✗ Branch 131 → 302 not taken.
✓ Branch 132 → 133 taken 12 times.
✗ Branch 132 → 302 not taken.
|
12 | TString sector_name = Form("sec%d", sec); |
| 39 |
2/4✓ Branch 133 → 134 taken 12 times.
✗ Branch 133 → 296 not taken.
✓ Branch 134 → 135 taken 12 times.
✗ Branch 134 → 296 not taken.
|
12 | TString sector_title = Form("sector %d", sec); |
| 40 |
1/2✓ Branch 147 → 148 taken 12 times.
✗ Branch 147 → 279 not taken.
|
12 | YvsX.push_back(new TH2D( |
| 41 |
3/6✓ Branch 141 → 142 taken 12 times.
✗ Branch 141 → 285 not taken.
✓ Branch 142 → 143 taken 12 times.
✗ Branch 142 → 283 not taken.
✓ Branch 143 → 144 taken 12 times.
✗ Branch 143 → 281 not taken.
|
24 | "YvsX_" + particle_name + "_" + sector_name, |
| 42 |
3/8✓ Branch 136 → 137 taken 12 times.
✗ Branch 136 → 291 not taken.
✓ Branch 137 → 138 taken 12 times.
✗ Branch 137 → 289 not taken.
✓ Branch 138 → 139 taken 12 times.
✗ Branch 138 → 287 not taken.
✗ Branch 291 → 292 not taken.
✗ Branch 291 → 293 not taken.
|
24 | particle_title + " Calorimeter Hit Position, " + sector_title + ";X [cm];Y [cm]", |
| 43 | 50, -500, 500, | ||
| 44 |
1/2✓ Branch 146 → 147 taken 12 times.
✗ Branch 146 → 279 not taken.
|
12 | 50, -500, 500)); |
| 45 | 12 | } | |
| 46 | 2 | u_YvsX.insert({pdg, YvsX}); | |
| 47 | 2 | } | |
| 48 | 1 | u_IsInFD = new TH1D( | |
| 49 | "IsInFD", | ||
| 50 | "e^{-} with #theta>6.5^{o} Sector; e^{-} Sector", | ||
| 51 |
1/2✓ Branch 172 → 173 taken 1 time.
✗ Branch 172 → 310 not taken.
|
1 | 7, -0.5, 6.5); |
| 52 | 1 | } | |
| 53 | |||
| 54 | 1000 | bool SectorFinderValidator::Run(hipo::banklist& banks) const | |
| 55 | { | ||
| 56 | |||
| 57 |
1/2✓ Branch 3 → 4 taken 1000 times.
✗ Branch 3 → 58 not taken.
|
1000 | auto& particle_bank = GetBank(banks, b_particle, "REC::Particle"); |
| 58 |
2/4✓ Branch 9 → 10 taken 1000 times.
✗ Branch 9 → 70 not taken.
✓ Branch 10 → 11 taken 1000 times.
✗ Branch 10 → 64 not taken.
|
1000 | auto& sector_bank = GetBank(banks, b_sector, "REC::Particle::Sector"); |
| 59 |
2/4✓ Branch 16 → 17 taken 1000 times.
✗ Branch 16 → 77 not taken.
✓ Branch 17 → 18 taken 1000 times.
✗ Branch 17 → 71 not taken.
|
2000 | auto& cal_bank = GetBank(banks, b_cal, "REC::Calorimeter"); |
| 60 | |||
| 61 | |||
| 62 | 1000 | m_algo_seq->Run(banks); | |
| 63 | |||
| 64 | // lock the mutex, so we can mutate plots | ||
| 65 | 1000 | std::scoped_lock<std::mutex> lock(m_mutex); | |
| 66 | // fill the plots | ||
| 67 |
3/4✓ Branch 25 → 26 taken 1000 times.
✗ Branch 25 → 78 not taken.
✓ Branch 55 → 27 taken 2478 times.
✓ Branch 55 → 56 taken 1000 times.
|
3478 | for(auto const& row : particle_bank.getRowList()) { |
| 68 | |||
| 69 | 2478 | auto pdg = particle_bank.getInt("pid", row); | |
| 70 | 2478 | auto sector = sector_bank.getInt("sector", row); | |
| 71 | |||
| 72 | double x = 0, y = 0; | ||
| 73 |
3/4✓ Branch 29 → 30 taken 2478 times.
✗ Branch 29 → 78 not taken.
✓ Branch 37 → 31 taken 18264 times.
✓ Branch 37 → 38 taken 2478 times.
|
20742 | for(auto const& rowcal : cal_bank.getRowList()) { |
| 74 |
2/2✓ Branch 32 → 33 taken 2509 times.
✓ Branch 32 → 36 taken 15755 times.
|
18264 | if(cal_bank.getShort("pindex", rowcal) == row) { |
| 75 | 2509 | x = cal_bank.getFloat("x", rowcal); | |
| 76 | 2509 | y = cal_bank.getFloat("y", rowcal); | |
| 77 | } | ||
| 78 | } | ||
| 79 | |||
| 80 |
2/2✓ Branch 38 → 39 taken 639 times.
✓ Branch 38 → 47 taken 1839 times.
|
2478 | if(pdg == 11) { |
| 81 | 639 | double Px = particle_bank.getFloat("px", row); | |
| 82 | 639 | double Py = particle_bank.getFloat("py", row); | |
| 83 | 639 | double Pz = particle_bank.getFloat("pz", row); | |
| 84 | 639 | double P = sqrt(Px * Px + Py * Py + Pz * Pz); | |
| 85 | 639 | double Theta = acos(Pz / P) * 180. / M_PI; | |
| 86 | // electrons are in FT or FD | ||
| 87 | // sector should always be 1 if theta is larger than 5.5 degrees | ||
| 88 |
2/2✓ Branch 42 → 43 taken 149 times.
✓ Branch 42 → 47 taken 490 times.
|
639 | if(Theta > 6.5) { |
| 89 |
1/2✓ Branch 43 → 44 taken 149 times.
✗ Branch 43 → 78 not taken.
|
149 | u_IsInFD->Fill(sector); |
| 90 |
1/2✗ Branch 44 → 45 not taken.
✓ Branch 44 → 47 taken 149 times.
|
149 | if(sector == 0) { |
| 91 | ✗ | m_log->Trace("e' with theta={} and sector==0, this should not happen", Theta); | |
| 92 | } | ||
| 93 | } | ||
| 94 | } | ||
| 95 | |||
| 96 | // skip central particle, or unknown sector | ||
| 97 |
2/2✓ Branch 47 → 48 taken 827 times.
✓ Branch 47 → 49 taken 1651 times.
|
2478 | if(!IsValidSector(sector)) |
| 98 | 827 | continue; | |
| 99 |
2/4✓ Branch 49 → 50 taken 1651 times.
✗ Branch 49 → 78 not taken.
✓ Branch 50 → 51 taken 1651 times.
✗ Branch 50 → 78 not taken.
|
1651 | m_log->Trace("Filling SectorFinder Validator, pdg {} sector {} pindex {}", pdg, sector, row); |
| 100 |
2/4✓ Branch 51 → 52 taken 1651 times.
✗ Branch 51 → 78 not taken.
✓ Branch 52 → 53 taken 1651 times.
✗ Branch 52 → 78 not taken.
|
1651 | u_YvsX.at(pdg).at(sector - 1)->Fill(x, y); |
| 101 | } | ||
| 102 | |||
| 103 | 1000 | return true; | |
| 104 | } | ||
| 105 | |||
| 106 | |||
| 107 | 1 | void SectorFinderValidator::Stop() | |
| 108 | { | ||
| 109 |
1/2✓ Branch 4 → 5 taken 1 time.
✗ Branch 4 → 55 not taken.
|
2 | if(GetOutputDirectory()) { |
| 110 |
2/2✓ Branch 42 → 6 taken 2 times.
✓ Branch 42 → 43 taken 1 time.
|
3 | for(auto const& [pdg, plots] : u_YvsX) { |
| 111 | int n_cols = 3; | ||
| 112 | int n_rows = 2; | ||
| 113 | 2 | TString canv_name = Form("canv%d", pdg); | |
| 114 |
1/2✓ Branch 11 → 12 taken 2 times.
✗ Branch 11 → 56 not taken.
|
2 | auto canv = new TCanvas(canv_name, canv_name, n_cols * 800, n_rows * 600); |
| 115 |
1/2✓ Branch 12 → 13 taken 2 times.
✗ Branch 12 → 72 not taken.
|
2 | canv->Divide(n_cols, n_rows); |
| 116 | int pad_num = 0; | ||
| 117 |
2/2✓ Branch 22 → 14 taken 12 times.
✓ Branch 22 → 23 taken 2 times.
|
14 | for(auto const& plot : plots) { |
| 118 |
1/2✓ Branch 14 → 15 taken 12 times.
✗ Branch 14 → 72 not taken.
|
12 | auto pad = canv->GetPad(++pad_num); |
| 119 |
1/2✓ Branch 15 → 16 taken 12 times.
✗ Branch 15 → 72 not taken.
|
12 | pad->cd(); |
| 120 |
1/2✓ Branch 16 → 17 taken 12 times.
✗ Branch 16 → 72 not taken.
|
12 | pad->SetGrid(1, 1); |
| 121 |
1/2✓ Branch 17 → 18 taken 12 times.
✗ Branch 17 → 72 not taken.
|
12 | pad->SetLeftMargin(0.12); |
| 122 |
1/2✓ Branch 18 → 19 taken 12 times.
✗ Branch 18 → 72 not taken.
|
12 | pad->SetRightMargin(0.12); |
| 123 |
1/2✓ Branch 19 → 20 taken 12 times.
✗ Branch 19 → 72 not taken.
|
12 | pad->SetBottomMargin(0.12); |
| 124 |
1/2✓ Branch 20 → 21 taken 12 times.
✗ Branch 20 → 72 not taken.
|
12 | plot->Draw("colz"); |
| 125 | } | ||
| 126 |
5/10✓ Branch 24 → 25 taken 2 times.
✗ Branch 24 → 66 not taken.
✓ Branch 25 → 26 taken 2 times.
✗ Branch 25 → 64 not taken.
✓ Branch 26 → 27 taken 2 times.
✗ Branch 26 → 62 not taken.
✓ Branch 27 → 28 taken 2 times.
✗ Branch 27 → 60 not taken.
✓ Branch 30 → 31 taken 2 times.
✗ Branch 30 → 58 not taken.
|
4 | canv->SaveAs(m_output_file_basename + "_" + std::to_string(pdg) + ".png"); |
| 127 | 2 | } | |
| 128 | |||
| 129 |
1/2✓ Branch 44 → 45 taken 1 time.
✗ Branch 44 → 74 not taken.
|
1 | auto canv1D = new TCanvas("1D canvas", "1D canvas", 800, 600); |
| 130 | 1 | u_IsInFD->Draw(); | |
| 131 |
1/2✓ Branch 49 → 50 taken 1 time.
✗ Branch 49 → 76 not taken.
|
2 | canv1D->SaveAs(m_output_file_basename + "_elIsInFD.png"); |
| 132 | |||
| 133 | 1 | m_output_file->Write(); | |
| 134 | 1 | m_log->Info("Wrote output file {}", m_output_file->GetName()); | |
| 135 | 1 | m_output_file->Close(); | |
| 136 | } | ||
| 137 | 1 | } | |
| 138 | |||
| 139 | } | ||
| 140 |