00001 /******************************************************************************* 00002 * Project: BaBar detector at the SLAC PEP-II B-factory 00003 * Package: EvtGenBase 00004 * File: $Id: EvtPto3PAmp.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 #ifndef EVT_PTO3P_AMP_HH 00011 #define EVT_PTO3P_AMP_HH 00012 00013 #include "EvtGenBase/EvtCyclic3.hh" 00014 #include "EvtGenBase/EvtSpinType.hh" 00015 #include <vector> 00016 using std::vector; 00017 #include "EvtGenBase/EvtAmplitude.hh" 00018 #include "EvtGenBase/EvtTwoBodyVertex.hh" 00019 #include "EvtGenBase/EvtPropagator.hh" 00020 #include "EvtGenBase/EvtDalitzPoint.hh" 00021 00022 class EvtComplex; 00023 class EvtBlattWeisskopf; 00024 00025 class EvtPto3PAmp : public EvtAmplitude<EvtDalitzPoint> { 00026 00027 00028 public: 00029 00030 // Numerator type 00031 enum NumType {NBW=0,RBW_ZEMACH=1,RBW_KUEHN=2,RBW_CLEO=3}; 00032 00033 00034 EvtPto3PAmp(EvtDalitzPlot dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 00035 EvtSpinType::spintype spin, 00036 const EvtPropagator& prop, NumType typeN); 00037 00038 00039 EvtPto3PAmp(const EvtPto3PAmp& other); 00040 00041 ~EvtPto3PAmp(); 00042 00043 virtual EvtAmplitude<EvtDalitzPoint>* clone() const 00044 { return new EvtPto3PAmp(*this); } 00045 00046 00047 virtual EvtComplex amplitude(const EvtDalitzPoint& p) const; 00048 EvtComplex numerator(const EvtDalitzPoint& p) const; 00049 double angDep(const EvtDalitzPoint& p) const; 00050 00051 void set_fd(double R); 00052 void set_fb(double R); 00053 00054 private: 00055 00056 // Pairing indices: 00057 00058 EvtCyclic3::Pair _pairAng; // angular 00059 EvtCyclic3::Pair _pairRes; // resonance 00060 00061 // Spin 00062 00063 EvtSpinType::spintype _spin; 00064 00065 // Numerator type 00066 00067 NumType _typeN; 00068 00069 00070 // _Owned_ pointer to propagator factor 00071 00072 EvtPropagator* _prop; 00073 double _g0; // nominal width 00074 00075 // Vertices 00076 00077 EvtTwoBodyVertex _vb; 00078 EvtTwoBodyVertex _vd; 00079 }; 00080 00081 #endif 00082 00083 00084 00085 00086 00087 00088 00089