Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes | Private Attributes | List of all members
JCOMPAREHISTOGRAMS::JTestChi2 Class Reference

Implementation of the Chi2 test for ROOT histograms. More...

#include <JTestChi2.hh>

Inheritance diagram for JCOMPAREHISTOGRAMS::JTestChi2:
JCOMPAREHISTOGRAMS::JTest_t std::vector< JTestResult >

Public Member Functions

 JTestChi2 ()
 Default constructor. More...
 
void test (const TObject *o1, const TObject *o2) override
 Applies Chi2 test for two ROOT TH1 histograms. More...
 
std::istream & read (std::istream &in) override
 Read test parameters from input. More...
 
virtual std::ostream & write (std::ostream &out, const char delimiter= ' ', const bool onlyFailures=false) const
 Write test result to output. More...
 
virtual void save (TFile *f, const std::string &path, const bool onlyFailures=false) const
 Writes the test result to root file. More...
 
const std::string & getTestName () const
 Get test name. More...
 
const std::string & getResultType () const
 Get result type. More...
 

Protected Attributes

const std::string testName
 test name More...
 
const std::string resultType
 test result type More...
 

Private Attributes

double threshold
 Threshold p-value or chi2-value to decide if test is passed. More...
 
std::string options
 Options for the ROOT chi2 test. More...
 

Detailed Description

Implementation of the Chi2 test for ROOT histograms.


This class is derived from the abstract class JTest_t(). For a general description of the implementation of this and other tests derived from JTest_t(), see its documentation.
The input parameter threshold(), is used to evaluate whether the test is passed or failed.
The evaluation is done by comparing the threshold() value with the result produced by JChi2Test(). The output of a Chi2 test is a p-value.
The parameter threshold() should therefore be a real value between 0 and 1.

Definition at line 27 of file JTestChi2.hh.

Constructor & Destructor Documentation

JCOMPAREHISTOGRAMS::JTestChi2::JTestChi2 ( )
inline

Default constructor.

Definition at line 35 of file JTestChi2.hh.

35  :
36  JTest_t("Chi2", "p-Value(chi2)")
37  {}
JTest_t(const std::string &testName, const std::string &resultType)
Constructor.
Definition: JTest_t.hh:51

Member Function Documentation

void JCOMPAREHISTOGRAMS::JTestChi2::test ( const TObject o1,
const TObject o2 
)
inlineoverridevirtual

Applies Chi2 test for two ROOT TH1 histograms.

Parameters
o1First histogram
o2Second histogram

Implements JCOMPAREHISTOGRAMS::JTest_t.

Definition at line 46 of file JTestChi2.hh.

