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