CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::HcalNoiseInfoProducer Class Reference

#include <HcalNoiseInfoProducer.h>

Inheritance diagram for reco::HcalNoiseInfoProducer:
edm::stream::EDProducer<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HcalNoiseInfoProducer (const edm::ParameterSet &)
 
 ~HcalNoiseInfoProducer ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void fillcalotwrs (edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &) const
 
void filldigis (edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &)
 
void filljetinfo (edm::Event &, const edm::EventSetup &, HcalNoiseSummary &) const
 
void fillOtherSummaryVariables (HcalNoiseSummary &summary, const CommonHcalNoiseRBXData &data) const
 
void fillrechits (edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &) const
 
void filltracks (edm::Event &, const edm::EventSetup &, HcalNoiseSummary &) const
 
virtual void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

float adc2fC [128]
 
HcalNoiseAlgo algo_
 
double calibdigiHBHEthreshold_
 
std::vector< int > calibdigiHBHEtimeslices_
 
double calibdigiHFthreshold_
 
std::vector< int > calibdigiHFtimeslices_
 
edm::EDGetTokenT
< CaloTowerCollection
calotower_token_
 
std::string caloTowerCollName_
 
std::string digiCollName_
 
bool fillCaloTowers_
 
bool fillDigis_
 
bool fillRecHits_
 
bool fillTracks_
 
edm::EDGetTokenT
< HBHEDigiCollection
hbhedigi_token_
 
edm::EDGetTokenT
< HBHERecHitCollection
hbherechit_token_
 
uint32_t HcalAcceptSeverityLevel_
 
edm::EDGetTokenT
< HcalCalibDigiCollection
hcalcalibdigi_token_
 
std::vector< int > HcalRecHitFlagsToBeExcluded_
 
edm::EDGetTokenT
< reco::PFJetCollection
jet_token_
 
std::string jetCollName_
 
int maxCaloTowerIEta_
 
int maxjetindex_
 
double maxNHF_
 
int maxProblemRBXs_
 
double maxTrackEta_
 
double minHighHitE_
 
double minLowHitE_
 
double minR45HitE_
 
double minRecHitE_
 
double minTrackPt_
 
std::string recHitCollName_
 
double TotalCalibCharge
 
edm::EDGetTokenT
< reco::TrackCollection
track_token_
 
std::string trackCollName_
 
double TS4TS5EnergyThreshold_
 
std::vector< std::pair< double,
double > > 
TS4TS5LowerCut_
 
std::vector< std::pair< double,
double > > 
TS4TS5UpperCut_
 
bool useCalibDigi_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- 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)
 

Detailed Description

Definition at line 46 of file HcalNoiseInfoProducer.h.

Constructor & Destructor Documentation

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

Definition at line 30 of file HcalNoiseInfoProducer.cc.

References adc2fC, calibdigiHBHEthreshold_, calibdigiHBHEtimeslices_, calibdigiHFthreshold_, calibdigiHFtimeslices_, calotower_token_, caloTowerCollName_, digiCollName_, edm::ParameterSet::exists(), edm::ParameterSet::existsAs(), fillCaloTowers_, fillDigis_, fillRecHits_, fillTracks_, edm::ParameterSet::getParameter(), hbhedigi_token_, hbherechit_token_, HcalAcceptSeverityLevel_, hcalcalibdigi_token_, HcalRecHitFlagsToBeExcluded_, i, HLT_25ns14e33_v1_cff::InputTag, jet_token_, jetCollName_, maxCaloTowerIEta_, maxjetindex_, maxNHF_, maxProblemRBXs_, maxTrackEta_, minHighHitE_, minLowHitE_, minR45HitE_, minRecHitE_, minTrackPt_, recHitCollName_, python.multivaluedict::sort(), AlCaHLTBitMon_QueryRunRegistry::string, track_token_, trackCollName_, TS4TS5EnergyThreshold_, TS4TS5LowerCut_, TS4TS5UpperCut_, and useCalibDigi_.

