#include <DQM/L1TMonitor/interface/L1TDEMON.h>
Definition at line 28 of file L1TDEMON.h.
L1TDEMON::L1TDEMON | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 7 of file L1TDEMON.cc.
References GenMuonPlsPt100GeV_cfg::cout, dbe, dedefs::DEnsys, DEsource_, deSysCount, lat::endl(), flush(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), hasRecord_, histFile_, histFolder_, i, nEvt_, nEvtWithSys, NULL, runInFF_, DQMStore::setCurrentFolder(), DQMStore::setVerbose(), verbose(), and verbose_.
00007 { 00008 00009 verbose_ = iConfig.getUntrackedParameter<int>("VerboseFlag",0); 00010 00011 if(verbose()) 00012 std::cout << "L1TDEMON::L1TDEMON()...\n" << std::flush; 00013 00014 DEsource_ = iConfig.getParameter<edm::InputTag>("DataEmulCompareSource"); 00015 histFolder_ = iConfig.getUntrackedParameter<std::string>("HistFolder", "L1TEMU/"); 00016 histFile_ = iConfig.getUntrackedParameter<std::string>("HistFile", ""); 00017 00018 runInFF_ = iConfig.getUntrackedParameter<bool> ("RunInFilterFarm", false); 00019 if(verbose()) 00020 std::cout << "Filter farm run setting? " << runInFF_ 00021 << "\n" << std::flush; 00022 00023 if(iConfig.getUntrackedParameter<bool> ("disableROOToutput", true)) 00024 histFile_ = ""; 00025 00026 00027 if (histFile_.size()!=0) { 00028 edm::LogInfo("OutputRootFile") 00029 << "L1TEmulator Monitoring histograms will be saved to " 00030 << histFile_.c_str() 00031 << std::endl; 00032 } 00033 00034 nEvt_ = 0; 00035 for(int i=0; i<DEnsys; i++) { 00036 deSysCount[i]=0; 00037 nEvtWithSys[i]=0; 00038 } 00039 00040 dbe = NULL; 00041 if (iConfig.getUntrackedParameter<bool>("DQMStore", false)) { 00042 dbe = edm::Service<DQMStore>().operator->(); 00043 dbe->setVerbose(0); 00044 } 00045 00046 if(dbe!=NULL) 00047 dbe->setCurrentFolder(histFolder_); 00048 00049 hasRecord_=true; 00050 00051 if(verbose()) 00052 std::cout << "L1TDEMON::L1TDEMON constructor...done.\n" << std::flush; 00053 }
L1TDEMON::~L1TDEMON | ( | ) |
void L1TDEMON::analyze | ( | const edm::Event & | iEvent, | |
const edm::EventSetup & | iSetup | |||
) | [protected, virtual] |
get the comparison results
get the de candidates
--- Fill histograms(me) ---
bitset loop
GT mon info
correlations: fill histograms
Implements edm::EDAnalyzer.
Definition at line 301 of file L1TDEMON.cc.
References CORR, GenMuonPlsPt100GeV_cfg::cout, dedefs::CTF, dedefs::DEnsys, DEsource_, deSysCount, deword, dedefs::DTF, dedefs::DTP, dword, lat::endl(), errordist, errortype, eta, etaData, etaphi, eword, MonitorElement::Fill(), flush(), dedefs::GCT, dedefs::GCTisolaem, dedefs::GCTnoisoem, MonitorElement::getBinContent(), edm::Event::getByLabel(), dedefs::GLT, GltDEDigi::gltDecBits, GltDEDigi::gltTchBits, GMT, dedefs::GMTcnd, hasRecord_, i, edm::Handle< T >::isValid(), it, j, k, edm::InputTag::label(), nEvt_, nEvtWithSys, phi, phiData, dedefs::RCT, dedefs::RCTem, rnkData, dedefs::RPC, runInFF_, MonitorElement::setBinContent(), sysncand, sysrates, dedefs::SystLabel, verbose(), x3, and x3Data.
00301 { 00302 00303 if(!hasRecord_) 00304 return; 00305 00306 if(verbose()) 00307 std::cout << "L1TDEMON::analyze() start\n" << std::flush; 00308 00309 nEvt_++; 00310 00312 edm::Handle<L1DataEmulRecord> deRecord; 00313 iEvent.getByLabel(DEsource_, deRecord); 00314 00315 if (!deRecord.isValid()) { 00316 edm::LogInfo("DataNotFound") 00317 << "Cannot find L1DataEmulRecord with label " 00318 << DEsource_.label() 00319 << " Please verify that comparator was successfully executed." 00320 << " Emulator DQM will be skipped!" 00321 << std::endl; 00322 hasRecord_=false; 00323 return; 00324 } 00325 00326 bool deMatch[DEnsys]; 00327 deRecord->get_status(deMatch); 00328 if(verbose()) { 00329 std::cout << "[L1TDEMON] verbose sys match?: "; 00330 for(int i=0; i<DEnsys; i++) 00331 std::cout << deMatch[i] << " "; 00332 std::cout << std::endl; 00333 } 00334 00335 bool isComp[DEnsys]; 00336 for(int i=0; i<DEnsys; i++) 00337 isComp[i] = deRecord->get_isComp(i); 00338 if(verbose()) { 00339 std::cout << "[L1TDEMON] verbose dosys?: "; 00340 for(int i=0; i<DEnsys; i++) 00341 std::cout << isComp[i]; 00342 std::cout << std::endl; 00343 } 00344 00345 int DEncand[DEnsys][2]; 00346 for(int i=0; i<DEnsys; i++) 00347 for(int j=0; j<2; j++) 00348 DEncand[i][j] = deRecord->getNCand(i,j); 00349 if(verbose()) { 00350 std::cout << "[L1TDEMON] ncands d: "; 00351 for(int i=0; i<DEnsys; i++) 00352 std::cout << DEncand[i][0] << " "; 00353 std::cout << "\n[L1TDEMON] ncands e: "; 00354 for(int i=0; i<DEnsys; i++) 00355 std::cout << DEncand[i][1] << " "; 00356 std::cout << std::endl; 00357 } 00358 00359 00360 const int nullVal = L1DataEmulDigi().reset(); 00361 00363 L1DEDigiCollection deColl; 00364 deColl = deRecord->getColl(); 00365 00366 // global counters 00367 int hasSys[DEnsys]={0}; 00368 for(L1DEDigiCollection::const_iterator it=deColl.begin(); it!=deColl.end(); it++) 00369 if(!it->empty()) hasSys[it->sid()]++; 00370 for(int i=0; i<DEnsys; i++) { 00371 if(!hasSys[i]) continue; 00372 nEvtWithSys[i]++; 00373 if(deMatch[i]) 00374 deSysCount[i]++; 00375 } 00376 00377 if(verbose()) { 00378 std::cout << "[L1TDEMON] digis: \n"; 00379 for(L1DEDigiCollection::const_iterator it=deColl.begin(); it!=deColl.end(); it++) 00380 std::cout << "\t" << *it << std::endl; 00381 } 00382 00383 00385 00386 // global, sub-systems d|e match, ncands 00387 for(int i=0; i<DEnsys; i++) { 00388 if(!isComp[i]) continue; 00389 00390 for(int j=0; j<2; j++) 00391 sysncand[j]->Fill(i,DEncand[i][j]); 00392 00393 //sysrates->Fill(i,(int)!deMatch[i]); 00394 int ibin = i+1; 00395 double rate = nEvtWithSys[i]?(nEvtWithSys[i]-1.*deSysCount[i])/nEvtWithSys[i]:0.; 00396 sysrates->setBinContent(ibin,rate); 00397 if(verbose()) { 00398 std::cout << "[L1TDEMON] analyze " 00399 << " sysid:" << i 00400 << " nEvt:" << nEvt_ 00401 << " match?" << deMatch[i] 00402 << " ncands:" << hasSys[i] 00403 << " nevtwsys:"<< nEvtWithSys[i] 00404 << " nevtgood:"<< deSysCount[i] 00405 << " rate:" << sysrates->getBinContent(ibin) 00406 << "\n"; 00407 if(rate>1) 00408 std::cout << "problem, error rate for " << SystLabel[i] 00409 <<" is "<<sysrates->getBinContent(ibin) 00410 << std::endl; 00411 } 00412 } 00413 00414 // container for subsystem's leading candidate 00415 const int ncorr = 3; 00416 float LeadCandVal[DEnsys][ncorr] = {{nullVal}}; 00417 for(int i=0; i<DEnsys; i++) 00418 for(int j=0; j<ncorr; j++) 00419 LeadCandVal[i][j]=nullVal; 00420 00421 // d|e candidate loop 00422 for(L1DEDigiCollection::const_iterator it=deColl.begin(); it!=deColl.end(); it++) { 00423 00424 int sid = it->sid(); 00425 int cid = it->cid(); 00426 00427 if(it->empty()) 00428 continue; 00429 assert(isComp[sid]); 00430 00431 int type = it->type(); 00432 double phiv = it->x1(); 00433 double etav = it->x2(); 00434 double x3v = it->x3(); 00435 00436 float rankarr[2]; 00437 it->rank(rankarr); 00438 float rnkv = rankarr[0]; 00439 00440 double wei = 1.; 00441 00442 unsigned int mask = (~0x0); 00443 00444 if(sid==RCT) { 00445 if(cid!=RCTem) continue; 00446 //if(cid!=RCTrgn) continue; 00447 } 00448 if(sid==GCT) { 00449 //GCTem, GCTjet, GCTisolaem, GCTnoisoem, GCTcenjets, GCTforjets, GCTtaujets, 00450 //skip jets for now 00451 if(cid!=GCTisolaem && cid!=GCTnoisoem ) continue; 00452 } 00453 if(sid==DTP) { 00454 //tbd cols:th,ph; plots per wheel 00455 //if(it->x3()!=0) continue; 00456 } 00457 if(sid==GMT) { 00458 //select gmt cands only for GMT sys 00459 if(cid!=GMTcnd) continue; 00460 //masking: gres -- I.Mikulec: mask bits 0,5,16,21,22,23 00461 //mask = (~(0x0e10021)); 00462 } 00463 if(sid==DTF || sid==RPC || sid==CTF || sid==RPC) { 00464 //select mu regional cands only for dtf,ctf,rpc 00465 //if(cid!=MUrtf) continue; 00466 //masking: gres dttf only -- I.Mikulec: lowest 16 bits only 00467 //if(sid==DTF) mask = 0xffff; 00468 } 00469 00470 errordist ->Fill(type); 00471 errortype[sid]->Fill(type); 00472 00473 // skip next if running in filter farm 00474 if(runInFF_) 00475 continue; 00476 00477 //exclude agreeing cands 00478 wei=1.; if(!type) wei=0.; 00479 if(etav!=nullVal && phiv!=nullVal) 00480 etaphi[sid]->Fill(etav,phiv,wei); 00481 if(etav!=nullVal) 00482 eta [sid]->Fill(etav,wei); 00483 if(phiv!=nullVal) 00484 phi [sid]->Fill(phiv,wei); 00485 if(sid==DTP) 00486 if(x3v!=nullVal) 00487 x3 [sid]->Fill( x3v,wei); 00488 00489 unsigned int word[2]; 00490 it->data(word); 00491 std::bitset<32> dbits(word[0]); 00492 std::bitset<32> ebits(word[1]); 00493 unsigned int dexor = ( (word[0]) ^ (word[1]) ); 00494 //disagreeing bits 00495 std::bitset<32> debits(dexor); 00496 //disagreeing bits after masking 00497 std::bitset<32> dembits( ( (dexor) & (mask) ) ); 00498 00499 if(verbose()) 00500 std::cout << "l1demon" 00501 << " sid:" << sid << " cid:" << cid << "\n" 00502 << " data:0x" << std::hex << word[0] << std::dec 00503 << " bitset:" << dbits 00504 << "\n" 00505 << " emul:0x" << std::hex << word[1] << std::dec 00506 << " bitset:" << ebits 00507 << "\n" 00508 << " xor:0x" << std::hex << dexor << std::dec 00509 << " bitset:" << debits 00510 << " bitset:" << ( (dbits) ^ (ebits) ) 00511 << "\n" << std::flush; 00512 00514 for(int ibit=0; ibit<32; ibit++) { 00515 wei=1.; 00516 //comparison gives no info if there's only 1 candidate 00517 if(type==3 || type==4) wei=0.; 00518 if(dbits [ibit]) dword[sid]->Fill(ibit,wei); 00519 if(ebits [ibit]) eword[sid]->Fill(ibit,wei); 00520 if(debits [ibit])deword[sid]->Fill(ibit,wei); 00521 //if(dembits[ibit])masked[sid]->Fill(ibit,wei); 00522 } 00523 00524 //exclude e-only cands (only data) 00525 wei=1.;if(type==4) wei=0.; 00526 if(etav!=nullVal) 00527 etaData[sid]->Fill(etav,wei); 00528 if(phiv!=nullVal) 00529 phiData[sid]->Fill(phiv,wei); 00530 if(sid==DTP) 00531 if(x3v!=nullVal) 00532 x3Data [sid]->Fill( x3v,wei); 00533 rnkData[sid]->Fill(rnkv,wei); 00534 00535 //correlations: store leading candidate 00536 if(type==4) continue; //exclude e-only cands 00537 bool islead = false; 00538 if(rnkv>LeadCandVal[sid][2]) 00539 islead = true; 00540 else if (rnkv==LeadCandVal[sid][2]) { 00541 if (phiv>LeadCandVal[sid][0]) 00542 islead = true; 00543 else if (phiv==LeadCandVal[sid][0]) 00544 if (etav>LeadCandVal[sid][1]) 00545 islead = true; 00546 } 00547 00548 if(islead) { 00549 LeadCandVal[sid][0] = phiv; 00550 LeadCandVal[sid][1] = etav; 00551 LeadCandVal[sid][2] = rnkv; 00552 } 00553 00554 }//close loop over dedigi-cands 00555 00556 00557 // done if running in filter farm 00558 if(runInFF_) 00559 return; 00560 00561 // hBxDiffAllFed hBxDiffAllFedSpread hBxOccyAllFedSpread 00562 00563 00565 if(isComp[GLT]) { 00566 const int w64=64; 00567 GltDEDigi gltdigimon = deRecord->getGlt(); 00568 //bool ddecbit = gltdigimon.globalDBit[0]; 00569 //bool edecbit = gltdigimon.globalDBit[1]; 00570 std::vector<bool> edecbitv = gltdigimon.gltDecBits[0]; 00571 std::vector<bool> ddecbitv = gltdigimon.gltDecBits[1]; 00572 std::vector<bool> etchbitv = gltdigimon.gltTchBits[0]; 00573 std::vector<bool> dtchbitv = gltdigimon.gltTchBits[1]; 00574 00575 std::vector<bool> dedecbitv(2*w64,false), debitmaskv(2*w64,false), 00576 gtbitmasked(2*w64,false); 00577 for(int i=0; i<2*w64; i++) 00578 gtbitmasked[i] = false; //no masking! 00579 for(int i=0; i<2*w64; i++) { 00580 dedecbitv[i]=(ddecbitv[i]&&edecbitv[i]); 00581 debitmaskv[i]=(dedecbitv[i]&& !gtbitmasked[i]); 00582 if(ddecbitv[i]) dword [GLT]->Fill(i,1); 00583 if(edecbitv[i]) eword [GLT]->Fill(i,1); 00584 if(dedecbitv[i]) deword[GLT]->Fill(i,1); 00585 //if(debitmaskv[i])masked[GLT]->Fill(i,1); 00586 } 00587 00588 std::vector<bool> detchbitv(w64,false); 00589 for(int i=0; i<w64; i++) { 00590 detchbitv[i]=(dtchbitv[i]&&etchbitv[i]); 00591 } 00592 00593 if(verbose()) { 00594 std::cout << "L1TDEMON gt dec bits:\n"; 00595 std::cout << "\ndata:"; for(int i=0; i<2*w64; i++) std::cout << ddecbitv[i]; 00596 std::cout << "\nemul:"; for(int i=0; i<2*w64; i++) std::cout << edecbitv[i]; 00597 std::cout << "\nand :"; for(int i=0; i<2*w64; i++) std::cout << dedecbitv[i]; 00598 std::cout << "\nmask:"; for(int i=0; i<2*w64; i++) std::cout << debitmaskv[i]; 00599 std::cout << "\n gt tech trig bits:\n"; 00600 std::cout << "\ndata:"; for(int i=0; i<w64; i++) std::cout << dtchbitv[i]; 00601 std::cout << "\nemul:"; for(int i=0; i<w64; i++) std::cout << etchbitv[i]; 00602 std::cout << "\n"; 00603 } 00604 } 00605 00607 double wei=1.; 00608 for(int i=0; i<DEnsys; i++) { 00609 for(int j=0; j<DEnsys; j++) { 00610 if(i>=j) continue; 00611 for(int k=0; k<ncorr; k++) { 00612 if(LeadCandVal[i][k]!=nullVal && LeadCandVal[j][k]!=nullVal) 00613 CORR[i][j][k]->Fill(LeadCandVal[i][k],LeadCandVal[j][k],wei); 00614 } 00615 } 00616 } 00617 00618 if(verbose()) 00619 std::cout << "L1TDEMON::analyze() end.\n" << std::flush; 00620 00621 }
void L1TDEMON::beginJob | ( | const edm::EventSetup & | ) | [protected, virtual] |
correlation (skip if running in filter farm)
labeling (temporary cosmetics added here)
assertions/temporary
Reimplemented from edm::EDAnalyzer.
Definition at line 58 of file L1TDEMON.cc.
References DQMStore::book1D(), DQMStore::book2D(), CORR, GenMuonPlsPt100GeV_cfg::cout, dedefs::CTF, dedefs::CTP, dbe, dedefs::DEnsys, deword, dedefs::DTF, dedefs::DTP, dword, errordist, errortype, eta, etaData, etaphi, dedefs::ETP, eword, flush(), dedefs::GCT, dedefs::GLT, GMT, histFolder_, dedefs::HTP, i, j, k, dedefs::LTC, phi, phiData, dedefs::RCT, rnkData, dedefs::RPC, runInFF_, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), sysncand, sysrates, dedefs::SystLabel, dedefs::SystLabelExt, verbose(), x3, and x3Data.
00058 { 00059 00060 if(verbose()) 00061 std::cout << "L1TDEMON::beginJob() start\n" << std::flush; 00062 00063 DQMStore* dbe = 0; 00064 dbe = edm::Service<DQMStore>().operator->(); 00065 if(dbe) { 00066 dbe->setCurrentFolder(histFolder_); 00067 // dbe->rmdir(histFolder_); 00068 } 00069 00070 //physical values disabled now, waiting for scale procedure 00071 //const double tpi = 6.2832; 00072 //const double amin= -0.5; 00073 //const double amax=tpi+0.5; 00074 00075 // ETP, HTP, RCT, GCT, DTP, DTF, CTP, CTF, RPC,LTC, GMT,GLT 00076 int phiNBins[DEnsys] = { 71 , 71 , 18 ,18 , 12, 255, 160, 255, 255, 0, 255,0}; 00077 double phiMinim[DEnsys] = { 0.5, 0.5, -0.5,-0.5,-0.5, 0, -0.5, 0, 0, 0, 0,0}; 00078 double phiMaxim[DEnsys] = { 71.5, 71.5, 17.5,17.5,11.5, 255,159.5, 255, 255, 0, 255,0}; 00079 00080 int etaNBins[DEnsys] = { 35 , 35 , 22 ,22 , 5, 20, 120, 20, 20, 0, 20,0}; 00081 double etaMinim[DEnsys] = {-17.5,-17.5, -0.5,-0.5,-2.5, 0, -0.5, 0, 0, 0, 0,0}; 00082 double etaMaxim[DEnsys] = { 17.5, 17.5, 21.5,21.5, 2.5, 63,119.5, 63, 63, 0, 63,0}; 00083 00084 int x3NBins [DEnsys] = { 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,0}; 00085 double x3Minim [DEnsys] = { 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0,0}; 00086 double x3Maxim [DEnsys] = { 0, 0, 0, 0, 4.5, 0, 0, 0, 0, 0, 0,0}; 00087 00088 int rnkNBins[DEnsys] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0}; 00089 double rnkMinim[DEnsys] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0}; 00090 double rnkMaxim[DEnsys] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0}; 00091 //assume for 00092 for(int i=0; i<DEnsys; i++) {rnkNBins[i]=63;rnkMinim[i]=0.5;rnkMaxim[i]=63.5;}//rank 0x3f->63 00093 rnkNBins[DTP]=7; rnkMinim[DTP]=-0.5;rnkMaxim[DTP]=6.5; //rank 0-6 00094 rnkNBins[CTP]=16;rnkMinim[CTP]=-0.5;rnkMaxim[CTP]=15.5; //quality 0-15 00095 00096 /*--notes 00097 RCT: global index ieta (0-21)=[22,-0.5,21.5] , iphi (0-17)=[18,-0.5,17.5]; crate (18) card (7) 00098 GCT: phi index (0-17); eta = -6 to -0, +0 to +6. Sign is bit 3, 1 means -ve Z, 0 means +ve Z -> 0.17 00099 DTP: usc 0..11; uwh -2..2; ust 1..4; 00100 CTP: rank is quality 0..15 00101 */ 00102 00103 if(dbe) { 00104 00105 if(!runInFF_) 00106 dbe->setCurrentFolder(std::string(histFolder_+"common/")); 00107 00108 for(int j=0; j<2; j++) { 00109 std::string lbl("sysncand"); 00110 lbl += (j==0?"Data":"Emul"); 00111 sysncand[j] = dbe->book1D(lbl.data(),lbl.data(),DEnsys, 0, DEnsys ); 00112 } 00113 00114 sysrates = dbe->book1D("sysrates","sysrates",DEnsys, 0, DEnsys ); 00115 const int nerr = 5; 00116 errordist = dbe->book1D("errorflag","errorflag",nerr, 0, nerr); 00117 00118 for(int j=0; j<DEnsys; j++) { 00119 00120 if(!runInFF_) 00121 dbe->setCurrentFolder(std::string(histFolder_+SystLabelExt[j])); 00122 00123 std::string lbl(""); 00124 lbl.clear(); 00125 lbl+=SystLabel[j];lbl+="ErrorFlag"; 00126 errortype[j] = dbe->book1D(lbl.data(),lbl.data(), nerr, 0, nerr); 00127 00128 // skip next histos if running in filter farm 00129 if(runInFF_) 00130 continue; 00131 00132 // 00133 lbl.clear(); 00134 lbl+=SystLabel[j];lbl+="eta"; 00135 eta[j] = dbe->book1D(lbl.data(),lbl.data(), 00136 etaNBins[j], etaMinim[j], etaMaxim[j]); 00137 lbl.clear(); 00138 lbl+=SystLabel[j];lbl+="phi"; 00139 phi[j] = dbe->book1D(lbl.data(),lbl.data(), 00140 phiNBins[j], phiMinim[j], phiMaxim[j]); 00141 lbl.clear(); 00142 lbl+=SystLabel[j];lbl+="x3"; 00143 x3[j] = dbe->book1D(lbl.data(),lbl.data(), 00144 x3NBins[j], x3Minim[j], x3Maxim[j]); 00145 lbl.clear(); 00146 lbl+=SystLabel[j];lbl+="etaphi"; 00147 etaphi[j] = dbe->book2D(lbl.data(),lbl.data(), 00148 etaNBins[j], etaMinim[j], etaMaxim[j], 00149 phiNBins[j], phiMinim[j], phiMaxim[j] 00150 ); 00151 // 00152 lbl.clear(); 00153 lbl+=SystLabel[j];lbl+="eta"; lbl+="Data"; 00154 etaData[j] = dbe->book1D(lbl.data(),lbl.data(), 00155 etaNBins[j], etaMinim[j], etaMaxim[j]); 00156 lbl.clear(); 00157 lbl+=SystLabel[j];lbl+="phi"; lbl+="Data"; 00158 phiData[j] = dbe->book1D(lbl.data(),lbl.data(), 00159 phiNBins[j], phiMinim[j], phiMaxim[j]); 00160 lbl.clear(); 00161 lbl+=SystLabel[j];lbl+="x3"; lbl+="Data"; 00162 x3Data[j] = dbe->book1D(lbl.data(),lbl.data(), 00163 x3NBins[j], x3Minim[j], x3Maxim[j]); 00164 lbl.clear(); 00165 lbl+=SystLabel[j];lbl+="rank"; lbl+="Data"; 00166 rnkData[j] = dbe->book1D(lbl.data(),lbl.data(), 00167 rnkNBins[j], rnkMinim[j], rnkMaxim[j]); 00168 00169 const int nbit = (j==GLT)?128:32; 00170 lbl.clear(); 00171 lbl+=SystLabel[j];lbl+="dword"; 00172 dword[j] = dbe->book1D(lbl.data(),lbl.data(),nbit,0,nbit); 00173 lbl.clear(); 00174 lbl+=SystLabel[j];lbl+="eword"; 00175 eword[j] = dbe->book1D(lbl.data(),lbl.data(),nbit,0,nbit); 00176 lbl.clear(); 00177 lbl+=SystLabel[j];lbl+="deword"; 00178 deword[j] = dbe->book1D(lbl.data(),lbl.data(),nbit,0,nbit); 00179 //lbl.clear(); 00180 //lbl+=SystLabel[j];lbl+="masked"; 00181 //masked[j] = dbe->book1D(lbl.data(),lbl.data(),nbit,0,nbit); 00182 } 00183 } 00184 00185 if(dbe && !runInFF_) { 00187 dbe->setCurrentFolder(histFolder_+"xcorr"); 00188 const int ncorr = 3; 00189 std::string corrl[ncorr] = {"phi","eta","rank"}; 00190 for(int i=0; i<DEnsys; i++) { 00191 for(int j=0; j<DEnsys; j++) { 00192 if(i>j) continue; 00193 std::string lbl(""); 00194 lbl.clear(); lbl+=SystLabel[i]; lbl+=SystLabel[j]; lbl+=corrl[0]; 00195 CORR[i][j][0]= dbe->book2D(lbl.data(),lbl.data(), 00196 phiNBins[i], phiMinim[i], phiMaxim[i], 00197 phiNBins[j], phiMinim[j], phiMaxim[j] 00198 ); 00199 lbl.clear(); lbl+=SystLabel[i]; lbl+=SystLabel[j]; lbl+=corrl[1]; 00200 CORR[i][j][1]= dbe->book2D(lbl.data(),lbl.data(), 00201 etaNBins[i], etaMinim[i], etaMaxim[i], 00202 etaNBins[j], etaMinim[j], etaMaxim[j] 00203 ); 00204 lbl.clear(); lbl+=SystLabel[i]; lbl+=SystLabel[j]; lbl+=corrl[2]; 00205 CORR[i][j][2]= dbe->book2D(lbl.data(),lbl.data(), 00206 rnkNBins[i], rnkMinim[i], rnkMaxim[i], 00207 rnkNBins[j], rnkMinim[j], rnkMaxim[j] 00208 ); 00209 } 00210 } 00211 00212 } 00213 00215 for(int i=0; i<DEnsys; i++) { 00216 sysrates ->setBinLabel(i+1,SystLabel[i]); 00217 sysncand[0]->setBinLabel(i+1,SystLabel[i]); 00218 sysncand[1]->setBinLabel(i+1,SystLabel[i]); 00219 } 00220 const int nerr=5; 00221 std::string errLabel[nerr]= { 00222 "Agree", "Loc. Agree", "L.Disagree", "Data only", "Emul only" 00223 }; 00224 for(int j=0; j<nerr; j++) { 00225 errordist->setBinLabel(j+1,errLabel[j]); 00226 } 00227 for(int i=0; i<DEnsys; i++) { 00228 for(int j=0; j<nerr; j++) { 00229 errortype[i]->setBinLabel(j+1,errLabel[j]); 00230 } 00231 } 00232 00233 // done if running in filter farm 00234 if(runInFF_) 00235 return; 00236 00237 for(int i=0; i<DEnsys; i++) { 00238 etaphi [i]->setAxisTitle("eta",1); 00239 etaphi [i]->setAxisTitle("phi",2); 00240 eta [i]->setAxisTitle("eta"); 00241 phi [i]->setAxisTitle("phi"); 00242 x3 [i]->setAxisTitle("x3"); 00243 etaData[i]->setAxisTitle("eta"); 00244 phiData[i]->setAxisTitle("phi"); 00245 x3Data [i]->setAxisTitle("x3"); 00246 rnkData[i]->setAxisTitle("rank"); 00247 dword [i]->setAxisTitle("trigger data word bit"); 00248 eword [i]->setAxisTitle("trigger data word bit"); 00249 deword [i]->setAxisTitle("trigger data word bit"); 00250 //masked [i]->setAxisTitle("trigger data word bit"); 00251 } 00252 for(int i=0; i<DEnsys; i++) { 00253 for(int j=0; j<DEnsys; j++) { 00254 if(i>j) continue; 00255 for(int k=0; k<3; k++) { 00256 CORR[i][j][k]->setAxisTitle(SystLabel[i],1); 00257 CORR[i][j][k]->setAxisTitle(SystLabel[j],2); 00258 } 00259 } 00260 } 00261 00263 assert(ETP==0); assert(HTP==1); assert(RCT== 2); assert(GCT== 3); 00264 assert(DTP==4); assert(DTF==5); assert(CTP== 6); assert(CTF== 7); 00265 assert(RPC==8); assert(LTC==9); assert(GMT==10); assert(GLT==11); 00266 00267 if(verbose()) 00268 std::cout << "L1TDEMON::beginJob() end.\n" << std::flush; 00269 }
Reimplemented from edm::EDAnalyzer.
Definition at line 272 of file L1TDEMON.cc.
References GenMuonPlsPt100GeV_cfg::cout, dbe, dedefs::DEnsys, deSysCount, lat::endl(), flush(), MonitorElement::getBinContent(), histFile_, i, nEvt_, DQMStore::save(), sysrates, and verbose().
00272 { 00273 00274 if(verbose()) 00275 std::cout << "L1TDEMON::endJob Nevents: " << nEvt_ << "\n" << std::flush; 00276 00277 if(verbose()) { 00278 std::cout << "[L1TDEMON] systems disagreement rate:\n\t"; 00279 for(int i=0; i<DEnsys; i++) 00280 printf("%4.2f ",sysrates->getBinContent(i)); 00281 std::cout << std::endl; 00282 } 00283 00284 if(verbose()) { 00285 std::cout << "[L1TDEMON] verbose fill histo: "; 00286 for(int i=0; i<DEnsys; i++) 00287 std::cout << deSysCount[i] << " "; 00288 std::cout << std::endl; 00289 } 00290 00291 if(histFile_.size()!=0 && dbe) 00292 dbe->save(histFile_); 00293 00294 if(verbose()) 00295 std::cout << "L1TDEMON::endJob() end.\n" << std::flush; 00296 }
int L1TDEMON::verbose | ( | ) | [inline, private] |
Definition at line 49 of file L1TDEMON.h.
References verbose_.
Referenced by analyze(), beginJob(), endJob(), and L1TDEMON().
00049 {return verbose_;}
MonitorElement* L1TDEMON::CORR[dedefs::DEnsys][dedefs::DEnsys][3] [private] |
DQMStore* L1TDEMON::dbe [private] |
edm::InputTag L1TDEMON::DEsource_ [private] |
int L1TDEMON::deSysCount[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::deword[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::dword[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::errordist [private] |
MonitorElement* L1TDEMON::errortype[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::eta[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::etaData[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::etaphi[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::eword[dedefs::DEnsys] [private] |
bool L1TDEMON::hasRecord_ [private] |
std::string L1TDEMON::histFile_ [private] |
std::string L1TDEMON::histFolder_ [private] |
MonitorElement* L1TDEMON::masked[dedefs::DEnsys] [private] |
Definition at line 91 of file L1TDEMON.h.
bool L1TDEMON::monitorDaemon_ [private] |
Definition at line 59 of file L1TDEMON.h.
int L1TDEMON::nEvt_ [private] |
int L1TDEMON::nEvtWithSys[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::phi[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::phiData[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::rnkData[dedefs::DEnsys] [private] |
bool L1TDEMON::runInFF_ [private] |
MonitorElement* L1TDEMON::sysncand[2] [private] |
MonitorElement* L1TDEMON::sysrates [private] |
monitoring elements
Definition at line 72 of file L1TDEMON.h.
Referenced by analyze(), beginJob(), and endJob().
int L1TDEMON::verbose_ [private] |
MonitorElement* L1TDEMON::x3[dedefs::DEnsys] [private] |
MonitorElement* L1TDEMON::x3Data[dedefs::DEnsys] [private] |