CMS 3D CMS Logo

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

#include <EBDataCertificationTask.h>

Inheritance diagram for EBDataCertificationTask:
edm::EDAnalyzer

Public Member Functions

 EBDataCertificationTask (const edm::ParameterSet &ps)
 Constructor. More...
 
virtual ~EBDataCertificationTask ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze. More...
 
void beginJob (void)
 BeginJob. More...
 
void beginLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup)
 BeginLuminosityBlock. More...
 
void beginRun (const edm::Run &r, const edm::EventSetup &c)
 BeginRun. More...
 
void cleanup (void)
 Cleanup. More...
 
void endJob (void)
 EndJob. More...
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup)
 EndLuminosityBlock. More...
 
void endRun (const edm::Run &r, const edm::EventSetup &c)
 EndRun. More...
 
void reset (void)
 Reset. More...
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Attributes

bool cloneME_
 
DQMStoredqmStore_
 
bool enableCleanup_
 
TH2F * hDAQ_
 
TH2F * hDCS_
 
TH2F * hDQM_
 
TH1F * hFrontendByLumi_
 
TH1F * hIntegrityByLumi_
 
TH1F * hSynchronizationByLumi_
 
MonitorElementmeEBDataCertification_ [36]
 
MonitorElementmeEBDataCertificationSummary_
 
MonitorElementmeEBDataCertificationSummaryMap_
 
MonitorElementmeEBReportSummary_
 
MonitorElementmeEBReportSummaryContents_ [36]
 
bool mergeRuns_
 
std::string prefixME_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 19 of file EBDataCertificationTask.h.

Constructor & Destructor Documentation

EBDataCertificationTask::EBDataCertificationTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 28 of file EBDataCertificationTask.cc.

References cloneME_, dqmStore_, enableCleanup_, edm::ParameterSet::getUntrackedParameter(), hDAQ_, hDCS_, hDQM_, hFrontendByLumi_, hIntegrityByLumi_, hSynchronizationByLumi_, i, meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, mergeRuns_, cmsCodeRules.cppFunctionSkipper::operator, and prefixME_.

28  {
29 
31 
32  // cloneME switch
33  cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
34 
35  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
36 
37  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
38 
39  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
40 
43  for (int i = 0; i < 36; i++) {
45  }
46 
47  hDQM_ = 0;
48  hDAQ_ = 0;
49  hDCS_ = 0;
51  hFrontendByLumi_ = 0;
53 
54 }
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * meEBDataCertificationSummary_
MonitorElement * meEBDataCertificationSummaryMap_
MonitorElement * meEBDataCertification_[36]
EBDataCertificationTask::~EBDataCertificationTask ( )
virtual

Destructor.

Definition at line 56 of file EBDataCertificationTask.cc.

56  {
57 
58 }

Member Function Documentation

void EBDataCertificationTask::analyze ( const edm::Event e,
const edm::EventSetup c 
)
protectedvirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 367 of file EBDataCertificationTask.cc.

367  {
368 
369 }
void EBDataCertificationTask::beginJob ( void  )
protectedvirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 60 of file EBDataCertificationTask.cc.

References DQMStore::book2D(), DQMStore::bookFloat(), dqmStore_, MonitorElement::Fill(), i, meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, mergeVDriftHistosByStation::name, prefixME_, Numbers::sEB(), MonitorElement::setAxisTitle(), and DQMStore::setCurrentFolder().

60  {
61 
62  std::string name;
63 
64  if ( dqmStore_ ) {
65 
66  dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo");
67 
68  name = "CertificationSummary";
71 
72  name = "CertificationSummaryMap";
73  meEBDataCertificationSummaryMap_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, 0., 34.);
76 
77  dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo/CertificationContents");
78 
79  for (int i = 0; i < 36; i++) {
80  name = "EcalBarrel_" + Numbers::sEB(i+1);
83  }
84 
85  }
86 
87 }
int i
Definition: DBlmapReader.cc:9
static std::string sEB(const int ism)
Definition: Numbers.cc:87
MonitorElement * meEBDataCertificationSummary_
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:451
void Fill(long long x)
MonitorElement * meEBDataCertificationSummaryMap_
MonitorElement * meEBDataCertification_[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:642
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
void EBDataCertificationTask::beginLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
)
protectedvirtual

