File indexing completed on 2024-04-06 12:18:36
0001 #ifndef HLTMuonDimuonL3Filter_h
0002 #define HLTMuonDimuonL3Filter_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0015 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0016 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0017 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0018 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
0019 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
0020 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0021 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0023 #include "DataFormats/Common/interface/Handle.h"
0024 #include "FWCore/Framework/interface/ESHandle.h"
0025 #include "MagneticField/Engine/interface/MagneticField.h"
0026 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0027 #include "MuonAnalysis/MuonAssociators/interface/PropagateToMuonSetup.h"
0028
0029 namespace edm {
0030 class ConfigurationDescriptions;
0031 }
0032
0033 class HLTMuonDimuonL3Filter : public HLTFilter {
0034 public:
0035 explicit HLTMuonDimuonL3Filter(const edm::ParameterSet&);
0036 ~HLTMuonDimuonL3Filter() override;
0037 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0038 bool hltFilter(edm::Event&,
0039 const edm::EventSetup&,
0040 trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0041
0042 private:
0043 static bool triggeredByLevel2(reco::TrackRef const& track, std::vector<reco::RecoChargedCandidateRef> const& vcands);
0044 bool applyMuonSelection(const reco::RecoChargedCandidateRef&, const reco::BeamSpot&) const;
0045 bool applyDiMuonSelection(const reco::RecoChargedCandidateRef&,
0046 const reco::RecoChargedCandidateRef&,
0047 const reco::BeamSpot&,
0048 const edm::ESHandle<MagneticField>&) const;
0049
0050 const PropagateToMuonSetup propSetup_;
0051 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> idealMagneticFieldRecordToken_;
0052 const edm::InputTag beamspotTag_;
0053 const edm::EDGetTokenT<reco::BeamSpot> beamspotToken_;
0054 const edm::InputTag candTag_;
0055 const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> candToken_;
0056 const edm::InputTag previousCandTag_;
0057 const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>
0058 previousCandToken_;
0059 const edm::InputTag l1CandTag_;
0060 const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>
0061 l1CandToken_;
0062 const edm::InputTag recoMuTag_;
0063 const edm::EDGetTokenT<reco::MuonCollection> recoMuToken_;
0064 bool previousCandIsL2_;
0065 const bool fast_Accept_;
0066 const int min_N_;
0067 const double max_Eta_;
0068 const int min_Nhits_;
0069 const double max_Dr_;
0070 const double max_Dz_;
0071 const int chargeOpt_;
0072 const std::vector<double> min_PtPair_;
0073 const std::vector<double> max_PtPair_;
0074 const std::vector<double> min_PtMax_;
0075 const std::vector<double> min_PtMin_;
0076 const std::vector<double> max_PtMin_;
0077 const std::vector<double> min_InvMass_;
0078 const std::vector<double> max_InvMass_;
0079 const bool applyMinDiMuonDeltaR2Cut_;
0080 const double min_DiMuonDeltaR2_;
0081 const double min_Acop_;
0082 const double max_Acop_;
0083 const double min_PtBalance_;
0084 const double max_PtBalance_;
0085 const double nsigma_Pt_;
0086 const double max_DCAMuMu_;
0087 const double max_YPair_;
0088 const bool cutCowboys_;
0089 const edm::InputTag theL3LinksLabel;
0090 const edm::EDGetTokenT<reco::MuonTrackLinksCollection> linkToken_;
0091 const double L1MatchingdR_;
0092 const double L1MatchingdR2_;
0093 const bool matchPreviousCand_;
0094 const double MuMass2_;
0095 };
0096
0097 #endif