CMS 3D CMS Logo

HLTJetEtaTopologyFilter.cc
Go to the documentation of this file.
1 
9 
13 
22 
23 #include<typeinfo>
24 
25 //
26 // constructors and destructor
27 //
28 template<typename T>
30  inputJetTag_ (iConfig.template getParameter< edm::InputTag > ("inputJetTag")),
31  m_theJetToken(consumes<std::vector<T>>(inputJetTag_)),
32  minPtJet_ (iConfig.template getParameter<double> ("minPtJet")),
33  //minPtJet3_ (iConfig.template getParameter<double> ("minPtJet3")),
34  jetEtaMin_ (iConfig.template getParameter<double> ("minJetEta")),
35  jetEtaMax_ (iConfig.template getParameter<double> ("maxJetEta")),
36  applyAbsToJet_ (iConfig.template getParameter<bool> ("applyAbsToJet")),
37 
38  triggerType_ (iConfig.template getParameter<int> ("triggerType"))
39 {
40  LogDebug("") << "HLTJetEtaTopologyFilter: Input/minDphi/triggerType : "
41  << inputJetTag_.encode() << " "
42  << triggerType_;
43 }
44 
45 template<typename T>
47 
48 template<typename T>
49 void
53  desc.add<edm::InputTag>("inputJetTag",edm::InputTag("hltIterativeCone5CaloJets"));
54  desc.add<double>("minPtJet",50.0);
55  //desc.add<double>("minPtJet3",99999.0);
56  desc.add<double>("minJetEta", -1.);
57  desc.add<double>("maxJetEta", 1.4);
58  desc.add<bool> ("applyAbsToJet", false),
59  desc.add<int>("triggerType",trigger::TriggerJet);
60  descriptions.add(defaultModuleLabel<HLTJetEtaTopologyFilter<T>>(), desc);
61 }
62 
63 // ------------ method called to produce the data ------------
64 template<typename T>
65 bool
67 {
68  using namespace std;
69  using namespace edm;
70  using namespace reco;
71  using namespace trigger;
72 
73  typedef vector<T> TCollection;
74  typedef Ref<TCollection> TRef;
75 
76  // The filter object
77  if (saveTags()) filterproduct.addCollectionTag(inputJetTag_);
78 
79  // get hold of collection of objects
81  iEvent.getByToken (m_theJetToken,objects);
82 
83  int n(0);
84 
85  if(!objects->empty()){ // events with two or more jets
86  typename TCollection::const_iterator iEnd ( objects->end() );
87  typename TCollection::const_iterator iJet ( objects->begin() );
88  for (;iJet != iEnd; ++iJet){
89  if (iJet->pt() < minPtJet_) continue;
90  float eta = iJet->eta();
91  if (applyAbsToJet_) {
92  eta = abs(eta);
93  }
94 
95  if ( eta < jetEtaMin_ || eta > jetEtaMax_ ) continue;
96  filterproduct.addObject(triggerType_, TRef(objects,distance(objects->begin(),iJet)));
97 
98 
99  ++n;
100  }
101  } // events with one or more jets
102  bool accept(n>=1);
103  return accept;
104 }
#define LogDebug(id)
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::string defaultModuleLabel()
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
std::string encode() const
Definition: InputTag.cc:159
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
HLTJetEtaTopologyFilter(const edm::ParameterSet &)
int iEvent
Definition: GenABIO.cc:224
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
ParameterDescriptionBase * add(U const &iLabel, T const &value)
~HLTJetEtaTopologyFilter() override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
const edm::EDGetTokenT< std::vector< T > > m_theJetToken
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
bool saveTags() const
Definition: HLTFilter.h:45
HLT enums.
long double T
const edm::InputTag inputJetTag_