CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_8_patch3/src/PhysicsTools/Utilities/interface/ZLineShape.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_Utilities_ZLineShape_h
00002 #define PhysicsTools_Utilities_ZLineShape_h
00003 #include "PhysicsTools/Utilities/interface/BreitWigner.h"
00004 #include "PhysicsTools/Utilities/interface/GammaPropagator.h"
00005 #include "PhysicsTools/Utilities/interface/GammaZInterference.h"
00006 #include "PhysicsTools/Utilities/interface/Parameter.h"
00007 #include <boost/shared_ptr.hpp>
00008 
00009 namespace funct {
00010   class ZLineShape {
00011   public:
00012     ZLineShape(const Parameter& m, const Parameter& g, 
00013                const Parameter& Ng, const Parameter& Ni): 
00014       Ngamma(Ng.ptr()), Nint(Ni.ptr()), 
00015       bw_(m, g), gp_(), gzi_(m, g) {}
00016     ZLineShape(boost::shared_ptr<double> m, boost::shared_ptr<double> g, 
00017                boost::shared_ptr<double> Ng, boost::shared_ptr<double> Ni): 
00018       Ngamma(Ng), Nint(Ni), 
00019       bw_(m, g), gp_(), gzi_(m, g) {}
00020     double operator()(double x) const {
00021       return (1.0 - *Nint - *Ngamma) * bw_(x) + *Ngamma * gp_(x) + *Nint * gzi_(x);
00022     }
00023     boost::shared_ptr<double> Ngamma, Nint; 
00024   private:
00025     BreitWigner bw_;
00026     GammaPropagator gp_;
00027     GammaZInterference gzi_;
00028   };
00029 
00030 }
00031 
00032 #endif
00033