Go to the documentation of this file.00001
00012 #include <FWCore/Framework/interface/Frameworkfwd.h>
00013 #include <FWCore/Framework/interface/EDAnalyzer.h>
00014 #include <FWCore/Framework/interface/Event.h>
00015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00016 #include "FWCore/ServiceRegistry/interface/Service.h"
00017
00018 #include "DataFormats/Common/interface/Handle.h"
00019
00020 #include "DQMServices/Core/interface/DQMStore.h"
00021 #include "DQMServices/Core/interface/MonitorElement.h"
00022
00023 #include <DataFormats/MuonDetId/interface/RPCDetId.h>
00024 #include "FWCore/Framework/interface/ESHandle.h"
00025 #include <Geometry/RPCGeometry/interface/RPCGeometry.h>
00026 #include "Geometry/DTGeometry/interface/DTGeometry.h"
00027 #include <Geometry/CSCGeometry/interface/CSCGeometry.h>
00028
00029 #include<string>
00030 #include<map>
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 class DTStationIndex{
00043 public:
00044 DTStationIndex():_region(0),_wheel(0),_sector(0),_station(0){}
00045 DTStationIndex(int region, int wheel, int sector, int station) :
00046 _region(region),
00047 _wheel(wheel),
00048 _sector(sector),
00049 _station(station){}
00050 ~DTStationIndex(){}
00051 int region() const {return _region;}
00052 int wheel() const {return _wheel;}
00053 int sector() const {return _sector;}
00054 int station() const {return _station;}
00055 bool operator<(const DTStationIndex& dtind) const{
00056 if(dtind.region()!=this->region())
00057 return dtind.region()<this->region();
00058 else if(dtind.wheel()!=this->wheel())
00059 return dtind.wheel()<this->wheel();
00060 else if(dtind.sector()!=this->sector())
00061 return dtind.sector()<this->sector();
00062 else if(dtind.station()!=this->station())
00063 return dtind.station()<this->station();
00064 return false;
00065 }
00066 private:
00067 int _region;
00068 int _wheel;
00069 int _sector;
00070 int _station;
00071 };
00072
00073
00074 class CSCStationIndex{
00075 public:
00076 CSCStationIndex():_region(0),_station(0),_ring(0),_chamber(0){}
00077 CSCStationIndex(int region, int station, int ring, int chamber):
00078 _region(region),
00079 _station(station),
00080 _ring(ring),
00081 _chamber(chamber){}
00082 ~CSCStationIndex(){}
00083 int region() const {return _region;}
00084 int station() const {return _station;}
00085 int ring() const {return _ring;}
00086 int chamber() const {return _chamber;}
00087 bool operator<(const CSCStationIndex& cscind) const{
00088 if(cscind.region()!=this->region())
00089 return cscind.region()<this->region();
00090 else if(cscind.station()!=this->station())
00091 return cscind.station()<this->station();
00092 else if(cscind.ring()!=this->ring())
00093 return cscind.ring()<this->ring();
00094 else if(cscind.chamber()!=this->chamber())
00095 return cscind.chamber()<this->chamber();
00096 return false;
00097 }
00098
00099 private:
00100 int _region;
00101 int _station;
00102 int _ring;
00103 int _chamber;
00104 };
00105
00106
00107 class RPCEfficiency : public edm::EDAnalyzer {
00108 public:
00109 explicit RPCEfficiency(const edm::ParameterSet&);
00110 ~RPCEfficiency();
00111 virtual void beginJob() ;
00112 virtual void beginRun(const edm::Run&, const edm::EventSetup&);
00113 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00114 virtual void endJob() ;
00115 void bookDetUnitSeg(RPCDetId & detId,int nstrips, std::string folder, std::map<std::string, MonitorElement*> & );
00116 virtual void endRun(const edm::Run& r, const edm::EventSetup& iSetup);
00117 std::map<DTStationIndex,std::set<RPCDetId> > rollstoreDT;
00118 std::map<CSCStationIndex,std::set<RPCDetId> > rollstoreCSC;
00119
00120
00121
00122
00123
00124 MonitorElement * statistics;
00125
00126
00127
00128
00129
00130
00131 MonitorElement * hGlobalResClu1La[6];
00132 MonitorElement * hGlobalResClu2La[6];
00133 MonitorElement * hGlobalResClu3La[6];
00134
00135
00136 MonitorElement * hGlobalResClu1R3C;
00137 MonitorElement * hGlobalResClu1R3B;
00138 MonitorElement * hGlobalResClu1R3A;
00139 MonitorElement * hGlobalResClu1R2C;
00140 MonitorElement * hGlobalResClu1R2B;
00141 MonitorElement * hGlobalResClu1R2A;
00142
00143 MonitorElement * hGlobalResClu2R3C;
00144 MonitorElement * hGlobalResClu2R3B;
00145 MonitorElement * hGlobalResClu2R3A;
00146 MonitorElement * hGlobalResClu2R2C;
00147 MonitorElement * hGlobalResClu2R2B;
00148 MonitorElement * hGlobalResClu2R2A;
00149
00150 MonitorElement * hGlobalResClu3R3C;
00151 MonitorElement * hGlobalResClu3R3B;
00152 MonitorElement * hGlobalResClu3R3A;
00153 MonitorElement * hGlobalResClu3R2C;
00154 MonitorElement * hGlobalResClu3R2B;
00155 MonitorElement * hGlobalResClu3R2A;
00156
00157 private:
00158 std::vector<std::map<RPCDetId, int> > counter;
00159 std::vector<int> totalcounter;
00160
00161 bool incldt;
00162 bool incldtMB4;
00163 bool inclcsc;
00164 bool debug;
00165
00166 bool inves;
00167 double rangestrips;
00168 double rangestripsRB4;
00169 double MinCosAng;
00170 double MaxD;
00171 double MaxDrb4;
00172 int dupli;
00173
00174
00175 edm::InputTag cscSegments;
00176 edm::InputTag dt4DSegments;
00177 edm::InputTag RPCRecHitLabel_;
00178
00179 std::string folderPath;
00180
00181 std::string rollseff;
00182
00183 std::map<int, std::map<std::string, MonitorElement*> > meCollection;
00184
00185 bool EffSaveRootFile;
00186 std::string EffRootFileName;
00187 DQMStore * dbe;
00188 };