ATLAS Offline Software
Loading...
Searching...
No Matches
dqm_algorithms::MUCTPISLAnyHit Class Reference

#include <MUCTPISLAnyHit.h>

Inheritance diagram for dqm_algorithms::MUCTPISLAnyHit:
Collaboration diagram for dqm_algorithms::MUCTPISLAnyHit:

Public Member Functions

 MUCTPISLAnyHit ()
virtual ~MUCTPISLAnyHit ()=default
virtual dqm_core::Algorithm * clone ()
virtual dqm_core::Result * execute (const std::string &name, const TObject &data, const dqm_core::AlgorithmConfig &config)
virtual void printDescription (std::ostream &out)

Private Attributes

std::string m_name

Detailed Description

Definition at line 15 of file MUCTPISLAnyHit.h.

Constructor & Destructor Documentation

◆ MUCTPISLAnyHit()

dqm_algorithms::MUCTPISLAnyHit::MUCTPISLAnyHit ( )

Definition at line 34 of file MUCTPISLAnyHit.cxx.

35 : m_name("MUCTPISLAnyHit")
36{
37 dqm_core::AlgorithmManager::instance().registerAlgorithm( m_name, this );
38}

◆ ~MUCTPISLAnyHit()

virtual dqm_algorithms::MUCTPISLAnyHit::~MUCTPISLAnyHit ( )
virtualdefault

Member Function Documentation

◆ clone()

dqm_core::Algorithm * dqm_algorithms::MUCTPISLAnyHit::clone ( )
virtual

Definition at line 41 of file MUCTPISLAnyHit.cxx.

42{
43 return new MUCTPISLAnyHit(*this);
44}

◆ execute()

dqm_core::Result * dqm_algorithms::MUCTPISLAnyHit::execute ( const std::string & name,
const TObject & data,
const dqm_core::AlgorithmConfig & config )
virtual

Definition at line 48 of file MUCTPISLAnyHit.cxx.

49{
50 using namespace std;
51
52 const TH2 *hist{};
53
54 //ensure that input histo is 2D
55 if( object.IsA()->InheritsFrom( "TH2" ) ) {
56 hist = static_cast<const TH2 *>(&object);
57 if (hist->GetDimension() != 2 ){
58 throw dqm_core::BadConfig( ERS_HERE, name, "dimension != 2 " );
59 }
60 } else {
61 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH2" );
62 }
63
64 //Get Parameters and Thresholds
65 double thresh=0.1;
66
67 try {
68 thresh = dqm_algorithms::tools::GetFirstFromMap("thresh", config.getParameters(), 0.1);
69 }
70 catch ( dqm_core::Exception & ex ) {
71 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
72 }
73
74 //Algo
75
76 //project our 2D histogram to 1D (on the y-axis), thus summing up along x
77 TH1* projection = hist->ProjectionY();
78
79 dqm_core::Result* result = new dqm_core::Result();
80 std::map<std::string,double> tags; //defined in https://gitlab.cern.ch/atlas-tdaq-software/dqm_core/-/blob/master/dqm_core/Result.h
81
82 //assume all good, until find a bad one
83 result->status_ = dqm_core::Result::Green;
84 uint howmanybad=0;
85
86 for(int iBin=1;iBin<=projection->GetNbinsX();iBin++)//foreach bin of the projection (0=underflow)
87 {
88 if( projection->GetBinContent(iBin) < thresh ) //if bin content less than algorithm threshold => bad
89 {
90 result->status_ = dqm_core::Result::Yellow;
91 howmanybad++;
92 }
93 }
94 tags["howmanybad"] = howmanybad;
95
96 //set the result tags
97 result->tags_ = std::move(tags);
98
99 // Return the result
100 return result;
101}
unsigned int uint
std::vector< std::string > tags
Definition hcg.cxx:105
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
#define IsA
Declare the TObject style functions.

◆ printDescription()

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

Definition at line 105 of file MUCTPISLAnyHit.cxx.

105 {
106 std::string message;
107 message += "\n";
108 message += "Algorithm: \"" + m_name + "\"\n";
109 message += "Description: Makes the ProjectionY of the 2D input histo. If any bin content is below the given threshold => warning.\n";
110 message += "Optional Parameters: thresh = if any bin content in the ProjectionY is below this value => warning\n";
111 out << message;
112}

Member Data Documentation

◆ m_name

std::string dqm_algorithms::MUCTPISLAnyHit::m_name
private

Definition at line 27 of file MUCTPISLAnyHit.h.


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