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 | Friends
EBTimingClient Class Reference

#include <EBTimingClient.h>

Inheritance diagram for EBTimingClient:
EBClient

Public Member Functions

void analyze (void)
 Analyze. More...
 
void beginJob (void)
 BeginJob. More...
 
void beginRun (void)
 BeginRun. More...
 
void cleanup (void)
 Cleanup. More...
 
 EBTimingClient (const edm::ParameterSet &ps)
 Constructor. More...
 
void endJob (void)
 EndJob. More...
 
void endRun (void)
 EndRun. More...
 
int getEvtPerJob ()
 Get Functions. More...
 
int getEvtPerRun ()
 Returns the number of processed events in this Run. More...
 
void setup (void)
 Setup. More...
 
virtual ~EBTimingClient ()
 Destructor. More...
 
- Public Member Functions inherited from EBClient
virtual ~EBClient (void)
 

Private Attributes

bool cloneME_
 
bool debug_
 
float discrepancyMean_
 
DQMStoredqmStore_
 
bool enableCleanup_
 
float expectedMean_
 
TProfile2D * h01_ [36]
 
TH2F * h02_ [36]
 
int ievt_
 
int jevt_
 
MonitorElementmea01_ [36]
 
MonitorElementmeg01_ [36]
 
MonitorElementmeh01_ [36]
 
MonitorElementmeh02_ [36]
 
MonitorElementmep01_ [36]
 
MonitorElementmer01_ [36]
 
std::string prefixME_
 
float RMSThreshold_
 
std::vector< int > superModules_
 
bool verbose_
 

Friends

class EBSummaryClient
 

Detailed Description

Definition at line 32 of file EBTimingClient.h.

Constructor & Destructor Documentation

EBTimingClient::EBTimingClient ( const edm::ParameterSet ps)

Constructor.

Definition at line 35 of file EBTimingClient.cc.

References cloneME_, debug_, discrepancyMean_, enableCleanup_, expectedMean_, edm::ParameterSet::getUntrackedParameter(), h01_, h02_, i, ecalpyutils::ism(), mea01_, meg01_, meh01_, meh02_, mep01_, mer01_, prefixME_, RMSThreshold_, superModules_, and verbose_.

35  {
36 
37  // cloneME switch
38  cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
39 
40  // verbose switch
41  verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
42 
43  // debug switch
44  debug_ = ps.getUntrackedParameter<bool>("debug", false);
45 
46  // prefixME path
47  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
48 
49  // enableCleanup_ switch
50  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
51 
52  // vector of selected Super Modules (Defaults to all 36).
53  superModules_.reserve(36);
54  for ( unsigned int i = 1; i <= 36; i++ ) superModules_.push_back(i);
55  superModules_ = ps.getUntrackedParameter<std::vector<int> >("superModules", superModules_);
56 
57  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
58 
59  int ism = superModules_[i];
60 
61  h01_[ism-1] = 0;
62  h02_[ism-1] = 0;
63 
64  meh01_[ism-1] = 0;
65  meh02_[ism-1] = 0;
66 
67  }
68 
69  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
70 
71  int ism = superModules_[i];
72 
73  meg01_[ism-1] = 0;
74 
75  mea01_[ism-1] = 0;
76 
77  mep01_[ism-1] = 0;
78 
79  mer01_[ism-1] = 0;
80 
81  }
82 
83  expectedMean_ = 0.0;
84  discrepancyMean_ = 12.5;
85  RMSThreshold_ = 62.5;
86 
87 }
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * mep01_[36]
MonitorElement * mer01_[36]
std::vector< int > superModules_
TProfile2D * h01_[36]
std::string prefixME_
MonitorElement * meh01_[36]
MonitorElement * meh02_[36]
TH2F * h02_[36]
MonitorElement * meg01_[36]
MonitorElement * mea01_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
EBTimingClient::~EBTimingClient ( )
virtual

Destructor.

Definition at line 89 of file EBTimingClient.cc.

89  {
90 
91 }

Member Function Documentation

void EBTimingClient::analyze ( void  )
virtual

