![]() |
![]() |
00001 #ifndef RecoMET_MuonTCMETValueMapProducer_h 00002 #define RecoMET_MuonTCMETValueMapProducer_h 00003 00004 // -*- C++ -*- 00005 // 00006 // Package: Test 00007 // Class: Test 00008 // 00016 // 00017 // Created: Wed Aug 29 2007 00018 // 00019 // 00020 00021 #include "FWCore/Framework/interface/Frameworkfwd.h" 00022 #include "FWCore/Framework/interface/EDProducer.h" 00023 #include "FWCore/Framework/interface/Event.h" 00024 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00025 #include "DataFormats/Common/interface/Handle.h" 00026 #include "DataFormats/MuonReco/interface/Muon.h" 00027 #include "DataFormats/MuonReco/interface/MuonFwd.h" 00028 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00029 #include "DataFormats/VertexReco/interface/Vertex.h" 00030 #include "DataFormats/VertexReco/interface/VertexFwd.h" 00031 #include "TH2.h" 00032 #include "TVector3.h" 00033 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00034 00035 class TCMETAlgo; 00036 00037 namespace cms { 00038 class MuonTCMETValueMapProducer : public edm::EDProducer { 00039 public: 00040 explicit MuonTCMETValueMapProducer(const edm::ParameterSet&); 00041 ~MuonTCMETValueMapProducer(); 00042 00043 // TH2D* getResponseFunction_fit ( ); 00044 // TH2D* getResponseFunction_mode ( ); 00045 00046 private: 00047 virtual void beginJob() ; 00048 virtual void produce(edm::Event&, const edm::EventSetup&); 00049 virtual void endJob() ; 00050 00051 // ----------member data --------------------------- 00052 edm::Handle<reco::MuonCollection> muon_h; 00053 edm::Handle<reco::BeamSpot> beamSpot_h; 00054 edm::Handle<reco::VertexCollection> VertexHandle; 00055 00056 edm::InputTag muonInputTag_; 00057 edm::InputTag beamSpotInputTag_; 00058 edm::InputTag vertexInputTag_; 00059 00060 const class MagneticField* bField; 00061 00062 const reco::VertexCollection *vertexColl; 00063 00064 class TH2D* response_function; 00065 00066 bool muonGlobal_; 00067 bool muonTracker_; 00068 bool useCaloMuons_; 00069 bool hasValidVertex; 00070 00071 int rfType_; 00072 int nLayers_; 00073 int nLayersTight_; 00074 int vertexNdof_; 00075 double vertexZ_; 00076 double vertexRho_; 00077 double vertexMaxDZ_; 00078 double maxpt_eta25_; 00079 double maxpt_eta20_; 00080 int maxTrackAlgo_; 00081 double minpt_; 00082 double maxpt_; 00083 double maxeta_; 00084 double maxchi2_; 00085 double minhits_; 00086 double maxPtErr_; 00087 double maxd0cut_; 00088 double maxchi2_tight_; 00089 double minhits_tight_; 00090 double maxPtErr_tight_; 00091 double d0cuta_; 00092 double d0cutb_; 00093 bool usePvtxd0_; 00094 std::vector<int> trkQuality_; 00095 std::vector<int> trkAlgos_; 00096 00097 int muonMinValidStaHits_; 00098 double muonpt_; 00099 double muoneta_; 00100 double muonchi2_; 00101 double muonhits_; 00102 double muond0_; 00103 double muonDeltaR_; 00104 double muon_dptrel_; 00105 TCMETAlgo *tcmetAlgo_; 00106 00107 //functions 00108 bool isGoodMuon( const reco::Muon* ); 00109 bool isGoodCaloMuon( const reco::Muon*, const unsigned int ); 00110 bool isGoodTrack( const reco::Muon* ); 00111 class TVector3 propagateTrack( const reco::Muon* ); 00112 int nLayers(const reco::TrackRef); 00113 bool isValidVertex(); 00114 }; 00115 } 00116 #endif 00117 00118