31 inputTag_ (iConfig.
template getParameter< edm::InputTag > (
"inputTag")),
32 minPtLow_ (iConfig.
template getParameter<double> (
"minPtLow")),
33 minPtHigh_ (iConfig.
template getParameter<double> (
"minPtHigh")),
34 etaOpposite_ (iConfig.
template getParameter<bool> (
"etaOpposite")),
35 minDeltaEta_ (iConfig.
template getParameter<double> (
"minDeltaEta")),
36 minInvMass_ (iConfig.
template getParameter<double> (
"minInvMass")),
37 maxEta_ (iConfig.
template getParameter<double> (
"maxEta")),
38 leadingJetOnly_ (iConfig.
template getParameter<bool> (
"leadingJetOnly")),
39 triggerType_ (iConfig.
template getParameter<int> (
"triggerType"))
41 LogDebug(
"") <<
"HLTJetVBFFilter: Input/minPtLow_/minPtHigh_/triggerType : "
55 makeHLTFilterDescription(desc);
57 desc.
add<
double>(
"minPtLow",40.);
58 desc.
add<
double>(
"minPtHigh",40.);
59 desc.
add<
bool>(
"etaOpposite",
false);
60 desc.
add<
double>(
"minDeltaEta",4.0);
61 desc.
add<
double>(
"minInvMass",1000.);
62 desc.
add<
double>(
"maxEta",5.0);
63 desc.
add<
bool>(
"leadingJetOnly",
false);
78 using namespace trigger;
80 typedef vector<T> TCollection;
94 if(objects->size() > 1){
113 typename TCollection::const_iterator jet1 ( objects->begin() );
114 for (; jet1!=objects->end(); jet1++) {
116 if( leadingJetOnly_==
true && countJet1>2 )
break;
118 if( jet1->pt() < minPtHigh_ )
break;
119 if(
std::abs(jet1->eta()) > maxEta_ )
continue;
121 countJet2 = countJet1-1;
122 typename TCollection::const_iterator jet2 ( jet1+1 );
123 for (; jet2!=objects->end(); jet2++) {
125 if( leadingJetOnly_==
true && countJet2>2 )
break;
127 if( jet2->pt() < minPtLow_ )
break;
128 if(
std::abs(jet2->eta()) > maxEta_ )
continue;
130 ejet1 = jet1->energy();
135 etajet1 = jet1->eta();
137 ejet2 = jet2->energy();
142 etajet2 = jet2->eta();
144 float deltaetajet = etajet1 - etajet2;
145 float invmassjet =
sqrt( (ejet1 + ejet2) * (ejet1 + ejet2) -
146 (pxjet1 + pxjet2) * (pxjet1 + pxjet2) -
147 (pyjet1 + pyjet2) * (pyjet1 + pyjet2) -
148 (pzjet1 + pzjet2) * (pzjet1 + pzjet2) );
151 if ( (ptjet1 > minPtHigh_) &&
152 (ptjet2 > minPtLow_) &&
153 ( (etaOpposite_ ==
true && etajet1*etajet2 < 0) || (etaOpposite_ ==
false) ) &&
154 (
std::abs(deltaetajet) > minDeltaEta_) &&
155 (
std::abs(invmassjet) > minInvMass_) ){
157 TRef ref1 = TRef(objects,distance(objects->begin(),jet1));
158 TRef ref2 = TRef(objects,distance(objects->begin(),jet2));
159 filterproduct.
addObject(triggerType_,ref1);
160 filterproduct.
addObject(triggerType_,ref2);
virtual bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
HLTJetVBFFilter(const edm::ParameterSet &)
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)