34 ,inputJets_ (iConfig.getParameter<
edm::InputTag>(
"inputJets" ))
35 ,inputJetTags_(iConfig.getParameter<
edm::InputTag>(
"inputJetTags"))
36 ,minmbb_ (iConfig.getParameter<double> (
"minMbb" ))
37 ,maxmbb_ (iConfig.getParameter<double> (
"maxMbb" ))
38 ,minptb1_ (iConfig.getParameter<double> (
"minPtb1" ))
39 ,minptb2_ (iConfig.getParameter<double> (
"minPtb2" ))
40 ,maxetab_ (iConfig.getParameter<double> (
"maxEtab" ))
41 ,minptbb_ (iConfig.getParameter<double> (
"minPtbb" ))
42 ,maxptbb_ (iConfig.getParameter<double> (
"maxPtbb" ))
43 ,mintag1_ (iConfig.getParameter<double> (
"minTag1" ))
44 ,mintag2_ (iConfig.getParameter<double> (
"minTag2" ))
45 ,maxtag_ (iConfig.getParameter<double> (
"maxTag" ))
46 ,triggerType_ (iConfig.getParameter<
int> (
"triggerType" ))
52 produces<reco::METCollection>();
67 desc.
add<
double>(
"minMbb",70);
68 desc.
add<
double>(
"maxMbb",200);
69 desc.
add<
double>(
"minPtb1",-1);
70 desc.
add<
double>(
"minPtb2",-1);
71 desc.
add<
double>(
"maxEtab",99999.0);
72 desc.
add<
double>(
"minPtbb",-1);
73 desc.
add<
double>(
"maxPtbb",-1);
74 desc.
add<
double>(
"minTag1",0.5);
75 desc.
add<
double>(
"minTag2",0.2);
76 desc.
add<
double>(
"maxTag",99999.0);
84 for (
auto jetb = jetTags.
begin(); (jetb!=jetTags.
end()); ++jetb) {
105 using namespace reco;
108 typedef vector<T> TCollection;
125 if (jetTags->
size()<2)
return false;
128 double pxjet1 = -99.;
129 double pyjet1 = -99.;
130 double pzjet1 = -99.;
131 double ptjet1 = -99.;
132 double etajet1 = -99.;
135 double pxjet2 = -99.;
136 double pyjet2 = -99.;
137 double pzjet2 = -99.;
138 double ptjet2 = -99.;
139 double etajet2 = -99.;
142 for (
auto jet1=jets->begin(); (jet1!=jets->end()); ++jet1) {
143 tag1 =
findCSV(jet1, *jetTags);
145 for (
auto jet2=(jet1+1); (jet2!=jets->end()); ++jet2) {
146 tag2 =
findCSV(jet2, *jetTags);
148 ejet1 = jet1->energy();
153 etajet1 = jet1->eta();
155 ejet2 = jet2->energy();
160 etajet2 = jet2->eta();
167 double ptbb =
sqrt( (pxjet1 + pxjet2) * (pxjet1 + pxjet2) +
168 (pyjet1 + pyjet2) * (pyjet1 + pyjet2) );
172 double mbb =
sqrt( (ejet1 + ejet2) * (ejet1 + ejet2) -
173 (pxjet1 + pxjet2) * (pxjet1 + pxjet2) -
174 (pyjet1 + pyjet2) * (pyjet1 + pyjet2) -
175 (pzjet1 + pzjet2) * (pzjet1 + pzjet2) );
180 TRef ref1 = TRef(jets,
distance(jets->begin(),jet1));
181 TRef ref2 = TRef(jets,
distance(jets->begin(),jet2));
192 csvObject->push_back(csvTags);
const_iterator end() const
def setup(process, global_tag, zero_tesla=False)
~HLTJetHbbFilter() override
std::string defaultModuleLabel()
static float findCSV(const typename std::vector< T >::const_iterator &jet, const reco::JetTagCollection &jetTags)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::vector< reco::MET > METCollection
collection of MET objects
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
#define DEFINE_FWK_MODULE(type)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const std::string * moduleLabel() const
HLTJetHbbFilter(const edm::ParameterSet &)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
math::XYZTLorentzVector LorentzVector
Lorentz vector.
edm::EDGetTokenT< std::vector< T > > m_theJetsToken
edm::EDGetTokenT< reco::JetTagCollection > m_theJetTagsToken
HLTJetHbbFilter< PFJet > HLTPFJetHbbFilter
math::XYZPoint Point
point in the space
const_iterator begin() const
edm::InputTag inputJetTags_
HLTJetHbbFilter< CaloJet > HLTCaloJetHbbFilter
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override