Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use reco::deltaR2 in HLTrigger/*/ packages #43643

Merged
merged 1 commit into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions HLTrigger/Egamma/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<use name="FWCore/Framework"/>
<use name="FWCore/MessageLogger"/>
<use name="FWCore/PluginManager"/>
<use name="FWCore/Utilities"/>
<use name="HLTrigger/HLTcore"/>
<use name="MagneticField/Engine"/>
<use name="MagneticField/Records"/>
Expand Down
26 changes: 12 additions & 14 deletions HLTrigger/Egamma/plugins/HLTDisplacedEgammaFilter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,28 @@
* \author Monica Vazquez Acosta (CERN)
*
*/
#include <cmath>

#include "HLTDisplacedEgammaFilter.h"
#include "DataFormats/Common/interface/Handle.h"
#include "DataFormats/Math/interface/deltaR.h"
#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h"
#include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h"
#include "DataFormats/Math/interface/LorentzVector.h"

//
// constructors and destructor
//
HLTDisplacedEgammaFilter::HLTDisplacedEgammaFilter(const edm::ParameterSet& iConfig) : HLTFilter(iConfig) {
inputTag_ = iConfig.getParameter<edm::InputTag>("inputTag");
ncandcut_ = iConfig.getParameter<int>("ncandcut");
l1EGTag_ = iConfig.getParameter<edm::InputTag>("l1EGCand");

inputTrk = iConfig.getParameter<edm::InputTag>("inputTrack");
trkPtCut = iConfig.getParameter<double>("trackPtCut");
trkdRCut = iConfig.getParameter<double>("trackdRCut");

// track dR^2 threshold with sign
auto const trkDrCut = iConfig.getParameter<double>("trackdRCut");
trkDr2Cut = trkDrCut * std::abs(trkDrCut);

maxTrkCut = iConfig.getParameter<int>("maxTrackCut");

rechitsEB = iConfig.getParameter<edm::InputTag>("RecHitsEB");
Expand All @@ -41,13 +43,12 @@ HLTDisplacedEgammaFilter::HLTDisplacedEgammaFilter(const edm::ParameterSet& iCon
inputToken_ = consumes<trigger::TriggerFilterObjectWithRefs>(inputTag_);
rechitsEBToken_ = consumes<EcalRecHitCollection>(rechitsEB);
rechitsEEToken_ = consumes<EcalRecHitCollection>(rechitsEE);

if (useTrackVeto) {
inputTrkToken_ = consumes<reco::TrackCollection>(inputTrk);
}
}

HLTDisplacedEgammaFilter::~HLTDisplacedEgammaFilter() = default;

void HLTDisplacedEgammaFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
makeHLTFilterDescription(desc);
Expand Down Expand Up @@ -139,9 +140,8 @@ bool HLTDisplacedEgammaFilter::hltFilter(edm::Event& iEvent,
for (auto const& it : *tracks) {
if (it.pt() < trkPtCut)
continue;
LorentzVector trkP4(it.px(), it.py(), it.pz(), it.p());
double dR = ROOT::Math::VectorUtil::DeltaR(trkP4, ref->p4());
if (dR < trkdRCut)
auto const dR2 = reco::deltaR2(it.eta(), it.phi(), ref->eta(), ref->phi());
if (dR2 < trkDr2Cut)
nTrk++;
if (nTrk > maxTrkCut)
break;
Expand All @@ -156,9 +156,7 @@ bool HLTDisplacedEgammaFilter::hltFilter(edm::Event& iEvent,
}

// filter decision
bool accept(n >= ncandcut_);

return accept;
return (n >= ncandcut_);
}

// declare this class as a framework plugin
Expand Down
21 changes: 8 additions & 13 deletions HLTrigger/Egamma/plugins/HLTDisplacedEgammaFilter.h
Original file line number Diff line number Diff line change
@@ -1,30 +1,25 @@
#ifndef HLTDisplacedEgammaFilter_h
#define HLTDisplacedEgammaFilter_h
#ifndef HLTrigger_Egamma_HLTDisplacedEgammaFilter_h
#define HLTrigger_Egamma_HLTDisplacedEgammaFilter_h

/** \class HLTDisplacedEgammaFilter
*
* \author Monica Vazquez Acosta (CERN)
*
*/

#include "HLTrigger/HLTcore/interface/HLTFilter.h"

#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"

//
// class decleration
//
typedef math::XYZTLorentzVector LorentzVector;
#include <Math/VectorUtil.h>
#include "HLTrigger/HLTcore/interface/HLTFilter.h"

class HLTDisplacedEgammaFilter : public HLTFilter {
public:
explicit HLTDisplacedEgammaFilter(const edm::ParameterSet&);
~HLTDisplacedEgammaFilter() override;
~HLTDisplacedEgammaFilter() override = default;

static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

bool hltFilter(edm::Event&,
const edm::EventSetup&,
trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
Expand All @@ -51,8 +46,8 @@ class HLTDisplacedEgammaFilter : public HLTFilter {
edm::InputTag inputTrk;
edm::EDGetTokenT<reco::TrackCollection> inputTrkToken_;
double trkPtCut;
double trkdRCut;
double trkDr2Cut;
int maxTrkCut;
};

#endif //HLTDisplacedEgammaFilter_h
#endif
1 change: 1 addition & 0 deletions HLTrigger/HLTfilters/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
<use name="DataFormats/L1GlobalTrigger"/>
<use name="DataFormats/L1TGlobal"/>
<use name="DataFormats/L1Trigger"/>
<use name="DataFormats/Math"/>
<use name="DataFormats/METReco"/>
<use name="DataFormats/RecoCandidate"/>
<use name="DataFormats/TauReco"/>
Expand Down
126 changes: 65 additions & 61 deletions HLTrigger/HLTfilters/plugins/HLTDoublet.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,20 @@
* \author Martin Grunewald
*
*/
#include <cmath>

#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "HLTDoublet.h"

#include "DataFormats/Candidate/interface/Particle.h"
#include "DataFormats/Common/interface/Handle.h"

#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"

#include "DataFormats/Candidate/interface/Particle.h"

#include "DataFormats/Math/interface/deltaPhi.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "HLTrigger/HLTcore/interface/defaultModuleLabel.h"
#include <cmath>
#include "HLTDoublet.h"

//
// constructors and destructor
//
template <typename T1, typename T2>
HLTDoublet<T1, T2>::HLTDoublet(const edm::ParameterSet& iConfig)
: HLTFilter(iConfig),
Expand All @@ -36,36 +31,40 @@ HLTDoublet<T1, T2>::HLTDoublet(const edm::ParameterSet& iConfig)
inputToken2_(consumes<trigger::TriggerFilterObjectWithRefs>(inputTag2_)),
triggerType1_(iConfig.template getParameter<int>("triggerType1")),
triggerType2_(iConfig.template getParameter<int>("triggerType2")),
min_Dphi_(iConfig.template getParameter<double>("MinDphi")),
max_Dphi_(iConfig.template getParameter<double>("MaxDphi")),
min_Deta_(iConfig.template getParameter<double>("MinDeta")),
max_Deta_(iConfig.template getParameter<double>("MaxDeta")),
min_Minv_(iConfig.template getParameter<double>("MinMinv")),
max_Minv_(iConfig.template getParameter<double>("MaxMinv")),
min_DelR_(iConfig.template getParameter<double>("MinDelR")),
max_DelR_(iConfig.template getParameter<double>("MaxDelR")),
min_Dphi_(iConfig.template getParameter<double>("MinDphi")),
max_Dphi_(iConfig.template getParameter<double>("MaxDphi")),
// min Delta-R^2 threshold with sign
min_DelR2_(iConfig.template getParameter<double>("MinDelR") *
std::abs(iConfig.template getParameter<double>("MinDelR"))),
// max Delta-R^2 threshold with sign
max_DelR2_(iConfig.template getParameter<double>("MaxDelR") *
std::abs(iConfig.template getParameter<double>("MaxDelR"))),
min_Pt_(iConfig.template getParameter<double>("MinPt")),
max_Pt_(iConfig.template getParameter<double>("MaxPt")),
min_Minv_(iConfig.template getParameter<double>("MinMinv")),
max_Minv_(iConfig.template getParameter<double>("MaxMinv")),
min_N_(iConfig.template getParameter<int>("MinN")),
same_(inputTag1_.encode() == inputTag2_.encode()), // same collections to be compared?
cutdphi_(min_Dphi_ <= max_Dphi_), // cut active?
cutdeta_(min_Deta_ <= max_Deta_), // cut active?
cutminv_(min_Minv_ <= max_Minv_), // cut active?
cutdelr_(min_DelR_ <= max_DelR_), // cut active?
cutpt_(min_Pt_ <= max_Pt_) // cut active?
cutdphi_(min_Dphi_ <= max_Dphi_), // cut active?
cutdelr2_(min_DelR2_ <= max_DelR2_), // cut active?
cutpt_(min_Pt_ <= max_Pt_), // cut active?
cutminv_(min_Minv_ <= max_Minv_) // cut active?
{
LogDebug("") << "InputTags and cuts : " << inputTag1_.encode() << " " << inputTag2_.encode() << triggerType1_ << " "
<< triggerType2_ << " Dphi [" << min_Dphi_ << " " << max_Dphi_ << "]"
<< " Deta [" << min_Deta_ << " " << max_Deta_ << "]"
<< " Minv [" << min_Minv_ << " " << max_Minv_ << "]"
<< " DelR [" << min_DelR_ << " " << max_DelR_ << "]"
<< " Pt [" << min_Pt_ << " " << max_Pt_ << "]"
<< " MinN =" << min_N_ << " same/dphi/deta/minv/delr/pt " << same_ << cutdphi_ << cutdeta_ << cutminv_
<< cutdelr_ << cutpt_;
LogDebug("HLTDoublet") << "InputTags and cuts:\n inputTag1=" << inputTag1_.encode()
<< " inputTag2=" << inputTag2_.encode() << " triggerType1=" << triggerType1_
<< " triggerType2=" << triggerType2_ << "\n Deta [" << min_Deta_ << ", " << max_Deta_ << "]"
<< " Dphi [" << min_Dphi_ << ", " << max_Dphi_ << "]"
<< " DelR2 [" << min_DelR2_ << ", " << max_DelR2_ << "]"
<< " Pt [" << min_Pt_ << ", " << max_Pt_ << "]"
<< " Minv [" << min_Minv_ << ", " << max_Minv_ << "]"
<< " MinN=" << min_N_ << "\n same=" << same_ << " cut_deta=" << cutdeta_
<< " cutdphi=" << cutdphi_ << " cut_delr2=" << cutdelr2_ << " cut_pt=" << cutpt_
<< " cut_minv=" << cutminv_;
}

template <typename T1, typename T2>
HLTDoublet<T1, T2>::~HLTDoublet() = default;
template <typename T1, typename T2>
void HLTDoublet<T1, T2>::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
Expand All @@ -78,16 +77,16 @@ void HLTDoublet<T1, T2>::fillDescriptions(edm::ConfigurationDescriptions& descri
desc.add<edm::InputTag>("inputTag2", edm::InputTag("hltFiltered22"));
desc.add<int>("triggerType1", 0);
desc.add<int>("triggerType2", 0);
desc.add<double>("MinDphi", +1.0);
desc.add<double>("MaxDphi", -1.0);
desc.add<double>("MinDeta", +1.0);
desc.add<double>("MaxDeta", -1.0);
desc.add<double>("MinMinv", +1.0);
desc.add<double>("MaxMinv", -1.0);
desc.add<double>("MinDphi", +1.0);
desc.add<double>("MaxDphi", -1.0);
desc.add<double>("MinDelR", +1.0);
desc.add<double>("MaxDelR", -1.0);
desc.add<double>("MinPt", +1.0);
desc.add<double>("MaxPt", -1.0);
desc.add<double>("MinMinv", +1.0);
desc.add<double>("MaxMinv", -1.0);
desc.add<int>("MinN", 1);
descriptions.add(defaultModuleLabel<HLTDoublet<T1, T2>>(), desc);
}
Expand All @@ -112,7 +111,7 @@ bool HLTDoublet<T1, T2>::hltFilter(edm::Event& iEvent,

bool accept(false);

LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 0 " << std::endl;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 0 ";

std::vector<T1Ref> coll1;
std::vector<T2Ref> coll2;
Expand All @@ -129,8 +128,7 @@ bool HLTDoublet<T1, T2>::hltFilter(edm::Event& iEvent,
InputTag tagOld;
for (unsigned int i = 0; i < originTag1_.size(); ++i) {
filterproduct.addCollectionTag(originTag1_[i]);
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 1a/" << i << " " << originTag1_[i].encode()
<< std::endl;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 1a/" << i << " " << originTag1_[i].encode();
}
tagOld = InputTag();
for (size_type i1 = 0; i1 != n1; ++i1) {
Expand All @@ -143,13 +141,12 @@ bool HLTDoublet<T1, T2>::hltFilter(edm::Event& iEvent,
if (tagOld.encode() != tagNew.encode()) {
filterproduct.addCollectionTag(tagNew);
tagOld = tagNew;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 1b " << tagNew.encode() << std::endl;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 1b " << tagNew.encode();
}
}
for (unsigned int i = 0; i < originTag2_.size(); ++i) {
filterproduct.addCollectionTag(originTag2_[i]);
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 2a/" << i << " " << originTag2_[i].encode()
<< std::endl;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 2a/" << i << " " << originTag2_[i].encode();
}
tagOld = InputTag();
for (size_type i2 = 0; i2 != n2; ++i2) {
Expand All @@ -162,7 +159,7 @@ bool HLTDoublet<T1, T2>::hltFilter(edm::Event& iEvent,
if (tagOld.encode() != tagNew.encode()) {
filterproduct.addCollectionTag(tagNew);
tagOld = tagNew;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 2b " << tagNew.encode() << std::endl;
LogVerbatim("HLTDoublet") << " XXX " << moduleLabel() << " 2b " << tagNew.encode();
}
}
}
Expand All @@ -182,29 +179,36 @@ bool HLTDoublet<T1, T2>::hltFilter(edm::Event& iEvent,
r2 = coll2[i2];
p2 = r2->p4();

double Dphi(std::abs(p1.phi() - p2.phi()));
if (Dphi > M_PI)
Dphi = 2.0 * M_PI - Dphi;
if (cutdeta_ or cutdphi_ or cutdelr2_) {
double const Deta = std::abs(p1.eta() - p2.eta());
if (cutdeta_ and (min_Deta_ > Deta or Deta > max_Deta_))
continue;

double Deta(std::abs(p1.eta() - p2.eta()));
double const Dphi = std::abs(reco::deltaPhi(p1.phi(), p2.phi()));
if (cutdphi_ and (min_Dphi_ > Dphi or Dphi > max_Dphi_))
continue;

p = p1 + p2;
double Minv(std::abs(p.mass()));
double Pt(p.pt());

double DelR(sqrt(Dphi * Dphi + Deta * Deta));

if (((!cutdphi_) || ((min_Dphi_ <= Dphi) && (Dphi <= max_Dphi_))) &&
((!cutdeta_) || ((min_Deta_ <= Deta) && (Deta <= max_Deta_))) &&
((!cutminv_) || ((min_Minv_ <= Minv) && (Minv <= max_Minv_))) &&
((!cutdelr_) || ((min_DelR_ <= DelR) && (DelR <= max_DelR_))) &&
((!cutpt_) || ((min_Pt_ <= Pt) && (Pt <= max_Pt_)))) {
n++;
filterproduct.addObject(triggerType1_, r1);
filterproduct.addObject(triggerType2_, r2);
double const DelR2 = Deta * Deta + Dphi * Dphi;
if (cutdelr2_ and (min_DelR2_ > DelR2 or DelR2 > max_DelR2_))
continue;
}

p = p1 + p2;

double const Pt = p.pt();
if (cutpt_ and (min_Pt_ > Pt or Pt > max_Pt_))
continue;

double const Minv = std::abs(p.mass());
if (cutminv_ and (min_Minv_ > Minv or Minv > max_Minv_))
continue;

n++;
filterproduct.addObject(triggerType1_, r1);
filterproduct.addObject(triggerType2_, r2);
}
}

// filter decision
accept = (n >= min_N_);
}
Expand Down
Loading