Jpp  pmt_effective_area_update
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | List of all members
JTestIdentical_t Class Reference

Implementation test that verify if two histograms are the same. More...

#include <JTestIdentical_t.hh>

Inheritance diagram for JTestIdentical_t:
JTestIdentical_1D JTestIdentical_2D JTestIdentical_3D

Public Member Functions

 JTestIdentical_t ()
 Default constructor. More...
 
template<class T >
JTestResult JIdenticalTest (T *h1, T *h2, double tolerance, std::string testName, std::string parameterName)
 Bin-by-Bin test of two histograms, that verifies whether the histograms are the same. More...
 

Detailed Description

Implementation test that verify if two histograms are the same.

Author
rgruiz

Definition at line 15 of file JTestIdentical_t.hh.

Constructor & Destructor Documentation

JTestIdentical_t::JTestIdentical_t ( )
inline

Default constructor.

Definition at line 22 of file JTestIdentical_t.hh.

22 {}

Member Function Documentation

template<class T >
JTestResult JTestIdentical_t::JIdenticalTest ( T h1,
T h2,
double  tolerance,
std::string  testName,
std::string  parameterName 
)
inline

Bin-by-Bin test of two histograms, that verifies whether the histograms are the same.


For each bin, the test calculates the difference, and compares it with a tolerance passed as an argument.
The test is passed if the difference is smaller than the tolerance for every bin.
The template parameter can be TH1X, TH2X or TH3X.

Parameters
h1First object
h2Second object
tolerancetolerance value for the bin-by-bin differences
parameterNameName of the parameter used to test the histograms
testNameName of the test used to compare the histograms
Returns
Test result.

Definition at line 39 of file JTestIdentical_t.hh.

39  {
40 
41  using namespace std;
42  using namespace JPP;
43 
44  if(h1 -> GetNbinsX() != h2 -> GetNbinsX() || h1 -> GetNbinsY() != h2 -> GetNbinsY() || h1 -> GetNbinsZ() != h2 -> GetNbinsZ())
45  ERROR("Histograms with different bining. The objects: " << h1 -> GetName() << " can not be compared." << endl);
46 
47  T* h3 = (T*)h1->Clone(h1->GetName()==h2->GetName() ?
48  MAKE_CSTRING(to_string(h1->GetName())) :
49  MAKE_CSTRING(to_string(h1->GetName()) + "_VS_" + to_string(h2->GetName())));
50 
51  h3->Add(h2,-1);
52 
53  bool passed;
54 
55  double maxDifference = 0.0;
56 
57  for (int i=0 ; i < h1->GetNbinsX() ; ++i){
58  for (int j=0 ; j< h1->GetNbinsY() ; ++j){
59  for (int k=0 ; k< h1->GetNbinsY() ; ++k){
60 
61  double d = h1->GetBinContent(i+1,j+1,k+1) - h2->GetBinContent(i+1,j+1,k+1);
62 
63  if (fabs(d) > maxDifference)
64  maxDifference = fabs(d);
65  if (fabs(d) > tolerance)
66  passed = false;
67  }
68  }
69  }
70 
71  JResultTitle title(testName, parameterName, passed , maxDifference);
72 
73  h3->SetTitle(title.getTitle().c_str());
74 
75  JTestResult r (testName,
76  string (h1->GetDirectory()->GetPath()).append(h1->GetName()),
77  string (h2->GetDirectory()->GetPath()).append(h2->GetName()),
78  h1->GetDirectory()->GetFile()->GetName(),
79  h2->GetDirectory()->GetFile()->GetName(),
80  parameterName, maxDifference, tolerance, h3, passed);
81 
82  return r;
83  };
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
Class dedicated to standardize the title of the graphical objects produced by the JTest_t() derived c...
Definition: JTest_t.hh:22
#define MAKE_CSTRING(A)
Make C-string.
Definition: JPrint.hh:151
then for HISTOGRAM in h0 h1
Definition: JMatrixNZ.sh:71
data_type r[M+1]
Definition: JPolint.hh:742
Structure containing the result of the test.
Definition: JTest_t.hh:164
do set_variable OUTPUT_DIRECTORY $WORKDIR T
#define ERROR(A)
Definition: JMessage.hh:66
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JMuonPath.sh:47
std::string to_string(const T &value)
Convert value to string.
int j
Definition: JPolint.hh:666

The documentation for this class was generated from the following file: