CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes
SiPixelPhase1Summary Class Reference

#include <SiPixelPhase1Summary.h>

Inheritance diagram for SiPixelPhase1Summary:
DQMEDHarvester edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SiPixelPhase1Summary (const edm::ParameterSet &conf)
 
 ~SiPixelPhase1Summary () override
 
- Public Member Functions inherited from DQMEDHarvester
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginJob () override
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &) override
 
virtual void dqmAnalyze (DQMStore::IBooker &, DQMStore::IGetter &, edm::Event const &, edm::EventSetup const &)
 
 DQMEDHarvester ()
 
 DQMEDHarvester (edm::ParameterSet const &iConfig)
 
virtual void dqmEndRun (DQMStore::IBooker &, DQMStore::IGetter &, edm::Run const &, edm::EventSetup const &)
 
void endJob () final
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &es) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &es) final
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void beginRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 
void dqmEndJob (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter) override
 
void dqmEndLuminosityBlock (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c) override
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Protected Attributes

bool runOnEndJob_
 
bool runOnEndLumi_
 
std::string topFolderName_
 
- Protected Attributes inherited from DQMEDHarvester
DQMStoredqmstore_
 
edm::GetterOfProducts< DQMTokenlumimegetter_
 
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::GetterOfProducts< DQMTokenrunmegetter_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Private Types

enum  trendPlots {
  offline, fpix, bpix, layer1,
  layer2, layer3, layer4, ring1,
  ring2
}
 

Private Member Functions

void bookSummaries (DQMStore::IBooker &iBooker)
 
void bookTrendPlots (DQMStore::IBooker &iBooker)
 
