CMS 3D CMS Logo

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

#include <HLTHcalLaserFilter.h>

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

Public Member Functions

bool filter (edm::Event &, const edm::EventSetup &) override
 
 HLTHcalLaserFilter (const edm::ParameterSet &)
 
 ~HLTHcalLaserFilter () 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 Attributes

std::vector< double > CalibChargeFilterValues_
 
std::vector< int > CalibCountFilterValues_
 
edm::InputTag hcalDigiCollection_
 
edm::EDGetTokenT< HcalCalibDigiCollectionm_theCalibToken
 
int maxAllowedHFcalib_
 
double maxTotalCalibCharge_
 
std::vector< double > thresholdsfC_
 
std::vector< int > timeSlices_
 

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

Author
Alex Mott (Caltech), Jeff Temple (FNAL)

Description: HLT filter module for rejecting events with HCAL laser firing

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

Definition at line 22 of file HLTHcalLaserFilter.h.

Constructor & Destructor Documentation

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

Definition at line 34 of file HLTHcalLaserFilter.cc.

References hcalDigiCollection_, m_theCalibToken, and ~HLTHcalLaserFilter().

34  :
35  hcalDigiCollection_(iConfig.getParameter<edm::InputTag>("hcalDigiCollection")),
36  timeSlices_(iConfig.getParameter<std::vector<int> >("timeSlices")),
37  thresholdsfC_(iConfig.getParameter<std::vector<double> >("thresholdsfC")),
38  CalibCountFilterValues_(iConfig.getParameter<std::vector<int> >("CalibCountFilterValues")),
39  CalibChargeFilterValues_(iConfig.getParameter<std::vector<double> >("CalibChargeFilterValues")),
40  maxTotalCalibCharge_(iConfig.getParameter<double>("maxTotalCalibCharge")),
41  maxAllowedHFcalib_(iConfig.getParameter<int>("maxAllowedHFcalib"))
42 
43 {
44  //maxAllowedHFcalib_=10;
45 
46  m_theCalibToken = consumes<HcalCalibDigiCollection>(hcalDigiCollection_);
47 }
T getParameter(std::string const &) const
std::vector< double > thresholdsfC_
std::vector< int > CalibCountFilterValues_
std::vector< int > timeSlices_
edm::EDGetTokenT< HcalCalibDigiCollection > m_theCalibToken
edm::InputTag hcalDigiCollection_
std::vector< double > CalibChargeFilterValues_
HLTHcalLaserFilter::~HLTHcalLaserFilter ( )
overridedefault

Referenced by HLTHcalLaserFilter().

Member Function Documentation

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

Definition at line 53 of file HLTHcalLaserFilter.cc.

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

