CMS 3D CMS Logo

SummaryHistogramFactory.cc
Go to the documentation of this file.
4 #include <iostream>
5 #include <sstream>
6 
7 using namespace sistrip;
8 
9 // -----------------------------------------------------------------------------
10 //
11 template<class T>
15  view_(sistrip::UNKNOWN_VIEW),
16  level_(sistrip::root_),
17  gran_(sistrip::UNKNOWN_GRAN),
18  generator_(nullptr)
19 {
21  << "[SummaryHistogramFactory::" << __func__ << "]";
22 }
23 
24 // -----------------------------------------------------------------------------
25 //
26 template<class T>
28  LogTrace(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]";
29  if ( generator_ ) { delete generator_; }
30 }
31 
32 // -----------------------------------------------------------------------------
33 //
34 template<class T>
36  const sistrip::Presentation& pres,
37  const sistrip::View& view,
38  const std::string& top_level_dir,
39  const sistrip::Granularity& gran ) {
40  LogTrace(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]";
41  mon_ = mon;
42  pres_ = pres;
43  view_ = view;
44  level_ = top_level_dir;
45  gran_ = gran;
46 
47  // Retrieve utility class used to generate summary histograms
48  if ( generator_ ) {
49  delete generator_;
50  generator_ = nullptr;
52  }
53 
54 }
55 
56 // -----------------------------------------------------------------------------
57 //
58 template<class T>
59 uint32_t SummaryHistogramFactory<T>::extract( const std::map<uint32_t,T>& data ) {
60  LogTrace(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]";
61 
62  // Check if data are present
63  if ( data.empty() ) {
64  edm::LogWarning(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]"
65  << " No data in monitorables std::map!";
66  return 0;
67  }
68 
69  // Check if instance of generator class exists
70  if ( !generator_ ) {
71  edm::LogWarning(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]"
72  << " NULL pointer to SummaryGenerator object!";
73  return 0;
74  }
75 
76  // Transfer appropriate monitorables info to generator object
78  typename std::map<uint32_t,T>::const_iterator iter = data.begin();
79  for ( ; iter != data.end(); iter++ ) {
80  generator_->fillMap( level_, // top-level directory
81  gran_, // granularity
82  iter->first, // device key
83  static_cast<float>(iter->second) ); // value
84  }
85 
86  return generator_->size();
87 }
88 
89 // -----------------------------------------------------------------------------
90 //
91 template<class T>
92 void SummaryHistogramFactory<T>::fill( TH1& summary_histo ) {
93  LogTrace(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]";
94 
95  // Check if instance of generator class exists
96  if ( !generator_ ) {
97  edm::LogWarning(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]"
98  << " NULL pointer to SummaryGenerator object!";
99  return;
100  }
101 
102  // Check if std::map is filled
103  if ( !generator_->size() ) {
104  edm::LogWarning(mlSummaryPlots_) << "[SummaryHistogramFactory::" << __func__ << "]"
105  << " No data in the monitorables std::map!";
106  return;
107  }
108 
109  // Generate appropriate summary histogram
110  if ( pres_ == sistrip::HISTO_1D ) {
111  generator_->histo1D( summary_histo );
112  } else if ( pres_ == sistrip::HISTO_2D_SUM ) {
113  generator_->histo2DSum( summary_histo );
114  } else if ( pres_ == sistrip::HISTO_2D_SCATTER ) {
115  generator_->histo2DScatter( summary_histo );
116  } else if ( pres_ == sistrip::PROFILE_1D ) {
117  generator_->profile1D( summary_histo );
118  } else { return; }
119 
120  // Histogram formatting
122 
123 }
124 
125 // -----------------------------------------------------------------------------
126 //
127 template class SummaryHistogramFactory<uint32_t>;
128 template class SummaryHistogramFactory<uint16_t>;
129 template class SummaryHistogramFactory<float>;
130 
uint32_t extract(const std::map< uint32_t, T > &data)
void histo2DSum(TH1 &)
void init(const sistrip::Monitorable &, const sistrip::Presentation &, const sistrip::View &, const std::string &top_level_dir, const sistrip::Granularity &)
#define nullptr
static SummaryGenerator * instance(const sistrip::View &)
void histo2DScatter(TH1 &)
sistrip classes
void fillMap(const std::string &top_level_dir, const sistrip::Granularity &, const uint32_t &key, const float &value, const float &error=0.)
void fill(TH1 &summary_histo)
uint32_t size() const
#define LogTrace(id)
void format(const sistrip::RunType &, const sistrip::Monitorable &, const sistrip::Presentation &, const sistrip::View &, const std::string &directory, const sistrip::Granularity &, TH1 &)
static const char mlSummaryPlots_[]
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
static const char root_[]
sistrip::Presentation pres_