CMS 3D CMS Logo

SiStripOfflineDQM.cc

Go to the documentation of this file.
00001 
00002 // -*- C++ -*-
00003 //
00004 // Package:    SiStripMonitorCluster
00005 // Class:      SiStripOfflineDQM
00006 // 
00014 //
00015 // Original Author:  Samvel Khalatyan (ksamdev at gmail dot com)
00016 //         Created:  Wed Oct  5 16:42:34 CET 2006
00017 // $Id: SiStripOfflineDQM.cc,v 1.21 2008/11/24 17:06:46 dutta Exp $
00018 //
00019 //
00020 
00021 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00022 
00023 
00024 #include "FWCore/Framework/interface/LuminosityBlock.h"
00025 #include "FWCore/ServiceRegistry/interface/Service.h"
00026 #include "FWCore/ParameterSet/interface/FileInPath.h"
00027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00028 
00029 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00030 
00031 #include "DQMServices/Core/interface/DQMStore.h"
00032 
00033 #include "DQM/SiStripCommon/interface/SiStripFolderOrganizer.h"
00034 #include "DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h"
00035 
00036 #include "DQM/SiStripMonitorClient/interface/SiStripOfflineDQM.h"
00037 
00038 //Run Info
00039 #include "CondFormats/DataRecord/interface/RunSummaryRcd.h"
00040 #include "CondFormats/RunInfo/interface/RunSummary.h"
00041 #include "CondFormats/RunInfo/interface/RunInfo.h"
00042 
00043 #include <iostream>
00044 #include <iomanip>
00045 #include <stdio.h>
00046 #include <string>
00047 #include <sstream>
00048 #include <math.h>
00049 
00057 SiStripOfflineDQM::SiStripOfflineDQM(edm::ParameterSet const& pSet) {
00058   // Create MessageSender
00059   edm::LogInfo( "SiStripOfflineDQM") << "SiStripOfflineDQM::Deleting SiStripOfflineDQM ";
00060 
00061   // Action Executor
00062   actionExecutor_ = new SiStripActionExecutor();
00063 
00064   // get back-end interface
00065   dqmStore_ = edm::Service<DQMStore>().operator->();
00066 
00067   usedWithEDMtoMEConverter_= pSet.getUntrackedParameter<bool>("UsedWithEDMtoMEConverter",false); 
00068   createSummary_           = pSet.getUntrackedParameter<bool>("CreateSummary",true);
00069   inputFileName_           = pSet.getUntrackedParameter<std::string>("InputFileName","");
00070   outputFileName_          = pSet.getUntrackedParameter<std::string>("OutputFileName","");
00071   globalStatusFilling_     = pSet.getUntrackedParameter<int>("GlobalStatusFilling", 1);
00072 
00073   nEvents_  = 0;
00074 }
00080 SiStripOfflineDQM::~SiStripOfflineDQM() {
00081   edm::LogInfo("SiStripOfflineDQM") << "SiStripOfflineDQM::Deleting SiStripOfflineDQM ";
00082 
00083 }
00091 void SiStripOfflineDQM::beginJob( const edm::EventSetup &eSetup) {
00092 
00093   // Essential: reads xml file to get the histogram names to create summary
00094   // Read the summary configuration file
00095   if (createSummary_) {  
00096     if (!actionExecutor_->readConfiguration()) {
00097       edm::LogInfo ("SiStripOfflineDQM") <<"SiStripOfflineDQM:: Error to read configuration file!! Summary will not be produced!!!";
00098       createSummary_ = false;
00099     }
00100   }
00101   if (globalStatusFilling_) actionExecutor_->bookGlobalStatus(dqmStore_);
00102 
00103   edm::LogInfo("SiStripOfflineDQM") << "SiStripOfflineDQM::beginJob done";
00104 }
00114 void SiStripOfflineDQM::beginRun(edm::Run const& run, edm::EventSetup const& eSetup) {
00115   edm::LogInfo ("SiStripOfflineDQM") <<"SiStripOfflineDQM:: Begining of Run";
00116 
00117   int nFEDs = 0;
00118   edm::eventsetup::EventSetupRecordKey recordKey(edm::eventsetup::EventSetupRecordKey::TypeTag::findType("RunInfoRcd"));
00119   if( eSetup.find( recordKey ) != 0) {
00120 
00121     edm::ESHandle<RunInfo> sumFED;
00122     eSetup.get<RunInfoRcd>().get(sumFED);    
00123     if ( sumFED.isValid() ) {
00124 
00125       const FEDNumbering numbering;
00126       const int siStripFedIdMin = numbering.getSiStripFEDIds().first;
00127       const int siStripFedIdMax = numbering.getSiStripFEDIds().second; 
00128       
00129 
00130       std::vector<int> FedsInIds= sumFED->m_fed_in;   
00131       for(unsigned int it = 0; it < FedsInIds.size(); ++it) {
00132         int fedID = FedsInIds[it];     
00133         
00134         if(fedID>=siStripFedIdMin &&  fedID<=siStripFedIdMax)  ++nFEDs;
00135       }
00136     }
00137   }
00138   if (nFEDs > 0) trackerFEDsFound_ = true;
00139   
00140   if (!usedWithEDMtoMEConverter_) {
00141     if (!openInputFile()) createSummary_ = false;
00142   }
00143 }
00154 void SiStripOfflineDQM::analyze(edm::Event const& e, edm::EventSetup const& eSetup){
00155   nEvents_++;  
00156 }
00163 void SiStripOfflineDQM::endLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& eSetup) {
00164 
00165   edm::LogInfo( "SiStripOfflineDQM") << "SiStripOfflineDQM::endLuminosityBlock";
00166   // create Summary Plots
00167   if (createSummary_)  actionExecutor_->createSummaryOffline(dqmStore_);
00168 
00169   // Fill Global Status
00170   if (globalStatusFilling_ > 0 && trackerFEDsFound_) {
00171     if (globalStatusFilling_ == 1) actionExecutor_->fillGlobalStatusFromModule(dqmStore_);
00172     if (globalStatusFilling_ == 2) actionExecutor_->fillGlobalStatusFromLayer(dqmStore_);
00173   }
00174 }
00181 void SiStripOfflineDQM::endJob() {
00182 
00183   edm::LogInfo( "SiStripOfflineDQM") << "SiStripOfflineDQM::endJob";
00184   // Save Output file
00185   if (!usedWithEDMtoMEConverter_) { 
00186     dqmStore_->cd();
00187     dqmStore_->save(outputFileName_, "","","");
00188   }
00189 }
00196 bool SiStripOfflineDQM::openInputFile() { 
00197   if (inputFileName_.size() == 0) return false;
00198   edm::LogInfo("SiStripOfflineDQM") <<  "SiStripOfflineDQM::openInputFile: Accessing root File" << inputFileName_;
00199   dqmStore_->setVerbose(0);
00200   dqmStore_->open(inputFileName_, false); 
00201   return true;
00202 }
00203 
00204 #include "FWCore/Framework/interface/MakerMacros.h"
00205 DEFINE_FWK_MODULE(SiStripOfflineDQM);

Generated on Tue Jun 9 17:33:35 2009 for CMSSW by  doxygen 1.5.4