Analyze.

Implements EBClient.

Definition at line 314 of file EBTimingClient.cc.

References abs, cloneME_, gather_cfg::cout, debug_, discrepancyMean_, dqmStore_, EcalBarrel, expectedMean_, MonitorElement::Fill(), DQMStore::get(), UtilsClient::getBinStatistics(), h01_, h02_, trackerHits::histo, i, Numbers::icEB(), ievt_, jevt_, UtilsClient::maskBinContent(), Masks::maskChannel(), mea01_, meg01_, meh01_, meh02_, mep01_, mer01_, EcalDQMStatusHelper::PHYSICS_BAD_CHANNEL_WARNING, prefixME_, MonitorElement::Reset(), RMSThreshold_, Numbers::sEB(), MonitorElement::setBinContent(), MonitorElement::setBinError(), and superModules_.

314  {
315 
316  ievt_++;
317  jevt_++;
318  if ( ievt_ % 10 == 0 ) {
319  if ( debug_ ) std::cout << "EBTimingClient: ievt/jevt = " << ievt_ << "/" << jevt_ << std::endl;
320  }
321 
322  uint32_t bits01 = 0;
324 
325  char histo[200];
326 
327  MonitorElement* me;
328 
329  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
330 
331  int ism = superModules_[i];
332 
333  sprintf(histo, (prefixME_ + "/EBTimingTask/EBTMT timing %s").c_str(), Numbers::sEB(ism).c_str());
334  me = dqmStore_->get(histo);
335  h01_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, h01_[ism-1] );
336  meh01_[ism-1] = me;
337 
338  sprintf(histo, (prefixME_ + "/EBTimingTask/EBTMT timing vs amplitude %s").c_str(), Numbers::sEB(ism).c_str());
339  me = dqmStore_->get(histo);
340  h02_[ism-1] = UtilsClient::getHisto<TH2F*>( me, cloneME_, h02_[ism-1] );
341  meh02_[ism-1] = me;
342 
343  if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
344  if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
345  if ( mep01_[ism-1] ) mep01_[ism-1]->Reset();
346  if ( mer01_[ism-1] ) mer01_[ism-1]->Reset();
347 
348  for ( int ie = 1; ie <= 85; ie++ ) {
349  for ( int ip = 1; ip <= 20; ip++ ) {
350 
351  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent(ie, ip, 2.);
352 
353  bool update01;
354 
355  float num01;
356  float mean01;
357  float rms01;
358 
359  update01 = UtilsClient::getBinStatistics(h01_[ism-1], ie, ip, num01, mean01, rms01);
360  // Task timing map is shifted of +50 ns for graphical reasons. Shift back it.
361  mean01 -= 50.;
362 
363  if ( update01 ) {
364 
365  float val;
366 
367  val = 1.;
368  if ( std::abs(mean01 - expectedMean_) > discrepancyMean_ )
369  val = 0.;
370  if ( rms01 > RMSThreshold_ )
371  val = 0.;
372  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent(ie, ip, val);
373 
374  int ic = Numbers::icEB(ism, ie, ip);
375 
376  if ( mea01_[ism-1] ) {
377  mea01_[ism-1]->setBinContent(ic, mean01);
378  mea01_[ism-1]->setBinError(ic, rms01);
379  }
380  if ( mep01_[ism-1] ) mep01_[ism-1]->Fill(mean01);
381  if ( mer01_[ism-1] ) mer01_[ism-1]->Fill(rms01);
382 
383  }
384 
385  if ( Masks::maskChannel(ism, ie, ip, bits01, EcalBarrel) ) UtilsClient::maskBinContent( meg01_[ism-1], ie, ip );
386 
387  }
388  }
389 
390  }
391 
392 }
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
static bool maskChannel(int ism, int i1, int i2, uint32_t bits, const EcalSubdetector subdet)
Definition: Masks.cc:60
static std::string sEB(const int ism)
Definition: Numbers.cc:81
MonitorElement * mep01_[36]
static const int PHYSICS_BAD_CHANNEL_WARNING
static void maskBinContent(const MonitorElement *me, const int ix, const int iy)
Mask the bin content.
Definition: UtilsClient.h:189
#define abs(x)
Definition: mlp_lapack.h:159
tuple histo
Definition: trackerHits.py:12
MonitorElement * mer01_[36]
static int icEB(const int ism, const int ix, const int iy)
Definition: Numbers.cc:892
std::vector< int > superModules_
void Fill(long long x)
TProfile2D * h01_[36]
std::string prefixME_
MonitorElement * meh01_[36]
MonitorElement * meh02_[36]
DQMStore * dqmStore_
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1270
TH2F * h02_[36]
MonitorElement * meg01_[36]
tuple cout
Definition: gather_cfg.py:41
MonitorElement * mea01_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
void Reset(void)
reset ME (ie. contents, errors, etc)
static bool getBinStatistics(const T *histo, const int ix, const int iy, float &num, float &mean, float &rms)
Returns true if the bin contains good statistical data.
Definition: UtilsClient.h:133
void EBTimingClient::beginJob ( void  )
virtual

