#include <ESIntegrityClient.h>
Public Member Functions | |
void | analyze (void) |
Analyze. | |
void | beginJob (DQMStore *dqmStore) |
BeginJob. | |
void | beginRun (void) |
BeginRun. | |
void | cleanup (void) |
Cleanup. | |
void | endJob (void) |
EndJob. | |
void | endLumiAnalyze (void) |
EndLumiAnalyze. | |
void | endRun (void) |
EndRun. | |
ESIntegrityClient (const edm::ParameterSet &ps) | |
Constructor. | |
int | getEvtPerJob () |
Get Functions. | |
int | getEvtPerRun () |
void | setup (void) |
Setup. | |
void | softReset (bool flag) |
SoftReset. | |
virtual | ~ESIntegrityClient () |
Destructor. | |
Private Attributes | |
bool | cloneME_ |
bool | debug_ |
DQMStore * | dqmStore_ |
bool | enableCleanup_ |
int | fed_ [2][2][40][40] |
int | fedStatus_ [56] |
int | fiber_ [2][2][40][40] |
int | fiberStatus_ [56][36] |
TH1F * | hBXDiff_ |
TH1F * | hFED_ |
TH2F * | hFiberBadStatus_ |
TH2F * | hFiberOff_ |
TH1F * | hKBC_ |
TH1F * | hKEC_ |
TH2F * | hKF1_ |
TH2F * | hKF2_ |
TH1F * | hL1ADiff_ |
TH1F * | hOrbitNumberDiff_ |
TH1F * | hSLinkCRCErr_ |
int | ievt_ |
int | jevt_ |
int | kchip_ [2][2][40][40] |
edm::FileInPath | lookup_ |
MonitorElement * | meFED_ [2][2] |
MonitorElement * | meKCHIP_ [2][2] |
std::string | prefixME_ |
int | slinkCRCStatus_ [56] |
int | syncStatus_ [56] |
bool | verbose_ |
Friends | |
class | ESSummaryClient |
Definition at line 18 of file ESIntegrityClient.h.
ESIntegrityClient::ESIntegrityClient | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 14 of file ESIntegrityClient.cc.
References gather_cfg::cout, mergeVDriftHistosByStation::file, edm::ParameterSet::getUntrackedParameter(), i, j, gen::k, m, and z.
{ cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true); verbose_ = ps.getUntrackedParameter<bool>("verbose", true); debug_ = ps.getUntrackedParameter<bool>("debug", false); prefixME_ = ps.getUntrackedParameter<string>("prefixME", ""); enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false); lookup_ = ps.getUntrackedParameter<FileInPath>("LookupTable", edm::FileInPath("EventFilter/ESDigiToRaw/data/ES_lookup_table.dat")); // read in look-up table for (int i=0; i<2; ++i) for (int j=0; j<2; ++j) for (int k=0; k<40; ++k) for (int m=0; m<40; ++m) { fed_[i][j][k][m] = -1; kchip_[i][j][k][m] = -1; } for (int i=0; i<56; ++i) { fedStatus_[i] = -1; syncStatus_[i] = -1; slinkCRCStatus_[i] = -1; for (int j=0; j<36; ++j) fiberStatus_[i][j] = -1; } int nLines_, z, iz, ip, ix, iy, fed, kchip, pace, bundle, fiber, optorx; ifstream file; file.open(lookup_.fullPath().c_str()); if( file.is_open() ) { file >> nLines_; for (int i=0; i<nLines_; ++i) { file>> iz >> ip >> ix >> iy >> fed >> kchip >> pace >> bundle >> fiber >> optorx; z = (iz==-1) ? 2:iz; fed_[z-1][ip-1][ix-1][iy-1] = fed; kchip_[z-1][ip-1][ix-1][iy-1] = kchip; fiber_[z-1][ip-1][ix-1][iy-1] = (fiber-1)+(optorx-1)*12; } } else { cout<<"ESIntegrityClient : Look up table file can not be found in "<<lookup_.fullPath().c_str()<<endl; } hFED_ = 0; hFiberOff_ = 0; hFiberBadStatus_ = 0; hKF1_ = 0; hKF2_ = 0; hKBC_ = 0; hKEC_ = 0; hL1ADiff_ = 0; hBXDiff_ = 0; hOrbitNumberDiff_ = 0; hSLinkCRCErr_ = 0; ievt_ = 0; jevt_ = 0; }
ESIntegrityClient::~ESIntegrityClient | ( | ) | [virtual] |
void ESIntegrityClient::analyze | ( | void | ) | [virtual] |
Analyze.
Implements ESClient.
Definition at line 142 of file ESIntegrityClient.cc.
References i, j, and MonitorElement::setBinContent().
{ double nDI_FedErr[56]; for (int i=0; i<56; ++i) nDI_FedErr[i] = 0; MonitorElement* me = 0; me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES FEDs used for data taking"); hFED_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hFED_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES Fiber Off"); hFiberOff_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hFiberOff_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES Fiber Bad Status"); hFiberBadStatus_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hFiberBadStatus_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES SLink CRC Errors"); hSLinkCRCErr_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hSLinkCRCErr_ ); int xval = 0; int nevFEDs = 0; if (hFED_) { for (int i=1; i<=56; ++i) if (nevFEDs < hFED_->GetBinContent(i)) nevFEDs = (int) hFED_->GetBinContent(i); } // FED integrity for (int i=1; i<=56; ++i) { if (hFED_) { if (hFED_->GetBinContent(i) > 0) fedStatus_[i-1] = 1; } if (hSLinkCRCErr_) { if (hSLinkCRCErr_->GetBinContent(i) > 0) slinkCRCStatus_[i-1] = 1; } for (int j=0; j<36; ++j) { if (hFiberBadStatus_) { if (hFiberBadStatus_->GetBinContent(i, j+1) > 0) fiberStatus_[i-1][j] = 2; // bad else fiberStatus_[i-1][j] = 1; // good } if (hFiberOff_) if (hFiberOff_->GetBinContent(i, j+1) > 0) { fiberStatus_[i-1][j] = 0; // off } } } // obtain MEs from ESRawDataTask me = dqmStore_->get(prefixME_ + "/ESRawDataTask/ES L1A DCC errors"); hL1ADiff_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hL1ADiff_ ); me = dqmStore_->get(prefixME_ + "/ESRawDataTask/ES BX DCC errors"); hBXDiff_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hBXDiff_ ); me = dqmStore_->get(prefixME_ + "/ESRawDataTask/ES Orbit Number DCC errors"); hOrbitNumberDiff_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hOrbitNumberDiff_ ); for (int i=1; i<=56; ++i) { if (hL1ADiff_ && hBXDiff_) { if (hL1ADiff_->GetBinContent(i) > 0 || hBXDiff_->GetBinContent(i) > 0) { syncStatus_[i-1] = 1; if (hL1ADiff_->GetBinContent(i) > nDI_FedErr[i-1]) nDI_FedErr[i-1] = hL1ADiff_->GetBinContent(i); if (hBXDiff_->GetBinContent(i) > nDI_FedErr[i-1]) nDI_FedErr[i-1] = hBXDiff_->GetBinContent(i); } } //if (hOrbitNumberDiff_->GetBinContent(i) > 0) syncStatus_[i-1] = 1; } // KCHIP integrity me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES KChip Flag 1 Error codes"); hKF1_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hKF1_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES KChip Flag 2 Error codes"); hKF2_ = UtilsClient::getHisto<TH2F*>( me, cloneME_, hKF2_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES KChip BC mismatch with OptoRX"); hKBC_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hKBC_ ); me = dqmStore_->get(prefixME_ + "/ESIntegrityTask/ES KChip EC mismatch with OptoRX"); hKEC_ = UtilsClient::getHisto<TH1F*>( me, cloneME_, hKEC_ ); Int_t kchip_xval[1550]; for (int i=0; i<=1550; ++i) { xval = 3; Int_t kErr = 0; for (int j=1; j<16; ++j) { if (hKF1_) { if (hKF1_->GetBinContent(i, j+1)>0) { xval = 2; kErr++; } } if (hKF2_) { if (hKF2_->GetBinContent(i, j+1)>0) { xval = 4; kErr++; } } } if (hKBC_) { if (hKBC_->GetBinContent(i)>0) { xval = 5; kErr++; } } if (hKEC_) { if (hKEC_->GetBinContent(i)>0) { xval = 6; kErr++; } } if (kErr>1) xval = 7; kchip_xval[i] = xval; } // detailed KCHIP summary (i.e. summary 2) for (int iz=0; iz<2; ++iz) for (int ip=0; ip<2; ++ip) for (int ix=0; ix<40; ++ix) for (int iy=0; iy<40; ++iy) { if (fed_[iz][ip][ix][iy] == -1) continue; if (fedStatus_[fed_[iz][ip][ix][iy]-520]==-1 || fiberStatus_[fed_[iz][ip][ix][iy]-520][fiber_[iz][ip][ix][iy]] == 0) kchip_xval[kchip_[iz][ip][ix][iy]-1] = 0; if ((kchip_[iz][ip][ix][iy]-2) >= 0) meKCHIP_[iz][ip]->setBinContent(ix+1, iy+1, kchip_xval[kchip_[iz][ip][ix][iy]-2]); } // FED, Fiber, KCHIP summary (i.e. summary 1) Int_t nErr = 0; for (int iz=0; iz<2; ++iz) for (int ip=0; ip<2; ++ip) for (int ix=0; ix<40; ++ix) for (int iy=0; iy<40; ++iy) { if (fed_[iz][ip][ix][iy] == -1) continue; nErr = 0; if (fedStatus_[fed_[iz][ip][ix][iy]-520] == 1) { if (hFED_) { if (hFED_->GetBinContent(fed_[iz][ip][ix][iy]-520+1) == nevFEDs) xval = 3; else { xval = 4; // FED problem nErr++; } } if (fiberStatus_[fed_[iz][ip][ix][iy]-520][fiber_[iz][ip][ix][iy]] == 2) { xval = 2; // fiber problem nErr++; } if (fiberStatus_[fed_[iz][ip][ix][iy]-520][fiber_[iz][ip][ix][iy]] == 0) { xval = 0; // fiber off } if (kchip_xval[kchip_[iz][ip][ix][iy]-1] != 3 && kchip_xval[kchip_[iz][ip][ix][iy]-1] != 0) { xval = 5; // kchip problem nErr++; } if (syncStatus_[fed_[iz][ip][ix][iy]-520] == 1) { xval = 6; nErr++; } if (slinkCRCStatus_[fed_[iz][ip][ix][iy]-520] == 1) { xval = 8; nErr++; } if (nErr > 1) xval = 7; } else if (fedStatus_[fed_[iz][ip][ix][iy]-520] == -1) { xval = 0; } meFED_[iz][ip]->setBinContent(ix+1, iy+1, xval); } }
void ESIntegrityClient::beginJob | ( | DQMStore * | dqmStore | ) | [virtual] |
BeginJob.
Implements ESClient.
Definition at line 79 of file ESIntegrityClient.cc.
References gather_cfg::cout.
void ESIntegrityClient::beginRun | ( | void | ) | [virtual] |
BeginRun.
Implements ESClient.
Definition at line 89 of file ESIntegrityClient.cc.
References gather_cfg::cout, and HcalObjRepresent::setup().
void ESIntegrityClient::cleanup | ( | void | ) | [virtual] |
Cleanup.
Implements ESClient.
Definition at line 136 of file ESIntegrityClient.cc.
{ if ( ! enableCleanup_ ) return; }
void ESIntegrityClient::endJob | ( | void | ) | [virtual] |
EndJob.
Implements ESClient.
Definition at line 99 of file ESIntegrityClient.cc.
References edm::cleanup(), and gather_cfg::cout.
void ESIntegrityClient::endLumiAnalyze | ( | void | ) | [inline, virtual] |
void ESIntegrityClient::endRun | ( | void | ) | [virtual] |
EndRun.
Implements ESClient.
Definition at line 107 of file ESIntegrityClient.cc.
References edm::cleanup(), and gather_cfg::cout.
int ESIntegrityClient::getEvtPerJob | ( | void | ) | [inline] |
Get Functions.
Definition at line 55 of file ESIntegrityClient.h.
References ievt_.
{ return ievt_; }
int ESIntegrityClient::getEvtPerRun | ( | void | ) | [inline] |
void ESIntegrityClient::setup | ( | void | ) | [virtual] |
Setup.
Implements ESClient.
Definition at line 115 of file ESIntegrityClient.cc.
References timingPdfMaker::histo, i, and j.
{ char histo[200]; dqmStore_->setCurrentFolder( prefixME_ + "/ESIntegrityClient" ); for (int i=0 ; i<2; ++i) for (int j=0 ; j<2; ++j) { int iz = (i==0)? 1:-1; snprintf(histo, 200, "ES Integrity Summary 1 Z %d P %d", iz, j+1); meFED_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5); meFED_[i][j]->setAxisTitle("Si X", 1); meFED_[i][j]->setAxisTitle("Si Y", 2); snprintf(histo, 200, "ES Integrity Summary 2 Z %d P %d", iz, j+1); meKCHIP_[i][j] = dqmStore_->book2D(histo, histo, 40, 0.5, 40.5, 40, 0.5, 40.5); meKCHIP_[i][j]->setAxisTitle("Si X", 1); meKCHIP_[i][j]->setAxisTitle("Si Y", 2); } }
void ESIntegrityClient::softReset | ( | bool | flag | ) |
friend class ESSummaryClient [friend] |
Definition at line 20 of file ESIntegrityClient.h.
bool ESIntegrityClient::cloneME_ [private] |
Definition at line 73 of file ESIntegrityClient.h.
bool ESIntegrityClient::debug_ [private] |
Definition at line 75 of file ESIntegrityClient.h.
DQMStore* ESIntegrityClient::dqmStore_ [private] |
Definition at line 82 of file ESIntegrityClient.h.
bool ESIntegrityClient::enableCleanup_ [private] |
Definition at line 76 of file ESIntegrityClient.h.
int ESIntegrityClient::fed_[2][2][40][40] [private] |
Definition at line 65 of file ESIntegrityClient.h.
int ESIntegrityClient::fedStatus_[56] [private] |
Definition at line 68 of file ESIntegrityClient.h.
int ESIntegrityClient::fiber_[2][2][40][40] [private] |
Definition at line 67 of file ESIntegrityClient.h.
int ESIntegrityClient::fiberStatus_[56][36] [private] |
Definition at line 69 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hBXDiff_ [private] |
Definition at line 95 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hFED_ [private] |
Definition at line 87 of file ESIntegrityClient.h.
TH2F* ESIntegrityClient::hFiberBadStatus_ [private] |
Definition at line 89 of file ESIntegrityClient.h.
TH2F* ESIntegrityClient::hFiberOff_ [private] |
Definition at line 88 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hKBC_ [private] |
Definition at line 92 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hKEC_ [private] |
Definition at line 93 of file ESIntegrityClient.h.
TH2F* ESIntegrityClient::hKF1_ [private] |
Definition at line 90 of file ESIntegrityClient.h.
TH2F* ESIntegrityClient::hKF2_ [private] |
Definition at line 91 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hL1ADiff_ [private] |
Definition at line 94 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hOrbitNumberDiff_ [private] |
Definition at line 96 of file ESIntegrityClient.h.
TH1F* ESIntegrityClient::hSLinkCRCErr_ [private] |
Definition at line 97 of file ESIntegrityClient.h.
int ESIntegrityClient::ievt_ [private] |
Definition at line 63 of file ESIntegrityClient.h.
Referenced by getEvtPerJob().
int ESIntegrityClient::jevt_ [private] |
Definition at line 64 of file ESIntegrityClient.h.
Referenced by getEvtPerRun().
int ESIntegrityClient::kchip_[2][2][40][40] [private] |
Definition at line 66 of file ESIntegrityClient.h.
edm::FileInPath ESIntegrityClient::lookup_ [private] |
Definition at line 80 of file ESIntegrityClient.h.
MonitorElement* ESIntegrityClient::meFED_[2][2] [private] |
Definition at line 84 of file ESIntegrityClient.h.
MonitorElement* ESIntegrityClient::meKCHIP_[2][2] [private] |
Definition at line 85 of file ESIntegrityClient.h.
std::string ESIntegrityClient::prefixME_ [private] |
Definition at line 78 of file ESIntegrityClient.h.
int ESIntegrityClient::slinkCRCStatus_[56] [private] |
Definition at line 71 of file ESIntegrityClient.h.
int ESIntegrityClient::syncStatus_[56] [private] |
Definition at line 70 of file ESIntegrityClient.h.
bool ESIntegrityClient::verbose_ [private] |
Definition at line 74 of file ESIntegrityClient.h.