CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
HLTExclDiJetFilter< T > Class Template Reference

#include <HLTExclDiJetFilter.h>

Inheritance diagram for HLTExclDiJetFilter< T >:
HLTFilter edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HLTExclDiJetFilter (const edm::ParameterSet &)
 
virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 ~HLTExclDiJetFilter ()
 
- Public Member Functions inherited from HLTFilter
 HLTFilter (const edm::ParameterSet &config)
 
int module (edm::Event const &) const
 
const std::string * moduleLabel () const
 
int path (edm::Event const &) const
 
const std::string * pathName (edm::Event const &) const
 
std::pair< int, int > pmid (edm::Event const &) const
 
bool saveTags () const
 
virtual ~HLTFilter ()
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 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 ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from HLTFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- 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 Attributes

edm::InputTag caloTowerTag_
 
bool HF_OR_
 
edm::InputTag inputJetTag_
 
edm::EDGetTokenT
< CaloTowerCollection
m_theCaloTowerCollectionToken
 
edm::EDGetTokenT< std::vector
< T > > 
m_theJetToken
 
double minHFe_
 
double minPtJet_
 
int triggerType_
 

Additional Inherited Members

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

template<typename T>
class HLTExclDiJetFilter< T >

Author
Dominique J. Mangeol
Leonard Apanasevich

Definition at line 24 of file HLTExclDiJetFilter.h.

Constructor & Destructor Documentation

template<typename T >
HLTExclDiJetFilter< T >::HLTExclDiJetFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 27 of file HLTExclDiJetFilter.cc.

References HLTExclDiJetFilter< T >::caloTowerTag_, edm::InputTag::encode(), HLTExclDiJetFilter< T >::HF_OR_, HLTExclDiJetFilter< T >::inputJetTag_, LogDebug, HLTExclDiJetFilter< T >::m_theCaloTowerCollectionToken, HLTExclDiJetFilter< T >::m_theJetToken, HLTExclDiJetFilter< T >::minHFe_, HLTExclDiJetFilter< T >::minPtJet_, and HLTExclDiJetFilter< T >::triggerType_.

27  :
28  HLTFilter(iConfig),
29  inputJetTag_ (iConfig.template getParameter<edm::InputTag> ("inputJetTag")),
30  caloTowerTag_(iConfig.template getParameter<edm::InputTag> ("caloTowerTag")),
31  minPtJet_ (iConfig.template getParameter<double> ("minPtJet")),
32  minHFe_ (iConfig.template getParameter<double> ("minHFe")),
33  HF_OR_ (iConfig.template getParameter<bool> ("HF_OR")),
34  triggerType_ (iConfig.template getParameter<int> ("triggerType"))
35 {
36  m_theJetToken = consumes<std::vector<T>>(inputJetTag_);
37  m_theCaloTowerCollectionToken = consumes<CaloTowerCollection>(caloTowerTag_);
38  LogDebug("") << "HLTExclDiJetFilter: Input/minPtJet/minHFe/HF_OR/triggerType : "
39  << inputJetTag_.encode() << " "
40  << caloTowerTag_.encode() << " "
41  << minPtJet_ << " "
42  << minHFe_ << " "
43  << HF_OR_ << " "
44  << triggerType_;
45 }
#define LogDebug(id)
std::string encode() const
Definition: InputTag.cc:164
edm::InputTag inputJetTag_
edm::EDGetTokenT< std::vector< T > > m_theJetToken
edm::InputTag caloTowerTag_
edm::EDGetTokenT< CaloTowerCollection > m_theCaloTowerCollectionToken
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
template<typename T >
HLTExclDiJetFilter< T >::~HLTExclDiJetFilter ( )

Definition at line 48 of file HLTExclDiJetFilter.cc.

48 {}

Member Function Documentation

template<typename T >
void HLTExclDiJetFilter< T >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 52 of file HLTExclDiJetFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), defaultModuleLabel(), HLT_25ns14e33_v1_cff::InputTag, and trigger::TriggerJet.

52  {
55  desc.add<edm::InputTag>("inputJetTag",edm::InputTag("hltMCJetCorJetIcone5HF07"));
56  desc.add<edm::InputTag>("caloTowerTag",edm::InputTag("hltTowerMakerForAll"));
57  desc.add<double>("minPtJet",30.0);
58  desc.add<double>("minHFe",50.0);
59  desc.add<bool>("HF_OR",false);
60  desc.add<int>("triggerType",trigger::TriggerJet);
61  descriptions.add(defaultModuleLabel<HLTExclDiJetFilter<T>>(), desc);
62 }
std::string defaultModuleLabel()
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
void add(std::string const &label, ParameterSetDescription const &psetDescription)
template<typename T >
bool HLTExclDiJetFilter< T >::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 67 of file HLTExclDiJetFilter.cc.

