23 template <
typename T1,
typename T2>
30 inputToken1_(consumes<
trigger::TriggerFilterObjectWithRefs>(inputTag1_)),
31 inputToken2_(consumes<
trigger::TriggerFilterObjectWithRefs>(inputTag2_)),
32 triggerType1_(iConfig.
template getParameter<
int>(
"triggerType1")),
33 triggerType2_(iConfig.
template getParameter<
int>(
"triggerType2")),
34 min_Deta_(iConfig.
template getParameter<double>(
"MinDeta")),
35 max_Deta_(iConfig.
template getParameter<double>(
"MaxDeta")),
36 min_Dphi_(iConfig.
template getParameter<double>(
"MinDphi")),
37 max_Dphi_(iConfig.
template getParameter<double>(
"MaxDphi")),
39 min_DelR2_(iConfig.
template getParameter<double>(
"MinDelR") *
42 max_DelR2_(iConfig.
template getParameter<double>(
"MaxDelR") *
44 min_Pt_(iConfig.
template getParameter<double>(
"MinPt")),
45 max_Pt_(iConfig.
template getParameter<double>(
"MaxPt")),
46 min_Minv_(iConfig.
template getParameter<double>(
"MinMinv")),
47 max_Minv_(iConfig.
template getParameter<double>(
"MaxMinv")),
50 cutdeta_(min_Deta_ <= max_Deta_),
51 cutdphi_(min_Dphi_ <= max_Dphi_),
52 cutdelr2_(min_DelR2_ <= max_DelR2_),
53 cutpt_(min_Pt_ <= max_Pt_),
54 cutminv_(min_Minv_ <= max_Minv_)
68 template <
typename T1,
typename T2>
71 makeHLTFilterDescription(
desc);
78 desc.add<
int>(
"triggerType1", 0);
79 desc.add<
int>(
"triggerType2", 0);
80 desc.add<
double>(
"MinDeta", +1.0);
81 desc.add<
double>(
"MaxDeta", -1.0);
82 desc.add<
double>(
"MinDphi", +1.0);
83 desc.add<
double>(
"MaxDphi", -1.0);
84 desc.add<
double>(
"MinDelR", +1.0);
85 desc.add<
double>(
"MaxDelR", -1.0);
86 desc.add<
double>(
"MinPt", +1.0);
87 desc.add<
double>(
"MaxPt", -1.0);
88 desc.add<
double>(
"MinMinv", +1.0);
89 desc.add<
double>(
"MaxMinv", -1.0);
90 desc.add<
int>(
"MinN", 1);
99 template <
typename T1,
typename T2>
105 using namespace reco;
116 std::vector<T1Ref> coll1;
117 std::vector<T2Ref> coll2;
121 if (
iEvent.getByToken(inputToken1_, handle1) &&
iEvent.getByToken(inputToken2_, handle2)) {
129 for (
unsigned int i = 0;
i < originTag1_.size(); ++
i) {
136 const auto& prov =
iEvent.getStableProvenance(pid);
137 const string&
label(prov.moduleLabel());
138 const string&
instance(prov.productInstanceName());
139 const string&
process(prov.processName());
141 if (tagOld.encode() != tagNew.encode()) {
147 for (
unsigned int i = 0;
i < originTag2_.size(); ++
i) {
154 const auto& prov =
iEvent.getStableProvenance(pid);
155 const string&
label(prov.moduleLabel());
156 const string&
instance(prov.productInstanceName());
157 const string&
process(prov.processName());
159 if (tagOld.encode() != tagNew.encode()) {
171 for (
unsigned int i1 = 0;
i1 != n1;
i1++) {
178 for (
unsigned int i2 =
I;
i2 != n2;
i2++) {
182 if (cutdeta_
or cutdphi_
or cutdelr2_) {
184 if (cutdeta_ and (min_Deta_ > Deta
or Deta > max_Deta_))
188 if (cutdphi_ and (min_Dphi_ > Dphi
or Dphi > max_Dphi_))
191 double const DelR2 = Deta * Deta + Dphi * Dphi;
192 if (cutdelr2_ and (min_DelR2_ > DelR2
or DelR2 > max_DelR2_))
198 double const Pt =
p.pt();
199 if (cutpt_ and (min_Pt_ > Pt
or Pt > max_Pt_))
203 if (cutminv_ and (min_Minv_ > Minv
or Minv > max_Minv_))
207 filterproduct.
addObject(triggerType1_, r1);
const edm::InputTag inputTag2_
constexpr double deltaPhi(double phi1, double phi2)
Log< level::Info, true > LogVerbatim
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
HLTDoublet(const edm::ParameterSet &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static PFTauRenderPlugin instance
const edm::InputTag inputTag1_
std::string defaultModuleLabel()
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>)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Abs< T >::type abs(const T &t)
const std::complex< double > I
def template(fileName, svg, replaceme="REPLACEME")
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
math::PtEtaPhiELorentzVectorF LorentzVector