47  {
48  using namespace std;
49  using namespace JPP;
50 
51  const TH1* h1 = dynamic_cast<const TH1*>(o1);
52  const TH1* h2 = dynamic_cast<const TH1*>(o2);
53 
54  if (h1 == NULL || h2 == NULL) {
55  THROW(JValueOutOfRange, "JTestChi2::test(): Could not cast given TObjects to TH1.");
56  }
57 
58  vector<Double_t> residuals(h1->GetNcells());
59 
60  const double chi2 = h1->Chi2Test(h2 , options.c_str(), &residuals[0]);
61 
62  TH1* h3 = (TH1*) h1->Clone(h1->GetName() == h2->GetName() ?
63  MAKE_CSTRING(h1->GetName() << "_" << testName) :
64  MAKE_CSTRING(h1->GetName() << "_VS_" << h2->GetName() << "_" << testName));
65 
66  h3->Reset();
67 
68  for (int i = 0; i < h1->GetNcells(); ++i) {
69  h3->SetBinContent(i+1, residuals[i]);
70  }
71 
72  const bool passed = ( options.find("CHI2") != string::npos ?
73  (chi2 < threshold) :
74  (chi2 > threshold) );
75 
76  const JResultTitle title(testName, resultType, passed, chi2);
77 
78  h3->SetTitle(title.getTitle().c_str());
79 
80  const int Ndims = h3->GetDimension();
81 
82  if (Ndims == 1) {
83  h3->GetYaxis()->SetTitle(resultType.c_str());
84  } else if (Ndims == 2) {
85  h3->GetZaxis()->SetTitle(resultType.c_str());
86  }
87 
88  const JTestResult r (testName,
89  JRootObjectID(MAKE_STRING(h1->GetDirectory()->GetPath() << h1->GetName())),
90  JRootObjectID(MAKE_STRING(h2->GetDirectory()->GetPath() << h1->GetName())),
91  resultType, chi2, threshold, h3, passed);
92 
93  this->push_back(r);
94  }
Class dedicated to standardize the title of the graphical objects produced by the JTest_t() derived c...
Definition: JResultTitle.hh:25
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
#define MAKE_CSTRING(A)
Make C-string.
Definition: JPrint.hh:136
data_type r[M+1]
Definition: JPolint.hh:868
std::string options
Options for the ROOT chi2 test.
Definition: JTestChi2.hh:119
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:127
const std::string resultType
test result type
Definition: JTest_t.hh:181
const std::string testName
test name
Definition: JTest_t.hh:180
double threshold
Threshold p-value or chi2-value to decide if test is passed.
Definition: JTestChi2.hh:118
then if[[!-f $DETECTOR]] then JDetector sh $DETECTOR fi cat $WORKDIR trigger_parameters txt<< EOFtrigger3DMuon.enabled=1;trigger3DMuon.numberOfHits=5;trigger3DMuon.gridAngle_deg=1;ctMin=0.0;TMaxLocal_ns=15.0;EOF set_variable TRIGGEREFFICIENCY_TRIGGERED_EVENTS_ONLY INPUT_FILES=() for((i=1;$i<=$NUMBER_OF_RUNS;++i));do JSirene.sh $DETECTOR $JPP_DATA/genhen.km3net_wpd_V2_0.evt.gz $WORKDIR/sirene_ ${i}.root JTriggerEfficiency.sh $DETECTOR $DETECTOR $WORKDIR/sirene_ ${i}.root $WORKDIR/trigger_efficiency_ ${i}.root $WORKDIR/trigger_parameters.txt $JPP_DATA/PMT_parameters.txt INPUT_FILES+=($WORKDIR/trigger_efficiency_ ${i}.root) done for ANGLE_DEG in $ANGLES_DEG[*];do set_variable SIGMA_NS 3.0 set_variable OUTLIERS 3 set_variable OUTPUT_FILE $WORKDIR/matrix\[${ANGLE_DEG}\deg\].root $JPP_DIR/examples/JReconstruction-f"$INPUT_FILES[*]"-o $OUTPUT_FILE-S ${SIGMA_NS}-A ${ANGLE_DEG}-O ${OUTLIERS}-d ${DEBUG}--!fiif[[$OPTION=="plot"]];then if((0));then for H1 in h0 h1;do JPlot1D-f"$WORKDIR/matrix["${^ANGLES_DEG}" deg].root:${H1}"-y"1 2e3"-Y-L TR-T""-\^"number of events [a.u.]"-> o chi2
Definition: JMatrixNZ.sh:106
Structure containing the result of the test.
Definition: JTestResult.hh:28
std::istream& JCOMPAREHISTOGRAMS::JTestChi2::read ( std::istream &  in)
inlineoverridevirtual

Read test parameters from input.

Parameters
ininput stream
Returns
input stream

Implements JCOMPAREHISTOGRAMS::JTest_t.

Definition at line 103 of file JTestChi2.hh.

