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::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources, edm::EndLuminosityBlockProducer > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 SiPixelPhase1Summary (const edm::ParameterSet &conf)
 
 ~SiPixelPhase1Summary ()
 
- Public Member Functions inherited from DQMEDHarvester
virtual void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
 DQMEDHarvester (void)
 
virtual void endJob () final
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &, edm::EventSetup const &) override final
 
virtual void endRun (edm::Run const &, edm::EventSetup const &) override
 
virtual void produce (edm::Event &, edm::EventSetup const &) override final
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources, edm::EndLuminosityBlockProducer >
 EDProducer ()=default
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- 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 ()
 
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, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void beginRun (edm::Run const &run, edm::EventSetup const &eSetup)
 
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::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, 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 ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Protected Attributes

bool runOnEndJob_
 
bool runOnEndLumi_
 
std::string topFolderName_
 

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_
 
std::map< trendPlots, MonitorElement * > deadROCTrends_
 
bool firstLumi
 
std::map< trendPlots, MonitorElement * > ineffROCTrends_
 
MonitorElementreportSummary
 
edm::InputTag src_
 
std::map< std::string, MonitorElement * > summaryMap_
 
std::map< std::string, std::string > summaryPlotName_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
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 44 of file SiPixelPhase1Summary.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

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

Definition at line 49 of file SiPixelPhase1Summary.cc.

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

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

Definition at line 68 of file SiPixelPhase1Summary.cc.

69 {
70  // do anything here that needs to be done at desctruction time
71  // (e.g. close files, deallocate resources etc.)
72  LogInfo ("PixelDQM") << "SiPixelPhase1Summary::~SiPixelPhase1Summary: Destructor"<<endl;
73 }

Member Function Documentation

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

Reimplemented from DQMEDHarvester.

Definition at line 75 of file SiPixelPhase1Summary.cc.

75  {
76 }
void SiPixelPhase1Summary::bookSummaries ( DQMStore::IBooker iBooker)
private

Definition at line 115 of file SiPixelPhase1Summary.cc.

References DQMStore::IBooker::book2D(), DQMStore::IBooker::bookFloat(), DQMStore::IBooker::cd(), MonitorElement::Fill(), mps_fire::i, dataset::name, reportSummary, MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), summaryMap_, and summaryPlotName_.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

115  {
116 
117  iBooker.cd();
118 
119  std::vector<std::string> xAxisLabels_ = {"BMO","BMI","BPO ","BPI","HCMO_1","HCMO_2","HCMI_1","HCMI_2","HCPO_1","HCPO_2","HCPI_1","HCPI_2"}; // why not having a global variable !?!?!?!
120  std::vector<std::string> yAxisLabels_ = {"1","2","3","4"}; // why not having a global variable ?!?!?!!? - I originally did, but was told not to by David Lange!
121 
122  iBooker.setCurrentFolder("PixelPhase1/Summary");
123  //Book the summary plots for the variables as described in the config file
124  for (auto mapInfo: summaryPlotName_){
125  auto name = mapInfo.first;
126  summaryMap_[name] = iBooker.book2D("pixel"+name+"Summary","Pixel "+name+" Summary",12,0,12,4,0,4);
127  }
128  //Now book the overall summary map
129  iBooker.setCurrentFolder("PixelPhase1/EventInfo");
130  summaryMap_["Grand"] = iBooker.book2D("reportSummaryMap","Pixel Summary Map",12,0,12,4,0,4);
131  reportSummary = iBooker.bookFloat("reportSummary");
132 
133  //Now set up axis and bin labels
134  for (auto summaryMapEntry: summaryMap_){
135  auto summaryMap = summaryMapEntry.second;
136  for (unsigned int i = 0; i < xAxisLabels_.size(); i++){
137  summaryMap->setBinLabel(i+1, xAxisLabels_[i],1);
138  }
139  for (unsigned int i = 0; i < yAxisLabels_.size(); i++){
140  summaryMap->setBinLabel(i+1,yAxisLabels_[i],2);
141  }
142  summaryMap->setAxisTitle("Subdetector",1);
143  summaryMap->setAxisTitle("Layer/disk",2);
144  for (int i = 0; i < 12; i++){ // !??!?!? xAxisLabels_.size() ?!?!
145  for (int j = 0; j < 4; j++){ // !??!?!? yAxisLabels_.size() ?!?!?!
146  summaryMap->Fill(i,j,-1.);
147  }
148  }
149  }
150  reportSummary->Fill(-1.);
151  //Reset the iBooker
152  iBooker.setCurrentFolder("PixelPhase1/");
153 }
std::map< std::string, std::string > summaryPlotName_
void cd(void)
Definition: DQMStore.cc:269
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)
void Fill(long long x)
std::map< std::string, MonitorElement * > summaryMap_
MonitorElement * reportSummary
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:109
void SiPixelPhase1Summary::bookTrendPlots ( DQMStore::IBooker iBooker)
private