BeginJob.

Implements EBClient.

Definition at line 93 of file EBTimingClient.cc.

References gather_cfg::cout, debug_, dqmStore_, ievt_, jevt_, and cmsCodeRules.cppFunctionSkipper::operator.

93  {
94 
96 
97  if ( debug_ ) std::cout << "EBTimingClient: beginJob" << std::endl;
98 
99  ievt_ = 0;
100  jevt_ = 0;
101 
102 }
DQMStore * dqmStore_
tuple cout
Definition: gather_cfg.py:41
void EBTimingClient::beginRun ( void  )
virtual

BeginRun.

Implements EBClient.

Definition at line 104 of file EBTimingClient.cc.

References gather_cfg::cout, debug_, jevt_, and setup().

104  {
105 
106  if ( debug_ ) std::cout << "EBTimingClient: beginRun" << std::endl;
107 
108  jevt_ = 0;
109 
110  this->setup();
111 
112 }
tuple cout
Definition: gather_cfg.py:41
void setup(void)
Setup.
void EBTimingClient::cleanup ( void  )
virtual

Cleanup.

Implements EBClient.

Definition at line 186 of file EBTimingClient.cc.

References cloneME_, dqmStore_, enableCleanup_, edm::getName(), h01_, h02_, i, ecalpyutils::ism(), mea01_, meg01_, meh01_, meh02_, mep01_, mer01_, prefixME_, DQMStore::removeElement(), DQMStore::setCurrentFolder(), and superModules_.

Referenced by endJob(), and endRun().

186  {
187 
188  if ( ! enableCleanup_ ) return;
189 
190  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
191 
192  int ism = superModules_[i];
193 
194  if ( cloneME_ ) {
195  if ( h01_[ism-1] ) delete h01_[ism-1];
196  if ( h02_[ism-1] ) delete h02_[ism-1];
197  }
198 
199  h01_[ism-1] = 0;
200  h02_[ism-1] = 0;
201 
202  meh01_[ism-1] = 0;
203  meh02_[ism-1] = 0;
204 
205  }
206 
207  dqmStore_->setCurrentFolder( prefixME_ + "/EBTimingClient" );
208 
209  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
210 
211  int ism = superModules_[i];
212 
213  if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
214  meg01_[ism-1] = 0;
215 
216  if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
217  mea01_[ism-1] = 0;
218 
219  if ( mep01_[ism-1] ) dqmStore_->removeElement( mep01_[ism-1]->getName() );
220  mep01_[ism-1] = 0;
221 
222  if ( mer01_[ism-1] ) dqmStore_->removeElement( mer01_[ism-1]->getName() );
223  mer01_[ism-1] = 0;
224 
225  }
226 
227 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * mep01_[36]
MonitorElement * mer01_[36]
std::vector< int > superModules_
TProfile2D * h01_[36]
std::string prefixME_
MonitorElement * meh01_[36]
MonitorElement * meh02_[36]
void removeElement(const std::string &name)
Definition: DQMStore.cc:2338
DQMStore * dqmStore_
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
TH2F * h02_[36]
MonitorElement * meg01_[36]
MonitorElement * mea01_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
void EBTimingClient::endJob ( void  )
virtual

