CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes
HLTHcalMETNoiseFilter Class Reference

#include <HLTHcalMETNoiseFilter.h>

Inheritance diagram for HLTHcalMETNoiseFilter:
edm::EDFilter edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  noisedatacomp
 

Public Member Functions

bool filter (edm::Event &, const edm::EventSetup &) override
 
 HLTHcalMETNoiseFilter (const edm::ParameterSet &)
 
 ~HLTHcalMETNoiseFilter () override
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilter () 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::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 

Private Types

typedef std::set< CommonHcalNoiseRBXData, noisedatacompnoisedataset_t
 

Private Attributes

edm::InputTag HcalNoiseRBXCollectionTag_
 
edm::EDGetTokenT< reco::HcalNoiseRBXCollectionm_theHcalNoiseToken
 
double maxHighEHitTime_
 
int maxNumRBXs_
 
double maxRatio_
 
double maxRBXEMF_
 
double minHighEHitTime_
 
double minHighHitE_
 
int minHPDHits_
 
int minHPDNoOtherHits_
 
double minLowHitE_
 
double minR45HitE_
 
double minRatio_
 
double minRBXEnergy_
 
int minRBXHits_
 
double minRecHitE_
 
int minZeros_
 
bool needEMFCoincidence_
 
int numRBXsToConsider_
 
int severity_
 
double TS4TS5EnergyThreshold_
 
std::vector< std::pair< double, double > > TS4TS5LowerCut_
 
std::vector< std::pair< double, double > > TS4TS5UpperCut_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter 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: HLT filter module for rejecting MET events due to noise in the HCAL

Implementation: <Notes on="" implementation>="">

Definition at line 23 of file HLTHcalMETNoiseFilter.h.

Member Typedef Documentation

Definition at line 63 of file HLTHcalMETNoiseFilter.h.

Constructor & Destructor Documentation

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

Definition at line 34 of file HLTHcalMETNoiseFilter.cc.

References edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), HcalNoiseRBXCollectionTag_, mps_fire::i, createfilelist::int, m_theHcalNoiseToken, minR45HitE_, jetUpdater_cfi::sort, TS4TS5LowerCut_, TS4TS5UpperCut_, and ~HLTHcalMETNoiseFilter().

