template<typename T1, int Tid1, typename T2, int Tid2>
class HLTDoublet< T1, Tid1, T2, Tid2 >
This class is an HLTFilter (-> EDFilter) implementing a basic HLT trigger for pairs of object, evaluating all pairs with the first object from collection 1, and the second object from collection 2, cutting on variables relating to their 4-momentum representations. The object collections are assumed to be outputs of HLTSinglet single-object-type filters so that the access is thorugh RefToBases and polymorphic.
- Date:
- 2008/05/05 15:48:33
- Revision:
- 1.3
- Author
- Martin Grunewald
See header file for documentation
- Date:
- 2010/09/26 10:40:31
- Revision:
- 1.12
- Author
- Martin Grunewald
Definition at line 31 of file HLTDoublet.h.
template<typename T1 , int Tid1, typename T2 , int Tid2>
Definition at line 30 of file HLTDoublet.cc.
References HLTDoublet< T1, Tid1, T2, Tid2 >::cutdelr_, HLTDoublet< T1, Tid1, T2, Tid2 >::cutdeta_, HLTDoublet< T1, Tid1, T2, Tid2 >::cutdphi_, HLTDoublet< T1, Tid1, T2, Tid2 >::cutminv_, edm::InputTag::encode(), HLTDoublet< T1, Tid1, T2, Tid2 >::inputTag1_, HLTDoublet< T1, Tid1, T2, Tid2 >::inputTag2_, LogDebug, HLTDoublet< T1, Tid1, T2, Tid2 >::max_DelR_, HLTDoublet< T1, Tid1, T2, Tid2 >::max_Deta_, HLTDoublet< T1, Tid1, T2, Tid2 >::max_Dphi_, HLTDoublet< T1, Tid1, T2, Tid2 >::max_Minv_, HLTDoublet< T1, Tid1, T2, Tid2 >::min_DelR_, HLTDoublet< T1, Tid1, T2, Tid2 >::min_Deta_, HLTDoublet< T1, Tid1, T2, Tid2 >::min_Dphi_, HLTDoublet< T1, Tid1, T2, Tid2 >::min_Minv_, HLTDoublet< T1, Tid1, T2, Tid2 >::min_N_, and HLTDoublet< T1, Tid1, T2, Tid2 >::same_.
31 inputTag1_(iConfig.template getParameter<edm::InputTag>(
"inputTag1")),
32 inputTag2_(iConfig.template getParameter<edm::InputTag>(
"inputTag2")),
33 saveTags_ (iConfig.template getUntrackedParameter<bool>(
"saveTags",
false)),
34 min_Dphi_ (iConfig.template getParameter<double>(
"MinDphi")),
35 max_Dphi_ (iConfig.template getParameter<double>(
"MaxDphi")),
36 min_Deta_ (iConfig.template getParameter<double>(
"MinDeta")),
37 max_Deta_ (iConfig.template getParameter<double>(
"MaxDeta")),
38 min_Minv_ (iConfig.template getParameter<double>(
"MinMinv")),
39 max_Minv_ (iConfig.template getParameter<double>(
"MaxMinv")),
40 min_DelR_ (iConfig.template getParameter<double>(
"MinDelR")),
41 max_DelR_ (iConfig.template getParameter<double>(
"MaxDelR")),
42 min_N_ (iConfig.template getParameter<int>(
"MinN")),
54 LogDebug(
"") <<
"InputTags and cuts : "
61 <<
" same/dphi/deta/minv/delr "
65 produces<trigger::TriggerFilterObjectWithRefs>();
std::vector< T1Ref > coll1_
std::vector< T2Ref > coll2_
template<typename T1 , int Tid1, typename T2 , int Tid2>
Implements HLTFilter.
Definition at line 80 of file HLTDoublet.cc.
References abs, accept(), edm::HandleBase::clear(), edm::InputTag::encode(), edm::Event::getByLabel(), edm::Event::getProvenance(), Exhume::I, label, M_PI, module(), edm::Provenance::moduleLabel(), n, L1TEmulatorMonitor_cff::p, p1, p2, path(), evf::utils::pid, align_tpl::process, edm::Provenance::processName(), edm::Provenance::productInstanceName(), edm::Event::put(), dt_dqm_sourceclient_common_cff::reco, and mathSSE::sqrt().
85 using namespace trigger;
92 auto_ptr<TriggerFilterObjectWithRefs>
105 coll1->getObjects(Tid1,
coll1_);
108 coll2->getObjects(Tid2,
coll2_);
120 if (tagOld.
encode()!=tagNew.encode()) {
121 filterobject->addCollectionTag(tagNew);
132 if (tagOld.
encode()!=tagNew.encode()) {
133 filterobject->addCollectionTag(tagNew);
143 for (
unsigned int i1=0; i1!=n1; i1++) {
148 for (
unsigned int i2=
I; i2!=n2; i2++) {
152 double Dphi(
std::abs(p1.phi()-p2.phi()));
155 double Deta(
std::abs(p1.eta()-p2.eta()));
160 double DelR(
sqrt(Dphi*Dphi+Deta*Deta));
167 filterobject->addObject(Tid1,r1);
168 filterobject->addObject(Tid2,r2);
177 iEvent.
put(filterobject);
edm::Ref< T1Collection > T1Ref
std::vector< T1Ref > coll1_
std::string const & processName() const
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
std::vector< T2Ref > coll2_
const std::complex< double > I
edm::Ref< T2Collection > T2Ref
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::string const & moduleLabel() const
std::string const & productInstanceName() const
Provenance getProvenance(BranchID const &theID) const
math::XYZTLorentzVector LorentzVector
Lorentz vector.