ATLAS Offline Software
Loading...
Searching...
No Matches
dqm_algorithms::LastBinThresholdAction< Exceed, Action > Class Template Reference

#include <LastBinThresholdAction.h>

Inheritance diagram for dqm_algorithms::LastBinThresholdAction< Exceed, Action >:
Collaboration diagram for dqm_algorithms::LastBinThresholdAction< Exceed, Action >:

Public Member Functions

 LastBinThresholdAction (const std::string &name)
virtual LastBinThresholdActionclone () override
virtual dqm_core::Result * execute (const std::string &, const TObject &, const dqm_core::AlgorithmConfig &) override
virtual void printDescription (std::ostream &out) const

Private Attributes

std::string m_name
Exceed m_exceeds
Action m_doAction

Detailed Description

template<class Exceed, class Action>
class dqm_algorithms::LastBinThresholdAction< Exceed, Action >

Definition at line 47 of file LastBinThresholdAction.h.

Constructor & Destructor Documentation

◆ LastBinThresholdAction()

template<class Exceed, class Action>
dqm_algorithms::LastBinThresholdAction< Exceed, Action >::LastBinThresholdAction ( const std::string & name)

Member Function Documentation

◆ clone()

template<class Exceed, class Action>
dqm_algorithms::LastBinThresholdAction< Exceed, Action > * dqm_algorithms::LastBinThresholdAction< Exceed, Action >::clone ( )
overridevirtual

Definition at line 73 of file LastBinThresholdAction.cxx.

73 {
75}

◆ execute()

template<class Exceed, class Action>
dqm_core::Result * dqm_algorithms::LastBinThresholdAction< Exceed, Action >::execute ( const std::string & name,
const TObject & object,
const dqm_core::AlgorithmConfig & config )
overridevirtual

Definition at line 79 of file LastBinThresholdAction.cxx.

82{
83 const TProfile* histogram;
84
85 if( object.IsA()->InheritsFrom( "TProfile" ) ) {
86 histogram = static_cast<const TProfile*>(&object);
87 if (histogram->GetDimension() > 1){
88 throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
89 }
90 } else {
91 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TProfile" );
92 }
93
94 const double minStat = dqm_algorithms::tools::GetFirstFromMap( "MinStat", config.getParameters(), -1);
95 const double fixedError = dqm_algorithms::tools::GetFirstFromMap( "FixedError", config.getParameters(), -1);
96 const bool ignoreEmpty = static_cast<bool>( dqm_algorithms::tools::GetFirstFromMap( "IgnoreEmpty", config.getParameters(), 1) );
97 const bool publish = static_cast<bool>( dqm_algorithms::tools::GetFirstFromMap( "PublishBins", config.getParameters(), 0) );
98 const int maxPublish = static_cast<int>( dqm_algorithms::tools::GetFirstFromMap( "MaxPublish", config.getParameters(), 20) );
99 const int nBinsToWatch = static_cast<int>( dqm_algorithms::tools::GetFirstFromMap( "NBinsToWatch", config.getParameters(), -1) );
100 const int nBinsForAction = static_cast<int>( dqm_algorithms::tools::GetFirstFromMap( "NBinsForAction", config.getParameters(), 99999) );
101
104 if (itAction != config.getGenericParameters().end()) {
105 action = itAction->second;
106 }
107
108 if (histogram->GetEntries() < minStat ) {
110 result->tags_["InsufficientEntries"] = histogram->GetEntries();
111 return result;
112 }
113
114 double binThreshold;
115 double greenThreshold;
116 double redThreshold;
117 try {
118 binThreshold = dqm_algorithms::tools::GetFirstFromMap( "BinThreshold", config.getParameters() );
119 redThreshold = dqm_algorithms::tools::GetFromMap( "NBins", config.getRedThresholds() );
120 greenThreshold = dqm_algorithms::tools::GetFromMap( "NBins", config.getGreenThresholds() );
121 } catch ( dqm_core::Exception & ex ) {
122 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
123 }
124
126
127 int nBinsOverThreshold = 0;
128
129 int firstBin = 1;
130 int lastBin = histogram->GetNbinsX();
131
132 if (nBinsToWatch > 0) {
133 while ((histogram->GetBinEntries(lastBin) == 0) && (lastBin > 1)) --lastBin;
135
136 result->tags_["LastBinNumber"] = lastBin; // report where we began the checks (mostly for debugging)
137 result->tags_["LastBinCenter"] = histogram->GetBinCenter(lastBin); // report where that is on the x-axis
138 }
139
140 double lastBinOverThresholdContent(0.0);
141 double binsOverThresholdContent(0.0);
142
143 for (int bin = firstBin; bin <= lastBin; ++bin) {
144 if (ignoreEmpty && (histogram->GetBinEntries(bin) == 0)) {
145 continue;
146 }
147 double content = histogram->GetBinContent(bin);
154 }
155 }
156 }
157
158 ERS_DEBUG(1,"Number of bins exceeded threshold of " << binThreshold << " is " << nBinsOverThreshold );
159 ERS_DEBUG(1,"Green threshold: "<< greenThreshold << " bin(s); Red threshold : " << redThreshold << " bin(s) ");
160
161 result->tags_["NBins"] = nBinsOverThreshold;
165 } else if (nBinsOverThreshold > redThreshold) {
167 } else {
168 result->status_ = dqm_core::Result::Red;
169 }
170 } else {
173 } else if (nBinsOverThreshold < redThreshold) {
175 } else {
176 result->status_ = dqm_core::Result::Red;
177 }
178 }
179
182 //coverity[copy_constructor_call]
184 }
185
186 return result;
187
188}
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)
void PublishBin(const TH1 *histogram, int xbin, int ybin, double content, dqm_core::Result *result)
#define IsA
Declare the TObject style functions.

