00001 #include "DQMServices/Components/src/DQMDaqInfo.h"
00002 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00003
00004 DQMDaqInfo::DQMDaqInfo(const edm::ParameterSet& iConfig)
00005 {
00006 }
00007
00008 DQMDaqInfo::~DQMDaqInfo()
00009 {
00010 }
00011
00012 void DQMDaqInfo::beginLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup){
00013
00014 edm::eventsetup::EventSetupRecordKey recordKey(edm::eventsetup::EventSetupRecordKey::TypeTag::findType("RunInfoRcd"));
00015
00016 if( 0 != iSetup.find( recordKey ) ) {
00017
00018 edm::ESHandle<RunInfo> sumFED;
00019 iSetup.get<RunInfoRcd>().get(sumFED);
00020
00021
00022
00023 std::vector<int> FedsInIds= sumFED->m_fed_in;
00024
00025 float FedCount[9]={0., 0., 0., 0., 0., 0., 0., 0., 0.};
00026
00027 for(unsigned int fedItr=0;fedItr<FedsInIds.size(); ++fedItr) {
00028 int fedID=FedsInIds[fedItr];
00029
00030 if(fedID>=PixelRange.first & fedID<=PixelRange.second) ++FedCount[Pixel] ;
00031 if(fedID>=TrackerRange.first & fedID<=TrackerRange.second) ++FedCount[SiStrip];
00032 if(fedID>=CSCRange.first & fedID<=CSCRange.second) ++FedCount[CSC] ;
00033 if(fedID>=RPCRange.first & fedID<=RPCRange.second) ++FedCount[RPC] ;
00034 if(fedID>=DTRange.first & fedID<=DTRange.second) ++FedCount[DT] ;
00035 if(fedID>=HcalRange.first & fedID<=HcalRange.second) ++FedCount[Hcal] ;
00036 if(fedID>=ECALBarrRange.first & fedID<=ECALBarrRange.second) ++FedCount[EcalBarrel] ;
00037 if((fedID>=ECALEndcapRangeLow.first & fedID<=ECALEndcapRangeLow.second)
00038 ||(fedID>=ECALEndcapRangeHigh.first & fedID<=ECALEndcapRangeHigh.second)) ++FedCount[EcalEndcap] ;
00039 if(fedID>=L1TRange.first & fedID<=L1TRange.second) ++FedCount[L1T] ;
00040
00041 }
00042
00043 for(int detIndex=0; detIndex<9; ++detIndex) {
00044 DaqFraction[detIndex]->Fill( FedCount[detIndex]/NumberOfFeds[detIndex]);
00045 }
00046
00047 }else{
00048
00049 for(int detIndex=0; detIndex<9; ++detIndex) DaqFraction[detIndex]->Fill(-1);
00050 return;
00051 }
00052
00053
00054 }
00055
00056
00057 void DQMDaqInfo::endLuminosityBlock(const edm::LuminosityBlock& lumiBlock, const edm::EventSetup& iSetup){
00058 }
00059
00060
00061 void
00062 DQMDaqInfo::beginJob(const edm::EventSetup& iSetup)
00063 {
00064 dbe_ = 0;
00065 dbe_ = edm::Service<DQMStore>().operator->();
00066
00067 std::string commonFolder = "/EventInfo/DAQContents";
00068 std::string subsystFolder;
00069 std::string curentFolder;
00070
00071 subsystFolder="Pixel";
00072 curentFolder= subsystFolder+commonFolder;
00073 dbe_->setCurrentFolder(curentFolder.c_str());
00074 DaqFraction[Pixel] = dbe_->bookFloat("PixelDaqFraction");
00075
00076
00077 subsystFolder="SiStrip";
00078 curentFolder=subsystFolder+commonFolder;
00079 dbe_->setCurrentFolder(curentFolder.c_str());
00080 DaqFraction[SiStrip] = dbe_->bookFloat("SiStripDaqFraction");
00081
00082 subsystFolder="RPC";
00083 curentFolder=subsystFolder+commonFolder;
00084 dbe_->setCurrentFolder(curentFolder.c_str());
00085 DaqFraction[RPC] = dbe_->bookFloat("RPCDaqFraction");
00086
00087 subsystFolder="CSC";
00088 curentFolder=subsystFolder+commonFolder;
00089 dbe_->setCurrentFolder(curentFolder.c_str());
00090 DaqFraction[CSC] = dbe_->bookFloat("CSCDaqFraction");
00091
00092 subsystFolder="DT";
00093 curentFolder=subsystFolder+commonFolder;
00094 dbe_->setCurrentFolder(curentFolder.c_str());
00095 DaqFraction[DT] = dbe_->bookFloat("DTDaqFraction");
00096
00097 subsystFolder="Hcal";
00098 curentFolder=subsystFolder+commonFolder;
00099 dbe_->setCurrentFolder(curentFolder.c_str());
00100 DaqFraction[Hcal] = dbe_->bookFloat("HcalDaqFraction");
00101
00102 subsystFolder="EcalBarrel";
00103 curentFolder=subsystFolder+commonFolder;
00104 dbe_->setCurrentFolder(curentFolder.c_str());
00105 DaqFraction[EcalBarrel] = dbe_->bookFloat("EcalBarrDaqFraction");
00106
00107 subsystFolder="EcalEndcap";
00108 curentFolder=subsystFolder+commonFolder;
00109 dbe_->setCurrentFolder(curentFolder.c_str());
00110 DaqFraction[EcalEndcap] = dbe_->bookFloat("EcalEndDaqFraction");
00111
00112 subsystFolder="L1T";
00113 curentFolder=subsystFolder+commonFolder;
00114 dbe_->setCurrentFolder(curentFolder.c_str());
00115 DaqFraction[L1T] = dbe_->bookFloat("L1TDaqFraction");
00116
00117
00118 PixelRange = FEDNumbering::getSiPixelFEDIds();
00119 TrackerRange = FEDNumbering::getSiStripFEDIds();
00120 CSCRange = FEDNumbering::getCSCFEDIds();
00121 RPCRange.first = 790;
00122 RPCRange.second = 792;
00123 DTRange.first = 770;
00124 DTRange.second = 774;
00125 HcalRange = FEDNumbering::getHcalFEDIds();
00126 L1TRange = FEDNumbering::getTriggerGTPFEDIds();
00127 ECALBarrRange.first = 610;
00128 ECALBarrRange.second = 645;
00129 ECALEndcapRangeLow.first = 601;
00130 ECALEndcapRangeLow.second = 609;
00131 ECALEndcapRangeHigh.first = 646;
00132 ECALEndcapRangeHigh.second = 654;
00133
00134 NumberOfFeds[Pixel] = PixelRange.second-PixelRange.first +1;
00135 NumberOfFeds[SiStrip] = TrackerRange.second-TrackerRange.first +1;
00136 NumberOfFeds[CSC] = CSCRange.second-CSCRange.first +1;
00137 NumberOfFeds[RPC] = RPCRange.second-RPCRange.first +1;
00138 NumberOfFeds[DT] = DTRange.second-DTRange.first +1;
00139 NumberOfFeds[Hcal] = HcalRange.second-HcalRange.first +1;
00140 NumberOfFeds[EcalBarrel] = ECALBarrRange.second-ECALBarrRange.first +1 ;
00141 NumberOfFeds[EcalEndcap] = (ECALEndcapRangeLow.second-ECALEndcapRangeLow.first +1)+(ECALEndcapRangeHigh.second-ECALEndcapRangeHigh.first +1) ;
00142 NumberOfFeds[L1T] = L1TRange.second-L1TRange.first +1;
00143
00144 }
00145
00146
00147 void
00148 DQMDaqInfo::endJob() {
00149 }
00150
00151
00152
00153 void
00154 DQMDaqInfo::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00155 {
00156
00157
00158 }
00159