ATLAS Offline Software
DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <cmath>
8 #include <iostream>
9 #include <map>
10 
11 #include <TClass.h>
12 #include <TH1.h>
13 #include <TAxis.h>
14 
15 #include "dqm_core/exceptions.h"
16 #include "dqm_core/AlgorithmConfig.h"
18 #include "dqm_core/AlgorithmManager.h"
19 #include "dqm_core/Result.h"
20 #include "ers/ers.h"
21 
22 
23 static dqm_algorithms::CountsBinsGreaterThan staticInstance;
24 
25 
26 namespace dqm_algorithms {
27 
28  // *********************************************************************
29  // Public Methods
30  // *********************************************************************
31 
34  : m_name("AlgCountsBinsGreaterThan")
35  {
36  dqm_core::AlgorithmManager::instance().registerAlgorithm( m_name, this );
37  }
38 
39 
42  {
43  }
44 
45 
48  clone()
49  {
50  return new CountsBinsGreaterThan(*this);
51  }
52 
53 
56  execute( const std::string& name, const TObject& object, const dqm_core::AlgorithmConfig& config)
57  {
58  const TH1 * histogram;
59 
60  if( object.IsA()->InheritsFrom( "TH1" ) ) {
61  histogram = static_cast<const TH1*>(&object);
62  if (histogram->GetDimension() > 2 ){
63  throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
64  }
65  } else {
66  throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
67  }
68 
69  int binStart, binEnd;
70  int CountsTh;
71  double gmin;
72  double rmin;
73  try {
74  binStart = (int) dqm_algorithms::tools::GetFirstFromMap("BinStart", config.getParameters() );
75  binEnd = (int) dqm_algorithms::tools::GetFirstFromMap("BinEnd" , config.getParameters() );
76  CountsTh = (int) dqm_algorithms::tools::GetFirstFromMap("CountsTh", config.getParameters() );
77  rmin = dqm_algorithms::tools::GetFromMap( "NEntries", config.getRedThresholds());
78  gmin = dqm_algorithms::tools::GetFromMap( "NEntries", config.getGreenThresholds() );
79  }
80  catch ( dqm_core::Exception & ex ) {
81  throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
82  }
83 
84 
85  double count = 0;
86 
87  int nbiny = histogram -> GetNbinsY();
88  if(binStart>binEnd) {
89  binStart= 1;
90  binEnd = histogram -> GetNbinsX();
91  }
92  int binSize = binEnd-binStart+1;
93 
94  std::vector<double> contents;
95  contents.resize(binSize);
96  for(int i=0;i<binSize;i++) {
97  int binx = binStart+i;
98  contents[i]=0;
99  for ( int j = 1; j <= nbiny; ++j ) {
100  double content= histogram -> GetBinContent(binx,j);
101  contents[i]+=content;
102  if(content>CountsTh)count++;
103  }
104  }
105 
106 
107  ERS_DEBUG(1,"Number of entries for bins is "<< count );
108  ERS_DEBUG(1,"Green: "<< gmin << " entries; Red: " << rmin << " entries ");
109 
111 
112 
113 
114  if ( count >= gmin ) {
115  result->status_ = dqm_core::Result::Green;
116  } else if ( count > rmin ) {
117  result->status_ = dqm_core::Result::Yellow;
118  } else {
119  result->status_ = dqm_core::Result::Red;
120  }
121  result->tags_["BinsAboveTh"] = count;
122 
123 
124  return result;
125  }
126 
127 
128  void
130  printDescription(std::ostream& out)
131  {
132  std::string message;
133  message += "\n";
134  message += "Algorithm: \"" + m_name + "\"\n";
135  message += "Description: Counts the number of listed bins with entries above CountsTh\n";
136  message += "Parameters: BinStart first bin to be checked (1=first bin)\n";
137  message += " BinEnd last bin to be checked (nbin=last bin)\n";
138  message += " CountsTh thresholds on bin counts \n";
139  message += " Nentries Red/Green";
140  message += "\n";
141 
142  out << message;
143  }
144 
145 } // namespace dqm_algorithms
get_generator_info.result
result
Definition: get_generator_info.py:21
IsA
#define IsA
Declare the TObject style functions.
Definition: xAODTEventBranch.h:59
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
dqm_algorithms::CountsBinsGreaterThan::printDescription
virtual void printDescription(std::ostream &out)
Definition: DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx:130
python.FakeAthena.Algorithm
def Algorithm(name)
Definition: FakeAthena.py:41
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
dqm_algorithms::CountsBinsGreaterThan::~CountsBinsGreaterThan
virtual ~CountsBinsGreaterThan()
Definition: DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx:41
ReweightUtils.message
message
Definition: ReweightUtils.py:15
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
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::CountsBinsGreaterThan::execute
virtual dqm_core::Result * execute(const std::string &name, const TObject &object, const dqm_core::AlgorithmConfig &config)
Definition: DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx:56
grepfile.content
string content
Definition: grepfile.py:56
lumiFormat.i
int i
Definition: lumiFormat.py:92
Result
ICscStripFitter::Result Result
Definition: CalibCscStripFitter.cxx:13
python.handimod.Green
int Green
Definition: handimod.py:524
CountsBinsGreaterThan.h
contents
void contents(std::vector< std::string > &keys, TDirectory *td, const std::string &directory, const std::string &pattern, const std::string &path)
Definition: computils.cxx:319
dqm_algorithms::CountsBinsGreaterThan::m_name
std::string m_name
Definition: DataQuality/dqm_algorithms/dqm_algorithms/CountsBinsGreaterThan.h:29
python.handimod.Red
Red
Definition: handimod.py:551
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
dqm_algorithms::CountsBinsGreaterThan::CountsBinsGreaterThan
CountsBinsGreaterThan()
Definition: DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx:33
dqm_algorithms
Definition: AddReference.h:17
TH1
Definition: rootspy.cxx:268
dqm_algorithms::CountsBinsGreaterThan
Definition: DataQuality/dqm_algorithms/dqm_algorithms/CountsBinsGreaterThan.h:16
AlgorithmHelper.h
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:30
dqm_algorithms::tools::GetFirstFromMap
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
Definition: AlgorithmHelper.cxx:339
dqm_algorithms::CountsBinsGreaterThan::clone
virtual dqm_core::Algorithm * clone()
Definition: DataQuality/dqm_algorithms/src/CountsBinsGreaterThan.cxx:48
histogram
std::string histogram
Definition: chains.cxx:52