CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
HFNoisyHitsFilter Class Reference

#include <RecoMET/METFilters/plugins/HFNoisyHitsFilter.cc>

Inheritance diagram for HFNoisyHitsFilter:
edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HFNoisyHitsFilter (const edm::ParameterSet &)
 
 ~HFNoisyHitsFilter () override
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilterBase () 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)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

bool filter (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 
std::vector< HcalPhase1FlagLabels::HFStatusFlaggetNoiseBits () const
 

Private Attributes

const bool debug_
 
const edm::ESGetToken< CaloGeometry, CaloGeometryRecordgeom_token_
 
const edm::EDGetTokenT< HFRecHitCollectionhfhits_token_
 
const std::vector< std::string > listOfNoises_
 
std::vector< HcalPhase1FlagLabels::HFStatusFlagnoiseBits_
 
const double rechitPtThreshold_
 
const bool taggingMode_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase 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
 
- 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)
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 45 of file HFNoisyHitsFilter.cc.

Constructor & Destructor Documentation

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

Definition at line 66 of file HFNoisyHitsFilter.cc.

References getNoiseBits(), and noiseBits_.

67  : hfhits_token_(consumes<HFRecHitCollection>(iConfig.getParameter<edm::InputTag>("hfrechits"))),
68  geom_token_(esConsumes<CaloGeometry, CaloGeometryRecord>()),
69  rechitPtThreshold_(iConfig.getParameter<double>("rechitPtThreshold")),
70  listOfNoises_(iConfig.getParameter<std::vector<std::string>>("listOfNoises")),
71  taggingMode_(iConfig.getParameter<bool>("taggingMode")),
72  debug_(iConfig.getParameter<bool>("debug")) {
74  produces<bool>();
75 }
T getParameter(std::string const &) const
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geom_token_
const edm::EDGetTokenT< HFRecHitCollection > hfhits_token_
const std::vector< std::string > listOfNoises_
std::vector< HcalPhase1FlagLabels::HFStatusFlag > noiseBits_
const double rechitPtThreshold_
std::vector< HcalPhase1FlagLabels::HFStatusFlag > getNoiseBits() const
HFNoisyHitsFilter::~HFNoisyHitsFilter ( )
inlineoverride

Definition at line 48 of file HFNoisyHitsFilter.cc.

References fillDescriptions(), filter(), and getNoiseBits().

48 {}

Member Function Documentation

void HFNoisyHitsFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 138 of file HFNoisyHitsFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and DEFINE_FWK_MODULE.

Referenced by ~HFNoisyHitsFilter().

138  {
140  desc.add<edm::InputTag>("hfrechits", {"reducedHcalRecHits:hfreco"});
141  desc.add<double>("rechitPtThreshold", 20.);
142  desc.add<std::vector<std::string>>("listOfNoises", {"HFLongShort", "HFS8S1Ratio", "HFPET", "HFSignalAsymmetry"});
143  desc.add<bool>("taggingMode", false);
144  desc.add<bool>("debug", false);
145  descriptions.add("hfNoisyHitsFilter", desc);
146 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HFNoisyHitsFilter::filter ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivate

Definition at line 82 of file HFNoisyHitsFilter.cc.

References debug_, stringResolutionProvider_cfi::et, geom_token_, edm::Event::get(), edm::EventSetup::getData(), CaloGeometry::getPosition(), hfhits_token_, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), noiseBits_, PV3DBase< T, PVType, FrameType >::perp(), packedPFCandidateRefMixer_cfi::pf, edm::Event::put(), rechitPtThreshold_, and taggingMode_.

Referenced by ~HFNoisyHitsFilter().

