#include <DQM/EcalEndcapMonitorTasks/interface/EEHltTask.h>
Definition at line 28 of file EEHltTask.h.
EEHltTask::EEHltTask | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 37 of file EEHltTask.cc.
References dqmStore_, EcalElectronicsIdCollection1_, EcalElectronicsIdCollection2_, EcalElectronicsIdCollection3_, EcalElectronicsIdCollection4_, EcalElectronicsIdCollection5_, EcalElectronicsIdCollection6_, EEDetIdCollection0_, EEDetIdCollection1_, EEDetIdCollection2_, EEDetIdCollection3_, enableCleanup_, FEDRawDataCollection_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), init_, initGeometry_, meEEFedsIntegrityErrors_, meEEFedsOccupancy_, meEEFedsSizeErrors_, mergeRuns_, and prefixME_.
00037 { 00038 00039 init_ = false; 00040 00041 initGeometry_ = false; 00042 00043 dqmStore_ = Service<DQMStore>().operator->(); 00044 00045 prefixME_ = ps.getUntrackedParameter<string>("prefixME", ""); 00046 00047 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false); 00048 00049 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false); 00050 00051 EEDetIdCollection0_ = ps.getParameter<edm::InputTag>("EEDetIdCollection0"); 00052 EEDetIdCollection1_ = ps.getParameter<edm::InputTag>("EEDetIdCollection1"); 00053 EEDetIdCollection2_ = ps.getParameter<edm::InputTag>("EEDetIdCollection2"); 00054 EEDetIdCollection3_ = ps.getParameter<edm::InputTag>("EEDetIdCollection3"); 00055 EcalElectronicsIdCollection1_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection1"); 00056 EcalElectronicsIdCollection2_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection2"); 00057 EcalElectronicsIdCollection3_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection3"); 00058 EcalElectronicsIdCollection4_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection4"); 00059 EcalElectronicsIdCollection5_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection5"); 00060 EcalElectronicsIdCollection6_ = ps.getParameter<edm::InputTag>("EcalElectronicsIdCollection6"); 00061 FEDRawDataCollection_ = ps.getParameter<edm::InputTag>("FEDRawDataCollection"); 00062 00063 meEEFedsOccupancy_ = 0; 00064 meEEFedsSizeErrors_ = 0; 00065 meEEFedsIntegrityErrors_ = 0; 00066 00067 map = 0; 00068 00069 }
EEHltTask::~EEHltTask | ( | ) | [virtual] |
void EEHltTask::analyze | ( | const edm::Event & | e, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
Analyze.
Implements edm::EDAnalyzer.
Definition at line 158 of file EEHltTask.cc.
References FEDRawData::data(), EcalElectronicsIdCollection1_, EcalElectronicsIdCollection2_, EcalElectronicsIdCollection3_, EcalElectronicsIdCollection4_, EcalElectronicsIdCollection5_, EcalElectronicsIdCollection6_, EcalEndcap, EEDetIdCollection0_, EEDetIdCollection1_, EEDetIdCollection2_, EEDetIdCollection3_, FEDRawDataCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), i, ievt_, init_, iSM(), meEEFedsIntegrityErrors_, meEEFedsOccupancy_, meEEFedsSizeErrors_, setup(), FEDRawData::size(), and subDet().
00158 { 00159 00160 if ( ! init_ ) this->setup(); 00161 00162 ievt_++; 00163 00164 // ECAL endcap FEDs 00165 int EEFirstFED[2]; 00166 EEFirstFED[0] = 601; // EE- 00167 EEFirstFED[1] = 646; // EE+ 00168 00169 int FedsSizeErrors[18]; 00170 for ( int i=0; i<18; i++ ) FedsSizeErrors[i]=0; 00171 00172 edm::Handle<EEDetIdCollection> ids0; 00173 00174 if ( e.getByLabel(EEDetIdCollection0_, ids0) ) { 00175 00176 for ( EEDetIdCollection::const_iterator idItr = ids0->begin(); idItr != ids0->end(); ++idItr ) { 00177 00178 int ism = iSM( *idItr ); 00179 00180 if ( ism > -1 ) FedsSizeErrors[ism-1]++; 00181 00182 } 00183 00184 } else { 00185 00186 // LogWarning("EEHltTask") << EEDetIdCollection0_ << " not available"; 00187 00188 } 00189 00190 edm::Handle<FEDRawDataCollection> allFedRawData; 00191 00192 if ( e.getByLabel(FEDRawDataCollection_, allFedRawData) ) { 00193 00194 for(int zside=0; zside<2; zside++) { 00195 00196 int firstFedOnSide=EEFirstFED[zside]; 00197 00198 for ( int ism=1; ism<=9; ism++ ) { 00199 00200 const FEDRawData& fedData = allFedRawData->FEDData( firstFedOnSide + ism - 1 ); 00201 00202 int length = fedData.size()/sizeof(uint64_t); 00203 00204 if ( length > 0 ) { 00205 00206 if ( meEEFedsOccupancy_ ) meEEFedsOccupancy_->Fill( firstFedOnSide + ism - 1 ); 00207 00208 uint64_t * pData = (uint64_t *)(fedData.data()); 00209 uint64_t * fedTrailer = pData + (length - 1); 00210 bool crcError = (*fedTrailer >> 2 ) & 0x1; 00211 00212 if (crcError) FedsSizeErrors[ism-1]++; 00213 00214 } 00215 00216 } 00217 00218 } 00219 00220 } else { 00221 LogWarning("EEHltTask") << FEDRawDataCollection_ << " not available"; 00222 } 00223 00224 00225 for( int ism=1; ism<=18; ism++ ) { 00226 00227 if ( FedsSizeErrors[ism-1] != 0 ) { 00228 00229 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00230 00231 if ( meEEFedsSizeErrors_ ) meEEFedsSizeErrors_->Fill( fednumber ); 00232 00233 } 00234 00235 } 00236 00237 00238 // Integrity errors 00239 Handle<EEDetIdCollection> ids1; 00240 00241 if ( e.getByLabel(EEDetIdCollection1_, ids1) ) { 00242 00243 for ( EEDetIdCollection::const_iterator idItr = ids1->begin(); idItr != ids1->end(); ++idItr ) { 00244 00245 int ism = iSM( *idItr ); 00246 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00247 00248 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00249 00250 } 00251 00252 } else { 00253 00254 LogWarning("EEHltTask") << EEDetIdCollection1_ << " not available"; 00255 00256 } 00257 00258 Handle<EEDetIdCollection> ids2; 00259 00260 if ( e.getByLabel(EEDetIdCollection2_, ids2) ) { 00261 00262 for ( EEDetIdCollection::const_iterator idItr = ids2->begin(); idItr != ids2->end(); ++idItr ) { 00263 00264 int ism = iSM( *idItr ); 00265 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00266 00267 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00268 00269 } 00270 00271 } else { 00272 00273 LogWarning("EEHltTask") << EEDetIdCollection2_ << " not available"; 00274 00275 } 00276 00277 Handle<EEDetIdCollection> ids3; 00278 00279 if ( e.getByLabel(EEDetIdCollection3_, ids3) ) { 00280 00281 for ( EEDetIdCollection::const_iterator idItr = ids3->begin(); idItr != ids3->end(); ++idItr ) { 00282 00283 int ism = iSM( *idItr ); 00284 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00285 00286 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00287 00288 } 00289 00290 } else { 00291 00292 LogWarning("EEHltTask") << EEDetIdCollection3_ << " not available"; 00293 00294 } 00295 00296 Handle<EcalElectronicsIdCollection> ids4; 00297 00298 if ( e.getByLabel(EcalElectronicsIdCollection1_, ids4) ) { 00299 00300 for ( EcalElectronicsIdCollection::const_iterator idItr = ids4->begin(); idItr != ids4->end(); ++idItr ) { 00301 00302 if ( subDet( *idItr ) != EcalEndcap ) continue; 00303 00304 int ism = iSM( *idItr ); 00305 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00306 00307 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./34.); 00308 00309 } 00310 00311 } else { 00312 00313 LogWarning("EEHltTask") << EcalElectronicsIdCollection1_ << " not available"; 00314 00315 } 00316 00317 Handle<EcalElectronicsIdCollection> ids5; 00318 00319 if ( e.getByLabel(EcalElectronicsIdCollection2_, ids5) ) { 00320 00321 for ( EcalElectronicsIdCollection::const_iterator idItr = ids5->begin(); idItr != ids5->end(); ++idItr ) { 00322 00323 if ( subDet( *idItr ) != EcalEndcap ) continue; 00324 00325 int ism = iSM( *idItr ); 00326 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00327 00328 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00329 00330 } 00331 00332 } else { 00333 00334 LogWarning("EEHltTask") << EcalElectronicsIdCollection2_ << " not available"; 00335 00336 } 00337 00338 Handle<EcalElectronicsIdCollection> ids6; 00339 00340 if ( e.getByLabel(EcalElectronicsIdCollection3_, ids6) ) { 00341 00342 for ( EcalElectronicsIdCollection::const_iterator idItr = ids6->begin(); idItr != ids6->end(); ++idItr ) { 00343 00344 if ( subDet( *idItr ) != EcalEndcap ) continue; 00345 00346 int ism = iSM( *idItr ); 00347 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00348 00349 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./34.); 00350 00351 } 00352 00353 } else { 00354 00355 LogWarning("EEHltTask") << EcalElectronicsIdCollection3_ << " not available"; 00356 00357 } 00358 00359 Handle<EcalElectronicsIdCollection> ids7; 00360 00361 if ( e.getByLabel(EcalElectronicsIdCollection4_, ids7) ) { 00362 00363 for ( EcalElectronicsIdCollection::const_iterator idItr = ids7->begin(); idItr != ids7->end(); ++idItr ) { 00364 00365 if ( subDet( *idItr ) != EcalEndcap ) continue; 00366 00367 int ism = iSM( *idItr ); 00368 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00369 00370 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00371 00372 } 00373 00374 } else { 00375 00376 LogWarning("EEHltTask") << EcalElectronicsIdCollection4_ << " not available"; 00377 00378 } 00379 00380 Handle<EcalElectronicsIdCollection> ids8; 00381 00382 if ( e.getByLabel(EcalElectronicsIdCollection5_, ids8) ) { 00383 00384 for ( EcalElectronicsIdCollection::const_iterator idItr = ids8->begin(); idItr != ids8->end(); ++idItr ) { 00385 00386 if ( subDet( *idItr ) != EcalEndcap ) continue; 00387 00388 int ism = iSM( *idItr ); 00389 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00390 00391 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00392 00393 } 00394 00395 } else { 00396 00397 LogWarning("EEHltTask") << EcalElectronicsIdCollection5_ << " not available"; 00398 00399 } 00400 00401 Handle<EcalElectronicsIdCollection> ids9; 00402 00403 if ( e.getByLabel(EcalElectronicsIdCollection6_, ids9) ) { 00404 00405 for ( EcalElectronicsIdCollection::const_iterator idItr = ids9->begin(); idItr != ids9->end(); ++idItr ) { 00406 00407 if ( subDet( *idItr ) != EcalEndcap ) continue; 00408 00409 int ism = iSM( *idItr ); 00410 int fednumber = ( ism < 10 ) ? 600 + ism : 636 + ism; 00411 00412 if ( ism > -1 ) meEEFedsIntegrityErrors_->Fill( fednumber, 1./850.); 00413 00414 } 00415 00416 } else { 00417 00418 LogWarning("EEHltTask") << EcalElectronicsIdCollection6_ << " not available"; 00419 00420 } 00421 00422 }
void EEHltTask::beginJob | ( | const edm::EventSetup & | c | ) | [protected, virtual] |
BeginJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 75 of file EEHltTask.cc.
References dqmStore_, ievt_, initGeometry(), prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().
00075 { 00076 00077 ievt_ = 0; 00078 00079 if ( dqmStore_ ) { 00080 dqmStore_->setCurrentFolder(prefixME_ + "/FEDIntegrity"); 00081 dqmStore_->rmdir(prefixME_ + "/FEDIntegrity"); 00082 } 00083 00084 initGeometry(c); 00085 00086 }
void EEHltTask::beginRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
BeginRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 88 of file EEHltTask.cc.
References mergeRuns_, and reset().
00088 { 00089 00090 if ( ! mergeRuns_ ) this->reset(); 00091 00092 }
Cleanup.
Definition at line 128 of file EEHltTask.cc.
References dqmStore_, MonitorElement::getName(), init_, meEEFedsIntegrityErrors_, meEEFedsOccupancy_, meEEFedsSizeErrors_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().
Referenced by endJob().
00128 { 00129 00130 if ( ! init_ ) return; 00131 00132 if ( dqmStore_ ) { 00133 dqmStore_->setCurrentFolder(prefixME_ + "/FEDIntegrity"); 00134 00135 if ( meEEFedsOccupancy_ ) dqmStore_->removeElement( meEEFedsOccupancy_->getName() ); 00136 meEEFedsOccupancy_ = 0; 00137 00138 if ( meEEFedsSizeErrors_ ) dqmStore_->removeElement( meEEFedsSizeErrors_->getName() ); 00139 meEEFedsSizeErrors_ = 0; 00140 00141 if ( meEEFedsIntegrityErrors_ ) dqmStore_->removeElement( meEEFedsIntegrityErrors_->getName() ); 00142 meEEFedsIntegrityErrors_ = 0; 00143 00144 } 00145 00146 init_ = false; 00147 00148 }
EndJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 150 of file EEHltTask.cc.
References cleanup(), enableCleanup_, and ievt_.
00150 { 00151 00152 LogInfo("EEHltTask") << "analyzed " << ievt_ << " events"; 00153 00154 if ( enableCleanup_ ) this->cleanup(); 00155 00156 }
void EEHltTask::endRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
void EEHltTask::initGeometry | ( | const edm::EventSetup & | setup | ) | [protected] |
Definition at line 426 of file EEHltTask.cc.
References edm::EventSetup::get(), initGeometry_, and edm::ESHandle< T >::product().
Referenced by beginJob().
00426 { 00427 00428 if( initGeometry_ ) return; 00429 00430 initGeometry_ = true; 00431 00432 edm::ESHandle< EcalElectronicsMapping > handle; 00433 setup.get< EcalMappingRcd >().get(handle); 00434 map = handle.product(); 00435 00436 if( ! map ) LogWarning("EEHltTask") << "EcalElectronicsMapping not available"; 00437 00438 }
int EEHltTask::iSM | ( | const EcalElectronicsId & | id | ) | [protected] |
Definition at line 458 of file EEHltTask.cc.
00458 { 00459 00460 int idcc = id.dccId(); 00461 00462 // EE- 00463 if( idcc >= 1 && idcc <= 9 ) return( idcc ); 00464 00465 // EE+ 00466 if( idcc >= 46 && idcc <= 54 ) return( idcc - 45 + 9 ); 00467 00468 LogWarning("EEHltTask") << "Wrong DCC id: dcc = " << idcc; 00469 return -1; 00470 00471 }
Definition at line 440 of file EEHltTask.cc.
References EcalElectronicsId::dccId().
Referenced by analyze().
00440 { 00441 00442 if( ! map ) return -1; 00443 00444 EcalElectronicsId eid = map->getElectronicsId(id); 00445 int idcc = eid.dccId(); 00446 00447 // EE- 00448 if( idcc >= 1 && idcc <= 9 ) return( idcc ); 00449 00450 // EE+ 00451 if( idcc >= 46 && idcc <= 54 ) return( idcc - 45 + 9 ); 00452 00453 LogWarning("EEHltTask") << "Wrong DCC id: dcc = " << idcc; 00454 return -1; 00455 00456 }
Reset.
Definition at line 98 of file EEHltTask.cc.
References meEEFedsIntegrityErrors_, meEEFedsOccupancy_, meEEFedsSizeErrors_, and MonitorElement::Reset().
Referenced by beginRun().
00098 { 00099 00100 if ( meEEFedsOccupancy_ ) meEEFedsOccupancy_->Reset(); 00101 if ( meEEFedsSizeErrors_ ) meEEFedsSizeErrors_->Reset(); 00102 if ( meEEFedsIntegrityErrors_ ) meEEFedsIntegrityErrors_->Reset(); 00103 00104 }
Setup.
Definition at line 106 of file EEHltTask.cc.
References DQMStore::book1D(), dqmStore_, histo, init_, meEEFedsIntegrityErrors_, meEEFedsOccupancy_, meEEFedsSizeErrors_, prefixME_, and DQMStore::setCurrentFolder().
Referenced by analyze().
00106 { 00107 00108 init_ = true; 00109 00110 char histo[200]; 00111 00112 if ( dqmStore_ ) { 00113 dqmStore_->setCurrentFolder(prefixME_ + "/FEDIntegrity"); 00114 00115 sprintf(histo, "FEDEntries"); 00116 meEEFedsOccupancy_ = dqmStore_->book1D(histo, histo, 54, 601, 655); 00117 00118 sprintf(histo, "FEDFatal"); 00119 meEEFedsSizeErrors_ = dqmStore_->book1D(histo, histo, 54, 601, 655); 00120 00121 sprintf(histo, "FEDNonFatal"); 00122 meEEFedsIntegrityErrors_ = dqmStore_->book1D(histo, histo, 54, 601, 655); 00123 00124 } 00125 00126 }
EcalSubdetector EEHltTask::subDet | ( | const EcalElectronicsId & | id | ) | [inline, protected] |
EcalSubdetector EEHltTask::subDet | ( | const EEDetId & | id | ) | [inline, protected] |
DQMStore* EEHltTask::dqmStore_ [private] |
Definition at line 78 of file EEHltTask.h.
Referenced by beginJob(), cleanup(), EEHltTask(), and setup().
edm::InputTag EEHltTask::EEDetIdCollection0_ [private] |
edm::InputTag EEHltTask::EEDetIdCollection1_ [private] |
edm::InputTag EEHltTask::EEDetIdCollection2_ [private] |
edm::InputTag EEHltTask::EEDetIdCollection3_ [private] |
edm::InputTag EEHltTask::EEDetIdCollection4_ [private] |
Definition at line 90 of file EEHltTask.h.
bool EEHltTask::enableCleanup_ [private] |
int EEHltTask::ievt_ [private] |
bool EEHltTask::init_ [private] |
Definition at line 103 of file EEHltTask.h.
Referenced by analyze(), cleanup(), EEHltTask(), and setup().
bool EEHltTask::initGeometry_ [private] |
const EcalElectronicsMapping* EEHltTask::map [private] |
Definition at line 106 of file EEHltTask.h.
Definition at line 101 of file EEHltTask.h.
Referenced by analyze(), cleanup(), EEHltTask(), reset(), and setup().
MonitorElement* EEHltTask::meEEFedsOccupancy_ [private] |
Definition at line 99 of file EEHltTask.h.
Referenced by analyze(), cleanup(), EEHltTask(), reset(), and setup().
MonitorElement* EEHltTask::meEEFedsSizeErrors_ [private] |
Definition at line 100 of file EEHltTask.h.
Referenced by analyze(), cleanup(), EEHltTask(), reset(), and setup().
bool EEHltTask::mergeRuns_ [private] |
std::string EEHltTask::prefixME_ [private] |
Definition at line 80 of file EEHltTask.h.
Referenced by beginJob(), cleanup(), EEHltTask(), and setup().