CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
CorrPCCProducer Class Reference
Inheritance diagram for CorrPCCProducer:
DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks > edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 CorrPCCProducer (const edm::ParameterSet &)
 
 ~CorrPCCProducer () override
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks >
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... >
 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
 
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)
 
 ~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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
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)
 

Private Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, const edm::EventSetup &iSetup) final
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void calculateCorrections (std::vector< float >, std::vector< float > &, float &)
 
void dqmEndRun (edm::Run const &runSeg, const edm::EventSetup &iSetup) final
 
void dqmEndRunProduce (const edm::Run &runSeg, const edm::EventSetup &iSetup)
 
void endJob () final
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, const edm::EventSetup &iSetup) final
 
void estimateType1Frac (std::vector< float >, float &)
 
void evaluateCorrectionResiduals (std::vector< float >)
 
float getMaximum (std::vector< float >)
 
void makeCorrectionTemplate ()
 
void resetBlock ()
 

Private Attributes

unsigned int approxLumiBlockSize_
 
std::vector< float > correctionScaleFactors_
 
std::vector< float > correctionTemplate_
 
TH1F * corrlumiAvg_h
 
unsigned int countLumi_
 
std::vector< float > errOnLumiByBX_
 
std::vector< float > events_
 
TFile * histoFile
 
TList * hlist
 
unsigned int iBlock = 0
 
TH1F * lumiAvg_h
 
std::map< std::pair< unsigned int, unsigned int >, unsigned int > lumiInfoCounter
 
std::map< std::pair< unsigned int, unsigned int >, LumiInfo * > lumiInfoMap
 
std::map< std::pair< unsigned int, unsigned int >, LumiInfo * >::iterator lumiInfoMapIterator
 
std::map< unsigned int, LumiInfo * > lumiInfoMapPerLS
 
edm::EDGetTokenT< LumiInfolumiInfoToken
 
std::vector< unsigned int > lumiSections
 
unsigned int maxLS = 3500
 
float mean_type1_residual
 
float mean_type1_residual_unc
 
float mean_type2_residual
 
float mean_type2_residual_unc
 
unsigned int minimumNumberOfEvents
 
unsigned int nTrain
 
float overallCorrection_
 
LumiCorrectionspccCorrections
 
std::string pccSrc_
 
edm::Service< cond::service::PoolDBOutputServicepoolDbService
 
std::string prodInst_
 
std::vector< float > rawlumiBX_
 
TH1F * scaleFactorAvg_h
 
unsigned int thisLS
 
std::vector< float > totalLumiByBX_
 
std::vector< float > totalLumiByBXAvg_
 
float type1Frac
 
TGraphErrors * type1FracGraph
 
TH1F * type1FracHist
 
MonitorElementType1FracMon
 
TGraphErrors * type1resGraph
 
TH1F * type1resHist
 
MonitorElementType1ResMon
 
double type2_a_
 
double type2_b_
 
TGraphErrors * type2resGraph
 
TH1F * type2resHist
 
MonitorElementType2ResMon
 

Additional Inherited Members

- Public Types inherited from DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::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)
 
- Protected Member Functions inherited from DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks >
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- 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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
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 inherited from DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description


class: CorrPCCProducer.cc

description: Computes the type 1 and type 2 corrections to the luminosity type 1 - first (spillover from previous BXs real clusters) type 2 - after (comes from real activation)

authors:Sam Higginbotham (shigg.nosp@m.inb@.nosp@m.cern..nosp@m.ch) and Chris Palmer (capal.nosp@m.mer@.nosp@m.cern..nosp@m.ch)


Definition at line 49 of file CorrPCCProducer.cc.

Constructor & Destructor Documentation

CorrPCCProducer::CorrPCCProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 130 of file CorrPCCProducer.cc.

References approxLumiBlockSize_, correctionScaleFactors_, correctionTemplate_, countLumi_, events_, edm::ParameterSet::getParameter(), histoFile, lumiInfoToken, makeCorrectionTemplate(), minimumNumberOfEvents, LumiConstants::numBX, pccSrc_, prodInst_, resetBlock(), totalLumiByBX_, totalLumiByBXAvg_, type1FracGraph, type1resGraph, type2_a_, type2_b_, and type2resGraph.

130  {
131  pccSrc_ =
132  iConfig.getParameter<edm::ParameterSet>("CorrPCCProducerParameters").getParameter<std::string>("inLumiObLabel");
133  prodInst_ =
134  iConfig.getParameter<edm::ParameterSet>("CorrPCCProducerParameters").getParameter<std::string>("ProdInst");
136  iConfig.getParameter<edm::ParameterSet>("CorrPCCProducerParameters").getParameter<int>("approxLumiBlockSize");
137  type2_a_ = iConfig.getParameter<edm::ParameterSet>("CorrPCCProducerParameters").getParameter<double>("type2_a");
138  type2_b_ = iConfig.getParameter<edm::ParameterSet>("CorrPCCProducerParameters").getParameter<double>("type2_b");
139  countLumi_ = 0;
140  minimumNumberOfEvents = 1000;
141 
147 
148  resetBlock();
149 
151 
152  edm::InputTag inputPCCTag_(pccSrc_, prodInst_);
153 
154  lumiInfoToken = consumes<LumiInfo, edm::InLumi>(inputPCCTag_);
155 
156  histoFile = new TFile("CorrectionHisto.root", "RECREATE");
157 
158  type1FracGraph = new TGraphErrors();
159  type1resGraph = new TGraphErrors();
160  type2resGraph = new TGraphErrors();
161  type1FracGraph->SetName("Type1Fraction");
162  type1resGraph->SetName("Type1Res");
163  type2resGraph->SetName("Type2Res");
164  type1FracGraph->GetYaxis()->SetTitle("Type 1 Fraction");
165  type1resGraph->GetYaxis()->SetTitle("Type 1 Residual");
166  type2resGraph->GetYaxis()->SetTitle("Type 2 Residual");
167  type1FracGraph->GetXaxis()->SetTitle("Unique LS ID");
168  type1resGraph->GetXaxis()->SetTitle("Unique LS ID");
169  type2resGraph->GetXaxis()->SetTitle("Unique LS ID");
170  type1FracGraph->SetMarkerStyle(8);
171  type1resGraph->SetMarkerStyle(8);
172  type2resGraph->SetMarkerStyle(8);
173 }
T getParameter(std::string const &) const
std::vector< float > events_
edm::EDGetTokenT< LumiInfo > lumiInfoToken
static const unsigned int numBX
Definition: LumiConstants.h:8
unsigned int countLumi_
std::string pccSrc_
unsigned int minimumNumberOfEvents
std::vector< float > totalLumiByBXAvg_
TGraphErrors * type1resGraph
std::string prodInst_
std::vector< float > correctionScaleFactors_
std::vector< float > correctionTemplate_
TGraphErrors * type2resGraph
std::vector< float > totalLumiByBX_
TGraphErrors * type1FracGraph
unsigned int approxLumiBlockSize_
void makeCorrectionTemplate()
CorrPCCProducer::~CorrPCCProducer ( )
override

Definition at line 176 of file CorrPCCProducer.cc.

176 {}

Member Function Documentation

void CorrPCCProducer::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
const edm::EventSetup iSetup 
)
finalprivate

Definition at line 349 of file CorrPCCProducer.cc.

References countLumi_.

349  {
350  countLumi_++;
351 }
unsigned int countLumi_
void CorrPCCProducer::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &  context 
)
overrideprivatevirtual

Implements DQMOneEDAnalyzer< edm::one::WatchLuminosityBlocks >.

Definition at line 640 of file CorrPCCProducer.cc.

References dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), maxLS, dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), Type1FracMon, Type1ResMon, and Type2ResMon.

640  {
641  ibooker.setCurrentFolder("AlCaReco/LumiPCC/");
642  Type1FracMon = ibooker.book1D("type1Fraction", "Type1Fraction;Lumisection;Type 1 Fraction", maxLS, 0, maxLS);
643  Type1ResMon = ibooker.book1D("type1Residual", "Type1Residual;Lumisection;Type 1 Residual", maxLS, 0, maxLS);
644  Type2ResMon = ibooker.book1D("type2Residual", "Type2Residual;Lumisection;Type 2 Residual", maxLS, 0, maxLS);
645 }
MonitorElement * Type1FracMon
MonitorElement * Type1ResMon
unsigned int maxLS
MonitorElement * Type2ResMon
void CorrPCCProducer::calculateCorrections ( std::vector< float >  uncorrected,
std::vector< float > &  correctionScaleFactors_,
float &  overallCorrection_ 
)
private

Definition at line 287 of file CorrPCCProducer.cc.

References correctionTemplate_, estimateType1Frac(), evaluateCorrectionResiduals(), getMaximum(), mps_fire::i, dqmiolumiharvest::j, SiStripPI::max, LumiConstants::numBX, MessageLogger_cff::threshold, dtNoiseDBValidation_cfg::trial, and type1Frac.

Referenced by dqmEndRunProduce().

