CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

DTSummaryClients Class Reference

#include <DTSummaryClients.h>

Inheritance diagram for DTSummaryClients:
edm::EDAnalyzer

List of all members.

Public Member Functions

 DTSummaryClients (const edm::ParameterSet &ps)
 Constructor.
virtual ~DTSummaryClients ()
 Destructor.

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginRun (edm::Run const &run, edm::EventSetup const &eSetup)
 BeginRun.
void endJob (void)
 EndJob.
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 DQM Client Diagnostic.
void endRun (edm::Run const &run, edm::EventSetup const &eSetup)
 EndRun.

Private Attributes

DQMStoredbe
int nevents
MonitorElementsummaryReport
MonitorElementsummaryReportMap
std::vector< MonitorElement * > theSummaryContents

Detailed Description

* DQM Client for global summary

Date:
2008/07/02 14:33:56
Revision:
1.3
Author:
G. Mila - INFN Torino

Definition at line 33 of file DTSummaryClients.h.


Constructor & Destructor Documentation

DTSummaryClients::DTSummaryClients ( const edm::ParameterSet ps)

Constructor.

Definition at line 29 of file DTSummaryClients.cc.

References dbe, and cppFunctionSkipper::operator.

                                                         : nevents(0) {

  LogVerbatim("DTDQM|DTMonitorClient|DTSummaryClients") << "[DTSummaryClients]: Constructor";
  
  
  dbe = Service<DQMStore>().operator->();

}
DTSummaryClients::~DTSummaryClients ( ) [virtual]

Destructor.

Definition at line 38 of file DTSummaryClients.cc.

References nevents.

                                   {
  LogVerbatim ("DTDQM|DTMonitorClient|DTSummaryClients") << "DTSummaryClients: analyzed " << nevents << " events";
  
}

Member Function Documentation

void DTSummaryClients::analyze ( const edm::Event e,
const edm::EventSetup c 
) [protected, virtual]

Analyze.

Implements edm::EDAnalyzer.

Definition at line 88 of file DTSummaryClients.cc.

References nevents.

                                                                           {

   nevents++;
   if(nevents%1000 == 0) {
     LogVerbatim("DTDQM|DTMonitorClient|DTSummaryClients") << "[DTSummaryClients] Analyze #Run: " << event.id().run()
                                         << " #Event: " << event.id().event()
                                         << " LS: " << event.luminosityBlock()  
                                         << endl;
   }
}
void DTSummaryClients::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
) [protected, virtual]

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 43 of file DTSummaryClients.cc.

References DQMStore::book2D(), DQMStore::bookFloat(), dbe, MonitorElement::Fill(), MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), hcal_dqm_sourceclient-file_cfg::streams, summaryReport, summaryReportMap, and theSummaryContents.

                                                                        {

  LogVerbatim("DTDQM|DTMonitorClient|DTSummaryClients") <<"[DTSummaryClients]: BeginRun"; 

  // book the summary histos
  dbe->setCurrentFolder("DT/EventInfo"); 
  summaryReport = dbe->bookFloat("reportSummary");
  // Initialize to 1 so that no alarms are thrown at the beginning of the run
  summaryReport->Fill(1.);

  summaryReportMap = dbe->book2D("reportSummaryMap","DT Report Summary Map",12,1,13,5,-2,3);
  summaryReportMap->setAxisTitle("sector",1);
  summaryReportMap->setAxisTitle("wheel",2);

  dbe->setCurrentFolder("DT/EventInfo/reportSummaryContents");

  for(int wheel = -2; wheel != 3; ++wheel) {
    stringstream streams;
    streams << "DT_Wheel" << wheel;
    string meName = streams.str();    
    theSummaryContents.push_back(dbe->bookFloat(meName));
    // Initialize to 1 so that no alarms are thrown at the beginning of the run
    theSummaryContents[wheel+2]->Fill(1.);
  }




}
void DTSummaryClients::endJob ( void  ) [protected, virtual]

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 74 of file DTSummaryClients.cc.

                                 {
  
  LogVerbatim ("DTDQM|DTMonitorClient|DTSummaryClients") <<"[DTSummaryClients]: endJob"; 

}
void DTSummaryClients::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
) [protected, virtual]

DQM Client Diagnostic.

Reimplemented from edm::EDAnalyzer.

Definition at line 100 of file DTSummaryClients.cc.

