File indexing completed on 2024-04-06 12:26:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef RecoMET_MuonTCMETValueMapProducer_h
0018 #define RecoMET_MuonTCMETValueMapProducer_h
0019
0020
0021 #include "FWCore/Framework/interface/Frameworkfwd.h"
0022 #include "FWCore/Framework/interface/stream/EDProducer.h"
0023 #include "FWCore/Framework/interface/Event.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 #include "FWCore/Utilities/interface/ESGetToken.h"
0026 #include "DataFormats/Common/interface/Handle.h"
0027 #include "DataFormats/MuonReco/interface/Muon.h"
0028 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0029 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0030 #include "DataFormats/VertexReco/interface/Vertex.h"
0031 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0032 #include "MagneticField/Engine/interface/MagneticField.h"
0033 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0034 #include "TH2.h"
0035 #include "TVector3.h"
0036 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0037
0038
0039 class TCMETAlgo;
0040
0041 namespace cms {
0042
0043 class MuonTCMETValueMapProducer : public edm::stream::EDProducer<> {
0044 public:
0045 explicit MuonTCMETValueMapProducer(const edm::ParameterSet&);
0046 ~MuonTCMETValueMapProducer() override;
0047
0048 private:
0049 void produce(edm::Event&, const edm::EventSetup&) override;
0050
0051 edm::Handle<reco::MuonCollection> muons_;
0052 edm::Handle<reco::BeamSpot> beamSpot_;
0053 edm::Handle<reco::VertexCollection> vertexHandle_;
0054
0055 edm::EDGetTokenT<reco::MuonCollection> muonToken_;
0056 edm::EDGetTokenT<reco::BeamSpot> beamSpotToken_;
0057 edm::EDGetTokenT<reco::VertexCollection> vertexToken_;
0058 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0059
0060 const class MagneticField* bField;
0061
0062 const reco::VertexCollection* vertices_;
0063
0064 class TH2D* response_function;
0065
0066 bool muonGlobal_;
0067 bool muonTracker_;
0068 bool useCaloMuons_;
0069 bool hasValidVertex;
0070
0071 int rfType_;
0072 int nLayers_;
0073 int nLayersTight_;
0074 int vertexNdof_;
0075 double vertexZ_;
0076 double vertexRho_;
0077 double vertexMaxDZ_;
0078 double maxpt_eta25_;
0079 double maxpt_eta20_;
0080 std::vector<reco::TrackBase::TrackAlgorithm> trackAlgos_;
0081 double minpt_;
0082 double maxpt_;
0083 double maxeta_;
0084 double maxchi2_;
0085 double minhits_;
0086 double maxPtErr_;
0087 double maxd0cut_;
0088 double maxchi2_tight_;
0089 double minhits_tight_;
0090 double maxPtErr_tight_;
0091 double d0cuta_;
0092 double d0cutb_;
0093 bool usePvtxd0_;
0094 std::vector<int> trkQuality_;
0095 std::vector<reco::TrackBase::TrackAlgorithm> trkAlgos_;
0096
0097 int muonMinValidStaHits_;
0098 double muonpt_;
0099 double muoneta_;
0100 double muonchi2_;
0101 double muonhits_;
0102 double muond0_;
0103 double muonDeltaR_;
0104 double muon_dptrel_;
0105 TCMETAlgo* tcmetAlgo_;
0106
0107 bool isGoodMuon(const reco::Muon*);
0108 bool isGoodCaloMuon(const reco::Muon*, const unsigned int);
0109 bool isGoodTrack(const reco::Muon*);
0110 class TVector3 propagateTrack(const reco::Muon*);
0111 int nLayers(const reco::TrackRef);
0112 bool isValidVertex();
0113 };
0114
0115 }
0116
0117
0118 #endif