00001 #include <DQM/RPCMonitorClient/interface/RPCBxTest.h>
00002 #include "DQM/RPCMonitorDigi/interface/utils.h"
00003
00004
00005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00006
00007
00008 #include "Geometry/RPCGeometry/interface/RPCGeomServ.h"
00009 # include "TH1F.h"
00010
00011
00012
00013 RPCBxTest::RPCBxTest(const edm::ParameterSet& ps ){
00014 edm::LogVerbatim ("rpcbxtest") << "[RPCBxTest]: Constructor";
00015
00016 prescaleFactor_ = ps.getUntrackedParameter<int>("DiagnosticPrescale", 1);
00017
00018
00019 globalFolder_ = ps.getUntrackedParameter<std::string>("RPCGlobalFolder", "RPC/RecHits/SummaryHistograms/");
00020
00021 entriesCut_ = ps.getUntrackedParameter<int>("EntriesCut");
00022 rmsCut_ = ps.getUntrackedParameter<double>("RMSCut");
00023 distanceMean_ = ps.getUntrackedParameter<double>("DistanceFromZeroBx");
00024
00025 numberOfDisks_ = ps.getUntrackedParameter<int>("NumberOfEndcapDisks", 3);
00026 numberOfRings_ = ps.getUntrackedParameter<int>("NumberOfEndcapRings", 2);
00027 }
00028
00029 RPCBxTest::~RPCBxTest(){ dbe_=0;}
00030
00031 void RPCBxTest::beginJob(DQMStore * dbe){
00032 edm::LogVerbatim ("rpcbxtest") << "[RPCBxTest]: Begin job ";
00033 dbe_ = dbe;
00034 }
00035
00036
00037 void RPCBxTest::beginRun(const edm::Run& r, const edm::EventSetup& c, std::vector<MonitorElement *> meVector, std::vector<RPCDetId> detIdVector){
00038 edm::LogVerbatim ("rpcbxtest") << "[RPCBxTest]: Begin run";
00039
00040 MonitorElement* me;
00041 dbe_->setCurrentFolder(globalFolder_);
00042
00043 std::stringstream histoName;
00044
00045 histoName.str("");
00046 histoName<<"BX_Mean_Distribution_Barrel";
00047 BXMeanBarrel = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 11, -5.5, 5.5);
00048 BXMeanBarrel->setAxisTitle("Bx",1);
00049
00050 histoName.str("");
00051 histoName<<"BX_Mean_Distribution_EndcapP";
00052 BXMeanEndcapP = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 11, -5.5, 5.5);
00053
00054 histoName.str("");
00055 histoName<<"BX_Mean_Distribution_EndcapN";
00056 BXMeanEndcapN = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 11, -5.5, 5.5);
00057
00058
00059 histoName.str("");
00060 histoName<<"BX_Entries_Distribution_Barrel";
00061 BXEntriesBarrel = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 1000, -0.5, 999.5);
00062
00063 histoName.str("");
00064 histoName<<"BX_Entries_Distribution_EndcapP";
00065 BXEntriesEndcapP = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),1000, -0.5, 999.5);
00066
00067 histoName.str("");
00068 histoName<<"BX_Entries_Distribution_EndcapN";
00069 BXEntriesEndcapN = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 1000, -0.5, 999.5);
00070
00071
00072 histoName.str("");
00073 histoName<<"BX_RMS_Distribution_Barrel";
00074 BXRmsBarrel = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 21, -0.1, 4.1);
00075
00076 histoName.str("");
00077 histoName<<"BX_RMS_Distribution_EndcapP";
00078 BXRmsEndcapP = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 21, -0.1, 4.1);
00079
00080 histoName.str("");
00081 histoName<<"BX_RMS_Distribution_EndcapN";
00082 BXRmsEndcapN = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 21, -0.1, 4.1);
00083
00084 rpcdqm::utils rpcUtils;
00085
00086 int limit = numberOfDisks_;
00087 if(numberOfDisks_ < 2) limit = 2;
00088
00089 for (int w = -1 * limit; w<=limit;w++ ){
00090 if (w>-3 && w<3){
00091 histoName.str("");
00092 histoName<<"BX_Mean_Distribution_Wheel"<<w;
00093 me = 0;
00094 me = dbe_->get(globalFolder_ + histoName.str()) ;
00095 if ( 0!=me ) {
00096 dbe_->removeElement(me->getName());
00097 }
00098 BXMeanWheel[w+2] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 10, -0.5, 9.5);
00099
00100 histoName.str("");
00101 histoName<<"BX_RMS_Distribution_Wheel"<<w;
00102 me = 0;
00103 me = dbe_->get(globalFolder_ + histoName.str()) ;
00104 if ( 0!=me){
00105 dbe_->removeElement(me->getName());
00106 }
00107 BXRmsWheel[w+2] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 50, -0.5, 4.5);
00108 }
00109
00110 if (w == 0 || w< (-1 * numberOfDisks_) || w > numberOfDisks_)continue;
00111
00112 int offset = numberOfDisks_;
00113 if (w>0) offset --;
00114
00115 histoName.str("");
00116 histoName<<"BX_Mean_Distribution_Disk"<<w;
00117 me = 0;
00118 me = dbe_->get(globalFolder_ + histoName.str()) ;
00119 if ( 0!=me){
00120 dbe_->removeElement(me->getName());
00121 }
00122 BXMeanDisk[w+offset] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),10, -0.5, 9.5);
00123
00124
00125 histoName.str("");
00126 histoName<<"BX_RMS_Distribution_Disk"<<w;
00127 me = 0;
00128 me = dbe_->get(globalFolder_ + histoName.str()) ;
00129 if ( 0!=me){
00130 dbe_->removeElement(me->getName());
00131 }
00132 BXRmsDisk[w+offset] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(), 50, -0.5, 4.5);
00133 }
00134
00135
00136
00137
00138
00139 for (unsigned int i = 0 ; i<meVector.size(); i++){
00140
00141 bool flag= false;
00142
00143 DQMNet::TagList tagList;
00144 tagList = meVector[i]->getTags();
00145 DQMNet::TagList::iterator tagItr = tagList.begin();
00146
00147 while (tagItr != tagList.end() && !flag ) {
00148 if((*tagItr) == rpcdqm::OCCUPANCY)
00149 flag= true;
00150 tagItr++;
00151 }
00152
00153 if(flag){
00154 myBXMe_.push_back(meVector[i]);
00155 myDetIds_.push_back(detIdVector[i]);
00156 }
00157 }
00158
00159 }
00160
00161 void RPCBxTest::beginLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& context){
00162 }
00163
00164 void RPCBxTest::analyze(const edm::Event& iEvent, const edm::EventSetup& c) {}
00165
00166 void RPCBxTest::endLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& iSetup) { }
00167
00168 void RPCBxTest::endJob(void) {
00169 edm::LogVerbatim ("rpcbxtest") << "[RPCBxTest]: end job ";
00170
00171 }
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184 void RPCBxTest::endRun(const edm::Run& r, const edm::EventSetup& c) {
00185
00186 MonitorElement * myMe;
00187 RPCDetId detId;
00188 TH1F * myTH1F;
00189
00190 MonitorElement * ENTRIES =NULL;
00191 MonitorElement * MEAN =NULL;
00192 MonitorElement * MEANRing =NULL;
00193 MonitorElement * RMS =NULL;
00194 MonitorElement * RMSRing =NULL;
00195
00196 for (unsigned int i = 0 ; i<myBXMe_.size();i++){
00197
00198 myMe = myBXMe_[i];
00199 detId = myDetIds_[i];
00200
00201
00202 myTH1F = myMe->getTH1F();
00203
00204
00205
00206
00207
00208
00209
00210
00211 float mean = myTH1F->GetMean();
00212 float rms = myTH1F->GetRMS();
00213 float entries = myTH1F->GetEntries();
00214
00215
00216 RPCGeomServ RPCname(detId);
00217
00218
00219 if(detId.region()== 0){
00220 ENTRIES = BXEntriesBarrel;
00221 MEAN = BXMeanBarrel;
00222 MEANRing = BXMeanWheel[detId.ring()+2];
00223 RMS = BXRmsBarrel;
00224 RMSRing = BXRmsWheel[detId.ring()+2];
00225 }else if(detId.region()==1){
00226 ENTRIES = BXEntriesEndcapP;
00227 MEAN = BXMeanEndcapP;
00228 MEANRing = BXMeanDisk[detId.station()+2];
00229 RMS = BXRmsEndcapP;
00230 RMSRing = BXRmsDisk[detId.station()+2];
00231 }else if(detId.region()==-1){
00232 ENTRIES = BXEntriesEndcapN;
00233 MEAN = BXMeanEndcapN;
00234 MEANRing = BXMeanDisk[3-detId.station()];
00235 RMS = BXRmsEndcapN;
00236 RMSRing = BXRmsDisk[3-detId.station()];
00237 }
00238
00239 ENTRIES->Fill(entries);
00240
00241 if(entries >= entriesCut_){
00242 RMSRing->Fill(rms);
00243 RMS->Fill(rms);
00244
00245 if(rms <= rmsCut_){
00246
00247
00248
00249 MEAN->Fill(mean);
00250 MEANRing->Fill(mean);
00251 }
00252 }
00253
00254 }
00255 }