CMS 3D CMS Logo

SiStripMonitorDigi.h
Go to the documentation of this file.
1 #ifndef SiStripMonitorDigi_SiStripMonitorDigi_h
2 #define SiStripMonitorDigi_SiStripMonitorDigi_h
3 // -*- C++ -*-
4 // Package: SiStripMonitorDigi
5 // Class : SiStripMonitorDigi
9 // Original Author: dkcira
10 // Created: Sat Feb 4 20:49:51 CET 2006
11 #include <memory>
24 
26 
27 class SiStripDCSStatus;
28 class SiStripDetCabling;
29 
30 class EventWithHistory;
33 
34 class SiStripMonitorDigi : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
35 public:
36  explicit SiStripMonitorDigi(const edm::ParameterSet&);
37  ~SiStripMonitorDigi() override;
38  void analyze(const edm::Event&, const edm::EventSetup&) override;
39  void beginLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&) override;
40  void endLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&) override;
41  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
42  void dqmBeginRun(const edm::Run& r, const edm::EventSetup& c) override;
43 
45 
46  struct ModMEs {
53  };
54 
55  struct LayerMEs {
68  };
69 
70  struct SubDetMEs {
71  int totNDigis;
75 
76  //int totApvShots;
77  std::vector<APVShot> SubDetApvShots;
83  };
84 
85  struct DigiFailureMEs {
88  };
89 
91 
92 private:
93  void createMEs(DQMStore::IBooker& ibooker, const edm::EventSetup& es);
94  void ResetModuleMEs(uint32_t idet);
95  void bookLayer(DQMStore::IBooker& ibooker);
96  MonitorElement* bookMETrend(DQMStore::IBooker& ibooker, const char* ParameterSetLabel, const char* HistoName);
97  MonitorElement* bookME1D(DQMStore::IBooker& ibooker, const char* ParameterSetLabel, const char* HistoName);
98  void bookTrendMEs(DQMStore::IBooker& ibooker, const TString& name, int32_t layer, uint32_t id, std::string flag);
100  void fillTrend(MonitorElement* me, float value, float timeinorbit);
101  inline void fillME(MonitorElement* ME, float value1) {
102  if (ME != nullptr)
103  ME->Fill(value1);
104  }
105  inline void fillME(MonitorElement* ME, float value1, float value2) {
106  if (ME != nullptr)
107  ME->Fill(value1, value2);
108  }
109  inline void fillME(MonitorElement* ME, float value1, float value2, float value3) {
110  if (ME != nullptr)
111  ME->Fill(value1, value2, value3);
112  }
113  inline void fillME(MonitorElement* ME, float value1, float value2, float value3, float value4) {
114  if (ME != nullptr)
115  ME->Fill(value1, value2, value3, value4);
116  }
117  bool AllDigis(const edm::EventSetup& es);
118 
119  void createModuleMEs(DQMStore::IBooker& ibooker, ModMEs& mod_single, uint32_t detid);
120  void createLayerMEs(DQMStore::IBooker& ibooker, std::string label, int ndet);
121  void createSubDetMEs(DQMStore::IBooker& ibooker, std::string label);
122  void createSubDetTH2(DQMStore::IBooker& ibooker, std::string label);
123  int getDigiSourceIndex(uint32_t id);
124  void AddApvShotsToSubDet(const std::vector<APVShot>&, std::vector<APVShot>&);
125  void FillApvShotsMap(TkHistoMap*, const std::vector<APVShot>&, uint32_t id, int);
126 
127 private:
129  std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > > digiProducerTokenList;
130  std::vector<edm::InputTag> digiProducerList;
131  std::map<uint32_t, ModMEs>
132  DigiMEs; // uint32_t me_type: 1=#digis/module; 2=adcs of hottest strip/module; 3= adcs of coolest strips/module.
135 
136  std::map<std::string, std::vector<uint32_t> > LayerDetMap;
137  std::map<std::string, LayerMEs> LayerMEsMap;
138  std::map<std::string, SubDetMEs> SubDetMEsMap;
139  std::map<std::string, std::string> SubDetPhasePartMap;
141 
142  TString name;
144  std::map<std::pair<std::string, int32_t>, bool> DetectedLayers;
145  std::vector<const edm::DetSetVector<SiStripDigi>*> digi_detset_handles;
146 
147  unsigned long long m_cacheID_;
149  std::vector<uint32_t> ModulesToBeExcluded_;
150 
151  //Global MEs to monitor APV Shots properties
154 
156 
160 
162 
171 
178 
182 
184 
190 
197 
198  // int xLumiProf;
204  int nFedTIB;
205  int nFedTIDp;
206  int nFedTIDm;
207  int nFedTECp;
208  int nFedTECm;
209  int nFedTOB;
210  // int nFEDConnected;
211 
212  bool Mod_On_;
213 
218 
220 
222 
225 
229 
231 };
232 #endif
bool AllDigis(const edm::EventSetup &es)
void ResetModuleMEs(uint32_t idet)
std::map< std::string, LayerMEs > LayerMEsMap
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
MonitorElement * LayerNumberOfDigisTrend
std::map< std::pair< std::string, int32_t >, bool > DetectedLayers
MonitorElement * LayerStripOccupancy
MonitorElement * LayerADCsHottestStrip
edm::InputTag historyProducer_
MonitorElement * LayerADCsHottestStripTrend
std::unique_ptr< TkHistoMap > tkmapNstripApvshot
MonitorElement * NApvShotsGlobalProf
std::map< uint32_t, ModMEs > DigiMEs
std::map< std::string, std::string > SubDetPhasePartMap
MonitorElement * MedianChargeApvShotsGlobal
MonitorElement * StripMultiplicityApvShotsGlobal
std::unique_ptr< TkHistoMap > tkmapMedianChargeApvshots
MonitorElement * LayerNumberOfDigisProfile
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
std::vector< APVShot > SubDetApvShots
unsigned long long m_cacheID_
void Fill(long long x)
MonitorElement * SubDetNApvShotsNApvTH1
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
Definition: ME.h:11
char const * label
MonitorElement * NumberOfDigisPerStrip
MonitorElement * ADCsCoolestStrip
SiStripDCSStatus * dcsStatus_
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
MonitorElement * LayerADCsCoolestStripTrend
MonitorElement * SubDetNStripsApvShotsTH1
DigiFailureMEs digiFailureMEs
edm::EDGetTokenT< EventWithHistory > historyProducerToken_
void fillME(MonitorElement *ME, float value1)
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
void fillME(MonitorElement *ME, float value1, float value2, float value3, float value4)
MonitorElement * NApvApvShotsGlobal
void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
Definition: value.py:1
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * ADCsHottestStrip
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label, int ndet)
void fillTrend(MonitorElement *me, float value, float timeinorbit)
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > gtEvmToken_
MonitorElement * NApvShotsGlobal
std::vector< edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > > digiProducerTokenList
MonitorElement * LayerDigiADCProfile
std::vector< const edm::DetSetVector< SiStripDigi > * > digi_detset_handles
int getDigiSourceIndex(uint32_t id)
void fillME(MonitorElement *ME, float value1, float value2, float value3)
void analyze(const edm::Event &, const edm::EventSetup &) override
SiStripMonitorDigi(const edm::ParameterSet &)
edm::InputTag apvPhaseProducer_
std::unique_ptr< TkHistoMap > tkmapNApvshots
void fillME(MonitorElement *ME, float value1, float value2)
MonitorElement * SubDetChargeMedianApvShotsTH1
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
MonitorElement * bookMETrend(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
std::map< std::string, std::vector< uint32_t > > LayerDetMap
std::string topFolderName_
void bookLayer(DQMStore::IBooker &ibooker)
edm::ParameterSet conf_
std::string HistoName
std::unique_ptr< TkHistoMap > tkmapdigi
std::vector< edm::InputTag > digiProducerList
edm::EDGetTokenT< APVCyclePhaseCollection > apvPhaseProducerToken_
MonitorElement * LayerStripOccupancyTrend
MonitorElement * LayerADCsCoolestStrip
std::vector< uint32_t > ModulesToBeExcluded_
void AddApvShotsToSubDet(const std::vector< APVShot > &, std::vector< APVShot > &)
SiStripFolderOrganizer folder_organizer
MonitorElement * ShotsVsTimeApvShotsGlobal
void fillDigiADCsMEs(int value, std::string name)
void FillApvShotsMap(TkHistoMap *, const std::vector< APVShot > &, uint32_t id, int)
MonitorElement * NumberOfFEDDigis
void createSubDetTH2(DQMStore::IBooker &ibooker, std::string label)
void bookTrendMEs(DQMStore::IBooker &ibooker, const TString &name, int32_t layer, uint32_t id, std::string flag)
void createModuleMEs(DQMStore::IBooker &ibooker, ModMEs &mod_single, uint32_t detid)
Definition: Run.h:45