CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Attributes
ecaldqm::MESetNonObject Class Reference

#include <MESetNonObject.h>

Inheritance diagram for ecaldqm::MESetNonObject:
ecaldqm::MESet

Public Member Functions

void book (DQMStore::IBooker &) override
 
MESetclone (std::string const &="") const override
 
void fill (double, double=1., double=1.) override
 
int findBin (double, double=0.) const
 
double getBinContent (int, int=0) const override
 
double getBinEntries (int, int=0) const override
 
double getBinError (int, int=0) const override
 
bool isVariableBinning () const override
 
 MESetNonObject (std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0)
 
 MESetNonObject (MESetNonObject const &)
 
MESetoperator= (MESet const &) override
 
bool retrieve (DQMStore::IGetter &, std::string *=0) const override
 
void setBinContent (int, double) override
 
void setBinEntries (int, double) override
 
void setBinError (int, double) override
 
 ~MESetNonObject () override
 
- Public Member Functions inherited from ecaldqm::MESet
virtual const_iterator begin () const
 
virtual iterator begin ()
 
virtual const_iterator beginChannel () const
 
virtual iterator beginChannel ()
 
virtual void clear () const
 
virtual const_iterator end () const
 
virtual iterator end ()
 
virtual void fill (DetId const &, double=1., double=1., double=1.)
 
virtual void fill (EcalElectronicsId const &, double=1., double=1., double=1.)
 
virtual void fill (int, double=1., double=1., double=1.)
 
std::string formPath (PathReplacements const &) const
 
bool getBatchMode () const
 
virtual double getBinContent (DetId const &, int=0) const
 
virtual double getBinContent (EcalElectronicsId const &, int=0) const
 
virtual double getBinEntries (DetId const &, int=0) const
 
virtual double getBinEntries (EcalElectronicsId const &, int=0) const
 
virtual double getBinError (DetId const &, int=0) const
 
virtual double getBinError (EcalElectronicsId const &, int=0) const
 
binning::BinningType getBinType () const
 
MonitorElement::Kind getKind () const
 
bool getLumiFlag () const
 
virtual MonitorElement const * getME (unsigned _iME) const
 
virtual MonitorElementgetME (unsigned _iME)
 
binning::ObjectType getObjType () const
 
virtual std::string const & getPath () const
 
bool isActive () const
 
virtual bool maskMatches (DetId const &, uint32_t, StatusManager const *) const
 
 MESet ()
 
 MESet (std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind)
 
 MESet (MESet const &)
 
virtual void recoverStats ()
 
virtual void reset (double=0., double=0., double=0.)
 
virtual void resetAll (double=0., double=0., double=0.)
 
virtual void setAxisTitle (std::string const &, int=1)
 
void setBatchMode ()
 
virtual void setBinContent (DetId const &, double)
 
virtual void setBinContent (EcalElectronicsId const &, double)
 
virtual void setBinContent (DetId const &, int, double)
 
virtual void setBinContent (EcalElectronicsId const &, int, double)
 
virtual void setBinContent (int, int, double)
 
virtual void setBinEntries (DetId const &, double)
 
virtual void setBinEntries (EcalElectronicsId const &, double)
 
virtual void setBinEntries (DetId const &, int, double)
 
virtual void setBinEntries (EcalElectronicsId const &, int, double)
 
virtual void setBinEntries (int, int, double)
 
virtual void setBinError (DetId const &, double)
 
virtual void setBinError (EcalElectronicsId const &, double)
 
virtual void setBinError (DetId const &, int, double)
 
virtual void setBinError (EcalElectronicsId const &, int, double)
 
virtual void setBinError (int, int, double)
 
void setLumiFlag ()
 
virtual void softReset ()
 
virtual ~MESet ()
 

Protected Attributes

binning::AxisSpecs const * xaxis_
 
binning::AxisSpecs const * yaxis_
 
binning::AxisSpecs const * zaxis_
 