289  {
290  type1Frac = 0;
291 
292  int nTrials = 4;
293 
294  for (int trial = 0; trial < nTrials; trial++) {
295  estimateType1Frac(uncorrected, type1Frac);
296  edm::LogInfo("INFO") << "type 1 fraction after iteration " << trial << " is " << type1Frac;
297  }
298 
299  //correction should never be negative
300  type1Frac = std::max(0.0, (double)type1Frac);
301 
302  std::vector<float> corrected_tmp_;
303  for (size_t i = 0; i < uncorrected.size(); i++) {
304  corrected_tmp_.push_back(uncorrected.at(i));
305  }
306 
307  //Apply all corrections
308  for (size_t i = 0; i < LumiConstants::numBX - 1; i++) {
309  // type 1 - first (spillover from previous BXs real clusters)
310  float bin_i = corrected_tmp_.at(i);
311  corrected_tmp_.at(i + 1) = corrected_tmp_.at(i + 1) - type1Frac * bin_i;
312 
313  // type 2 - after (comes from real activation)
314  bin_i = corrected_tmp_.at(i);
315  for (size_t j = i + 1; j < i + LumiConstants::numBX - 1; j++) {
316  if (j < LumiConstants::numBX) {
317  corrected_tmp_.at(j) = corrected_tmp_.at(j) - bin_i * correctionTemplate_.at(j - i);
318  } else {
319  corrected_tmp_.at(j - LumiConstants::numBX) =
320  corrected_tmp_.at(j - LumiConstants::numBX) - bin_i * correctionTemplate_.at(j - i);
321  }
322  }
323  }
324 
325  evaluateCorrectionResiduals(corrected_tmp_);
326 
327  float integral_uncorr_clusters = 0;
328  float integral_corr_clusters = 0;
329 
330  //Calculate Per-BX correction factor and overall correction factor
331  float lumiMax = getMaximum(corrected_tmp_);
332  float threshold = lumiMax * 0.2;
333  for (size_t ibx = 0; ibx < corrected_tmp_.size(); ibx++) {
334  if (corrected_tmp_.at(ibx) > threshold) {
335  integral_uncorr_clusters += uncorrected.at(ibx);
336  integral_corr_clusters += corrected_tmp_.at(ibx);
337  }
338  if (corrected_tmp_.at(ibx) != 0.0 && uncorrected.at(ibx) != 0.0) {
339  correctionScaleFactors_.at(ibx) = corrected_tmp_.at(ibx) / uncorrected.at(ibx);
340  } else {
341  correctionScaleFactors_.at(ibx) = 0.0;
342  }
343  }
344 
345  overallCorrection_ = integral_corr_clusters / integral_uncorr_clusters;
346 }
static const unsigned int numBX
Definition: LumiConstants.h:8
void evaluateCorrectionResiduals(std::vector< float >)
std::vector< float > correctionScaleFactors_
std::vector< float > correctionTemplate_
float getMaximum(std::vector< float >)
void estimateType1Frac(std::vector< float >, float &)
void CorrPCCProducer::dqmEndRun ( edm::Run const &  runSeg,
const edm::EventSetup iSetup 
)
finalprivate

Definition at line 385 of file CorrPCCProducer.cc.

References dqmEndRunProduce().

385  {
386  // TODO: why was this code not put here in the first place?
387  dqmEndRunProduce(runSeg, iSetup);
388 }
void dqmEndRunProduce(const edm::Run &runSeg, const edm::EventSetup &iSetup)
void CorrPCCProducer::dqmEndRunProduce ( const edm::Run runSeg,
const edm::EventSetup iSetup 
)
private

Definition at line 391 of file CorrPCCProducer.cc.

References approxLumiBlockSize_, l1GtPatternGenerator_cfi::bx, calculateCorrections(), correctionScaleFactors_, corrlumiAvg_h, gather_cfg::cout, errOnLumiByBX_, events_, dqmdumpme::first, dqmMemoryStats::float, histoFile, mps_fire::i, iBlock, edm::RunBase::id(), edm::Service< T >::isAvailable(), lumiAvg_h, lumiInfoCounter, lumiInfoMap, lumiInfoMapIterator, lumiInfoMapPerLS, lumiSections, maxLS, mean_type1_residual, mean_type1_residual_unc, mean_type2_residual, mean_type2_residual_unc, LumiConstants::numBX, overallCorrection_, pccCorrections, poolDbService, rawlumiBX_, resetBlock(), edm::RunID::run(), edm::RunBase::run(), scaleFactorAvg_h, dqm::impl::MonitorElement::setBinContent(), dqm::impl::MonitorElement::setBinError(), LumiCorrections::setCorrectionsBX(), LumiCorrections::setOverallCorrection(), LumiCorrections::setType1Fraction(), LumiCorrections::setType1Residual(), LumiCorrections::setType2Residual(), thisLS, totalLumiByBX_, totalLumiByBXAvg_, type1Frac, type1FracGraph, type1FracHist, Type1FracMon, type1resGraph, type1resHist, Type1ResMon, type2resGraph, type2resHist, Type2ResMon, and cond::service::PoolDBOutputService::writeOne().

Referenced by dqmEndRun().

