28 template<
typename T1,
typename T2>
30 originTag1_(iConfig.
template getParameter<std::vector<edm::
InputTag> >(
"originTag1")),
31 originTag2_(iConfig.
template getParameter<std::vector<edm::
InputTag> >(
"originTag2")),
34 inputToken1_(consumes<trigger::TriggerFilterObjectWithRefs>(inputTag1_)),
35 inputToken2_(consumes<trigger::TriggerFilterObjectWithRefs>(inputTag2_)),
36 triggerType1_(iConfig.
template getParameter<int>(
"triggerType1")),
37 triggerType2_(iConfig.
template getParameter<int>(
"triggerType2")),
38 min_Dphi_ (iConfig.
template getParameter<double>(
"MinDphi")),
39 max_Dphi_ (iConfig.
template getParameter<double>(
"MaxDphi")),
40 min_Deta_ (iConfig.
template getParameter<double>(
"MinDeta")),
41 max_Deta_ (iConfig.
template getParameter<double>(
"MaxDeta")),
42 min_Minv_ (iConfig.
template getParameter<double>(
"MinMinv")),
43 max_Minv_ (iConfig.
template getParameter<double>(
"MaxMinv")),
44 min_DelR_ (iConfig.
template getParameter<double>(
"MinDelR")),
45 max_DelR_ (iConfig.
template getParameter<double>(
"MaxDelR")),
46 min_Pt_ (iConfig.
template getParameter<double>(
"MinPt")),
47 max_Pt_ (iConfig.
template getParameter<double>(
"MaxPt")),
48 min_N_ (iConfig.
template getParameter<int>(
"MinN")),
50 cutdphi_ (min_Dphi_ <= max_Dphi_),
51 cutdeta_ (min_Deta_ <= max_Deta_),
52 cutminv_ (min_Minv_ <= max_Minv_),
53 cutdelr_ (min_DelR_ <= max_DelR_),
54 cutpt_ (min_Pt_ <= max_Pt_ )
56 LogDebug(
"") <<
"InputTags and cuts : "
65 <<
" same/dphi/deta/minv/delr/pt "
70 template<
typename T1,
typename T2>
74 template<
typename T1,
typename T2>
78 makeHLTFilterDescription(desc);
81 desc.
add<std::vector<edm::InputTag> >(
"originTag1",
originTag1);
82 desc.
add<std::vector<edm::InputTag> >(
"originTag2",
originTag2);
85 desc.
add<
int>(
"triggerType1",0);
86 desc.
add<
int>(
"triggerType2",0);
87 desc.
add<
double>(
"MinDphi",+1.0);
88 desc.
add<
double>(
"MaxDphi",-1.0);
89 desc.
add<
double>(
"MinDeta",+1.0);
90 desc.
add<
double>(
"MaxDeta",-1.0);
91 desc.
add<
double>(
"MinMinv",+1.0);
92 desc.
add<
double>(
"MaxMinv",-1.0);
93 desc.
add<
double>(
"MinDelR",+1.0);
94 desc.
add<
double>(
"MaxDelR",-1.0);
95 desc.
add<
double>(
"MinPt" ,+1.0);
96 desc.
add<
double>(
"MaxPt" ,-1.0);
97 desc.
add<
int>(
"MinN",1);
106 template<
typename T1,
typename T2>
112 using namespace reco;
113 using namespace trigger;
121 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 0 " << std::endl;
123 std::vector<T1Ref> coll1;
124 std::vector<T2Ref> coll2;
129 handle1->getObjects(triggerType1_, coll1);
130 handle2->getObjects(triggerType2_, coll2);
136 for (
unsigned int i=0;
i<originTag1_.size(); ++
i) {
138 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 1a/" << i <<
" " << originTag1_[
i].encode() << std::endl;
147 if (tagOld.
encode()!=tagNew.encode()) {
150 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 1b " << tagNew.encode() << std::endl;
153 for (
unsigned int i=0;
i<originTag2_.size(); ++
i) {
155 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 2a/" << i <<
" " << originTag2_[
i].encode() << std::endl;
164 if (tagOld.
encode()!=tagNew.encode()) {
167 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 2b " << tagNew.encode() << std::endl;
176 for (
unsigned int i1=0; i1!=n1; i1++) {
181 for (
unsigned int i2=I; i2!=n2; i2++) {
185 double Dphi(
std::abs(p1.phi()-p2.phi()));
188 double Deta(
std::abs(p1.eta()-p2.eta()));
194 double DelR(
sqrt(Dphi*Dphi+Deta*Deta));
196 if ( ( (!cutdphi_) || ((min_Dphi_<=Dphi) && (Dphi<=max_Dphi_)) ) &&
197 ( (!cutdeta_) || ((min_Deta_<=Deta) && (Deta<=max_Deta_)) ) &&
198 ( (!cutminv_) || ((min_Minv_<=Minv) && (Minv<=max_Minv_)) ) &&
199 ( (!cutdelr_) || ((min_DelR_<=DelR) && (DelR<=max_DelR_)) ) &&
200 ( (!cutpt_ ) || ((min_Pt_ <=
Pt ) && (
Pt <=max_Pt_ )) ) ) {
202 filterproduct.
addObject(triggerType1_,r1);
203 filterproduct.
addObject(triggerType2_,r2);
209 accept = (n>=min_N_);
const edm::InputTag inputTag2_
std::string defaultModuleLabel()
HLTDoublet(const edm::ParameterSet &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static PFTauRenderPlugin instance
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const edm::InputTag inputTag1_
std::string const & processName() const
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>)
Abs< T >::type abs(const T &t)
const std::complex< double > I
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::string const & moduleLabel() const
virtual bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
std::string const & productInstanceName() const
Provenance getProvenance(BranchID const &theID) const
math::PtEtaPhiELorentzVectorF LorentzVector