CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
DTTimeEvolutionHisto Class Reference

#include <DTTimeEvolutionHisto.h>

Public Member Functions

void accumulateValueTimeSlot (float value)
 
 DTTimeEvolutionHisto (DQMStore::IBooker &ibooker, const std::string &name, const std::string &title, int nbins, int lsPrescale, bool sliding, int mode=0)
 
 DTTimeEvolutionHisto (DQMStore::IBooker &ibooker, const std::string &name, const std::string &title, int nbins, int firstLS, int lsPrescale, bool sliding, int mode=0)
 
 DTTimeEvolutionHisto (MonitorElement *)
 
void normalizeTo (const MonitorElement *histForNorm)
 
void setTimeSlotValue (float value, int timeSlot)
 
void updateTimeSlot (int ls, int nEventsInLS)
 
virtual ~DTTimeEvolutionHisto ()
 Destructor. More...
 

Private Attributes

bool doSlide
 
MonitorElementhisto
 
int nBookedBins
 
std::map< int, int > nEventsInLastTimeSlot
 
std::map< int, int > nLumiTrInLastTimeSlot
 
int theFirstLS
 
int theLSPrescale
 
int theMode
 
float valueLastTimeSlot
 

Detailed Description

No description available.

Author
G. Cerminara - INFN Torino

Definition at line 18 of file DTTimeEvolutionHisto.h.

Constructor & Destructor Documentation

DTTimeEvolutionHisto::DTTimeEvolutionHisto ( DQMStore::IBooker ibooker,
const std::string &  name,
const std::string &  title,
int  nbins,
int  lsPrescale,
bool  sliding,
int  mode = 0 
)

Constructor Parameters are:

  • pointer to DQMStore
  • name of the MonitorElement
  • title of the MonitorElement
  • # of bins
  • # of LumiSections per bin
  • mode:
    0 -> rate (over event)
    need to fill using accumulateValueTimeSlot and updateTimeSlot methods
    1 -> # of entries
    2 -> # of events
    3 -> mean over LSs
DTTimeEvolutionHisto::DTTimeEvolutionHisto ( DQMStore::IBooker ibooker,
const std::string &  name,
const std::string &  title,
int  nbins,
int  firstLS,
int  lsPrescale,
bool  sliding,
int  mode = 0 
)
DTTimeEvolutionHisto::DTTimeEvolutionHisto ( MonitorElement histoGot)

Definition at line 75 of file DTTimeEvolutionHisto.cc.

References histo.

