ATLAS Offline Software
TileTriggerMonitor.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #include <dqm_core/AlgorithmConfig.h>
12 #include <TH1.h>
13 #include <TH2.h>
14 #include <TF1.h>
15 #include <TClass.h>
16 #include <ers/ers.h>
17 
18 
19 #include <dqm_core/AlgorithmManager.h>
20 
21 static dqm_algorithms::TileTriggerMonitor myInstance;
22 
24 
25 {
26  dqm_core::AlgorithmManager::instance().registerAlgorithm("TileTriggerMonitor", this);
27 }
28 
31 {
32 
33  return new TileTriggerMonitor();
34 }
35 
36 
39  const TObject & object,
40  const dqm_core::AlgorithmConfig & config)
41 {
42  const TH1 * histogram;
43  if( object.IsA()->InheritsFrom( "TH1" ) ) {
44  histogram = static_cast<const TH1*>(&object);
45  if (histogram->GetDimension() > 2 ){
46  throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
47  }
48  } else {
49  throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
50  }
51 
53  //Count each category of the bins, if you find a red bin show red, if you find a yellow bin show yellow
54  std::vector<int> range=dqm_algorithms::tools::GetBinRange(histogram, config.getParameters());
55  int worstStatus = -3;
56  for ( int towerNum = range.at(0); towerNum <= range.at(1); ++towerNum ) {
57  double inputCont = histogram->GetBinContent(towerNum);
58  if (inputCont>worstStatus) worstStatus=inputCont; //if you want to have a test for every bin remove the for loop and replace execute with 1D black bin algorithm
59  if (inputCont>0) dqm_algorithms::tools::PublishBin(histogram,towerNum,0,inputCont,result);
60  }
61 
62  result->tags_["BinContent"] = worstStatus;
63  if(worstStatus==2) result->status_ = dqm_core::Result::Red;
64  else if(worstStatus==1) result->status_ = dqm_core::Result::Yellow;
65  else if(worstStatus==0) result->status_ = dqm_core::Result::Green;
66  else {
67  result->status_ = dqm_core::Result::Disabled;
68  }
69 
70  return result;
71 
72 
73 }
74 
75 
76 void
78 {
79  //put optional description for developers
80  out<<"Red bin: The tower has experienced a large spike in rate. The large spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl;
81 
82  out<<"Yellow bin: The tower has experienced a spike in rate. The spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl;
83 
84  out<<"Black bin: This tower is disabled\n" << std::endl;
85 
86  out<<"Optional Parameter, Publish Bin: Publishes the content of the bins that are different than result." << std::endl;
87 
88 
89 }
90 
TileTriggerMonitor.h
dqm_algorithms::tools::GetBinRange
std::vector< int > GetBinRange(const TH1 *histogram, const std::map< std::string, double > &params)
Definition: AlgorithmHelper.cxx:380
get_generator_info.result
result
Definition: get_generator_info.py:21
dqm_algorithms::TileTriggerMonitor::printDescription
void printDescription(std::ostream &out)
Definition: TileTriggerMonitor.cxx:77
IsA
#define IsA
Declare the TObject style functions.
Definition: xAODTEventBranch.h:59
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
dqm_algorithms::tools::PublishBin
void PublishBin(const TH1 *histogram, int xbin, int ybin, double content, dqm_core::Result *result)
Definition: AlgorithmHelper.cxx:426
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::TileTriggerMonitor::TileTriggerMonitor
TileTriggerMonitor()
Definition: TileTriggerMonitor.cxx:23
Result
ICscStripFitter::Result Result
Definition: CalibCscStripFitter.cxx:13
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
python.handimod.Green
int Green
Definition: handimod.py:524
python.handimod.Red
Red
Definition: handimod.py:551
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TH1
Definition: rootspy.cxx:268
AlgorithmHelper.h
dqm_algorithms::TileTriggerMonitor
Definition: TileTriggerMonitor.h:19
pickleTool.object
object
Definition: pickleTool.py:30
dqm_algorithms::TileTriggerMonitor::clone
TileTriggerMonitor * clone()
Definition: TileTriggerMonitor.cxx:30
histogram
std::string histogram
Definition: chains.cxx:52
dqm_algorithms::TileTriggerMonitor::execute
dqm_core::Result * execute(const std::string &, const TObject &, const dqm_core::AlgorithmConfig &)
Definition: TileTriggerMonitor.cxx:38