CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EBHltTask.cc
Go to the documentation of this file.
1 /*
2  * \file EBHltTask.cc
3  *
4  * $Date: 2010/08/08 08:46:05 $
5  * $Revision: 1.15 $
6  * \author G. Della Ricca
7  *
8 */
9 
10 #include <iostream>
11 #include <fstream>
12 
17 
19 
21 
24 
26 
29 
31 
33 
34  init_ = false;
35 
36  initGeometry_ = false;
37 
39 
40  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
41 
42  folderName_ = ps.getUntrackedParameter<std::string>("folderName", "FEDIntegrity");
43 
44  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
45 
46  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
47 
48  EBDetIdCollection0_ = ps.getParameter<edm::InputTag>("EBDetIdCollection0");
49  EBDetIdCollection1_ = ps.getParameter<edm::InputTag>("EBDetIdCollection1");
50  EBDetIdCollection2_ = ps.getParameter<edm::InputTag>("EBDetIdCollection2");
51  EBDetIdCollection3_ = ps.getParameter<edm::InputTag>("EBDetIdCollection3");
52  EcalElectronicsIdCollection1_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection1");
53  EcalElectronicsIdCollection2_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection2");
54  EcalElectronicsIdCollection3_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection3");
55  EcalElectronicsIdCollection4_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection4");
56  EcalElectronicsIdCollection5_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection5");
57  EcalElectronicsIdCollection6_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection6");
58  FEDRawDataCollection_ = ps.getParameter<edm::InputTag>("FEDRawDataCollection");
59 
63 
64  map = 0;
65 
66 }
67 
69 
70 }
71 
73 
74  ievt_ = 0;
75 
76  if ( dqmStore_ ) {
79  }
80 
81 }
82 
84 
85  initGeometry(c);
86 
87  if ( ! mergeRuns_ ) this->reset();
88 
89 }
90 
92 
93 }
94 
95 void EBHltTask::reset(void) {
96 
100 
101 }
102 
103 void EBHltTask::setup(void){
104 
105  init_ = true;
106 
107  char histo[200];
108 
109  if ( dqmStore_ ) {
111 
112  sprintf(histo, "FEDEntries");
113  meEBFedsOccupancy_ = dqmStore_->book1D(histo, histo, 36, 610, 646);
114 
115  sprintf(histo, "FEDFatal");
116  meEBFedsSizeErrors_ = dqmStore_->book1D(histo, histo, 36, 610, 646);
117 
118  sprintf(histo, "FEDNonFatal");
119  meEBFedsIntegrityErrors_ = dqmStore_->book1D(histo, histo, 36, 610, 646);
120 
121  }
122 
123 }
124 
126 
127  if ( ! init_ ) return;
128 
129  if ( dqmStore_ ) {
131 
133  meEBFedsOccupancy_ = 0;
134 
137 
140 
141  }
142 
143  init_ = false;
144 
145 }
146 
147 void EBHltTask::endJob(void){
148 
149  edm::LogInfo("EBHltTask") << "analyzed " << ievt_ << " events";
150 
151  if ( enableCleanup_ ) this->cleanup();
152 
153 }
154 
156 
157  if ( ! init_ ) this->setup();
158 
159  ievt_++;
160 
161  // ECAL barrel FEDs
162  int EBFirstFED=610;
163 
164  int FedsSizeErrors[36];
165  for ( int i=0; i<36; i++ ) FedsSizeErrors[i]=0;
166 
168 
169  if ( e.getByLabel(EBDetIdCollection0_, ids0) ) {
170 
171  for ( EBDetIdCollection::const_iterator idItr = ids0->begin(); idItr != ids0->end(); ++idItr ) {
172 
173  int ism = iSM( *idItr );
174 
175  if ( ism > -1 ) FedsSizeErrors[ism-1]++;
176 
177  }
178 
179  } else {
180 
181 // edm::LogWarning("EBHltTask") << EBDetIdCollection0_ << " not available";
182 
183  }
184 
185  edm::Handle<FEDRawDataCollection> allFedRawData;
186 
187  if ( e.getByLabel(FEDRawDataCollection_, allFedRawData) ) {
188 
189  for ( int ism=1; ism<=36; ism++ ) {
190 
191  const FEDRawData& fedData = allFedRawData->FEDData( EBFirstFED + ism - 1 );
192 
193  int length = fedData.size()/sizeof(uint64_t);
194 
195  if ( length > 0 ) {
196 
197  if ( meEBFedsOccupancy_ ) meEBFedsOccupancy_->Fill( EBFirstFED + ism - 1 );
198 
199  uint64_t * pData = (uint64_t *)(fedData.data());
200  uint64_t * fedTrailer = pData + (length - 1);
201  bool crcError = (*fedTrailer >> 2 ) & 0x1;
202 
203  if (crcError) FedsSizeErrors[ism-1]++;
204 
205  }
206 
207  }
208 
209  } else {
210  edm::LogWarning("EBHltTask") << FEDRawDataCollection_ << " not available";
211  }
212 
213 
214  for( int ism=1; ism<=36; ism++ ) {
215 
216  if ( FedsSizeErrors[ism-1] != 0 ) {
217 
218  if ( meEBFedsSizeErrors_ ) meEBFedsSizeErrors_->Fill( EBFirstFED + ism - 1 );
219 
220  }
221 
222  }
223 
224 
225  // Integrity errors
227 
228  if ( e.getByLabel(EBDetIdCollection1_, ids1) ) {
229 
230  for ( EBDetIdCollection::const_iterator idItr = ids1->begin(); idItr != ids1->end(); ++idItr ) {
231 
232  int ism = iSM( *idItr );
233 
234  if( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
235 
236  }
237 
238  } else {
239 
240  edm::LogWarning("EBHltTask") << EBDetIdCollection1_ << " not available";
241 
242  }
243 
245 
246  if ( e.getByLabel(EBDetIdCollection2_, ids2) ) {
247 
248  for ( EBDetIdCollection::const_iterator idItr = ids2->begin(); idItr != ids2->end(); ++idItr ) {
249 
250  int ism = iSM( *idItr );
251 
252  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
253 
254  }
255 
256  } else {
257 
258  edm::LogWarning("EBHltTask") << EBDetIdCollection2_ << " not available";
259 
260  }
261 
263 
264  if ( e.getByLabel(EBDetIdCollection3_, ids3) ) {
265 
266  for ( EBDetIdCollection::const_iterator idItr = ids3->begin(); idItr != ids3->end(); ++idItr ) {
267 
268  int ism = iSM( *idItr );
269 
270  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
271 
272  }
273 
274  } else {
275 
276  edm::LogWarning("EBHltTask") << EBDetIdCollection3_ << " not available";
277 
278  }
279 
281 
282  if ( e.getByLabel(EcalElectronicsIdCollection1_, ids4) ) {
283 
284  for ( EcalElectronicsIdCollection::const_iterator idItr = ids4->begin(); idItr != ids4->end(); ++idItr ) {
285 
286  if ( subDet( *idItr ) != EcalBarrel ) continue;
287 
288  int ism = iSM( *idItr );
289 
290  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./68.);
291 
292  }
293 
294  } else {
295 
296  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection1_ << " not available";
297 
298  }
299 
301 
302  if ( e.getByLabel(EcalElectronicsIdCollection2_, ids5) ) {
303 
304  for ( EcalElectronicsIdCollection::const_iterator idItr = ids5->begin(); idItr != ids5->end(); ++idItr ) {
305 
306  if ( subDet( *idItr ) != EcalBarrel ) continue;
307 
308  int ism = iSM( *idItr );
309 
310  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
311 
312  }
313 
314  } else {
315 
316  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection2_ << " not available";
317 
318  }
319 
321 
322  if ( e.getByLabel(EcalElectronicsIdCollection3_, ids6) ) {
323 
324  for ( EcalElectronicsIdCollection::const_iterator idItr = ids6->begin(); idItr != ids6->end(); ++idItr ) {
325 
326  if ( subDet( *idItr ) != EcalBarrel ) continue;
327 
328  int ism = iSM( *idItr );
329 
330  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./68.);
331 
332  }
333 
334  } else {
335 
336  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection3_ << " not available";
337 
338  }
339 
341 
342  if ( e.getByLabel(EcalElectronicsIdCollection4_, ids7) ) {
343 
344  for ( EcalElectronicsIdCollection::const_iterator idItr = ids7->begin(); idItr != ids7->end(); ++idItr ) {
345 
346  if ( subDet( *idItr ) != EcalBarrel ) continue;
347 
348  int ism = iSM( *idItr );
349 
350  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
351 
352  }
353 
354  } else {
355 
356  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection4_ << " not available";
357 
358  }
359 
361 
362  if ( e.getByLabel(EcalElectronicsIdCollection5_, ids8) ) {
363 
364  for ( EcalElectronicsIdCollection::const_iterator idItr = ids8->begin(); idItr != ids8->end(); ++idItr ) {
365 
366  if ( subDet( *idItr ) != EcalBarrel ) continue;
367 
368  int ism = iSM( *idItr );
369 
370  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
371 
372  }
373 
374  } else {
375 
376  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection5_ << " not available";
377 
378  }
379 
381 
382  if ( e.getByLabel(EcalElectronicsIdCollection6_, ids9) ) {
383 
384  for ( EcalElectronicsIdCollection::const_iterator idItr = ids9->begin(); idItr != ids9->end(); ++idItr ) {
385 
386  if ( subDet( *idItr ) != EcalBarrel ) continue;
387 
388  int ism = iSM( *idItr );
389 
390  if ( ism > -1 ) meEBFedsIntegrityErrors_->Fill( EBFirstFED + ism - 1, 1./1700.);
391 
392  }
393 
394  } else {
395 
396  edm::LogWarning("EBHltTask") << EcalElectronicsIdCollection6_ << " not available";
397 
398  }
399 
400 }
401 
402 //-------------------------------------------------------------------------
403 
405 
406  if( initGeometry_ ) return;
407 
408  initGeometry_ = true;
409 
411  setup.get< EcalMappingRcd >().get(handle);
412  map = handle.product();
413 
414  if( ! map ) edm::LogWarning("EBHltTask") << "EcalElectronicsMapping not available";
415 
416 }
417 
418 int EBHltTask::iSM( const EBDetId& id ) {
419 
420  if( ! map ) return -1;
421 
423  int idcc = eid.dccId();
424 
425  // EB-/EB+
426  if( idcc >= 10 && idcc <= 45 ) return( idcc - 9 );
427 
428  edm::LogWarning("EBHltTask") << "Wrong DCC id: dcc = " << idcc;
429  return -1;
430 
431 }
432 
434 
435  int idcc = id.dccId();
436 
437  // EB-/EB+
438  if( idcc >= 10 && idcc <= 45 ) return( idcc - 9 );
439 
440  edm::LogWarning("EBHltTask") << "Wrong DCC id: dcc = " << idcc;
441  return -1;
442 
443 }
444 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
void beginJob(void)
BeginJob.
Definition: EBHltTask.cc:72
edm::InputTag EcalElectronicsIdCollection1_
Definition: EBHltTask.h:92
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2296
virtual ~EBHltTask()
Destructor.
Definition: EBHltTask.cc:68
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
bool init_
Definition: EBHltTask.h:104
edm::InputTag EBDetIdCollection1_
Definition: EBHltTask.h:88
edm::InputTag EcalElectronicsIdCollection2_
Definition: EBHltTask.h:93
void endRun(const edm::Run &r, const edm::EventSetup &c)
EndRun.
Definition: EBHltTask.cc:91
tuple histo
Definition: trackerHits.py:12
edm::InputTag EcalElectronicsIdCollection5_
Definition: EBHltTask.h:96
bool initGeometry_
Definition: EBHltTask.h:105
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
edm::InputTag EcalElectronicsIdCollection3_
Definition: EBHltTask.h:94
EBHltTask(const edm::ParameterSet &ps)
Constructor.
Definition: EBHltTask.cc:32
std::string prefixME_
Definition: EBHltTask.h:80
EcalSubdetector subDet(const EBDetId &id)
Definition: EBHltTask.h:66
void Fill(long long x)
void endJob(void)
EndJob.
Definition: EBHltTask.cc:147
void reset(void)
Reset.
Definition: EBHltTask.cc:95
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
DQMStore * dqmStore_
Definition: EBHltTask.h:78
bool enableCleanup_
Definition: EBHltTask.h:83
void removeElement(const std::string &name)
Definition: DQMStore.cc:2338
std::string folderName_
Definition: EBHltTask.h:81
tuple handle
Definition: patZpeak.py:22
MonitorElement * meEBFedsOccupancy_
Definition: EBHltTask.h:100
bool mergeRuns_
Definition: EBHltTask.h:85
edm::InputTag EBDetIdCollection3_
Definition: EBHltTask.h:90
edm::InputTag EBDetIdCollection2_
Definition: EBHltTask.h:89
int dccId() const
get the DCC (Ecal Local DCC value not global one) id
edm::InputTag EcalElectronicsIdCollection4_
Definition: EBHltTask.h:95
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
int ievt_
Definition: EBHltTask.h:76
unsigned long long uint64_t
Definition: Time.h:15
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
void cleanup(void)
Cleanup.
Definition: EBHltTask.cc:125
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
Definition: EBHltTask.cc:83
edm::InputTag FEDRawDataCollection_
Definition: EBHltTask.h:98
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
Definition: EBHltTask.cc:155
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
void initGeometry(const edm::EventSetup &setup)
Definition: EBHltTask.cc:404
MonitorElement * meEBFedsSizeErrors_
Definition: EBHltTask.h:101
MonitorElement * meEBFedsIntegrityErrors_
Definition: EBHltTask.h:102
const EcalElectronicsMapping * map
Definition: EBHltTask.h:107
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
void Reset(void)
reset ME (ie. contents, errors, etc)
edm::InputTag EBDetIdCollection0_
Definition: EBHltTask.h:87
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
int iSM(const EBDetId &id)
Definition: EBHltTask.cc:418
void setup(void)
Setup.
Definition: EBHltTask.cc:103
Definition: Run.h:31
edm::InputTag EcalElectronicsIdCollection6_
Definition: EBHltTask.h:97
std::vector< T >::const_iterator const_iterator
Definition: EDCollection.h:20