CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/DQMServices/Components/src/DQMDcsInfo.cc

Go to the documentation of this file.
00001 /*
00002  * \file DQMDcsInfo.cc
00003  * \author A.Meyer - DESY
00004  * Last Update:
00005  * $Date: 2012/08/02 07:59:10 $
00006  * $Revision: 1.3 $
00007  * $Author: rovere $
00008  *
00009  */
00010 
00011 #include "DQMDcsInfo.h"
00012 #include "DataFormats/Scalers/interface/DcsStatus.h"
00013 #include "DataFormats/Common/interface/Handle.h"
00014 #include "DataFormats/L1GlobalTrigger/interface/L1GtFdlWord.h"
00015 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
00016 
00017 // Framework
00018 
00019 const static int XBINS=2000;
00020 
00021 DQMDcsInfo::DQMDcsInfo(const edm::ParameterSet& ps)
00022 {
00023   
00024   parameters_ = ps;
00025 
00026   dbe_ = edm::Service<DQMStore>().operator->();
00027 
00028   subsystemname_ = parameters_.getUntrackedParameter<std::string>("subSystemFolder", "Info") ;
00029   dcsinfofolder_ = parameters_.getUntrackedParameter<std::string>("dcsInfoFolder", "DcsInfo") ;
00030   
00031   // initialize
00032   for (int i=0;i<25;i++) dcs[i]=true;
00033 }
00034 
00035 DQMDcsInfo::~DQMDcsInfo(){
00036 }
00037 
00038 void 
00039 DQMDcsInfo::beginRun(const edm::Run& r, const edm::EventSetup &c ) {
00040 
00041   // Fetch GlobalTag information and fill the string/ME.
00042   dbe_->cd();  
00043   dbe_->setCurrentFolder(subsystemname_ +"/CMSSWInfo/");
00044   const edm::ParameterSet &globalTagPSet = edm::getProcessParameterSet()
00045                                            .getParameterSet("PoolDBESSource@GlobalTag");
00046 
00047   dbe_->bookString("globalTag_Step1", globalTagPSet.getParameter<std::string>("globaltag"));
00048 
00049   dbe_->cd();  
00050   dbe_->setCurrentFolder(subsystemname_ + "/" + dcsinfofolder_);
00051 
00052   DCSbyLS_=dbe_->book1D("DCSbyLS","DCS",25,0.,25.);
00053   DCSbyLS_->setLumiFlag();
00054 
00055   // initialize
00056   for (int i=0;i<25;i++) dcs[i]=true;
00057 } 
00058 
00059 void DQMDcsInfo::analyze(const edm::Event& e, const edm::EventSetup& c){
00060  
00061   makeDcsInfo(e);
00062   makeGtInfo(e);
00063 
00064   return;
00065 }
00066 
00067 void
00068 DQMDcsInfo::endLuminosityBlock(const edm::LuminosityBlock& l, const edm::EventSetup& c)
00069 {
00070   // int nlumi = l.id().luminosityBlock();
00071 
00072   // fill dcs vs lumi 
00073   /* set those bins 0 for which bits are ON 
00074      needed for merge off lumi histograms across files */
00075   for (int i=0;i<25;i++)
00076   {
00077     if (dcs[i])
00078       DCSbyLS_->setBinContent(i+1,0.);
00079     else
00080       DCSbyLS_->setBinContent(i+1,1.);
00081 
00082     dcs[i]=true;
00083   }
00084 
00085   return;
00086 }
00087 
00088 void 
00089 DQMDcsInfo::makeDcsInfo(const edm::Event& e)
00090 {
00091 
00092   edm::Handle<DcsStatusCollection> dcsStatus;
00093   if ( ! e.getByLabel("scalersRawToDigi", dcsStatus) )
00094   {
00095     for (int i=0;i<24;i++) dcs[i]=false;
00096     return;
00097   }
00098   
00099   if ( ! dcsStatus.isValid() ) 
00100   {
00101     edm::LogWarning("DQMDcsInfo") << "scalersRawToDigi not found" ;
00102     for (int i=0;i<24;i++) dcs[i]=false; // info not available: set to false
00103     return;
00104   }
00105     
00106   for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin(); 
00107                             dcsStatusItr != dcsStatus->end(); ++dcsStatusItr) 
00108   {
00109       if (!dcsStatusItr->ready(DcsStatus::CSCp))   dcs[0]=false;
00110       if (!dcsStatusItr->ready(DcsStatus::CSCm))   dcs[1]=false;   
00111       if (!dcsStatusItr->ready(DcsStatus::DT0))    dcs[2]=false;
00112       if (!dcsStatusItr->ready(DcsStatus::DTp))    dcs[3]=false;
00113       if (!dcsStatusItr->ready(DcsStatus::DTm))    dcs[4]=false;
00114       if (!dcsStatusItr->ready(DcsStatus::EBp))    dcs[5]=false;
00115       if (!dcsStatusItr->ready(DcsStatus::EBm))    dcs[6]=false;
00116       if (!dcsStatusItr->ready(DcsStatus::EEp))    dcs[7]=false;
00117       if (!dcsStatusItr->ready(DcsStatus::EEm))    dcs[8]=false;
00118       if (!dcsStatusItr->ready(DcsStatus::ESp))    dcs[9]=false;
00119       if (!dcsStatusItr->ready(DcsStatus::ESm))    dcs[10]=false; 
00120       if (!dcsStatusItr->ready(DcsStatus::HBHEa))  dcs[11]=false;
00121       if (!dcsStatusItr->ready(DcsStatus::HBHEb))  dcs[12]=false;
00122       if (!dcsStatusItr->ready(DcsStatus::HBHEc))  dcs[13]=false; 
00123       if (!dcsStatusItr->ready(DcsStatus::HF))     dcs[14]=false;
00124       if (!dcsStatusItr->ready(DcsStatus::HO))     dcs[15]=false;
00125       if (!dcsStatusItr->ready(DcsStatus::BPIX))   dcs[16]=false;
00126       if (!dcsStatusItr->ready(DcsStatus::FPIX))   dcs[17]=false;
00127       if (!dcsStatusItr->ready(DcsStatus::RPC))    dcs[18]=false;
00128       if (!dcsStatusItr->ready(DcsStatus::TIBTID)) dcs[19]=false;
00129       if (!dcsStatusItr->ready(DcsStatus::TOB))    dcs[20]=false;
00130       if (!dcsStatusItr->ready(DcsStatus::TECp))   dcs[21]=false;
00131       if (!dcsStatusItr->ready(DcsStatus::TECm))   dcs[22]=false;
00132       if (!dcsStatusItr->ready(DcsStatus::CASTOR)) dcs[23]=false;
00133   }
00134       
00135   return ;
00136 }
00137 
00138 void 
00139 DQMDcsInfo::makeGtInfo(const edm::Event& e)
00140 {
00141 
00142   edm::Handle<L1GlobalTriggerReadoutRecord> gtrr_handle;
00143   if ( ! e.getByLabel("gtDigis", gtrr_handle) ) 
00144   {
00145     dcs[24]=false; // info not available: set to false
00146     return;
00147   }
00148   
00149   if ( ! gtrr_handle.isValid() ) 
00150   {
00151     edm::LogWarning("DQMDcsInfo") << " gtDigis not found" ;
00152     dcs[24]=false; // info not available: set to false
00153     return;
00154   }
00155   
00156   L1GlobalTriggerReadoutRecord const* gtrr = gtrr_handle.product();
00157   L1GtFdlWord fdlWord ; 
00158   if (gtrr)
00159     fdlWord = gtrr->gtFdlWord();
00160   else
00161   {
00162     edm::LogWarning ("DQMDcsInfo") << " phys decl. bit not accessible !!!";
00163     dcs[24]=false; // info not available: set to false
00164     return;
00165   }
00166 
00167   if (fdlWord.physicsDeclared() !=1) dcs[24]=false;
00168 
00169   return;
00170 }