void fillSummaries (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
 
void fillTrendPlots (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumiSeg=0)
 

Private Attributes

edm::ParameterSet conf_
 
MonitorElementdeadROCSummary
 
std::vector< double > deadRocThresholds_
 
std::map< trendPlots, MonitorElement * > deadROCTrends_
 
bool firstLumi
 
std::map< trendPlots, MonitorElement * > ineffROCTrends_
 
MonitorElementreportSummary
 
std::map< std::string, MonitorElement * > residuals_
 
edm::InputTag src_
 
std::map< std::string, MonitorElement * > summaryMap_
 
std::map< std::string, std::string > summaryPlotName_
 

Additional Inherited Members

- Public Types inherited from DQMEDHarvester
typedef dqm::harvesting::DQMStore DQMStore
 
typedef dqm::harvesting::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Description: Summary map generation for the Phase 1 pixel

Usage: <usage>

Definition at line 40 of file SiPixelPhase1Summary.h.

Member Enumeration Documentation

◆ trendPlots

Enumerator
offline 
fpix 
bpix 
layer1 
layer2 
layer3 
layer4 
ring1 
ring2 

Definition at line 64 of file SiPixelPhase1Summary.h.

Constructor & Destructor Documentation

◆ SiPixelPhase1Summary()

SiPixelPhase1Summary::SiPixelPhase1Summary ( const edm::ParameterSet conf)
explicit

Definition at line 49 of file SiPixelPhase1Summary.cc.

49  : conf_(iConfig), firstLumi(true) {
50  LogInfo("PixelDQM") << "SiPixelPhase1Summary::SiPixelPhase1Summary: Got DQM BackEnd interface" << endl;
51  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
52  runOnEndLumi_ = conf_.getParameter<bool>("RunOnEndLumi");
53  runOnEndJob_ = conf_.getParameter<bool>("RunOnEndJob");
54 
55  std::vector<edm::ParameterSet> mapPSets = conf_.getParameter<std::vector<edm::ParameterSet> >("SummaryMaps");
56 
57  //Go through the configuration file and add in
58  for (auto const& mapPSet : mapPSets) {
59  summaryPlotName_[mapPSet.getParameter<std::string>("MapName")] = mapPSet.getParameter<std::string>("MapHist");
60  }
61  deadRocThresholds_ = conf_.getParameter<std::vector<double> >("DeadROCErrorThreshold");
62 }

References conf_, deadRocThresholds_, edm::ParameterSet::getParameter(), runOnEndJob_, runOnEndLumi_, AlCaHLTBitMon_QueryRunRegistry::string, summaryPlotName_, and topFolderName_.

◆ ~SiPixelPhase1Summary()

SiPixelPhase1Summary::~SiPixelPhase1Summary ( )
override

Definition at line 64 of file SiPixelPhase1Summary.cc.

64  {
65  // do anything here that needs to be done at desctruction time
66  // (e.g. close files, deallocate resources etc.)
67  LogInfo("PixelDQM") << "SiPixelPhase1Summary::~SiPixelPhase1Summary: Destructor" << endl;
68 }

Member Function Documentation

◆ beginRun()

void SiPixelPhase1Summary::beginRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
overrideprotected

Definition at line 70 of file SiPixelPhase1Summary.cc.

70 {}

◆ bookSummaries()

void SiPixelPhase1Summary::bookSummaries ( DQMStore::IBooker iBooker)
private

Definition at line 112 of file SiPixelPhase1Summary.cc.

112  {
113  iBooker.cd();
114 
115  std::vector<std::string> xAxisLabels_ = {"BMO",
116  "BMI",
117  "BPO ",
118  "BPI",
119  "HCMO_1",
120  "HCMO_2",
121  "HCMI_1",
122  "HCMI_2",
123  "HCPO_1",
124  "HCPO_2",
125  "HCPI_1",
126  "HCPI_2"}; // why not having a global variable !?!?!?!
127  std::vector<std::string> yAxisLabels_ = {
128  "1",
129  "2",
130  "3",
131  "4"}; // why not having a global variable ?!?!?!!? - I originally did, but was told not to by David Lange!
132 
133  iBooker.setCurrentFolder("PixelPhase1/Summary");
134  //Book the summary plots for the variables as described in the config file
135  for (auto mapInfo : summaryPlotName_) {
136  auto name = mapInfo.first;
137  summaryMap_[name] = iBooker.book2D("pixel" + name + "Summary", "Pixel " + name + " Summary", 12, 0, 12, 4, 0, 4);
138  }
139  //Make the new 6 bin ROC summary
140  deadROCSummary = iBooker.book2D("deadROCSummary", "Percentage of dead ROCs per layer/ring", 2, 0, 2, 4, 0, 4);
141  std::vector<std::string> xAxisLabelsReduced_ = {"Barrel", "Forward"};
142  deadROCSummary->setAxisTitle("Subdetector", 1);
143  for (unsigned int i = 0; i < xAxisLabelsReduced_.size(); i++) {
144  deadROCSummary->setBinLabel(i + 1, xAxisLabelsReduced_[i]);
145  }
146 
147  //New residual plots for the PXBarrel separated by inner and outer modules per layer
148  iBooker.setCurrentFolder("PixelPhase1/Tracks/PXBarrel");
149  for (std::string layer : {"1", "2", "3", "4"}) {
150  float mean_range = 100.;
151  float rms_range = 200.;
152  if (layer == "1") {
153  mean_range = 200.;
154  rms_range = 1000.;
155  }
156  residuals_["residual_mean_x_Inner_PXLayer_" + layer] =
157  iBooker.book1D("residual_mean_x_Inner_PXLayer_" + layer,
158  "Mean Track Residuals X Inner Modules for Layer " + layer + ";mean(x_rec-x_pred)[#mum]",
159  100,
160  -1 * mean_range,
161  mean_range);
162  residuals_["residual_mean_x_Outer_PXLayer_" + layer] =
163  iBooker.book1D("residual_mean_x_Outer_PXLayer_" + layer,
164  "Mean Track Residuals X Outer Modules for Layer " + layer + ";mean(x_rec-x_pred)[#mum]",
165  100,
166  -1 * mean_range,
167  mean_range);
168  residuals_["residual_mean_y_Inner_PXLayer_" + layer] =
169  iBooker.book1D("residual_mean_y_Inner_PXLayer_" + layer,
170  "Mean Track Residuals Y Inner Modules for Layer " + layer + ";mean(y_rec-y_pred)[#mum]",
171  100,
172  -1 * mean_range,
173  mean_range);
174  residuals_["residual_mean_y_Outer_PXLayer_" + layer] =
175  iBooker.book1D("residual_mean_y_Outer_PXLayer_" + layer,
176  "Mean Track Residuals Y Outer Modules for Layer " + layer + ";mean(y_rec-y_pred)[#mum]",
177  100,
178  -1 * mean_range,
179  mean_range);
180 
181  residuals_["residual_rms_x_Inner_PXLayer_" + layer] =
182  iBooker.book1D("residual_rms_x_Inner_PXLayer_" + layer,
183  "RMS of Track Residuals X Inner Modules for Layer " + layer + ";rms(x_rec-x_pred)[#mum]",
184  100,
185  0.,
186  rms_range);
187  residuals_["residual_rms_x_Outer_PXLayer_" + layer] =
188  iBooker.book1D("residual_rms_x_Outer_PXLayer_" + layer,
189  "RMS of Track Residuals X Outer Modules for Layer " + layer + ";rms(x_rec-x_pred)[#mum]",
190  100,
191  0.,
192  rms_range);
193  residuals_["residual_rms_y_Inner_PXLayer_" + layer] =
194  iBooker.book1D("residual_rms_y_Inner_PXLayer_" + layer,
195  "RMS of Track Residuals Y Inner Modules for Layer " + layer + ";rms(y_rec-y_pred)[#mum]",
196  100,
197  0.,
198  rms_range);
199  residuals_["residual_rms_y_Outer_PXLayer_" + layer] =
200  iBooker.book1D("residual_rms_y_Outer_PXLayer_" + layer,
201  "RMS of Track Residuals Y Outer Modules for Layer " + layer + ";rms(y_rec-y_pred)[#mum]",
202  100,
203  0.,
204  rms_range);
205  }
206 
207  //New residual plots for the PXForward separated by inner and outer modules
208  iBooker.setCurrentFolder("PixelPhase1/Tracks/PXForward");
209  residuals_["residual_mean_x_Inner"] = iBooker.book1D(
210  "residual_mean_x_Inner", "Mean Track Residuals X Inner Modules;mean(x_rec-x_pred)[#mum]", 100, -100., 100.);
211  residuals_["residual_mean_x_Outer"] = iBooker.book1D(
212  "residual_mean_x_Outer", "Mean Track Residuals X Outer Modules;mean(x_rec-x_pred)[#mum]", 100, -100., 100.);
213  residuals_["residual_mean_y_Inner"] = iBooker.book1D(
214  "residual_mean_y_Inner", "Mean Track Residuals Y Inner Modules;mean(y_rec-y_pred)[#mum]", 100, -100., 100.);
215  residuals_["residual_mean_y_Outer"] = iBooker.book1D(
216  "residual_mean_y_Outer", "Mean Track Residuals Y Outer Modules;mean(y_rec-y_pred)[#mum]", 100, -100., 100.);
217 
218  residuals_["residual_rms_x_Inner"] = iBooker.book1D(
219  "residual_rms_x_Inner", "RMS of Track Residuals X Inner Modules;rms(x_rec-x_pred)[#mum]", 100, 0., 200.);
220  residuals_["residual_rms_x_Outer"] = iBooker.book1D(
221  "residual_rms_x_Outer", "RMS of Track Residuals X Outer Modules;rms(x_rec-x_pred)[#mum]", 100, 0., 200.);
222  residuals_["residual_rms_y_Inner"] = iBooker.book1D(
223  "residual_rms_y_Inner", "RMS of Track Residuals Y Inner Modules;rms(y_rec-y_pred)[#mum]", 100, 0., 200.);
224  residuals_["residual_rms_y_Outer"] = iBooker.book1D(
225  "residual_rms_y_Outer", "RMS of Track Residuals Y Outer Modules;rms(y_rec-y_pred)[#mum]", 100, 0., 200.);
226 
227  //New residual plots for the PXForward separated by positive and negative side
228  iBooker.setCurrentFolder("PixelPhase1/Tracks/PXForward");
229  residuals_["residual_mean_x_pos"] = iBooker.book1D(
230  "residual_mean_x_pos", "Mean Track Residuals X pos. Side;mean(x_rec-x_pred)[#mum]", 100, -100., 100.);
231  residuals_["residual_mean_x_neg"] = iBooker.book1D(
232  "residual_mean_x_neg", "Mean Track Residuals X neg. Side;mean(x_rec-x_pred)[#mum]", 100, -100., 100.);
233  residuals_["residual_mean_y_pos"] = iBooker.book1D(
234  "residual_mean_y_pos", "Mean Track Residuals Y pos. Side;mean(y_rec-y_pred)[#mum]", 100, -100., 100.);
235  residuals_["residual_mean_y_neg"] = iBooker.book1D(
236  "residual_mean_y_neg", "Mean Track Residuals Y neg. Side;mean(y_rec-y_pred)[#mum]", 100, -100., 100.);
237 
238  residuals_["residual_rms_x_pos"] =
239  iBooker.book1D("residual_rms_x_pos", "RMS of Track Residuals X pos. Side;rms(x_rec-x_pred)[#mum]", 100, 0., 200.);
240  residuals_["residual_rms_x_neg"] =
241  iBooker.book1D("residual_rms_x_neg", "RMS of Track Residuals X neg. Side;rms(x_rec-x_pred)[#mum]", 100, 0., 200.);
242  residuals_["residual_rms_y_pos"] =
243  iBooker.book1D("residual_rms_y_pos", "RMS of Track Residuals Y pos. Side;rms(y_rec-y_pred)[#mum]", 100, 0., 200.);
244  residuals_["residual_rms_y_neg"] =
245  iBooker.book1D("residual_rms_y_neg", "RMS of Track Residuals Y neg. Side;rms(y_rec-y_pred)[#mum]", 100, 0., 200.);
246 
247  //Book the summary plot
248  iBooker.setCurrentFolder("PixelPhase1/EventInfo");
249 
250  if (runOnEndLumi_) {
251  //New less granular summary plot - this is currently only done online
252  summaryMap_["Grand"] = iBooker.book2D("reportSummaryMap", "Pixel Summary Map", 2, 0, 2, 4, 0, 4);
253  summaryMap_["Grand"]->setAxisTitle("Subdetector", 1);
254  for (unsigned int i = 0; i < xAxisLabelsReduced_.size(); i++) {
255  summaryMap_["Grand"]->setBinLabel(i + 1, xAxisLabelsReduced_[i]);
256  for (unsigned int j = 0; j < 4; j++) {
257  summaryMap_["Grand"]->Fill(i, j, -1);
258  }
259  }
260  } else {
261  //Book the original summary plot, for now juts doing this one offline.
262  summaryMap_["Grand"] = iBooker.book2D("reportSummaryMap", "Pixel Summary Map", 12, 0, 12, 4, 0, 4);
263  }
264 
265  reportSummary = iBooker.bookFloat("reportSummary");
266 
267  //Now set up axis and bin labels
268  for (auto summaryMapEntry : summaryMap_) {
269  if (summaryMapEntry.first == "Grand")
270  continue;
271  auto summaryMap = summaryMapEntry.second;
272  for (unsigned int i = 0; i < xAxisLabels_.size(); i++) {
273  summaryMap->setBinLabel(i + 1, xAxisLabels_[i], 1);
274  }
275  for (unsigned int i = 0; i < yAxisLabels_.size(); i++) {
276  summaryMap->setBinLabel(i + 1, yAxisLabels_[i], 2);
277  }
278  summaryMap->setAxisTitle("Subdetector", 1);
279  summaryMap->setAxisTitle("Layer/disk", 2);
280  for (int i = 0; i < summaryMap->getTH1()->GetXaxis()->GetNbins(); i++) { // !??!?!? xAxisLabels_.size() ?!?!
281  for (int j = 0; j < summaryMap->getTH1()->GetYaxis()->GetNbins(); j++) { // !??!?!? yAxisLabels_.size() ?!?!?!
282  summaryMap->Fill(i, j, -1.);
283  }
284  }
285  }
286  reportSummary->Fill(-1.);
287 
288  //Reset the iBooker
289  iBooker.setCurrentFolder("PixelPhase1/");
290 }

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookFloat(), dqm::implementation::NavigatorBase::cd(), deadROCSummary, dqm::impl::MonitorElement::Fill(), mps_fire::i, dqmiolumiharvest::j, Skims_PA_cff::name, reportSummary, residuals_, runOnEndLumi_, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, summaryMap_, and summaryPlotName_.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

◆ bookTrendPlots()

void SiPixelPhase1Summary::bookTrendPlots ( DQMStore::IBooker iBooker)
private

Definition at line 295 of file SiPixelPhase1Summary.cc.

295  {
296  //We need different plots depending on if we're online (runOnEndLumi) or offline (!runOnEndLumi)
297  iBooker.setCurrentFolder("PixelPhase1/");
298  std::vector<string> binAxisLabels = {"Layer 1", "Layer 2", "Layer 3", "Layer 4", "Ring 1", "Ring 2"};
299  if (runOnEndLumi_) {
300  std::vector<trendPlots> histoOrder = {layer1, layer2, layer3, layer4, ring1, ring2};
301  std::vector<string> varName = {"Layer_1", "Layer_2", "Layer_3", "Layer_4", "Ring_1", "Ring_2"};
302  std::vector<int> yMax = {1536, 3584, 5632, 8192, 4224, 6528};
303  for (unsigned int i = 0; i < histoOrder.size(); i++) {
304  string varNameStr = "deadRocTrend" + varName[i];
305  string varTitle = binAxisLabels[i] + " dead ROC trend";
306  deadROCTrends_[histoOrder[i]] = iBooker.bookProfile(varNameStr, varTitle, 500, 0., 5000, 0., yMax[i], "");
307  varNameStr = "ineffRocTrend" + varName[i];
308  varTitle = binAxisLabels[i] + " inefficient ROC trend";
309  ineffROCTrends_[histoOrder[i]] = iBooker.bookProfile(varNameStr, varTitle, 500, 0., 5000, 0., yMax[i], "");
310  deadROCTrends_[histoOrder[i]]->setAxisTitle("Lumisection", 1);
311  ineffROCTrends_[histoOrder[i]]->setAxisTitle("Lumisection", 1);
312  }
313  } else {
314  deadROCTrends_[offline] = iBooker.bookProfile("deadRocTotal", "N dead ROCs", 6, 0., 6, 0., 8192, "");
315  ineffROCTrends_[offline] = iBooker.bookProfile("ineffRocTotal", "N inefficient ROCs", 6, 0., 6, 0., 8192, "");
316  deadROCTrends_[offline]->setAxisTitle("Subdetector", 1);
317  ineffROCTrends_[offline]->setAxisTitle("Subdetector", 1);
318  for (unsigned int i = 1; i <= binAxisLabels.size(); i++) {
319  deadROCTrends_[offline]->setBinLabel(i, binAxisLabels[i - 1]);
320  ineffROCTrends_[offline]->setBinLabel(i, binAxisLabels[i - 1]);
321  }
322  }
323 }

References dqm::implementation::IBooker::bookProfile(), deadROCTrends_, mps_fire::i, ineffROCTrends_, layer1, layer2, layer3, layer4, offline, ring1, ring2, runOnEndLumi_, dqm::implementation::NavigatorBase::setCurrentFolder(), and multiplicitycorr_cfi::yMax.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

◆ dqmEndJob()

void SiPixelPhase1Summary::dqmEndJob ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter 
)
overrideprotectedvirtual

