RawDigitAdder.cxx
Go to the documentation of this file.
1 #ifndef OVERLAY_DATAOVERLAY_RAWDIGITADDER_CXX
2 #define OVERLAY_DATAOVERLAY_RAWDIGITADDER_CXX
3 
4 #include "RawDigitAdder.h"
5 #include <limits>
6 #include <stdexcept>
7 
8 void mix::RawDigitAdder::AddRawDigits( std::vector<short> const& inputVec1,
9  std::vector<short> const& inputVec2,
10  std::vector<short>& outputVec)
11 {
12  CheckVectorSize(inputVec1,inputVec2);
13  outputVec.clear(); outputVec.resize(inputVec1.size());
14  for(size_t i=0; i<inputVec1.size(); i++)
15  AddRawDigit(inputVec1[i]-(short)_ped1,inputVec2[i]-(short)_ped2,outputVec[i]);
16 }
17 
18 void mix::RawDigitAdder::AddRawDigits( std::vector<short> const& inputVec1,
19  std::vector<short>& inputVec2)
20 {
21  CheckVectorSize(inputVec1,inputVec2);
22  for(size_t i=0; i<inputVec1.size(); i++)
23  AddRawDigit(inputVec1[i]-(short)_ped1,inputVec2[i]-(short)_ped2,inputVec2[i]);
24 }
25 
26 void mix::RawDigitAdder::AddRawDigits( std::vector< std::vector<short> > const& inputVecList,
27  std::vector<short>& outputVec)
28 {
29  if(inputVecList.size()==0){
30  if(_throw)
31  throw std::runtime_error("Error in RawDigitAdder::AddRawDigits : Input vector list is empty.");
32  return;
33  }
34  for(auto const& vec : inputVecList)
35  CheckVectorSize(inputVecList[0],vec);
36 
37  outputVec.clear(); outputVec.resize(inputVecList[0].size(),0.0);
38 
39  for(auto const& inputVec : inputVecList)
40  AddRawDigits(inputVec,outputVec);
41 
42 }
43 
44 void mix::RawDigitAdder::CheckVectorSize(std::vector<short> const& vec1,
45  std::vector<short> const& vec2)
46 {
47  if(vec1.size() != vec2.size()){
48  if(_throw)
49  throw std::runtime_error("Error in RawDigitAdder: Failed CheckVectorSize()");
50  return;
51  }
52 }
53 
54 void mix::RawDigitAdder::AddRawDigit(short const& d1, short const& d2, short& d_out)
55 {
56  d_out = d1 + d2;
57  FixOverflow(d_out);
58 }
59 
60 void mix::RawDigitAdder::AddRawDigit(short const& d1, short& d2)
61 {
62  AddRawDigit(d1,d2,d2);
63 }
64 
66 {
67  if(d<0)
69 }
70 
71 
72 void mix::RawDigitAdder::SetPedestalInput(float f, float& _ped)
73 {
74  _ped = f;
75 }
76 
77 #endif
Defintion for a templated base class to add two vectors together, and give an "added" waveform...
struct vector vector
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
void CheckVectorSize(std::vector< short > const &, std::vector< short > const &)
void AddRawDigits(std::vector< short > const &, std::vector< short > const &, std::vector< short > &)
static int max(int a, int b)
virtual void AddRawDigit(short const &, short const &, short &)
void FixOverflow(short &)
void SetPedestalInput(float f, float &_scale)