ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
dqm_algorithms::TileBinsOutRange Class Reference

#include <TileBinsOutRange.h>

Inheritance diagram for dqm_algorithms::TileBinsOutRange:
Collaboration diagram for dqm_algorithms::TileBinsOutRange:

Public Member Functions

 TileBinsOutRange ()
 
virtual ~TileBinsOutRange ()=default
 
virtual TileBinsOutRangeclone () override
 
virtual dqm_core::Resultexecute (const std::string &name, const TObject &object, const dqm_core::AlgorithmConfig &config) override
 
void printDescription (std::ostream &out)
 

Private Attributes

std::string m_name
 

Detailed Description

Definition at line 13 of file TileBinsOutRange.h.

Constructor & Destructor Documentation

◆ TileBinsOutRange()

dqm_algorithms::TileBinsOutRange::TileBinsOutRange ( )

Definition at line 22 of file TileBinsOutRange.cxx.

22  : m_name("TileBinsOutRange") {
23  dqm_core::AlgorithmManager::instance().registerAlgorithm(m_name, this);
24 }

◆ ~TileBinsOutRange()

virtual dqm_algorithms::TileBinsOutRange::~TileBinsOutRange ( )
virtualdefault

Member Function Documentation

◆ clone()

TileBinsOutRange * dqm_algorithms::TileBinsOutRange::clone ( )
overridevirtual

Definition at line 27 of file TileBinsOutRange.cxx.

27  {
28  return new TileBinsOutRange();
29 }

◆ execute()

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

Definition at line 32 of file TileBinsOutRange.cxx.

34  {
35 
36  const TH1* histogram = nullptr;
37 
38  if(object.IsA()->InheritsFrom( "TH1" )) {
39  histogram = static_cast<const TH1*>(&object);//type already checked in preceding line
40  if (histogram->GetDimension() > 2 ){
41  throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
42  }
43  } else {
44  throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH2");
45  }
46 
47  const bool publish = static_cast<bool>(dqm_algorithms::tools::GetFirstFromMap( "PublishBins", config.getParameters(), 0));
48  const bool publishHistogram = static_cast<bool>(dqm_algorithms::tools::GetFirstFromMap( "PublishHistogram", config.getParameters(), 1));
49  const int maxPublish = static_cast<int>(dqm_algorithms::tools::GetFirstFromMap( "MaxPublish", config.getParameters(), 20));
50  const double minStat = dqm_algorithms::tools::GetFirstFromMap( "MinStat", config.getParameters(), -1);
51  const double ignoreValue = dqm_algorithms::tools::GetFirstFromMap( "IgnoreValue", config.getParameters(), -99999);
52 
53  const TProfile* profile(nullptr);
54  const TProfile2D* profile2D(nullptr);
55  const double minBinEntries = dqm_algorithms::tools::GetFirstFromMap( "MinBinEntries", config.getParameters(), -1);
56  if(minBinEntries > 0) {
57  if (object.InheritsFrom("TProfile")) profile = dynamic_cast<const TProfile*>(&object);
58  else if (object.InheritsFrom("TProfile2D")) profile2D = dynamic_cast<const TProfile2D*>(&object);
59  }
60 
61  if (histogram->GetEntries() < minStat ) {
63  result->tags_["InsufficientEntries"] = histogram->GetEntries();
64  return result;
65  }
66 
67  double minValue;
68  double maxValue;
69  double redThreshold;
70  double greenThreshold;
71  try {
72  minValue = dqm_algorithms::tools::GetFromMap( "MinValue", config.getGreenThresholds() );
73  maxValue = dqm_algorithms::tools::GetFromMap( "MaxValue", config.getGreenThresholds() );
74  greenThreshold = dqm_algorithms::tools::GetFromMap("NBins", config.getGreenThresholds());
75  redThreshold = dqm_algorithms::tools::GetFromMap("NBins", config.getRedThresholds());
76  } catch( dqm_core::Exception & ex ) {
77  throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
78  }
79 
80  TH1* resultHistogram = nullptr;
81  if (publishHistogram) {
82  if (histogram->InheritsFrom("TH1")) {
83  resultHistogram = static_cast<TH1*>(histogram->Clone());//type already checked
84  } else {
85  throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
86  }
87  resultHistogram->Reset();
88  }
89 
90  int nBins = 0;
91  int nSkippedBins = 0;
93  std::vector<int> range = dqm_algorithms::tools::GetBinRange(histogram, config.getParameters());
94  for (int i = range[0]; i <= range[1]; ++i) {
95  for (int j = range[2]; j <= range[3]; ++j) {
96 
97  if (minBinEntries > 0) {
98  int bin = histogram->GetBin(i, j);
99  if (profile) {
100  if (profile->GetBinEntries(bin) < minBinEntries) {
101  ++nSkippedBins;
102  continue;
103  }
104  } else if (profile2D) {
105  if (profile2D->GetBinEntries(bin) < minBinEntries) {
106  ++nSkippedBins;
107  continue;
108  }
109  }
110  }
111 
112  double binValue = histogram->GetBinContent(i, j);
113  if((binValue == ignoreValue) || (binValue > minValue && binValue < maxValue )) continue;
114 
115  ++nBins;
116  if (resultHistogram){
117  resultHistogram->SetBinContent(i, binValue);
118  if (publish && nBins < maxPublish) {
120  }
121  }
122  }
123  }
124 
125  ERS_DEBUG(1,"Number of bad bins is " << nBins );
126  ERS_DEBUG(1,"Green threshold: " << greenThreshold << " bin(s); Red threshold : " << redThreshold << " bin(s) ");
127 
128  result->tags_["NBins"] = nBins;
129  result->tags_["NSkippedBins"] = nSkippedBins;
130  if (resultHistogram) result->object_ = boost::shared_ptr<TObject>(resultHistogram);
131 
132  if (greenThreshold > redThreshold) {
133  if (nBins >= greenThreshold) {
134  result->status_ = dqm_core::Result::Green;
135  } else if (nBins > redThreshold) {
136  result->status_ = dqm_core::Result::Yellow;
137  } else {
138  result->status_ = dqm_core::Result::Red;
139  }
140  } else {
141  if (nBins <= greenThreshold) {
142  result->status_ = dqm_core::Result::Green;
143  } else if (nBins < redThreshold) {
144  result->status_ = dqm_core::Result::Yellow;
145  } else {
146  result->status_ = dqm_core::Result::Red;
147  }
148  }
149 
150  return result;
151 }