- Protected Attributes inherited from ecaldqm::MESet
bool active_
 
bool batchMode_
 
binning::BinningType btype_
 
MonitorElement::Kind kind_
 
bool lumiFlag_
 
std::vector< MonitorElement * > mes_
 
binning::ObjectType otype_
 
std::string path_
 

Additional Inherited Members

- Public Types inherited from ecaldqm::MESet
typedef std::map< std::string, std::string > PathReplacements
 
- Protected Member Functions inherited from ecaldqm::MESet
virtual void checkME_ (unsigned _iME) const
 
virtual void fill_ (unsigned, int, double)
 
virtual void fill_ (unsigned, int, double, double)
 
virtual void fill_ (unsigned, double, double, double)
 
void throw_ (std::string const &_message) const
 

Detailed Description

Definition at line 8 of file MESetNonObject.h.

Constructor & Destructor Documentation

ecaldqm::MESetNonObject::MESetNonObject ( std::string const &  _fullPath,
binning::ObjectType  _otype,
binning::BinningType  _btype,
MonitorElement::Kind  _kind,
binning::AxisSpecs const *  _xaxis = 0,
binning::AxisSpecs const *  _yaxis = 0,
binning::AxisSpecs const *  _zaxis = 0 
)

Definition at line 5 of file MESetNonObject.cc.

Referenced by clone().

5  :
6  MESet(_fullPath, _otype, _btype, _kind),
7  xaxis_(_xaxis ? new binning::AxisSpecs(*_xaxis) : nullptr),
8  yaxis_(_yaxis ? new binning::AxisSpecs(*_yaxis) : nullptr),
9  zaxis_(_zaxis ? new binning::AxisSpecs(*_zaxis) : nullptr)
10  {
11  }
binning::AxisSpecs const * zaxis_
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_
ecaldqm::MESetNonObject::MESetNonObject ( MESetNonObject const &  _orig)

Definition at line 13 of file MESetNonObject.cc.

13  :
14  MESet(_orig),
15  xaxis_(_orig.xaxis_ ? new binning::AxisSpecs(*_orig.xaxis_) : nullptr),
16  yaxis_(_orig.yaxis_ ? new binning::AxisSpecs(*_orig.yaxis_) : nullptr),
17  zaxis_(_orig.zaxis_ ? new binning::AxisSpecs(*_orig.zaxis_) : nullptr)
18  {
19  }
binning::AxisSpecs const * zaxis_
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_
ecaldqm::MESetNonObject::~MESetNonObject ( )
override

Definition at line 21 of file MESetNonObject.cc.

References xaxis_, yaxis_, and zaxis_.

22  {
23  delete xaxis_;
24  delete yaxis_;
25  delete zaxis_;
26  }
binning::AxisSpecs const * zaxis_
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_

Member Function Documentation

void ecaldqm::MESetNonObject::book ( DQMStore::IBooker _ibooker)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 58 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookFloat(), DQMStore::IBooker::bookProfile(), DQMStore::IBooker::bookProfile2D(), ecaldqm::MESet::clear(), popcon2dropbox::copy(), MonitorElement::DQM_KIND_REAL, MonitorElement::DQM_KIND_TH1F, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, ecaldqm::binning::AxisSpecs::edges, ecaldqm::binning::AxisSpecs::high, ecaldqm::MESet::kind_, ecaldqm::binning::AxisSpecs::labels, ecaldqm::binning::AxisSpecs::low, ecaldqm::MESet::lumiFlag_, SiStripPI::max, ecaldqm::MESet::mes_, dataset::name, ecaldqm::binning::AxisSpecs::nbins, ecaldqm::MESet::path_, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), MonitorElement::setLumiFlag(), ecaldqm::MESet::throw_(), ecaldqm::binning::AxisSpecs::title, xaxis_, yaxis_, and zaxis_.