Implements DQMEDHarvester.

Definition at line 94 of file SiPixelPhase1Summary.cc.

94  {
95  if (firstLumi) { //Book the plots in the (maybe possible?) case that they aren't booked in the dqmEndLuminosityBlock method
96  bookSummaries(iBooker);
97  bookTrendPlots(iBooker);
98  firstLumi = false;
99  }
100  if (runOnEndJob_) {
101  if (!runOnEndLumi_)
103  iBooker,
104  iGetter); //If we're filling these plots at the end lumi step, it doesn't really make sense to also do them at the end job
105  fillSummaries(iBooker, iGetter);
106  }
107 }

References bookSummaries(), bookTrendPlots(), fillSummaries(), fillTrendPlots(), firstLumi, runOnEndJob_, and runOnEndLumi_.

◆ dqmEndLuminosityBlock()

void SiPixelPhase1Summary::dqmEndLuminosityBlock ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

Reimplemented from DQMEDHarvester.

Definition at line 72 of file SiPixelPhase1Summary.cc.

75  {
76  if (firstLumi) {
77  bookSummaries(iBooker);
78  bookTrendPlots(iBooker);
79  firstLumi = false;
80  }
81 
82  if (runOnEndLumi_) {
83  int lumiSec = lumiSeg.id().luminosityBlock();
84  fillTrendPlots(iBooker, iGetter, lumiSec);
85  fillSummaries(iBooker, iGetter);
86  }
87 
88  // iBooker.cd();
89 }

