File indexing completed on 2023-10-25 10:00:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef RecoMET_MuonMETAlgo_h
0019 #define RecoMET_MuonMETAlgo_h
0020
0021
0022 #include "DataFormats/Math/interface/LorentzVector.h"
0023
0024 #include "DataFormats/Common/interface/View.h"
0025 #include "DataFormats/METReco/interface/METFwd.h"
0026 #include "DataFormats/METReco/interface/MET.h"
0027 #include "DataFormats/METReco/interface/CaloMETCollection.h"
0028 #include "DataFormats/METReco/interface/CorrMETData.h"
0029 #include "DataFormats/MuonReco/interface/Muon.h"
0030 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0031 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
0032 #include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h"
0033 #include "DataFormats/Common/interface/ValueMap.h"
0034 #include "RecoMET/METAlgorithms/interface/MuonMETInfo.h"
0035
0036 #include "DataFormats/MuonReco/interface/MuonMETCorrectionData.h"
0037
0038
0039 class MuonMETAlgo {
0040 public:
0041 MuonMETAlgo() {}
0042 virtual ~MuonMETAlgo() {}
0043
0044 reco::CaloMET makeMET(const reco::CaloMET& fMet,
0045 double fSumEt,
0046 const std::vector<CorrMETData>& fCorrections,
0047 const reco::MET::LorentzVector&);
0048 reco::MET makeMET(const reco::MET&,
0049 double fSumEt,
0050 const std::vector<CorrMETData>& fCorrections,
0051 const reco::MET::LorentzVector& fP4);
0052
0053 virtual void run(const edm::View<reco::Muon>& inputMuons,
0054 const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
0055 const edm::View<reco::MET>& uncorMET,
0056 reco::METCollection* corMET);
0057
0058 virtual void run(const edm::View<reco::Muon>& inputMuons,
0059 const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
0060 const edm::View<reco::CaloMET>& uncorMET,
0061 reco::CaloMETCollection* corMET);
0062
0063 void GetMuDepDeltas(const reco::Muon* inputMuon,
0064 TrackDetMatchInfo& info,
0065 bool useTrackAssociatorPositions,
0066 bool useRecHits,
0067 bool useHO,
0068 double towerEtThreshold,
0069 double& deltax,
0070 double& deltay,
0071 double Bfield);
0072
0073 template <class T>
0074 void MuonMETAlgo_run(const edm::View<reco::Muon>& inputMuons,
0075 const edm::ValueMap<reco::MuonMETCorrectionData>& vm_muCorrData,
0076 const edm::View<T>& v_uncorMET,
0077 std::vector<T>* v_corMET);
0078
0079 static void correctMETforMuon(double& deltax,
0080 double& deltay,
0081 double bfield,
0082 int muonCharge,
0083 const math::XYZTLorentzVector& muonP4,
0084 const math::XYZPoint& muonVertex,
0085 MuonMETInfo&);
0086 };
0087
0088
0089 #endif