59  {
60  using namespace std;
61 
62  clear();
63 
64  if(path_.find('%') != string::npos)
65  throw_("book() called with incompletely formed path");
66 
67  size_t slashPos(path_.find_last_of('/'));
68  string name(path_.substr(slashPos + 1));
69  _ibooker.setCurrentFolder(path_.substr(0, slashPos));
70 
71  MonitorElement* me(nullptr);
72 
73  switch(kind_) {
75  me = _ibooker.bookFloat(name);
76  break;
77 
79  {
80  if(!xaxis_)
81  throw_("No xaxis found for MESetNonObject");
82 
83  if(xaxis_->edges)
84  me = _ibooker.book1D(name, name, xaxis_->nbins, xaxis_->edges);
85  else
86  me = _ibooker.book1D(name, name, xaxis_->nbins, xaxis_->low, xaxis_->high);
87  }
88  break;
89 
91  {
92  if(!xaxis_)
93  throw_("No xaxis found for MESetNonObject");
94 
95  double ylow, yhigh;
96  if(!yaxis_){
99  }
100  else{
101  ylow = yaxis_->low;
102  yhigh = yaxis_->high;
103  }
104  if(xaxis_->edges){
105  // DQMStore bookProfile interface uses double* for bin edges
106  double* edges(new double[xaxis_->nbins + 1]);
107  std::copy(xaxis_->edges, xaxis_->edges + xaxis_->nbins + 1, edges);
108  me = _ibooker.bookProfile(name, name, xaxis_->nbins, edges, ylow, yhigh, "");
109  delete edges;
110  }
111  else
112  me = _ibooker.bookProfile(name, name, xaxis_->nbins, xaxis_->low, xaxis_->high, ylow, yhigh, "");
113  }
114  break;
115 
117  {
118  if(!xaxis_ || !yaxis_)
119  throw_("No x/yaxis found for MESetNonObject");
120 
121  if(!xaxis_->edges || !yaxis_->edges) // unlike MESetEcal, if either of X or Y is not set as variable, binning will be fixed
122  me = _ibooker.book2D(name, name, xaxis_->nbins, xaxis_->low, xaxis_->high, yaxis_->nbins, yaxis_->low, yaxis_->high);
123  else
124  me = _ibooker.book2D(name, name, xaxis_->nbins, xaxis_->edges, yaxis_->nbins, yaxis_->edges);
125  }
126  break;
127 
129  {
130  if(!xaxis_ || !yaxis_)
131  throw_("No x/yaxis found for MESetNonObject");
132  if(xaxis_->edges || yaxis_->edges)
133  throw_("Variable bin size for 2D profile not implemented");
134 
135  double high(0.), low(0.);
136  if(zaxis_){
137  low = zaxis_->low;
138  high = zaxis_->high;
139  }
140  else{
143  }
144 
145  me = _ibooker.bookProfile2D(name, name, xaxis_->nbins, xaxis_->low, xaxis_->high, yaxis_->nbins, yaxis_->low, yaxis_->high, low, high, "");
146  }
147  break;
148 
149  default :
150  throw_("Unsupported MonitorElement kind");
151  }
152 
153  if(xaxis_){
154  me->setAxisTitle(xaxis_->title, 1);
155  if(xaxis_->labels){
156  for(int iBin(1); iBin <= xaxis_->nbins; ++iBin)
157  me->setBinLabel(iBin, xaxis_->labels[iBin - 1], 1);
158  }
159  }
160  if(yaxis_){
161  me->setAxisTitle(yaxis_->title, 2);
162  if(yaxis_->labels){
163  for(int iBin(1); iBin <= yaxis_->nbins; ++iBin)
164  me->setBinLabel(iBin, yaxis_->labels[iBin - 1], 2);
165  }
166  }
167  if(zaxis_){
168  me->setAxisTitle(zaxis_->title, 3);
169  if(zaxis_->labels){
170  for(int iBin(1); iBin <= zaxis_->nbins; ++iBin)
171  me->setBinLabel(iBin, zaxis_->labels[iBin - 1], 3);
172  }
173  }
174 
175  if(lumiFlag_) me->setLumiFlag();
176 
177  mes_.push_back(me);
178 
179  active_ = true;
180  }
binning::AxisSpecs const * zaxis_
MonitorElement::Kind kind_
Definition: MESet.h:134
virtual void clear() const
Definition: MESet.cc:93
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:160
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
void throw_(std::string const &_message) const
Definition: MESet.h:124
MonitorElement * bookProfile2D(Args &&...args)
Definition: DQMStore.h:166
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
bool lumiFlag_
Definition: MESet.h:135
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
bool active_
Definition: MESet.h:138
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:112
std::string path_
Definition: MESet.h:131
MESet * ecaldqm::MESetNonObject::clone ( std::string const &  _path = "") const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 48 of file MESetNonObject.cc.

