WCSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WCSimRootTools.cc
Go to the documentation of this file.
1 #include "WCSimRootTools.hh"
2 
3 #include "TMath.h"
4 #include "TString.h"
5 
6 using std::cout;
7 using std::cerr;
8 using std::endl;
9 using std::vector;
10 
11 
12 #ifndef VERBOSE_COMPARISON
13 //#define VERBOSE_COMPARISON
14 #endif
15 const double kASmallNum = 1E-6;
16 
17 /*
18 template <typename T> bool ComparisonPassed(const T val1, const T val2, const char * callerclass, const char * callerfunc, const char * tag)
19 {
20  if(TMath::Abs(val1 - val2) > kASmallNum) {
21  cerr << callerclass << "::" << callerfunc << " " << tag << " not equal: " << val1 << ", " << val2 << " diff " << val1 - val2 << endl;
22  return false;
23  }
24  else {
25 #ifdef VERBOSE_COMPARISON
26  cout << callerclass << "::" << callerfunc << " " << tag << " equal: " << val1 << ", " << val2 << endl;
27 #endif
28  return true;
29  }
30 }
31 
32 template <typename T> bool ComparisonPassedVec(const vector<T> & val1, const vector<T> & val2, const char * callerclass, const char * callerfunc, const char * tag)
33 {
34  bool failed = false;
35  if(val1.size() != val2.size()) {
36  cerr << callerclass << "::" << callerfunc << " " << tag << " have unequal sizes: " << val1.size() << ", " << val2.size() << endl;
37  failed = true;
38  }
39  const int n = TMath::Min(val1.size(), val2.size());
40  for(int i = 0; i < n; i++) {
41  failed = (!ComparisonPassed(val1[i], val2[i], callerclass, callerfunc, TString::Format("%s[%d]", tag, i)));
42  }
43  return !failed;
44 }
45 */
46 
47 bool ComparisonPassed(int val1, int val2, const char * callerclass, const char * callerfunc, const char * tag)
48 {
49  if(val1 - val2) {
50  cerr << "INT" << callerclass << "::" << callerfunc << " " << tag << " not equal: " << val1 << ", " << val2 << " diff " << val1 - val2 << endl;
51  return false;
52  }
53  else {
54 #ifdef VERBOSE_COMPARISON
55  cout << callerclass << "::" << callerfunc << " " << tag << " equal: " << val1 << ", " << val2 << endl;
56 #endif
57  return true;
58  }
59 }
60 
61 bool ComparisonPassed(long val1, long val2, const char * callerclass, const char * callerfunc, const char * tag)
62 {
63  if(val1 - val2) {
64  cerr << "INT" << callerclass << "::" << callerfunc << " " << tag << " not equal: " << val1 << ", " << val2 << " diff " << val1 - val2 << endl;
65  return false;
66  }
67  else {
68 #ifdef VERBOSE_COMPARISON
69  cout << callerclass << "::" << callerfunc << " " << tag << " equal: " << val1 << ", " << val2 << endl;
70 #endif
71  return true;
72  }
73 }
74 
75 bool ComparisonPassed(float val1, float val2, const char * callerclass, const char * callerfunc, const char * tag)
76 {
77  if(TMath::Abs(val1 - val2) > kASmallNum) {
78  cerr << "FLOAT" << callerclass << "::" << callerfunc << " " << tag << " not equal: " << val1 << ", " << val2 << " diff " << val1 - val2 << endl;
79  return false;
80  }
81  else {
82 #ifdef VERBOSE_COMPARISON
83  cout << callerclass << "::" << callerfunc << " " << tag << " equal: " << val1 << ", " << val2 << endl;
84 #endif
85  return true;
86  }
87 }
88 
89 bool ComparisonPassed(double val1, double val2, const char * callerclass, const char * callerfunc, const char * tag)
90 {
91  if(TMath::Abs(val1 - val2) > kASmallNum) {
92  cerr << "DOUBLE" << callerclass << "::" << callerfunc << " " << tag << " not equal: " << val1 << ", " << val2 << " diff " << val1 - val2 << endl;
93  return false;
94  }
95  else {
96 #ifdef VERBOSE_COMPARISON
97  cout << callerclass << "::" << callerfunc << " " << tag << " equal: " << val1 << ", " << val2 << endl;
98 #endif
99  return true;
100  }
101 }
102 
103 bool ComparisonPassedVec(const vector<int> & val1, const vector<int> & val2, const char * callerclass, const char * callerfunc, const char * tag)
104 {
105  bool failed = false;
106  if(val1.size() != val2.size()) {
107  cerr << callerclass << "::" << callerfunc << " " << tag << " have unequal sizes: " << val1.size() << ", " << val2.size() << endl;
108  failed = true;
109  }
110  const int n = TMath::Min(val1.size(), val2.size());
111  for(int i = 0; i < n; i++) {
112  failed = (!ComparisonPassed(val1[i], val2[i], callerclass, callerfunc, TString::Format("%s[%d]", tag, i)));
113  }
114  return !failed;
115 }
116 
117 bool ComparisonPassedVec(const vector<long> & val1, const vector<long> & val2, const char * callerclass, const char * callerfunc, const char * tag)
118 {
119  bool failed = false;
120  if(val1.size() != val2.size()) {
121  cerr << callerclass << "::" << callerfunc << " " << tag << " have unequal sizes: " << val1.size() << ", " << val2.size() << endl;
122  failed = true;
123  }
124  const int n = TMath::Min(val1.size(), val2.size());
125  for(int i = 0; i < n; i++) {
126  failed = (!ComparisonPassed(val1[i], val2[i], callerclass, callerfunc, TString::Format("%s[%d]", tag, i)));
127  }
128  return !failed;
129 }
130 
131 bool ComparisonPassedVec(const vector<float> & val1, const vector<float> & val2, const char * callerclass, const char * callerfunc, const char * tag)
132 {
133  bool failed = false;
134  if(val1.size() != val2.size()) {
135  cerr << callerclass << "::" << callerfunc << " " << tag << " have unequal sizes: " << val1.size() << ", " << val2.size() << endl;
136  failed = true;
137  }
138  const int n = TMath::Min(val1.size(), val2.size());
139  for(int i = 0; i < n; i++) {
140  failed = (!ComparisonPassed(val1[i], val2[i], callerclass, callerfunc, TString::Format("%s[%d]", tag, i)));
141  }
142  return !failed;
143 }
144 
145 bool ComparisonPassedVec(const vector<double> & val1, const vector<double> & val2, const char * callerclass, const char * callerfunc, const char * tag)
146 {
147  bool failed = false;
148  if(val1.size() != val2.size()) {
149  cerr << callerclass << "::" << callerfunc << " " << tag << " have unequal sizes: " << val1.size() << ", " << val2.size() << endl;
150  failed = true;
151  }
152  const int n = TMath::Min(val1.size(), val2.size());
153  for(int i = 0; i < n; i++) {
154  failed = (!ComparisonPassed(val1[i], val2[i], callerclass, callerfunc, TString::Format("%s[%d]", tag, i)));
155  }
156  return !failed;
157 }
bool ComparisonPassedVec(const vector< int > &val1, const vector< int > &val2, const char *callerclass, const char *callerfunc, const char *tag)
bool ComparisonPassed(int val1, int val2, const char *callerclass, const char *callerfunc, const char *tag)
const double kASmallNum