References funct::abs(), accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), HLT_25ns14e33_v1_cff::distance, edm::Event::getByToken(), M_PI, gen::n, python.connectstrParser::o, dt_dqm_sourceclient_common_cff::reco, and CommPDSkim_cfg::saveTags.

68 {
69  using namespace std;
70  using namespace edm;
71  using namespace reco;
72  using namespace trigger;
73 
74  typedef vector<T> TCollection;
75  typedef Ref<TCollection> TRef;
76 
77  // The filter object
78  if (saveTags()) filterproduct.addCollectionTag(inputJetTag_);
79 
80  Handle<TCollection> recojets; //recojets can be any jet collections
81  iEvent.getByToken(m_theJetToken,recojets);
82 
83  // look at all candidates, check cuts and add to filter object
84  int n(0);
85 
86  double ptjet1=0., ptjet2=0.;
87  double phijet1=0., phijet2=0.;
88 
89  if(recojets->size() > 1){
90  // events with two or more jets
91 
92  int countjets =0;
93 
94  TRef JetRef1,JetRef2;
95 
96  typename TCollection::const_iterator recojet ( recojets->begin() );
97  for (;recojet<=(recojets->begin()+1); ++recojet) {
98  //
99  if(countjets==0) {
100  ptjet1 = recojet->pt();
101  phijet1 = recojet->phi();
102 
103  JetRef1 = TRef(recojets,distance(recojets->begin(),recojet));
104  }
105  //
106  if(countjets==1) {
107  ptjet2 = recojet->pt();
108  phijet2 = recojet->phi();
109 
110  JetRef2 = TRef(recojets,distance(recojets->begin(),recojet));
111  }
112  //
113  ++countjets;
114  }
115 
116  if(ptjet1>minPtJet_ && ptjet2>minPtJet_ ){
117  double Dphi=std::abs(phijet1-phijet2);
118  if(Dphi>M_PI) Dphi=2.0*M_PI-Dphi;
119  if(Dphi>0.5*M_PI) {
120  filterproduct.addObject(triggerType_,JetRef1);
121  filterproduct.addObject(triggerType_,JetRef2);
122  ++n;
123  }
124  } // pt(jet1,jet2) > minPtJet_
125 
126  } // events with two or more jets
127 
128  // calotowers
129  bool hf_accept=false;
130 
131  if(n>0) {
132  double ehfp(0.);
133  double ehfm(0.);
134 
137 // if( o.isValid()) {
138  for( CaloTowerCollection::const_iterator cc = o->begin(); cc != o->end(); ++cc ) {
139  if(std::abs(cc->ieta())>28 && cc->energy()<4.0) continue;
140  if(cc->ieta()>28) ehfp+=cc->energy(); // HF+ energy
141  if(cc->ieta()<-28) ehfm+=cc->energy(); // HF- energy
142  }
143  // }
144 
145  bool hf_accept_and = (ehfp<minHFe_) && (ehfm<minHFe_);
146  bool hf_accept_or = (ehfp<minHFe_) || (ehfm<minHFe_);
147 
148  hf_accept = HF_OR_ ? hf_accept_or : hf_accept_and;
149 
150  } // n>0
151 
152 
154 
155 // filter decision
156  bool accept(n>0 && hf_accept);
157 
158  return accept;
159 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
std::vector< CaloTower >::const_iterator const_iterator
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
edm::InputTag inputJetTag_
edm::EDGetTokenT< std::vector< T > > m_theJetToken
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::EDGetTokenT< CaloTowerCollection > m_theCaloTowerCollectionToken
#define M_PI
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45

Member Data Documentation

template<typename T >
edm::InputTag HLTExclDiJetFilter< T >::caloTowerTag_
private

Definition at line 36 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
bool HLTExclDiJetFilter< T >::HF_OR_
private

Definition at line 39 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
edm::InputTag HLTExclDiJetFilter< T >::inputJetTag_
private

Definition at line 35 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
edm::EDGetTokenT<CaloTowerCollection> HLTExclDiJetFilter< T >::m_theCaloTowerCollectionToken
private

Definition at line 34 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
edm::EDGetTokenT<std::vector<T> > HLTExclDiJetFilter< T >::m_theJetToken
private

Definition at line 33 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
double HLTExclDiJetFilter< T >::minHFe_
private

Definition at line 38 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
double HLTExclDiJetFilter< T >::minPtJet_
private

Definition at line 37 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().

template<typename T >
int HLTExclDiJetFilter< T >::triggerType_
private

Definition at line 40 of file HLTExclDiJetFilter.h.

Referenced by HLTExclDiJetFilter< T >::HLTExclDiJetFilter().