ATLAS Offline Software
validatefunctions.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "validatefunctions.h"
6 #include <cstdlib>
7 
8 namespace HistValFunctions {
9 
10  void testfailed(const std::string& testname)
11  {
12  std::cout<<"ERROR: HistValidator test failed: "<<testname<<std::endl;
13  std::abort();//gives a stack-trace
14  }
15 
16  void testTypes() {
17  test("sizeof(unsigned char)=1", unsigned(1), sizeof(unsigned char));
18  test("sizeof(unsigned short)=2", unsigned(2), sizeof(unsigned short));
19  test("sizeof(float)=4", unsigned(4), sizeof(float));
20  test("sizeof(double)=8", unsigned(8), sizeof(double));
21  test("sizeof(double)=sizeof(Double_t)", sizeof(double), sizeof(Double_t));
22  test("sizeof(float)=sizeof(Float_t)", sizeof(float), sizeof(Float_t));
23  test("sizeof(int)=sizeof(Int_t)", sizeof(int), sizeof(Int_t));
24  }
25 
26  //Float comparisons need an epsilon:
27  void test(const std::string& testname, double val1, double val2)
28  {
29  if (!compatible(val1,val2))
30  testfailed(testname,val1,val2);
31  }
32 
33  //string comparisons done right:
34  void test(const std::string& testname, const char* val1, const char* val2)
35  {
36  if ((val1 == nullptr) or (val2==nullptr)){
37  testfailed(testname);
38  }
39  if (std::string(val1)!=std::string(val2))
40  testfailed(testname,val1,val2);
41  }
42 
43  //____________________________________________________________________
44  // Disable ubsan to turn off warnings about casting TH1F to TH1_FieldsAccess.
46  {
47  test("[TH1-level] GetXaxis()->GetLabelSize()",t1->GetXaxis()->GetLabelSize(),t2->GetXaxis()->GetLabelSize());
48  test("[TH1-level] GetXaxis()->GetTitle()",t1->GetXaxis()->GetTitle(),t2->GetXaxis()->GetTitle());
49  test("[TH1-level] GetYaxis()->GetLabelSize()",t1->GetYaxis()->GetLabelSize(),t2->GetYaxis()->GetLabelSize());
50  test("[TH1-level] GetYaxis()->GetTitle()",t1->GetYaxis()->GetTitle(),t2->GetYaxis()->GetTitle());
51  test("[TH1-level] GetMarkerColor()",t1->GetMarkerColor(),t2->GetMarkerColor());
52  test("[TH1-level] GetMarkerStyle()",t1->GetMarkerStyle(),t2->GetMarkerStyle());
53  test("[TH1-level] GetMarkerSize()",t1->GetMarkerSize(),t2->GetMarkerSize());
54  test("[TH1-level] GetMinimum()",t1->GetMinimum(),t2->GetMinimum());
55 
56  TH1_FieldsAccess * t1_fa(static_cast<TH1_FieldsAccess*>(t1));
57  TH1_FieldsAccess * t2_fa(static_cast<TH1_FieldsAccess*>(t2));
58  test("[TH1-level] fNcells",t1_fa->access_fNcells(), t2_fa->access_fNcells());
59  test("[TH1-level] fDimension",t1_fa->access_fDimension(), t2_fa->access_fDimension());
60  test("[TH1-level] fNormFactor",t1_fa->access_fNormFactor(), t2_fa->access_fNormFactor());
61  test("[TH1-level] fMaximum",t1_fa->access_fMaximum(), t2_fa->access_fMaximum());
62  test("[TH1-level] fMinimum",t1_fa->access_fMinimum(), t2_fa->access_fMinimum());
63  test("[TH1-level] fEntries",t1_fa->access_fEntries(), t2_fa->access_fEntries());
64  test("[TH1-level] fTsumw",t1_fa->access_fTsumw(), t2_fa->access_fTsumw());
65  test("[TH1-level] fTsumw2",t1_fa->access_fTsumw2(), t2_fa->access_fTsumw2());
66  test("[TH1-level] fTsumwx",t1_fa->access_fTsumwx(), t2_fa->access_fTsumwx());
67  test("[TH1-level] fTsumwx2",t1_fa->access_fTsumwx2(), t2_fa->access_fTsumwx2());
68  if (dynamic_cast<TH2*>(t1)) {
69  TH2_FieldsAccess * t1_fa2(static_cast<TH2_FieldsAccess*>(t1));
70  TH2_FieldsAccess * t2_fa2(static_cast<TH2_FieldsAccess*>(t2));
71  test("[TH1-level] fTsumwy",t1_fa2->access_fTsumwy(), t2_fa2->access_fTsumwy());
72  test("[TH1-level] fTsumwy2",t1_fa2->access_fTsumwy2(), t2_fa2->access_fTsumwy2());
73  test("[TH1-level] fTsumwxy",t1_fa2->access_fTsumwxy(), t2_fa2->access_fTsumwxy());
74  test("[TH1-level] fScalefactor",t1_fa2->access_fScalefactor(), t2_fa2->access_fScalefactor());
75  }
76  }
77 
78 
79 }
HistValFunctions::NO_SANITIZE_UNDEFINED
void compareFields NO_SANITIZE_UNDEFINED(TH1 *t1, TH1 *t2)
Definition: validatefunctions.cxx:45
HistValFunctions::TH2_FieldsAccess::access_fScalefactor
Double_t & access_fScalefactor()
Definition: validatefunctions.h:127
validatefunctions.h
HistValFunctions::TH1_FieldsAccess::access_fTsumwx
Double_t & access_fTsumwx()
Definition: validatefunctions.h:102
HistValFunctions
Definition: validatefunctions.cxx:8
HistValFunctions::TH1_FieldsAccess::access_fMaximum
Double_t & access_fMaximum()
Definition: validatefunctions.h:104
HistValFunctions::TH1_FieldsAccess::access_fTsumw
Double_t & access_fTsumw()
Definition: validatefunctions.h:100
HistValFunctions::TH1_FieldsAccess::access_fTsumwx2
Double_t & access_fTsumwx2()
Definition: validatefunctions.h:103
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
HistValFunctions::TH1_FieldsAccess::access_fNormFactor
Double_t & access_fNormFactor()
Definition: validatefunctions.h:106
HistValFunctions::compareFields
void compareFields(TH1 *t1, TH1 *t2)
HistValFunctions::TH1_FieldsAccess::access_fNcells
Int_t & access_fNcells()
Definition: validatefunctions.h:97
HistValFunctions::compatible
bool compatible(const double &val1, const double &val2)
Definition: validatefunctions.h:51
HistValFunctions::testTypes
void testTypes()
Definition: validatefunctions.cxx:16
HistValFunctions::test
void test(const std::string &testname, double val1, double val2)
Definition: validatefunctions.cxx:27
HistValFunctions::TH1_FieldsAccess::access_fMinimum
Double_t & access_fMinimum()
Definition: validatefunctions.h:105
HistValFunctions::TH1_FieldsAccess::access_fEntries
Double_t & access_fEntries()
Definition: validatefunctions.h:99
TH2
Definition: rootspy.cxx:373
HistValFunctions::TH2_FieldsAccess::access_fTsumwy
Double_t & access_fTsumwy()
Definition: validatefunctions.h:124
HistValFunctions::TH2_FieldsAccess::access_fTsumwy2
Double_t & access_fTsumwy2()
Definition: validatefunctions.h:125
ALFA_EventTPCnv_Dict::t2
std::vector< ALFA_RawDataContainer_p1 > t2
Definition: ALFA_EventTPCnvDict.h:44
HistValFunctions::TH1_FieldsAccess::access_fDimension
Int_t & access_fDimension()
Definition: validatefunctions.h:98
HistValFunctions::testfailed
void testfailed(const std::string &testname)
Definition: validatefunctions.cxx:10
HistValFunctions::TH1_FieldsAccess::access_fTsumw2
Double_t & access_fTsumw2()
Definition: validatefunctions.h:101
HistValFunctions::TH2_FieldsAccess::access_fTsumwxy
Double_t & access_fTsumwxy()
Definition: validatefunctions.h:126
TH1
Definition: rootspy.cxx:268
HistValFunctions::TH1_FieldsAccess
Definition: validatefunctions.h:95
HistValFunctions::TH2_FieldsAccess
Definition: validatefunctions.h:122