Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-03-25 23:59:54

0001 #ifndef HLTMuonTrimuonL3Filter_h
0002 #define HLTMuonTrimuonL3Filter_h
0003 
0004 /** \class HLTMuonTrimuonL3Filter
0005  *
0006  *
0007  *  This class is an HLTFilter (-> EDFilter) implementing a muon triplet
0008  *  filter for HLT muons
0009  *
0010  *  \author J. Alcaraz
0011  *
0012  */
0013 
0014 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0015 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0016 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
0017 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0018 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0019 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0020 #include "MagneticField/Engine/interface/MagneticField.h"
0021 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0022 
0023 namespace edm {
0024   class ConfigurationDescriptions;
0025 }
0026 
0027 class HLTMuonTrimuonL3Filter : public HLTFilter {
0028 public:
0029   explicit HLTMuonTrimuonL3Filter(const edm::ParameterSet&);
0030   ~HLTMuonTrimuonL3Filter() override;
0031   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0032   bool hltFilter(edm::Event&,
0033                  const edm::EventSetup&,
0034                  trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0035 
0036 private:
0037   static bool triggeredByLevel2(const reco::TrackRef& track, std::vector<reco::RecoChargedCandidateRef>& vcands);
0038 
0039   edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> const idealMagneticFieldRecordToken_;
0040   edm::InputTag beamspotTag_;
0041   edm::EDGetTokenT<reco::BeamSpot> beamspotToken_;
0042   edm::InputTag candTag_;                                             // input tag identifying product contains muons
0043   edm::EDGetTokenT<reco::RecoChargedCandidateCollection> candToken_;  // token identifying product contains muons
0044   edm::InputTag previousCandTag_;  // input tag identifying product contains muons passing the previous level
0045   edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>
0046       previousCandToken_;  // token identifying product contains muons passing the previous level
0047 
0048   bool fast_Accept_;      // flag to save time: stop processing after identification of the first valid triplet
0049   double max_Eta_;        // Eta cut
0050   int min_Nhits_;         // threshold on number of hits on muon
0051   double max_Dr_;         // impact parameter cut
0052   double max_Dz_;         // dz cut
0053   int chargeOpt_;         // Charge option (0:nothing; +1:same charge, -1:opposite charge)
0054   double min_PtTriplet_;  // minimum Pt for the dimuon system
0055   double min_PtMax_;      // minimum Pt for muon with max Pt in triplet
0056   double min_PtMin_;      // minimum Pt for muon with min Pt in triplet
0057   double min_InvMass_;    // minimum invariant mass of triplet
0058   double max_InvMass_;    // maximum invariant mass of triplet
0059   double min_Acop_;       // minimum acoplanarity
0060   double max_Acop_;       // maximum acoplanarity
0061   double min_PtBalance_;  // minimum Pt difference
0062   double max_PtBalance_;  // maximum Pt difference
0063   double nsigma_Pt_;      // pt uncertainty margin (in number of sigmas)
0064   double max_DCAMuMu_;    // DCA between the three muons
0065   double max_YTriplet_;   // |rapidity| of triplet
0066   const edm::InputTag theL3LinksLabel;                                //Needed to iterL3
0067   const edm::EDGetTokenT<reco::MuonTrackLinksCollection> linkToken_;  //Needed to iterL3
0068 };
0069 
0070 #endif  //HLTMuonDimuonFilter_h