Go to the documentation of this file.00001
00002
00003
00004
00005
00017
00018
00019
00020
00021 #include "FWCore/ServiceRegistry/interface/Service.h"
00022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00023
00024 #include "DQM/SiPixelMonitorRawData/interface/SiPixelHLTSource.h"
00025 #include "DQM/SiPixelCommon/interface/SiPixelFolderOrganizer.h"
00026 #include "DQM/SiPixelCommon/interface/SiPixelHistogramId.h"
00027 #include "DQMServices/Core/interface/DQMStore.h"
00028
00029 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00030 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00031 #include "Geometry/CommonDetUnit/interface/GeomDetEnumerators.h"
00032 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h"
00033 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
00034
00035 #include "DataFormats/DetId/interface/DetId.h"
00036 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00037 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00038 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00039 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00040 #include "DataFormats/SiPixelDetId/interface/PixelBarrelNameUpgrade.h"
00041 #include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h"
00042 #include "DataFormats/SiPixelDetId/interface/PixelEndcapNameUpgrade.h"
00043
00044 #include <string>
00045 #include <stdlib.h>
00046
00047 using namespace std;
00048 using namespace edm;
00049
00050 SiPixelHLTSource::SiPixelHLTSource(const edm::ParameterSet& iConfig) :
00051 conf_(iConfig),
00052 rawin_( conf_.getParameter<edm::InputTag>( "RawInput" ) ),
00053 errin_( conf_.getParameter<edm::InputTag>( "ErrorInput" ) ),
00054 saveFile( conf_.getUntrackedParameter<bool>("saveFile",false) ),
00055 slowDown( conf_.getUntrackedParameter<bool>("slowDown",false) ),
00056 dirName_( conf_.getUntrackedParameter<std::string>("DirName","Pixel/FEDIntegrity/") )
00057 {
00058 theDMBE = edm::Service<DQMStore>().operator->();
00059 LogInfo ("PixelDQM") << "SiPixelHLTSource::SiPixelHLTSource: Got DQM BackEnd interface"<<endl;
00060 }
00061
00062
00063 SiPixelHLTSource::~SiPixelHLTSource()
00064 {
00065
00066
00067 LogInfo ("PixelDQM") << "SiPixelHLTSource::~SiPixelHLTSource: Destructor"<<endl;
00068 }
00069
00070
00071 void SiPixelHLTSource::beginJob(){
00072 firstRun = true;
00073 }
00074
00075 void SiPixelHLTSource::beginRun(const edm::Run& r, const edm::EventSetup& iSetup){
00076 LogInfo ("PixelDQM") << " SiPixelHLTSource::beginJob - Initialisation ... " << std::endl;
00077 iSetup.get<TrackerDigiGeometryRecord>().get( pDD );
00078 if(firstRun){
00079 eventNo = 0;
00080
00081
00082 bookMEs();
00083 firstRun = false;
00084 }
00085 }
00086
00087
00088 void SiPixelHLTSource::endJob(void){
00089
00090 if(saveFile) {
00091 LogInfo ("PixelDQM") << " SiPixelHLTSource::endJob - Saving Root File " << std::endl;
00092 std::string outputFile = conf_.getParameter<std::string>("outputFile");
00093 theDMBE->save( outputFile.c_str() );
00094 }
00095
00096 }
00097
00098
00099
00100
00101 void SiPixelHLTSource::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00102 {
00103 eventNo++;
00104
00105 edm::Handle< FEDRawDataCollection > rawinput;
00106 iEvent.getByLabel( rawin_, rawinput );
00107
00108 edm::Handle< edm::DetSetVector<SiPixelRawDataError> > errorinput;
00109 iEvent.getByLabel( errin_, errorinput );
00110 if (!errorinput.isValid()) return;
00111
00112 int fedId;
00113
00114 for(fedId = 0; fedId <= 39; fedId++) {
00115
00116 const FEDRawData& fedRawData = rawinput->FEDData( fedId );
00117 if (fedRawData.size() != 0) (meRawWords_)->Fill(fedId);
00118 }
00119
00120 edm::DetSet<SiPixelRawDataError>::const_iterator di;
00121
00122 for(TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++){
00123 if( ((*it)->subDetector()==GeomDetEnumerators::PixelBarrel) || ((*it)->subDetector()==GeomDetEnumerators::PixelEndcap) ){
00124 uint32_t detId = (*it)->geographicalId();
00125 edm::DetSetVector<SiPixelRawDataError>::const_iterator isearch = errorinput->find(detId);
00126 if( isearch != errorinput->end() ) {
00127 for(di = isearch->data.begin(); di != isearch->data.end(); di++) {
00128 fedId = di->getFedId();
00129 int errorType = di->getType();
00130 switch(errorType) {
00131 case(35) : (meNErrors_)->Fill(fedId); break;
00132 case(36) : (meNErrors_)->Fill(fedId); break;
00133 case(37) : (meNErrors_)->Fill(fedId); break;
00134 case(38) : (meNErrors_)->Fill(fedId); break;
00135 default : break;
00136 };
00137 }
00138 }
00139 }
00140 }
00141
00142 edm::DetSetVector<SiPixelRawDataError>::const_iterator isearch = errorinput->find(0xffffffff);
00143
00144 if( isearch != errorinput->end() ) {
00145 for(di = isearch->data.begin(); di != isearch->data.end(); di++) {
00146 fedId = di->getFedId();
00147 int errorType = di->getType();
00148 switch(errorType) {
00149 case(35) : (meNErrors_)->Fill(fedId); break;
00150 case(36) : (meNErrors_)->Fill(fedId); break;
00151 case(37) : (meNErrors_)->Fill(fedId); break;
00152 case(38) : (meNErrors_)->Fill(fedId); break;
00153 case(39) : (meNCRCs_)->Fill(fedId); break;
00154 default : break;
00155 };
00156 }
00157 }
00158
00159 if(slowDown) usleep(100000);
00160
00161 }
00162
00163
00164
00165
00166 void SiPixelHLTSource::bookMEs(){
00167
00168 theDMBE->cd();
00169 theDMBE->setCurrentFolder(dirName_);
00170
00171 std::string rawhid;
00172 std::string errhid;
00173
00174 edm::InputTag rawin = conf_.getParameter<edm::InputTag>( "RawInput" );
00175 SiPixelHistogramId* RawHistogramId = new SiPixelHistogramId( rawin.label() );
00176 edm::InputTag errin = conf_.getParameter<edm::InputTag>( "ErrorInput" );
00177 SiPixelHistogramId* ErrorHistogramId = new SiPixelHistogramId( errin.label() );
00178
00179 DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
00180
00181
00182 meRawWords_ = theDMBE->book1D("FEDEntries","Number of raw words",40,-0.5,39.5);
00183 meRawWords_->setAxisTitle("Number of raw words",1);
00184
00185
00186 meNCRCs_ = theDMBE->book1D("FEDFatal","Number of fatal errors",40,-0.5,39.5);
00187 meNCRCs_->setAxisTitle("Number of fatal errors",1);
00188
00189
00190 meNErrors_ = theDMBE->book1D("FEDNonFatal","Number of non-fatal errors",40,-0.5,39.5);
00191 meNErrors_->setAxisTitle("Number of non-fatal errors",1);
00192
00193 delete RawHistogramId;
00194 delete ErrorHistogramId;
00195
00196 }
00197
00198
00199 DEFINE_FWK_MODULE(SiPixelHLTSource);