◆ printDescription()

template<class Exceed, class Action>
void dqm_algorithms::LastBinThresholdAction< Exceed, Action >::printDescription ( std::ostream & out) const
virtual

Definition at line 191 of file LastBinThresholdAction.cxx.

191 {
192
193 out << m_name + ": Checks for number of bins exceded threshold value" << std::endl;
194 out << "Mandatory Parameter: BinThreshold: Look for bins exceeded BinTreshold; Count number of bins satifying requirement" << std::endl;
195 out << "Mandatory Green/Red Threshold: NBins: Number of bins satifying BinThreshold constraint to give Green/Red result" << std::endl;
196
197 out << "Optional Parameter: FixedError: override the histogram errors with this value" << std::endl;
198 out << "Optional Parameter: IgnoreEmpty: Ignore bins which have zero entries in histogram" << std::endl;
199 out << "Optional Parameter: PublishBins: Save bins which are different from average in Result (set to 1)" << std::endl;
200 out << "Optional Parameter: MaxPublish: Max number of bins to save (default 20)" << std::endl;
201 out << "Optional Parameter: MinStat: Minimum histogram statistics needed to perform Algorithm" << std::endl;
202 out << "Optional parameter: NBinsToWatch - number of final bins that will be checked. (NBinsToWatch >= 1, default = -1)" << std::endl;
203}

Member Data Documentation

◆ m_doAction

template<class Exceed, class Action>
Action dqm_algorithms::LastBinThresholdAction< Exceed, Action >::m_doAction
private

Definition at line 60 of file LastBinThresholdAction.h.

◆ m_exceeds

template<class Exceed, class Action>
Exceed dqm_algorithms::LastBinThresholdAction< Exceed, Action >::m_exceeds
private

Definition at line 59 of file LastBinThresholdAction.h.

◆ m_name

template<class Exceed, class Action>
std::string dqm_algorithms::LastBinThresholdAction< Exceed, Action >::m_name
private

Definition at line 58 of file LastBinThresholdAction.h.


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