EndJob.

Implements EBClient.

Definition at line 114 of file EBTimingClient.cc.

References cleanup(), gather_cfg::cout, debug_, and ievt_.

114  {
115 
116  if ( debug_ ) std::cout << "EBTimingClient: endJob, ievt = " << ievt_ << std::endl;
117 
118  this->cleanup();
119 
120 }
tuple cout
Definition: gather_cfg.py:41
void cleanup(void)
Cleanup.
void EBTimingClient::endRun ( void  )
virtual

EndRun.

Implements EBClient.

Definition at line 122 of file EBTimingClient.cc.

References cleanup(), gather_cfg::cout, debug_, and jevt_.

122  {
123 
124  if ( debug_ ) std::cout << "EBTimingClient: endRun, jevt = " << jevt_ << std::endl;
125 
126  this->cleanup();
127 
128 }
tuple cout
Definition: gather_cfg.py:41
void cleanup(void)
Cleanup.
int EBTimingClient::getEvtPerJob ( void  )
inlinevirtual

Get Functions.

Implements EBClient.

Definition at line 71 of file EBTimingClient.h.

References ievt_.

71 { return ievt_; }
int EBTimingClient::getEvtPerRun ( void  )
inlinevirtual

Returns the number of processed events in this Run.

Implements EBClient.

Definition at line 72 of file EBTimingClient.h.

References jevt_.

72 { return jevt_; }
void EBTimingClient::setup ( void  )
virtual

Setup.

Implements EBClient.

Definition at line 130 of file EBTimingClient.cc.

References DQMStore::book1D(), DQMStore::book2D(), dqmStore_, edm::getName(), trackerHits::histo, i, ecalpyutils::ism(), mea01_, meg01_, mep01_, mer01_, prefixME_, DQMStore::removeElement(), MonitorElement::Reset(), Numbers::sEB(), MonitorElement::setAxisTitle(), MonitorElement::setBinContent(), DQMStore::setCurrentFolder(), and superModules_.

Referenced by beginRun().

130  {
131 
132  char histo[200];
133 
134  dqmStore_->setCurrentFolder( prefixME_ + "/EBTimingClient" );
135 
136  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
137 
138  int ism = superModules_[i];
139 
140  if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
141  sprintf(histo, "EBTMT timing quality %s", Numbers::sEB(ism).c_str());
142  meg01_[ism-1] = dqmStore_->book2D(histo, histo, 85, 0., 85., 20, 0., 20.);
143  meg01_[ism-1]->setAxisTitle("ieta", 1);
144  meg01_[ism-1]->setAxisTitle("iphi", 2);
145 
146  if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
147  sprintf(histo, "EBTMT timing %s", Numbers::sEB(ism).c_str());
148  mea01_[ism-1] = dqmStore_->book1D(histo, histo, 1700, 0., 1700.);
149  mea01_[ism-1]->setAxisTitle("channel", 1);
150  mea01_[ism-1]->setAxisTitle("time (ns)", 2);
151 
152  if ( mep01_[ism-1] ) dqmStore_->removeElement( mep01_[ism-1]->getName() );
153  sprintf(histo, "EBTMT timing mean %s", Numbers::sEB(ism).c_str());
154  mep01_[ism-1] = dqmStore_->book1D(histo, histo, 100, -50.0, 50.0);
155  mep01_[ism-1]->setAxisTitle("mean (ns)", 1);
156 
157  if ( mer01_[ism-1] ) dqmStore_->removeElement( mer01_[ism-1]->getName() );
158  sprintf(histo, "EBTMT timing rms %s", Numbers::sEB(ism).c_str());
159  mer01_[ism-1] = dqmStore_->book1D(histo, histo, 100, 0.0, 150.0);
160  mer01_[ism-1]->setAxisTitle("rms (ns)", 1);
161 
162  }
163 
164  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
165 
166  int ism = superModules_[i];
167 
168  if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
169 
170  for ( int ie = 1; ie <= 85; ie++ ) {
171  for ( int ip = 1; ip <= 20; ip++ ) {
172 
173  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ie, ip, 2. );
174 
175  }
176  }
177 
178  if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
179  if ( mep01_[ism-1] ) mep01_[ism-1]->Reset();
180  if ( mer01_[ism-1] ) mer01_[ism-1]->Reset();
181 
182  }
183 
184 }
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
static std::string sEB(const int ism)
Definition: Numbers.cc:81
MonitorElement * mep01_[36]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
tuple histo
Definition: trackerHits.py:12
MonitorElement * mer01_[36]
std::vector< int > superModules_
std::string prefixME_
void removeElement(const std::string &name)
Definition: DQMStore.cc:2338
DQMStore * dqmStore_
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
MonitorElement * meg01_[36]
MonitorElement * mea01_[36]
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:647
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237

