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

#include <STG_XMeansperSector.h>

Inheritance diagram for dqm_algorithms::STG_XMeansperSector:
Collaboration diagram for dqm_algorithms::STG_XMeansperSector:

Public Member Functions

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

Protected Attributes

std::string m_name {"STG_XMeansperSector"}

Detailed Description

Definition at line 14 of file STG_XMeansperSector.h.

Constructor & Destructor Documentation

◆ STG_XMeansperSector()

dqm_algorithms::STG_XMeansperSector::STG_XMeansperSector ( )

Definition at line 27 of file STG_XMeansperSector.cxx.

27 {
28 dqm_core::AlgorithmManager::instance().registerAlgorithm(m_name, this);
29 }

◆ ~STG_XMeansperSector()

virtual dqm_algorithms::STG_XMeansperSector::~STG_XMeansperSector ( )
virtualdefault

Member Function Documentation

◆ clone()

dqm_core::Algorithm * dqm_algorithms::STG_XMeansperSector::clone ( )
finaloverridevirtual

Definition at line 35 of file STG_XMeansperSector.cxx.

◆ execute()

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

Definition at line 56 of file STG_XMeansperSector.cxx.

58 {
59 //No status flags are set
60 dqm_core::Result* result = new dqm_core::Result();
61 result->status_ = dqm_core::Result::Undefined;
62 const TH2 * histogram;
63
64 if( object.IsA()->InheritsFrom( "TH2" ) ) {
65 histogram = static_cast<const TH2*>(&object);
66 if (histogram->GetDimension() > 2 ){
67 throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
68 }
69 } else {
70 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH2" );
71 }
72
73 TProfile *h2 = histogram->ProfileY();
74 int Xbins = histogram->GetXaxis()->GetNbins();
75 int Ybins = histogram->GetYaxis()->GetNbins();
76
77 double mean_global = histogram->GetMean(1);
78
79 float Meanlow;
80 float Meanhigh;
81 float redMean;
82 if (Xbins > 100) {
83 Meanlow = dqm_algorithms::tools::GetFirstFromMap( "MeanL", config.getParameters(), mean_global-12.5);
84 Meanhigh = dqm_algorithms::tools::GetFirstFromMap( "MeanH", config.getParameters(), mean_global+12.5);
85 redMean = dqm_algorithms::tools::GetFirstFromMap( "MeanRed", config.getParameters(), mean_global+30.0);
86 } else if (Xbins < 15) {
87 Meanlow = dqm_algorithms::tools::GetFirstFromMap( "MeanL", config.getParameters(), mean_global-50.0);
88 Meanhigh = dqm_algorithms::tools::GetFirstFromMap( "MeanH", config.getParameters(), mean_global+50.0);
89 redMean = dqm_algorithms::tools::GetFirstFromMap( "MeanRed", config.getParameters(), mean_global+75.0);
90 } else {
91 Meanlow = dqm_algorithms::tools::GetFirstFromMap( "MeanL", config.getParameters(), mean_global-25.0);
92 Meanhigh = dqm_algorithms::tools::GetFirstFromMap( "MeanH", config.getParameters(), mean_global+25.0);
93 redMean = dqm_algorithms::tools::GetFirstFromMap( "MeanRed", config.getParameters(), mean_global+50.0);
94 }
95
96 std::vector<float> MeanX(Ybins, 0.0);
97 //float MeanX[Ybins];
98 bool redflag = false;
99 bool yellowflag = false;
100 bool greenflag = false;
101 int Passed=0;
102 for (int i = 1; i <= Ybins; i++) {
103 MeanX[i]=h2->GetBinContent(i);
104 if (MeanX[i]==0) {
105 Passed = Passed +1;
106 continue;
107 }
108 if (MeanX[i] > Meanlow && MeanX[i] < Meanhigh) Passed = Passed +1;
109 if (abs(MeanX[i]-mean_global) > abs(redMean-mean_global)) redflag=true;
110 }
111 double gthreshold;
112 double rthreshold;
113 try {
114 rthreshold = dqm_algorithms::tools::GetFromMap("OOBSectors", config.getRedThresholds());
115 gthreshold = dqm_algorithms::tools::GetFromMap("OOBSectors", config.getGreenThresholds());
116 }
117 catch ( dqm_core::Exception & ex ) {
118 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
119 }
120 if (Passed >= (Ybins-gthreshold) && not redflag) greenflag=true;
121 else if (Passed >= (Ybins-rthreshold) && not redflag) yellowflag=true;
122 else redflag=true;
123 if ( greenflag ) {
124 result->status_ = dqm_core::Result::Green;
125 } else if ( yellowflag ) {
126 result->status_ = dqm_core::Result::Yellow;
127 } else {
128 result->status_ = dqm_core::Result::Red;
129 }
130 result->tags_["Xbins"] = Xbins;
131 result->tags_["Passed"] = Passed;
132 result->tags_["MeanGlobal"] = mean_global;
133 return result;
134 }
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)
#define IsA
Declare the TObject style functions.

◆ printDescription()

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

Definition at line 43 of file STG_XMeansperSector.cxx.

43 {
44 out << "\n";
45 out << "Algorithm: \"" << m_name << "\"\n";
46 out << "Description: Evaluates <X> means per Y-bin in STGC timing histograms.\n";
47 out << "Flags sectors as RED if <X> deviates beyond redMean.\n";
48 out << "Overflow and underflow bins are excluded.\n";
49 out << "\n";
50 }

Member Data Documentation

◆ m_name

std::string dqm_algorithms::STG_XMeansperSector::m_name {"STG_XMeansperSector"}
protected

Definition at line 28 of file STG_XMeansperSector.h.

28{"STG_XMeansperSector"};

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