Definition at line 158 of file SiPixelPhase1Summary.cc.

References DQMStore::IBooker::book1D(), deadROCTrends_, mps_fire::i, ineffROCTrends_, layer1, layer2, layer3, layer4, offline, ring1, ring2, runOnEndLumi_, and DQMStore::IBooker::setCurrentFolder().

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

158  {
159  //We need different plots depending on if we're online (runOnEndLumi) or offline (!runOnEndLumi)
160  iBooker.setCurrentFolder("PixelPhase1/");
161  std::vector<string> binAxisLabels = {"Layer 1", "Layer 2", "Layer 3", "Layer 4", "Ring 1", "Ring 2"};
162  if (runOnEndLumi_){
163  std::vector<trendPlots> histoOrder = {layer1,layer2,layer3,layer4,ring1,ring2};
164  std::vector<string> varName ={"Layer_1","Layer_2","Layer_3","Layer_4","Ring_1","Ring_2"};
165  for (unsigned int i = 0; i < histoOrder.size(); i++){
166  string varNameStr = "deadRocTrend"+varName[i];
167  string varTitle = binAxisLabels[i]+" dead ROC trend";
168  deadROCTrends_[histoOrder[i]] = iBooker.book1D(varNameStr,varTitle,500,0.,5000);
169  varNameStr = "ineffRocTrend"+varName[i];
170  varTitle = binAxisLabels[i]+" inefficient ROC trend";
171  ineffROCTrends_[histoOrder[i]] = iBooker.book1D(varNameStr,varTitle,500,0.,5000);
172  deadROCTrends_[histoOrder[i]]->setAxisTitle("Lumisection",1);
173  ineffROCTrends_[histoOrder[i]]->setAxisTitle("Lumisection",1);
174  }
175  }
176  else {
177  deadROCTrends_[offline] = iBooker.book1D("deadRocTotal","N dead ROCs",6,0,6);
178  ineffROCTrends_[offline] = iBooker.book1D("ineffRocTotal","N inefficient ROCs",6,0,6);
179  deadROCTrends_[offline]->setAxisTitle("Subdetector",1);
180  ineffROCTrends_[offline]->setAxisTitle("Subdetector",1);
181  for (unsigned int i = 1; i <= binAxisLabels.size(); i++){
182  deadROCTrends_[offline]->setBinLabel(i,binAxisLabels[i-1]);
183  ineffROCTrends_[offline]->setBinLabel(i,binAxisLabels[i-1]);
184  }
185  }
186 
187 }
std::map< trendPlots, MonitorElement * > deadROCTrends_
std::map< trendPlots, MonitorElement * > ineffROCTrends_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
void SiPixelPhase1Summary::dqmEndJob ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter 
)
overrideprotectedvirtual

Implements DQMEDHarvester.

Definition at line 98 of file SiPixelPhase1Summary.cc.

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

99 {
100  if (firstLumi){ //Book the plots in the (maybe possible?) case that they aren't booked in the dqmEndLuminosityBlock method
101  bookSummaries(iBooker);
102  bookTrendPlots(iBooker);
103  firstLumi = false;
104  }
105  if (runOnEndJob_){
106  fillSummaries(iBooker,iGetter);
107  if (!runOnEndLumi_) fillTrendPlots(iBooker,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
108  }
109 
110 }
void fillSummaries(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
void fillTrendPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumiSeg=0)
void bookTrendPlots(DQMStore::IBooker &iBooker)
void bookSummaries(DQMStore::IBooker &iBooker)
void SiPixelPhase1Summary::dqmEndLuminosityBlock ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

Reimplemented from DQMEDHarvester.

Definition at line 78 of file SiPixelPhase1Summary.cc.

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

78  {
79  if (firstLumi){
80  bookSummaries(iBooker);
81  bookTrendPlots(iBooker);
82  firstLumi = false;
83  }
84 
85  if (runOnEndLumi_){
86  fillSummaries(iBooker,iGetter);
87  int lumiSec = lumiSeg.id().luminosityBlock();
88  fillTrendPlots(iBooker,iGetter,lumiSec);
89  }
90 
91  // iBooker.cd();
92 
93 }
void fillSummaries(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
void fillTrendPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumiSeg=0)
void bookTrendPlots(DQMStore::IBooker &iBooker)
void bookSummaries(DQMStore::IBooker &iBooker)
void SiPixelPhase1Summary::fillSummaries ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter 
)
private

Definition at line 192 of file SiPixelPhase1Summary.cc.

References MonitorElement::Fill(), DQMStore::IGetter::get(), MonitorElement::getQReports(), mps_fire::i, reco::HaloData::minus, dataset::name, SurfaceOrientation::outer, reportSummary, findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, summaryMap_, summaryPlotName_, and topFolderName_.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

