00001 #ifndef DataFormats_PatCandidates_interface_ParametrizationHelper_h 00002 #define DataFormats_PatCandidates_interface_ParametrizationHelper_h 00003 00004 #include "DataFormats/PatCandidates/interface/CandKinResolution.h" 00005 #include <string> 00006 00007 namespace pat { namespace helper { 00008 namespace ParametrizationHelper { 00009 00011 inline uint32_t dimension(pat::CandKinResolution::Parametrization parametrization) { 00012 return (static_cast<uint32_t>(parametrization) & 0x0F); 00013 } 00014 00016 pat::CandKinResolution::Parametrization fromString(const std::string &name) ; 00017 00019 const char * name(pat::CandKinResolution::Parametrization param) ; 00020 00024 math::PtEtaPhiMLorentzVector polarP4fromParameters( pat::CandKinResolution::Parametrization parametrization, 00025 const AlgebraicVector4 ¶meters, 00026 const math::PtEtaPhiMLorentzVector &initialP4) ; 00027 00031 math::XYZTLorentzVector p4fromParameters(pat::CandKinResolution::Parametrization parametrization, 00032 const AlgebraicVector4 ¶meters, 00033 const math::XYZTLorentzVector &initialP4) ; 00034 00036 AlgebraicVector4 parametersFromP4(pat::CandKinResolution::Parametrization parametrization, const math::XYZTLorentzVector &p4) ; 00037 00039 AlgebraicVector4 parametersFromP4(pat::CandKinResolution::Parametrization parametrization, const math::PtEtaPhiMLorentzVector &p4) ; 00040 00042 void setParametersFromP4(pat::CandKinResolution::Parametrization parametrization, AlgebraicVector4 &pars, const math::XYZTLorentzVector &p4) ; 00043 00045 void setParametersFromP4(pat::CandKinResolution::Parametrization parametrization, AlgebraicVector4 &pars, const math::PtEtaPhiMLorentzVector &p4) ; 00046 00048 template <typename T> 00049 void setParametersFromAnyVector(pat::CandKinResolution::Parametrization parametrization, AlgebraicVector4 &pars, const T &p4) ; 00050 00052 00060 AlgebraicVector4 diffToParameters(pat::CandKinResolution::Parametrization parametrization, 00061 const math::XYZTLorentzVector &p4ini, const math::XYZTLorentzVector &p4fin) ; 00062 00064 00072 AlgebraicVector4 diffToParameters(pat::CandKinResolution::Parametrization parametrization, 00073 const math::PtEtaPhiMLorentzVector &p4ini, const math::PtEtaPhiMLorentzVector &p4fin) ; 00074 00075 00077 bool isAlwaysMassless(pat::CandKinResolution::Parametrization parametrization) ; 00078 00080 bool isAlwaysMassive(pat::CandKinResolution::Parametrization parametrization) ; 00081 00083 bool isMassConstrained(pat::CandKinResolution::Parametrization parametrization) ; 00084 00090 bool isPhysical(pat::CandKinResolution::Parametrization parametrization, const AlgebraicVector4 &v4, const math::PtEtaPhiMLorentzVector &initialP4) ; 00091 } } } 00092 00093 #endif