391  {
392  if (lumiSections.empty()) {
393  return;
394  }
395 
396  std::sort(lumiSections.begin(), lumiSections.end());
397 
398  edm::LogInfo("INFO") << "Number of Lumisections " << lumiSections.size() << " in run " << runSeg.run();
399 
400  //Determining integer number of blocks
401  float nBlocks_f = float(lumiSections.size()) / approxLumiBlockSize_;
402  unsigned int nBlocks = 1;
403  if (nBlocks_f > 1) {
404  if (nBlocks_f - lumiSections.size() / approxLumiBlockSize_ < 0.5) {
405  nBlocks = lumiSections.size() / approxLumiBlockSize_;
406  } else {
407  nBlocks = lumiSections.size() / approxLumiBlockSize_ + 1;
408  }
409  }
410 
411  float nLSPerBlock = float(lumiSections.size()) / nBlocks;
412 
413  std::vector<std::pair<unsigned int, unsigned int>> lsKeys;
414  lsKeys.clear();
415 
416  //Constructing nBlocks IOVs
417  for (unsigned iKey = 0; iKey < nBlocks; iKey++) {
418  lsKeys.push_back(std::make_pair(lumiSections[(unsigned int)(iKey * nLSPerBlock)],
419  lumiSections[(unsigned int)((iKey + 1) * nLSPerBlock) - 1]));
420  }
421 
422  lsKeys[0].first = 1;
423 
424  for (unsigned int lumiSection = 0; lumiSection < lumiSections.size(); lumiSection++) {
425  thisLS = lumiSections[lumiSection];
426 
427  std::pair<unsigned int, unsigned int> lsKey;
428 
429  bool foundKey = false;
430 
431  for (unsigned iKey = 0; iKey < nBlocks; iKey++) {
432  if ((thisLS >= lsKeys[iKey].first) && (thisLS <= lsKeys[iKey].second)) {
433  lsKey = lsKeys[iKey];
434  foundKey = true;
435  break;
436  }
437  }
438 
439  if (!foundKey) {
440  edm::LogInfo("WARNING") << "Didn't find key " << thisLS;
441  continue;
442  }
443 
444  if (lumiInfoMap.count(lsKey) == 0) {
445  lumiInfoMap[lsKey] = new LumiInfo();
446  }
447 
448  //Sum all lumi in IOV of lsKey
449  totalLumiByBX_ = lumiInfoMap[lsKey]->getInstLumiAllBX();
450  events_ = lumiInfoMap[lsKey]->getErrorLumiAllBX();
451 
452  rawlumiBX_ = lumiInfoMapPerLS[thisLS]->getInstLumiAllBX();
453  errOnLumiByBX_ = lumiInfoMapPerLS[thisLS]->getErrorLumiAllBX();
454 
455  for (unsigned int bx = 0; bx < LumiConstants::numBX; bx++) {
458  }
459  lumiInfoMap[lsKey]->setInstLumiAllBX(totalLumiByBX_);
460  lumiInfoMap[lsKey]->setErrorLumiAllBX(events_);
461  lumiInfoCounter[lsKey]++;
462  }
463 
464  cond::Time_t thisIOV = 1;
465 
466  char* histname1 = new char[100];
467  char* histname2 = new char[100];
468  char* histname3 = new char[100];
469  char* histTitle1 = new char[100];
470  char* histTitle2 = new char[100];
471  char* histTitle3 = new char[100];
472  sprintf(histTitle1, "Type1Fraction_%d", runSeg.run());
473  sprintf(histTitle2, "Type1Res_%d", runSeg.run());
474  sprintf(histTitle3, "Type2Res_%d", runSeg.run());
475  type1FracHist = new TH1F(histTitle1, histTitle1, 1000, -0.5, 0.5);
476  type1resHist = new TH1F(histTitle2, histTitle2, 4000, -0.2, 0.2);
477  type2resHist = new TH1F(histTitle3, histTitle3, 4000, -0.2, 0.2);
478  delete[] histTitle1;
479  delete[] histTitle2;
480  delete[] histTitle3;
481 
483  totalLumiByBX_ = lumiInfoMapIterator->second->getInstLumiAllBX();
484  events_ = lumiInfoMapIterator->second->getErrorLumiAllBX();
485 
486  if (events_.empty()) {
487  continue;
488  }
489 
491  thisIOV = (cond::Time_t)(lu.value());
492 
493  sprintf(histname1,
494  "CorrectedLumiAvg_%d_%d_%d_%d",
495  runSeg.run(),
496  iBlock,
497  lumiInfoMapIterator->first.first,
498  lumiInfoMapIterator->first.second);
499  sprintf(histname2,
500  "ScaleFactorsAvg_%d_%d_%d_%d",
501  runSeg.run(),
502  iBlock,
503  lumiInfoMapIterator->first.first,
504  lumiInfoMapIterator->first.second);
505  sprintf(histname3,
506  "RawLumiAvg_%d_%d_%d_%d",
507  runSeg.run(),
508  iBlock,
509  lumiInfoMapIterator->first.first,
510  lumiInfoMapIterator->first.second);
511 
512  corrlumiAvg_h = new TH1F(histname1, "", LumiConstants::numBX, 1, LumiConstants::numBX);
513  scaleFactorAvg_h = new TH1F(histname2, "", LumiConstants::numBX, 1, LumiConstants::numBX);
514  lumiAvg_h = new TH1F(histname3, "", LumiConstants::numBX, 1, LumiConstants::numBX);
515 
516  //Averaging by the number of events
517  for (unsigned int i = 0; i < LumiConstants::numBX; i++) {
518  if (events_.at(i) != 0) {
520  } else {
521  totalLumiByBXAvg_[i] = 0.0;
522  }
523  }
524 
526 
527  for (unsigned int bx = 0; bx < LumiConstants::numBX; bx++) {
528  corrlumiAvg_h->SetBinContent(bx, totalLumiByBXAvg_[bx] * correctionScaleFactors_[bx]);
529  if (events_.at(bx) != 0) {
530  corrlumiAvg_h->SetBinError(bx,
531  totalLumiByBXAvg_[bx] * correctionScaleFactors_[bx] / TMath::Sqrt(events_.at(bx)));
532  } else {
533  corrlumiAvg_h->SetBinError(bx, 0.0);
534  }
535 
536  scaleFactorAvg_h->SetBinContent(bx, correctionScaleFactors_[bx]);
537  lumiAvg_h->SetBinContent(bx, totalLumiByBXAvg_[bx]);
538  }
539 
540  //Writing the corrections to SQL lite file for db
547 
548  if (poolDbService.isAvailable()) {
549  poolDbService->writeOne<LumiCorrections>(pccCorrections, thisIOV, "LumiCorrectionsRcd");
550  } else {
551  throw std::runtime_error("PoolDBService required.");
552  }
553 
554  delete pccCorrections;
555 
556  histoFile->cd();
557  corrlumiAvg_h->Write();
558  scaleFactorAvg_h->Write();
559  lumiAvg_h->Write();
560 
561  delete corrlumiAvg_h;
562  delete scaleFactorAvg_h;
563  delete lumiAvg_h;
564 
565  type1FracHist->Fill(type1Frac);
568 
569  for (unsigned int ils = lumiInfoMapIterator->first.first; ils < lumiInfoMapIterator->first.second + 1; ils++) {
570  if (ils > maxLS) {
571  std::cout << "ils out of maxLS range!!" << std::endl;
572  break;
573  }
580  }
581 
582  type1FracGraph->SetPoint(iBlock, thisIOV + approxLumiBlockSize_ / 2.0, type1Frac);
583  type1resGraph->SetPoint(iBlock, thisIOV + approxLumiBlockSize_ / 2.0, mean_type1_residual);
584  type2resGraph->SetPoint(iBlock, thisIOV + approxLumiBlockSize_ / 2.0, mean_type2_residual);
588 
589  edm::LogInfo("INFO")
590  << "iBlock type1Frac mean_type1_residual mean_type2_residual mean_type1_residual_unc mean_type2_residual_unc "
591  << iBlock << " " << type1Frac << " " << mean_type1_residual << " " << mean_type2_residual << " "
593 
594  type1Frac = 0.0;
595  mean_type1_residual = 0.0;
596  mean_type2_residual = 0.0;
598  mean_type2_residual_unc = 0;
599 
600  iBlock++;
601 
602  resetBlock();
603  }
604  histoFile->cd();
605  type1FracHist->Write();
606  type1resHist->Write();
607  type2resHist->Write();
608 
609  delete type1FracHist;
610  delete type1resHist;
611  delete type2resHist;
612 
613  delete[] histname1;
614  delete[] histname2;
615  delete[] histname3;
616 
618  delete lumiInfoMapIterator->second;
619  }
620  for (unsigned int lumiSection = 0; lumiSection < lumiSections.size(); lumiSection++) {
621  thisLS = lumiSections[lumiSection];
622  delete lumiInfoMapPerLS[thisLS];
623  }
624  lumiInfoMap.clear();
625  lumiInfoMapPerLS.clear();
626  lumiSections.clear();
627  lumiInfoCounter.clear();
628 }
std::vector< float > events_
void calculateCorrections(std::vector< float >, std::vector< float > &, float &)
MonitorElement * Type1FracMon
RunID const & id() const
Definition: RunBase.h:39
std::map< std::pair< unsigned int, unsigned int >, LumiInfo * > lumiInfoMap
RunNumber_t run() const
Definition: RunBase.h:40
void setType1Fraction(float type1frac)
RunNumber_t run() const
Definition: RunID.h:36
void setOverallCorrection(float overallCorrection)
static const unsigned int numBX
Definition: LumiConstants.h:8
unsigned int iBlock
unsigned int LuminosityBlockNumber_t
MonitorElement * Type1ResMon
unsigned long long Time_t
Definition: Time.h:14
std::vector< float > totalLumiByBXAvg_
std::map< std::pair< unsigned int, unsigned int >, unsigned int > lumiInfoCounter
TGraphErrors * type1resGraph
LumiCorrections * pccCorrections
bool isAvailable() const
Definition: Service.h:40
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
std::vector< float > correctionScaleFactors_
void setType2Residual(float type2res)
std::vector< unsigned int > lumiSections
TGraphErrors * type2resGraph
std::vector< float > rawlumiBX_
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< float > totalLumiByBX_
edm::Service< cond::service::PoolDBOutputService > poolDbService
TGraphErrors * type1FracGraph
unsigned int approxLumiBlockSize_
unsigned int maxLS
std::map< std::pair< unsigned int, unsigned int >, LumiInfo * >::iterator lumiInfoMapIterator
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
void setType1Residual(float type1res)
std::vector< float > errOnLumiByBX_
MonitorElement * Type2ResMon
void setCorrectionsBX(std::vector< float > &correctBX)
unsigned int thisLS
std::map< unsigned int, LumiInfo * > lumiInfoMapPerLS
void CorrPCCProducer::endJob ( void  )
finalprivatevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 647 of file CorrPCCProducer.cc.

References DEFINE_FWK_MODULE, histoFile, type1FracGraph, type1resGraph, and type2resGraph.

Referenced by o2olib.O2ORunMgr::executeJob().

647  {
648  histoFile->cd();
649  type1FracGraph->Write();
650  type1resGraph->Write();
651  type2resGraph->Write();
652  histoFile->Write();
653  histoFile->Close();
654  delete type1FracGraph;
655  delete type1resGraph;
656  delete type2resGraph;
657 }
TGraphErrors * type1resGraph
TGraphErrors * type2resGraph
TGraphErrors * type1FracGraph
void CorrPCCProducer::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
const edm::EventSetup iSetup 
)
finalprivate

Definition at line 354 of file CorrPCCProducer.cc.

References l1GtPatternGenerator_cfi::bx, errOnLumiByBX_, events_, edm::LuminosityBlock::getByToken(), LumiInfo::getErrorLumiAllBX(), LumiInfo::getInstLumiAllBX(), lumiInfoMapPerLS, lumiInfoToken, edm::LuminosityBlockBase::luminosityBlock(), lumiSections, minimumNumberOfEvents, LumiConstants::numBX, edm::Handle< T >::product(), thisLS, and totalLumiByBX_.

354  {
355  thisLS = lumiSeg.luminosityBlock();
356 
357  edm::Handle<LumiInfo> PCCHandle;
358  lumiSeg.getByToken(lumiInfoToken, PCCHandle);
359 
360  const LumiInfo& inLumiOb = *(PCCHandle.product());
361 
362  errOnLumiByBX_ = inLumiOb.getErrorLumiAllBX();
363 
364  unsigned int totalEvents = 0;
365  for (unsigned int bx = 0; bx < LumiConstants::numBX; bx++) {
366  totalEvents += errOnLumiByBX_[bx];
367  }
368 
369  if (totalEvents < minimumNumberOfEvents) {
370  edm::LogInfo("INFO") << "number of events in this LS is too few " << totalEvents;
371  //return;
372  } else {
373  edm::LogInfo("INFO") << "Skipping Lumisection " << thisLS;
374  }
375 
377  totalLumiByBX_ = inLumiOb.getInstLumiAllBX();
378  events_ = inLumiOb.getErrorLumiAllBX();
379  lumiInfoMapPerLS[thisLS]->setInstLumiAllBX(totalLumiByBX_);
380  lumiInfoMapPerLS[thisLS]->setErrorLumiAllBX(events_);
381  lumiSections.push_back(thisLS);
382 }
std::vector< float > events_
edm::EDGetTokenT< LumiInfo > lumiInfoToken
static const unsigned int numBX
Definition: LumiConstants.h:8
const std::vector< float > & getErrorLumiAllBX() const
Definition: LumiInfo.h:97
unsigned int minimumNumberOfEvents
const std::vector< float > & getInstLumiAllBX() const
Definition: LumiInfo.h:93
std::vector< unsigned int > lumiSections
T const * product() const
Definition: Handle.h:69
std::vector< float > totalLumiByBX_
std::vector< float > errOnLumiByBX_
unsigned int thisLS
std::map< unsigned int, LumiInfo * > lumiInfoMapPerLS
void CorrPCCProducer::estimateType1Frac ( std::vector< float >  uncorrPCCPerBX,
float &  type1Frac 
)
private

Definition at line 200 of file CorrPCCProducer.cc.

References correctionTemplate_, evaluateCorrectionResiduals(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, mean_type1_residual, and LumiConstants::numBX.

Referenced by calculateCorrections().

200  {
201  std::vector<float> corrected_tmp_;
202  for (size_t i = 0; i < uncorrPCCPerBX.size(); i++) {
203  corrected_tmp_.push_back(uncorrPCCPerBX.at(i));
204  }
205 
206  //Apply initial type 1 correction
207  for (size_t k = 0; k < LumiConstants::numBX - 1; k++) {
208  float bin_k = corrected_tmp_.at(k);
209  corrected_tmp_.at(k + 1) = corrected_tmp_.at(k + 1) - type1Frac * bin_k;
210  }
211 
212  //Apply type 2 correction
213  for (size_t i = 0; i < LumiConstants::numBX - 1; i++) {
214  for (size_t j = i + 1; j < i + LumiConstants::numBX - 1; j++) {
215  float bin_i = corrected_tmp_.at(i);
216  if (j < LumiConstants::numBX) {
217  corrected_tmp_.at(j) = corrected_tmp_.at(j) - bin_i * correctionTemplate_.at(j - i);
218  } else {
219  corrected_tmp_.at(j - LumiConstants::numBX) =
220  corrected_tmp_.at(j - LumiConstants::numBX) - bin_i * correctionTemplate_.at(j - i);
221  }
222  }
223  }
224 
225  //Apply additional iteration for type 1 correction
226  evaluateCorrectionResiduals(corrected_tmp_);
228 }
static const unsigned int numBX
Definition: LumiConstants.h:8
void evaluateCorrectionResiduals(std::vector< float >)
std::vector< float > correctionTemplate_
void CorrPCCProducer::evaluateCorrectionResiduals ( std::vector< float >  corrected_tmp_)
private

Definition at line 231 of file CorrPCCProducer.cc.

References getMaximum(), histoFile, mean_type1_residual, mean_type1_residual_unc, mean_type2_residual, mean_type2_residual_unc, nTrain, LumiConstants::numBX, and MessageLogger_cff::threshold.

Referenced by calculateCorrections(), and estimateType1Frac().

231  {
232  float lumiMax = getMaximum(corrected_tmp_);
233  float threshold = lumiMax * 0.2;
234 
237  nTrain = 0;
238  float lumi = 0;
239  std::vector<float> afterGlow;
240  TH1F type1("type1", "", 1000, -0.5, 0.5);
241  TH1F type2("type2", "", 1000, -0.5, 0.5);
242  for (size_t ibx = 2; ibx < LumiConstants::numBX - 5; ibx++) {
243  lumi = corrected_tmp_.at(ibx);
244  afterGlow.clear();
245  afterGlow.push_back(corrected_tmp_.at(ibx + 1));
246  afterGlow.push_back(corrected_tmp_.at(ibx + 2));
247 
248  //Where type 1 and type 2 residuals are computed
249  if (lumi > threshold && afterGlow[0] < threshold && afterGlow[1] < threshold) {
250  for (int index = 3; index < 6; index++) {
251  float thisAfterGlow = corrected_tmp_.at(ibx + index);
252  if (thisAfterGlow < threshold) {
253  afterGlow.push_back(thisAfterGlow);
254  } else {
255  break;
256  }
257  }
258  float thisType1 = 0;
259  float thisType2 = 0;
260  if (afterGlow.size() > 1) {
261  int nAfter = 0;
262  for (unsigned int index = 1; index < afterGlow.size(); index++) {
263  thisType2 += afterGlow[index];
264  type2.Fill(afterGlow[index] / lumi);
265  nAfter++;
266  }
267  thisType2 /= nAfter;
268  }
269  thisType1 = (afterGlow[0] - thisType2) / lumi;
270 
271  type1.Fill(thisType1);
272  nTrain += 1;
273  }
274  }
275 
276  mean_type1_residual = type1.GetMean(); //Calculate the mean value of the type 1 residual
277  mean_type2_residual = type2.GetMean(); //Calculate the mean value of the type 2 residual
278  mean_type1_residual_unc = type1.GetMeanError();
279  mean_type2_residual_unc = type2.GetMeanError();
280 
281  histoFile->cd();
282  type1.Write();
283  type2.Write();
284 }
unsigned int nTrain
static const unsigned int numBX
Definition: LumiConstants.h:8
float getMaximum(std::vector< float >)
float CorrPCCProducer::getMaximum ( std::vector< float >  lumi_vector)
private

Definition at line 188 of file CorrPCCProducer.cc.

References mps_fire::i.

Referenced by calculateCorrections(), and evaluateCorrectionResiduals().

188  {
189  float max_lumi = 0;
190  for (size_t i = 0; i < lumi_vector.size(); i++) {
191  if (lumi_vector.at(i) > max_lumi)
192  max_lumi = lumi_vector.at(i);
193  }
194  return max_lumi;
195 }
void CorrPCCProducer::makeCorrectionTemplate ( )
private

Definition at line 180 of file CorrPCCProducer.cc.

References l1GtPatternGenerator_cfi::bx, correctionTemplate_, JetChargeProducer_cfi::exp, LumiConstants::numBX, type2_a_, and type2_b_.

Referenced by CorrPCCProducer().

180  {
181  for (unsigned int bx = 1; bx < LumiConstants::numBX; bx++) {
182  correctionTemplate_.at(bx) = type2_a_ * exp(-(float(bx) - 1) * type2_b_);
183  }
184 }
static const unsigned int numBX
Definition: LumiConstants.h:8
std::vector< float > correctionTemplate_
void CorrPCCProducer::resetBlock ( )
private

Definition at line 631 of file CorrPCCProducer.cc.

References l1GtPatternGenerator_cfi::bx, correctionScaleFactors_, events_, LumiConstants::numBX, totalLumiByBX_, and totalLumiByBXAvg_.

Referenced by CorrPCCProducer(), and dqmEndRunProduce().

631  {
632  for (unsigned int bx = 0; bx < LumiConstants::numBX; bx++) {
633  totalLumiByBX_[bx] = 0;
634  totalLumiByBXAvg_[bx] = 0;
635  events_[bx] = 0;
637  }
638 }
std::vector< float > events_
static const unsigned int numBX
Definition: LumiConstants.h:8
std::vector< float > totalLumiByBXAvg_
std::vector< float > correctionScaleFactors_
std::vector< float > totalLumiByBX_

Member Data Documentation

unsigned int CorrPCCProducer::approxLumiBlockSize_
private

Definition at line 118 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), and dqmEndRunProduce().

