Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
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
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
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
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
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
00071
00072
00073
00074
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;
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;
00146 return;
00147 }
00148
00149 if ( ! gtrr_handle.isValid() )
00150 {
00151 edm::LogWarning("DQMDcsInfo") << " gtDigis not found" ;
00152 dcs[24]=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;
00164 return;
00165 }
00166
00167 if (fdlWord.physicsDeclared() !=1) dcs[24]=false;
00168
00169 return;
00170 }