Jpp  16.0.1
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
JCOMPAREHISTOGRAMS::JTestIdentical_t Class Reference

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

#include <JTestIdentical_t.hh>

Inheritance diagram for JCOMPAREHISTOGRAMS::JTestIdentical_t:
JCOMPAREHISTOGRAMS::JTestIdentical_1D JCOMPAREHISTOGRAMS::JTestIdentical_2D JCOMPAREHISTOGRAMS::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.

Definition at line 21 of file JTestIdentical_t.hh.

Constructor & Destructor Documentation

JCOMPAREHISTOGRAMS::JTestIdentical_t::JTestIdentical_t ( )
inline

Default constructor.

Definition at line 28 of file JTestIdentical_t.hh.

28 {}

Member Function Documentation

template<class T >
JTestResult JCOMPAREHISTOGRAMS::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 45 of file JTestIdentical_t.hh.

45  {
46 
47  using namespace std;
48  using namespace JPP;
49 
50  if(h1 -> GetNbinsX() != h2 -> GetNbinsX() || h1 -> GetNbinsY() != h2 -> GetNbinsY() || h1 -> GetNbinsZ() != h2 -> GetNbinsZ())
51  ERROR("Histograms with different bining. The objects: " << h1 -> GetName() << " can not be compared." << endl);
52 
53  T* h3 = (T*)h1->Clone(h1->GetName()==h2->GetName() ?
54  MAKE_CSTRING(to_string(h1->GetName())) :
55  MAKE_CSTRING(to_string(h1->GetName()) + "_VS_" + to_string(h2->GetName())));
56 
57  h3->Add(h2,-1);
58 
59  bool passed;
60 
61  double maxDifference = 0.0;
62 
63  for (int i=0 ; i < h1->GetNbinsX() ; ++i){
64  for (int j=0 ; j< h1->GetNbinsY() ; ++j){
65  for (int k=0 ; k< h1->GetNbinsZ() ; ++k){
66 
67  double d = h1->GetBinContent(i+1,j+1,k+1) - h2->GetBinContent(i+1,j+1,k+1);
68 
69  if (fabs(d) > maxDifference)
70  maxDifference = fabs(d);
71  if (fabs(d) > tolerance)
72  passed = false;
73  }
74  }
75  }
76 
77  JResultTitle title(testName, parameterName, passed , maxDifference);
78 
79  h3->SetTitle(title.getTitle().c_str());
80 
81  JTestResult r (testName,
82  JRootObjectID(MAKE_STRING(h1->GetDirectory()->GetPath() << h1->GetName())),
83  JRootObjectID(MAKE_STRING(h2->GetDirectory()->GetPath() << h1->GetName())),
84  parameterName, maxDifference, tolerance, h3, passed);
85 
86  return r;
87  };
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
#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:758
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:142
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:682

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