CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/AnalysisDataFormats/EWK/interface/WMuNuCandidatePtr.h

Go to the documentation of this file.
00001 #ifndef AnalysisDataFormat_EWK_WMuNuCandidatePtr_h 
00002 #define AnalysisDataFormat_EWK_WMuNuCandidatePtr_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/CompositePtrCandidate.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 WMuNuCandidatePtr : public reco::CompositePtrCandidate {
00020 public:
00021   WMuNuCandidatePtr();
00022   WMuNuCandidatePtr(const reco::CandidatePtr,const reco::CandidatePtr);
00023   ~WMuNuCandidatePtr();
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... WMuNuCandidatePtrs 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::WMuNuCandidatePtr> WMuNuCandidatePtrCollection;
00053 }
00054 
00055 
00056 #endif