std::vector<float> CorrPCCProducer::correctionScaleFactors_
private

Definition at line 80 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), dqmEndRunProduce(), and resetBlock().

std::vector<float> CorrPCCProducer::correctionTemplate_
private
TH1F* CorrPCCProducer::corrlumiAvg_h
private

Definition at line 93 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

unsigned int CorrPCCProducer::countLumi_
private

Definition at line 117 of file CorrPCCProducer.cc.

Referenced by beginLuminosityBlock(), and CorrPCCProducer().

std::vector<float> CorrPCCProducer::errOnLumiByBX_
private

Definition at line 75 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and endLuminosityBlock().

std::vector<float> CorrPCCProducer::events_
private
TFile* CorrPCCProducer::histoFile
private
TList* CorrPCCProducer::hlist
private

Definition at line 108 of file CorrPCCProducer.cc.

unsigned int CorrPCCProducer::iBlock = 0
private

Definition at line 83 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

TH1F* CorrPCCProducer::lumiAvg_h
private

Definition at line 95 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::map<std::pair<unsigned int, unsigned int>, unsigned int> CorrPCCProducer::lumiInfoCounter
private

Definition at line 91 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::map<std::pair<unsigned int, unsigned int>, LumiInfo*> CorrPCCProducer::lumiInfoMap
private

