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

#include <BinContentDump.h>

Inheritance diagram for dqm_algorithms::BinContentDump:
Collaboration diagram for dqm_algorithms::BinContentDump:

Public Member Functions

 BinContentDump ()
 ~BinContentDump ()
BinContentDumpclone ()
dqm_core::Result * execute (const std::string &, const TObject &, const dqm_core::AlgorithmConfig &)
virtual void printDescription (std::ostream &out)

Detailed Description

Definition at line 14 of file BinContentDump.h.

Constructor & Destructor Documentation

◆ BinContentDump()

dqm_algorithms::BinContentDump::BinContentDump ( )

Definition at line 22 of file BinContentDump.cxx.

23{
24 dqm_core::AlgorithmManager::instance().registerAlgorithm("BinContentDump", this);
25}

◆ ~BinContentDump()

dqm_algorithms::BinContentDump::~BinContentDump ( )

Definition at line 27 of file BinContentDump.cxx.

28{
29}

Member Function Documentation

◆ clone()

dqm_algorithms::BinContentDump * dqm_algorithms::BinContentDump::clone ( )

Definition at line 31 of file BinContentDump.cxx.

32{
33 return new BinContentDump();
34}

◆ execute()

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

Definition at line 36 of file BinContentDump.cxx.

37{
38 const TH1 *histogram;
39
40 if (object.IsA()->InheritsFrom("TH1")) {
41 histogram = static_cast<const TH1*>(&object);
42 if (histogram->GetDimension() > 2) {
43 throw dqm_core::BadConfig(ERS_HERE, name, "dimension > 2");
44 }
45 } else {
46 throw dqm_core::BadConfig(ERS_HERE, name, "does not inherit from TH1");
47 }
48
49 const double minstat = dqm_algorithms::tools::GetFirstFromMap("MinStat", config.getParameters(), -1);
50 const unsigned int publishType = static_cast<unsigned int>(dqm_algorithms::tools::GetFirstFromMap("PublishType", config.getParameters(), 1));
51 // const int maxpublish = (int) dqm_algorithms::tools::GetFirstFromMap("MaxPublish", config.getParameters(), 20);
52
53 if (histogram->GetEntries() < minstat) {
54 dqm_core::Result *result = new dqm_core::Result(dqm_core::Result::Undefined);
55 result->tags_["InsufficientEntries"] = histogram->GetEntries();
56 return result;
57 }
58
59 dqm_core::Result *result = new dqm_core::Result(dqm_core::Result::Green);
60
61 for (int i = 1; i <= histogram->GetNbinsX(); ++i) {
62 const double binContent = histogram->GetBinContent(i);
63 const double binError = histogram->GetBinError(i);
64 std::string label = histogram->GetXaxis()->GetBinLabel(i);
65
66 // Check if user has defined a minimum value on this bin
67 const double undefined = -99999;
68 const double binThreshold = dqm_algorithms::tools::GetFirstFromMap(label, config.getParameters(), undefined);
69 if ((binThreshold != undefined) && (binContent < binThreshold)) result->status_ = dqm_core::Result::Red;
70
71 if (label.empty()) {
72 std::ostringstream oss;
73 oss << "Bin_" << i;
74 label = oss.str();
75 }
76
77 if (publishType & 0x01) result->tags_[label] = binContent;
78 if (publishType & 0x02) result->tags_[label + "Error"] = binError;
79 }
80 return result;
81}
std::string histogram
Definition chains.cxx:52
std::string label(const std::string &format, int i)
Definition label.h:19
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
#define IsA
Declare the TObject style functions.

◆ printDescription()

void dqm_algorithms::BinContentDump::printDescription ( std::ostream & out)
virtual

Definition at line 82 of file BinContentDump.cxx.

83{
84 out << "BinContentDump: Dumps the contents of all bins, labelled either with their bin label or with \"Bin_N\". Returns green status.\n"
85 "Optional parameters: <label>: The bin with this label must be greater than the given value, otherwise the algorithm returns red status.\n"
86 "Optional parameter: PublishType: What to publish. 0 = nothing, 1 = bin contents (default), 2 = bin errors, 3 = both\n"
87 "Thresholds: None." << std::endl;
88}

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