ATLAS Offline Software
Loading...
Searching...
No Matches
dqm_algorithms::KurtosisTest Struct Reference

#include <KurtosisTest.h>

Inheritance diagram for dqm_algorithms::KurtosisTest:
Collaboration diagram for dqm_algorithms::KurtosisTest:

Public Member Functions

 KurtosisTest (const std::string &name)
KurtosisTestclone ()
dqm_core::Result * execute (const std::string &, const TObject &, const dqm_core::AlgorithmConfig &)
void printDescription (std::ostream &out)
bool CompareKurtosisTest (const std::string &type, double value, double threshold)

Private Attributes

std::string m_name

Detailed Description

Definition at line 18 of file KurtosisTest.h.

Constructor & Destructor Documentation

◆ KurtosisTest()

dqm_algorithms::KurtosisTest::KurtosisTest ( const std::string & name)

Definition at line 29 of file KurtosisTest.cxx.

30 : m_name( name )
31{
32 dqm_core::AlgorithmManager::instance().registerAlgorithm("KurtosisTest_"+name,this);
33}

Member Function Documentation

◆ clone()

dqm_algorithms::KurtosisTest * dqm_algorithms::KurtosisTest::clone ( )

Definition at line 36 of file KurtosisTest.cxx.

37{
38 return new KurtosisTest( m_name );
39}
KurtosisTest(const std::string &name)

◆ CompareKurtosisTest()

bool dqm_algorithms::KurtosisTest::CompareKurtosisTest ( const std::string & type,
double value,
double threshold )

Definition at line 98 of file KurtosisTest.cxx.

98 {
99
100 if (type == "GreaterThan") return (value > threshold);
101 if (type == "LessThan") return (value < threshold);
102 if (type == "GreaterThanAbs") return ( std::abs(value) > threshold );
103 if (type == "LessThanAbs") return ( std::abs(value) < threshold);
104 return 0;
105}

◆ execute()

dqm_core::Result * dqm_algorithms::KurtosisTest::execute ( const std::string & name,
const TObject & object,
const dqm_core::AlgorithmConfig & config )

Definition at line 43 of file KurtosisTest.cxx.

46{
47 const TH1 * histogram;
48
49 if( object.IsA()->InheritsFrom( "TH1" ) ) {
50 histogram = static_cast<const TH1*>(&object);
51 } else {
52 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
53 }
54
55 const double minstat = dqm_algorithms::tools::GetFirstFromMap( "MinStat", config.getParameters(), -1);
56
57 if (histogram->GetEffectiveEntries() < minstat ) {
58 dqm_core::Result *result = new dqm_core::Result(dqm_core::Result::Undefined);
59 result->tags_["InsufficientEffectiveEntries"] = histogram->GetEffectiveEntries();
60 return result;
61 }
62
63 double gthreshold;
64 double rthreshold;
65
66 int axis = (int) dqm_algorithms::tools::GetFirstFromMap( "Axis", config.getParameters(), 1);
67
68 try {
69 rthreshold = dqm_algorithms::tools::GetFromMap( "K", config.getRedThresholds() );
70 gthreshold = dqm_algorithms::tools::GetFromMap( "K", config.getGreenThresholds() );
71 }
72 catch ( dqm_core::Exception & ex ) {
73 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
74 }
75 ERS_DEBUG(1,"Axis for kurtosis calculation:"<<axis);
76
77 Double_t kurtosis = histogram->GetKurtosis( axis );
78 Double_t kurtosis_e = histogram->GetKurtosis( axis + 10 );
79
80 dqm_core::Result* result = new dqm_core::Result();
81 ERS_DEBUG(1,"Kurtosis = "<<kurtosis<<" +- "<<kurtosis_e);
82 result->tags_["Kurtosis"] = kurtosis;
83 result->tags_["ApproxStandardError"]=kurtosis_e;
84
85 if ( CompareKurtosisTest( m_name , kurtosis ,gthreshold) ) {
86 result->status_ = dqm_core::Result::Green;
87 } else if ( CompareKurtosisTest( m_name, kurtosis, rthreshold) ) {
88 result->status_ = dqm_core::Result::Yellow;
89 } else {
90 result->status_ = dqm_core::Result::Red;
91 }
92
93 return result;
94
95}
std::string histogram
Definition chains.cxx:52
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
const T & GetFromMap(const std::string &pname, const std::map< std::string, T > &params)
bool CompareKurtosisTest(const std::string &type, double value, double threshold)
#define IsA
Declare the TObject style functions.

◆ printDescription()

void dqm_algorithms::KurtosisTest::printDescription ( std::ostream & out)

Definition at line 109 of file KurtosisTest.cxx.

110{
111 out<<"KurtosisTest_"+m_name+" : Checks if the Excess Kurtosis of the distribution is "+m_name+" threshold value\n"<<std::endl;
112
113 out<<"Mandatory Green/Red Threshold: K: Value of Kurtosis"<<std::endl;
114
115 out<<"Optional Parameter: MinStat: Minimum histogram statistics needed to perform Algorithm"<<std::endl;
116 out<<"Optional Parameter: Axis: Axis along which compute Kurtosis: 1=X, 2=Y, 3=Z"<<std::endl;
117
118}

Member Data Documentation

◆ m_name

std::string dqm_algorithms::KurtosisTest::m_name
private

Definition at line 29 of file KurtosisTest.h.


The documentation for this struct was generated from the following files: