Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:40

0001 // -*- C++ -*-
0002 //
0003 // Package:    Skimming/DisappearingMuonsSkimming
0004 // Class:      DisappearingMuonsSkimming
0005 //
0006 /**\class DisappearingMuonsSkimming DisappearingMuonsSkimming.cc Skimming/DisappearingMuonsSkimming/plugins/DisappearingMuonsSkimming.cc
0007 
0008  Description: [one line class summary]
0009 
0010  Implementation:
0011      [Notes on implementation]
0012 */
0013 //
0014 // Original Author:  Michael Revering
0015 //         Created:  Tie, 31 Jan 2023 21:22:23 GMT
0016 //
0017 //
0018 #ifndef Configuration_Skimming_DisappearingMuonsSkimming_h
0019 #define Configuration_Skimming_DisappearingMuonsSkimming_h
0020 
0021 // system include files
0022 #include <memory>
0023 
0024 // user include filter
0025 #include "DataFormats/Common/interface/TriggerResults.h"
0026 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0027 #include "DataFormats/MuonReco/interface/Muon.h"
0028 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0029 #include "DataFormats/TrackReco/interface/Track.h"
0030 #include "DataFormats/VertexReco/interface/Vertex.h"
0031 #include "FWCore/Framework/interface/one/EDFilter.h"
0032 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0034 #include "FWCore/Utilities/interface/EDGetToken.h"
0035 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0036 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0037 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
0038 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0039 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0040 
0041 //
0042 // class declaration
0043 //
0044 
0045 class DisappearingMuonsSkimming : public edm::one::EDFilter<> {
0046 public:
0047   explicit DisappearingMuonsSkimming(const edm::ParameterSet&);
0048   ~DisappearingMuonsSkimming() override = default;
0049   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0050 
0051 private:
0052   bool filter(edm::Event&, const edm::EventSetup&) override;
0053 
0054   bool passTriggers(const edm::Event& iEvent,
0055                     const edm::TriggerResults& results,
0056                     const std::vector<std::string>& m_muonPathsToPass);
0057 
0058   bool findTrackInVertices(const reco::TrackRef& tkToMatch,
0059                            const reco::VertexCollection& vertices,
0060                            unsigned int& vtxIndex,
0061                            unsigned int& trackIndex);
0062 
0063   double getTrackIsolation(const reco::TrackRef& tkToMatch, const reco::VertexCollection& vertices);
0064   double getECALIsolation(const edm::Event&, const edm::EventSetup&, const reco::TransientTrack& track);
0065 
0066   // ----------member data ---------------------------
0067   const edm::EDGetTokenT<reco::MuonCollection> recoMuonToken_;
0068   const edm::EDGetTokenT<reco::TrackCollection> standaloneMuonToken_;
0069   const edm::EDGetTokenT<reco::TrackCollection> trackCollectionToken_;
0070   const edm::EDGetTokenT<reco::VertexCollection> primaryVerticesToken_;
0071   const edm::EDGetTokenT<EcalRecHitCollection> reducedEndcapRecHitCollectionToken_;
0072   const edm::EDGetTokenT<EcalRecHitCollection> reducedBarrelRecHitCollectionToken_;
0073   const edm::EDGetTokenT<edm::TriggerResults> trigResultsToken_;
0074   const edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> transientTrackToken_;
0075   const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> geometryToken_;
0076   const std::vector<std::string> muonPathsToPass_;
0077 
0078   //options
0079   const double minMuPt_;
0080   const double maxMuEta_;
0081   const double minTrackEta_;
0082   const double maxTrackEta_;
0083   const double minTrackPt_;
0084   const double maxTransDCA_;
0085   const double maxLongDCA_;
0086   const double maxVtxChi_;
0087   const double minInvMass_;
0088   const double maxInvMass_;
0089   const double trackIsoConesize_;
0090   const double trackIsoInnerCone_;
0091   const double ecalIsoConesize_;
0092   const double minEcalHitE_;
0093   const double maxTrackIso_;
0094   const double maxEcalIso_;
0095   const double minSigInvMass_;
0096   const double maxSigInvMass_;
0097   const double minStandaloneDr_;
0098   const double maxStandaloneDE_;
0099   const bool keepOffPeak_;
0100   const bool keepSameSign_;
0101   const bool keepTotalRegion_;
0102   const bool keepPartialRegion_;
0103 };
0104 #endif