#include <DQM/EcalEndcapMonitorTasks/interface/EESelectiveReadoutTask.h>
Public Member Functions | |
EESelectiveReadoutTask (const edm::ParameterSet &ps) | |
Constructor. | |
virtual | ~EESelectiveReadoutTask () |
Destructor. | |
Protected Member Functions | |
void | analyze (const edm::Event &e, const edm::EventSetup &c) |
Analyze. | |
void | beginJob (const edm::EventSetup &c) |
BeginJob. | |
void | beginRun (const edm::Run &r, const edm::EventSetup &c) |
BeginRun. | |
void | cleanup (void) |
Cleanup. | |
void | endJob (void) |
EndJob. | |
void | endRun (const edm::Run &r, const edm::EventSetup &c) |
EndRun. | |
void | reset (void) |
Reset. | |
void | setup (void) |
Setup. | |
Static Protected Attributes | |
static const int | bytesPerCrystal = 24 |
Number of bytes per crystal. | |
static const int | kByte = 1024 |
static const int | nEBDcc = 36 |
static const int | nECALDcc = 54 |
Constants. | |
static const int | nEEDcc = 18 |
static const int | nEeRus = 2*(34+32+33+33+32+34+33+34+33) |
number of RUs for EE | |
static const int | nEeX = 100 |
EE crystal grid size along X. | |
static const int | nEeY = 100 |
EE crystal grid size along Y. | |
static const int | nEndcaps = 2 |
number of endcaps | |
static const int | nTtEta = 56 |
Number of Trigger Towers along Eta. | |
static const int | nTtPhi = 72 |
Number of Trigger Towers along Phi. | |
static const int | scEdge = 5 |
Number of crystals along a supercrystal edge. | |
Private Types | |
enum | subdet_t { EB, EE } |
distinguishes barral and endcap of ECAL. More... | |
Private Member Functions | |
void | anaDigi (const EEDataFrame &frame, const EESrFlagCollection &srFlagColl) |
Accumulates statitics for data volume analysis. | |
void | anaDigiInit () |
Initializes statistics accumalator for data volume analysis. | |
int | cIndex2iXY (int iX0) const |
converse of iXY2cIndex() method. | |
int | dccIndex (int iDet, int i, int j) const |
Gets the index of the DCC reading a crystal. | |
unsigned | dccNum (const DetId &xtalId) const |
Retrieve the logical number of the DCC reading a given crystal channel. | |
int | dccPhiIndex (int i, int j) const |
Gets the phi index of the DCC reading a crystal. | |
int | dccPhiIndexOfRU (int i, int j) const |
Gets the phi index of the DCC reading a RU (SC or TT). | |
double | getDccEventSize (int iDcc0, double nReadXtals) const |
Gets the size of an DCC event fragment. | |
double | getDccOverhead (subdet_t subdet) const |
Gets the size in bytes fixed-size part of a DCC event fragment. | |
double | getEeEventSize (double nReadXtals) const |
Computes the size of an ECAL endcap event fragment. | |
int | iXY2cIndex (int iX) const |
Converts a std CMSSW crystal x or y index to a c-array index (starting from zero and without hole). | |
EcalScDetId | readOutUnitOf (const EEDetId &xtalId) const |
Retrives the readout unit, a trigger tower in the barrel case, and a supercrystal in the endcap case, a given crystal belongs to. | |
Private Attributes | |
DQMStore * | dqmStore_ |
edm::InputTag | EcalRecHitCollection_ |
edm::InputTag | EcalTrigPrimDigiCollection_ |
MonitorElement * | EEDccEventSize_ |
edm::InputTag | EEDigiCollection_ |
MonitorElement * | EEEventSize_ [2] |
MonitorElement * | EEFullReadoutSRFlagMap_ [2] |
MonitorElement * | EEHighInterestPayload_ [2] |
MonitorElement * | EEHighInterestTriggerTowerFlagMap_ [2] |
MonitorElement * | EELowInterestPayload_ [2] |
MonitorElement * | EELowInterestTriggerTowerFlagMap_ [2] |
MonitorElement * | EEReadoutUnitForcedBitMap_ [2] |
bool | eeRuActive_ [nEndcaps][nEeX/scEdge][nEeY/scEdge] |
For book keeping of RU actually read out (not fully zero suppressed). | |
edm::InputTag | EESRFlagCollection_ |
edm::InputTag | EEUnsuppressedDigiCollection_ |
bool | enableCleanup_ |
edm::InputTag | FEDRawDataCollection_ |
int | ievt_ |
bool | init_ |
bool | mergeRuns_ |
int | nEe_ [2] |
ECAL endcap read channel count. | |
int | nEeHI_ [2] |
ECAL endcap high interest read channel count. | |
int | nEeLI_ [2] |
ECAL endcap low interest read channel count. | |
int | nPerDcc_ [nECALDcc] |
ECAL read channel count for each DCC:. | |
int | nRuPerDcc_ [nECALDcc] |
Count for each DCC of RUs with at leat one channel read out:. | |
std::string | prefixME_ |
Definition at line 43 of file EESelectiveReadoutTask.h.
enum EESelectiveReadoutTask::subdet_t [private] |
EESelectiveReadoutTask::EESelectiveReadoutTask | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 39 of file EESelectiveReadoutTask.cc.
References dqmStore_, EcalTrigPrimDigiCollection_, EEDccEventSize_, EEDigiCollection_, EEEventSize_, EEFullReadoutSRFlagMap_, EEHighInterestPayload_, EEHighInterestTriggerTowerFlagMap_, EELowInterestPayload_, EELowInterestTriggerTowerFlagMap_, EEReadoutUnitForcedBitMap_, EESRFlagCollection_, EEUnsuppressedDigiCollection_, enableCleanup_, FEDRawDataCollection_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), init_, mergeRuns_, and prefixME_.
00039 { 00040 00041 init_ = 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 // parameters... 00052 EEDigiCollection_ = ps.getParameter<edm::InputTag>("EEDigiCollection"); 00053 EEUnsuppressedDigiCollection_ = ps.getParameter<edm::InputTag>("EEUsuppressedDigiCollection"); 00054 EESRFlagCollection_ = ps.getParameter<edm::InputTag>("EESRFlagCollection"); 00055 EcalTrigPrimDigiCollection_ = ps.getParameter<edm::InputTag>("EcalTrigPrimDigiCollection"); 00056 FEDRawDataCollection_ = ps.getParameter<edm::InputTag>("FEDRawDataCollection"); 00057 00058 // histograms... 00059 EEDccEventSize_ = 0; 00060 00061 EEReadoutUnitForcedBitMap_[0] = 0; 00062 EEFullReadoutSRFlagMap_[0] = 0; 00063 EEHighInterestTriggerTowerFlagMap_[0] = 0; 00064 EELowInterestTriggerTowerFlagMap_[0] = 0; 00065 EEEventSize_[0] = 0; 00066 EEHighInterestPayload_[0] = 0; 00067 EELowInterestPayload_[0] = 0; 00068 00069 EEReadoutUnitForcedBitMap_[1] = 0; 00070 EEFullReadoutSRFlagMap_[1] = 0; 00071 EEHighInterestTriggerTowerFlagMap_[1] = 0; 00072 EELowInterestTriggerTowerFlagMap_[1] = 0; 00073 EEEventSize_[1] = 0; 00074 EEHighInterestPayload_[1] = 0; 00075 EELowInterestPayload_[1] = 0; 00076 00077 }
EESelectiveReadoutTask::~EESelectiveReadoutTask | ( | ) | [virtual] |
void EESelectiveReadoutTask::anaDigi | ( | const EEDataFrame & | frame, | |
const EESrFlagCollection & | srFlagColl | |||
) | [private] |
Accumulates statitics for data volume analysis.
To be called for each ECAL digi. See anaDigiInit().
Definition at line 522 of file EESelectiveReadoutTask.cc.
References dccNum(), EcalEndcap, eeRuActive_, edm::SortedCollection< T, SORT >::end(), GeomDetEnumerators::endcap, edm::SortedCollection< T, SORT >::find(), EEDataFrame::id(), Numbers::iSM(), iXY2cIndex(), nEe_, nEeHI_, nEeLI_, nPerDcc_, nRuPerDcc_, readOutUnitOf(), scEdge, and EcalSrFlag::SRF_FULL.
Referenced by analyze().
00522 { 00523 00524 EEDetId id = frame.id(); 00525 EESrFlagCollection::const_iterator srf = srFlagColl.find(readOutUnitOf(id)); 00526 00527 if(srf == srFlagColl.end()){ 00528 // LogWarning("EESelectiveReadoutTask") << "SR flag not found"; 00529 return; 00530 } 00531 00532 bool highInterest = ((srf->value() & ~EcalSrFlag::SRF_FORCED_MASK) 00533 == EcalSrFlag::SRF_FULL); 00534 00535 bool endcap = (id.subdetId()==EcalEndcap); 00536 00537 if(endcap){ 00538 int ism = Numbers::iSM( id ); 00539 if ( ism >= 1 && ism <= 9 ) { 00540 ++nEe_[0]; 00541 if(highInterest){ 00542 ++nEeHI_[0]; 00543 } else{//low interest 00544 ++nEeLI_[0]; 00545 } 00546 } else { 00547 ++nEe_[1]; 00548 if(highInterest){ 00549 ++nEeHI_[1]; 00550 } else{//low interest 00551 ++nEeLI_[1]; 00552 } 00553 } 00554 00555 int iX0 = iXY2cIndex(id.ix()); 00556 int iY0 = iXY2cIndex(id.iy()); 00557 int iZ0 = id.zside()>0?1:0; 00558 00559 if(!eeRuActive_[iZ0][iX0/scEdge][iY0/scEdge]){ 00560 ++nRuPerDcc_[dccNum(id)]; 00561 eeRuActive_[iZ0][iX0/scEdge][iY0/scEdge] = true; 00562 } 00563 } 00564 00565 ++nPerDcc_[dccNum(id)-1]; 00566 }
void EESelectiveReadoutTask::anaDigiInit | ( | ) | [private] |
Initializes statistics accumalator for data volume analysis.
To be call at start of each event analysis.
Definition at line 568 of file EESelectiveReadoutTask.cc.
References eeRuActive_, nEe_, nEeHI_, nEeLI_, nPerDcc_, and nRuPerDcc_.
Referenced by analyze().
00568 { 00569 nEe_[0] = 0; 00570 nEeLI_[0] = 0; 00571 nEeHI_[0] = 0; 00572 nEe_[1] = 0; 00573 nEeLI_[1] = 0; 00574 nEeHI_[1] = 0; 00575 bzero(nPerDcc_, sizeof(nPerDcc_)); 00576 bzero(nRuPerDcc_, sizeof(nRuPerDcc_)); 00577 bzero(eeRuActive_, sizeof(eeRuActive_)); 00578 }
void EESelectiveReadoutTask::analyze | ( | const edm::Event & | e, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
Analyze.
Implements edm::EDAnalyzer.
Definition at line 282 of file EESelectiveReadoutTask.cc.
References anaDigi(), anaDigiInit(), bytesPerCrystal, Numbers::crystals(), EcalEndcap, EcalTrigPrimDigiCollection_, EEDccEventSize_, EEDigiCollection_, EEEventSize_, EEFullReadoutSRFlagMap_, EEHighInterestPayload_, EEHighInterestTriggerTowerFlagMap_, EELowInterestPayload_, EELowInterestTriggerTowerFlagMap_, EEReadoutUnitForcedBitMap_, EESRFlagCollection_, FEDRawDataCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), getEeEventSize(), i, ievt_, init_, Numbers::iSM(), edm::Handle< T >::isValid(), it, kByte, nEe_, nEeHI_, nEeLI_, setup(), EcalSrFlag::SRF_FORCED_MASK, EcalSrFlag::SRF_FULL, and Numbers::subDet().
00282 { 00283 00284 if ( ! init_ ) this->setup(); 00285 00286 ievt_++; 00287 00288 Handle<FEDRawDataCollection> raw; 00289 if ( e.getByLabel(FEDRawDataCollection_, raw) ) { 00290 00291 int EEFirstFED[2]; 00292 EEFirstFED[0] = 601; // EE- 00293 EEFirstFED[1] = 646; // EE+ 00294 for(int zside=0; zside<2; zside++) { 00295 00296 int firstFedOnSide=EEFirstFED[zside]; 00297 00298 for ( int iDcc = 0; iDcc < 9; ++iDcc ) { 00299 00300 int ism = 0; 00301 if ( zside == 0 ) ism = iDcc+1; 00302 else ism = 10+iDcc; 00303 00304 EEDccEventSize_->Fill(ism, ((double)raw->FEDData(firstFedOnSide+iDcc).size())/kByte ); 00305 00306 } 00307 } 00308 00309 } else { 00310 LogWarning("EESelectiveReadoutTask") << FEDRawDataCollection_ << " not available"; 00311 } 00312 00313 TH2F *h01[2]; 00314 float integral01[2]; 00315 for(int iside=0;iside<2;iside++) { 00316 h01[iside] = UtilsClient::getHisto<TH2F*>( EEFullReadoutSRFlagMap_[iside] ); 00317 integral01[iside] = h01[iside]->GetEntries(); 00318 if( integral01[iside] != 0 ) h01[iside]->Scale( integral01[iside] ); 00319 } 00320 00321 TH2F *h02[2]; 00322 float integral02[2]; 00323 for(int iside=0;iside<2;iside++) { 00324 h02[iside] = UtilsClient::getHisto<TH2F*>( EEReadoutUnitForcedBitMap_[iside] ); 00325 integral02[iside] = h02[iside]->GetEntries(); 00326 if( integral02[iside] != 0 ) h02[iside]->Scale( integral02[iside] ); 00327 } 00328 00329 // Selective Readout Flags 00330 Handle<EESrFlagCollection> eeSrFlags; 00331 if ( e.getByLabel(EESRFlagCollection_,eeSrFlags) ) { 00332 00333 for ( EESrFlagCollection::const_iterator it = eeSrFlags->begin(); it != eeSrFlags->end(); ++it ) { 00334 00335 int ix = it->id().ix(); 00336 int iy = it->id().iy(); 00337 00338 int zside = it->id().zside(); 00339 00340 if ( zside < 0 ) ix = 101 - ix; 00341 00342 float xix = ix-0.5; 00343 float xiy = iy-0.5; 00344 00345 int flag = it->value() & ~EcalSrFlag::SRF_FORCED_MASK; 00346 00347 if(flag == EcalSrFlag::SRF_FULL){ 00348 if( zside < 0 ) { 00349 EEFullReadoutSRFlagMap_[0]->Fill(xix,xiy); 00350 } 00351 else { 00352 EEFullReadoutSRFlagMap_[1]->Fill(xix,xiy); 00353 } 00354 } else { 00355 if( zside < 0 ) { 00356 EEFullReadoutSRFlagMap_[0]->Fill(-1,-1); 00357 } 00358 else { 00359 EEFullReadoutSRFlagMap_[1]->Fill(-1,-1); 00360 } 00361 } 00362 00363 if(it->value() & EcalSrFlag::SRF_FORCED_MASK){ 00364 if( zside < 0 ) { 00365 EEReadoutUnitForcedBitMap_[0]->Fill(xix,xiy); 00366 } 00367 else { 00368 EEReadoutUnitForcedBitMap_[1]->Fill(xix,xiy); 00369 } 00370 } else { 00371 if( zside < 0 ) { 00372 EEReadoutUnitForcedBitMap_[0]->Fill(-1,1); 00373 } 00374 else { 00375 EEReadoutUnitForcedBitMap_[1]->Fill(-1,1); 00376 } 00377 } 00378 00379 } 00380 } else { 00381 LogWarning("EESelectiveReadoutTask") << EESRFlagCollection_ << " not available"; 00382 } 00383 00384 for(int iside=0;iside<2;iside++) { 00385 if( integral01[iside] != 0 ) h01[iside]->Scale( 1.0/integral01[iside] ); 00386 if( integral02[iside] != 0 ) h02[iside]->Scale( 1.0/integral02[iside] ); 00387 } 00388 00389 TH2F *h03[2]; 00390 float integral03[2]; 00391 for(int iside=0;iside<2;iside++) { 00392 h03[iside] = UtilsClient::getHisto<TH2F*>( EELowInterestTriggerTowerFlagMap_[iside] ); 00393 integral03[iside] = h03[iside]->GetEntries(); 00394 if( integral03[iside] != 0 ) h03[iside]->Scale( integral03[iside] ); 00395 } 00396 00397 TH2F *h04[2]; 00398 float integral04[2]; 00399 for(int iside=0;iside<2;iside++) { 00400 h04[iside] = UtilsClient::getHisto<TH2F*>( EEHighInterestTriggerTowerFlagMap_[iside] ); 00401 integral04[iside] = h04[iside]->GetEntries(); 00402 if( integral04[iside] != 0 ) h04[iside]->Scale( integral04[iside] ); 00403 } 00404 00405 Handle<EcalTrigPrimDigiCollection> TPCollection; 00406 if ( e.getByLabel(EcalTrigPrimDigiCollection_, TPCollection) ) { 00407 00408 // Trigger Primitives 00409 EcalTrigPrimDigiCollection::const_iterator TPdigi; 00410 for ( TPdigi = TPCollection->begin(); TPdigi != TPCollection->end(); ++TPdigi ) { 00411 00412 if ( Numbers::subDet( TPdigi->id() ) != EcalEndcap ) continue; 00413 00414 int ismt = Numbers::iSM( TPdigi->id() ); 00415 00416 vector<DetId> crystals = Numbers::crystals( TPdigi->id() ); 00417 00418 for ( unsigned int i=0; i<crystals.size(); i++ ) { 00419 00420 EEDetId id = crystals[i]; 00421 00422 int ix = id.ix(); 00423 int iy = id.iy(); 00424 00425 if ( ismt >= 1 && ismt <= 9 ) ix = 101 - ix; 00426 00427 float xix = ix-0.5; 00428 float xiy = iy-0.5; 00429 00430 if ( (TPdigi->ttFlag() & 0x3) == 0 ) { 00431 if ( ismt >= 1 && ismt <= 9 ) { 00432 EELowInterestTriggerTowerFlagMap_[0]->Fill(xix,xiy); 00433 } 00434 else { 00435 EELowInterestTriggerTowerFlagMap_[1]->Fill(xix,xiy); 00436 } 00437 } else { 00438 if ( ismt >= 1 && ismt <= 9 ) { 00439 EELowInterestTriggerTowerFlagMap_[0]->Fill(-1,-1); 00440 } 00441 else { 00442 EELowInterestTriggerTowerFlagMap_[1]->Fill(-1,-1); 00443 } 00444 } 00445 00446 if ( (TPdigi->ttFlag() & 0x3) == 3 ) { 00447 if ( ismt >= 1 && ismt <= 9 ) { 00448 EEHighInterestTriggerTowerFlagMap_[0]->Fill(xix,xiy); 00449 } 00450 else { 00451 EEHighInterestTriggerTowerFlagMap_[1]->Fill(xix,xiy); 00452 } 00453 } else { 00454 if ( ismt >= 1 && ismt <= 9 ) { 00455 EEHighInterestTriggerTowerFlagMap_[0]->Fill(-1,-1); 00456 } 00457 else { 00458 EEHighInterestTriggerTowerFlagMap_[1]->Fill(-1,-1); 00459 } 00460 } 00461 00462 } 00463 00464 } 00465 } else { 00466 LogWarning("EESelectiveReadoutTask") << EcalTrigPrimDigiCollection_ << " not available"; 00467 } 00468 00469 for(int iside=0;iside<2;iside++) { 00470 if( integral03[iside] != 0 ) h03[iside]->Scale( 1.0/integral03[iside] ); 00471 if( integral04[iside] != 0 ) h04[iside]->Scale( 1.0/integral04[iside] ); 00472 } 00473 00474 if (!eeSrFlags.isValid()) return; 00475 00476 // Data Volume 00477 double aLowInterest[2]; 00478 double aHighInterest[2]; 00479 double aAnyInterest[2]; 00480 00481 aLowInterest[0]=0; 00482 aHighInterest[0]=0; 00483 aAnyInterest[0]=0; 00484 aLowInterest[1]=0; 00485 aHighInterest[1]=0; 00486 aAnyInterest[1]=0; 00487 00488 Handle<EEDigiCollection> eeDigis; 00489 if ( e.getByLabel(EEDigiCollection_ , eeDigis) ) { 00490 00491 anaDigiInit(); 00492 00493 for (unsigned int digis=0; digis<eeDigis->size(); ++digis) { 00494 EEDataFrame eedf = (*eeDigis)[digis]; 00495 anaDigi(eedf, *eeSrFlags); 00496 } 00497 00498 //low interest channels: 00499 aLowInterest[0] = nEeLI_[0]*bytesPerCrystal/kByte; 00500 EELowInterestPayload_[0]->Fill(aLowInterest[0]); 00501 aLowInterest[1] = nEeLI_[1]*bytesPerCrystal/kByte; 00502 EELowInterestPayload_[1]->Fill(aLowInterest[1]); 00503 00504 //low interest channels: 00505 aHighInterest[0] = nEeHI_[0]*bytesPerCrystal/kByte; 00506 EEHighInterestPayload_[0]->Fill(aHighInterest[0]); 00507 aHighInterest[1] = nEeHI_[1]*bytesPerCrystal/kByte; 00508 EEHighInterestPayload_[1]->Fill(aHighInterest[1]); 00509 00510 //any-interest channels: 00511 aAnyInterest[0] = getEeEventSize(nEe_[0])/kByte; 00512 EEEventSize_[0]->Fill(aAnyInterest[0]); 00513 aAnyInterest[1] = getEeEventSize(nEe_[1])/kByte; 00514 EEEventSize_[1]->Fill(aAnyInterest[1]); 00515 00516 } else { 00517 LogWarning("EESelectiveReadoutTask") << EEDigiCollection_ << " not available"; 00518 } 00519 00520 }
void EESelectiveReadoutTask::beginJob | ( | const edm::EventSetup & | c | ) | [protected, virtual] |
BeginJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 83 of file EESelectiveReadoutTask.cc.
References dqmStore_, ievt_, Numbers::initGeometry(), prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().
00083 { 00084 00085 ievt_ = 0; 00086 00087 if ( dqmStore_ ) { 00088 dqmStore_->setCurrentFolder(prefixME_ + "/EESelectiveReadoutTask"); 00089 dqmStore_->rmdir(prefixME_ + "/EESelectiveReadoutTask"); 00090 } 00091 00092 Numbers::initGeometry(c, false); 00093 00094 }
void EESelectiveReadoutTask::beginRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
BeginRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 245 of file EESelectiveReadoutTask.cc.
References mergeRuns_, and reset().
00245 { 00246 00247 if ( ! mergeRuns_ ) this->reset(); 00248 00249 }
Cleanup.
Definition at line 179 of file EESelectiveReadoutTask.cc.
References dqmStore_, EEDccEventSize_, EEEventSize_, EEFullReadoutSRFlagMap_, EEHighInterestPayload_, EEHighInterestTriggerTowerFlagMap_, EELowInterestPayload_, EELowInterestTriggerTowerFlagMap_, EEReadoutUnitForcedBitMap_, edm::getName(), MonitorElement::getName(), init_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().
Referenced by endJob().
00179 { 00180 00181 if ( ! init_ ) return; 00182 00183 if ( dqmStore_ ) { 00184 dqmStore_->setCurrentFolder(prefixME_ + "/EESelectiveReadoutTask"); 00185 00186 if ( EEDccEventSize_ ) dqmStore_->removeElement( EEDccEventSize_->getName() ); 00187 EEDccEventSize_ = 0; 00188 00189 if ( EEReadoutUnitForcedBitMap_[0] ) dqmStore_->removeElement( EEReadoutUnitForcedBitMap_[0]->getName() ); 00190 EEReadoutUnitForcedBitMap_[0] = 0; 00191 00192 if ( EEReadoutUnitForcedBitMap_[1] ) dqmStore_->removeElement( EEReadoutUnitForcedBitMap_[1]->getName() ); 00193 EEReadoutUnitForcedBitMap_[1] = 0; 00194 00195 if ( EEFullReadoutSRFlagMap_[0] ) dqmStore_->removeElement( EEFullReadoutSRFlagMap_[0]->getName() ); 00196 EEFullReadoutSRFlagMap_[0] = 0; 00197 00198 if ( EEFullReadoutSRFlagMap_[1] ) dqmStore_->removeElement( EEFullReadoutSRFlagMap_[1]->getName() ); 00199 EEFullReadoutSRFlagMap_[1] = 0; 00200 00201 if ( EEHighInterestTriggerTowerFlagMap_[0] ) dqmStore_->removeElement( EEHighInterestTriggerTowerFlagMap_[0]->getName() ); 00202 EEHighInterestTriggerTowerFlagMap_[0] = 0; 00203 00204 if ( EEHighInterestTriggerTowerFlagMap_[1] ) dqmStore_->removeElement( EEHighInterestTriggerTowerFlagMap_[1]->getName() ); 00205 EEHighInterestTriggerTowerFlagMap_[1] = 0; 00206 00207 if ( EELowInterestTriggerTowerFlagMap_[0] ) dqmStore_->removeElement( EELowInterestTriggerTowerFlagMap_[0]->getName() ); 00208 EELowInterestTriggerTowerFlagMap_[0] = 0; 00209 00210 if ( EELowInterestTriggerTowerFlagMap_[1] ) dqmStore_->removeElement( EELowInterestTriggerTowerFlagMap_[1]->getName() ); 00211 EELowInterestTriggerTowerFlagMap_[1] = 0; 00212 00213 if ( EEEventSize_[0] ) dqmStore_->removeElement( EEEventSize_[0]->getName() ); 00214 EEEventSize_[0] = 0; 00215 00216 if ( EEEventSize_[1] ) dqmStore_->removeElement( EEEventSize_[1]->getName() ); 00217 EEEventSize_[1] = 0; 00218 00219 if ( EEHighInterestPayload_[0] ) dqmStore_->removeElement( EEHighInterestPayload_[0]->getName() ); 00220 EEHighInterestPayload_[0] = 0; 00221 00222 if ( EEHighInterestPayload_[1] ) dqmStore_->removeElement( EEHighInterestPayload_[1]->getName() ); 00223 EEHighInterestPayload_[1] = 0; 00224 00225 if ( EELowInterestPayload_[0] ) dqmStore_->removeElement( EELowInterestPayload_[0]->getName() ); 00226 EELowInterestPayload_[0] = 0; 00227 00228 if ( EELowInterestPayload_[1] ) dqmStore_->removeElement( EELowInterestPayload_[1]->getName() ); 00229 EELowInterestPayload_[1] = 0; 00230 00231 } 00232 00233 init_ = false; 00234 00235 }
Gets the index of the DCC reading a crystal.
i | iX | |
j | iY |
Definition at line 631 of file EESelectiveReadoutTask.cc.
References dccPhiIndex().
Referenced by dccNum().
00631 { 00632 int iPhi = dccPhiIndex(i, j); 00633 if(iPhi<0) return -1; 00634 //34 DCCs in barrel and 8 in EE-=>in EE+ DCC numbering starts at 45, 00635 //iDet/2 is 0 for EE- and 1 for EE+: 00636 return iPhi+iDet/2*45; 00637 }
unsigned EESelectiveReadoutTask::dccNum | ( | const DetId & | xtalId | ) | const [private] |
Retrieve the logical number of the DCC reading a given crystal channel.
xtarId | crystal channel identifier |
Definition at line 588 of file EESelectiveReadoutTask.cc.
References dccIndex(), DetId::det(), DetId::Ecal, EcalEndcap, Exception, EEDetId::ix(), iXY2cIndex(), EEDetId::iy(), j, k, nECALDcc, DetId::subdetId(), and EEDetId::zside().
Referenced by anaDigi().
00588 { 00589 int j; 00590 int k; 00591 00592 if ( xtalId.det()!=DetId::Ecal ) { 00593 throw cms::Exception("EESelectiveReadoutTask") << "Crystal does not belong to ECAL"; 00594 } 00595 00596 int iDet = 0; 00597 00598 if(xtalId.subdetId()==EcalEndcap){ 00599 EEDetId eeDetId(xtalId); 00600 j = iXY2cIndex(eeDetId.ix()); 00601 k = iXY2cIndex(eeDetId.iy()); 00602 int zside = eeDetId.zside(); 00603 if ( zside < 0 ) iDet = 0; 00604 else iDet = 2; 00605 } else { 00606 throw cms::Exception("EESelectiveReadoutTask") 00607 <<"Not ECAL endcap."; 00608 } 00609 int iDcc0 = dccIndex(iDet,j,k); 00610 assert(iDcc0>=0 && iDcc0<nECALDcc); 00611 return iDcc0+1; 00612 }
Gets the phi index of the DCC reading a crystal.
i | iX | |
j | iY |
Definition at line 191 of file EESelectiveReadoutTask.h.
References dccPhiIndexOfRU().
Referenced by dccIndex().
00191 { 00192 return dccPhiIndexOfRU(i/5, j/5); 00193 }
Gets the phi index of the DCC reading a RU (SC or TT).
i | iX | |
j | iY |
Definition at line 626 of file EESelectiveReadoutTask.cc.
References endcapDccMap.
Referenced by dccPhiIndex().
00626 { 00627 char flag=endcapDccMap[i+j*20]; 00628 return (flag==' ')?-1:(flag-'0'); 00629 }
EndJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 237 of file EESelectiveReadoutTask.cc.
References cleanup(), enableCleanup_, and ievt_.
00237 { 00238 00239 LogInfo("EESelectiveReadoutTask") << "analyzed " << ievt_ << " events"; 00240 00241 if ( enableCleanup_ ) this->cleanup(); 00242 00243 }
void EESelectiveReadoutTask::endRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
EndRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 251 of file EESelectiveReadoutTask.cc.
double EESelectiveReadoutTask::getDccEventSize | ( | int | iDcc0, | |
double | nReadXtals | |||
) | const [inline, private] |
Gets the size of an DCC event fragment.
iDcc0 | the DCC logical number starting from 0. | |
nReadXtals | number of read crystal channels. |
Definition at line 169 of file EESelectiveReadoutTask.h.
References bytesPerCrystal, EB, EE, getDccOverhead(), and nRuPerDcc_.
00169 { 00170 subdet_t subdet; 00171 if(iDcc0<9 || iDcc0>=45){ 00172 subdet = EE; 00173 } else{ 00174 subdet = EB; 00175 } 00176 return getDccOverhead(subdet)+nReadXtals*bytesPerCrystal+nRuPerDcc_[iDcc0]*8; 00177 }
double EESelectiveReadoutTask::getDccOverhead | ( | subdet_t | subdet | ) | const [inline, private] |
Gets the size in bytes fixed-size part of a DCC event fragment.
Definition at line 159 of file EESelectiveReadoutTask.h.
References EB.
Referenced by getDccEventSize(), and getEeEventSize().
00159 { 00160 // return (subdet==EB?34:25)*8; 00161 return (subdet==EB?34:52)*8; 00162 }
double EESelectiveReadoutTask::getEeEventSize | ( | double | nReadXtals | ) | const [private] |
Computes the size of an ECAL endcap event fragment.
nReadXtals | number of read crystal channels |
Definition at line 614 of file EESelectiveReadoutTask.cc.
References bytesPerCrystal, EE, getDccOverhead(), nEBDcc, nECALDcc, nEEDcc, and nRuPerDcc_.
Referenced by analyze().
00614 { 00615 double ruHeaderPayload = 0.; 00616 const int firstEbDcc0 = nEEDcc/2; 00617 for ( int iDcc0 = 0; iDcc0 < nECALDcc; ++iDcc0 ) { 00618 //skip barrel: 00619 if(iDcc0 == firstEbDcc0) iDcc0 += nEBDcc; 00620 ruHeaderPayload += nRuPerDcc_[iDcc0]*8.; 00621 } 00622 return getDccOverhead(EE)*nEEDcc + nReadXtals*bytesPerCrystal 00623 + ruHeaderPayload; 00624 }
Converts a std CMSSW crystal x or y index to a c-array index (starting from zero and without hole).
Definition at line 140 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), and dccNum().
EcalScDetId EESelectiveReadoutTask::readOutUnitOf | ( | const EEDetId & | xtalId | ) | const [private] |
Retrives the readout unit, a trigger tower in the barrel case, and a supercrystal in the endcap case, a given crystal belongs to.
xtalId | identifier of the crystal |
Definition at line 581 of file EESelectiveReadoutTask.cc.
References EEDetId::ix(), EEDetId::iy(), scEdge, and EEDetId::zside().
Referenced by anaDigi().
00581 { 00582 const int scEdge = 5; 00583 return EcalScDetId((xtalId.ix()-1)/scEdge+1, 00584 (xtalId.iy()-1)/scEdge+1, 00585 xtalId.zside()); 00586 }
Reset.
Definition at line 255 of file EESelectiveReadoutTask.cc.
References EEDccEventSize_, EEEventSize_, EEFullReadoutSRFlagMap_, EEHighInterestPayload_, EEHighInterestTriggerTowerFlagMap_, EELowInterestPayload_, EELowInterestTriggerTowerFlagMap_, EEReadoutUnitForcedBitMap_, and MonitorElement::Reset().
Referenced by beginRun().
00255 { 00256 00257 if ( EEDccEventSize_ ) EEDccEventSize_->Reset(); 00258 00259 if ( EEReadoutUnitForcedBitMap_[0] ) EEReadoutUnitForcedBitMap_[0]->Reset(); 00260 if ( EEReadoutUnitForcedBitMap_[1] ) EEReadoutUnitForcedBitMap_[1]->Reset(); 00261 00262 if ( EEFullReadoutSRFlagMap_[0] ) EEFullReadoutSRFlagMap_[0]->Reset(); 00263 if ( EEFullReadoutSRFlagMap_[1] ) EEFullReadoutSRFlagMap_[1]->Reset(); 00264 00265 if ( EEHighInterestTriggerTowerFlagMap_[0] ) EEHighInterestTriggerTowerFlagMap_[0]->Reset(); 00266 if ( EEHighInterestTriggerTowerFlagMap_[1] ) EEHighInterestTriggerTowerFlagMap_[1]->Reset(); 00267 00268 if ( EELowInterestTriggerTowerFlagMap_[0] ) EELowInterestTriggerTowerFlagMap_[0]->Reset(); 00269 if ( EELowInterestTriggerTowerFlagMap_[1] ) EELowInterestTriggerTowerFlagMap_[1]->Reset(); 00270 00271 if ( EEEventSize_[0] ) EEEventSize_[0]->Reset(); 00272 if ( EEEventSize_[1] ) EEEventSize_[1]->Reset(); 00273 00274 if ( EEHighInterestPayload_[0] ) EEHighInterestPayload_[0]->Reset(); 00275 if ( EEHighInterestPayload_[1] ) EEHighInterestPayload_[1]->Reset(); 00276 00277 if ( EELowInterestPayload_[0] ) EELowInterestPayload_[0]->Reset(); 00278 if ( EELowInterestPayload_[1] ) EELowInterestPayload_[1]->Reset(); 00279 00280 }
Setup.
Definition at line 96 of file EESelectiveReadoutTask.cc.
References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile(), dqmStore_, EEDccEventSize_, EEEventSize_, EEFullReadoutSRFlagMap_, EEHighInterestPayload_, EEHighInterestTriggerTowerFlagMap_, EELowInterestPayload_, EELowInterestTriggerTowerFlagMap_, EEReadoutUnitForcedBitMap_, histo, i, init_, prefixME_, Numbers::sEE(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), and DQMStore::setCurrentFolder().
Referenced by analyze().
00096 { 00097 00098 init_ = true; 00099 00100 char histo[200]; 00101 00102 if ( dqmStore_ ) { 00103 dqmStore_->setCurrentFolder(prefixME_ + "/EESelectiveReadoutTask"); 00104 00105 sprintf(histo, "EESRT DCC event size"); 00106 EEDccEventSize_ = dqmStore_->bookProfile(histo, histo, 18, 1, 19, 100, 0., 200., "s"); 00107 for (int i = 0; i < 18; i++) { 00108 EEDccEventSize_->setBinLabel(i+1, Numbers::sEE(i+1).c_str(), 1); 00109 } 00110 00111 sprintf(histo, "EESRT readout unit with SR forced EE -"); 00112 EEReadoutUnitForcedBitMap_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00113 EEReadoutUnitForcedBitMap_[0]->setAxisTitle("jx", 1); 00114 EEReadoutUnitForcedBitMap_[0]->setAxisTitle("jy", 2); 00115 00116 sprintf(histo, "EESRT readout unit with SR forced EE +"); 00117 EEReadoutUnitForcedBitMap_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00118 EEReadoutUnitForcedBitMap_[1]->setAxisTitle("jx", 1); 00119 EEReadoutUnitForcedBitMap_[1]->setAxisTitle("jy", 2); 00120 00121 sprintf(histo, "EESRT full readout SR flags EE -"); 00122 EEFullReadoutSRFlagMap_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00123 EEFullReadoutSRFlagMap_[0]->setAxisTitle("jx", 1); 00124 EEFullReadoutSRFlagMap_[0]->setAxisTitle("jy", 2); 00125 00126 sprintf(histo, "EESRT full readout SR flags EE +"); 00127 EEFullReadoutSRFlagMap_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00128 EEFullReadoutSRFlagMap_[1]->setAxisTitle("jx", 1); 00129 EEFullReadoutSRFlagMap_[1]->setAxisTitle("jy", 2); 00130 00131 sprintf(histo, "EESRT high interest TT Flags EE -"); 00132 EEHighInterestTriggerTowerFlagMap_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00133 EEHighInterestTriggerTowerFlagMap_[0]->setAxisTitle("jx", 1); 00134 EEHighInterestTriggerTowerFlagMap_[0]->setAxisTitle("jy", 2); 00135 00136 sprintf(histo, "EESRT high interest TT Flags EE +"); 00137 EEHighInterestTriggerTowerFlagMap_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00138 EEHighInterestTriggerTowerFlagMap_[1]->setAxisTitle("jx", 1); 00139 EEHighInterestTriggerTowerFlagMap_[1]->setAxisTitle("jy", 2); 00140 00141 sprintf(histo, "EESRT low interest TT Flags EE -"); 00142 EELowInterestTriggerTowerFlagMap_[0] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00143 EELowInterestTriggerTowerFlagMap_[0]->setAxisTitle("jx", 1); 00144 EELowInterestTriggerTowerFlagMap_[0]->setAxisTitle("jy", 2); 00145 00146 sprintf(histo, "EESRT low interest TT Flags EE +"); 00147 EELowInterestTriggerTowerFlagMap_[1] = dqmStore_->book2D(histo, histo, 100, 0., 100., 100, 0., 100.); 00148 EELowInterestTriggerTowerFlagMap_[1]->setAxisTitle("jx", 1); 00149 EELowInterestTriggerTowerFlagMap_[1]->setAxisTitle("jy", 2); 00150 00151 sprintf(histo, "EESRT event size EE -"); 00152 EEEventSize_[0] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00153 EEEventSize_[0]->setAxisTitle("event size (kB)",1); 00154 00155 sprintf(histo, "EESRT event size EE +"); 00156 EEEventSize_[1] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00157 EEEventSize_[1]->setAxisTitle("event size (kB)",1); 00158 00159 sprintf(histo, "EESRT high interest payload EE -"); 00160 EEHighInterestPayload_[0] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00161 EEHighInterestPayload_[0]->setAxisTitle("event size (kB)",1); 00162 00163 sprintf(histo, "EESRT high interest payload EE +"); 00164 EEHighInterestPayload_[1] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00165 EEHighInterestPayload_[1]->setAxisTitle("event size (kB)",1); 00166 00167 sprintf(histo, "EESRT low interest payload EE -"); 00168 EELowInterestPayload_[0] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00169 EELowInterestPayload_[0]->setAxisTitle("event size (kB)",1); 00170 00171 sprintf(histo, "EESRT low interest payload EE +"); 00172 EELowInterestPayload_[1] = dqmStore_->book1D(histo, histo, 100, 0, 200); 00173 EELowInterestPayload_[1]->setAxisTitle("event size (kB)",1); 00174 00175 } 00176 00177 }
const int EESelectiveReadoutTask::bytesPerCrystal = 24 [static, protected] |
Number of bytes per crystal.
Definition at line 107 of file EESelectiveReadoutTask.h.
Referenced by analyze(), getDccEventSize(), and getEeEventSize().
DQMStore* EESelectiveReadoutTask::dqmStore_ [private] |
Definition at line 228 of file EESelectiveReadoutTask.h.
Referenced by beginJob(), cleanup(), EESelectiveReadoutTask(), and setup().
Definition at line 238 of file EESelectiveReadoutTask.h.
Definition at line 240 of file EESelectiveReadoutTask.h.
Referenced by analyze(), and EESelectiveReadoutTask().
Definition at line 243 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
Definition at line 236 of file EESelectiveReadoutTask.h.
Referenced by analyze(), and EESelectiveReadoutTask().
MonitorElement* EESelectiveReadoutTask::EEEventSize_[2] [private] |
Definition at line 248 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
Definition at line 245 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
MonitorElement* EESelectiveReadoutTask::EEHighInterestPayload_[2] [private] |
Definition at line 249 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
Definition at line 246 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
MonitorElement* EESelectiveReadoutTask::EELowInterestPayload_[2] [private] |
Definition at line 250 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
Definition at line 247 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
Definition at line 244 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), reset(), and setup().
For book keeping of RU actually read out (not fully zero suppressed).
Definition at line 224 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), and anaDigiInit().
Definition at line 239 of file EESelectiveReadoutTask.h.
Referenced by analyze(), and EESelectiveReadoutTask().
bool EESelectiveReadoutTask::enableCleanup_ [private] |
Definition at line 232 of file EESelectiveReadoutTask.h.
Referenced by EESelectiveReadoutTask(), and endJob().
Definition at line 241 of file EESelectiveReadoutTask.h.
Referenced by analyze(), and EESelectiveReadoutTask().
int EESelectiveReadoutTask::ievt_ [private] |
Definition at line 226 of file EESelectiveReadoutTask.h.
Referenced by analyze(), beginJob(), and endJob().
bool EESelectiveReadoutTask::init_ [private] |
Definition at line 252 of file EESelectiveReadoutTask.h.
Referenced by analyze(), cleanup(), EESelectiveReadoutTask(), and setup().
const int EESelectiveReadoutTask::kByte = 1024 [static, protected] |
bool EESelectiveReadoutTask::mergeRuns_ [private] |
Definition at line 234 of file EESelectiveReadoutTask.h.
Referenced by beginRun(), and EESelectiveReadoutTask().
const int EESelectiveReadoutTask::nEBDcc = 36 [static, protected] |
const int EESelectiveReadoutTask::nECALDcc = 54 [static, protected] |
Constants.
Definition at line 80 of file EESelectiveReadoutTask.h.
Referenced by dccNum(), and getEeEventSize().
int EESelectiveReadoutTask::nEe_[2] [private] |
ECAL endcap read channel count.
Definition at line 204 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), anaDigiInit(), and analyze().
const int EESelectiveReadoutTask::nEEDcc = 18 [static, protected] |
int EESelectiveReadoutTask::nEeHI_[2] [private] |
ECAL endcap high interest read channel count.
Definition at line 212 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), anaDigiInit(), and analyze().
int EESelectiveReadoutTask::nEeLI_[2] [private] |
ECAL endcap low interest read channel count.
Definition at line 208 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), anaDigiInit(), and analyze().
const int EESelectiveReadoutTask::nEeRus = 2*(34+32+33+33+32+34+33+34+33) [static, protected] |
const int EESelectiveReadoutTask::nEeX = 100 [static, protected] |
const int EESelectiveReadoutTask::nEeY = 100 [static, protected] |
const int EESelectiveReadoutTask::nEndcaps = 2 [static, protected] |
int EESelectiveReadoutTask::nPerDcc_[nECALDcc] [private] |
ECAL read channel count for each DCC:.
Definition at line 216 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), and anaDigiInit().
int EESelectiveReadoutTask::nRuPerDcc_[nECALDcc] [private] |
Count for each DCC of RUs with at leat one channel read out:.
Definition at line 220 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), anaDigiInit(), getDccEventSize(), and getEeEventSize().
const int EESelectiveReadoutTask::nTtEta = 56 [static, protected] |
const int EESelectiveReadoutTask::nTtPhi = 72 [static, protected] |
std::string EESelectiveReadoutTask::prefixME_ [private] |
Definition at line 230 of file EESelectiveReadoutTask.h.
Referenced by beginJob(), cleanup(), EESelectiveReadoutTask(), and setup().
const int EESelectiveReadoutTask::scEdge = 5 [static, protected] |
Number of crystals along a supercrystal edge.
Definition at line 98 of file EESelectiveReadoutTask.h.
Referenced by anaDigi(), and readOutUnitOf().