GCC Code Coverage Report


Directory: ./
File: src/iguana/algorithms/clas12/ZVertexFilter/Validator.cc
Date: 2025-05-30 18:32:38
Exec Total Coverage
Lines: 60 60 100.0%
Functions: 3 3 100.0%
Branches: 81 156 51.9%

Line Branch Exec Source
1 #include "Validator.h"
2
3 #include <TCanvas.h>
4 #include <TLegend.h>
5
6 namespace iguana::clas12 {
7
8 REGISTER_IGUANA_VALIDATOR(ZVertexFilterValidator);
9
10 1 void ZVertexFilterValidator::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→125) not taken.
✓ Branch 2 (8→9) taken 1 times.
✗ Branch 3 (8→119) not taken.
✓ Branch 4 (14→15) taken 1 times.
✗ Branch 5 (14→17) not taken.
✗ Branch 6 (125→126) not taken.
✗ Branch 7 (125→128) not taken.
2 m_algo_seq->Add("clas12::ZVertexFilter");
15
5/14
✓ Branch 0 (20→21) taken 1 times.
✗ Branch 1 (20→143) not taken.
✓ Branch 2 (21→22) taken 1 times.
✗ Branch 3 (21→137) not taken.
✓ Branch 4 (22→23) taken 1 times.
✗ Branch 5 (22→131) not taken.
✓ Branch 6 (28→29) taken 1 times.
✗ Branch 7 (28→31) not taken.
✓ Branch 8 (33→34) taken 1 times.
✗ Branch 9 (33→36) not taken.
✗ Branch 10 (137→138) not taken.
✗ Branch 11 (137→140) not taken.
✗ Branch 12 (143→144) not taken.
✗ Branch 13 (143→146) not taken.
4 m_algo_seq->SetOption<std::vector<int>>("clas12::ZVertexFilter", "pids", u_pdgtocut_list);
16
5/14
✓ Branch 0 (37→38) taken 1 times.
✗ Branch 1 (37→159) not taken.
✓ Branch 2 (38→39) taken 1 times.
✗ Branch 3 (38→153) not taken.
✓ Branch 4 (39→40) taken 1 times.
✗ Branch 5 (39→147) not taken.
✓ Branch 6 (45→46) taken 1 times.
✗ Branch 7 (45→48) not taken.
✓ Branch 8 (50→51) taken 1 times.
✗ Branch 9 (50→53) not taken.
✗ Branch 10 (153→154) not taken.
✗ Branch 11 (153→156) not taken.
✗ Branch 12 (159→160) not taken.
✗ Branch 13 (159→162) not taken.
4 m_algo_seq->SetOption<std::vector<double>>("clas12::ZVertexFilter", "cuts", u_cuts_list);
17 1 m_algo_seq->Start(banks);
18
19 // get bank indices
20
2/4
✓ Branch 0 (55→56) taken 1 times.
✗ Branch 1 (55→163) not taken.
✓ Branch 2 (56→57) taken 1 times.
✗ Branch 3 (56→59) not taken.
1 b_particle = GetBankIndex(banks, "REC::Particle");
21
22 // set an output file
23 1 auto output_dir = GetOutputDirectory();
24
1/2
✓ Branch 0 (62→63) taken 1 times.
✗ Branch 1 (62→77) not taken.
1 if(output_dir) {
25
3/6
✓ Branch 0 (63→64) taken 1 times.
✗ Branch 1 (63→204) not taken.
✓ Branch 2 (64→65) taken 1 times.
✗ Branch 3 (64→169) not taken.
✓ Branch 4 (70→71) taken 1 times.
✗ Branch 5 (70→204) not taken.
2 m_output_file_basename = output_dir.value() + "/zvertex_filter";
26
2/4
✓ Branch 0 (71→72) taken 1 times.
✗ Branch 1 (71→177) not taken.
✓ Branch 2 (74→75) taken 1 times.
✗ Branch 3 (74→175) not taken.
2 m_output_file = new TFile(m_output_file_basename + ".root", "RECREATE");
27 }
28
29 // define plots
30
2/2
✓ Branch 0 (116→78) taken 5 times.
✓ Branch 1 (116→117) taken 1 times.
6 for(auto const& pdg : u_pdg_list) {
31 std::vector<TH1D*> zvertexplots;
32
2/6
✓ Branch 0 (78→79) taken 5 times.
✗ Branch 1 (78→200) not taken.
✓ Branch 2 (79→80) taken 5 times.
✗ Branch 3 (79→200) not taken.
✗ Branch 4 (200→201) not taken.
✗ Branch 5 (200→203) not taken.
5 TString particle_name = particle::name.at(particle::PDG(pdg));
33
2/4
✓ Branch 0 (80→81) taken 5 times.
✗ Branch 1 (80→198) not taken.
✓ Branch 2 (81→82) taken 5 times.
✗ Branch 3 (81→198) not taken.
5 TString particle_title = particle::title.at(particle::PDG(pdg));
34
2/2
✓ Branch 0 (103→83) taken 10 times.
✓ Branch 1 (103→104) taken 5 times.
15 for(int i = 0; i < 2; i++) {
35
1/2
✓ Branch 0 (83→84) taken 10 times.
✗ Branch 1 (83→196) not taken.
10 TString beforeafter_name = "before";
36
3/4
✓ Branch 0 (84→85) taken 5 times.
✓ Branch 1 (84→86) taken 5 times.
✓ Branch 2 (85→86) taken 5 times.
✗ Branch 3 (85→190) not taken.
10 if (i == 1){ beforeafter_name = "after";}
37
38
1/2
✓ Branch 0 (96→97) taken 10 times.
✗ Branch 1 (96→179) not taken.
10 zvertexplots.push_back(new TH1D(
39
3/6
✓ Branch 0 (90→91) taken 10 times.
✗ Branch 1 (90→185) not taken.
✓ Branch 2 (91→92) taken 10 times.
✗ Branch 3 (91→183) not taken.
✓ Branch 4 (92→93) taken 10 times.
✗ Branch 5 (92→181) not taken.
20 "zvertexplots_" + particle_name + "_" + beforeafter_name,
40
1/4
✓ Branch 0 (87→88) taken 10 times.
✗ Branch 1 (87→187) not taken.
✗ Branch 2 (187→188) not taken.
✗ Branch 3 (187→189) not taken.
20 particle_title + " Z Vertex ; Z Vertex [cm]",
41
1/2
✓ Branch 0 (95→96) taken 10 times.
✗ Branch 1 (95→179) not taken.
10 200, -40, 40));
42
43 //std::cout<<"Adding plots for "<<pdg<<" "<<beforeafter_name<<std::endl;
44 10 }
45 5 u_zvertexplots.insert({pdg, zvertexplots});
46 5 }
47 1 }
48
49
50 1000 void ZVertexFilterValidator::Run(hipo::banklist& banks) const
51 {
52
1/2
✓ Branch 0 (3→4) taken 1000 times.
✗ Branch 1 (3→41) not taken.
1000 auto& particle_bank = GetBank(banks, b_particle, "REC::Particle");
53
54 // lock the mutex, so we can mutate plots
55 1000 std::scoped_lock<std::mutex> lock(m_mutex);
56
57 // fill the plots before
58
3/4
✓ Branch 0 (10→11) taken 1000 times.
✗ Branch 1 (10→47) not taken.
✓ Branch 2 (23→12) taken 6993 times.
✓ Branch 3 (23→24) taken 1000 times.
7993 for(auto const& row : particle_bank.getRowList()) {
59 6993 double vz = particle_bank.getFloat("vz", row);
60 6993 int pdg = particle_bank.getInt("pid", row);
61 6993 int status = particle_bank.getShort("status", row);
62 auto it = u_zvertexplots.find(pdg);
63 //check if pdg is amongs those that we want to plot
64
4/4
✓ Branch 0 (17→18) taken 4077 times.
✓ Branch 1 (17→22) taken 2916 times.
✓ Branch 2 (18→19) taken 3583 times.
✓ Branch 3 (18→22) taken 494 times.
6993 if (it != u_zvertexplots.end() && abs(status)>=2000) {
65
2/4
✓ Branch 0 (20→21) taken 3583 times.
✗ Branch 1 (20→47) not taken.
✓ Branch 2 (21→22) taken 3583 times.
✗ Branch 3 (21→47) not taken.
3583 u_zvertexplots.at(pdg).at(0)->Fill(vz);
66 }
67 }
68
69 // run the momentum corrections
70
1/2
✓ Branch 0 (24→25) taken 1000 times.
✗ Branch 1 (24→47) not taken.
1000 m_algo_seq->Run(banks);
71
72 // fill the plots after
73
3/4
✓ Branch 0 (25→26) taken 1000 times.
✗ Branch 1 (25→47) not taken.
✓ Branch 2 (38→27) taken 6985 times.
✓ Branch 3 (38→39) taken 1000 times.
7985 for(auto const& row : particle_bank.getRowList()) {
74 6985 double vz = particle_bank.getFloat("vz", row);
75 6985 int pdg = particle_bank.getInt("pid", row);
76 6985 int status = particle_bank.getShort("status", row);
77 auto it = u_zvertexplots.find(pdg);
78 //check if pdg is amongs those that we want to plot
79
4/4
✓ Branch 0 (32→33) taken 4069 times.
✓ Branch 1 (32→37) taken 2916 times.
✓ Branch 2 (33→34) taken 3575 times.
✓ Branch 3 (33→37) taken 494 times.
6985 if (it != u_zvertexplots.end() && abs(status)>=2000) {
80
2/4
✓ Branch 0 (35→36) taken 3575 times.
✗ Branch 1 (35→47) not taken.
✓ Branch 2 (36→37) taken 3575 times.
✗ Branch 3 (36→47) not taken.
3575 u_zvertexplots.at(pdg).at(1)->Fill(vz);
81 }
82 }
83 1000 }
84
85 1 void ZVertexFilterValidator::Stop()
86 {
87
1/2
✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→49) not taken.
2 if(GetOutputDirectory()) {
88
2/2
✓ Branch 0 (44→6) taken 5 times.
✓ Branch 1 (44→45) taken 1 times.
6 for(auto const& [pdg, plots] : u_zvertexplots) {
89 5 TString canv_name = Form("canv%d", pdg);
90
1/2
✓ Branch 0 (11→12) taken 5 times.
✗ Branch 1 (11→50) not taken.
5 auto canv = new TCanvas(canv_name, canv_name, 800, 600);
91
92
2/4
✓ Branch 0 (12→13) taken 5 times.
✗ Branch 1 (12→66) not taken.
✓ Branch 2 (13→14) taken 5 times.
✗ Branch 3 (13→66) not taken.
5 plots.at(0)->SetLineColor(kBlue);
93
2/4
✓ Branch 0 (14→15) taken 5 times.
✗ Branch 1 (14→66) not taken.
✓ Branch 2 (15→16) taken 5 times.
✗ Branch 3 (15→66) not taken.
5 plots.at(0)->SetLineWidth(2);
94
2/4
✓ Branch 0 (16→17) taken 5 times.
✗ Branch 1 (16→66) not taken.
✓ Branch 2 (17→18) taken 5 times.
✗ Branch 3 (17→66) not taken.
5 plots.at(0)->Draw("");
95
96
2/4
✓ Branch 0 (18→19) taken 5 times.
✗ Branch 1 (18→66) not taken.
✓ Branch 2 (19→20) taken 5 times.
✗ Branch 3 (19→66) not taken.
5 plots.at(1)->SetLineColor(kRed);
97
2/4
✓ Branch 0 (20→21) taken 5 times.
✗ Branch 1 (20→66) not taken.
✓ Branch 2 (21→22) taken 5 times.
✗ Branch 3 (21→66) not taken.
5 plots.at(1)->SetLineWidth(2);
98
2/4
✓ Branch 0 (22→23) taken 5 times.
✗ Branch 1 (22→66) not taken.
✓ Branch 2 (23→24) taken 5 times.
✗ Branch 3 (23→66) not taken.
5 plots.at(1)->Draw("same");
99
100
1/2
✓ Branch 0 (24→25) taken 5 times.
✗ Branch 1 (24→66) not taken.
5 canv->Draw();
101
5/10
✓ Branch 0 (26→27) taken 5 times.
✗ Branch 1 (26→60) not taken.
✓ Branch 2 (27→28) taken 5 times.
✗ Branch 3 (27→58) not taken.
✓ Branch 4 (28→29) taken 5 times.
✗ Branch 5 (28→56) not taken.
✓ Branch 6 (29→30) taken 5 times.
✗ Branch 7 (29→54) not taken.
✓ Branch 8 (32→33) taken 5 times.
✗ Branch 9 (32→52) not taken.
10 canv->SaveAs(m_output_file_basename + "_" + std::to_string(pdg) + ".png");
102 5 }
103 1 m_output_file->Write();
104 1 m_log->Info("Wrote output file {}", m_output_file->GetName());
105 1 m_output_file->Close();
106 }
107 1 }
108
109 }
110