References bookSummaries(), bookTrendPlots(), fillSummaries(), fillTrendPlots(), firstLumi, edm::LuminosityBlockBase::id(), edm::LuminosityBlockID::luminosityBlock(), and runOnEndLumi_.

◆ fillSummaries()

void SiPixelPhase1Summary::fillSummaries ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter 
)
private

Definition at line 328 of file SiPixelPhase1Summary.cc.

328  {
329  //Firstly, we will fill the regular summary maps.
330  for (auto mapInfo : summaryPlotName_) {
331  auto name = mapInfo.first;
332  std::ostringstream histNameStream;
333  std::string histName;
334 
335  for (int i = 0; i < 12; i++) { // !??!?!? xAxisLabels_.size() ?!?!
336  for (int j = 0; j < 4; j++) { // !??!?!? yAxisLabels_.size() ?!?!?!
337  if (i > 3 && j == 3)
338  continue;
339  bool minus = i < 2 || (i > 3 && i < 8); // bleah !
340  int iOver2 = floor(i / 2.);
341  bool outer = (i > 3) ? iOver2 % 2 == 0 : i % 2 == 0;
342  //Complicated expression that creates the name of the histogram we are interested in.
343  histNameStream.str("");
344  histNameStream << topFolderName_.c_str() << "PX" << ((i > 3) ? "Forward" : "Barrel") << "/"
345  << ((i > 3) ? "HalfCylinder" : "Shell") << "_" << (minus ? "m" : "p") << ((outer) ? "O" : "I")
346  << "/" << ((i > 3) ? ((i % 2 == 0) ? "PXRing_1/" : "PXRing_2/") : "")
347  << summaryPlotName_[name].c_str() << "_PX" << ((i > 3) ? "Disk" : "Layer") << "_"
348  << ((i > 3) ? ((minus) ? "-" : "+") : "") << (j + 1);
349  histName = histNameStream.str();
350  MonitorElement* me = iGetter.get(histName);
351 
352  if (!me) {
353  edm::LogWarning("SiPixelPhase1Summary") << "ME " << histName << " is not available !!";
354  continue; // Ignore non-existing MEs, as this can cause the whole thing to crash
355  }
356 
357  if (summaryMap_[name] == nullptr) {
358  edm::LogWarning("SiPixelPhase1Summary") << "Summary map " << name << " is not available !!";
359  continue; // Based on reported errors it seems possible that we're trying to access a non-existant summary map, so if the map doesn't exist but we're trying to access it here we'll skip it instead.
360  }
361  if (!(me->getQReports()).empty())
362  summaryMap_[name]->setBinContent(i + 1, j + 1, (me->getQReports())[0]->getQTresult());
363  else
364  summaryMap_[name]->setBinContent(i + 1, j + 1, -1);
365  }
366  }
367  }
368 
369  //Fill the dead ROC summary
370  std::vector<trendPlots> trendOrder = {layer1, layer2, layer3, layer4, ring1, ring2};
371  std::vector<int> nRocsPerTrend = {1536, 3584, 5632, 8192, 4224, 6528};
372  for (unsigned int i = 0; i < trendOrder.size(); i++) {
373  int xBin = i < 4 ? 1 : 2;
374  int yBin = i % 4 + 1;
375  float nROCs = 0.;
376  if (runOnEndLumi_) { //Online case
377  TH1* tempProfile = deadROCTrends_[trendOrder[i]]->getTH1();
378  nROCs = tempProfile->GetBinContent(tempProfile->FindLastBinAbove());
379  } else { //Offline case
380  TH1* tempProfile = deadROCTrends_[offline]->getTH1();
381  nROCs = tempProfile->GetBinContent(i + 1);
382  }
383  deadROCSummary->setBinContent(xBin, yBin, nROCs / nRocsPerTrend[i]);
384  }
385 
386  //Fill additional residuals plots
387  //PXBarrel
388 
389  constexpr int minHits = 30; //Miniminal number of hits needed for module to be filled in histograms
390 
391  for (std::string layer : {"1", "2", "3", "4"}) {
392  MonitorElement* me_x =
393  iGetter.get("PixelPhase1/Tracks/PXBarrel/residual_x_per_SignedModule_per_SignedLadder_PXLayer_" + layer);
394  MonitorElement* me_y =
395  iGetter.get("PixelPhase1/Tracks/PXBarrel/residual_y_per_SignedModule_per_SignedLadder_PXLayer_" + layer);
396 
397  for (int i = 1; i <= me_x->getNbinsY(); i++) {
398  if (i == (me_x->getNbinsY() / 2 + 1))
399  continue; //Middle bin of y axis is empty
400 
401  if (i <= me_x->getNbinsY() / 2) {
402  bool iAmInner = (i % 2 == 0); //Check whether current ladder is inner or outer ladder
403  if (iAmInner) {
404  for (int j : {1, 2, 3, 4, 6, 7, 8, 9}) {
405  if (me_x->getBinEntries(j, i) < minHits) //Fill only if number of hits is above threshold
406  continue;
407  residuals_["residual_mean_x_Inner_PXLayer_" + layer]->Fill(me_x->getBinContent(j, i) * 1e4);
408  residuals_["residual_mean_y_Inner_PXLayer_" + layer]->Fill(me_y->getBinContent(j, i) * 1e4);
409  residuals_["residual_rms_x_Inner_PXLayer_" + layer]->Fill(me_x->getBinError(j, i) * 1e4);
410  residuals_["residual_rms_y_Inner_PXLayer_" + layer]->Fill(me_y->getBinError(j, i) * 1e4);
411  }
412  } else {
413  for (int j : {1, 2, 3, 4, 6, 7, 8, 9}) {
414  if (me_x->getBinEntries(j, i) < minHits) //Fill only if number of hits is above threshold
415  continue;
416  residuals_["residual_mean_x_Outer_PXLayer_" + layer]->Fill(me_x->getBinContent(j, i) * 1e4);
417  residuals_["residual_mean_y_Outer_PXLayer_" + layer]->Fill(me_y->getBinContent(j, i) * 1e4);
418  residuals_["residual_rms_x_Outer_PXLayer_" + layer]->Fill(me_x->getBinError(j, i) * 1e4);
419  residuals_["residual_rms_y_Outer_PXLayer_" + layer]->Fill(me_y->getBinError(j, i) * 1e4);
420  }
421  }
422  } else {
423  bool iAmInner = (i % 2 == 1); //Check whether current ladder is inner or outer ladder
424  if (iAmInner) {
425  for (int j : {1, 2, 3, 4, 6, 7, 8, 9}) {
426  if (me_x->getBinEntries(j, i) < minHits) //Fill only if number of hits is above threshold
427  continue;
428  residuals_["residual_mean_x_Inner_PXLayer_" + layer]->Fill(me_x->getBinContent(j, i) * 1e4);
429  residuals_["residual_mean_y_Inner_PXLayer_" + layer]->Fill(me_y->getBinContent(j, i) * 1e4);
430  residuals_["residual_rms_x_Inner_PXLayer_" + layer]->Fill(me_x->getBinError(j, i) * 1e4);
431  residuals_["residual_rms_y_Inner_PXLayer_" + layer]->Fill(me_y->getBinError(j, i) * 1e4);
432  }
433  } else {
434  for (int j : {1, 2, 3, 4, 6, 7, 8, 9}) {
435  if (me_x->getBinEntries(j, i) < minHits) //Fill only if number of hits is above threshold
436  continue;
437  residuals_["residual_mean_x_Outer_PXLayer_" + layer]->Fill(me_x->getBinContent(j, i) * 1e4);
438  residuals_["residual_mean_y_Outer_PXLayer_" + layer]->Fill(me_y->getBinContent(j, i) * 1e4);
439  residuals_["residual_rms_x_Outer_PXLayer_" + layer]->Fill(me_x->getBinError(j, i) * 1e4);
440  residuals_["residual_rms_y_Outer_PXLayer_" + layer]->Fill(me_y->getBinError(j, i) * 1e4);
441  }
442  }
443  }
444  }
445  }
446 
447  //PXForward separating outer and inner modules as well as positive and negative side
448  for (std::string ring : {"1", "2"}) {
449  MonitorElement* me_x =
450  iGetter.get("PixelPhase1/Tracks/PXForward/residual_x_per_PXDisk_per_SignedBladePanel_PXRing_" + ring);
451  MonitorElement* me_y =
452  iGetter.get("PixelPhase1/Tracks/PXForward/residual_y_per_PXDisk_per_SignedBladePanel_PXRing_" + ring);
453  bool posSide = false;
454  for (int j = 1; j <= me_x->getNbinsX(); j++) {
455  if (j == 4)
456  continue; //fourth x-bin in profile plots is empty
457 
458  if (j == 5)
459  posSide = true; //change to postive side
460 
461  for (int i = 1; i <= me_x->getNbinsY(); i++) {
462  if (i == me_x->getNbinsY() / 2)
463  continue; //Middle bins of y axis is empty
464  if (i == (me_x->getNbinsY() / 2) + 1)
465  continue;
466  if (me_x->getBinEntries(j, i) < minHits) //Fill only if number of hits is above threshold
467  continue;
468 
469  bool iAmInner = (i % 2 == 0); //separate inner and outer modules
470  if (iAmInner) {
471  residuals_["residual_mean_x_Inner"]->Fill(me_x->getBinContent(j, i) * 1e4);
472  residuals_["residual_mean_y_Inner"]->Fill(me_y->getBinContent(j, i) * 1e4);
473  residuals_["residual_rms_x_Inner"]->Fill(me_x->getBinError(j, i) * 1e4);
474  residuals_["residual_rms_y_Inner"]->Fill(me_y->getBinError(j, i) * 1e4);
475  } else {
476  residuals_["residual_mean_x_Outer"]->Fill(me_x->getBinContent(j, i) * 1e4);
477  residuals_["residual_mean_y_Outer"]->Fill(me_y->getBinContent(j, i) * 1e4);
478  residuals_["residual_rms_x_Outer"]->Fill(me_x->getBinError(j, i) * 1e4);
479  residuals_["residual_rms_y_Outer"]->Fill(me_y->getBinError(j, i) * 1e4);
480  }
481 
482  if (!posSide) { //separate postive and negative side
483  residuals_["residual_mean_x_neg"]->Fill(me_x->getBinContent(j, i) * 1e4);
484  residuals_["residual_mean_y_neg"]->Fill(me_y->getBinContent(j, i) * 1e4);
485  residuals_["residual_rms_x_neg"]->Fill(me_x->getBinError(j, i) * 1e4);
486  residuals_["residual_rms_y_neg"]->Fill(me_y->getBinError(j, i) * 1e4);
487  } else {
488  residuals_["residual_mean_x_pos"]->Fill(me_x->getBinContent(j, i) * 1e4);
489  residuals_["residual_mean_y_pos"]->Fill(me_y->getBinContent(j, i) * 1e4);
490  residuals_["residual_rms_x_pos"]->Fill(me_x->getBinError(j, i) * 1e4);
491  residuals_["residual_rms_y_pos"]->Fill(me_y->getBinError(j, i) * 1e4);
492  }
493  }
494  }
495  }
496 
497  //Sum of non-negative bins for the reportSummary
498  float sumOfNonNegBins = 0.;
499  //Now we will use the other summary maps to create the overall map.
500  //For now we only want to do this offline
501  if (!runOnEndLumi_) {
502  for (int i = 0; i < 12; i++) { // !??!?!? xAxisLabels_.size() ?!?!
503  if (summaryMap_["Grand"] == nullptr) {
504  edm::LogWarning("SiPixelPhase1Summary") << "Grand summary does not exist!";
505  break;
506  }
507  for (int j = 0; j < 4; j++) { // !??!?!? yAxisLabels_.size() ?!?!?!
508  summaryMap_["Grand"]->setBinContent(
509  i + 1,
510  j + 1,
511  1); // This resets the map to be good. We only then set it to 0 if there has been a problem in one of the other summaries.
512  for (auto const& mapInfo : summaryPlotName_) { //Check summary maps
513  auto name = mapInfo.first;
514  if (summaryMap_[name] == nullptr) {
515  edm::LogWarning("SiPixelPhase1Summary") << "Summary " << name << " does not exist!";
516  continue;
517  }
518  if (summaryMap_["Grand"]->getBinContent(i + 1, j + 1) > summaryMap_[name]->getBinContent(i + 1, j + 1))
519  summaryMap_["Grand"]->setBinContent(i + 1, j + 1, summaryMap_[name]->getBinContent(i + 1, j + 1));
520  }
521  if (summaryMap_["Grand"]->getBinContent(i + 1, j + 1) > -0.1)
522  sumOfNonNegBins += summaryMap_["Grand"]->getBinContent(i + 1, j + 1);
523  }
524  }
525  reportSummary->Fill(sumOfNonNegBins / 40.); // The average of the 40 useful bins in the summary map.
526  }
527 
528  //Fill the new overall map
529  // if (!runOnEndLumi_) return;
530  else { //Do this for online only
531  for (int i = 0; i < 2; i++) {
532  if (summaryMap_["Grand"] == nullptr) {
533  edm::LogWarning("SiPixelPhase1Summary") << "Grand summary does not exist!";
534  break;
535  }
536  for (int j = 0; j < 4; j++) { // !??!?!? yAxisLabels_.size() ?!?!?!
537  //Ignore the bins without detectors in them
538  if (i == 1 && j > 1)
539  continue;
540  summaryMap_["Grand"]->setBinContent(
541  i + 1,
542  j + 1,
543  1); // This resets the map to be good. We only then set it to 0 if there has been a problem in one of the other summaries.
544  if (deadROCSummary->getBinContent(i + 1, j + 1) > deadRocThresholds_[i * 4 + j])
545  summaryMap_["Grand"]->setBinContent(i + 1, j + 1, 0);
546  sumOfNonNegBins += summaryMap_["Grand"]->getBinContent(i + 1, j + 1);
547  }
548  }
549  }
550 }