References dbe, MonitorElement::Fill(), DQMStore::get(), MonitorElement::getBinContent(), LogTrace, MonitorElement::Reset(), relativeConstraints::station, summaryReport, summaryReportMap, and theSummaryContents.

                                                                                                   {
  
  LogVerbatim("DTDQM|DTMonitorClient|DTSummaryClients")
    << "[DTSummaryClients]: End of LS transition, performing the DQM client operation" << endl;

  // reset the monitor elements
  summaryReportMap->Reset();
  summaryReport->Reset();
  for(int ii = 0; ii != 5; ++ii) {
    theSummaryContents[ii]->Reset();
  }

  bool noDTData = false;

  // Check if DT data in each ROS have been read out and set the SummaryContents and the ErrorSummary
  // accordignly
  MonitorElement * dataIntegritySummary = dbe->get("DT/00-DataIntegrity/DataIntegritySummary");
  if(dataIntegritySummary != 0) {
  int nDisabledFED = 0;
  for(int wheel = 1; wheel != 6; ++wheel) { // loop over the wheels
    int nDisablesROS = 0;
    for(int sect = 1; sect != 13; ++sect) { // loop over sectors
      if(dataIntegritySummary->getBinContent(sect,wheel) == 1) {
        nDisablesROS++;
      }
    }
    if(nDisablesROS == 12) {
      nDisabledFED++;
      theSummaryContents[wheel-1]->Fill(0);
    }
  }
  
  if(nDisabledFED == 5) {
    noDTData = true;
    summaryReport->Fill(-1);
  }
  
  } else {
    LogError("DTDQM|DTMonitorClient|DTSummaryClients")
      << "Data Integrity Summary not found with name: DT/00-DataIntegrity/DataIntegritySummary" <<endl;
  }

  double totalStatus = 0;
  // protection 
  bool occupancyFound = true;

  // Fill the map using, at the moment, only the information from DT occupancy
  // problems at a granularity smaller than the chamber are ignored
  for(int wheel=-2; wheel<=2; wheel++){ // loop over wheels
    // retrieve the occupancy summary
    stringstream str;
    str << "DT/01-Digi/OccupancySummary_W" << wheel;
    MonitorElement * wheelOccupancySummary =  dbe->get(str.str());
    if(wheelOccupancySummary != 0) {
      int nFailingChambers = 0;
      for(int sector=1; sector<=12; sector++){ // loop over sectors
        for(int station = 1; station != 5; ++station) { // loop over stations
          double chamberStatus = wheelOccupancySummary->getBinContent(sector, station);
          LogTrace("DTDQM|DTMonitorClient|DTSummaryClients")
            << "Wheel: " << wheel << " Stat: " << station << " Sect: " << sector << " status: " << chamberStatus << endl;
          if(chamberStatus != 4) {
            summaryReportMap->Fill(sector, wheel, 0.25);
          } else {
            nFailingChambers++;
          }
          LogTrace("DTDQM|DTMonitorClient|DTSummaryClients") << " sector (" << sector << ") status on the map is: "
                                                             << summaryReportMap->getBinContent(sector, wheel+3) << endl;
        }

      }
      theSummaryContents[wheel+2]->Fill((48.-nFailingChambers)/48.);
      totalStatus += (48.-nFailingChambers)/48.;
    } else {
      occupancyFound = false;
      LogError("DTDQM|DTMonitorClient|DTSummaryClients")<< " Wheel Occupancy Summary not found with name: " << str.str() << endl;
    }
  }


  if(occupancyFound && !noDTData)
    summaryReport->Fill(totalStatus/5.);

//   cout << "-----------------------------------------------------------------------------" << endl;
//   cout << " In the endLuminosityBlock: " << endl;
//   for(int wheel = -2; wheel != 3; ++wheel) {
//     for(int sector = 1; sector != 13; sector++) {
//       cout << " wheel: " << wheel << " sector: " << sector << " status on the map is: "
//         << summaryReportMap->getBinContent(sector, wheel+3) << endl;
//     }
//   }
//   cout << "-----------------------------------------------------------------------------" << endl;


}
void DTSummaryClients::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
) [protected, virtual]

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 81 of file DTSummaryClients.cc.

                                                                      {
  
  LogVerbatim ("DTDQM|DTMonitorClient|DTSummaryClients") <<"[DTSummaryClients]: endRun"; 

}

Member Data Documentation

Definition at line 63 of file DTSummaryClients.h.

Referenced by beginRun(), DTSummaryClients(), and endLuminosityBlock().

Definition at line 62 of file DTSummaryClients.h.

Referenced by analyze(), and ~DTSummaryClients().

Definition at line 65 of file DTSummaryClients.h.

Referenced by beginRun(), and endLuminosityBlock().

Definition at line 66 of file DTSummaryClients.h.

Referenced by beginRun(), and endLuminosityBlock().

Definition at line 67 of file DTSummaryClients.h.

Referenced by beginRun(), and endLuminosityBlock().