27 template<
typename T1,
typename T2>
29 originTag1_(iConfig.
template getParameter<std::vector<edm::InputTag> >(
"originTag1")),
30 originTag2_(iConfig.
template getParameter<std::vector<edm::InputTag> >(
"originTag2")),
31 inputTag1_(iConfig.
template getParameter<edm::InputTag>(
"inputTag1")),
32 inputTag2_(iConfig.
template getParameter<edm::InputTag>(
"inputTag2")),
33 inputToken1_(consumes<trigger::TriggerFilterObjectWithRefs>(inputTag1_)),
34 inputToken2_(consumes<trigger::TriggerFilterObjectWithRefs>(inputTag2_)),
35 triggerType1_(iConfig.
template getParameter<int>(
"triggerType1")),
36 triggerType2_(iConfig.
template getParameter<int>(
"triggerType2")),
37 min_Dphi_ (iConfig.
template getParameter<double>(
"MinDphi")),
38 max_Dphi_ (iConfig.
template getParameter<double>(
"MaxDphi")),
39 min_Deta_ (iConfig.
template getParameter<double>(
"MinDeta")),
40 max_Deta_ (iConfig.
template getParameter<double>(
"MaxDeta")),
41 min_Minv_ (iConfig.
template getParameter<double>(
"MinMinv")),
42 max_Minv_ (iConfig.
template getParameter<double>(
"MaxMinv")),
43 min_DelR_ (iConfig.
template getParameter<double>(
"MinDelR")),
44 max_DelR_ (iConfig.
template getParameter<double>(
"MaxDelR")),
45 min_Pt_ (iConfig.
template getParameter<double>(
"MinPt")),
46 max_Pt_ (iConfig.
template getParameter<double>(
"MaxPt")),
47 min_N_ (iConfig.
template getParameter<int>(
"MinN")),
49 cutdphi_ (min_Dphi_ <= max_Dphi_),
50 cutdeta_ (min_Deta_ <= max_Deta_),
51 cutminv_ (min_Minv_ <= max_Minv_),
52 cutdelr_ (min_DelR_ <= max_DelR_),
53 cutpt_ (min_Pt_ <= max_Pt_ )
55 LogDebug(
"") <<
"InputTags and cuts : "
64 <<
" same/dphi/deta/minv/delr/pt "
69 template<
typename T1,
typename T2>
73 template<
typename T1,
typename T2>
77 makeHLTFilterDescription(desc);
78 std::vector<edm::InputTag> originTag1(1,
edm::InputTag(
"hltOriginal1"));
79 std::vector<edm::InputTag> originTag2(1,
edm::InputTag(
"hltOriginal2"));
80 desc.
add<std::vector<edm::InputTag> >(
"originTag1",originTag1);
81 desc.
add<std::vector<edm::InputTag> >(
"originTag2",originTag2);
84 desc.
add<
int>(
"triggerType1",0);
85 desc.
add<
int>(
"triggerType2",0);
86 desc.
add<
double>(
"MinDphi",+1.0);
87 desc.
add<
double>(
"MaxDphi",-1.0);
88 desc.
add<
double>(
"MinDeta",+1.0);
89 desc.
add<
double>(
"MaxDeta",-1.0);
90 desc.
add<
double>(
"MinMinv",+1.0);
91 desc.
add<
double>(
"MaxMinv",-1.0);
92 desc.
add<
double>(
"MinDelR",+1.0);
93 desc.
add<
double>(
"MaxDelR",-1.0);
94 desc.
add<
double>(
"MinPt" ,+1.0);
95 desc.
add<
double>(
"MaxPt" ,-1.0);
96 desc.
add<
int>(
"MinN",1);
105 template<
typename T1,
typename T2>
111 using namespace reco;
112 using namespace trigger;
120 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 0 " << std::endl;
122 std::vector<T1Ref> coll1;
123 std::vector<T2Ref> coll2;
128 handle1->getObjects(triggerType1_, coll1);
129 handle2->getObjects(triggerType2_, coll2);
135 for (
unsigned int i=0;
i<originTag1_.size(); ++
i) {
137 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 1a/" << i <<
" " << originTag1_[
i].encode() << std::endl;
146 if (tagOld.
encode()!=tagNew.encode()) {
149 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 1b " << tagNew.encode() << std::endl;
152 for (
unsigned int i=0;
i<originTag2_.size(); ++
i) {
154 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 2a/" << i <<
" " << originTag2_[
i].encode() << std::endl;
163 if (tagOld.
encode()!=tagNew.encode()) {
166 LogVerbatim(
"HLTDoublet") <<
" XXX " << moduleLabel() <<
" 2b " << tagNew.encode() << std::endl;
175 for (
unsigned int i1=0; i1!=n1; i1++) {
180 for (
unsigned int i2=I; i2!=n2; i2++) {
184 double Dphi(
std::abs(p1.phi()-p2.phi()));
187 double Deta(
std::abs(p1.eta()-p2.eta()));
193 double DelR(
sqrt(Dphi*Dphi+Deta*Deta));
195 if ( ( (!cutdphi_) || ((min_Dphi_<=Dphi) && (Dphi<=max_Dphi_)) ) &&
196 ( (!cutdeta_) || ((min_Deta_<=Deta) && (Deta<=max_Deta_)) ) &&
197 ( (!cutminv_) || ((min_Minv_<=Minv) && (Minv<=max_Minv_)) ) &&
198 ( (!cutdelr_) || ((min_DelR_<=DelR) && (DelR<=max_DelR_)) ) &&
199 ( (!cutpt_ ) || ((min_Pt_ <=
Pt ) && (
Pt <=max_Pt_ )) ) ) {
201 filterproduct.
addObject(triggerType1_,r1);
202 filterproduct.
addObject(triggerType2_,r2);
208 accept = (n>=min_N_);
const edm::InputTag inputTag2_
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