References deadROCSummary, deadRocThresholds_, deadROCTrends_, vertexPlots::e4, relativeConstraints::empty, dqm::impl::MonitorElement::Fill(), dqm::implementation::IGetter::get(), dqm::impl::MonitorElement::getBinContent(), dqm::impl::MonitorElement::getBinEntries(), dqm::impl::MonitorElement::getBinError(), dqm::impl::MonitorElement::getNbinsX(), dqm::impl::MonitorElement::getNbinsY(), mps_fire::i, dqmiolumiharvest::j, layer1, layer2, layer3, layer4, hlt_dqm_clientPB-live_cfg::me, reco_skim_cfg_mod::minHits, reco::HaloData::minus, Skims_PA_cff::name, offline, SurfaceOrientation::outer, reportSummary, residuals_, relativeConstraints::ring, ring1, ring2, runOnEndLumi_, dqm::impl::MonitorElement::setBinContent(), AlCaHLTBitMon_QueryRunRegistry::string, summaryMap_, summaryPlotName_, topFolderName_, photonAnalyzer_cfi::xBin, and photonAnalyzer_cfi::yBin.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

◆ fillTrendPlots()

void SiPixelPhase1Summary::fillTrendPlots ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
int  lumiSeg = 0 
)
private

Definition at line 555 of file SiPixelPhase1Summary.cc.

