CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/DQM/RPCMonitorClient/src/RPCEfficiencyShiftHisto.cc

Go to the documentation of this file.
00001 //
00002 // Original Author:  Cesare Calabria,161 R-006,
00003 //         Created:  Tue Jul 20 12:58:43 CEST 2010
00004 
00005 // Reviewed : Anna Cimmino  Tue Aug 16 10:20  2010
00006 // $Id: RPCEfficiencyShiftHisto.cc,v 1.2 2011/07/06 09:09:59 cimmino Exp $
00007 
00008 
00009 // user include files
00010 #include "DQM/RPCMonitorClient/interface/RPCEfficiencyShiftHisto.h"
00011 #include <sstream>
00012 
00013 //CondFormats
00014 #include "CondFormats/RunInfo/interface/RunInfo.h"
00015 #include "CondFormats/DataRecord/interface/RunSummaryRcd.h"
00016 // Framework
00017 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00018 #include "FWCore/Framework/interface/LuminosityBlock.h"
00019 #include "FWCore/Framework/interface/Event.h"
00020 #include "FWCore/Framework/interface/EventSetup.h"
00021 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00022 //DQM Services
00023 #include "DQMServices/Core/interface/DQMStore.h"
00024 
00025 RPCEfficiencyShiftHisto::RPCEfficiencyShiftHisto(const edm::ParameterSet& ps) {
00026 
00027   globalFolder_ = ps.getUntrackedParameter<std::string>("GlobalFolder", "RPC/RPCEfficiency/");
00028   effCut_= ps.getUntrackedParameter<int>("EffCut", 90);
00029   SaveFile  = ps.getUntrackedParameter<bool>("SaveFile", false);
00030   NameFile  = ps.getUntrackedParameter<std::string>("NameFile","RPCEfficiency.root");
00031   numberOfDisks_ = ps.getUntrackedParameter<int>("NumberOfEndcapDisks", 3);
00032 }
00033 
00034 
00035 RPCEfficiencyShiftHisto::~RPCEfficiencyShiftHisto(){ }
00036 
00037 void RPCEfficiencyShiftHisto::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){}
00038 
00039 void RPCEfficiencyShiftHisto::beginJob(){
00040 
00041   dbe_ = edm::Service<DQMStore>().operator->();
00042 }
00043 
00044 void RPCEfficiencyShiftHisto::beginRun(const edm::Run& r, const edm::EventSetup& c){
00045 
00046   if(dbe_ == 0) return;
00047 
00048   dbe_->setCurrentFolder(globalFolder_);
00049   EffBarrelRoll = dbe_->book1D("EffBarrelRoll", "Barrel Efficiency",101,-0.5, 100.5);
00050   EffEndcapPlusRoll = dbe_->book1D("EffEndcapPlusRoll", "Endcap + Efficiency",101,-0.5, 100.5);
00051   EffEndcapMinusRoll = dbe_->book1D("EffEndcapMinusRoll", "Endcap - Efficiency",101,-0.5, 100.5);
00052   RollPercentage = dbe_->book2D("RollPercentage", "RollPercentage",1,0.,1.,3,0.,3.);
00053 
00054   RollPercentage->setBinLabel(1,"%",1);
00055   RollPercentage->setBinLabel(1,"E+",2);
00056   RollPercentage->setBinLabel(2,"B",2);
00057   RollPercentage->setBinLabel(3,"E-",2);
00058 }
00059 
00060 void RPCEfficiencyShiftHisto::endRun(const edm::Run& r, const edm::EventSetup& c){
00061 
00062    std::stringstream meName;
00063    MonitorElement * myMe;
00064    
00065    meName.str("");
00066    meName<<globalFolder_;
00067 
00068    //Barrel
00069 
00070    int entriesBarrel = 0;
00071    int entriesBarrelBeyondEff = 0;
00072    float percBarrel = 0;
00073 
00074    for(int w = -2 ; w<3; w++){
00075      
00076        meName.str("");
00077        if(w <= 0) meName<<globalFolder_<<"Efficiency_Roll_vs_Sector_Wheel_"<<w;
00078        else meName<<globalFolder_<<"Efficiency_Roll_vs_Sector_Wheel_+"<<w;
00079 
00080        myMe = dbe_->get(meName.str());
00081          
00082        if(myMe){
00083          for(int s = 1; s <= myMe->getNbinsX(); s++){
00084            for(int r = 1;r <= myMe->getNbinsY(); r++){
00085            
00086                 double effBarrel = myMe->getBinContent(s,r);
00087 
00088                 if(effBarrel >= 0){//5
00089 
00090                   if (EffBarrelRoll) EffBarrelRoll->Fill(effBarrel);
00091                         entriesBarrel++;
00092 
00093                         if(effBarrel >= effCut_) entriesBarrelBeyondEff++;
00094                 }
00095            }
00096          }
00097        }
00098      }
00099 
00100      if(entriesBarrel != 0){
00101         percBarrel = 100*entriesBarrelBeyondEff/entriesBarrel;
00102         if(RollPercentage)RollPercentage->setBinContent(1,2,percBarrel);}
00103 
00104 
00105    //EndcapMinus
00106 
00107    int entriesEndcapMinus = 0;
00108    int entriesEndcapMinusBeyondEff = 0;
00109    float percEndcapMinus = 0;
00110    int entriesEndcapPlus = 0;
00111    int entriesEndcapPlusBeyondEff = 0;
00112    float percEndcapPlus = 0;
00113      for(int d = -numberOfDisks_ ; d <= numberOfDisks_; d++){
00114          
00115        if(d == 0) continue;
00116 
00117          meName.str("");
00118          meName<<globalFolder_<<"Efficiency_Roll_vs_Segment_Disk_"<<d;
00119          myMe = dbe_->get(meName.str());
00120 
00121        
00122        if(myMe){    
00123 
00124          for (int x = 1 ;x <= myMe->getNbinsX();x++){
00125            for(int y = 1;y<=myMe->getNbinsY(); y++){
00126 
00127                 double effEndcap = myMe->getBinContent(x,y);
00128         
00129                 if(d<0 ){
00130                   entriesEndcapMinus++; 
00131                   if(EffEndcapMinusRoll)EffEndcapMinusRoll->Fill(effEndcap);
00132                   if(effEndcap >= effCut_) entriesEndcapMinusBeyondEff++;
00133                 }else {
00134                   entriesEndcapPlus++;
00135                   if(EffEndcapPlusRoll)EffEndcapPlusRoll->Fill(effEndcap);
00136                   if(effEndcap >= effCut_) entriesEndcapPlusBeyondEff++;
00137                 }
00138            }
00139          }
00140        }
00141      }
00142 
00143 
00144      if(entriesEndcapMinus != 0){
00145        percEndcapMinus = 100*entriesEndcapMinusBeyondEff/entriesEndcapMinus;
00146        if( RollPercentage) RollPercentage->setBinContent(1,3,percEndcapMinus);}
00147 
00148 
00149      if(entriesEndcapPlus != 0){
00150         percEndcapPlus = 100*entriesEndcapPlusBeyondEff/entriesEndcapPlus;
00151         if(RollPercentage)      RollPercentage->setBinContent(1,1,percEndcapPlus);
00152      }
00153 
00154      if(SaveFile) dbe_->save(NameFile);
00155 
00156 }
00157 
00158