◆ printDescription()

void dqm_algorithms::TileBinsOutRange::printDescription ( std::ostream &  out)

Definition at line 153 of file TileBinsOutRange.cxx.

153  {
154 
155  out << m_name << ": Check number of bins which are out of range (MinValue, MaxValue) " << std::endl;
156  out << "Mandatory Green Threshold: MinValue: minimum value of range" << std::endl;
157  out << "Mandatory Green Threshold: MaxValue: maximum value of range" << std::endl;
158  out << "Mandatory Green/Red Threshold: NBins: Number of non-empty bins to give Green/Red result\n" << std::endl;
159  out << "Optional Parameter: MinStat: Minimum histogram statistics needed to perform Algorithm" << std::endl;
160  out << "Optional Parameter: IgnoreValue: valued to be ignored for being processed" << std::endl;
161  out << "Optional Parameter: MaxPublish: Max number of bins to save (default 20)" << std::endl;
162  out << "Optional Parameter: MinBinEntries: Minimum bin entries in profile histogram needed to check this bin (by default: -1)" << std::endl;
163 
164 }

Member Data Documentation

◆ m_name

std::string dqm_algorithms::TileBinsOutRange::m_name
private

Definition at line 24 of file TileBinsOutRange.h.


The documentation for this class was generated from the following files:
dqm_algorithms::tools::GetBinRange
std::vector< int > GetBinRange(const TH1 *histogram, const std::map< std::string, double > &params)
Definition: AlgorithmHelper.cxx:380
Undefined
@ Undefined
Definition: MaterialTypes.h:8
get_generator_info.result
result
Definition: get_generator_info.py:21
maxValue
#define maxValue(current, test)
Definition: CompoundLayerMaterialCreator.h:22
IsA
#define IsA
Declare the TObject style functions.
Definition: xAODTEventBranch.h:59
dqm_algorithms::TileBinsOutRange::TileBinsOutRange
TileBinsOutRange()
Definition: TileBinsOutRange.cxx:22
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
bin
Definition: BinsDiffFromStripMedian.h:43
dqm_algorithms::tools::PublishBin
void PublishBin(const TH1 *histogram, int xbin, int ybin, double content, dqm_core::Result *result)
Definition: AlgorithmHelper.cxx:426
dqm_algorithms::TileBinsOutRange::m_name
std::string m_name
Definition: TileBinsOutRange.h:24
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
instance
std::map< std::string, double > instance
Definition: Run_To_Get_Tags.h:8
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
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.handimod.Green
int Green
Definition: handimod.py:523
LArG4ValidationPlotter.profile
profile
Definition: LArG4ValidationPlotter.py:113
python.handimod.Red
Red
Definition: handimod.py:550
dumpTgcDigiJitter.nBins
list nBins
Definition: dumpTgcDigiJitter.py:29
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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
minValue
#define minValue(current, test)
Definition: CompoundLayerMaterialCreator.h:21
histogram
std::string histogram
Definition: chains.cxx:52