34  :
35  HcalNoiseRBXCollectionTag_(iConfig.getParameter<edm::InputTag>("HcalNoiseRBXCollection")),
36  severity_(iConfig.getParameter<int> ("severity")),
37  maxNumRBXs_(iConfig.getParameter<int>("maxNumRBXs")),
38  numRBXsToConsider_(iConfig.getParameter<int>("numRBXsToConsider")),
39  needEMFCoincidence_(iConfig.getParameter<bool>("needEMFCoincidence")),
40  minRBXEnergy_(iConfig.getParameter<double>("minRBXEnergy")),
41  minRatio_(iConfig.getParameter<double>("minRatio")),
42  maxRatio_(iConfig.getParameter<double>("maxRatio")),
43  minHPDHits_(iConfig.getParameter<int>("minHPDHits")),
44  minRBXHits_(iConfig.getParameter<int>("minRBXHits")),
45  minHPDNoOtherHits_(iConfig.getParameter<int>("minHPDNoOtherHits")),
46  minZeros_(iConfig.getParameter<int>("minZeros")),
47  minHighEHitTime_(iConfig.getParameter<double>("minHighEHitTime")),
48  maxHighEHitTime_(iConfig.getParameter<double>("maxHighEHitTime")),
49  maxRBXEMF_(iConfig.getParameter<double>("maxRBXEMF")),
50  minRecHitE_(iConfig.getParameter<double>("minRecHitE")),
51  minLowHitE_(iConfig.getParameter<double>("minLowHitE")),
52  minHighHitE_(iConfig.getParameter<double>("minHighHitE")),
53  minR45HitE_(5.0),
54  TS4TS5EnergyThreshold_(iConfig.getParameter<double>("TS4TS5EnergyThreshold"))
55 {
56 
57  std::vector<double> TS4TS5UpperThresholdTemp = iConfig.getParameter<std::vector<double> >("TS4TS5UpperThreshold");
58  std::vector<double> TS4TS5UpperCutTemp = iConfig.getParameter<std::vector<double> >("TS4TS5UpperCut");
59  std::vector<double> TS4TS5LowerThresholdTemp = iConfig.getParameter<std::vector<double> >("TS4TS5LowerThreshold");
60  std::vector<double> TS4TS5LowerCutTemp = iConfig.getParameter<std::vector<double> >("TS4TS5LowerCut");
61 
62  for(int i = 0; i < (int)TS4TS5UpperThresholdTemp.size() && i < (int)TS4TS5UpperCutTemp.size(); i++)
63  TS4TS5UpperCut_.push_back(std::pair<double, double>(TS4TS5UpperThresholdTemp[i], TS4TS5UpperCutTemp[i]));
64  sort(TS4TS5UpperCut_.begin(), TS4TS5UpperCut_.end());
65 
66  for(int i = 0; i < (int)TS4TS5LowerThresholdTemp.size() && i < (int)TS4TS5LowerCutTemp.size(); i++)
67  TS4TS5LowerCut_.push_back(std::pair<double, double>(TS4TS5LowerThresholdTemp[i], TS4TS5LowerCutTemp[i]));
68  sort(TS4TS5LowerCut_.begin(), TS4TS5LowerCut_.end());
69 
70  if(iConfig.existsAs<double>("minR45HitE"))
71  minR45HitE_ = iConfig.getParameter<double>("minR45HitE");
72 
73  m_theHcalNoiseToken = consumes<reco::HcalNoiseRBXCollection>(HcalNoiseRBXCollectionTag_);
74 }
std::vector< std::pair< double, double > > TS4TS5LowerCut_
T getParameter(std::string const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:161
std::vector< std::pair< double, double > > TS4TS5UpperCut_
edm::EDGetTokenT< reco::HcalNoiseRBXCollection > m_theHcalNoiseToken
edm::InputTag HcalNoiseRBXCollectionTag_
HLTHcalMETNoiseFilter::~HLTHcalMETNoiseFilter ( )
overridedefault

Referenced by HLTHcalMETNoiseFilter().

Member Function Documentation

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

Definition at line 80 of file HLTHcalMETNoiseFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), HBHEPulseShapeFlagSetter_cfi::TS4TS5LowerCut, HBHEPulseShapeFlagSetter_cfi::TS4TS5LowerThreshold, HBHEPulseShapeFlagSetter_cfi::TS4TS5UpperCut, and HBHEPulseShapeFlagSetter_cfi::TS4TS5UpperThreshold.