82  {
83  using namespace edm;
84  bool pass = true;
85 
86  // Calo Geometry - needed for computing E_t
87  const CaloGeometry& geo = iSetup.getData(geom_token_);
88 
89  auto const& hfHits = iEvent.get(hfhits_token_);
90 
91  //Loop over the HF rechits. If one of them has Et>X and fires one the noise bits, declare the event as bad
92  for (auto const& hfhit : hfHits) {
93  float ene = hfhit.energy();
94  float et = 0;
95  // compute transverse energy
96  const GlobalPoint& poshf = geo.getPosition(hfhit.detid());
97  float pf = poshf.perp() / poshf.mag();
98  et = ene * pf;
99  if (et < rechitPtThreshold_)
100  continue;
101  int hitFlags = hfhit.flags();
102  for (auto noiseBit : noiseBits_) {
103  if ((hitFlags >> noiseBit) & 1) {
104  pass = false;
105  break;
106  }
107  }
108  if (!pass)
109  break;
110  }
111  iEvent.put(std::make_unique<bool>(pass));
112  if (debug_)
113  LogDebug("HFNoisyHitsFilter") << "Passing filter? " << pass;
114  return taggingMode_ || pass;
115 }
#define LogDebug(id)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geom_token_
T perp() const
Definition: PV3DBase.h:72
const edm::EDGetTokenT< HFRecHitCollection > hfhits_token_
std::vector< HcalPhase1FlagLabels::HFStatusFlag > noiseBits_
bool getData(T &iHolder) const
Definition: EventSetup.h:111
const double rechitPtThreshold_
T mag() const
Definition: PV3DBase.h:67
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:74
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:326
et
define resolution functions of each parameter
HLT enums.
std::vector< HcalPhase1FlagLabels::HFStatusFlag > HFNoisyHitsFilter::getNoiseBits ( ) const
private

Definition at line 117 of file HFNoisyHitsFilter.cc.

References Exception, HcalPhase1FlagLabels::HFAnomalousHit, HcalPhase1FlagLabels::HFLongShort, HcalPhase1FlagLabels::HFPET, HcalPhase1FlagLabels::HFS8S1Ratio, HcalPhase1FlagLabels::HFSignalAsymmetry, listOfNoises_, and mps_fire::result.

Referenced by HFNoisyHitsFilter(), and ~HFNoisyHitsFilter().

117  {
118  std::vector<HcalPhase1FlagLabels::HFStatusFlag> result;
119  for (auto const& noise : listOfNoises_) {
120  if (noise == "HFLongShort")
121  result.push_back(HcalPhase1FlagLabels::HFLongShort);
122  else if (noise == "HFS8S1Ratio")
123  result.push_back(HcalPhase1FlagLabels::HFS8S1Ratio);
124  else if (noise == "HFPET")
125  result.push_back(HcalPhase1FlagLabels::HFPET);
126  else if (noise == "HFSignalAsymmetry")
127  result.push_back(HcalPhase1FlagLabels::HFSignalAsymmetry);
128  else if (noise == "HFAnomalousHit")
129  result.push_back(HcalPhase1FlagLabels::HFAnomalousHit);
130  else
131  throw cms::Exception("Error") << "Couldn't find the bit index associated to this string: " << noise;
132  }
133 
134  return result;
135 }
const std::vector< std::string > listOfNoises_

Member Data Documentation

const bool HFNoisyHitsFilter::debug_
private

Definition at line 59 of file HFNoisyHitsFilter.cc.

Referenced by filter().

const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> HFNoisyHitsFilter::geom_token_
private

Definition at line 55 of file HFNoisyHitsFilter.cc.

Referenced by filter().

const edm::EDGetTokenT<HFRecHitCollection> HFNoisyHitsFilter::hfhits_token_
private

Definition at line 54 of file HFNoisyHitsFilter.cc.

Referenced by filter().

const std::vector<std::string> HFNoisyHitsFilter::listOfNoises_
private

Definition at line 57 of file HFNoisyHitsFilter.cc.

Referenced by getNoiseBits().

std::vector<HcalPhase1FlagLabels::HFStatusFlag> HFNoisyHitsFilter::noiseBits_
private

Definition at line 60 of file HFNoisyHitsFilter.cc.

Referenced by filter(), and HFNoisyHitsFilter().

const double HFNoisyHitsFilter::rechitPtThreshold_
private

Definition at line 56 of file HFNoisyHitsFilter.cc.

Referenced by filter().

const bool HFNoisyHitsFilter::taggingMode_
private

Definition at line 58 of file HFNoisyHitsFilter.cc.

Referenced by filter().