CMS 3D CMS Logo

HLTMonoJetFilter.cc
Go to the documentation of this file.
1 
21 
22 
23 //
24 // constructors and destructor
25 //
26 template<typename T>
28  inputJetTag_ (iConfig.template getParameter< edm::InputTag > ("inputJetTag")),
29  maxPtSecondJet_ (iConfig.template getParameter<double> ("maxPtSecondJet")),
30  maxDeltaPhi_ (iConfig.template getParameter<double> ("maxDeltaPhi")),
31  triggerType_ (iConfig.template getParameter<int> ("triggerType"))
32 {
33  m_theObjectToken = consumes<std::vector<T>>(inputJetTag_);
34  LogDebug("") << "HLTMonoJetFilter: Input/maxPtSecondJet/maxDeltaPhi/triggerType : "
35  << inputJetTag_.encode() << " "
36  << maxPtSecondJet_ << " "
37  << maxDeltaPhi_ << " "
38  << triggerType_;
39 }
40 
41 template<typename T>
43 
44 template<typename T>
45 void
49  desc.add<edm::InputTag>("inputJetTag",edm::InputTag("hltAntiKT5ConvPFJets"));
50  desc.add<double>("maxPtSecondJet",9999.);
51  desc.add<double>("maxDeltaPhi",99.);
52  desc.add<int>("triggerType",trigger::TriggerJet);
53  descriptions.add(defaultModuleLabel<HLTMonoJetFilter<T>>(), desc);
54 }
55 
56 //
57 // ------------ method called to produce the data ------------
58 //
59 template<typename T>
60 bool
62 {
63  using namespace std;
64  using namespace edm;
65  using namespace reco;
66  using namespace trigger;
67 
68  typedef vector<T> TCollection;
69  typedef Ref<TCollection> TRef;
70 
71  // The filter object
72  if (saveTags()) filterproduct.addCollectionTag(inputJetTag_);
73 
74  // Ref to Candidate object to be recorded in filter object
75  TRef ref1, ref2;
76 
77  // get hold of collection of objects
79  iEvent.getByToken (m_theObjectToken,objects);
80 
81  // look at all candidates, check cuts and add to filter object
82  int n(0);
83 
84  if(!objects->empty()){
85  int countJet(0);
86  double jet1Phi = 0.;
87  double jet2Phi = 0.;
88  double jet2Pt = 0.;
89 
90  typename TCollection::const_iterator i ( objects->begin() );
91  for (; i!=objects->end(); i++) {
92  if(countJet==0){
93  ref1=TRef(objects,distance(objects->begin(),i));
94  jet1Phi = i->phi();
95  }
96  if(countJet==1){
97  ref2=TRef(objects,distance(objects->begin(),i));
98  jet2Pt = i->pt();
99  jet2Phi = i->phi();
100  }
101  countJet++;
102  if(countJet>=2) break;
103  }
104 
105  if(countJet==1){
106  n=1;
107  }
108  else if(countJet>1 && jet2Pt<maxPtSecondJet_){
109  n=1;
110  }
111  else if(countJet>1 && jet2Pt>=maxPtSecondJet_){
112  double Dphi=std::abs(deltaPhi(jet1Phi,jet2Phi));
113  if(Dphi>=maxDeltaPhi_) n=-1;
114  else n=1;
115  }
116  else{
117  n=-1;
118  }
119 
120  if(n==1){
121  filterproduct.addObject(triggerType_,ref1);
122  if(countJet>1) filterproduct.addObject(triggerType_,ref2);
123  }
124  }
125 
126  bool accept(n==1);
127 
128  return accept;
129 }
#define LogDebug(id)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< std::vector< T > > m_theObjectToken
edm::InputTag inputJetTag_
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
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
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
~HLTMonoJetFilter() override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
HLTMonoJetFilter(const edm::ParameterSet &)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
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.