Go to the documentation of this file.00001 #include "DQM/RPCMonitorClient/interface/RPCDaqInfo.h"
00002 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00003 #include "CondFormats/RunInfo/interface/RunInfo.h"
00004 #include "CondFormats/RunInfo/interface/RunSummary.h"
00005 #include "CondFormats/DataRecord/interface/RunSummaryRcd.h"
00006
00007 RPCDaqInfo::RPCDaqInfo(const edm::ParameterSet& ps) {
00008
00009 FEDRange_.first = ps.getUntrackedParameter<unsigned int>("MinimumRPCFEDId", 790);
00010 FEDRange_.second = ps.getUntrackedParameter<unsigned int>("MaximumRPCFEDId", 792);
00011
00012 NumberOfFeds_ =FEDRange_.second - FEDRange_.first +1;
00013
00014 numberOfDisks_ = ps.getUntrackedParameter<int>("NumberOfEndcapDisks", 3);
00015 }
00016
00017 RPCDaqInfo::~RPCDaqInfo(){}
00018
00019 void RPCDaqInfo::beginLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup){
00020
00021 edm::eventsetup::EventSetupRecordKey recordKey(edm::eventsetup::EventSetupRecordKey::TypeTag::findType("RunInfoRcd"));
00022
00023
00024 if(0 != iSetup.find( recordKey ) ) {
00025
00026
00027 edm::ESHandle<RunInfo> sumFED;
00028 iSetup.get<RunInfoRcd>().get(sumFED);
00029 std::vector<int> FedsInIds= sumFED->m_fed_in;
00030
00031 int FedCount=0;
00032
00033
00034 for(unsigned int fedItr=0;fedItr<FedsInIds.size(); ++fedItr) {
00035 int fedID=FedsInIds[fedItr];
00036
00037
00038 if(fedID>=FEDRange_.first && fedID<=FEDRange_.second) ++FedCount;
00039 }
00040
00041
00042 if(NumberOfFeds_>0) DaqFraction_->Fill( FedCount/NumberOfFeds_);
00043 else DaqFraction_->Fill(-1);
00044
00045 }else{
00046 DaqFraction_->Fill(-1);
00047 return;
00048 }
00049 }
00050
00051
00052 void RPCDaqInfo::endLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup){}
00053
00054
00055 void RPCDaqInfo::beginJob(){
00056
00057 dbe_ = 0;
00058 dbe_ = edm::Service<DQMStore>().operator->();
00059
00060
00061 dbe_->setCurrentFolder("RPC/EventInfo/DAQContents");
00062
00063 int limit = numberOfDisks_;
00064 if(numberOfDisks_ < 2) limit = 2;
00065
00066 for (int i = -1 * limit; i<= limit;i++ ){
00067 if (i>-3 && i<3){
00068 std::stringstream streams;
00069 streams << "RPC_Wheel" << i;
00070 daqWheelFractions[i+2] = dbe_->bookFloat(streams.str());
00071 daqWheelFractions[i+2]->Fill(-1);
00072 }
00073
00074 if (i == 0 || i > numberOfDisks_ || i< (-1 * numberOfDisks_))continue;
00075
00076 int offset = numberOfDisks_;
00077 if (i>0) offset --;
00078
00079 std::stringstream streams;
00080 streams << "RPC_Disk" << i;
00081 daqDiskFractions[i+2] = dbe_->bookFloat(streams.str());
00082 daqDiskFractions[i+2]->Fill(-1);
00083 }
00084
00085
00086
00087 dbe_->setCurrentFolder("RPC/EventInfo");
00088
00089 DaqFraction_ = dbe_->bookFloat("DAQSummary");
00090
00091 DaqMap_ = dbe_->book2D( "DAQSummaryMap","RPC DAQ Summary Map",15, -7.5, 7.5, 12, 0.5 ,12.5);
00092
00093
00094 std::stringstream BinLabel;
00095 for (int i= 1 ; i<=15; i++){
00096 BinLabel.str("");
00097 if(i<13){
00098 BinLabel<<"Sec"<<i;
00099 DaqMap_->setBinLabel(i,BinLabel.str(),2);
00100 }
00101
00102 BinLabel.str("");
00103 if(i<5)
00104 BinLabel<<"Disk"<<i-5;
00105 else if(i>11)
00106 BinLabel<<"Disk"<<i-11;
00107 else if(i==11 || i==5)
00108 BinLabel.str("");
00109 else
00110 BinLabel<<"Wheel"<<i-8;
00111
00112 DaqMap_->setBinLabel(i,BinLabel.str(),1);
00113 }
00114 }
00115
00116
00117 void RPCDaqInfo::endJob() {}
00118
00119
00120
00121 void RPCDaqInfo::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){}
00122