CMS 3D CMS Logo

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

#include <filter/HLTHcalCalibTypeFilter/src/HLTHcalCalibTypeFilter.cc>

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

Public Member Functions

 HLTHcalCalibTypeFilter (const edm::ParameterSet &)
 
 ~HLTHcalCalibTypeFilter () 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

void endJob (void) override
 
bool filter (edm::StreamID, edm::Event &, const edm::EventSetup &) const override
 

Private Attributes

const std::vector< int > CalibTypes_
 
const edm::EDGetTokenT< FEDRawDataCollectionDataInputToken_
 
std::array< std::atomic< int >, 8 > eventsByType_
 
const bool Summary_
 

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: Filter to select HCAL abort gap events

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

Definition at line 43 of file HLTHcalCalibTypeFilter.h.

Constructor & Destructor Documentation

HLTHcalCalibTypeFilter::HLTHcalCalibTypeFilter ( const edm::ParameterSet config)
explicit

Definition at line 46 of file HLTHcalCalibTypeFilter.cc.

References eventsByType_, and mps_fire::i.

46  :
47  DataInputToken_( consumes<FEDRawDataCollection>( config.getParameter<edm::InputTag>("InputTag") ) ),
48  CalibTypes_( config.getParameter< std::vector<int> >("CalibTypes") ),
49  Summary_( config.getUntrackedParameter<bool>("FilterSummary", false) ),
51 {
52  for (auto & i : eventsByType_) i = 0;
53 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const std::vector< int > CalibTypes_
const edm::EDGetTokenT< FEDRawDataCollection > DataInputToken_
std::array< std::atomic< int >, 8 > eventsByType_
HLTHcalCalibTypeFilter::~HLTHcalCalibTypeFilter ( )
override

Definition at line 56 of file HLTHcalCalibTypeFilter.cc.

57 {
58 
59  // do anything here that needs to be done at desctruction time
60  // (e.g. close files, deallocate resources etc.)
61 
62 }

Member Function Documentation

void HLTHcalCalibTypeFilter::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::global::EDFilterBase.

Definition at line 141 of file HLTHcalCalibTypeFilter.cc.

References DEFINE_FWK_MODULE, eventsByType_, hc_HBHEHPD, hc_HFPMT, hc_HOHPD, hc_Null, hc_Pedestal, hc_RADDAM, and Summary_.

141  {
142  if ( Summary_ )
143  edm::LogWarning("HLTHcalCalibTypeFilter") << "Summary of filter decisions: "
144  << eventsByType_.at(hc_Null) << "(No Calib), "
145  << eventsByType_.at(hc_Pedestal) << "(Pedestal), "
146  << eventsByType_.at(hc_RADDAM) << "(RADDAM), "
147  << eventsByType_.at(hc_HBHEHPD) << "(HBHE/HPD), "
148  << eventsByType_.at(hc_HOHPD) << "(HO/HPD), "
149  << eventsByType_.at(hc_HFPMT) << "(HF/PMT)" ;
150 }
std::array< std::atomic< int >, 8 > eventsByType_
void HLTHcalCalibTypeFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 65 of file HLTHcalCalibTypeFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), mps_fire::i, and groupFilesInBlocks::temp.

65  {
67  desc.add<edm::InputTag>("InputTag",edm::InputTag("source"));
68  std::vector<int> temp; for (int i=1; i<=5; i++) temp.push_back(i);
69  desc.add<std::vector<int> >("CalibTypes", temp);
70  desc.addUntracked<bool>("FilterSummary",false);
71  descriptions.add("hltHcalCalibTypeFilter",desc);
72 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTHcalCalibTypeFilter::filter ( edm::StreamID  ,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivate

Definition at line 80 of file HLTHcalCalibTypeFilter.cc.

References hcal::AMC13Header::AMCPayload(), hcal::AMC13Header::AMCSize(), FEDRawData::data(), DataInputToken_, FEDRawDataCollection::FEDData(), edm::Event::getByToken(), HcalUHTRData::getEventType(), FEDNumbering::MAXHCALFEDID, FEDNumbering::MAXHCALuTCAFEDID, FEDNumbering::MINHCALFEDID, FEDNumbering::MINHCALuTCAFEDID, hcal::AMC13Header::NAMC(), matplotRender::rawdata, and FEDRawData::size().

81 {
82  using namespace edm;
83 
85  iEvent.getByToken(DataInputToken_,rawdata);
86 
87  // some inits
88  int numZeroes(0), numPositives(0);
89 
90  // loop over all HCAL FEDs
91  for (int fed=FEDNumbering::MINHCALFEDID;
92  fed<=FEDNumbering::MAXHCALuTCAFEDID; fed++)
93  {
94  // skip FEDs in between VME and uTCA
96  continue;
97 
98  // get raw data and check if there are empty feds
99  const FEDRawData& fedData = rawdata->FEDData(fed) ;
100  if ( fedData.size() < 24 ) continue ;
101 
103  {
104  // VME get event type
105  int eventtype = ((const HcalDCCHeader*)(fedData.data()))->getCalibType();
106  if (eventtype==0) numZeroes++; else numPositives++;
107  }
108  else
109  {
110  // UTCA
111  hcal::AMC13Header const *hamc13 = (hcal::AMC13Header const*) fedData.data();
112  for (int iamc=0; iamc<hamc13->NAMC(); iamc++)
113  {
114  HcalUHTRData uhtr(hamc13->AMCPayload(iamc), hamc13->AMCSize(iamc));
115  int eventtype = uhtr.getEventType();
116  if (eventtype==0) numZeroes++; else numPositives++;
117  }
118  }
119  }
120 
121  //
122  // if there are FEDs with Non-Collission event type, check what the majority is
123  // if calibs - true
124  // if 0s - false
125  //
126  if (numPositives>0)
127  {
128  if (numPositives>numZeroes) return true;
129  else
130  edm::LogWarning("HLTHcalCalibTypeFilter")
131  << "Conflicting Calibration Types found";
132  }
133 
134  // return false if there are no positives
135  // and if the majority has 0 calib type
136  return false;
137 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
int AMCSize(int i) const
Definition: AMC13Header.h:37
const edm::EDGetTokenT< FEDRawDataCollection > DataInputToken_
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
int getEventType() const
Get the event type.
Definition: HcalUHTRData.h:90
int NAMC() const
Definition: AMC13Header.h:25
HLT enums.
const uint64_t * AMCPayload(int i) const
Definition: AMC13Header.cc:4
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28

Member Data Documentation

const std::vector<int> HLTHcalCalibTypeFilter::CalibTypes_
private

Definition at line 55 of file HLTHcalCalibTypeFilter.h.

const edm::EDGetTokenT<FEDRawDataCollection> HLTHcalCalibTypeFilter::DataInputToken_
private

Definition at line 54 of file HLTHcalCalibTypeFilter.h.

Referenced by filter().

std::array<std::atomic<int>, 8> HLTHcalCalibTypeFilter::eventsByType_
mutableprivate

Definition at line 57 of file HLTHcalCalibTypeFilter.h.

Referenced by endJob(), and HLTHcalCalibTypeFilter().

const bool HLTHcalCalibTypeFilter::Summary_
private

Definition at line 56 of file HLTHcalCalibTypeFilter.h.

Referenced by endJob().