Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:41:43

0001 /*
0002  * =====================================================================================
0003  *
0004  *       Filename:  EventProcessor_updateFracHistos.cc
0005  *
0006  *    Description:  Update Fractional and efficiency histograms
0007  *
0008  *        Version:  1.0
0009  *        Created:  10/06/2008 09:54:55 AM
0010  *       Revision:  none
0011  *       Compiler:  gcc
0012  *
0013  *         Author:  Valdas Rapsevicius, valdas.rapsevicius@cern.ch
0014  *        Company:  CERN, CH
0015  *
0016  * =====================================================================================
0017  */
0018 
0019 #include "CSCDQM_EventProcessor.h"
0020 
0021 namespace cscdqm {
0022 
0023   /**
0024    * @brief  Update Fractional MOs
0025    */
0026   void EventProcessor::updateFractionHistos() {
0027     calcEMUFractionHisto(h::EMU_DMB_FORMAT_ERRORS_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_FORMAT_ERRORS);
0028     calcEMUFractionHisto(h::EMU_CSC_FORMAT_ERRORS_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_FORMAT_ERRORS);
0029     calcEMUFractionHisto(h::EMU_DMB_FORMAT_WARNINGS_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_FORMAT_WARNINGS);
0030     calcEMUFractionHisto(h::EMU_CSC_FORMAT_WARNINGS_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_FORMAT_WARNINGS);
0031     calcEMUFractionHisto(h::EMU_DMB_UNPACKED_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_UNPACKED);
0032     calcEMUFractionHisto(h::EMU_CSC_UNPACKED_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_UNPACKED);
0033     calcEMUFractionHisto(h::EMU_DMB_WO_ALCT_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_WO_ALCT);
0034     calcEMUFractionHisto(h::EMU_CSC_WO_ALCT_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_WO_ALCT);
0035     calcEMUFractionHisto(h::EMU_DMB_WO_CLCT_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_WO_CLCT);
0036     calcEMUFractionHisto(h::EMU_CSC_WO_CLCT_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_WO_CLCT);
0037     calcEMUFractionHisto(h::EMU_DMB_WO_CFEB_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_WO_CFEB);
0038     calcEMUFractionHisto(h::EMU_CSC_WO_CFEB_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_WO_CFEB);
0039     calcEMUFractionHisto(h::EMU_CSC_DMB_INPUT_FIFO_FULL_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_DMB_INPUT_FIFO_FULL);
0040     calcEMUFractionHisto(h::EMU_DMB_INPUT_FIFO_FULL_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_INPUT_FIFO_FULL);
0041     calcEMUFractionHisto(h::EMU_CSC_DMB_INPUT_TIMEOUT_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_DMB_INPUT_TIMEOUT);
0042     calcEMUFractionHisto(h::EMU_DMB_INPUT_TIMEOUT_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_INPUT_TIMEOUT);
0043     calcEMUFractionHisto(h::EMU_CSC_L1A_OUT_OF_SYNC_FRACT, h::EMU_CSC_REPORTING, h::EMU_CSC_L1A_OUT_OF_SYNC);
0044     calcEMUFractionHisto(h::EMU_DMB_L1A_OUT_OF_SYNC_FRACT, h::EMU_DMB_REPORTING, h::EMU_DMB_L1A_OUT_OF_SYNC);
0045     calcEMUFractionHisto(h::EMU_FED_DDU_L1A_MISMATCH_FRACT, h::EMU_FED_ENTRIES, h::EMU_FED_DDU_L1A_MISMATCH);
0046     calcEMUFractionHisto(
0047         h::EMU_FED_DDU_L1A_MISMATCH_WITH_CSC_DATA_FRACT, h::EMU_FED_ENTRIES, h::EMU_FED_DDU_L1A_MISMATCH_WITH_CSC_DATA);
0048 
0049     unsigned int iter = 0, crateId = 0, dmbId = 0;
0050     MonitorObject *mo = nullptr, *mof = nullptr;
0051     while (config->fnNextBookedCSC(iter, crateId, dmbId)) {
0052       uint32_t dmbEvents = config->getChamberCounterValue(DMB_EVENTS, crateId, dmbId);
0053 
0054       if (getCSCHisto(h::CSC_BINCHECK_DATAFLOW_PROBLEMS_TABLE, crateId, dmbId, mo) &&
0055           getCSCHisto(h::CSC_BINCHECK_DATAFLOW_PROBLEMS_FREQUENCY, crateId, dmbId, mof)) {
0056         LockType lock(mof->mutex);
0057         TH1* th = mof->getTH1Lock();
0058         th->Reset();
0059         th->Add(mo->getTH1());
0060         th->Scale(1. / dmbEvents);
0061         mof->SetMaximum(1.);
0062         mof->SetEntries(dmbEvents);
0063         mo->SetEntries(dmbEvents);
0064       }
0065 
0066       if (getCSCHisto(h::CSC_BINCHECK_ERRORSTAT_TABLE, crateId, dmbId, mo) &&
0067           getCSCHisto(h::CSC_BINCHECK_ERRORS_FREQUENCY, crateId, dmbId, mof)) {
0068         LockType lock(mof->mutex);
0069         TH1* th = mof->getTH1Lock();
0070         th->Reset();
0071         th->Add(mo->getTH1());
0072         th->Scale(1. / dmbEvents);
0073         mof->SetMaximum(1.);
0074         mof->SetEntries(dmbEvents);
0075         mo->SetEntries(dmbEvents);
0076       }
0077     }
0078   }
0079 
0080   /**
0081    * @brief Calculate fractional histogram 
0082    * @param result Histogram to write results to
0083    * @param set Histogram of the set
0084    * @param subset Histogram of the subset
0085    */
0086   void EventProcessor::calcEMUFractionHisto(const HistoId& result, const HistoId& set, const HistoId& subset) {
0087     MonitorObject *mo = nullptr, *mo1 = nullptr, *mo2 = nullptr;
0088 
0089     if (getEMUHisto(result, mo) && getEMUHisto(set, mo2) && getEMUHisto(subset, mo1)) {
0090       LockType lock(mo->mutex);
0091       TH1* th = mo->getTH1Lock();
0092       th->Reset();
0093       th->Divide(mo1->getTH1(), mo2->getTH1());
0094       mo->SetMaximum(1.);
0095     }
0096   }
0097 
0098 }  // namespace cscdqm