BeginLuminosityBlock.

Reimplemented from edm::EDAnalyzer.

Definition at line 95 of file EBDataCertificationTask.cc.

95  {
96 
97 }
void EBDataCertificationTask::beginRun ( const edm::Run r,
const edm::EventSetup c 
)
protectedvirtual

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 241 of file EBDataCertificationTask.cc.

References mergeRuns_, and reset().

241  {
242 
243  if ( ! mergeRuns_ ) this->reset();
244 
245 }
void EBDataCertificationTask::cleanup ( void  )
protected

Cleanup.

Definition at line 337 of file EBDataCertificationTask.cc.

References cloneME_, dqmStore_, edm::getName(), MonitorElement::getName(), hDAQ_, hDCS_, hDQM_, hFrontendByLumi_, hIntegrityByLumi_, hSynchronizationByLumi_, i, meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().

Referenced by endJob().

337  {
338 
339  if ( cloneME_ ) {
340  if( hDQM_ ) delete hDQM_;
341  if( hDAQ_ ) delete hDAQ_;
342  if( hDCS_ ) delete hDCS_;
344  if( hFrontendByLumi_ ) delete hFrontendByLumi_;
346  }
347  hDQM_ = 0;
348  hDAQ_ = 0;
349  hDCS_ = 0;
350  hIntegrityByLumi_ = 0;
351  hFrontendByLumi_ = 0;
353 
354  if ( dqmStore_ ) {
355  dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo");
358 
359  dqmStore_->setCurrentFolder(prefixME_ + "/EventInfo/CertificationContents");
360  for (int i = 0; i < 36; i++) {
362  }
363  }
364 
365 }
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
MonitorElement * meEBDataCertificationSummary_
MonitorElement * meEBDataCertificationSummaryMap_
void removeElement(const std::string &name)
Definition: DQMStore.cc:2353
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
MonitorElement * meEBDataCertification_[36]
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
void EBDataCertificationTask::endJob ( void  )
protectedvirtual

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 89 of file EBDataCertificationTask.cc.

References cleanup(), and enableCleanup_.

89  {
90 
91  if ( enableCleanup_ ) this->cleanup();
92 
93 }
void EBDataCertificationTask::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
)
protectedvirtual

EndLuminosityBlock.

Reimplemented from edm::EDAnalyzer.

Definition at line 99 of file EBDataCertificationTask.cc.

References abs, cloneME_, dqmStore_, benchmark_cfg::errors, MonitorElement::Fill(), DQMStore::get(), hDAQ_, hDCS_, hFrontendByLumi_, hIntegrityByLumi_, hSynchronizationByLumi_, i, ecalpyutils::ism(), meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, min, prefixME_, reset(), Numbers::sEB(), and MonitorElement::setBinContent().