Friends And Related Function Documentation

friend class EBSummaryClient
friend

Definition at line 34 of file EBTimingClient.h.

Member Data Documentation

bool EBTimingClient::cloneME_
private

Definition at line 79 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), and EBTimingClient().

bool EBTimingClient::debug_
private

Definition at line 82 of file EBTimingClient.h.

Referenced by analyze(), beginJob(), beginRun(), EBTimingClient(), endJob(), and endRun().

float EBTimingClient::discrepancyMean_
private

Definition at line 109 of file EBTimingClient.h.

Referenced by analyze(), and EBTimingClient().

DQMStore* EBTimingClient::dqmStore_
private

Definition at line 90 of file EBTimingClient.h.

Referenced by analyze(), beginJob(), cleanup(), and setup().

bool EBTimingClient::enableCleanup_
private

Definition at line 86 of file EBTimingClient.h.

Referenced by cleanup(), and EBTimingClient().

float EBTimingClient::expectedMean_
private

Definition at line 108 of file EBTimingClient.h.

Referenced by analyze(), and EBTimingClient().

TProfile2D* EBTimingClient::h01_[36]
private

Definition at line 95 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), and EBTimingClient().

TH2F* EBTimingClient::h02_[36]
private

Definition at line 96 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), and EBTimingClient().

int EBTimingClient::ievt_
private

Definition at line 76 of file EBTimingClient.h.

Referenced by analyze(), beginJob(), endJob(), and getEvtPerJob().

int EBTimingClient::jevt_
private

Definition at line 77 of file EBTimingClient.h.

Referenced by analyze(), beginJob(), beginRun(), endRun(), and getEvtPerRun().

MonitorElement* EBTimingClient::mea01_[36]
private

Definition at line 100 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), EBTimingClient(), and setup().

MonitorElement* EBTimingClient::meg01_[36]
private

Definition at line 98 of file EBTimingClient.h.

Referenced by EBSummaryClient::analyze(), analyze(), cleanup(), EBTimingClient(), and setup().

MonitorElement* EBTimingClient::meh01_[36]
private

Definition at line 92 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), and EBTimingClient().

MonitorElement* EBTimingClient::meh02_[36]
private

Definition at line 93 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), and EBTimingClient().

MonitorElement* EBTimingClient::mep01_[36]
private

Definition at line 102 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), EBTimingClient(), and setup().

MonitorElement* EBTimingClient::mer01_[36]
private

Definition at line 104 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), EBTimingClient(), and setup().

std::string EBTimingClient::prefixME_
private

Definition at line 84 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), EBTimingClient(), and setup().

float EBTimingClient::RMSThreshold_
private

Definition at line 110 of file EBTimingClient.h.

Referenced by analyze(), and EBTimingClient().

std::vector<int> EBTimingClient::superModules_
private

Definition at line 88 of file EBTimingClient.h.

Referenced by analyze(), cleanup(), EBTimingClient(), and setup().

bool EBTimingClient::verbose_
private

Definition at line 81 of file EBTimingClient.h.

Referenced by EBTimingClient().