8 MESetEcal(_fullPath, _otype, _btype, _kind, 1, _xaxis, _yaxis),
20 throw_(
"Unsupported MonitorElement kind");
26 minutely_(_orig.minutely_),
27 shiftAxis_(_orig.shiftAxis_),
28 currentBin_(_orig.currentBin_)
35 MESetTrend const* pRhs(dynamic_cast<MESetTrend const*>(&_rhs));
49 if(_path !=
"")
path_ = _path;
67 time_t localTime(
time(0));
69 gmtime_r(&localTime, &timeBuffer);
70 unsigned utcTime(mktime(&timeBuffer));
74 else xaxis.
high = xaxis.
low + 200 * 60.;
85 for(
unsigned iME(0); iME <
mes_.size(); ++iME)
86 mes_[iME]->getTH1()->GetXaxis()->SetTimeDisplay(1);
102 fill_(iME, _t + 0.5, _wy, _w);
114 fill_(iME, _t + 0.5, _wy, _w);
126 fill_(iME, _t + 0.5, _wy, _w);
134 throw_(
"MESet type incompatible");
137 fill_(0, _t + 0.5, _wy, _w);
148 return mes_[iME]->getTH1()->FindBin(_t + 0.5, _y);
159 return mes_[iME]->getTH1()->FindBin(_t + 0.5, _y);
170 return mes_[iME]->getTH1()->FindBin(_t + 0.5, _y);
178 throw_(
"MESet type incompatible");
180 return mes_[0]->getTH1()->FindBin(_t + 0.5, _y);
187 throw_(
"Cumulative flag set for a profile plot");
194 TAxis* tAxis(
mes_[0]->getTH1()->GetXaxis());
195 int nbinsX(tAxis->GetNbins());
196 unsigned tLow(tAxis->GetBinLowEdge(1));
197 unsigned tHigh(tAxis->GetBinUpEdge(nbinsX));
199 if(!
shiftAxis_)
return _t >= tLow && _t < tHigh;
202 int unitsPerBin((tHigh - tLow) / nbinsX);
204 if(_t >= tLow && _t < tHigh){
206 int thisBin(tAxis->FindBin(_t + 0.5));
209 for(
unsigned iME(0); iME <
mes_.size(); iME++){
211 int nbinsY(me->
getTH1()->GetNbinsY());
212 for(
int iy(1); iy <= nbinsY; ++iy){
228 else if(_t >= tHigh){
229 dBin = (_t - tHigh) / unitsPerBin + 1;
237 for(
unsigned iME(0); iME <
mes_.size(); iME++){
241 int iMax(nbinsX + 1);
242 while(--iMax > 0 && !filled){
251 for(
int iy(1); iy <= me->
getNbinsY(); iy++){
259 for(
int iy(1); iy <= me->
getNbinsY(); iy++){
271 if(iMax > maxBin) maxBin = iMax;
274 if(_t < tLow - (nbinsX - maxBin) * unitsPerBin)
return false;
276 dBin = (_t - tLow) / unitsPerBin - 1;
279 int start(dBin > 0 ? dBin + 1 : nbinsX + dBin);
280 int end(dBin > 0 ? nbinsX + 1 : 0);
281 int step(dBin > 0 ? 1 : -1);
283 tLow += dBin * unitsPerBin;
284 tHigh += dBin * unitsPerBin;
286 for(
unsigned iME(0); iME <
mes_.size(); iME++){
289 me->
getTH1()->GetXaxis()->SetLimits(tLow, tHigh);
291 if((end - start) / step < 0){
305 entries += binContent;
309 ix = end - dBin - 1 *
step;
312 for(ix += step; ix !=
end; ix +=
step){
324 entries += binEntries;
329 double sumw2((
rms *
rms + binContent * binContent) * binEntries);
348 for(
int iy(1); iy <= nbinsY; iy++){
349 int orig(me->
getTH1()->GetBin(ix, iy));
350 int dest(me->
getTH1()->GetBin(ix - dBin, iy));
352 entries += binContent;
360 ix = end - dBin - 1 *
step;
361 std::vector<double> lastContent;
362 std::vector<double> lastError;
363 for(
int iy(1); iy <= nbinsY; iy++){
367 for(ix += step; ix !=
end; ix +=
step){
368 for(
int iy(1); iy <= nbinsY; iy++){
381 for(
int iy(1); iy <= nbinsY; iy++){
382 int orig(me->
getTH1()->GetBin(ix, iy));
383 int dest(me->
getTH1()->GetBin(ix - dBin, iy));
386 entries += binEntries;
391 double sumw2((
rms *
rms + binContent * binContent) * binEntries);
400 for(
int iy(1); iy <= nbinsY; iy++){
MonitorElement::Kind kind_
void setBinContent(int binx, double content)
set content of bin (1-D)
tuple start
Check for commandline option errors.
virtual void setAxisTitle(std::string const &, int=1)
MESet & operator=(MESet const &) override
MESetTrend(std::string const &, binning::ObjectType, binning::BinningType, MonitorElement::Kind, binning::AxisSpecs const *=0, binning::AxisSpecs const *=0)
MESet * clone(std::string const &="") const override
virtual void checkME_(unsigned _iME) const
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
int findBin(DetId const &, double, double=0.) const override
int getNbinsY(void) const
get # of bins in Y-axis
void fill(DetId const &, double, double=1., double=1.) override
std::vector< MonitorElement * > mes_
void throw_(std::string const &_message) const
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
void setEntries(double nentries)
set # of entries
virtual void fill_(unsigned, int, double)
unsigned findPlotIndex(ObjectType, DetId const &)
double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
double getBinContent(int binx) const
get content of bin (1-D)
void book(DQMStore::IBooker &) override
double getBinEntries(int bin) const
get # of bin entries (for profiles)
MESet & operator=(MESet const &) override
binning::ObjectType otype_
virtual const_iterator end() const
binning::AxisSpecs const * xaxis_
volatile std::atomic< bool > shutdown_flag false
binning::BinningType btype_
void Reset(void)
reset ME (ie. contents, errors, etc)
void setBinEntries(int bin, double nentries)
set # of bin entries (to be used for profiles)
void book(DQMStore::IBooker &) override