99  {
100 
101  this->reset();
102 
103  MonitorElement* me;
104 
105  // evaluate the DQM quality of observables checked by lumi
106  float DQMVal[36];
107  for (int i = 0; i < 36; i++) {
108  DQMVal[i] = -1.;
109  }
110 
111  me = dqmStore_->get(prefixME_ + "/EBIntegrityTask/EBIT weighted integrity errors by lumi");
112  hIntegrityByLumi_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hIntegrityByLumi_ );
113 
114  me = dqmStore_->get(prefixME_ + "/EBStatusFlagsTask/FEStatus/EBSFT weighted frontend errors by lumi");
115  hFrontendByLumi_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hFrontendByLumi_ );
116 
117  me = dqmStore_->get(prefixME_ + "/EBRawDataTask/EBRDT FE synchronization errors by lumi");
118  hSynchronizationByLumi_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hSynchronizationByLumi_ );
119 
121 
122  float integrityErrSum = 0.;
123  float integrityQual = 1.0;
124  float frontendErrSum = 0.;
125  float frontendQual = 1.0;
126  float synchronizationErrSum = 0.;
127  float synchronizationQual = 1.0;
128 
129  for ( int i=0; i<36; i++) {
130  float ismIntegrityQual = 1.0;
131  if( hIntegrityByLumi_->GetBinContent(0) > 0 ) {
132  float errors = hIntegrityByLumi_->GetBinContent(i+1);
133  ismIntegrityQual = 1.0 - errors/hIntegrityByLumi_->GetBinContent(0);
134  integrityErrSum += errors;
135  }
136  float ismFrontendQual = 1.0;
137  if( hFrontendByLumi_->GetBinContent(0) > 0 ) {
138  float errors = hFrontendByLumi_->GetBinContent(i+1);
139  ismFrontendQual = 1.0 - errors/hFrontendByLumi_->GetBinContent(0);
140  frontendErrSum += errors;
141  }
142  float ismSynchronizationQual = 1.0;
143  if( hSynchronizationByLumi_->GetBinContent(0) > 0 ) {
144  float errors = hSynchronizationByLumi_->GetBinContent(i+1);
145  ismSynchronizationQual = 1.0 - errors/hSynchronizationByLumi_->GetBinContent(0);
146  synchronizationErrSum += errors;
147  }
148  float minVal= std::min(ismIntegrityQual,ismFrontendQual);
149  DQMVal[i] = std::min(minVal,ismSynchronizationQual);
150  }
151 
152  if( hIntegrityByLumi_->GetBinContent(0) > 0 ) integrityQual = 1.0 - integrityErrSum/hIntegrityByLumi_->GetBinContent(0)/36.;
153  if( hFrontendByLumi_->GetBinContent(0) > 0 ) frontendQual = 1.0 - frontendErrSum/hFrontendByLumi_->GetBinContent(0)/36.;
154  if( hSynchronizationByLumi_->GetBinContent(0) > 0 ) synchronizationQual = 1.0 - synchronizationErrSum/hSynchronizationByLumi_->GetBinContent(0)/36.;
155  float minVal = std::min(integrityQual,frontendQual);
156  float totDQMVal = std::min(minVal,synchronizationQual);
157 
158  me = dqmStore_->get((prefixME_ + "/EventInfo/reportSummary"));
159  if( me ) me->Fill(totDQMVal);
160  for ( int i=0; i<36; i++) {
161  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryContents/EcalBarrel_" + Numbers::sEB(i+1) ) ;
162  if( me ) me->Fill(DQMVal[i]);
163 
164  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryMap");
165  if( me ) {
166  for ( int iett = 0; iett < 34; iett++ ) {
167  for ( int iptt = 0; iptt < 72; iptt++ ) {
168  int ism = ( iett<17 ) ? iptt/4+1 : 18+iptt/4+1;
169  if( i == (ism-1) ) me->setBinContent(iptt+1, iett+1, DQMVal[ism-1]);
170  }
171  }
172  }
173  }
174 
175  }
176 
177  // now combine reduced DQM with DCS and DAQ
178  me = dqmStore_->get(prefixME_ + "/EventInfo/DAQSummaryMap");
179  hDAQ_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hDAQ_ );
180 
181  me = dqmStore_->get(prefixME_ + "/EventInfo/DCSSummaryMap");
182  hDCS_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hDCS_ );
183 
184  float sumCert = 0.;
185  float sumCertEB[36];
186  int nValidChannels = 0;
187  int nValidChannelsEB[36];
188 
189  for (int i = 0; i < 36; i++) {
190  sumCertEB[i] = 0.;
191  nValidChannelsEB[i] = 0;
192  }
193 
194  for ( int iett = 0; iett < 34; iett++ ) {
195  for ( int iptt = 0; iptt < 72; iptt++ ) {
196 
197  int ism = ( iett<17 ) ? iptt/4+1 : 18+iptt/4+1;
198 
199  float xvalDQM = DQMVal[ism-1];
200 
201  float xvalDAQ, xvalDCS;
202  xvalDAQ = xvalDCS = -1.;
203  float xcert = -1.;
204 
205  if ( hDAQ_ ) xvalDAQ = hDAQ_->GetBinContent( iptt+1, iett+1 );
206  if ( hDCS_ ) xvalDCS = hDCS_->GetBinContent( iptt+1, iett+1 );
207 
208  if ( xvalDQM == -1 || ( xvalDAQ == -1 && xvalDCS == -1 ) ) {
209  // problems: DQM empty or DAQ and DCS not available
210  xcert = 0.0;
211  } else {
212  // do not consider the white value of DAQ and DCS (problems with DB)
213  xcert = std::abs(xvalDQM) * std::abs(xvalDAQ) * std::abs(xvalDCS);
214  }
215 
217 
218  sumCertEB[ism-1] += xcert;
219  nValidChannelsEB[ism-1]++;
220 
221  sumCert += xcert;
222  nValidChannels++;
223 
224  }
225  }
226 
228  if( nValidChannels>0 ) meEBDataCertificationSummary_->Fill( sumCert/nValidChannels );
229  else meEBDataCertificationSummary_->Fill( 0.0 );
230  }
231 
232  for (int i = 0; i < 36; i++) {
233  if( meEBDataCertification_[i] ) {
234  if( nValidChannelsEB[i]>0 ) meEBDataCertification_[i]->Fill( sumCertEB[i]/nValidChannelsEB[i] );
235  else meEBDataCertification_[i]->Fill( 0.0 );
236  }
237  }
238 
239 }
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:87
MonitorElement * meEBDataCertificationSummary_
#define abs(x)
Definition: mlp_lapack.h:159
#define min(a, b)
Definition: mlp_lapack.h:161
void Fill(long long x)
MonitorElement * meEBDataCertificationSummaryMap_
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
MonitorElement * meEBDataCertification_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:56
void EBDataCertificationTask::endRun ( const edm::Run r,
const edm::EventSetup c 
)
protectedvirtual

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 247 of file EBDataCertificationTask.cc.

