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 |