CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/AnalysisDataFormats/EWK/interface/WMuNuCandidate.h

Go to the documentation of this file.
00001 #ifndef AnalysisDataFormats_EWK_WMuNu_h 
00002 #define AnalysisDataFormats_EWK_WMuNu_h
00003 
00004 #include <map>
00005 #include <memory>
00006 
00007 #include "DataFormats/MuonReco/interface/Muon.h"
00008 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00009 #include "DataFormats/METReco/interface/MET.h"
00010 #include "DataFormats/METReco/interface/METFwd.h"
00011 #include "DataFormats/Candidate/interface/CompositeCandidate.h"
00012 #include "DataFormats/Candidate/interface/Candidate.h"
00013 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h"
00014 #include "CommonTools/CandUtils/interface/CandCombiner.h"
00015 #include "CommonTools/CandUtils/interface/AddFourMomenta.h"
00016 #include "DataFormats/Candidate/interface/ShallowClonePtrCandidate.h"
00017 namespace reco{
00018 
00019 class WMuNuCandidate : public reco::CompositeCandidate {
00020 public:
00021   WMuNuCandidate();
00022   WMuNuCandidate(edm::Ptr<reco::Muon>,edm::Ptr<reco::MET>);
00023   ~WMuNuCandidate();
00024 
00025       //WARNING: W Candidates combine the information from a Muon with the (px,py) information of the MET as the Neutrino
00026       // --> There is no Pz information!!!!
00027       // Be very careful when using the default Candidate functions (.mass, .mt, .et, etc). They may not be what you are looking for :-).
00028 
00029       // Example: Candidates have a mt() function which computes the tranverse mass from E & pz.
00030       // As MET does not have pz information... WMuNuCandidates have an alternative function used in the WMuNu Inclusive Analysis
00031       // to compute mt just from px, py:
00032       // Transverse Mass from px, py:
00033       double massT() const;
00034       // Transverse Energy from px, py:
00035       double eT() const;
00036 
00037       // Acoplanarity between the muon and the MET
00038       double acop() const;
00039 
00040       const reco::Muon & getMuon()     const {return *muon_;}; 
00041       const reco::MET  & getNeutrino() const {return *neutrino_;};
00042 
00043 
00044 private:
00045 
00046 
00047       edm::Ptr<Muon> muon_;
00048       edm::Ptr<MET>  neutrino_;  
00049 };
00050 
00051 
00052 typedef std::vector<reco::WMuNuCandidate> WMuNuCandidateCollection;
00053 }
00054 
00055 
00056 #endif