555  {
556  // If we're running in online mode and the lumi section is not modulo 10, return. Offline running always uses lumiSec=0, so it will pass this test.
557  if (lumiSec % 10 != 0)
558  return;
559 
560  if (runOnEndLumi_) {
561  MonitorElement* nClustersAll = iGetter.get("PixelPhase1/Phase1_MechanicalView/num_clusters_per_Lumisection_PXAll");
562  if (nClustersAll == nullptr) {
563  edm::LogWarning("SiPixelPhase1Summary") << "All pixel cluster trend plot not available!!";
564  return;
565  }
566  if (nClustersAll->getTH1()->GetBinContent(lumiSec) < 100)
567  return;
568  }
569 
570  std::string histName;
571 
572  //Find the total number of filled bins and hi efficiency bins
573  std::vector<trendPlots> trendOrder = {layer1, layer2, layer3, layer4, ring1, ring2};
574  std::vector<int> nFilledROCs(trendOrder.size(), 0);
575  std::vector<int> hiEffROCs(trendOrder.size(), 0);
576  std::vector<int> nRocsPerTrend = {1536, 3584, 5632, 8192, 4224, 6528};
577  std::vector<string> trendNames = {};
578 
579  for (auto it : {1, 2, 3, 4}) {
580  histName = "PXBarrel/digi_occupancy_per_SignedModuleCoord_per_SignedLadderCoord_PXLayer_" + std::to_string(it);
581  trendNames.push_back(histName);
582  }
583  for (auto it : {1, 2}) {
584  histName = "PXForward/digi_occupancy_per_SignedDiskCoord_per_SignedBladePanelCoord_PXRing_" + std::to_string(it);
585  trendNames.push_back(histName);
586  }
587  //Loop over layers. This will also do the rings, but we'll skip the ring calculation for
588  for (unsigned int trendIt = 0; trendIt < trendOrder.size(); trendIt++) {
589  iGetter.cd();
590  histName = "PixelPhase1/Phase1_MechanicalView/" + trendNames[trendIt];
591  MonitorElement* tempLayerME = iGetter.get(histName);
592  if (tempLayerME == nullptr)
593  continue;
594  float lowEffValue = 0.25 * (tempLayerME->getTH1()->Integral() / nRocsPerTrend[trendIt]);
595  for (int i = 1; i <= tempLayerME->getTH1()->GetXaxis()->GetNbins(); i++) {
596  for (int j = 1; j <= tempLayerME->getTH1()->GetYaxis()->GetNbins(); j++) {
597  if (tempLayerME->getBinContent(i, j) > 0.)
598  nFilledROCs[trendIt]++;
599  if (tempLayerME->getBinContent(i, j) > lowEffValue)
600  hiEffROCs[trendIt]++;
601  }
602  }
603  if (runOnEndLumi_) {
604  tempLayerME->Reset(); //If we're doing online monitoring, reset the digi maps.
605  }
606  } // Close layers/ring loop
607 
608  if (!runOnEndLumi_) { //offline
609  for (unsigned int i = 0; i < trendOrder.size(); i++) {
610  deadROCTrends_[offline]->Fill(i, nRocsPerTrend[i] - nFilledROCs[i]);
611  ineffROCTrends_[offline]->Fill(i, nFilledROCs[i] - hiEffROCs[i]);
612  }
613  } else { //online
614  for (unsigned int i = 0; i < trendOrder.size(); i++) {
615  deadROCTrends_[trendOrder[i]]->Fill(lumiSec - 1, nRocsPerTrend[i] - nFilledROCs[i]);
616  ineffROCTrends_[trendOrder[i]]->Fill(lumiSec - 1, nFilledROCs[i] - hiEffROCs[i]);
617  }
618  }
619 
620  if (!runOnEndLumi_)
621  return; // The following only occurs in the online
622  //Reset some MEs every 10LS here
623  for (auto it : {1, 2, 3, 4}) { //PXBarrel
624  histName = "PixelPhase1/Phase1_MechanicalView/PXBarrel/clusterposition_zphi_PXLayer_" + std::to_string(it);
625  MonitorElement* toReset = iGetter.get(histName);
626  if (toReset != nullptr) {
627  toReset->Reset();
628  }
629  }
630  for (auto it : {"-3", "-2", "-1", "+1", "+2", "+3"}) { //PXForward
631  histName = "PixelPhase1/Phase1_MechanicalView/PXForward/clusterposition_xy_PXDisk_" + std::string(it);
632  MonitorElement* toReset = iGetter.get(histName);
633  if (toReset != nullptr) {
634  toReset->Reset();
635  }
636  }
637 }

