File indexing completed on 2025-04-11 22:24:29
0001 #ifndef HLTPMMassFilter_h
0002 #define HLTPMMassFilter_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0013 #include "DataFormats/EgammaCandidates/interface/Electron.h"
0014 #include "DataFormats/EgammaCandidates/interface/ElectronFwd.h"
0015 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
0016 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
0017 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0018 #include "DataFormats/Math/interface/deltaR.h"
0019 #include "DataFormats/Math/interface/Point3D.h"
0020 #include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h"
0021 #include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h"
0022 #include "FWCore/Framework/interface/EventSetup.h"
0023 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0024 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0025 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0026 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0027 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0028 #include "MagneticField/Engine/interface/MagneticField.h"
0029 #include "TrackingTools/TrajectoryState/interface/ftsFromVertexToPoint.h"
0030
0031 #include "TLorentzVector.h"
0032
0033 class HLTPMMassFilter : public HLTFilter {
0034 public:
0035 explicit HLTPMMassFilter(const edm::ParameterSet&);
0036 ~HLTPMMassFilter() override;
0037 bool hltFilter(edm::Event&,
0038 const edm::EventSetup&,
0039 trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0040 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0041
0042 private:
0043 bool isGoodPair(TLorentzVector const& v1, TLorentzVector const& v2) const;
0044
0045 TLorentzVector approxMomAtVtx(const MagneticField& magField,
0046 const GlobalPoint& xvert,
0047 const reco::SuperClusterRef sc,
0048 int charge) const;
0049
0050 edm::InputTag candTag_;
0051 edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> candToken_;
0052 edm::InputTag beamSpot_;
0053 edm::EDGetTokenT<reco::BeamSpot> beamSpotToken_;
0054 double lowerMassCut_;
0055 double upperMassCut_;
0056 double lowerdRCut_;
0057 double upperdRCut_;
0058 double lowerdR2Cut_;
0059 double upperdR2Cut_;
0060 int nZcandcut_;
0061 bool reqOppCharge_;
0062
0063 bool isElectron1_;
0064 bool isElectron2_;
0065 edm::InputTag l1EGTag_;
0066
0067 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> const magFieldToken_;
0068 };
0069
0070 #endif