80  {
82  desc.add<edm::InputTag>("HcalNoiseRBXCollection",edm::InputTag("hltHcalNoiseInfoProducer"));
83  desc.add<int>("severity",1);
84  desc.add<int>("maxNumRBXs",2);
85  desc.add<int>("numRBXsToConsider",2);
86  desc.add<bool>("needEMFCoincidence",true);
87  desc.add<double>("minRBXEnergy",50.0);
88  desc.add<double>("minRatio",-999.);
89  desc.add<double>("maxRatio",999.);
90  desc.add<int>("minHPDHits",17);
91  desc.add<int>("minRBXHits",999);
92  desc.add<int>("minHPDNoOtherHits",10);
93  desc.add<int>("minZeros",10);
94  desc.add<double>("minHighEHitTime",-9999.0);
95  desc.add<double>("maxHighEHitTime",9999.0);
96  desc.add<double>("maxRBXEMF",0.02);
97  desc.add<double>("minRecHitE",1.5);
98  desc.add<double>("minLowHitE",10.0);
99  desc.add<double>("minHighHitE",25.0);
100  desc.add<double>("minR45HitE",5.0);
101  desc.add<double>("TS4TS5EnergyThreshold",50.0);
102 
103  double TS4TS5UpperThresholdArray[5] = {70, 90, 100, 400, 4000 };
104  double TS4TS5UpperCutArray[5] = {1, 0.8, 0.75, 0.72, 0.72};
105  double TS4TS5LowerThresholdArray[7] = {100, 120, 150, 200, 300, 400, 500};
106  double TS4TS5LowerCutArray[7] = {-1, -0.7, -0.4, -0.2, -0.08, 0, 0.1};
107  std::vector<double> TS4TS5UpperThreshold(TS4TS5UpperThresholdArray, TS4TS5UpperThresholdArray+5);
108  std::vector<double> TS4TS5UpperCut(TS4TS5UpperCutArray, TS4TS5UpperCutArray+5);
109  std::vector<double> TS4TS5LowerThreshold(TS4TS5LowerThresholdArray, TS4TS5LowerThresholdArray+7);
110  std::vector<double> TS4TS5LowerCut(TS4TS5LowerCutArray, TS4TS5LowerCutArray+7);
111 
112  desc.add<std::vector<double> >("TS4TS5UpperThreshold", TS4TS5UpperThreshold);
113  desc.add<std::vector<double> >("TS4TS5UpperCut", TS4TS5UpperCut);
114  desc.add<std::vector<double> >("TS4TS5LowerThreshold", TS4TS5LowerThreshold);
115  desc.add<std::vector<double> >("TS4TS5LowerCut", TS4TS5LowerCut);
116  descriptions.add("hltHcalMETNoiseFilter",desc);
117 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTHcalMETNoiseFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 123 of file HLTHcalMETNoiseFilter.cc.

References edmIntegrityCheck::d, data, edm::Event::getByToken(), HcalNoiseRBXCollectionTag_, edm::HandleBase::isValid(), LogDebug, m_theHcalNoiseToken, maxHighEHitTime_, maxNumRBXs_, maxRatio_, maxRBXEMF_, minHighEHitTime_, minHighHitE_, minHPDHits_, minHPDNoOtherHits_, minLowHitE_, minR45HitE_, minRatio_, minRBXEnergy_, minRBXHits_, minRecHitE_, minZeros_, needEMFCoincidence_, numRBXsToConsider_, severity_, TS4TS5EnergyThreshold_, TS4TS5LowerCut_, and TS4TS5UpperCut_.

124 {
125  using namespace reco;
126 
127  // in this case, do not filter anything
128  if(severity_==0) return true;
129 
130  // get the RBXs produced by RecoMET/METProducers/HcalNoiseInfoProducer
132  iEvent.getByToken(m_theHcalNoiseToken,rbxs_h);
133  if(!rbxs_h.isValid()) {
134  edm::LogError("DataNotFound") << "HLTHcalMETNoiseFilter: Could not find HcalNoiseRBXCollection product named "
135  << HcalNoiseRBXCollectionTag_ << "." << std::endl;
136  return true;
137  }
138 
139  // reject events with too many RBXs
140  if(static_cast<int>(rbxs_h->size())>maxNumRBXs_) return true;
141 
142  // create a sorted set of the RBXs, ordered by energy
144  for(auto const & rbx : *rbxs_h) {
147  data.insert(d);
148  }
149 
150  // data is now sorted by RBX energy
151  // only consider top N=numRBXsToConsider_ energy RBXs
152  int cntr=0;
153  for(auto it=data.begin();
154  it!=data.end() && cntr<numRBXsToConsider_;
155  ++it, ++cntr) {
156 
157  bool passFilter=true;
158  bool passEMF=true;
159  if(it->energy()>minRBXEnergy_) {
160  if(it->validRatio() && it->ratio()<minRatio_) passFilter=false;
161  else if(it->validRatio() && it->ratio()>maxRatio_) passFilter=false;
162  else if(it->numHPDHits()>=minHPDHits_) passFilter=false;
163  else if(it->numRBXHits()>=minRBXHits_) passFilter=false;
164  else if(it->numHPDNoOtherHits()>=minHPDNoOtherHits_) passFilter=false;
165  else if(it->numZeros()>=minZeros_) passFilter=false;
166  else if(it->minHighEHitTime()<minHighEHitTime_) passFilter=false;
167  else if(it->maxHighEHitTime()>maxHighEHitTime_) passFilter=false;
168  else if(!it->PassTS4TS5()) passFilter=false;
169 
170  if(it->RBXEMF()<maxRBXEMF_) passEMF=false;
171  }
172 
173  if((needEMFCoincidence_ && !passEMF && !passFilter) ||
174  (!needEMFCoincidence_ && !passFilter)) {
175  LogDebug("") << "HLTHcalMETNoiseFilter debug: Found a noisy RBX: "
176  << "energy=" << it->energy() << "; "
177  << "ratio=" << it->ratio() << "; "
178  << "# RBX hits=" << it->numRBXHits() << "; "
179  << "# HPD hits=" << it->numHPDHits() << "; "
180  << "# Zeros=" << it->numZeros() << "; "
181  << "min time=" << it->minHighEHitTime() << "; "
182  << "max time=" << it->maxHighEHitTime() << "; "
183  << "passTS4TS5=" << it->PassTS4TS5() << "; "
184  << "RBX EMF=" << it->RBXEMF()
185  << std::endl;
186  return false;
187  }
188  }
189 
190  // no problems found
191  return true;
192 }
#define LogDebug(id)
std::vector< std::pair< double, double > > TS4TS5LowerCut_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::vector< std::pair< double, double > > TS4TS5UpperCut_
edm::EDGetTokenT< reco::HcalNoiseRBXCollection > m_theHcalNoiseToken
edm::InputTag HcalNoiseRBXCollectionTag_
bool isValid() const
Definition: HandleBase.h:74
std::set< CommonHcalNoiseRBXData, noisedatacomp > noisedataset_t
fixed size matrix
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82

Member Data Documentation

edm::InputTag HLTHcalMETNoiseFilter::HcalNoiseRBXCollectionTag_
private

Definition at line 34 of file HLTHcalMETNoiseFilter.h.

Referenced by filter(), and HLTHcalMETNoiseFilter().

edm::EDGetTokenT<reco::HcalNoiseRBXCollection> HLTHcalMETNoiseFilter::m_theHcalNoiseToken
private

Definition at line 32 of file HLTHcalMETNoiseFilter.h.

Referenced by filter(), and HLTHcalMETNoiseFilter().

double HLTHcalMETNoiseFilter::maxHighEHitTime_
private

Definition at line 47 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::maxNumRBXs_
private

Definition at line 36 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::maxRatio_
private

Definition at line 41 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::maxRBXEMF_
private

Definition at line 48 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minHighEHitTime_
private

Definition at line 46 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minHighHitE_
private

Definition at line 51 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::minHPDHits_
private

Definition at line 42 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::minHPDNoOtherHits_
private

Definition at line 44 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minLowHitE_
private

Definition at line 51 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minR45HitE_
private

Definition at line 51 of file HLTHcalMETNoiseFilter.h.

Referenced by filter(), and HLTHcalMETNoiseFilter().

double HLTHcalMETNoiseFilter::minRatio_
private

Definition at line 40 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minRBXEnergy_
private

Definition at line 39 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::minRBXHits_
private

Definition at line 43 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::minRecHitE_
private

Definition at line 51 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::minZeros_
private

Definition at line 45 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

bool HLTHcalMETNoiseFilter::needEMFCoincidence_
private

Definition at line 38 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::numRBXsToConsider_
private

Definition at line 37 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

int HLTHcalMETNoiseFilter::severity_
private

Definition at line 35 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

double HLTHcalMETNoiseFilter::TS4TS5EnergyThreshold_
private

Definition at line 53 of file HLTHcalMETNoiseFilter.h.

Referenced by filter().

std::vector<std::pair<double, double> > HLTHcalMETNoiseFilter::TS4TS5LowerCut_
private

Definition at line 55 of file HLTHcalMETNoiseFilter.h.

Referenced by filter(), and HLTHcalMETNoiseFilter().

std::vector<std::pair<double, double> > HLTHcalMETNoiseFilter::TS4TS5UpperCut_
private

Definition at line 54 of file HLTHcalMETNoiseFilter.h.

Referenced by filter(), and HLTHcalMETNoiseFilter().