References abs, cloneME_, dqmStore_, MonitorElement::Fill(), DQMStore::get(), hDAQ_, hDCS_, hDQM_, i, ecalpyutils::ism(), meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, prefixME_, reset(), and MonitorElement::setBinContent().

247  {
248 
249  this->reset();
250 
251  MonitorElement* me;
252 
253  me = dqmStore_->get(prefixME_ + "/EventInfo/reportSummaryMap");
254  hDQM_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hDQM_ );
255 
256  me = dqmStore_->get(prefixME_ + "/EventInfo/DAQSummaryMap");
257  hDAQ_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hDAQ_ );
258 
259  me = dqmStore_->get(prefixME_ + "/EventInfo/DCSSummaryMap");
260  hDCS_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hDCS_ );
261 
262  float sumCert = 0.;
263  float sumCertEB[36];
264  int nValidChannels = 0;
265  int nValidChannelsEB[36];
266 
267  for (int i = 0; i < 36; i++) {
268  sumCertEB[i] = 0.;
269  nValidChannelsEB[i] = 0;
270  }
271 
272  for ( int iett = 0; iett < 34; iett++ ) {
273  for ( int iptt = 0; iptt < 72; iptt++ ) {
274 
275  float xvalDQM, xvalDAQ, xvalDCS;
276  xvalDQM = xvalDAQ = xvalDCS = -1.;
277  float xcert = -1;
278 
279  if ( hDQM_ ) xvalDQM = hDQM_->GetBinContent( iptt+1, iett+1 );
280  if ( hDAQ_ ) xvalDAQ = hDAQ_->GetBinContent( iptt+1, iett+1 );
281  if ( hDCS_ ) xvalDCS = hDCS_->GetBinContent( iptt+1, iett+1 );
282 
283  if ( xvalDQM == -1 || ( xvalDAQ == -1 && xvalDCS == -1 ) ) {
284  // problems: DQM empty or DAQ and DCS not available
285  xcert = 0.0;
286  } else {
287  // do not consider the white value of DAQ and DCS (problems with DB)
288  xcert = std::abs(xvalDQM) * std::abs(xvalDAQ) * std::abs(xvalDCS);
289  }
290 
292 
293  int ism = ( iett<17 ) ? iptt/4+1 : 18+iptt/4+1;
294 
295  sumCertEB[ism-1] += xcert;
296  nValidChannelsEB[ism-1]++;
297 
298  sumCert += xcert;
299  nValidChannels++;
300 
301  }
302  }
303 
305  if( nValidChannels>0 ) {
306  meEBDataCertificationSummary_->Fill( sumCert/nValidChannels );
307  } else {
309  }
310  }
311 
312  for (int i = 0; i < 36; i++) {
313  if( meEBDataCertification_[i] ) {
314  if( nValidChannelsEB[i]>0 ) {
315  meEBDataCertification_[i]->Fill( sumCertEB[i]/nValidChannelsEB[i] );
316  } else {
317  meEBDataCertification_[i]->Fill( 0.0 );
318  }
319  }
320  }
321 
322 }
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * meEBDataCertificationSummary_
#define abs(x)
Definition: mlp_lapack.h:159
void Fill(long long x)
MonitorElement * meEBDataCertificationSummaryMap_
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
MonitorElement * meEBDataCertification_[36]
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:56
void EBDataCertificationTask::reset ( void  )
protected