Definition at line 90 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::map<std::pair<unsigned int, unsigned int>, LumiInfo*>::iterator CorrPCCProducer::lumiInfoMapIterator
private

Definition at line 88 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::map<unsigned int, LumiInfo*> CorrPCCProducer::lumiInfoMapPerLS
private

Definition at line 86 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and endLuminosityBlock().

edm::EDGetTokenT<LumiInfo> CorrPCCProducer::lumiInfoToken
private

Definition at line 70 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), and endLuminosityBlock().

std::vector<unsigned int> CorrPCCProducer::lumiSections
private

Definition at line 87 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and endLuminosityBlock().

unsigned int CorrPCCProducer::maxLS = 3500
private

Definition at line 100 of file CorrPCCProducer.cc.

Referenced by bookHistograms(), and dqmEndRunProduce().

float CorrPCCProducer::mean_type1_residual
private
float CorrPCCProducer::mean_type1_residual_unc
private

Definition at line 114 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and evaluateCorrectionResiduals().

float CorrPCCProducer::mean_type2_residual
private

Definition at line 113 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and evaluateCorrectionResiduals().

float CorrPCCProducer::mean_type2_residual_unc
private

Definition at line 115 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and evaluateCorrectionResiduals().

unsigned int CorrPCCProducer::minimumNumberOfEvents
private

Definition at line 84 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), and endLuminosityBlock().

unsigned int CorrPCCProducer::nTrain
private

Definition at line 116 of file CorrPCCProducer.cc.

Referenced by evaluateCorrectionResiduals().

float CorrPCCProducer::overallCorrection_
private

Definition at line 81 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

LumiCorrections* CorrPCCProducer::pccCorrections
private

Definition at line 124 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::string CorrPCCProducer::pccSrc_
private

Definition at line 71 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer().

edm::Service<cond::service::PoolDBOutputService> CorrPCCProducer::poolDbService
private

Definition at line 126 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

std::string CorrPCCProducer::prodInst_
private

Definition at line 72 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer().

std::vector<float> CorrPCCProducer::rawlumiBX_
private

Definition at line 74 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

TH1F* CorrPCCProducer::scaleFactorAvg_h
private

Definition at line 94 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

unsigned int CorrPCCProducer::thisLS
private

Definition at line 119 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce(), and endLuminosityBlock().

std::vector<float> CorrPCCProducer::totalLumiByBX_
private
std::vector<float> CorrPCCProducer::totalLumiByBXAvg_
private

Definition at line 77 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), dqmEndRunProduce(), and resetBlock().

float CorrPCCProducer::type1Frac
private

Definition at line 111 of file CorrPCCProducer.cc.

Referenced by calculateCorrections(), and dqmEndRunProduce().

TGraphErrors* CorrPCCProducer::type1FracGraph
private

Definition at line 105 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), dqmEndRunProduce(), and endJob().

TH1F* CorrPCCProducer::type1FracHist
private

Definition at line 96 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

MonitorElement* CorrPCCProducer::Type1FracMon
private

Definition at line 101 of file CorrPCCProducer.cc.

Referenced by bookHistograms(), and dqmEndRunProduce().

TGraphErrors* CorrPCCProducer::type1resGraph
private

Definition at line 106 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), dqmEndRunProduce(), and endJob().

TH1F* CorrPCCProducer::type1resHist
private

Definition at line 97 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

MonitorElement* CorrPCCProducer::Type1ResMon
private

Definition at line 102 of file CorrPCCProducer.cc.

Referenced by bookHistograms(), and dqmEndRunProduce().

double CorrPCCProducer::type2_a_
private

Definition at line 121 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), and makeCorrectionTemplate().

double CorrPCCProducer::type2_b_
private

Definition at line 122 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), and makeCorrectionTemplate().

TGraphErrors* CorrPCCProducer::type2resGraph
private

Definition at line 107 of file CorrPCCProducer.cc.

Referenced by CorrPCCProducer(), dqmEndRunProduce(), and endJob().

TH1F* CorrPCCProducer::type2resHist
private

Definition at line 98 of file CorrPCCProducer.cc.

Referenced by dqmEndRunProduce().

MonitorElement* CorrPCCProducer::Type2ResMon
private

Definition at line 103 of file CorrPCCProducer.cc.

Referenced by bookHistograms(), and dqmEndRunProduce().