192  {
193  //Firstly, we will fill the regular summary maps.
194  for (auto mapInfo: summaryPlotName_){
195  auto name = mapInfo.first;
196  std::ostringstream histNameStream;
197  std::string histName;
198 
199  for (int i = 0; i < 12; i++){ // !??!?!? xAxisLabels_.size() ?!?!
200  for (int j = 0; j < 4; j++){ // !??!?!? yAxisLabels_.size() ?!?!?!
201  if (i > 3 && j == 3) continue;
202  bool minus = i < 2 || (i > 3 && i < 8); // bleah !
203  int iOver2 = floor(i/2.);
204  bool outer = (i > 3)?iOver2%2==0:i%2==0;
205  //Complicated expression that creates the name of the histogram we are interested in.
206  histNameStream.str("");
207  histNameStream << topFolderName_.c_str() << "PX" << ((i > 3)?"Forward":"Barrel") << "/" << ((i > 3)?"HalfCylinder":"Shell") << "_" << (minus?"m":"p") << ((outer)?"O":"I") << "/" << ((i > 3)?((i%2 == 0)?"PXRing_1/":"PXRing_2/"):"") << summaryPlotName_[name].c_str() << "_PX" << ((i > 3)?"Disk":"Layer") << "_" << ((i>3)?((minus)?"-":"+"):"") << (j+1);
208  histName = histNameStream.str();
209  MonitorElement * me = iGetter.get(histName);
210 
211  if (!me) {
212  edm::LogWarning("SiPixelPhase1Summary") << "ME " << histName << " is not available !!";
213  continue; // Ignore non-existing MEs, as this can cause the whole thing to crash
214  }
215 
216  if (!summaryMap_[name]){
217  edm::LogWarning("SiPixelPhase1Summary") << "Summary map " << name << " is not available !!";
218  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.
219  }
220  if ((me->getQReports()).size()!=0) summaryMap_[name]->setBinContent(i+1,j+1,(me->getQReports())[0]->getQTresult());
221  else summaryMap_[name]->setBinContent(i+1,j+1,-1);
222  }
223  }
224  }
225  //Sum of non-negative bins for the reportSummary
226  float sumOfNonNegBins = 0.;
227  //Now we will use the other summary maps to create the overall map.
228  for (int i = 0; i < 12; i++){ // !??!?!? xAxisLabels_.size() ?!?!
229  if (!summaryMap_["Grand"]){
230  edm::LogWarning("SiPixelPhase1Summary") << "Grand summary does not exist!";
231  break;
232  }
233  for (int j = 0; j < 4; j++){ // !??!?!? yAxisLabels_.size() ?!?!?!
234  summaryMap_["Grand"]->setBinContent(i+1,j+1,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.
235  for (auto const mapInfo: summaryPlotName_){ //Check summary maps
236  auto name = mapInfo.first;
237  if (!summaryMap_[name]){
238  edm::LogWarning("SiPixelPhase1Summary") << "Summary " << name << " does not exist!";
239  continue;
240  }
241  if (summaryMap_["Grand"]->getBinContent(i+1,j+1) > summaryMap_[name]->getBinContent(i+1,j+1)) summaryMap_["Grand"]->setBinContent(i+1,j+1,summaryMap_[name]->getBinContent(i+1,j+1));
242  }
243  if (summaryMap_["Grand"]->getBinContent(i+1,j+1) > -0.1) sumOfNonNegBins += summaryMap_["Grand"]->getBinContent(i+1,j+1);
244  }
245  }
246  reportSummary->Fill(sumOfNonNegBins/40.); // The average of the 40 useful bins in the summary map.
247 
248 }
size
Write out results.
std::map< std::string, std::string > summaryPlotName_
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:305
void Fill(long long x)
std::map< std::string, MonitorElement * > summaryMap_
MonitorElement * reportSummary
std::vector< QReport * > getQReports(void) const
get map of QReports
void SiPixelPhase1Summary::fillTrendPlots ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
int  lumiSeg = 0 
)
private

Definition at line 253 of file SiPixelPhase1Summary.cc.

References DQMStore::IGetter::cd(), deadROCTrends_, DEFINE_FWK_MODULE, DQMStore::IGetter::get(), MonitorElement::getBinContent(), MonitorElement::getTH1(), mps_fire::i, ineffROCTrends_, layer1, layer2, layer3, layer4, dataset::name, offline, MonitorElement::Reset(), ring1, ring2, runOnEndLumi_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

