Go to the documentation of this file.00001 #ifndef SiStripMonitorSummary_SiStripBaseCondObjDQM_h
00002 #define SiStripMonitorSummary_SiStripBaseCondObjDQM_h
00003
00004 #include "FWCore/Framework/interface/EventSetup.h"
00005 #include "FWCore/Framework/interface/ESHandle.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007 #include "FWCore/ServiceRegistry/interface/Service.h"
00008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00009
00010
00011
00012 #include "DataFormats/DetId/interface/DetId.h"
00013 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
00014 #include "Geometry/Records/interface/IdealGeometryRecord.h"
00015
00016 #include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
00017 #include "DataFormats/SiStripDetId/interface/SiStripSubStructure.h"
00018
00019 #include "DQM/SiStripCommon/interface/SiStripFolderOrganizer.h"
00020 #include "DQM/SiStripCommon/interface/SiStripHistoId.h"
00021
00022 #include "DQMServices/Core/interface/DQMStore.h"
00023 #include "DQMServices/Core/interface/MonitorElement.h"
00024
00025 #include "CalibTracker/SiStripCommon/interface/SiStripDetInfoFileReader.h"
00026
00027 #include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"
00028 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
00029
00030 #include "DQM/SiStripCommon/interface/TkHistoMap.h"
00031 #include "CommonTools/TrackerMap/interface/TrackerMap.h"
00032
00033 #include <vector>
00034 #include <map>
00035 #include <string>
00036 #include <sstream>
00037
00038 class TrackerTopology;
00039 class SiStripBaseCondObjDQM {
00040
00041
00042
00043 public:
00044
00045
00046
00047 SiStripBaseCondObjDQM(const edm::EventSetup & eSetup,
00048 edm::ParameterSet const& hPSet,
00049 edm::ParameterSet const& fPSet );
00050
00051 virtual ~SiStripBaseCondObjDQM(){};
00052
00053 virtual void getActiveDetIds(const edm::EventSetup & eSetup)=0;
00054
00055 void analysis(const edm::EventSetup & eSetup_);
00056 void analysisOnDemand(const edm::EventSetup & eSetup_, uint32_t detIdOnDemand);
00057 void analysisOnDemand(const edm::EventSetup & eSetup_, const std::vector<uint32_t>& detIdsOnDemand);
00058 void analysisOnDemand(const edm::EventSetup & eSetup_,
00059 std::string requestedSubDetector,
00060 uint32_t requestedSide,
00061 uint32_t requestedLayer);
00062
00063
00064 std::vector<uint32_t> getCabledModules();
00065 void selectModules(std::vector<uint32_t> & detIds_);
00066
00067
00068
00069 virtual unsigned long long getCache(const edm::EventSetup & eSetup_)=0;
00070 virtual void getConditionObject(const edm::EventSetup & eSetup_)=0;
00071
00072 virtual void end();
00073
00074 protected:
00075
00076 struct ModMEs{
00077 ModMEs():ProfileDistr(0),
00078 CumulDistr(0),
00079 SummaryOfProfileDistr(0),
00080 SummaryOfCumulDistr(0),
00081 SummaryDistr(0){;}
00082 MonitorElement* ProfileDistr;
00083 MonitorElement* CumulDistr;
00084 MonitorElement* SummaryOfProfileDistr;
00085 MonitorElement* SummaryOfCumulDistr;
00086 MonitorElement* SummaryDistr;
00087 };
00088
00089
00090 void getModMEs(ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00091 void getSummaryMEs(ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00092 std::pair<std::string,uint32_t> getLayerNameAndId(const uint32_t& detId_, const TrackerTopology* tTopo);
00093 std::pair<std::string,uint32_t> getStringNameAndId(const uint32_t& detId_, const TrackerTopology* tTopo);
00094 std::vector<uint32_t> GetSameLayerDetId(const std::vector<uint32_t>& activeDetIds, uint32_t selDetId, const TrackerTopology* tTopo);
00095
00096
00097 virtual void fillModMEs(const std::vector<uint32_t> & selectedDetIds, const edm::EventSetup& es);
00098 virtual void fillSummaryMEs(const std::vector<uint32_t> & selectedDetIds, const edm::EventSetup& es);
00099 virtual void fillMEsForDet(const ModMEs& selModME_,uint32_t selDetId_, const TrackerTopology* tTopo)=0;
00100 virtual void fillMEsForLayer( uint32_t selDetId_, const TrackerTopology* tTopo)=0;
00101
00102
00103 void fillTkMap(const uint32_t& detid, const float& value);
00104
00105 SiStripDetInfoFileReader* reader;
00106
00107 const edm::EventSetup& eSetup_;
00108 edm::ParameterSet hPSet_;
00109 edm::ParameterSet fPSet_;
00110
00111 bool Mod_On_;
00112 bool HistoMaps_On_;
00113 bool SummaryOnLayerLevel_On_;
00114 bool SummaryOnStringLevel_On_;
00115 bool GrandSummary_On_;
00116 double minValue, maxValue;
00117 std::vector<int> tkMapScaler;
00118
00119
00120
00121 std::string CondObj_fillId_;
00122 std::string CondObj_name_;
00123
00124 std::map<uint32_t, ModMEs> ModMEsMap_;
00125 std::map<uint32_t, ModMEs> SummaryMEsMap_;
00126 std::vector<uint32_t> activeDetIds;
00127 std::vector<uint32_t> all_DetIds;
00128
00129 unsigned long long cacheID_memory;
00130 unsigned long long cacheID_current;
00131
00132 TkHistoMap* Tk_HM_;
00133 TkHistoMap* Tk_HM_H;
00134 TkHistoMap* Tk_HM_L;
00135 TrackerMap * tkMap;
00136
00137 private:
00138
00139 void bookProfileMEs(SiStripBaseCondObjDQM::ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00140 void bookCumulMEs(SiStripBaseCondObjDQM::ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00141 void bookSummaryProfileMEs(SiStripBaseCondObjDQM::ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00142 void bookSummaryCumulMEs(SiStripBaseCondObjDQM::ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00143 void bookSummaryMEs(SiStripBaseCondObjDQM::ModMEs& CondObj_ME, const uint32_t& detId_, const TrackerTopology* tTopo);
00144
00145 void bookTkMap(const std::string& TkMapname);
00146
00147 void saveTkMap(const std::string& TkMapname, double minValue, double maxValue);
00148
00149 std::vector<uint32_t> ModulesToBeExcluded_;
00150 std::vector<uint32_t> ModulesToBeIncluded_;
00151 std::vector<std::string> SubDetectorsToBeExcluded_;
00152
00153 edm::ESHandle<SiStripDetCabling> detCablingHandle_;
00154
00155 std::string condDataMonitoringMode_;
00156
00157 SiStripHistoId hidmanager;
00158 SiStripFolderOrganizer folder_organizer;
00159 DQMStore* dqmStore_;
00160
00161 };
00162
00163
00164 #endif