104  {
105  using namespace JPP;
106 
107  in >> threshold >> options;
108 
109  if (threshold < 0.0) {
110  THROW(JValueOutOfRange, "JTestChi2::read(): Invalid threshold value " << threshold);
111  }
112 
113  return in;
114  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
std::string options
Options for the ROOT chi2 test.
Definition: JTestChi2.hh:119
double threshold
Threshold p-value or chi2-value to decide if test is passed.
Definition: JTestChi2.hh:118
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
virtual std::ostream& JCOMPAREHISTOGRAMS::JTest_t::write ( std::ostream &  out,
const char  delimiter = ' ',
const bool  onlyFailures = false 
) const
inlinevirtualinherited

Write test result to output.

Parameters
outoutput stream
delimiterfield delimiter
onlyFailuresif true, write only failures.
Returns
output stream

Definition at line 84 of file JTest_t.hh.

87  {
88  using namespace std;
89  using namespace JPP;
90 
91  for (vector<JTestResult>::const_iterator r = this->begin() ; r != this->end() ; ++r) {
92 
93  if (onlyFailures && r->passed) { continue; }
94 
95  print(out, *r, delimiter, true);
96  }
97 
98  return out;
99  }
std::ostream & print(std::ostream &out, const JTestSummary &summary, const char delimiter= ' ', const bool useColors=true)
Print test summary.
data_type r[M+1]
Definition: JPolint.hh:868
virtual void JCOMPAREHISTOGRAMS::JTest_t::save ( TFile *  f,
const std::string &  path,
const bool  onlyFailures = false 
) const
inlinevirtualinherited

Writes the test result to root file.

Parameters
fA ROOT file
pathPath in root file.
onlyFailuresIf true, write only failures.

Definition at line 108 of file JTest_t.hh.

111  {
112  using namespace std;
113  using namespace JPP;
114 
115  if (f->GetDirectory(path.c_str())==0) {
116  f->mkdir(path.c_str());
117  }
118 
119  f->cd(path.c_str());
120 
121  for (vector<JTestResult>::const_iterator r = this->begin() ; r != this->end() ; ++r) {
122 
123  if (onlyFailures && r->passed) { continue; }
124 
125  r->obj->Write();
126  }
127  }
data_type r[M+1]
Definition: JPolint.hh:868
$WORKDIR driver txt done cat $WORKDIR driver txt<< EOFprocess ${DATAFILTER}$FILTER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataFilter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAFILTER}-P $PORT</dev/null > &/dev/null &))';process ${DATAWRITER}$WRITER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataWriter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAWRITER}</dev/null > &/dev/null &))';print enterevent ev_init{RC_CMD}event ev_reset{RC_CMD}event ev_init{RC_CMD}event ev_configure{RC_DFLTR%<$WORKDIR/ev_configure_datafilter.txt > RC_DQSIM<$WORKDIR/ev_configure_dqsimulator.txt > RC_DWRT path
then JHobbit a $DETECTOR f
const std::string& JCOMPAREHISTOGRAMS::JTest_t::getTestName ( ) const
inlineinherited

Get test name.

Returns
test name

Definition at line 135 of file JTest_t.hh.

136  {
137  return testName;
138  }
const std::string testName
test name
Definition: JTest_t.hh:180
const std::string& JCOMPAREHISTOGRAMS::JTest_t::getResultType ( ) const
inlineinherited

Get result type.

Returns
result type

Definition at line 146 of file JTest_t.hh.

147  {
148  return resultType;
149  }
const std::string resultType
test result type
Definition: JTest_t.hh:181

Member Data Documentation

double JCOMPAREHISTOGRAMS::JTestChi2::threshold
private

Threshold p-value or chi2-value to decide if test is passed.

Definition at line 118 of file JTestChi2.hh.

std::string JCOMPAREHISTOGRAMS::JTestChi2::options
private

Options for the ROOT chi2 test.

Definition at line 119 of file JTestChi2.hh.

const std::string JCOMPAREHISTOGRAMS::JTest_t::testName
protectedinherited

test name

Definition at line 180 of file JTest_t.hh.

const std::string JCOMPAREHISTOGRAMS::JTest_t::resultType
protectedinherited

test result type

Definition at line 181 of file JTest_t.hh.


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