00001 /******************************************************************************* 00002 * Project: BaBar detector at the SLAC PEP-II B-factory 00003 * Package: EvtGenBase 00004 * File: $Id: EvtDalitzResPdf.hh,v 1.1.1.2 2007/10/26 05:03:14 pingrg Exp $ 00005 * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002 00006 * 00007 * Copyright (C) 2002 Caltech 00008 *******************************************************************************/ 00009 00010 /* 00011 * Pole compensating function for terms that exibit a resonant structure 00012 * in one dimension only. 00013 * 00014 * f = 1 g*m0 00015 * -- ------------------ 00016 * pi (q-q0)^2 + g^2m0^2 00017 * 00018 * m is the mass of the resonance, g is its width. The approximation works well for a narrow 00019 * resonance. It is also readily integrable over the Dalitz plot coordinate to produce 00020 * 00021 * Int = 1/pi atan((q-q0)/(g*m0)) 00022 */ 00023 00024 #ifndef EVT_DALITZ_RES_PDF_HH 00025 #define EVT_DALITZ_RES_PDF_HH 00026 00027 #include "EvtGenBase/EvtPdf.hh" 00028 #include "EvtGenBase/EvtDalitzPoint.hh" 00029 #include "EvtGenBase/EvtCyclic3.hh" 00030 00031 class EvtDalitzResPdf : public EvtPdf<EvtDalitzPoint> { 00032 00033 public: 00034 00035 EvtDalitzResPdf(const EvtDalitzPlot& dp,double m0, double g0, EvtCyclic3::Pair pairRes); 00036 EvtDalitzResPdf(const EvtDalitzResPdf& other); 00037 virtual ~EvtDalitzResPdf(); 00038 00039 00040 EvtPdf<EvtDalitzPoint>* clone() const { return new EvtDalitzResPdf(*this); } 00041 00042 virtual EvtValError compute_integral(int N) const; 00043 virtual EvtDalitzPoint randomPoint(); 00044 double pdfMaxValue() const; 00045 00046 protected: 00047 00048 virtual double pdf(const EvtDalitzPoint&) const; 00049 00050 private: 00051 00052 EvtDalitzPlot _dp; 00053 double _m0; // mass 00054 double _g0; // width 00055 EvtCyclic3::Pair _pair; // resonant pair 00056 }; 00057 00058 #endif 00059