00001 #ifndef FML3PtSmearer_H 00002 #define FML3PtSmearer_H 00003 00004 #include "DataFormats/Math/interface/LorentzVector.h" 00005 #include "DataFormats/Math/interface/Vector3D.h" 00006 00016 // class declarations 00017 00018 class RandomEngine; 00019 00020 class FML3PtSmearer { 00021 00022 public: 00023 00025 FML3PtSmearer(const RandomEngine * engine); 00026 00028 ~FML3PtSmearer(); 00029 00031 math::XYZTLorentzVector smear(math::XYZTLorentzVector simP4 , math::XYZVector recP3) const; 00032 00033 private: 00034 00035 static double MuonMassSquared_; 00036 00037 const RandomEngine * random; 00039 double error(double thePt, double theEta) const; 00040 double shift(double thePt, double theEta) const; 00041 double funShift(double x) const; 00042 double funSigma(double eta , double pt) const; 00043 double funSigmaPt(double x) const; 00044 double funSigmaEta(double x) const; 00045 00046 00047 }; 00048 00049 #endif