30  : algo_(iConfig)
31 {
32  // set the parameters
33  fillDigis_ = iConfig.getParameter<bool>("fillDigis");
34  fillRecHits_ = iConfig.getParameter<bool>("fillRecHits");
35  fillCaloTowers_ = iConfig.getParameter<bool>("fillCaloTowers");
36  fillTracks_ = iConfig.getParameter<bool>("fillTracks");
37 
38  maxProblemRBXs_ = iConfig.getParameter<int>("maxProblemRBXs");
39 
40  maxCaloTowerIEta_ = iConfig.getParameter<int>("maxCaloTowerIEta");
41  maxTrackEta_ = iConfig.getParameter<double>("maxTrackEta");
42  minTrackPt_ = iConfig.getParameter<double>("minTrackPt");
43 
44  digiCollName_ = iConfig.getParameter<std::string>("digiCollName");
45  recHitCollName_ = iConfig.getParameter<std::string>("recHitCollName");
46  caloTowerCollName_ = iConfig.getParameter<std::string>("caloTowerCollName");
47  trackCollName_ = iConfig.getParameter<std::string>("trackCollName");
48 
49  if (iConfig.existsAs<std::string>("jetCollName"))
50  {
51  jetCollName_ = iConfig.getParameter<std::string>("jetCollName");
52  maxNHF_ = iConfig.getParameter<double>("maxNHF");
53  maxjetindex_ = iConfig.getParameter<int>("maxjetindex");
54  jet_token_ = consumes<reco::PFJetCollection>(edm::InputTag(jetCollName_));
55  }
56 
57  minRecHitE_ = iConfig.getParameter<double>("minRecHitE");
58  minLowHitE_ = iConfig.getParameter<double>("minLowHitE");
59  minHighHitE_ = iConfig.getParameter<double>("minHighHitE");
60  if(iConfig.existsAs<double>("minR45HitE"))
61  minR45HitE_ = iConfig.getParameter<double>("minR45HitE");
62 
63  HcalAcceptSeverityLevel_ = iConfig.getParameter<uint32_t>("HcalAcceptSeverityLevel");
64  if (iConfig.exists("HcalRecHitFlagsToBeExcluded"))
65  HcalRecHitFlagsToBeExcluded_ = iConfig.getParameter<std::vector<int> >("HcalRecHitFlagsToBeExcluded");
66  else{
67  edm::LogWarning("MisConfiguration")<<"the module is missing the parameter HcalAcceptSeverityLevel. created empty.";
69  }
70 
71  // Digi threshold and time slices to use for HBHE and HF calibration digis
72  useCalibDigi_ = true;
73  if(iConfig.existsAs<double>("calibdigiHBHEthreshold") == false) useCalibDigi_ = false;
74  if(iConfig.existsAs<double>("calibdigiHFthreshold") == false) useCalibDigi_ = false;
75  if(iConfig.existsAs<std::vector<int> >("calibdigiHBHEtimeslices") == false) useCalibDigi_ = false;
76  if(iConfig.existsAs<std::vector<int> >("calibdigiHFtimeslices") == false) useCalibDigi_ = false;
77 
78  if(useCalibDigi_ == true)
79  {
80  calibdigiHBHEthreshold_ = iConfig.getParameter<double>("calibdigiHBHEthreshold");
81  calibdigiHBHEtimeslices_ = iConfig.getParameter<std::vector<int> >("calibdigiHBHEtimeslices");
82  calibdigiHFthreshold_ = iConfig.getParameter<double>("calibdigiHFthreshold");
83  calibdigiHFtimeslices_ = iConfig.getParameter<std::vector<int> >("calibdigiHFtimeslices");
84  }
85  else
86  {
88  calibdigiHBHEtimeslices_ = std::vector<int>();
90  calibdigiHFtimeslices_ = std::vector<int>();
91  }
92 
93  TS4TS5EnergyThreshold_ = iConfig.getParameter<double>("TS4TS5EnergyThreshold");
94 
95  std::vector<double> TS4TS5UpperThresholdTemp = iConfig.getParameter<std::vector<double> >("TS4TS5UpperThreshold");
96  std::vector<double> TS4TS5UpperCutTemp = iConfig.getParameter<std::vector<double> >("TS4TS5UpperCut");
97  std::vector<double> TS4TS5LowerThresholdTemp = iConfig.getParameter<std::vector<double> >("TS4TS5LowerThreshold");
98  std::vector<double> TS4TS5LowerCutTemp = iConfig.getParameter<std::vector<double> >("TS4TS5LowerCut");
99 
100  for(int i = 0; i < (int)TS4TS5UpperThresholdTemp.size() && i < (int)TS4TS5UpperCutTemp.size(); i++)
101  TS4TS5UpperCut_.push_back(std::pair<double, double>(TS4TS5UpperThresholdTemp[i], TS4TS5UpperCutTemp[i]));
102  sort(TS4TS5UpperCut_.begin(), TS4TS5UpperCut_.end());
103 
104  for(int i = 0; i < (int)TS4TS5LowerThresholdTemp.size() && i < (int)TS4TS5LowerCutTemp.size(); i++)
105  TS4TS5LowerCut_.push_back(std::pair<double, double>(TS4TS5LowerThresholdTemp[i], TS4TS5LowerCutTemp[i]));
106  sort(TS4TS5LowerCut_.begin(), TS4TS5LowerCut_.end());
107 
108  // if digis are filled, then rechits must also be filled
109  if(fillDigis_ && !fillRecHits_) {
110  fillRecHits_=true;
111  edm::LogWarning("HCalNoiseInfoProducer") << " forcing fillRecHits to be true if fillDigis is true.\n";
112  }
113 
114  const float adc2fCTemp[128]={-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,
115  13.5,15.,17.,19.,21.,23.,25.,27.,29.5,32.5,35.5,38.5,42.,46.,50.,54.5,59.5,
116  64.5,59.5,64.5,69.5,74.5,79.5,84.5,89.5,94.5,99.5,104.5,109.5,114.5,119.5,
117  124.5,129.5,137.,147.,157.,167.,177.,187.,197.,209.5,224.5,239.5,254.5,272.,
118  292.,312.,334.5,359.5,384.5,359.5,384.5,409.5,434.5,459.5,484.5,509.5,534.5,
119  559.5,584.5,609.5,634.5,659.5,684.5,709.5,747.,797.,847.,897.,947.,997.,
120  1047.,1109.5,1184.5,1259.5,1334.5,1422.,1522.,1622.,1734.5,1859.5,1984.5,
121  1859.5,1984.5,2109.5,2234.5,2359.5,2484.5,2609.5,2734.5,2859.5,2984.5,
122  3109.5,3234.5,3359.5,3484.5,3609.5,3797.,4047.,4297.,4547.,4797.,5047.,
123  5297.,5609.5,5984.5,6359.5,6734.5,7172.,7672.,8172.,8734.5,9359.5,9984.5};
124  for(int i = 0; i < 128; i++)
125  adc2fC[i] = adc2fCTemp[i];
126 
127  hbhedigi_token_ = consumes<HBHEDigiCollection>(edm::InputTag(digiCollName_));
128  hcalcalibdigi_token_ = consumes<HcalCalibDigiCollection>(edm::InputTag("hcalDigis"));
129  hbherechit_token_ = consumes<HBHERecHitCollection>(edm::InputTag(recHitCollName_));
130  calotower_token_ = consumes<CaloTowerCollection>(edm::InputTag(caloTowerCollName_));
131  track_token_ = consumes<reco::TrackCollection>(edm::InputTag(trackCollName_));
132 
133  // we produce a vector of HcalNoiseRBXs
134  produces<HcalNoiseRBXCollection>();
135  // we also produce a noise summary
136  produces<HcalNoiseSummary>();
137 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< int > calibdigiHFtimeslices_
std::vector< int > HcalRecHitFlagsToBeExcluded_
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:185
std::vector< std::pair< double, double > > TS4TS5LowerCut_
bool exists(std::string const &parameterName) const
checks if a parameter exists
edm::EDGetTokenT< reco::PFJetCollection > jet_token_
edm::EDGetTokenT< HcalCalibDigiCollection > hcalcalibdigi_token_
edm::EDGetTokenT< HBHEDigiCollection > hbhedigi_token_
std::vector< std::pair< double, double > > TS4TS5UpperCut_
edm::EDGetTokenT< reco::TrackCollection > track_token_
edm::EDGetTokenT< HBHERecHitCollection > hbherechit_token_
std::vector< int > calibdigiHBHEtimeslices_
edm::EDGetTokenT< CaloTowerCollection > calotower_token_
HcalNoiseInfoProducer::~HcalNoiseInfoProducer ( )

Definition at line 140 of file HcalNoiseInfoProducer.cc.

141 {
142 }

Member Function Documentation

void HcalNoiseInfoProducer::fillcalotwrs ( edm::Event iEvent,
const edm::EventSetup iSetup,
HcalNoiseRBXArray array,
HcalNoiseSummary summary 
) const
private

Definition at line 677 of file HcalNoiseInfoProducer.cc.

References calotower_token_, caloTowerCollName_, CaloTower::emEnergy(), HcalNoiseSummary::emenergy_, edm::hlt::Exception, reco::HcalNoiseRBXArray::findHPD(), edm::Event::getByToken(), CaloTower::hadEnergy(), HcalNoiseSummary::hadenergy_, patZpeak::handle, CaloTower::ietaAbs(), edm::HandleBase::isValid(), maxCaloTowerIEta_, and edm::errors::ProductNotFound.

Referenced by produce().

678 {
679  // get the calotowers
681  // iEvent.getByLabel(caloTowerCollName_, handle);
682  iEvent.getByToken(calotower_token_, handle);
683 
684  if(!handle.isValid()) {
686  << " could not find CaloTowerCollection named " << caloTowerCollName_ << "\n.";
687  return;
688  }
689 
690  summary.emenergy_ = summary.hadenergy_ = 0.0;
691 
692  // loop over all of the calotower information
693  for(CaloTowerCollection::const_iterator it = handle->begin(); it!=handle->end(); ++it) {
694  const CaloTower& twr=(*it);
695 
696  // create a persistent reference to the tower
697  edm::Ref<CaloTowerCollection> myRef(handle, it-handle->begin());
698 
699  // get all of the hpd's that are pointed to by the calotower
700  std::vector<std::vector<HcalNoiseHPD>::iterator> hpditervec;
701  array.findHPD(twr, hpditervec);
702 
703  // loop over the hpd's and add the reference to the RefVectors
704  for(std::vector<std::vector<HcalNoiseHPD>::iterator>::iterator it=hpditervec.begin();
705  it!=hpditervec.end(); ++it)
706  (*it)->calotowers_.push_back(myRef);
707 
708  // skip over anything with |ieta|>maxCaloTowerIEta
709  if(twr.ietaAbs()>maxCaloTowerIEta_) {
710  summary.emenergy_ += twr.emEnergy();
711  summary.hadenergy_ += twr.hadEnergy();
712  }
713  }
714 
715  return;
716 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
std::vector< CaloTower >::const_iterator const_iterator
double emEnergy() const
Definition: CaloTower.h:94
tuple handle
Definition: patZpeak.py:22
std::vector< HcalNoiseHPD >::iterator findHPD(int hpdindex)
bool isValid() const
Definition: HandleBase.h:75
double hadEnergy() const
Definition: CaloTower.h:95
int ietaAbs() const
Definition: CaloTower.h:170
edm::EDGetTokenT< CaloTowerCollection > calotower_token_
void HcalNoiseInfoProducer::filldigis ( edm::Event iEvent,
const edm::EventSetup iSetup,
HcalNoiseRBXArray array,
HcalNoiseSummary summary 
)
private

Definition at line 320 of file HcalNoiseInfoProducer.cc.

References ecalMGPA::adc(), HcalCoderDb::adc2fC(), adc2fC, reco::HcalNoiseRBX::allCharge_, edm::RefVector< C, T, F >::begin(), reco::HcalNoiseHPD::big5Charge_, reco::HcalNoiseHPD::bigCharge_, HcalNoiseSummary::calibCharge_, HcalNoiseSummary::calibChargegt15TS45_, HcalNoiseSummary::calibChargeTS45_, HcalNoiseSummary::calibCountgt15TS45_, HcalNoiseSummary::calibCountHF_, HcalNoiseSummary::calibCountTS45_, calibdigiHBHEthreshold_, calibdigiHBHEtimeslices_, calibdigiHFthreshold_, calibdigiHFtimeslices_, HcalCalibDetId::calibFlavor(), counter, digiCollName_, HcalSeverityLevelComputer::dropChannel(), edm::RefVector< C, T, F >::end(), edm::hlt::Exception, reco::HcalNoiseRBXArray::findHPD(), reco::HcalNoiseRBXArray::findRBX(), edm::EventSetup::get(), edm::Event::getByToken(), HcalChannelStatus::getValue(), HcalCondObjectContainer< Item >::getValues(), patZpeak::handle, hbhedigi_token_, HcalBarrel, hcalcalibdigi_token_, HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummary, HcalEndcap, HcalForward, HcalCalibDetId::HOCrosstalk, i, HBHEDataFrame::id(), edm::HandleBase::isValid(), reco::HcalNoiseHPD::maxZeros_, HcalCalibrations::pedestal(), edm::ESHandle< class >::product(), edm::errors::ProductNotFound, DetId::rawId(), HI_PhotonSkim_cff::rechits, reco::HcalNoiseHPD::rechits_, CaloSamples::size(), TotalCalibCharge, reco::HcalNoiseHPD::totalZeros_, and HBHEDataFrame::zsMarkAndPass().

Referenced by produce().

321 {
322  // Some initialization
323  TotalCalibCharge = 0;
324 
325  // Starting with this version (updated by Jeff Temple on Dec. 6, 2012), the "TS45" names in the variables are mis-nomers. The actual time slices used are determined from the digiTimeSlices_ variable, which may not be limited to only time slices 4 and 5. For now, "TS45" name kept, because that is what is used in HcalNoiseSummary object (in GetCalibCountTS45, etc.). Likewise, the charge value in 'gt15' is now configurable, though the name remains the same. For HBHE, we track both the number of calibration channels (NcalibTS45) and the number of calibration channels above threshold (NcalibTS45gt15). For HF, we track only the number of channels above the given threshold in the given time window (NcalibHFgtX). Default for HF in 2012 is to use the full time sample with effectively no threshold (threshold=-999)
326  int NcalibTS45=0;
327  int NcalibTS45gt15=0;
328  int NcalibHFgtX=0;
329 
330  double chargecalibTS45=0;
331  double chargecalibgt15TS45=0;
332 
333  // get the conditions and channel quality
334  edm::ESHandle<HcalDbService> conditions;
335  iSetup.get<HcalDbRecord>().get(conditions);
337  iSetup.get<HcalChannelQualityRcd>().get("withTopo",qualhandle);
338  const HcalChannelQuality* myqual = qualhandle.product();
340  iSetup.get<HcalSeverityLevelComputerRcd>().get(mycomputer);
341  const HcalSeverityLevelComputer* mySeverity = mycomputer.product();
342 
343  // get the digis
345  // iEvent.getByLabel(digiCollName_, handle);
346  iEvent.getByToken(hbhedigi_token_, handle);
347 
348  if(!handle.isValid()) {
349  throw edm::Exception(edm::errors::ProductNotFound) << " could not find HBHEDigiCollection named " << digiCollName_ << "\n.";
350  return;
351  }
352 
353  // loop over all of the digi information
354  for(HBHEDigiCollection::const_iterator it=handle->begin(); it!=handle->end(); ++it) {
355  const HBHEDataFrame &digi=(*it);
356  HcalDetId cell = digi.id();
357  DetId detcell=(DetId)cell;
358 
359  // check on cells to be ignored and dropped
360  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
361  if(mySeverity->dropChannel(mydigistatus->getValue())) continue;
362  if(digi.zsMarkAndPass()) continue;
363  // Drop if exclude bit set
364  if ((mydigistatus->getValue() & (1 <<HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummary))==1) continue;
365 
366  // get the calibrations and coder
367  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
368  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
369  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
370  HcalCoderDb coder (*channelCoder, *shape);
371 
372  // match the digi to an rbx and hpd
373  HcalNoiseRBX &rbx=(*array.findRBX(digi));
374  HcalNoiseHPD &hpd=(*array.findHPD(digi));
375 
376  // determine if the digi is one the highest energy hits in the HPD
377  // this works because the rechits are sorted by energy (see fillrechits() below)
378  bool isBig=false, isBig5=false, isRBX=false;
379  int counter=0;
382  rit!=rechits.end(); ++rit, ++counter) {
383  if((*rit)->id() == digi.id()) {
384  if(counter==0) isBig=isBig5=true; // digi is also the highest energy rechit
385  if(counter<5) isBig5=true; // digi is one of 5 highest energy rechits
386  isRBX=true;
387  }
388  }
389 
390  // loop over each of the digi's time slices
391  int totalzeros=0;
392  CaloSamples tool;
393  coder.adc2fC(digi,tool);
394  for(int ts=0; ts<tool.size(); ++ts) {
395 
396  // count zero's
397  if(digi[ts].adc()==0) {
398  ++hpd.totalZeros_;
399  ++totalzeros;
400  }
401 
402  // get the fC's
403  double corrfc = tool[ts]-calibrations.pedestal(digi[ts].capid());
404 
405  // fill the relevant digi arrays
406  if(isBig) hpd.bigCharge_[ts]+=corrfc;
407  if(isBig5) hpd.big5Charge_[ts]+=corrfc;
408  if(isRBX) rbx.allCharge_[ts]+=corrfc;
409  }
410 
411  // record the maximum number of zero's found
412  if(totalzeros>hpd.maxZeros_)
413  hpd.maxZeros_=totalzeros;
414  }
415 
416  // get the calibration digis
418  // iEvent.getByLabel("hcalDigis", hCalib);
419  iEvent.getByToken(hcalcalibdigi_token_, hCalib);
420 
421  // get total charge in calibration channels
422  if(hCalib.isValid() == true)
423  {
424  for(HcalCalibDigiCollection::const_iterator digi = hCalib->begin(); digi != hCalib->end(); digi++)
425  {
426  if(digi->id().hcalSubdet() == 0)
427  continue;
428 
429  /*
430  HcalCalibDetId cell = digi->id();
431  DetId detcell = (DetId)cell;
432 
433  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
434 
435  if(mySeverity->dropChannel(mydigistatus->getValue()))
436  continue;
437  if(digi->zsMarkAndPass())
438  continue;
439 
440  const HcalQIECoder *channelCoder = conditions->getHcalCoder(cell);
441  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
442  HcalCoderDb coder(*channelCoder, *shape);
443 
444  CaloSamples tool;
445  coder.adc2fC(*digi, tool);
446 
447  for(int i = 0; i < (int)digi->size(); i++)
448  TotalCalibCharge = TotalCalibCharge + tool[i];
449  */
450 
451  // Original code computes total calib charge over all digis. While I think it would be more useful to skip
452  // zs mark-and-pass channels, I keep this computation as is. Individual HBHE and HF variables do skip
453  // the m-p channels. -- Jeff Temple, 6 December 2012
454 
455  for(int i = 0; i < (int)digi->size(); i++)
456  TotalCalibCharge = TotalCalibCharge + adc2fC[digi->sample(i).adc()&0xff];
457 
458 
459  HcalCalibDetId myid=(HcalCalibDetId)digi->id();
461  continue; // ignore HOCrosstalk channels
462  if(digi->zsMarkAndPass()) continue; // skip "mark-and-pass" channels when computing charge in calib channels
463 
464 
465  if (digi->id().hcalSubdet()==HcalForward) // check HF
466  {
467  double sumChargeHF=0;
468  for (unsigned int i=0;i<calibdigiHFtimeslices_.size();++i)
469  {
470  // skip unphysical time slices
472  continue;
473  sumChargeHF+=adc2fC[digi->sample(calibdigiHFtimeslices_[i]).adc()&0xff];
474  }
475  if (sumChargeHF>calibdigiHFthreshold_) ++NcalibHFgtX;
476  } // end of HF check
477  else if (digi->id().hcalSubdet()==HcalBarrel || digi->id().hcalSubdet()==HcalEndcap) // now check HBHE
478  {
479  double sumChargeHBHE=0;
480  for (unsigned int i=0;i<calibdigiHBHEtimeslices_.size();++i)
481  {
482  // skip unphysical time slices
484  continue;
485  sumChargeHBHE+=adc2fC[digi->sample(calibdigiHBHEtimeslices_[i]).adc()&0xff];
486  }
487  ++NcalibTS45;
488  chargecalibTS45+=sumChargeHBHE;
489  if (sumChargeHBHE>calibdigiHBHEthreshold_)
490  {
491  ++NcalibTS45gt15;
492  chargecalibgt15TS45+=sumChargeHBHE;
493  }
494  } // end of HBHE check
495  } // loop on HcalCalibDigiCollection
496  } // if (hCalib.isValid()==true)
497 
498  summary.calibCharge_ = TotalCalibCharge;
499  summary.calibCountTS45_=NcalibTS45;
500  summary.calibCountgt15TS45_=NcalibTS45gt15;
501  summary.calibChargeTS45_=chargecalibTS45;
502  summary.calibChargegt15TS45_=chargecalibgt15TS45;
503  summary.calibCountHF_=NcalibHFgtX;
504 
505  return;
506 }
int adc(sample_type sample)
get the ADC sample (12 bits)
int i
Definition: DBlmapReader.cc:9
std::vector< int > calibdigiHFtimeslices_
bool zsMarkAndPass() const
was ZS MarkAndPass?
Definition: HBHEDataFrame.h:30
CalibDetType calibFlavor() const
get the flavor of this calibration detid
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
int adc() const
get the ADC sample
Definition: HcalQIESample.h:22
int size() const
total number of samples in the digi
Definition: HBHEDataFrame.h:26
std::vector< HBHEDataFrame >::const_iterator const_iterator
std::vector< float > bigCharge_
Definition: HcalNoiseHPD.h:137
std::vector< float > big5Charge_
Definition: HcalNoiseHPD.h:138
double pedestal(int fCapId) const
get pedestal for capid=0..3
const Item * getValues(DetId fId, bool throwOnFail=true) const
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:249
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:244
edm::RefVector< HBHERecHitCollection > rechits_
Definition: HcalNoiseHPD.h:141
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
HcalNoiseRBXArray::iterator findRBX(int rbxindex)
edm::EDGetTokenT< HcalCalibDigiCollection > hcalcalibdigi_token_
tuple handle
Definition: patZpeak.py:22
std::vector< HcalNoiseHPD >::iterator findHPD(int hpdindex)
bool dropChannel(const uint32_t &mystatus) const
edm::EDGetTokenT< HBHEDigiCollection > hbhedigi_token_
bool isValid() const
Definition: HandleBase.h:75
std::vector< float > allCharge_
Definition: HcalNoiseRBX.h:115
Definition: DetId.h:18
int size() const
get the size
Definition: CaloSamples.h:24
const HcalQIESample & sample(int i) const
access a sample
Definition: HBHEDataFrame.h:39
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
static std::atomic< unsigned int > counter
std::vector< int > calibdigiHBHEtimeslices_
const HcalDetId & id() const
Definition: HBHEDataFrame.h:22
uint32_t getValue() const
void HcalNoiseInfoProducer::filljetinfo ( edm::Event iEvent,
const edm::EventSetup iSetup,
HcalNoiseSummary summary 
) const
private

Definition at line 720 of file HcalNoiseInfoProducer.cc.

References edm::Event::getByToken(), HcalNoiseSummary::goodJetFoundInLowBVRegion_, edm::HandleBase::isValid(), metsig::jet, jet_token_, jetCollName_, maxjetindex_, maxNHF_, and reco::btau::neutralHadronEnergyFraction.

Referenced by produce().

721 {
722  bool goodJetFoundInLowBVRegion = false; // checks whether a jet is in
723  // a low BV region, where false
724  // noise flagging rate is higher.
725  if (!jetCollName_.empty())
726  {
728  iEvent.getByToken(jet_token_, pfjet_h);
729 
730  if (pfjet_h.isValid())
731  {
732  int jetindex=0;
733  for(reco::PFJetCollection::const_iterator jet = pfjet_h->begin();
734  jet != pfjet_h->end(); ++jet)
735  {
736  if (jetindex>maxjetindex_) break; // only look at jets with
737  // indices up to maxjetindex_
738 
739  // Check whether jet is in low-BV region (0<eta<1.4, -1.8<phi<-1.4)
740  if (jet->eta()>0.0 && jet->eta()<1.4 &&
741  jet->phi()>-1.8 && jet->phi()<-1.4)
742  {
743  // Look for a good jet in low BV region;
744  // if found, we will keep event
745  if (maxNHF_<0.0 || jet->neutralHadronEnergyFraction()<maxNHF_)
746  {
747  goodJetFoundInLowBVRegion=true;
748  break;
749  }
750  }
751  ++jetindex;
752  }
753  }
754  }
755 
756  summary.goodJetFoundInLowBVRegion_ = goodJetFoundInLowBVRegion;
757 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
edm::EDGetTokenT< reco::PFJetCollection > jet_token_
bool isValid() const
Definition: HandleBase.h:75
void HcalNoiseInfoProducer::fillOtherSummaryVariables ( HcalNoiseSummary summary,
const CommonHcalNoiseRBXData data 
) const
private

Definition at line 224 of file HcalNoiseInfoProducer.cc.

References algo_, HcalNoiseSummary::cnthit10_, HcalNoiseSummary::cnthit25_, CommonHcalNoiseRBXData::e10ts(), CommonHcalNoiseRBXData::e2ts(), HcalNoiseSummary::filterstatus_, HcalNoiseSummary::hasBadRBXRechitR45Loose_, HcalNoiseSummary::hasBadRBXRechitR45Tight_, HcalNoiseSummary::hasBadRBXTS4TS5_, CommonHcalNoiseRBXData::highEHitTimeSqrd(), HcalNoiseSummary::hlnoisetwrs_, CommonHcalNoiseRBXData::HPDEMF(), join(), HcalNoiseSummary::loosenoisetwrs_, CommonHcalNoiseRBXData::lowEHitTimeSqrd(), HcalNoiseSummary::max10_, HcalNoiseSummary::max10GeVHitTime(), HcalNoiseSummary::max25_, HcalNoiseSummary::max25GeVHitTime(), HcalNoiseSummary::maxe10ts_, HcalNoiseSummary::maxE2Over10TS(), HcalNoiseSummary::maxe2ts_, CommonHcalNoiseRBXData::maxHighEHitTime(), HcalNoiseSummary::maxHPDHits(), HcalNoiseSummary::maxhpdhits_, HcalNoiseSummary::maxhpdhitsnoother_, HcalNoiseSummary::maxHPDNoOtherHits(), CommonHcalNoiseRBXData::maxLowEHitTime(), HcalNoiseSummary::maxRBXHits(), HcalNoiseSummary::maxrbxhits_, HcalNoiseSummary::maxZeros(), HcalNoiseSummary::maxzeros_, HcalNoiseSummary::min10_, HcalNoiseSummary::min10GeVHitTime(), HcalNoiseSummary::min25_, HcalNoiseSummary::min25GeVHitTime(), HcalNoiseSummary::mine10ts_, HcalNoiseSummary::minE2Over10TS(), HcalNoiseSummary::mine2ts_, CommonHcalNoiseRBXData::minHighEHitTime(), HcalNoiseSummary::minHPDEMF(), HcalNoiseSummary::minhpdemf_, CommonHcalNoiseRBXData::minLowEHitTime(), HcalNoiseSummary::minRBXEMF(), HcalNoiseSummary::minrbxemf_, CommonHcalNoiseRBXData::numHighEHits(), CommonHcalNoiseRBXData::numHPDHits(), CommonHcalNoiseRBXData::numHPDNoOtherHits(), CommonHcalNoiseRBXData::numLowEHits(), CommonHcalNoiseRBXData::numRBXHits(), CommonHcalNoiseRBXData::numZeros(), HcalNoiseAlgo::passEMFThreshold(), HcalNoiseAlgo::passHighLevelNoiseFilter(), HcalNoiseAlgo::passLooseHits(), HcalNoiseAlgo::passLooseNoiseFilter(), HcalNoiseAlgo::passLooseRatio(), HcalNoiseAlgo::passLooseRBXRechitR45(), HcalNoiseAlgo::passLooseTiming(), HcalNoiseAlgo::passLooseZeros(), HcalNoiseAlgo::passRatioThreshold(), HcalNoiseAlgo::passTightHits(), HcalNoiseAlgo::passTightNoiseFilter(), HcalNoiseAlgo::passTightRatio(), HcalNoiseAlgo::passTightRBXRechitR45(), HcalNoiseAlgo::passTightTiming(), HcalNoiseAlgo::passTightZeros(), CommonHcalNoiseRBXData::PassTS4TS5(), HcalNoiseAlgo::passZerosThreshold(), CommonHcalNoiseRBXData::ratio(), CommonHcalNoiseRBXData::RBXEMF(), CommonHcalNoiseRBXData::rbxTowers(), HcalNoiseSummary::rms10_, HcalNoiseSummary::rms25_, HcalNoiseSummary::tightnoisetwrs_, and CommonHcalNoiseRBXData::validRatio().

Referenced by produce().

225 {
226  // charge ratio
227  if(algo_.passRatioThreshold(data) && data.validRatio()) {
228  if(data.ratio()<summary.minE2Over10TS()) {
229  summary.mine2ts_ = data.e2ts();
230  summary.mine10ts_ = data.e10ts(); }
231  if(data.ratio()>summary.maxE2Over10TS()) {
232  summary.maxe2ts_ = data.e2ts();
233  summary.maxe10ts_ = data.e10ts();
234  }
235  }
236 
237  // ADC zeros
238  if(algo_.passZerosThreshold(data)) {
239  if(data.numZeros()>summary.maxZeros()) {
240  summary.maxzeros_ = data.numZeros();
241  }
242  }
243 
244  // hits count
245  if(data.numHPDHits() > summary.maxHPDHits()) {
246  summary.maxhpdhits_ = data.numHPDHits();
247  }
248  if(data.numRBXHits() > summary.maxRBXHits()) {
249  summary.maxrbxhits_ = data.numRBXHits();
250  }
251  if(data.numHPDNoOtherHits() > summary.maxHPDNoOtherHits()) {
252  summary.maxhpdhitsnoother_ = data.numHPDNoOtherHits();
253  }
254 
255  // TS4TS5
256  if(data.PassTS4TS5() == false)
257  summary.hasBadRBXTS4TS5_ = true;
258 
259  if(algo_.passLooseRBXRechitR45(data) == false)
260  summary.hasBadRBXRechitR45Loose_ = true;
261  if(algo_.passTightRBXRechitR45(data) == false)
262  summary.hasBadRBXRechitR45Tight_ = true;
263 
264  // hit timing
265  if(data.minLowEHitTime()<summary.min10GeVHitTime()) {
266  summary.min10_ = data.minLowEHitTime();
267  }
268  if(data.maxLowEHitTime()>summary.max10GeVHitTime()) {
269  summary.max10_ = data.maxLowEHitTime();
270  }
271  summary.rms10_ += data.lowEHitTimeSqrd();
272  summary.cnthit10_ += data.numLowEHits();
273  if(data.minHighEHitTime()<summary.min25GeVHitTime()) {
274  summary.min25_ = data.minHighEHitTime();
275  }
276  if(data.maxHighEHitTime()>summary.max25GeVHitTime()) {
277  summary.max25_ = data.maxHighEHitTime();
278  }
279  summary.rms25_ += data.highEHitTimeSqrd();
280  summary.cnthit25_ += data.numHighEHits();
281 
282  // EMF
283  if(algo_.passEMFThreshold(data)) {
284  if(summary.minHPDEMF() > data.HPDEMF()) {
285  summary.minhpdemf_ = data.HPDEMF();
286  }
287  if(summary.minRBXEMF() > data.RBXEMF()) {
288  summary.minrbxemf_ = data.RBXEMF();
289  }
290  }
291 
292  // summary flag
293  if(!algo_.passLooseRatio(data)) summary.filterstatus_ |= 0x1;
294  if(!algo_.passLooseHits(data)) summary.filterstatus_ |= 0x2;
295  if(!algo_.passLooseZeros(data)) summary.filterstatus_ |= 0x4;
296  if(!algo_.passLooseTiming(data)) summary.filterstatus_ |= 0x8;
297 
298  if(!algo_.passTightRatio(data)) summary.filterstatus_ |= 0x100;
299  if(!algo_.passTightHits(data)) summary.filterstatus_ |= 0x200;
300  if(!algo_.passTightZeros(data)) summary.filterstatus_ |= 0x400;
301  if(!algo_.passTightTiming(data)) summary.filterstatus_ |= 0x800;
302 
303  if(!algo_.passHighLevelNoiseFilter(data)) summary.filterstatus_ |= 0x10000;
304 
305  // summary refvectors
307  if(!algo_.passLooseNoiseFilter(data))
308  join(summary.loosenoisetwrs_, data.rbxTowers());
309  if(!algo_.passTightNoiseFilter(data))
310  join(summary.tightnoisetwrs_, data.rbxTowers());
312  join(summary.hlnoisetwrs_, data.rbxTowers());
313 
314  return;
315 }
double e10ts(void) const
Definition: HcalNoiseAlgo.h:23
double HPDEMF(void) const
Definition: HcalNoiseAlgo.h:38
double e2ts(void) const
Definition: HcalNoiseAlgo.h:22
edm::RefVector< CaloTowerCollection > hlnoisetwrs_
double lowEHitTimeSqrd(void) const
Definition: HcalNoiseAlgo.h:31
bool passTightRatio(const CommonHcalNoiseRBXData &) const
double minLowEHitTime(void) const
Definition: HcalNoiseAlgo.h:29
bool passLooseRatio(const CommonHcalNoiseRBXData &) const
bool passTightRBXRechitR45(const CommonHcalNoiseRBXData &) const
double maxHighEHitTime(void) const
Definition: HcalNoiseAlgo.h:34
bool passTightTiming(const CommonHcalNoiseRBXData &) const
double maxLowEHitTime(void) const
Definition: HcalNoiseAlgo.h:30
int numLowEHits(void) const
Definition: HcalNoiseAlgo.h:32
double ratio(void) const
Definition: HcalNoiseAlgo.h:21
float maxE2Over10TS(void) const
edm::RefVector< CaloTowerCollection > loosenoisetwrs_
bool passLooseRBXRechitR45(const CommonHcalNoiseRBXData &) const
float min25GeVHitTime(void) const
bool passHighLevelNoiseFilter(const CommonHcalNoiseRBXData &) const
double RBXEMF(void) const
Definition: HcalNoiseAlgo.h:37
int numRBXHits(void) const
Definition: HcalNoiseAlgo.h:26
float min10GeVHitTime(void) const
double highEHitTimeSqrd(void) const
Definition: HcalNoiseAlgo.h:35
float minE2Over10TS(void) const
bool passLooseZeros(const CommonHcalNoiseRBXData &) const
int maxRBXHits(void) const
bool passTightZeros(const CommonHcalNoiseRBXData &) const
int numHighEHits(void) const
Definition: HcalNoiseAlgo.h:36
bool passRatioThreshold(const CommonHcalNoiseRBXData &) const
int numHPDNoOtherHits(void) const
Definition: HcalNoiseAlgo.h:27
int numZeros(void) const
Definition: HcalNoiseAlgo.h:28
bool passZerosThreshold(const CommonHcalNoiseRBXData &) const
float minHPDEMF(void) const
bool passLooseNoiseFilter(const CommonHcalNoiseRBXData &) const
edm::RefVector< CaloTowerCollection > rbxTowers(void) const
Definition: HcalNoiseAlgo.h:40
bool passLooseHits(const CommonHcalNoiseRBXData &) const
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
int maxZeros(void) const
edm::RefVector< CaloTowerCollection > tightnoisetwrs_
bool passLooseTiming(const CommonHcalNoiseRBXData &) const
bool passTightNoiseFilter(const CommonHcalNoiseRBXData &) const
int maxHPDNoOtherHits(void) const
double minHighEHitTime(void) const
Definition: HcalNoiseAlgo.h:33
float minRBXEMF(void) const
bool PassTS4TS5(void) const
Definition: HcalNoiseAlgo.h:39
bool passEMFThreshold(const CommonHcalNoiseRBXData &) const
int maxHPDHits(void) const
int numHPDHits(void) const
Definition: HcalNoiseAlgo.h:25
float max25GeVHitTime(void) const
float max10GeVHitTime(void) const
bool validRatio(void) const
Definition: HcalNoiseAlgo.h:24
bool passTightHits(const CommonHcalNoiseRBXData &) const
void HcalNoiseInfoProducer::fillrechits ( edm::Event iEvent,
const edm::EventSetup iSetup,
HcalNoiseRBXArray array,
HcalNoiseSummary summary 
) const
private

Definition at line 510 of file HcalNoiseInfoProducer.cc.

References CaloRecHit::detid(), HcalNoiseSummary::energyInLaserRegion_, HcalNoiseSummary::energyInNonLaserRegion_, HBHERecHit::eraw(), edm::hlt::Exception, reco::HcalNoiseRBXArray::findHPD(), CaloRecHit::flags(), HcalNoiseSummary::flatnoisee_, HcalNoiseSummary::flatnoiseet_, edm::EventSetup::get(), edm::Event::getByToken(), CaloGeometry::getPosition(), HcalSeverityLevelComputer::getSeverityLevel(), HcalChannelStatus::getValue(), HcalCondObjectContainer< Item >::getValues(), patZpeak::handle, HcalCaloFlagLabels::HBHEFlatNoise, HcalCaloFlagLabels::HBHEIsolatedNoise, HcalCaloFlagLabels::HBHENegativeNoise, hbherechit_token_, HcalCaloFlagLabels::HBHESpikeNoise, HcalCaloFlagLabels::HBHETriangleNoise, HcalCaloFlagLabels::HBHETS4TS5Noise, HcalAcceptSeverityLevel_, HcalChannelStatus::HcalBadLaserSignal, HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummary, HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummaryR45, HcalRecHitFlagsToBeExcluded_, HcalNoiseSummary::hitsInLaserRegion_, HcalNoiseSummary::hitsInNonLaserRegion_, i, HBHERecHit::id(), HcalNoiseSummary::isolnoisee_, HcalNoiseSummary::isolnoiseet_, edm::HandleBase::isValid(), HcalNoiseSummary::negativenoisee_, HcalNoiseSummary::negativenoiseet_, HcalNoiseSummary::nflatnoise_, HcalNoiseSummary::nisolnoise_, HcalNoiseSummary::nnegativenoise_, HcalNoiseSummary::nspikenoise_, HcalNoiseSummary::ntrianglenoise_, HcalNoiseSummary::nts4ts5noise_, edm::ESHandle< class >::product(), edm::errors::ProductNotFound, recHitCollName_, HcalNoiseSummary::rechitCount15_, HcalNoiseSummary::rechitCount_, HcalNoiseSummary::rechitEnergy15_, HcalNoiseSummary::rechitEnergy_, HcalSeverityLevelComputer::recoveredRecHit(), reco::HcalNoiseHPD::refrechitset_, HcalNoiseSummary::spikenoisee_, HcalNoiseSummary::spikenoiseet_, HcalNoiseSummary::trianglenoisee_, HcalNoiseSummary::trianglenoiseet_, HcalNoiseSummary::ts4ts5noisee_, and HcalNoiseSummary::ts4ts5noiseet_.

Referenced by produce().

511 {
512  // get the HCAL channel status map
514  iSetup.get<HcalChannelQualityRcd>().get( "withTopo", hcalChStatus );
515  const HcalChannelQuality* dbHcalChStatus = hcalChStatus.product();
516 
517  // get the severity level computer
518  edm::ESHandle<HcalSeverityLevelComputer> hcalSevLvlComputerHndl;
519  iSetup.get<HcalSeverityLevelComputerRcd>().get(hcalSevLvlComputerHndl);
520  const HcalSeverityLevelComputer* hcalSevLvlComputer = hcalSevLvlComputerHndl.product();
521 
522  // get the calo geometry
524  iSetup.get<CaloGeometryRecord>().get(pG);
525  const CaloGeometry* geo = pG.product();
526 
527  // get the rechits
529  // iEvent.getByLabel(recHitCollName_, handle);
530  iEvent.getByToken(hbherechit_token_, handle);
531 
532  if(!handle.isValid()) {
534  << " could not find HBHERecHitCollection named " << recHitCollName_ << "\n.";
535  return;
536  }
537 
538  summary.rechitCount_ = 0;
539  summary.rechitCount15_ = 0;
540  summary.rechitEnergy_ = 0;
541  summary.rechitEnergy15_ = 0;
542 
543  summary.hitsInLaserRegion_=0;
544  summary.hitsInNonLaserRegion_=0;
545  summary.energyInLaserRegion_=0;
546  summary.energyInNonLaserRegion_=0;
547 
548 
549 
550  // loop over all of the rechit information
551  for(HBHERecHitCollection::const_iterator it=handle->begin(); it!=handle->end(); ++it) {
552  const HBHERecHit &rechit=(*it);
553 
554  // skip bad rechits (other than those flagged by the isolated noise, triangle, flat, and spike algorithms)
555  const DetId id = rechit.detid();
556  uint32_t recHitFlag = rechit.flags();
557  uint32_t isolbitset = (1 << HcalCaloFlagLabels::HBHEIsolatedNoise);
558  uint32_t flatbitset = (1 << HcalCaloFlagLabels::HBHEFlatNoise);
559  uint32_t spikebitset = (1 << HcalCaloFlagLabels::HBHESpikeNoise);
560  uint32_t trianglebitset = (1 << HcalCaloFlagLabels::HBHETriangleNoise);
561  uint32_t ts4ts5bitset = (1 << HcalCaloFlagLabels::HBHETS4TS5Noise);
562  uint32_t negativebitset = (1 << HcalCaloFlagLabels::HBHENegativeNoise);
563  for(unsigned int i=0; i<HcalRecHitFlagsToBeExcluded_.size(); i++) {
564  uint32_t bitset = (1 << HcalRecHitFlagsToBeExcluded_[i]);
565  recHitFlag = (recHitFlag & bitset) ? recHitFlag-bitset : recHitFlag;
566  }
567  const uint32_t dbStatusFlag = dbHcalChStatus->getValues(id)->getValue();
568 
569  // Ignore rechit if exclude bit set, regardless of severity of other bits
570  if ((dbStatusFlag & (1 <<HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummary))==1) continue;
571 
572  int severityLevel = hcalSevLvlComputer->getSeverityLevel(id, recHitFlag, dbStatusFlag);
573  bool isRecovered = hcalSevLvlComputer->recoveredRecHit(id, recHitFlag);
574  if(severityLevel!=0 && !isRecovered && severityLevel>static_cast<int>(HcalAcceptSeverityLevel_)) continue;
575 
576  // do some rechit counting and energies
577  summary.rechitCount_ = summary.rechitCount_ + 1;
578  summary.rechitEnergy_ = summary.rechitEnergy_ + rechit.eraw();
579  if ((dbStatusFlag & (1 <<HcalChannelStatus::HcalBadLaserSignal))==1) // hit comes from a region where no laser calibration pulse is normally seen
580  {
581  ++summary.hitsInNonLaserRegion_;
582  summary.energyInNonLaserRegion_+=rechit.eraw();
583  }
584  else // hit comes from region where laser calibration pulse is seen
585  {
586  ++summary.hitsInLaserRegion_;
587  summary.energyInLaserRegion_+=rechit.eraw();
588  }
589 
590  if(rechit.eraw() > 1.5)
591  {
592  summary.rechitCount15_ = summary.rechitCount15_ + 1;
593  summary.rechitEnergy15_ = summary.rechitEnergy15_ + rechit.eraw();
594  }
595 
596  // if it was ID'd as isolated noise, update the summary object
597  if(rechit.flags() & isolbitset) {
598  summary.nisolnoise_++;
599  summary.isolnoisee_ += rechit.eraw();
600  GlobalPoint gp = geo->getPosition(rechit.id());
601  double et = rechit.eraw()*gp.perp()/gp.mag();
602  summary.isolnoiseet_ += et;
603  }
604 
605  if(rechit.flags() & flatbitset) {
606  summary.nflatnoise_++;
607  summary.flatnoisee_ += rechit.eraw();
608  GlobalPoint gp = geo->getPosition(rechit.id());
609  double et = rechit.eraw()*gp.perp()/gp.mag();
610  summary.flatnoiseet_ += et;
611  }
612 
613  if(rechit.flags() & spikebitset) {
614  summary.nspikenoise_++;
615  summary.spikenoisee_ += rechit.eraw();
616  GlobalPoint gp = geo->getPosition(rechit.id());
617  double et = rechit.eraw()*gp.perp()/gp.mag();
618  summary.spikenoiseet_ += et;
619  }
620 
621  if(rechit.flags() & trianglebitset) {
622  summary.ntrianglenoise_++;
623  summary.trianglenoisee_ += rechit.eraw();
624  GlobalPoint gp = geo->getPosition(rechit.id());
625  double et = rechit.eraw()*gp.perp()/gp.mag();
626  summary.trianglenoiseet_ += et;
627  }
628 
629  if(rechit.flags() & ts4ts5bitset) {
630  if ((dbStatusFlag & (1 <<HcalChannelStatus::HcalCellExcludeFromHBHENoiseSummaryR45))==0) // only add to TS4TS5 if the bit is not marked as "HcalCellExcludeFromHBHENoiseSummaryR45"
631  {
632  summary.nts4ts5noise_++;
633  summary.ts4ts5noisee_ += rechit.eraw();
634  GlobalPoint gp = geo->getPosition(rechit.id());
635  double et = rechit.eraw()*gp.perp()/gp.mag();
636  summary.ts4ts5noiseet_ += et;
637  }
638  }
639 
640  if(rechit.flags() & negativebitset) {
641  summary.nnegativenoise_++;
642  summary.negativenoisee_ += rechit.eraw();
643  GlobalPoint gp = geo->getPosition(rechit.id());
644  double et = rechit.eraw()*gp.perp()/gp.mag();
645  summary.negativenoiseet_ += et;
646  }
647 
648  // find the hpd that the rechit is in
649  HcalNoiseHPD& hpd=(*array.findHPD(rechit));
650 
651  // create a persistent reference to the rechit
652  edm::Ref<HBHERecHitCollection> myRef(handle, it-handle->begin());
653 
654  // store it in a place so that it remains sorted by energy
655  hpd.refrechitset_.insert(myRef);
656 
657  } // end loop over rechits
658 
659  // loop over all HPDs and transfer the information from refrechitset_ to rechits_;
660  for(HcalNoiseRBXArray::iterator rbxit=array.begin(); rbxit!=array.end(); ++rbxit) {
661  for(std::vector<HcalNoiseHPD>::iterator hpdit=rbxit->hpds_.begin(); hpdit!=rbxit->hpds_.end(); ++hpdit) {
662 
663  // loop over all of the entries in the set and add them to rechits_
665  it=hpdit->refrechitset_.begin(); it!=hpdit->refrechitset_.end(); ++it) {
666  hpdit->rechits_.push_back(*it);
667  }
668  }
669  }
670  // now the rechits in all the HPDs are sorted by energy!
671 
672  return;
673 }
int i
Definition: DBlmapReader.cc:9
std::vector< int > HcalRecHitFlagsToBeExcluded_
T perp() const
Definition: PV3DBase.h:72
const DetId & detid() const
Definition: CaloRecHit.h:20
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
HcalDetId id() const
get the id
Definition: HBHERecHit.h:23
std::set< edm::Ref< HBHERecHitCollection >, RefHBHERecHitEnergyComparison > refrechitset_
Definition: HcalNoiseHPD.h:145
std::vector< HBHERecHit >::const_iterator const_iterator
const Item * getValues(DetId fId, bool throwOnFail=true) const
T mag() const
Definition: PV3DBase.h:67
bool recoveredRecHit(const DetId &myid, const uint32_t &myflag) const
uint32_t flags() const
Definition: CaloRecHit.h:21
tuple handle
Definition: patZpeak.py:22
std::vector< HcalNoiseHPD >::iterator findHPD(int hpdindex)
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:68
bool isValid() const
Definition: HandleBase.h:75
Definition: DetId.h:18
edm::EDGetTokenT< HBHERecHitCollection > hbherechit_token_
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
double energyInNonLaserRegion_
float eraw() const
Definition: HBHERecHit.h:26
uint32_t getValue() const
void HcalNoiseInfoProducer::filltracks ( edm::Event iEvent,
const edm::EventSetup iSetup,
HcalNoiseSummary summary 
) const
private

Definition at line 761 of file HcalNoiseInfoProducer.cc.

References reco::TrackBase::eta(), edm::Event::getByToken(), patZpeak::handle, edm::HandleBase::isValid(), maxTrackEta_, minTrackPt_, reco::TrackBase::p(), reco::TrackBase::pt(), track_token_, and HcalNoiseSummary::trackenergy_.

Referenced by produce().

762 {
764  // iEvent.getByLabel(trackCollName_, handle);
765  iEvent.getByToken(track_token_, handle);
766 
767  // don't throw exception, just return quietly
768  if(!handle.isValid()) {
769  // throw edm::Exception(edm::errors::ProductNotFound)
770  // << " could not find trackCollection named " << trackCollName_ << "\n.";
771  return;
772  }
773 
774  summary.trackenergy_=0.0;
775  for(reco::TrackCollection::const_iterator iTrack = handle->begin(); iTrack!=handle->end(); ++iTrack) {
776  reco::Track trk=*iTrack;
777  if(trk.pt()<minTrackPt_ || fabs(trk.eta())>maxTrackEta_) continue;
778 
779  summary.trackenergy_ += trk.p();
780  }
781 
782  return;
783 }
double p() const
momentum vector magnitude
Definition: TrackBase.h:568
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:604
double pt() const
track transverse momentum
Definition: TrackBase.h:574
tuple handle
Definition: patZpeak.py:22
bool isValid() const
Definition: HandleBase.h:75
edm::EDGetTokenT< reco::TrackCollection > track_token_
void HcalNoiseInfoProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::stream::EDProducerBase.

Definition at line 151 of file HcalNoiseInfoProducer.cc.

References algo_, data, CommonHcalNoiseRBXData::energy(), fillCaloTowers_, fillcalotwrs(), filldigis(), fillDigis_, filljetinfo(), fillOtherSummaryVariables(), fillrechits(), fillRecHits_, filltracks(), fillTracks_, HcalNoiseAlgo::isProblematic(), maxProblemRBXs_, minHighHitE_, minLowHitE_, minR45HitE_, minRecHitE_, HcalNoiseSummary::nproblemRBXs_, HcalNoiseAlgo::passHighLevelNoiseFilter(), HcalNoiseAlgo::passLooseNoiseFilter(), HcalNoiseAlgo::passTightNoiseFilter(), edm::Event::put(), edmLumisInFiles::summary, TS4TS5EnergyThreshold_, TS4TS5LowerCut_, and TS4TS5UpperCut_.

152 {
153  // this is what we're going to actually write to the EDM
154  std::auto_ptr<HcalNoiseRBXCollection> result1(new HcalNoiseRBXCollection);
155  std::auto_ptr<HcalNoiseSummary> result2(new HcalNoiseSummary);
156 
157  // define an empty HcalNoiseRBXArray that we're going to fill
158  HcalNoiseRBXArray rbxarray;
159  HcalNoiseSummary &summary=*result2;
160 
161  // fill them with the various components
162  // digi assumes that rechit information is available
163  if(fillRecHits_) fillrechits(iEvent, iSetup, rbxarray, summary);
164  if(fillDigis_) filldigis(iEvent, iSetup, rbxarray, summary);
165  if(fillCaloTowers_) fillcalotwrs(iEvent, iSetup, rbxarray, summary);
166  if(fillTracks_) filltracks(iEvent, iSetup, summary);
167 
168  filljetinfo(iEvent, iSetup, summary);
169 
170  // Why is this here? Shouldn't it have been in the filldigis method? Any reason for TotalCalibCharge to be defined outside filldigis(...) ?-- Jeff, 7/2/12
171  //if(fillDigis_) summary.calibCharge_ = TotalCalibCharge;
172 
173  // select those RBXs which are interesting
174  // also look for the highest energy RBX
175  HcalNoiseRBXArray::iterator maxit=rbxarray.begin();
176  double maxenergy=-999;
177  bool maxwritten=false;
178  for(HcalNoiseRBXArray::iterator rit = rbxarray.begin(); rit!=rbxarray.end(); ++rit) {
179  HcalNoiseRBX &rbx=(*rit);
182 
183  // find the highest energy rbx
184  if(data.energy()>maxenergy) {
185  maxenergy=data.energy();
186  maxit=rit;
187  maxwritten=false;
188  }
189 
190  // find out if the rbx is problematic/noisy/etc.
191  bool writerbx = algo_.isProblematic(data) || !algo_.passLooseNoiseFilter(data) ||
193 
194  // fill variables in the summary object not filled elsewhere
196 
197  if(writerbx) {
198  summary.nproblemRBXs_++;
199  if(summary.nproblemRBXs_<=maxProblemRBXs_) {
200  result1->push_back(rbx);
201  if(maxit==rit) maxwritten=true;
202  }
203  }
204  } // end loop over rbxs
205 
206  // if we still haven't written the maximum energy rbx, write it now
207  if(!maxwritten) {
208  HcalNoiseRBX &rbx=(*maxit);
209 
210  // add the RBX to the event
211  result1->push_back(rbx);
212  }
213 
214  // put the rbxcollection and summary into the EDM
215  iEvent.put(result1);
216  iEvent.put(result2);
217 
218  return;
219 }
std::vector< HcalNoiseRBX > HcalNoiseRBXCollection
Definition: HcalNoiseRBX.h:26
bool isProblematic(const CommonHcalNoiseRBXData &) const
void fillrechits(edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &) const
std::vector< std::pair< double, double > > TS4TS5LowerCut_
void fillcalotwrs(edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &) const
bool passHighLevelNoiseFilter(const CommonHcalNoiseRBXData &) const
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
void filljetinfo(edm::Event &, const edm::EventSetup &, HcalNoiseSummary &) const
std::vector< std::pair< double, double > > TS4TS5UpperCut_
bool passLooseNoiseFilter(const CommonHcalNoiseRBXData &) const
void filldigis(edm::Event &, const edm::EventSetup &, HcalNoiseRBXArray &, HcalNoiseSummary &)
bool passTightNoiseFilter(const CommonHcalNoiseRBXData &) const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void filltracks(edm::Event &, const edm::EventSetup &, HcalNoiseSummary &) const
void fillOtherSummaryVariables(HcalNoiseSummary &summary, const CommonHcalNoiseRBXData &data) const

Member Data Documentation

float reco::HcalNoiseInfoProducer::adc2fC[128]
private

Definition at line 130 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

HcalNoiseAlgo reco::HcalNoiseInfoProducer::algo_
private

Definition at line 111 of file HcalNoiseInfoProducer.h.

Referenced by fillOtherSummaryVariables(), and produce().

double reco::HcalNoiseInfoProducer::calibdigiHBHEthreshold_
private

Definition at line 116 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

std::vector<int> reco::HcalNoiseInfoProducer::calibdigiHBHEtimeslices_
private

Definition at line 117 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

double reco::HcalNoiseInfoProducer::calibdigiHFthreshold_
private

Definition at line 119 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

std::vector<int> reco::HcalNoiseInfoProducer::calibdigiHFtimeslices_
private

Definition at line 120 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

edm::EDGetTokenT<CaloTowerCollection> reco::HcalNoiseInfoProducer::calotower_token_
private

Definition at line 104 of file HcalNoiseInfoProducer.h.

Referenced by fillcalotwrs(), and HcalNoiseInfoProducer().

std::string reco::HcalNoiseInfoProducer::caloTowerCollName_
private

Definition at line 97 of file HcalNoiseInfoProducer.h.

Referenced by fillcalotwrs(), and HcalNoiseInfoProducer().

std::string reco::HcalNoiseInfoProducer::digiCollName_
private

Definition at line 95 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

bool reco::HcalNoiseInfoProducer::fillCaloTowers_
private

Definition at line 82 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

bool reco::HcalNoiseInfoProducer::fillDigis_
private

Definition at line 80 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

bool reco::HcalNoiseInfoProducer::fillRecHits_
private

Definition at line 81 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

bool reco::HcalNoiseInfoProducer::fillTracks_
private

Definition at line 83 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

edm::EDGetTokenT<HBHEDigiCollection> reco::HcalNoiseInfoProducer::hbhedigi_token_
private

Definition at line 101 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

edm::EDGetTokenT<HBHERecHitCollection> reco::HcalNoiseInfoProducer::hbherechit_token_
private

Definition at line 103 of file HcalNoiseInfoProducer.h.

Referenced by fillrechits(), and HcalNoiseInfoProducer().

uint32_t reco::HcalNoiseInfoProducer::HcalAcceptSeverityLevel_
private

Definition at line 127 of file HcalNoiseInfoProducer.h.

Referenced by fillrechits(), and HcalNoiseInfoProducer().

edm::EDGetTokenT<HcalCalibDigiCollection> reco::HcalNoiseInfoProducer::hcalcalibdigi_token_
private

Definition at line 102 of file HcalNoiseInfoProducer.h.

Referenced by filldigis(), and HcalNoiseInfoProducer().

std::vector<int> reco::HcalNoiseInfoProducer::HcalRecHitFlagsToBeExcluded_
private

Definition at line 128 of file HcalNoiseInfoProducer.h.

Referenced by fillrechits(), and HcalNoiseInfoProducer().

edm::EDGetTokenT<reco::PFJetCollection> reco::HcalNoiseInfoProducer::jet_token_
private

Definition at line 106 of file HcalNoiseInfoProducer.h.

Referenced by filljetinfo(), and HcalNoiseInfoProducer().

std::string reco::HcalNoiseInfoProducer::jetCollName_
private

Definition at line 99 of file HcalNoiseInfoProducer.h.

Referenced by filljetinfo(), and HcalNoiseInfoProducer().

int reco::HcalNoiseInfoProducer::maxCaloTowerIEta_
private

Definition at line 89 of file HcalNoiseInfoProducer.h.

Referenced by fillcalotwrs(), and HcalNoiseInfoProducer().

int reco::HcalNoiseInfoProducer::maxjetindex_
private

Definition at line 93 of file HcalNoiseInfoProducer.h.

Referenced by filljetinfo(), and HcalNoiseInfoProducer().

double reco::HcalNoiseInfoProducer::maxNHF_
private

Definition at line 92 of file HcalNoiseInfoProducer.h.

Referenced by filljetinfo(), and HcalNoiseInfoProducer().

int reco::HcalNoiseInfoProducer::maxProblemRBXs_
private

Definition at line 86 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

double reco::HcalNoiseInfoProducer::maxTrackEta_
private

Definition at line 90 of file HcalNoiseInfoProducer.h.

Referenced by filltracks(), and HcalNoiseInfoProducer().

double reco::HcalNoiseInfoProducer::minHighHitE_
private

Definition at line 110 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

double reco::HcalNoiseInfoProducer::minLowHitE_
private

Definition at line 110 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

double reco::HcalNoiseInfoProducer::minR45HitE_
private

Definition at line 110 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

double reco::HcalNoiseInfoProducer::minRecHitE_
private

Definition at line 110 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

double reco::HcalNoiseInfoProducer::minTrackPt_
private

Definition at line 91 of file HcalNoiseInfoProducer.h.

Referenced by filltracks(), and HcalNoiseInfoProducer().

std::string reco::HcalNoiseInfoProducer::recHitCollName_
private

Definition at line 96 of file HcalNoiseInfoProducer.h.

Referenced by fillrechits(), and HcalNoiseInfoProducer().

double reco::HcalNoiseInfoProducer::TotalCalibCharge
private

Definition at line 108 of file HcalNoiseInfoProducer.h.

Referenced by filldigis().

edm::EDGetTokenT<reco::TrackCollection> reco::HcalNoiseInfoProducer::track_token_
private

Definition at line 105 of file HcalNoiseInfoProducer.h.

Referenced by filltracks(), and HcalNoiseInfoProducer().

std::string reco::HcalNoiseInfoProducer::trackCollName_
private

Definition at line 98 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer().

double reco::HcalNoiseInfoProducer::TS4TS5EnergyThreshold_
private

Definition at line 123 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

std::vector<std::pair<double, double> > reco::HcalNoiseInfoProducer::TS4TS5LowerCut_
private

Definition at line 125 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

std::vector<std::pair<double, double> > reco::HcalNoiseInfoProducer::TS4TS5UpperCut_
private

Definition at line 124 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer(), and produce().

bool reco::HcalNoiseInfoProducer::useCalibDigi_
private

Definition at line 113 of file HcalNoiseInfoProducer.h.

Referenced by HcalNoiseInfoProducer().