References popcon2dropbox::copy(), MESetNonObject(), callgraph::path, ecaldqm::MESet::path_, and AlCaHLTBitMon_QueryRunRegistry::string.

49  {
51  if(_path != "") path_ = _path;
52  MESet* copy(new MESetNonObject(*this));
53  path_ = path;
54  return copy;
55  }
MESetNonObject(std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0)
std::string path_
Definition: MESet.h:131
void ecaldqm::MESetNonObject::fill ( double  _x,
double  _wy = 1.,
double  _w = 1. 
)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 200 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_REAL, MonitorElement::DQM_KIND_TH1F, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

201  {
202  if(!active_) return;
203 
204  if(mes_.empty() || !mes_[0]) return;
205 
206  switch(kind_) {
208  mes_[0]->Fill(_x);
209  break;
212  mes_[0]->Fill(_x, _wy);
213  break;
216  mes_[0]->Fill(_x, _wy, _w);
217  break;
218  default :
219  break;
220  }
221  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
int ecaldqm::MESetNonObject::findBin ( double  _x,
double  _y = 0. 
) const

Definition at line 290 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_TH1F, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

291  {
292  if(!active_) return 0;
293 
294  if(mes_.empty() || !mes_[0]) return 0;
295 
297  return mes_[0]->getTH1()->FindBin(_x);
299  return mes_[0]->getTH1()->FindBin(_x, _y);
300  else
301  return 0;
302  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
double ecaldqm::MESetNonObject::getBinContent ( int  _bin,
int  = 0 
) const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 257 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_REAL, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

258  {
259  if(!active_) return 0.;
260  if(kind_ == MonitorElement::DQM_KIND_REAL) return 0.;
261 
262  if(mes_.empty() || !mes_[0]) return 0.;
263 
264  return mes_[0]->getBinContent(_bin);
265  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
double ecaldqm::MESetNonObject::getBinEntries ( int  _bin,
int  = 0 
) const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 279 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

280  {
281  if(!active_) return 0.;
283 
284  if(mes_.empty() || !mes_[0]) return 0.;
285 
286  return mes_[0]->getBinEntries(_bin);
287  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
double ecaldqm::MESetNonObject::getBinError ( int  _bin,
int  = 0 
) const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 268 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_REAL, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

269  {
270  if(!active_) return 0.;
271  if(kind_ == MonitorElement::DQM_KIND_REAL) return 0.;
272 
273  if(mes_.empty() || !mes_[0]) return 0.;
274 
275  return mes_[0]->getBinError(_bin);
276  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
bool ecaldqm::MESetNonObject::isVariableBinning ( ) const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 305 of file MESetNonObject.cc.

References ecaldqm::binning::AxisSpecs::edges, xaxis_, yaxis_, and zaxis_.

306  {
307  return (xaxis_ && xaxis_->edges) || (yaxis_ && yaxis_->edges) || (zaxis_ && zaxis_->edges);
308  }
binning::AxisSpecs const * zaxis_
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_
MESet & ecaldqm::MESetNonObject::operator= ( MESet const &  _rhs)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 29 of file MESetNonObject.cc.

References ecaldqm::MESet::operator=(), xaxis_, yaxis_, and zaxis_.

30  {
31  delete xaxis_;
32  delete yaxis_;
33  delete zaxis_;
34  xaxis_ = nullptr;
35  yaxis_ = nullptr;
36  zaxis_ = nullptr;
37 
38  MESetNonObject const* pRhs(dynamic_cast<MESetNonObject const*>(&_rhs));
39  if(pRhs){
40  if(pRhs->xaxis_) xaxis_ = new binning::AxisSpecs(*pRhs->xaxis_);
41  if(pRhs->yaxis_) yaxis_ = new binning::AxisSpecs(*pRhs->yaxis_);
42  if(pRhs->zaxis_) zaxis_ = new binning::AxisSpecs(*pRhs->zaxis_);
43  }
44  return MESet::operator=(_rhs);
45  }
binning::AxisSpecs const * zaxis_
binning::AxisSpecs const * xaxis_
binning::AxisSpecs const * yaxis_
MESetNonObject(std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0)
virtual MESet & operator=(MESet const &)
Definition: MESet.cc:70
bool ecaldqm::MESetNonObject::retrieve ( DQMStore::IGetter _igetter,
std::string *  _failedPath = 0 
) const
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 183 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, DQMStore::IGetter::get(), ecaldqm::MESet::mes_, and ecaldqm::MESet::path_.

184  {
185  mes_.clear();
186 
187  MonitorElement* me(_igetter.get(path_));
188  if(!me){
189  if(_failedPath) *_failedPath = path_;
190  return false;
191  }
192 
193  mes_.push_back(me);
194 
195  active_ = true;
196  return true;
197  }
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:307
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
std::string path_
Definition: MESet.h:131
void ecaldqm::MESetNonObject::setBinContent ( int  _bin,
double  _content 
)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 224 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_REAL, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

225  {
226  if(!active_) return;
227  if(kind_ == MonitorElement::DQM_KIND_REAL) return;
228 
229  if(mes_.empty() || !mes_[0]) return;
230 
231  mes_[0]->setBinContent(_bin, _content);
232  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
void ecaldqm::MESetNonObject::setBinEntries ( int  _bin,
double  _entries 
)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 246 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

247  {
248  if(!active_) return;
250 
251  if(mes_.empty() || !mes_[0]) return;
252 
253  mes_[0]->setBinEntries(_bin, _entries);
254  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138
void ecaldqm::MESetNonObject::setBinError ( int  _bin,
double  _error 
)
overridevirtual

Reimplemented from ecaldqm::MESet.

Definition at line 235 of file MESetNonObject.cc.

References ecaldqm::MESet::active_, MonitorElement::DQM_KIND_REAL, ecaldqm::MESet::kind_, and ecaldqm::MESet::mes_.

236  {
237  if(!active_) return;
238  if(kind_ == MonitorElement::DQM_KIND_REAL) return;
239 
240  if(mes_.empty() || !mes_[0]) return;
241 
242  mes_[0]->setBinError(_bin, _error);
243  }
MonitorElement::Kind kind_
Definition: MESet.h:134
std::vector< MonitorElement * > mes_
Definition: MESet.h:129
bool active_
Definition: MESet.h:138

Member Data Documentation

binning::AxisSpecs const* ecaldqm::MESetNonObject::xaxis_
protected

Definition at line 41 of file MESetNonObject.h.

Referenced by book(), isVariableBinning(), operator=(), and ~MESetNonObject().

binning::AxisSpecs const* ecaldqm::MESetNonObject::yaxis_
protected

Definition at line 42 of file MESetNonObject.h.

Referenced by book(), isVariableBinning(), operator=(), and ~MESetNonObject().

binning::AxisSpecs const* ecaldqm::MESetNonObject::zaxis_
protected

Definition at line 43 of file MESetNonObject.h.

Referenced by book(), isVariableBinning(), operator=(), and ~MESetNonObject().