76  theLSPrescale(-1),
77  doSlide(false),
78  theMode(0) { // FIXME: set other memebers to sensible values
79  LogVerbatim("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
80  << "[DTTimeEvolutionHisto] Retrieve ME with name: " << " "<< endl;
81  histo = histoGot;
82 }
DTTimeEvolutionHisto::~DTTimeEvolutionHisto ( )
virtual

Destructor.

Definition at line 85 of file DTTimeEvolutionHisto.cc.

85 {}

Member Function Documentation

void DTTimeEvolutionHisto::accumulateValueTimeSlot ( float  value)
void DTTimeEvolutionHisto::normalizeTo ( const MonitorElement histForNorm)

Definition at line 202 of file DTTimeEvolutionHisto.cc.

References newFWLiteAna::bin, MonitorElement::getBinContent(), MonitorElement::getNbinsX(), histo, and MonitorElement::setBinContent().

Referenced by DTSegmentAnalysisTest::dqmEndJob().

202  {
203  if(histo == 0) {
204  LogWarning("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
205  << "[DTTimeEvolutionHisto]***Error: pointer to ME is NULL" << endl;
206  return;
207  }
208  int nBins = histo->getNbinsX();
209  if(histForNorm->getNbinsX() != nBins) {
210  LogWarning("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
211  << "[DTTimeEvolutionHisto]***Error: normalizing histos with != # of bins" << endl;
212  return;
213  }
214  for(int bin = 1; bin <= nBins; ++bin) { // loop over bins
215  if(histForNorm->getBinContent(bin) != 0) {
216  double normValue = histo->getBinContent(bin)/histForNorm->getBinContent(bin);
217  LogVerbatim("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
218  << "[DTTimeEvolutionHisto] Normalizing bin: " << bin << " to: " << histo->getBinContent(bin) << " / " << histForNorm->getBinContent(bin)
219  << " = " << normValue << endl;
220  histo->setBinContent(bin, normValue);
221  } else {
222  histo->setBinContent(bin, 0);
223  }
224  }
225 }
void setBinContent(int binx, double content)
set content of bin (1-D)
double getBinContent(int binx) const
get content of bin (1-D)
int getNbinsX(void) const
get # of bins in X-axis
void DTTimeEvolutionHisto::setTimeSlotValue ( float  value,
int  timeSlot 
)

Definition at line 89 of file DTTimeEvolutionHisto.cc.

References newFWLiteAna::bin, doSlide, MonitorElement::Fill(), MonitorElement::getBinContent(), MonitorElement::getBinError(), MonitorElement::getTH1F(), histo, nBookedBins, MonitorElement::setBinContent(), MonitorElement::setBinError(), and MonitorElement::setBinLabel().

Referenced by DTDCSByLumiSummary::dqmEndJob(), and updateTimeSlot().

89  {
90 
91  if(!doSlide) {
92 
93  histo->Fill(timeSlot,value);
94  } else {
95  for(int bin = 1; bin != nBookedBins; ++bin) {
96  float value = histo->getBinContent(bin);
97 
98  if(bin == 1) { // average of previous time slots (fixme)
99  histo->setBinContent(bin, (value + histo->getBinContent(bin+1))/2.);
100  } else if(bin != nBookedBins) {
103  histo->setBinLabel(bin, histo->getTH1F()->GetXaxis()->GetBinLabel(bin+1),1);
104  }
105  }
107  }
108 }
void setBinContent(int binx, double content)
set content of bin (1-D)
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void Fill(long long x)
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
TH1F * getTH1F(void) const
double getBinContent(int binx) const
get content of bin (1-D)
void DTTimeEvolutionHisto::updateTimeSlot ( int  ls,
int  nEventsInLS 
)

Definition at line 117 of file DTTimeEvolutionHisto.cc.

References doSlide, MonitorElement::getBinContent(), histo, eostools::ls(), nBookedBins, nEvents, nEventsInLastTimeSlot, nLumiTrInLastTimeSlot, MonitorElement::setBinLabel(), setTimeSlotValue(), theFirstLS, theLSPrescale, theMode, relativeConstraints::value, and valueLastTimeSlot.

Referenced by DTSegmentAnalysisTask::endLuminosityBlock(), and DTBlockedROChannelsTest::performClientDiagnostic().

117  {
118 
119  if(doSlide) { // sliding bins
120  // count LS in this time-slot
121  if (nEventsInLastTimeSlot.find(ls) != nEventsInLastTimeSlot.end()) {
122  nEventsInLastTimeSlot[ls] += nEventsInLS;
124  } else {
125  nEventsInLastTimeSlot[ls] = nEventsInLS;
127  }
128 
129 
130  if(nEventsInLastTimeSlot.size() > 0 && nEventsInLastTimeSlot.size()%theLSPrescale==0) { // update the value of the slot and reset the counters
131  int firstLSinTimeSlot = nEventsInLastTimeSlot.begin()->first;
132  int lastLSinTimeSlot = nEventsInLastTimeSlot.rbegin()->first;
133 
134  map<int,int>::const_iterator nEventsIt = nEventsInLastTimeSlot.begin();
135  map<int,int>::const_iterator nEventsEnd = nEventsInLastTimeSlot.end();
136 
137  int nEvents = 0;
138  for (;nEventsIt!=nEventsEnd;++nEventsIt)
139  nEvents+=nEventsIt->second;
140 
141  LogVerbatim("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
142  << "[DTTimeEvolutionHisto] Update time-slot, # entries: " << valueLastTimeSlot
143  << " # events: " << nEvents << endl;
144  // set the bin content
145 
146  float value = 0;
147  if(theMode == 0) {
148  if(nEvents != 0) value = valueLastTimeSlot/(float)nEvents;
149  } else if(theMode == 1) {
150  value = valueLastTimeSlot;
151  } else if(theMode == 2) {
152  value = nEvents;
153  } else if(theMode == 3) {
154  map<int,int>::const_iterator nLumiTrIt = nLumiTrInLastTimeSlot.begin();
155  map<int,int>::const_iterator nLumiTrEnd = nLumiTrInLastTimeSlot.end();
156 
157  float nLumiTr = 0.;
158  for (;nLumiTrIt!=nLumiTrEnd;++nLumiTrIt)
159  nLumiTr+=nLumiTrIt->second;
160 
161  value = valueLastTimeSlot/nLumiTr;
162  }
164  LogVerbatim("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
165  << " updated value: " << histo->getBinContent(nBookedBins) << endl;
166 
167  // set the bin label
168  stringstream binLabel;
169  binLabel << "LS " << firstLSinTimeSlot;
170  if(nEventsInLastTimeSlot.size() > 1)
171  binLabel << "-" << lastLSinTimeSlot;
172 
173  histo->setBinLabel(nBookedBins,binLabel.str(),1);
174 
175  // reset the counters for the time slot
176  nEventsInLastTimeSlot.clear();
177  nLumiTrInLastTimeSlot.clear();
178  valueLastTimeSlot = 0;
179  }
180 
181 
182  } else {
183  int binN = (int)ls-(theFirstLS-1)/(int)theLSPrescale;
184  // set the bin content
185  float value = 0;
186  if(theMode == 1) {
187  value = valueLastTimeSlot;
188  } else if(theMode == 2) {
189  value = nEventsInLS;
190  } else if(theMode == 3) {
192  }
193  LogVerbatim("DTDQM|DTMonitorModule|DTMonitorClient|DTTimeEvolutionHisto")
194  << "[DTTimeEvolutionHisto] Update time-slot: "<< binN << " with value: " << value << endl;
195  setTimeSlotValue(value,binN);
196  }
197 }
std::map< int, int > nLumiTrInLastTimeSlot
def ls
Definition: eostools.py:348
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void setTimeSlotValue(float value, int timeSlot)
std::map< int, int > nEventsInLastTimeSlot
double getBinContent(int binx) const
get content of bin (1-D)
UInt_t nEvents
Definition: hcalCalib.cc:42

Member Data Documentation

bool DTTimeEvolutionHisto::doSlide
private

Definition at line 74 of file DTTimeEvolutionHisto.h.

Referenced by setTimeSlotValue(), and updateTimeSlot().

MonitorElement* DTTimeEvolutionHisto::histo
private
int DTTimeEvolutionHisto::nBookedBins
private

Definition at line 75 of file DTTimeEvolutionHisto.h.

Referenced by setTimeSlotValue(), and updateTimeSlot().

std::map<int,int> DTTimeEvolutionHisto::nEventsInLastTimeSlot
private

Definition at line 70 of file DTTimeEvolutionHisto.h.

Referenced by updateTimeSlot().

std::map<int,int> DTTimeEvolutionHisto::nLumiTrInLastTimeSlot
private

Definition at line 71 of file DTTimeEvolutionHisto.h.

Referenced by updateTimeSlot().

int DTTimeEvolutionHisto::theFirstLS
private

Definition at line 72 of file DTTimeEvolutionHisto.h.

Referenced by updateTimeSlot().

int DTTimeEvolutionHisto::theLSPrescale
private

Definition at line 73 of file DTTimeEvolutionHisto.h.

Referenced by updateTimeSlot().

int DTTimeEvolutionHisto::theMode
private

Definition at line 76 of file DTTimeEvolutionHisto.h.

Referenced by updateTimeSlot().

float DTTimeEvolutionHisto::valueLastTimeSlot
private

Definition at line 69 of file DTTimeEvolutionHisto.h.

Referenced by accumulateValueTimeSlot(), and updateTimeSlot().