253  {
254 
255  // 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.
256  if (lumiSec%10 != 0) return;
257 
258  std::ostringstream histNameStream;
259  std::string histName;
260 
261 
262  //Find the total number of filled bins and hi efficiency bins
263  std::vector<trendPlots> trendOrder = {layer1,layer2,layer3,layer4,ring1,ring2};
264  std::vector<int> nFilledROCs(trendOrder.size(),0);
265  std::vector<int> hiEffROCs(trendOrder.size(),0);
266  std::vector<int> nRocsPerTrend = {1536,3584,5632,8192,4224,6528};
267  std::vector<string> trendNames = {};
268  string name = "";
269  for (auto it : {1,2,3,4}) {
270  histNameStream.str("");
271  histNameStream << "PXBarrel/digi_occupancy_per_SignedModuleCoord_per_SignedLadderCoord_PXLayer_" << it;
272  histName = histNameStream.str();
273  trendNames.push_back(histName);
274  }
275  for (auto it : {1,2}) {
276  histNameStream.str("");
277  histNameStream << "PXForward/digi_occupancy_per_SignedDiskCoord_per_SignedBladePanelCoord_PXRing_" << it;;
278  histName = histNameStream.str();
279  trendNames.push_back(histName);
280  }
281  //Loop over layers. This will also do the rings, but we'll skip the ring calculation for
282  for (unsigned int trendIt = 0; trendIt < trendOrder.size(); trendIt++){
283  iGetter.cd();
284  histNameStream.str("");
285  histNameStream << "PixelPhase1/Phase1_MechanicalView/" << trendNames[trendIt];
286  histName = histNameStream.str();
287  MonitorElement * tempLayerME = iGetter.get(histName);
288  if (!tempLayerME) continue;
289  float lowEffValue = 0.25 * (tempLayerME->getTH1()->Integral() / nRocsPerTrend[trendIt]);
290  for (int i=1; i<=tempLayerME->getTH1()->GetXaxis()->GetNbins(); i++){
291  for (int j=1; j<=tempLayerME->getTH1()->GetYaxis()->GetNbins(); j++){
292  if (tempLayerME->getBinContent(i,j) > 0.) nFilledROCs[trendIt]++;
293  if (tempLayerME->getBinContent(i,j) > lowEffValue) hiEffROCs[trendIt]++;
294  }
295  }
296  if (runOnEndLumi_) {
297  tempLayerME->Reset(); //If we're doing online monitoring, reset the digi maps.
298  }
299  } // Close layers/ring loop
300 
301  if (!runOnEndLumi_) { //offline
302  for (unsigned int i = 0; i < trendOrder.size(); i++){
303  deadROCTrends_[offline]->setBinContent(i+1,nRocsPerTrend[i]-nFilledROCs[i]);
304  ineffROCTrends_[offline]->setBinContent(i+1,nFilledROCs[i]-hiEffROCs[i]);
305  }
306  }
307  else { //online
308  for (unsigned int i = 0; i < trendOrder.size(); i++){
309  deadROCTrends_[trendOrder[i]]->setBinContent(lumiSec/10,nRocsPerTrend[i]-nFilledROCs[i]);
310  ineffROCTrends_[trendOrder[i]]->setBinContent(lumiSec/10,nFilledROCs[i]-hiEffROCs[i]);
311  }
312  }
313 
314 }
void cd(void)
Definition: DQMStore.cc:339
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:305
std::map< trendPlots, MonitorElement * > deadROCTrends_
std::map< trendPlots, MonitorElement * > ineffROCTrends_
TH1 * getTH1(void) const
double getBinContent(int binx) const
get content of bin (1-D)
void Reset(void)
reset ME (ie. contents, errors, etc)

Member Data Documentation

edm::ParameterSet SiPixelPhase1Summary::conf_
private

Definition at line 66 of file SiPixelPhase1Summary.h.

Referenced by SiPixelPhase1Summary().

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

Definition at line 76 of file SiPixelPhase1Summary.h.

Referenced by bookTrendPlots(), and fillTrendPlots().

bool SiPixelPhase1Summary::firstLumi
private

Definition at line 68 of file SiPixelPhase1Summary.h.

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

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

Definition at line 77 of file SiPixelPhase1Summary.h.

Referenced by bookTrendPlots(), and fillTrendPlots().

MonitorElement* SiPixelPhase1Summary::reportSummary
private

Definition at line 71 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

bool SiPixelPhase1Summary::runOnEndJob_
protected

Definition at line 62 of file SiPixelPhase1Summary.h.

Referenced by dqmEndJob(), and SiPixelPhase1Summary().

bool SiPixelPhase1Summary::runOnEndLumi_
protected
edm::InputTag SiPixelPhase1Summary::src_
private

Definition at line 67 of file SiPixelPhase1Summary.h.

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

Definition at line 70 of file SiPixelPhase1Summary.h.

Referenced by bookSummaries(), and fillSummaries().

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

Definition at line 73 of file SiPixelPhase1Summary.h.

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

std::string SiPixelPhase1Summary::topFolderName_
protected

Definition at line 60 of file SiPixelPhase1Summary.h.

Referenced by fillSummaries(), and SiPixelPhase1Summary().