Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:18:37

0001 #ifndef HLTMuonL3PreFilter_h
0002 #define HLTMuonL3PreFilter_h
0003 
0004 /** \class HLTMuonL3PreFilter
0005  *
0006  *
0007  *  This class is an HLTFilter (-> EDFilter) implementing a first
0008  *  filtering for HLT muons
0009  *
0010  *  \author J. Alcaraz, J-R Vlimant
0011  *
0012  */
0013 
0014 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0015 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
0016 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
0017 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0018 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0019 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0020 #include "DataFormats/MuonReco/interface/MuonSelectors.h"
0021 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0022 #include "DataFormats/Math/interface/deltaR.h"
0023 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
0024 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
0025 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0026 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0027 #include "MuonAnalysis/MuonAssociators/interface/PropagateToMuonSetup.h"
0028 
0029 class HLTMuonL3PreFilter : public HLTFilter {
0030 public:
0031   explicit HLTMuonL3PreFilter(const edm::ParameterSet&);
0032   ~HLTMuonL3PreFilter() override;
0033   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0034   bool hltFilter(edm::Event&,
0035                  const edm::EventSetup&,
0036                  trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0037 
0038 private:
0039   bool triggeredByLevel2(const reco::TrackRef& track, std::vector<reco::RecoChargedCandidateRef>& vcands) const;
0040   bool applySelection(const reco::RecoChargedCandidateRef&, const reco::BeamSpot&) const;
0041 
0042   const PropagateToMuonSetup propSetup_;
0043   const edm::InputTag beamspotTag_;
0044   const edm::EDGetTokenT<reco::BeamSpot> beamspotToken_;
0045   const edm::InputTag candTag_;  // input tag identifying product contains muons
0046   const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> candToken_;  // token identifying product contains muons
0047   const edm::InputTag previousCandTag_;  // input tag identifying product contains muons passing the previous level
0048   const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>
0049       previousCandToken_;                   // token identifying product contains muons passing the previous level
0050   const bool requireL3MuonTrajectorySeed_;  // bool requiring that there is a L3Muon trajectory seed
0051   const edm::InputTag l1CandTag_;           // input tag identifying product contains muons passing the L1 level
0052   const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>
0053       l1CandToken_;                // token identifying product contains muons passing the L1 level
0054   const edm::InputTag recoMuTag_;  // input tag identifying reco muons
0055   const edm::EDGetTokenT<reco::MuonCollection> recoMuToken_;  // token identifying product contains reco muons
0056   const int min_N_;                                           // minimum number of muons to fire the trigger
0057   const double max_Eta_;                                      // Eta cut
0058   const int min_Nhits_;                                       // threshold on number of hits on muon
0059   const double max_Dr_;                                       // maximum impact parameter cut
0060   const double min_Dr_;                                       // minimum impact parameter cut
0061   const double max_Dz_;                                       // dz cut
0062   const double min_DxySig_;                                   // dxy significance cut
0063   const double min_Pt_;                                       // pt threshold in GeV
0064   const double nsigma_Pt_;                                    // pt uncertainty margin (in number of sigmas)
0065   const double max_NormalizedChi2_;                           // cutoff in normalized chi2
0066   const double max_DXYBeamSpot_;                              // cutoff in dxy from the beamspot
0067   const double min_DXYBeamSpot_;                              // minimum cut on dxy from the beamspot
0068   const int min_NmuonHits_;                                   // cutoff in minumum number of chi2 hits
0069   const double max_PtDifference_;  // cutoff in maximum different between global track and tracker track
0070   const double min_TrackPt_;       // cutoff in tracker track pt
0071 
0072   // cuts for L3FromL1
0073   const int min_MuonStations_L3fromL1_;  // cut on min number of stations - for L3FromL1
0074   const unsigned int allowedTypeMask_L3fromL1_;
0075   const unsigned int requiredTypeMask_L3fromL1_;
0076   double maxNormalizedChi2_L3fromL1_;
0077   muon::SelectionType trkMuonId_;
0078   const double L1MatchingdR_;
0079   const double L1MatchingdR2_;
0080   const bool matchPreviousCand_;
0081 
0082   const bool devDebug_;
0083   const edm::InputTag theL3LinksLabel;
0084   const edm::EDGetTokenT<reco::MuonTrackLinksCollection> linkToken_;
0085 };
0086 
0087 #endif  //HLTMuonL3PreFilter_h