References dqm::implementation::NavigatorBase::cd(), deadROCTrends_, dqm::implementation::IGetter::get(), dqm::impl::MonitorElement::getBinContent(), dqm::legacy::MonitorElement::getTH1(), mps_fire::i, ineffROCTrends_, dqmiolumiharvest::j, layer1, layer2, layer3, layer4, offline, dqm::impl::MonitorElement::Reset(), ring1, ring2, runOnEndLumi_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

Member Data Documentation

◆ conf_

edm::ParameterSet SiPixelPhase1Summary::conf_
private

Definition at line 65 of file SiPixelPhase1Summary.h.

Referenced by SiPixelPhase1Summary().

◆ deadROCSummary

MonitorElement* SiPixelPhase1Summary::deadROCSummary
private

Definition at line 70 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

◆ deadRocThresholds_

std::vector<double> SiPixelPhase1Summary::deadRocThresholds_
private

Definition at line 81 of file SiPixelPhase1Summary.h.

Referenced by fillSummaries(), and SiPixelPhase1Summary().

◆ deadROCTrends_

std::map<trendPlots, MonitorElement*> SiPixelPhase1Summary::deadROCTrends_
private

Definition at line 77 of file SiPixelPhase1Summary.h.

Referenced by bookTrendPlots(), fillSummaries(), and fillTrendPlots().

◆ firstLumi

bool SiPixelPhase1Summary::firstLumi
private

Definition at line 67 of file SiPixelPhase1Summary.h.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

◆ ineffROCTrends_

std::map<trendPlots, MonitorElement*> SiPixelPhase1Summary::ineffROCTrends_
private

Definition at line 78 of file SiPixelPhase1Summary.h.

Referenced by bookTrendPlots(), and fillTrendPlots().

