CMS 3D CMS Logo

HLTJetCollectionsFilter.cc
Go to the documentation of this file.
1 
8 #include <string>
9 #include <vector>
10 
21 
22 //
23 // constructors and destructor
24 //
25 template <typename jetType>
27  HLTFilter(iConfig),
28  inputTag_(iConfig.getParameter< edm::InputTag > ("inputTag")),
29  originalTag_(iConfig.getParameter< edm::InputTag > ("originalTag")),
30  minJetPt_(iConfig.getParameter<double> ("MinJetPt")),
31  maxAbsJetEta_(iConfig.getParameter<double> ("MaxAbsJetEta")),
32  minNJets_(iConfig.getParameter<unsigned int> ("MinNJets")),
33  triggerType_(iConfig.getParameter<int> ("triggerType"))
34 {
35  typedef std::vector<edm::RefVector<std::vector<jetType>,jetType,edm::refhelper::FindUsingAdvance<std::vector<jetType>,jetType> > > JetCollectionVector;
36  m_theJetToken = consumes<JetCollectionVector>(inputTag_);
37 }
38 
39 template <typename jetType>
41 
42 template <typename jetType>
43 void
47  desc.add<edm::InputTag>("inputTag",edm::InputTag("hltIterativeCone5CaloJets"));
48  desc.add<edm::InputTag>("originalTag",edm::InputTag("hltIterativeCone5CaloJets"));
49  desc.add<double>("MinJetPt",30.0);
50  desc.add<double>("MaxAbsJetEta",2.6);
51  desc.add<unsigned int>("MinNJets",1);
52  desc.add<int>("triggerType",trigger::TriggerJet);
54 }
55 
56 // ------------ method called to produce the data ------------
57 template <typename jetType>
58 bool
60 {
61  using namespace std;
62  using namespace edm;
63  using namespace reco;
64  using namespace trigger;
65 
66  typedef vector<RefVector<vector<jetType>,jetType,refhelper::FindUsingAdvance<vector<jetType>,jetType> > > JetCollectionVector;
67  typedef vector<jetType> JetCollection;
70 
71  // The filter object
72  if (saveTags()) filterproduct.addCollectionTag(originalTag_);
73 
74  Handle < JetCollectionVector > theJetCollectionsHandle;
75  iEvent.getByToken(m_theJetToken, theJetCollectionsHandle);
76  const JetCollectionVector & theJetCollections = *theJetCollectionsHandle;
77 
78  // filter decision
79  bool accept(false);
80  std::set<JetRef> goodJetRefs;
81 
82  for (unsigned int collection = 0; collection < theJetCollections.size(); ++collection) {
83  unsigned int numberOfGoodJets(0);
84  const JetRefVector & refVector = theJetCollections[collection];
85 
86  typename JetRefVector::const_iterator jet(refVector.begin());
87  for (; jet != refVector.end(); jet++) {
88  JetRef jetRef(*jet);
89  if (jetRef->pt() >= minJetPt_ && std::abs(jetRef->eta()) <= maxAbsJetEta_){
90  numberOfGoodJets++;
91  goodJetRefs.insert(jetRef);
92  }
93  }
94 
95  if (numberOfGoodJets >= minNJets_) {
96  accept = true;
97  // keep looping through collections to save all possible jets
98  }
99  }
100 
101  // fill the filter object
102  for (typename std::set<JetRef>::const_iterator ref = goodJetRefs.begin(); ref != goodJetRefs.end(); ++ref) {
103  filterproduct.addObject(triggerType_, *ref);
104  }
105 
106  return accept;
107 }
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
std::vector< Jet > JetCollection
Definition: Jet.h:55
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::RefVector< JetBxCollection > JetRefVector
Definition: Jet.h:14
std::string defaultModuleLabel()
edm::EDGetTokenT< std::vector< edm::RefVector< std::vector< jetType >, jetType, edm::refhelper::FindUsingAdvance< std::vector< jetType >, jetType > > > > m_theJetToken
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
edm::Ref< JetBxCollection > JetRef
Definition: Jet.h:13
int iEvent
Definition: GenABIO.cc:224
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ParameterDescriptionBase * add(U const &iLabel, T const &value)
~HLTJetCollectionsFilter() override
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
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.
HLTJetCollectionsFilter(const edm::ParameterSet &)