File indexing completed on 2024-04-06 12:03:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef Configuration_Skimming_DisappearingMuonsSkimming_h
0019 #define Configuration_Skimming_DisappearingMuonsSkimming_h
0020
0021
0022 #include <memory>
0023
0024
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
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
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
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