File indexing completed on 2023-10-25 09:52:58
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/Point3D.h"
0019 #include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h"
0020 #include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h"
0021 #include "FWCore/Framework/interface/EventSetup.h"
0022 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0023 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0025 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0026 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0027 #include "MagneticField/Engine/interface/MagneticField.h"
0028 #include "TrackingTools/TrajectoryState/interface/ftsFromVertexToPoint.h"
0029
0030 #include "TLorentzVector.h"
0031
0032 class HLTPMMassFilter : public HLTFilter {
0033 public:
0034 explicit HLTPMMassFilter(const edm::ParameterSet&);
0035 ~HLTPMMassFilter() override;
0036 bool hltFilter(edm::Event&,
0037 const edm::EventSetup&,
0038 trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0039 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0040
0041 private:
0042 bool isGoodPair(TLorentzVector const& v1, TLorentzVector const& v2) const;
0043
0044 TLorentzVector approxMomAtVtx(const MagneticField& magField,
0045 const GlobalPoint& xvert,
0046 const reco::SuperClusterRef sc,
0047 int charge) const;
0048
0049 edm::InputTag candTag_;
0050 edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> candToken_;
0051 edm::InputTag beamSpot_;
0052 edm::EDGetTokenT<reco::BeamSpot> beamSpotToken_;
0053 double lowerMassCut_;
0054 double upperMassCut_;
0055 int nZcandcut_;
0056 bool reqOppCharge_;
0057
0058 bool isElectron1_;
0059 bool isElectron2_;
0060 edm::InputTag l1EGTag_;
0061
0062 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> const magFieldToken_;
0063 };
0064
0065 #endif