Reset.

Definition at line 324 of file EBDataCertificationTask.cc.

References i, meEBDataCertification_, meEBDataCertificationSummary_, meEBDataCertificationSummaryMap_, and MonitorElement::Reset().

Referenced by beginRun(), endLuminosityBlock(), and endRun().

324  {
325 
327 
328  for (int i = 0; i < 36; i++) {
330  }
331 
333 
334 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * meEBDataCertificationSummary_
MonitorElement * meEBDataCertificationSummaryMap_
MonitorElement * meEBDataCertification_[36]
void Reset(void)
reset ME (ie. contents, errors, etc)

Member Data Documentation

bool EBDataCertificationTask::cloneME_
private
DQMStore* EBDataCertificationTask::dqmStore_
private
bool EBDataCertificationTask::enableCleanup_
private

Definition at line 66 of file EBDataCertificationTask.h.

Referenced by EBDataCertificationTask(), and endJob().

TH2F* EBDataCertificationTask::hDAQ_
private
TH2F* EBDataCertificationTask::hDCS_
private
TH2F* EBDataCertificationTask::hDQM_
private

Definition at line 70 of file EBDataCertificationTask.h.

Referenced by cleanup(), EBDataCertificationTask(), and endRun().

TH1F* EBDataCertificationTask::hFrontendByLumi_
private

Definition at line 74 of file EBDataCertificationTask.h.

Referenced by cleanup(), EBDataCertificationTask(), and endLuminosityBlock().

TH1F* EBDataCertificationTask::hIntegrityByLumi_
private

Definition at line 73 of file EBDataCertificationTask.h.

Referenced by cleanup(), EBDataCertificationTask(), and endLuminosityBlock().

TH1F* EBDataCertificationTask::hSynchronizationByLumi_
private

Definition at line 75 of file EBDataCertificationTask.h.

Referenced by cleanup(), EBDataCertificationTask(), and endLuminosityBlock().

MonitorElement* EBDataCertificationTask::meEBDataCertification_[36]
private
MonitorElement* EBDataCertificationTask::meEBDataCertificationSummary_
private
MonitorElement* EBDataCertificationTask::meEBDataCertificationSummaryMap_
private
MonitorElement* EBDataCertificationTask::meEBReportSummary_
private

Definition at line 80 of file EBDataCertificationTask.h.

MonitorElement* EBDataCertificationTask::meEBReportSummaryContents_[36]
private

Definition at line 81 of file EBDataCertificationTask.h.

bool EBDataCertificationTask::mergeRuns_
private

Definition at line 68 of file EBDataCertificationTask.h.

Referenced by beginRun(), and EBDataCertificationTask().

std::string EBDataCertificationTask::prefixME_
private