53  {
55  desc.add<edm::InputTag>("hcalDigiCollection",edm::InputTag("hltHcalDigis"));
56  desc.add<double>("maxTotalCalibCharge",-1);
57 
58  std::vector<int> dummy_vint;
59  std::vector<double> dummy_vdouble;
60 
61  desc.add<std::vector<int> >("timeSlices",dummy_vint);
62  desc.add<std::vector<double> >("thresholdsfC",dummy_vdouble);
63  desc.add<std::vector<int> >("CalibCountFilterValues",dummy_vint);
64  desc.add<std::vector<double> >("CalibChargeFilterValues",dummy_vdouble);
65  desc.add<int>("maxAllowedHFcalib",-1);
66  descriptions.add("hltHcalLaserFilter",desc);
67 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTHcalLaserFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 73 of file HLTHcalLaserFilter.cc.

References hcaldqm::constants::adc2fC, CalibChargeFilterValues_, CalibCountFilterValues_, HcalCalibDetId::calibFlavor(), edm::Event::getByToken(), HcalBarrel, HcalEndcap, HcalForward, HcalCalibDetId::hcalSubdet(), HcalCalibDetId::HOCrosstalk, mps_fire::i, createfilelist::int, edm::HandleBase::isValid(), m_theCalibToken, maxAllowedHFcalib_, maxTotalCalibCharge_, scrapingFilter_cfi::thresh, thresholdsfC_, and timeSlices_.

74 {
76  iEvent.getByToken(m_theCalibToken, hCalib);
77 
78  int numHFcalib=0;
79 
80  // Set up potential filter variables
81  double totalCalibCharge=0;
82 
83  // Track multiplicity and total charge for each fC threshold
84  std::vector<int> CalibCount;
85  std::vector<double> CalibCharge;
86  for (unsigned int i=0;i<thresholdsfC_.size();++i)
87  {
88  CalibCount.push_back(0);
89  CalibCharge.push_back(0);
90  }
91 
92  const float adc2fC[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,
93  13.5,15.,17.,19.,21.,23.,25.,27.,29.5,32.5,35.5,38.5,42.,46.,50.,54.5,59.5,
94  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,
95  124.5,129.5,137.,147.,157.,167.,177.,187.,197.,209.5,224.5,239.5,254.5,272.,
96  292.,312.,334.5,359.5,384.5,359.5,384.5,409.5,434.5,459.5,484.5,509.5,534.5,
97  559.5,584.5,609.5,634.5,659.5,684.5,709.5,747.,797.,847.,897.,947.,997.,
98  1047.,1109.5,1184.5,1259.5,1334.5,1422.,1522.,1622.,1734.5,1859.5,1984.5,
99  1859.5,1984.5,2109.5,2234.5,2359.5,2484.5,2609.5,2734.5,2859.5,2984.5,
100  3109.5,3234.5,3359.5,3484.5,3609.5,3797.,4047.,4297.,4547.,4797.,5047.,
101  5297.,5609.5,5984.5,6359.5,6734.5,7172.,7672.,8172.,8734.5,9359.5,9984.5};
102 
103  if(hCalib.isValid() == true)
104  {
105  // loop over calibration channels
106 
107  //for timing reasons, we abort within the loop if a field ever goes out of bounds
108  for(auto const & digi : *hCalib)
109  {
110  if(digi.id().hcalSubdet() == 0)
111  continue;
112 
113 
114  HcalCalibDetId myid=(HcalCalibDetId)digi.id();
115  if (myid.hcalSubdet()==HcalBarrel || myid.hcalSubdet()==HcalEndcap)
116  {
118  continue; // ignore HOCrosstalk channels
119 
120  // Add this digi to total calibration charge
121  for(int i = 0; i < (int)digi.size(); i++)
122  totalCalibCharge = totalCalibCharge + adc2fC[digi.sample(i).adc()&0xff];
123 
124  if(maxTotalCalibCharge_ >= 0 && totalCalibCharge > maxTotalCalibCharge_) return false;
125 
126  // Compute total charge found in the provided subset of timeslices
127  double sumCharge=0;
128  unsigned int NTS=timeSlices_.size();
129  int digisize=(int)digi.size(); // gives value of largest time slice
130 
131  for (unsigned int ts=0;ts<NTS;++ts) // loop over provided timeslices
132  {
133  if (timeSlices_[ts]<0 || timeSlices_[ts]>digisize) continue;
134  sumCharge+=adc2fC[digi.sample(timeSlices_[ts]).adc()&0xff];
135  }
136 
137  // Check multiplicity and charge against filter settings for each charge threshold
138  for (unsigned int thresh=0;thresh<thresholdsfC_.size();++thresh)
139  {
140  if (sumCharge > thresholdsfC_[thresh])
141  {
142  ++CalibCount[thresh];
143  CalibCharge[thresh]+=sumCharge;
144  // FilterValues must be >=0 in order for filter to be applied
145  if (CalibCount[thresh] >= CalibCountFilterValues_[thresh]
146  && CalibCountFilterValues_[thresh]>=0)
147  {
148  //std::cout <<"Number of channels > "<<thresholdsfC_[thresh]<<" = "<<CalibCount[thresh]<<"; vetoing!"<<std::endl;
149  return false;
150  }
151  if (CalibCharge[thresh]>= CalibChargeFilterValues_[thresh]
152  && CalibChargeFilterValues_[thresh]>=0)
153  {
154  //std::cout <<"FILTERED BY HBHE"<<std::endl;
155  return false;
156  }
157  } //if (sumCharge > thresholdsfC_[thresh])
158  } //for (unsigned int thresh=0;thresh<thresholdsfC_.size();++thresh)
159  } // if HB or HE Calib
160  else if ( myid.hcalSubdet()==HcalForward && maxAllowedHFcalib_>=0)
161  {
162  ++numHFcalib;
163  //std::cout <<"numHFcalib = "<<numHFcalib<<" Max allowed = "<<maxAllowedHFcalib_<<std::endl;
164  if (numHFcalib>maxAllowedHFcalib_)
165  {
166  //std::cout <<"FILTERED BY HF; "<<maxAllowedHFcalib_<<std::endl;
167  return false;
168  }
169  }
170  } // loop on calibration digis: for (HcalCalibDigiCollection::...)
171 
172 
173  /*
174  for (unsigned int thresh=0;thresh<thresholdsfC_.size();++thresh)
175  {
176  std::cout <<"Thresh = "<<thresholdsfC_[thresh]<<" Num channels found = "<<CalibCount[thresh]<<std::endl;
177  }
178  */
179  } // if (hCalib.isValid()==true)
180  //std::cout <<"UNFILTERED"<<std::endl;
181  return true;
182 }
CalibDetType calibFlavor() const
get the flavor of this calibration detid
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::vector< double > thresholdsfC_
std::vector< int > CalibCountFilterValues_
bool isValid() const
Definition: HandleBase.h:74
double const adc2fC[256]
Definition: Constants.h:248
std::vector< int > timeSlices_
edm::EDGetTokenT< HcalCalibDigiCollection > m_theCalibToken
HcalSubdetector hcalSubdet() const
get the HcalSubdetector (if relevant)
std::vector< double > CalibChargeFilterValues_

Member Data Documentation

std::vector<double> HLTHcalLaserFilter::CalibChargeFilterValues_
private

Definition at line 37 of file HLTHcalLaserFilter.h.

Referenced by filter().

std::vector<int> HLTHcalLaserFilter::CalibCountFilterValues_
private

Definition at line 36 of file HLTHcalLaserFilter.h.

Referenced by filter().

edm::InputTag HLTHcalLaserFilter::hcalDigiCollection_
private

Definition at line 33 of file HLTHcalLaserFilter.h.

Referenced by HLTHcalLaserFilter().

edm::EDGetTokenT<HcalCalibDigiCollection> HLTHcalLaserFilter::m_theCalibToken
private

Definition at line 31 of file HLTHcalLaserFilter.h.

Referenced by filter(), and HLTHcalLaserFilter().

int HLTHcalLaserFilter::maxAllowedHFcalib_
private

Definition at line 39 of file HLTHcalLaserFilter.h.

Referenced by filter().

double HLTHcalLaserFilter::maxTotalCalibCharge_
private

Definition at line 38 of file HLTHcalLaserFilter.h.

Referenced by filter().

std::vector<double> HLTHcalLaserFilter::thresholdsfC_
private

Definition at line 35 of file HLTHcalLaserFilter.h.

Referenced by filter().

std::vector<int> HLTHcalLaserFilter::timeSlices_
private

Definition at line 34 of file HLTHcalLaserFilter.h.

Referenced by filter().