◆ reportSummary

MonitorElement* SiPixelPhase1Summary::reportSummary
private

Definition at line 72 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

◆ residuals_

std::map<std::string, MonitorElement*> SiPixelPhase1Summary::residuals_
private

Definition at line 71 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

◆ runOnEndJob_

bool SiPixelPhase1Summary::runOnEndJob_
protected

Definition at line 61 of file SiPixelPhase1Summary.h.

Referenced by dqmEndJob(), and SiPixelPhase1Summary().

◆ runOnEndLumi_

bool SiPixelPhase1Summary::runOnEndLumi_
protected

◆ src_

edm::InputTag SiPixelPhase1Summary::src_
private

Definition at line 66 of file SiPixelPhase1Summary.h.

◆ summaryMap_

std::map<std::string, MonitorElement*> SiPixelPhase1Summary::summaryMap_
private

Definition at line 69 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

◆ summaryPlotName_

std::map<std::string, std::string> SiPixelPhase1Summary::summaryPlotName_
private

Definition at line 74 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), fillSummaries(), and SiPixelPhase1Summary().

◆ topFolderName_

std::string SiPixelPhase1Summary::topFolderName_
protected

Definition at line 59 of file SiPixelPhase1Summary.h.

Referenced by fillSummaries(), and SiPixelPhase1Summary().

SiPixelPhase1Summary::ineffROCTrends_
std::map< trendPlots, MonitorElement * > ineffROCTrends_
Definition: SiPixelPhase1Summary.h:78
SiPixelPhase1Summary::runOnEndLumi_
bool runOnEndLumi_
Definition: SiPixelPhase1Summary.h:60
dqm::impl::MonitorElement::getBinEntries
virtual double getBinEntries(int bin) const
get # of bin entries (for profiles)
Definition: MonitorElement.cc:645
mps_fire.i
i
Definition: mps_fire.py:355
photonAnalyzer_cfi.xBin
xBin
Definition: photonAnalyzer_cfi.py:81
SiPixelPhase1Summary::residuals_
std::map< std::string, MonitorElement * > residuals_
Definition: SiPixelPhase1Summary.h:71
SiPixelPhase1Summary::layer4
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::fpix
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::reportSummary
MonitorElement * reportSummary
Definition: SiPixelPhase1Summary.h:72
edm::LogInfo
Definition: MessageLogger.h:254
SiPixelPhase1Summary::runOnEndJob_
bool runOnEndJob_
Definition: SiPixelPhase1Summary.h:61
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
photonAnalyzer_cfi.yBin
yBin
Definition: photonAnalyzer_cfi.py:85
reco::HaloData::minus
Definition: HaloData.h:14
SiPixelPhase1Summary::layer3
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::firstLumi
bool firstLumi
Definition: SiPixelPhase1Summary.h:67
SiPixelPhase1Summary::deadRocThresholds_
std::vector< double > deadRocThresholds_
Definition: SiPixelPhase1Summary.h:81
SiPixelPhase1Summary::bookTrendPlots
void bookTrendPlots(DQMStore::IBooker &iBooker)
Definition: SiPixelPhase1Summary.cc:295
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
dqm::impl::MonitorElement::Reset
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
Definition: MonitorElement.cc:354
multiplicitycorr_cfi.yMax
yMax
Definition: multiplicitycorr_cfi.py:6
dqm::legacy::MonitorElement::getTH1
virtual TH1 * getTH1() const
Definition: MonitorElement.h:474
SiPixelPhase1Summary::summaryPlotName_
std::map< std::string, std::string > summaryPlotName_
Definition: SiPixelPhase1Summary.h:74
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::LogWarning
Definition: MessageLogger.h:141
SiPixelPhase1Summary::layer1
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::deadROCSummary
MonitorElement * deadROCSummary
Definition: SiPixelPhase1Summary.h:70
dqm::impl::MonitorElement::getNbinsY
virtual int getNbinsY() const
get # of bins in Y-axis
Definition: MonitorElement.cc:580
SiPixelPhase1Summary::fillSummaries
void fillSummaries(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
Definition: SiPixelPhase1Summary.cc:328
SiPixelPhase1Summary::bookSummaries
void bookSummaries(DQMStore::IBooker &iBooker)
Definition: SiPixelPhase1Summary.cc:112
SiPixelPhase1Summary::ring1
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::conf_
edm::ParameterSet conf_
Definition: SiPixelPhase1Summary.h:65
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SiPixelPhase1Summary::ring2
Definition: SiPixelPhase1Summary.h:64
dqm::impl::MonitorElement::setBinContent
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
Definition: MonitorElement.cc:691
SiPixelPhase1Summary::layer2
Definition: SiPixelPhase1Summary.h:64
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
dqm::impl::MonitorElement::getNbinsX
virtual int getNbinsX() const
get # of bins in X-axis
Definition: MonitorElement.cc:574
SiPixelPhase1Summary::topFolderName_
std::string topFolderName_
Definition: SiPixelPhase1Summary.h:59
SiPixelPhase1Summary::fillTrendPlots
void fillTrendPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumiSeg=0)
Definition: SiPixelPhase1Summary.cc:555
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
SiPixelPhase1Summary::summaryMap_
std::map< std::string, MonitorElement * > summaryMap_
Definition: SiPixelPhase1Summary.h:69
SurfaceOrientation::outer
Definition: Surface.h:19
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
dqm::impl::MonitorElement::getBinError
virtual double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
Definition: MonitorElement.cc:610
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:56
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
dqm::impl::MonitorElement::getBinContent
virtual double getBinContent(int binx) const
get content of bin (1-D)
Definition: MonitorElement.cc:592
reco_skim_cfg_mod.minHits
minHits
Definition: reco_skim_cfg_mod.py:177
vertexPlots.e4
e4
Definition: vertexPlots.py:64
SiPixelPhase1Summary::offline
Definition: SiPixelPhase1Summary.h:64
SiPixelPhase1Summary::deadROCTrends_
std::map< trendPlots, MonitorElement * > deadROCTrends_
Definition: SiPixelPhase1Summary.h:77
SiPixelPhase1Summary::bpix
Definition: SiPixelPhase1Summary.h:64