ra4_stats  0341147a0dc35f80f4e12c6003afb76a38e2ed6e
block_yields.cpp
Go to the documentation of this file.
1 #include <iostream>
2 
3 #include "block_yields.hpp"
4 
5 #include "utilities.hpp"
6 
7 using namespace std;
8 
10  const set<Process> &processes,
11  const Cut &cut,
12  const YieldManager &yields):
13  gps_(block.Bins().size(),
14  block.Bins().size()
15  ? vector<GammaParams>(block.Bins().at(0).size())
16  : vector<GammaParams>(0)){
17  size_t irow = 0;
18  for(const auto &vbin: block.Bins()){
19  size_t icol = 0;
20  for(const auto &bin: vbin){
21  GammaParams &gps = gps_.at(irow).at(icol);
22  gps = GammaParams(0., 0.);
23  for(const auto &process: processes){
24  YieldKey key(bin, process, cut);
25  gps += yields.GetYield(key);
26  }
27  ++icol;
28  }
29  ++irow;
30  }
31 }
32 
33 vector<GammaParams> BlockYields::RowSums() const{
34  vector<GammaParams> sums(gps_.size(), GammaParams(0., 0.));
35  for(size_t irow = 0; irow < gps_.size(); ++irow){
36  for(size_t icol = 0; icol < gps_.at(irow).size(); ++icol){
37  sums.at(irow) += gps_.at(irow).at(icol);
38  }
39  }
40  return sums;
41 }
42 
43 vector<GammaParams> BlockYields::ColSums() const{
44  vector<GammaParams> sums(gps_.size() ? gps_.at(0).size() : 0, GammaParams(0., 0.));
45  for(size_t irow = 0; irow < gps_.size(); ++irow){
46  for(size_t icol = 0; icol < gps_.at(irow).size(); ++icol){
47  sums.at(icol) += gps_.at(irow).at(icol);
48  }
49  }
50  return sums;
51 }
52 
53 size_t BlockYields::MaxRow() const{
54  vector<GammaParams> gps = RowSums();
55  if(gps.size() == 0) return -1;
56  size_t imax = 0;
57  double yield_max = gps.at(0).Yield();
58  for(size_t i = 1; i < gps.size(); ++i){
59  if(gps.at(i).Yield() > yield_max){
60  yield_max = gps.at(i).Yield();
61  imax = i;
62  }
63  }
64  return imax;
65 }
66 
67 size_t BlockYields::MaxCol() const{
68  vector<GammaParams> gps = ColSums();
69  if(gps.size() == 0) return -1;
70  size_t imax = 0;
71  double yield_max = gps.at(0).Yield();
72  for(size_t i = 1; i < gps.size(); ++i){
73  if(gps.at(i).Yield() > yield_max){
74  yield_max = gps.at(i).Yield();
75  imax = i;
76  }
77  }
78  return imax;
79 }
80 
82  GammaParams gps(0., 0.);
83  for(const auto &vbin: gps_){
84  for(const auto &bin: vbin){
85  gps += bin;
86  }
87  }
88  return gps;
89 }
size_t MaxRow() const
Definition: cut.hpp:8
STL namespace.
std::vector< GammaParams > RowSums() const
std::tuple< Bin, Process, Cut > YieldKey
Definition: yield_key.hpp:11
size_t MaxCol() const
GammaParams Total() const
Definition: block.hpp:12
std::vector< std::vector< GammaParams > > gps_
GammaParams GetYield(const YieldKey &key) const
const std::vector< std::vector< Bin > > & Bins() const
Definition: block.cpp:28
BlockYields(const Block &block, const std::set< Process > &processes, const Cut &cut, const YieldManager &yields)
Definition: block_yields.cpp:9
std::vector< GammaParams > ColSums() const