ATLAS Offline Software
Public Member Functions | Protected Attributes | List of all members
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::Resultexecute (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.

35  {
36  return new STG_XMeansperSector(*this);
37  }

◆ 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
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  }

◆ 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.


The documentation for this class was generated from the following files:
Undefined
@ Undefined
Definition: MaterialTypes.h:8
get_generator_info.result
result
Definition: get_generator_info.py:21
IsA
#define IsA
Declare the TObject style functions.
Definition: xAODTEventBranch.h:59
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
instance
std::map< std::string, double > instance
Definition: Run_To_Get_Tags.h:8
dqm_algorithms::STG_XMeansperSector::STG_XMeansperSector
STG_XMeansperSector()
Definition: STG_XMeansperSector.cxx:27
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
Result
ICscStripFitter::Result Result
Definition: CalibCscStripFitter.cxx:13
python.handimod.Green
int Green
Definition: handimod.py:523
python.handimod.Red
Red
Definition: handimod.py:550
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
dqm_algorithms::STG_XMeansperSector::m_name
std::string m_name
Definition: STG_XMeansperSector.h:28
dqm_algorithms::tools::GetFromMap
const T & GetFromMap(const std::string &pname, const std::map< std::string, T > &params)
Definition: AlgorithmHelper.h:114
pickleTool.object
object
Definition: pickleTool.py:29
dqm_algorithms::tools::GetFirstFromMap
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
Definition: AlgorithmHelper.cxx:339
histogram
std::string histogram
Definition: chains.cxx:52