ATLAS Offline Software
Loading...
Searching...
No Matches
dqm_algorithms::TileTriggerMonitor Struct Reference

#include <TileTriggerMonitor.h>

Inheritance diagram for dqm_algorithms::TileTriggerMonitor:
Collaboration diagram for dqm_algorithms::TileTriggerMonitor:

Public Member Functions

 TileTriggerMonitor ()
TileTriggerMonitorclone ()
dqm_core::Result * execute (const std::string &, const TObject &, const dqm_core::AlgorithmConfig &)
void printDescription (std::ostream &out)

Detailed Description

Definition at line 18 of file TileTriggerMonitor.h.

Constructor & Destructor Documentation

◆ TileTriggerMonitor()

dqm_algorithms::TileTriggerMonitor::TileTriggerMonitor ( )

Definition at line 24 of file TileTriggerMonitor.cxx.

26{
27 dqm_core::AlgorithmManager::instance().registerAlgorithm("TileTriggerMonitor", this);
28}

Member Function Documentation

◆ clone()

dqm_algorithms::TileTriggerMonitor * dqm_algorithms::TileTriggerMonitor::clone ( )

Definition at line 31 of file TileTriggerMonitor.cxx.

◆ execute()

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

Definition at line 39 of file TileTriggerMonitor.cxx.

42{
43 const TH1 * histogram;
44 if( object.IsA()->InheritsFrom( "TH1" ) ) {
45 histogram = static_cast<const TH1*>(&object);
46 if (histogram->GetDimension() > 2 ){
47 throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
48 }
49 } else {
50 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
51 }
52
53 dqm_core::Result* result = new dqm_core::Result();
54 //Count each category of the bins, if you find a red bin show red, if you find a yellow bin show yellow
55 std::vector<int> range=dqm_algorithms::tools::GetBinRange(histogram, config.getParameters());
56 std::set<int> ignoredBins;
57 const int oneIgnoredBin = static_cast<int>(dqm_algorithms::tools::GetFirstFromMap( "IgnoredBins", config.getParameters(), -1));
58 if (oneIgnoredBin > 0) {
59 ignoredBins.insert(oneIgnoredBin);
60 } else {
61 std::string ignoredBinsString = dqm_algorithms::tools::GetFirstFromMap( "IgnoredBins", config.getGenericParameters(), "");
62 if (!ignoredBinsString.empty()) {
63 std::string IgnoredBin;
64 std::istringstream is(ignoredBinsString);
65 while (std::getline(is, IgnoredBin, ';')) {
66 ignoredBins.insert(std::stoi(IgnoredBin));
67 }
68 }
69 }
70
71 int worstStatus = -3;
72 for ( int towerNum = range.at(0); towerNum <= range.at(1); ++towerNum ) {
73 double inputCont = histogram->GetBinContent(towerNum);
74 if (ignoredBins.count(towerNum)) continue;
75 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
76 if (inputCont>0) dqm_algorithms::tools::PublishBin(histogram,towerNum,0,inputCont,result);
77 }
78
79 result->tags_["BinContent"] = worstStatus;
80 if(worstStatus==2) result->status_ = dqm_core::Result::Red;
81 else if(worstStatus==1) result->status_ = dqm_core::Result::Yellow;
82 else if(worstStatus==0) result->status_ = dqm_core::Result::Green;
83 else {
84 result->status_ = dqm_core::Result::Disabled;
85 }
86
87 return result;
88
89
90}
std::string histogram
Definition chains.cxx:52
std::vector< int > GetBinRange(const TH1 *histogram, const std::map< std::string, double > &params)
double GetFirstFromMap(const std::string &paramName, const std::map< std::string, double > &params)
void PublishBin(const TH1 *histogram, int xbin, int ybin, double content, dqm_core::Result *result)
#define IsA
Declare the TObject style functions.

◆ printDescription()

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

Definition at line 94 of file TileTriggerMonitor.cxx.

95{
96 //put optional description for developers
97 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;
98
99 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;
100
101 out<<"Black bin: This tower is disabled\n" << std::endl;
102
103 out<<"Optional Parameter, Publish Bin: Publishes the content of the bins that are different than result." << std::endl;
104
105 out<<"Optional Parameter, IgnoredBins: Ignores the content of the bin if you do not want a bin's result dominating a histogram" << std::endl;
106}

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